diff --git a/COPYING b/COPYING index d159169d10..829ec64179 100644 --- a/COPYING +++ b/COPYING @@ -1,3 +1,7 @@ +This is the license which applies to OpenTTD with the exception of some +3rd party modules. See readme.txt for details + + GNU GENERAL PUBLIC LICENSE Version 2, June 1991 diff --git a/Makefile.bundle.in b/Makefile.bundle.in index f3096eb464..63edb62d97 100644 --- a/Makefile.bundle.in +++ b/Makefile.bundle.in @@ -90,9 +90,9 @@ endif ifeq ($(TTD), openttd.exe) $(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt" ifeq ($(OS), DOS) - $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/" + $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/" ifndef STRIP - $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.exe" "$(TTD_DIR)/" + $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.exe" "$(TTD_DIR)/" endif endif endif diff --git a/Makefile.grf.in b/Makefile.grf.in index 81089efb11..1cc2642320 100644 --- a/Makefile.grf.in +++ b/Makefile.grf.in @@ -5,16 +5,13 @@ # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . # -# Building requires GRFCodec and NFORenum. Older versions of GRFCodec are -# known to miscompile the graphics. +# Building requires GRFCodec. # -# Recent nightlies (including sources) of both can be found at: +# Recent versions (including sources) can be found at: # http://www.openttd.org/download-grfcodec -# http://www.openttd.org/download-nforenum # -# The mercurial repository of both can be found at: +# The mercurial repository can be found at: # http://hg.openttdcoop.org/grfcodec -# http://hg.openttdcoop.org/nforenum # @@ -75,10 +72,10 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/ $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@ # Compile extra grf -$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites +$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk $(E) '$(STAGE) Assembling openttd.nfo' $(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null - $(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo + $(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo $(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo $(E) '$(STAGE) Compiling openttd.grf' $(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf diff --git a/Makefile.lang.in b/Makefile.lang.in index 3df524d74e..fbed06b790 100644 --- a/Makefile.lang.in +++ b/Makefile.lang.in @@ -43,23 +43,23 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang ) all: table/strings.h $(LANGS) -strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h +strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< -strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h +strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< -string.o: $(SRC_DIR)/string.cpp endian_host.h +string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< -alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h +alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< -getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h +getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< diff --git a/Makefile.setting.in b/Makefile.setting.in index fa00c7b90a..d89501d21b 100644 --- a/Makefile.setting.in +++ b/Makefile.setting.in @@ -28,23 +28,23 @@ endif all: table/settings.h -settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp +settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< -alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h +alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< -getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h +getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< -string.o: $(SRC_DIR)/string.cpp endian_host.h +string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< -ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h +ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h $(SRC_DIR)/safeguards.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< diff --git a/Makefile.src.in b/Makefile.src.in index 2f2d8f1ad1..1d654d283f 100644 --- a/Makefile.src.in +++ b/Makefile.src.in @@ -229,10 +229,22 @@ $(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP) $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)' $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $< -$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) +$(filter-out %sse2.o, $(filter-out %ssse3.o, $(filter-out %sse4.o, $(OBJS_CPP)))): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -o $@ $< +$(filter %sse2.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse2 -o $@ $< + +$(filter %ssse3.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -mssse3 -o $@ $< + +$(filter %sse4.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse4.1 -o $@ $< + $(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP) $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)' $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $< diff --git a/bin/ai/compat_0.7.nut b/bin/ai/compat_0.7.nut index a2c605ed21..44e6acff9d 100644 --- a/bin/ai/compat_0.7.nut +++ b/bin/ai/compat_0.7.nut @@ -7,7 +7,7 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -AILog.Info("0.7 API compatability in effect:"); +AILog.Info("0.7 API compatibility in effect:"); AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed."); AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies."); AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies."); diff --git a/bin/ai/compat_1.0.nut b/bin/ai/compat_1.0.nut index 9d226cf898..5e7dd441f6 100644 --- a/bin/ai/compat_1.0.nut +++ b/bin/ai/compat_1.0.nut @@ -7,7 +7,7 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -AILog.Info("1.0 API compatability in effect."); +AILog.Info("1.0 API compatibility in effect."); AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation; AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id) diff --git a/bin/ai/compat_1.1.nut b/bin/ai/compat_1.1.nut index cb539a721f..32127b438a 100644 --- a/bin/ai/compat_1.1.nut +++ b/bin/ai/compat_1.1.nut @@ -7,7 +7,7 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -AILog.Info("1.1 API compatability in effect."); +AILog.Info("1.1 API compatibility in effect."); AICompany.GetCompanyValue <- function(company) { diff --git a/bin/ai/compat_1.2.nut b/bin/ai/compat_1.2.nut index f039c59d8c..0082415e49 100644 --- a/bin/ai/compat_1.2.nut +++ b/bin/ai/compat_1.2.nut @@ -7,4 +7,4 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -AILog.Info("1.2 API compatability in effect."); +AILog.Info("1.2 API compatibility in effect."); diff --git a/bin/ai/compat_1.3.nut b/bin/ai/compat_1.3.nut index c41e3dff8f..036f3b5c34 100644 --- a/bin/ai/compat_1.3.nut +++ b/bin/ai/compat_1.3.nut @@ -7,4 +7,4 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -AILog.Info("1.3 API compatability in effect."); +AILog.Info("1.3 API compatibility in effect."); diff --git a/bin/ai/compat_1.4.nut b/bin/ai/compat_1.4.nut index 820a7e5e4e..3829bcc8e0 100644 --- a/bin/ai/compat_1.4.nut +++ b/bin/ai/compat_1.4.nut @@ -1,4 +1,4 @@ -/* $Id: compat_1.3.nut 23969 2012-02-19 19:14:17Z rubidium $ */ +/* $Id$ */ /* * This file is part of OpenTTD. @@ -6,3 +6,5 @@ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ + +AILog.Info("1.4 API compatibility in effect."); diff --git a/bin/ai/compat_1.5.nut b/bin/ai/compat_1.5.nut new file mode 100644 index 0000000000..71a46ff7a0 --- /dev/null +++ b/bin/ai/compat_1.5.nut @@ -0,0 +1,10 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +AILog.Info("1.5 API compatibility in effect."); diff --git a/bin/ai/compat_1.6.nut b/bin/ai/compat_1.6.nut new file mode 100644 index 0000000000..fe985b90d0 --- /dev/null +++ b/bin/ai/compat_1.6.nut @@ -0,0 +1,8 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ diff --git a/bin/ai/regression/completeness.sh b/bin/ai/regression/completeness.sh index e2e4dccd80..9f5e96eb0b 100755 --- a/bin/ai/regression/completeness.sh +++ b/bin/ai/regression/completeness.sh @@ -2,12 +2,12 @@ # $Id$ -if ! [ -f ai/regression/regression.nut ]; then +if ! [ -f ai/regression/completeness.sh ]; then echo "Make sure you are in the root of OpenTTD before starting this script." exit 1 fi -cat ai/regression/regression.nut | tr ';' '\n' | awk ' +cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk ' /^function/ { for (local in locals) { delete locals[local] @@ -61,7 +61,7 @@ cat ai/regression/regression.nut | tr ';' '\n' | awk ' } ' | sed 's/ //g' | sort | uniq > tmp.in_regression -grep 'DefSQ.*Method' ../src/ai/api/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api +grep 'DefSQ.*Method' ../src/script/api/ai/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//' diff --git a/bin/ai/regression/regression.sav b/bin/ai/regression/empty.sav similarity index 100% rename from bin/ai/regression/regression.sav rename to bin/ai/regression/empty.sav diff --git a/bin/ai/regression/regression_info.nut b/bin/ai/regression/regression_info.nut index e4846840e8..4e7aec7568 100644 --- a/bin/ai/regression/regression_info.nut +++ b/bin/ai/regression/regression_info.nut @@ -4,9 +4,9 @@ class Regression extends AIInfo { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Regression"; } function GetShortName() { return "REGR"; } - function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; } + 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.3"; } + function GetAPIVersion() { return "1.6"; } function GetDate() { return "2007-03-18"; } function CreateInstance() { return "Regression"; } } diff --git a/bin/ai/regression/run.sh b/bin/ai/regression/run.sh index 3420742e94..d47a664ea3 100755 --- a/bin/ai/regression/run.sh +++ b/bin/ai/regression/run.sh @@ -2,14 +2,11 @@ # $Id$ -if ! [ -f ai/regression/regression.nut ]; then +if ! [ -f ai/regression/run.sh ]; then echo "Make sure you are in the root of OpenTTD before starting this script." exit 1 fi -cp ai/regression/regression.nut ai/regression/main.nut -cp ai/regression/regression_info.nut ai/regression/info.nut - if [ -f scripts/game_start.scr ]; then mv scripts/game_start.scr scripts/game_start.scr.regression fi @@ -22,27 +19,46 @@ fi if [ "$1" = "-g" ]; then gdb="gdb --ex run --args " fi -if [ -n "$gdb" ]; then - $gdb ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav + +if [ -d "ai/regression/tst_$1" ]; then + tests="ai/regression/tst_$1" +elif [ -d "ai/regression/tst_$2" ]; then + tests="ai/regression/tst_$2" else - ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression + tests=ai/regression/tst_* fi ret=0 -if [ -z "$gdb" ]; then - res="`diff -ub ai/regression/regression.txt tmp.regression`" - if [ -z "$res" ]; then - echo "Regression test passed!" +for tst in $tests; do + echo -n "Running $tst... " + + # Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused. + cp ai/regression/regression_info.nut $tst/info.nut + + sav=$tst/test.sav + if ! [ -f $sav ]; then + sav=ai/regression/empty.sav + fi + + if [ -n "$gdb" ]; then + $gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav else - echo "Regression test failed! Difference:" - echo "$res" - ret=1 + ./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression + fi + + if [ -z "$gdb" ]; then + res="`diff -ub $tst/result.txt tmp.regression`" + if [ -z "$res" ]; then + echo "passed!" + else + echo "failed! Difference:" + echo "$res" + ret=1 + fi fi - echo "" - echo "Regression test done" -fi -rm -f ai/regression/main.nut ai/regression/info.nut + rm $tst/info.nut +done if [ -f scripts/game_start.scr.regression ]; then mv scripts/game_start.scr.regression scripts/game_start.scr diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/tst_regression/main.nut similarity index 96% rename from bin/ai/regression/regression.nut rename to bin/ai/regression/tst_regression/main.nut index 5e8533a2e8..f575f53fff 100644 --- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/tst_regression/main.nut @@ -972,48 +972,7 @@ function Regression::Order() print(" SetStopLocation(): " + AIOrder.SetStopLocation(20, 0, AIOrder.STOPLOCATION_MIDDLE)); print(" GetStopLocation(): " + AIOrder.GetStopLocation(20, 0)); - local list = AIStationList_Vehicle(12); - - print(""); - print("--StationList_Vehicle--"); - print(" Count(): " + list.Count()); - list.Valuate(AIStation.GetLocation); - print(" Location ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetCargoWaiting, 0); - print(" CargoWaiting(0) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetCargoWaiting, 1); - print(" CargoWaiting(1) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetCargoRating, 1); - print(" CargoRating(1) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetDistanceManhattanToTile, 30000); - print(" DistanceManhattanToTile(30000) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetDistanceSquareToTile, 30000); - print(" DistanceSquareToTile(30000) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.IsWithinTownInfluence, 0); - print(" IsWithinTownInfluence(0) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - - list = AIVehicleList_Station(3); + local list = AIVehicleList_Station(3); print(""); print("--VehicleList_Station--"); @@ -1234,10 +1193,6 @@ function Regression::Station() print(" GetLocation(1000): " + AIStation.GetLocation(1000)); print(" GetStationID(33411): " + AIStation.GetStationID(33411)); print(" GetStationID(34411): " + AIStation.GetStationID(34411)); - print(" GetCargoWaiting(0, 0): " + AIStation.GetCargoWaiting(0, 0)); - print(" GetCargoWaiting(1000, 0): " + AIStation.GetCargoWaiting(1000, 0)); - print(" GetCargoWaiting(0, 1000): " + AIStation.GetCargoWaiting(0, 1000)); - print(" GetStationID(33411): " + AIStation.GetStationID(33411)); print(" HasRoadType(3, TRAM): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_TRAM)); print(" HasRoadType(3, ROAD): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_ROAD)); @@ -1254,25 +1209,42 @@ function Regression::Station() print(" GetNearestTown(): " + AIStation.GetNearestTown(10000)); print(" GetNearestTown(): " + AIStation.GetNearestTown(3)); - local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP); - print(""); - print("--StationList--"); - print(" Count(): " + list.Count()); - list.Valuate(AIStation.GetLocation); - print(" Location ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); - } - list.Valuate(AIStation.GetCargoWaiting, 0); - print(" CargoWaiting(0) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); + print("--CargoWaiting--"); + for (local cargo = 0; cargo <= 1000; cargo += 1000) { + for (local station0 = 0; station0 <= 1000; station0 += 1000) { + print(" GetCargoWaiting(" + station0 + ", " + cargo + "): " + + AIStation.GetCargoWaiting(station0, cargo)); + for (local station1 = 0; station1 <= 1000; station1 += 1000) { + print(" GetCargoWaitingFrom(" + station0 + ", " + station1 + ", " + cargo + "): " + + AIStation.GetCargoWaitingFrom(station0, station1, cargo)); + print(" GetCargoWaitingVia(" + station0 + ", " + station1 + ", " + cargo + "): " + + AIStation.GetCargoWaitingFrom(station0, station1, cargo)); + for (local station2 = 0; station2 <= 1000; station2 += 1000) { + print(" GetCargoWaitingFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " + + AIStation.GetCargoWaitingFromVia(station0, station1, station2, cargo)); + } + } + } } - list.Valuate(AIStation.GetCargoWaiting, 1); - print(" CargoWaiting(1) ListDump:"); - for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { - print(" " + i + " => " + list.GetValue(i)); + + print(""); + print("--CargoPlanned--"); + for (local cargo = 0; cargo <= 1000; cargo += 1000) { + for (local station0 = 0; station0 <= 1000; station0 += 1000) { + print(" GetCargoPlanned(" + station0 + ", " + cargo + "): " + + AIStation.GetCargoPlanned(station0, cargo)); + for (local station1 = 0; station1 <= 1000; station1 += 1000) { + print(" GetCargoPlannedFrom(" + station0 + ", " + station1 + ", " + cargo + "): " + + AIStation.GetCargoPlannedFrom(station0, station1, cargo)); + print(" GetCargoPlannedVia(" + station0 + ", " + station1 + ", " + cargo + "): " + + AIStation.GetCargoPlannedFrom(station0, station1, cargo)); + for (local station2 = 0; station2 <= 1000; station2 += 1000) { + print(" GetCargoPlannedFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " + + AIStation.GetCargoPlannedFromVia(station0, station1, station2, cargo)); + } + } + } } } diff --git a/bin/ai/regression/require.nut b/bin/ai/regression/tst_regression/require.nut similarity index 100% rename from bin/ai/regression/require.nut rename to bin/ai/regression/tst_regression/require.nut diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/tst_regression/result.txt similarity index 98% rename from bin/ai/regression/regression.txt rename to bin/ai/regression/tst_regression/result.txt index 5eab441031..c909e79322 100644 --- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/tst_regression/result.txt @@ -7487,9 +7487,6 @@ ERROR: IsEnd() is invalid as Begin() is never called GetLocation(1000): -1 GetStationID(33411): 4 GetStationID(34411): 65535 - GetCargoWaiting(0, 0): 0 - GetCargoWaiting(1000, 0): -1 - GetCargoWaiting(0, 1000): -1 GetStationID(33411): 4 HasRoadType(3, TRAM): false HasRoadType(3, ROAD): false @@ -7504,17 +7501,81 @@ ERROR: IsEnd() is invalid as Begin() is never called GetNearestTown(): 65535 GetNearestTown(): 10 ---StationList-- - Count(): 2 - Location ListDump: - 5 => 33421 - 4 => 33411 - CargoWaiting(0) ListDump: - 5 => 0 - 4 => 0 - CargoWaiting(1) ListDump: - 5 => 0 - 4 => 0 +--CargoWaiting-- + GetCargoWaiting(0, 0): 0 + GetCargoWaitingFrom(0, 0, 0): 0 + GetCargoWaitingVia(0, 0, 0): 0 + GetCargoWaitingFromVia(0, 0, 0, 0): 0 + GetCargoWaitingFromVia(0, 0, 1000, 0): -1 + GetCargoWaitingFrom(0, 1000, 0): -1 + GetCargoWaitingVia(0, 1000, 0): -1 + GetCargoWaitingFromVia(0, 1000, 0, 0): -1 + GetCargoWaitingFromVia(0, 1000, 1000, 0): -1 + GetCargoWaiting(1000, 0): -1 + GetCargoWaitingFrom(1000, 0, 0): -1 + GetCargoWaitingVia(1000, 0, 0): -1 + GetCargoWaitingFromVia(1000, 0, 0, 0): -1 + GetCargoWaitingFromVia(1000, 0, 1000, 0): -1 + GetCargoWaitingFrom(1000, 1000, 0): -1 + GetCargoWaitingVia(1000, 1000, 0): -1 + GetCargoWaitingFromVia(1000, 1000, 0, 0): -1 + GetCargoWaitingFromVia(1000, 1000, 1000, 0): -1 + GetCargoWaiting(0, 1000): -1 + GetCargoWaitingFrom(0, 0, 1000): -1 + GetCargoWaitingVia(0, 0, 1000): -1 + GetCargoWaitingFromVia(0, 0, 0, 1000): -1 + GetCargoWaitingFromVia(0, 0, 1000, 1000): -1 + GetCargoWaitingFrom(0, 1000, 1000): -1 + GetCargoWaitingVia(0, 1000, 1000): -1 + GetCargoWaitingFromVia(0, 1000, 0, 1000): -1 + GetCargoWaitingFromVia(0, 1000, 1000, 1000): -1 + GetCargoWaiting(1000, 1000): -1 + GetCargoWaitingFrom(1000, 0, 1000): -1 + GetCargoWaitingVia(1000, 0, 1000): -1 + GetCargoWaitingFromVia(1000, 0, 0, 1000): -1 + GetCargoWaitingFromVia(1000, 0, 1000, 1000): -1 + GetCargoWaitingFrom(1000, 1000, 1000): -1 + GetCargoWaitingVia(1000, 1000, 1000): -1 + GetCargoWaitingFromVia(1000, 1000, 0, 1000): -1 + GetCargoWaitingFromVia(1000, 1000, 1000, 1000): -1 + +--CargoPlanned-- + GetCargoPlanned(0, 0): 0 + GetCargoPlannedFrom(0, 0, 0): 0 + GetCargoPlannedVia(0, 0, 0): 0 + GetCargoPlannedFromVia(0, 0, 0, 0): 0 + GetCargoPlannedFromVia(0, 0, 1000, 0): -1 + GetCargoPlannedFrom(0, 1000, 0): -1 + GetCargoPlannedVia(0, 1000, 0): -1 + GetCargoPlannedFromVia(0, 1000, 0, 0): -1 + GetCargoPlannedFromVia(0, 1000, 1000, 0): -1 + GetCargoPlanned(1000, 0): -1 + GetCargoPlannedFrom(1000, 0, 0): -1 + GetCargoPlannedVia(1000, 0, 0): -1 + GetCargoPlannedFromVia(1000, 0, 0, 0): -1 + GetCargoPlannedFromVia(1000, 0, 1000, 0): -1 + GetCargoPlannedFrom(1000, 1000, 0): -1 + GetCargoPlannedVia(1000, 1000, 0): -1 + GetCargoPlannedFromVia(1000, 1000, 0, 0): -1 + GetCargoPlannedFromVia(1000, 1000, 1000, 0): -1 + GetCargoPlanned(0, 1000): -1 + GetCargoPlannedFrom(0, 0, 1000): -1 + GetCargoPlannedVia(0, 0, 1000): -1 + GetCargoPlannedFromVia(0, 0, 0, 1000): -1 + GetCargoPlannedFromVia(0, 0, 1000, 1000): -1 + GetCargoPlannedFrom(0, 1000, 1000): -1 + GetCargoPlannedVia(0, 1000, 1000): -1 + GetCargoPlannedFromVia(0, 1000, 0, 1000): -1 + GetCargoPlannedFromVia(0, 1000, 1000, 1000): -1 + GetCargoPlanned(1000, 1000): -1 + GetCargoPlannedFrom(1000, 0, 1000): -1 + GetCargoPlannedVia(1000, 0, 1000): -1 + GetCargoPlannedFromVia(1000, 0, 0, 1000): -1 + GetCargoPlannedFromVia(1000, 0, 1000, 1000): -1 + GetCargoPlannedFrom(1000, 1000, 1000): -1 + GetCargoPlannedVia(1000, 1000, 1000): -1 + GetCargoPlannedFromVia(1000, 1000, 0, 1000): -1 + GetCargoPlannedFromVia(1000, 1000, 1000, 1000): -1 --Tile-- HasTreeOnTile(): false @@ -9106,30 +9167,6 @@ ERROR: IsEnd() is invalid as Begin() is never called SetStopLocation(): true GetStopLocation(): 1 ---StationList_Vehicle-- - Count(): 2 - Location ListDump: - 5 => 33421 - 4 => 33411 - CargoWaiting(0) ListDump: - 5 => 0 - 4 => 0 - CargoWaiting(1) ListDump: - 5 => 0 - 4 => 0 - CargoRating(1) ListDump: - 5 => -1 - 4 => -1 - DistanceManhattanToTile(30000) ListDump: - 5 => 106 - 4 => 96 - DistanceSquareToTile(30000) ListDump: - 5 => 8818 - 4 => 7058 - IsWithinTownInfluence(0) ListDump: - 5 => 0 - 4 => 0 - --VehicleList_Station-- Count(): 1 Location ListDump: diff --git a/bin/ai/regression/tst_stationlist/main.nut b/bin/ai/regression/tst_stationlist/main.nut new file mode 100644 index 0000000000..60f3e4a4a7 --- /dev/null +++ b/bin/ai/regression/tst_stationlist/main.nut @@ -0,0 +1,216 @@ +/* $Id$ */ + +class Regression extends AIController { + function Start(); +}; + + +function Regression::StationList() +{ + local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP); + + print(""); + print("--StationList--"); + print(" Count(): " + list.Count()); + list.Valuate(AIStation.GetLocation); + print(" Location ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetCargoWaiting, 0); + print(" CargoWaiting(0) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetCargoWaiting, 1); + print(" CargoWaiting(1) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_Cargo() +{ + print(""); + print("--StationList_Cargo--"); + + for (local mode = AIStationList_Cargo.CM_WAITING; mode <= AIStationList_Cargo.CM_PLANNED; ++mode) { + print(" " + mode); + for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA ; ++selector) { + print(" " + selector); + local list = AIStationList_Cargo(mode, selector, 6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + } + } +}; + +function Regression::StationList_CargoPlanned() +{ + print(""); + print("--StationList_CargoPlanned--"); + + for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) { + print(" " + selector); + local list = AIStationList_CargoPlanned(selector, 6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + } +}; + +function Regression::StationList_CargoPlannedByFrom() +{ + print(""); + print("--StationList_CargoPlannedByFrom--"); + local list = AIStationList_CargoPlannedByFrom(2, 0); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoPlannedByVia() +{ + print(""); + print("--StationList_CargoPlannedByVia--"); + local list = AIStationList_CargoPlannedByVia(2, 0); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoPlannedViaByFrom() +{ + print(""); + print("--StationList_CargoPlannedViaByFrom--"); + local list = AIStationList_CargoPlannedViaByFrom(6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoPlannedFromByVia() +{ + print(""); + print("--StationList_CargoPlannedFromByVia--"); + local list = AIStationList_CargoPlannedFromByVia(6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoWaiting() +{ + print(""); + print("--StationList_CargoWaiting--"); + + for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) { + print(" " + selector); + local list = AIStationList_CargoWaiting(selector, 6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + } +}; + +function Regression::StationList_CargoWaitingByFrom() +{ + print(""); + print("--StationList_CargoWaitingByFrom--"); + local list = AIStationList_CargoWaitingByFrom(2, 0); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoWaitingByVia() +{ + print(""); + print("--StationList_CargoWaitingByVia--"); + local list = AIStationList_CargoWaitingByVia(2, 0); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoWaitingViaByFrom() +{ + print(""); + print("--StationList_CargoWaitingViaByFrom--"); + local list = AIStationList_CargoWaitingViaByFrom(6, 0, 7); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_CargoWaitingFromByVia() +{ + print(""); + print("--StationList_CargoWaitingFromByVia--"); + local list = AIStationList_CargoWaitingFromByVia(2, 0, 2); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +}; + +function Regression::StationList_Vehicle() +{ + local list = AIStationList_Vehicle(12); + + print(""); + print("--StationList_Vehicle--"); + print(" Count(): " + list.Count()); + list.Valuate(AIStation.GetLocation); + print(" Location ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetCargoWaiting, 0); + print(" CargoWaiting(0) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetCargoWaiting, 1); + print(" CargoWaiting(1) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetCargoRating, 1); + print(" CargoRating(1) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetDistanceManhattanToTile, 30000); + print(" DistanceManhattanToTile(30000) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.GetDistanceSquareToTile, 30000); + print(" DistanceSquareToTile(30000) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } + list.Valuate(AIStation.IsWithinTownInfluence, 0); + print(" IsWithinTownInfluence(0) ListDump:"); + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { + print(" " + i + " => " + list.GetValue(i)); + } +} + +function Regression::Start() +{ + StationList(); + StationList_Cargo(); + StationList_CargoPlanned(); + StationList_CargoPlannedByFrom(); + StationList_CargoPlannedByVia(); + StationList_CargoPlannedViaByFrom(); + StationList_CargoPlannedFromByVia(); + StationList_CargoWaiting(); + StationList_CargoWaitingByFrom(); + StationList_CargoWaitingByVia(); + StationList_CargoWaitingViaByFrom(); + StationList_CargoWaitingFromByVia(); + StationList_Vehicle(); +} diff --git a/bin/ai/regression/tst_stationlist/result.txt b/bin/ai/regression/tst_stationlist/result.txt new file mode 100644 index 0000000000..20e594766f --- /dev/null +++ b/bin/ai/regression/tst_stationlist/result.txt @@ -0,0 +1,127 @@ + +--StationList-- + Count(): 5 + Location ListDump: + 6 => 42341 + 2 => 41831 + 7 => 41825 + 5 => 33421 + 4 => 33411 + CargoWaiting(0) ListDump: + 7 => 6 + 6 => 6 + 2 => 3 + 5 => 0 + 4 => 0 + CargoWaiting(1) ListDump: + 7 => 0 + 6 => 0 + 5 => 0 + 4 => 0 + 2 => 0 + +--StationList_Cargo-- + 0 + 0 + 6 => 6 + 1 + 6 => 2 + 2 + 2 => 4 + 7 => 2 + 3 + 1 + 0 + 7 => 18 + 6 => 16 + 2 => 7 + 1 + 6 => 8 + 2 => 3 + 2 + 2 => 16 + 6 => 14 + 7 => 11 + 3 + 6 => 10 + 2 => 8 + +--StationList_CargoPlanned-- + 0 + 7 => 18 + 6 => 16 + 2 => 7 + 1 + 6 => 8 + 2 => 3 + 2 + 2 => 16 + 6 => 14 + 7 => 11 + 3 + 6 => 10 + 2 => 8 + +--StationList_CargoPlannedByFrom-- + 7 => 8 + 6 => 8 + 2 => 7 + +--StationList_CargoPlannedByVia-- + 2 => 16 + 6 => 7 + +--StationList_CargoPlannedViaByFrom-- + 6 => 8 + 2 => 3 + +--StationList_CargoPlannedFromByVia-- + 6 => 10 + 2 => 8 + +--StationList_CargoWaiting-- + 0 + 6 => 6 + 1 + 6 => 2 + 2 + 2 => 4 + 7 => 2 + 3 + +--StationList_CargoWaitingByFrom-- + 2 => 3 + +--StationList_CargoWaitingByVia-- + 6 => 3 + +--StationList_CargoWaitingViaByFrom-- + 6 => 2 + +--StationList_CargoWaitingFromByVia-- + 6 => 3 + +--StationList_Vehicle-- + Count(): 2 + Location ListDump: + 5 => 33421 + 4 => 33411 + CargoWaiting(0) ListDump: + 5 => 0 + 4 => 0 + CargoWaiting(1) ListDump: + 5 => 0 + 4 => 0 + CargoRating(1) ListDump: + 5 => -1 + 4 => -1 + DistanceManhattanToTile(30000) ListDump: + 5 => 106 + 4 => 96 + DistanceSquareToTile(30000) ListDump: + 5 => 8818 + 4 => 7058 + IsWithinTownInfluence(0) ListDump: + 5 => 0 + 4 => 0 +ERROR: The script died unexpectedly. diff --git a/bin/ai/regression/tst_stationlist/test.sav b/bin/ai/regression/tst_stationlist/test.sav new file mode 100644 index 0000000000..ef551c74ff Binary files /dev/null and b/bin/ai/regression/tst_stationlist/test.sav differ diff --git a/bin/baseset/no_music.obm b/bin/baseset/no_music.obm index 85add6b23a..f782d23ea0 100644 --- a/bin/baseset/no_music.obm +++ b/bin/baseset/no_music.obm @@ -10,7 +10,7 @@ fallback = true description = A music pack without actual music. description.af_ZA = 'n Musiek stel sonder enige musiek. description.ar_EG = مجموعة موسيقى بدون موسيقى -description.be_BY = "Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі. +description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі. description.bg_BG = Празен музикален пакет. description.ca_ES = Un joc de música sense cap música. description.cs_CZ = Prázná hudební sada. @@ -24,6 +24,7 @@ description.es_ES = Un conjunto de música vacío. description.et_EE = Muusikakogu ilma muusikata. description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia. description.fr_FR = Un pack de musiques sans musiques. +description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann. description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith. description.gl_ES = Un conxunto de músicas sen ningunha música. description.hr_HR = Muzički paket bez ikakve muzike. @@ -33,8 +34,10 @@ description.is_IS = Tónlistarpakki sem er í raun án tónlistar. description.it_IT = Un pacchetto musicale non contenente alcuna musica. description.ja_JP = 空の音楽パック description.ko_KR = 실제 음악이 없는 음악 목록입니다. +description.la_VA = Sarcina musicae sine ulla musica. description.lb_LU = E Musikpack ouni aktuell Musik. description.lt_LT = Muzikos pakas be muzikos. +description.lv_LV = Mūzikas kopa bez mūzikas description.nb_NO = En musikkpakke uten noe musikk. description.nl_NL = Een muziekset zonder muziek. description.nn_NO = Ei musikkpakke utan noko musikk. @@ -50,6 +53,7 @@ description.sv_SE = Ett musikpaket utan någon musik. description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு. description.th_TH = ชุดเพลงประกอบแบบไม่มีเสียงเพลง description.tr_TR = Müzik içermeyen boş bir müzik paketi. +description.uk_UA = Порожній набір музики. description.vi_VN = Gói âm nhạc này không có nhạc nào. description.zh_CN = 一个没有实际内容的音乐包. description.zh_TW = 不含任何音樂的音樂集。 diff --git a/bin/baseset/no_sound.obs b/bin/baseset/no_sound.obs index 173194084b..9954845a35 100644 --- a/bin/baseset/no_sound.obs +++ b/bin/baseset/no_sound.obs @@ -10,7 +10,7 @@ fallback = true description = A sound pack without any sounds. description.af_ZA = 'n Klank stel sonder enige klanke. description.ar_EG = مجموعة صوت بدوت اصوات مضافة -description.be_BY = "Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў. +description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў. description.bg_BG = Празен звуков пакет. description.ca_ES = Un joc de sons sense cap so. description.cs_CZ = Prázdná sada zvuků. @@ -22,8 +22,10 @@ description.en_AU = A sound pack without any sounds. description.en_US = A sound pack without any sounds. description.es_ES = Un conjunto de sonidos vacío. description.et_EE = Helikogu ilma helideta. +description.eu_ES = Soinurik gabeko soinu pakete bat description.fi_FI = Äänipaketti, jossa ei ole ääniä. description.fr_FR = Un pack de sons sans sons. +description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann. description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith. description.gl_ES = Un conxunto de sons sen ningún son description.hr_HR = Zvučni paket bez ikakvih zvukova. @@ -33,7 +35,8 @@ description.is_IS = Hljóðpakki án hljóðs. description.it_IT = Un pacchetto sonoro non contenente alcun suono. description.ja_JP = 空の効果音パック description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다. -description.lb_LU = En Soundpack mat all den Sounds. +description.la_VA = Sarcina sonorum sine ullis sonis. +description.lb_LU = E Soundpack ouni iergendee Sound. description.lt_LT = Garsų pakas be jokių garsų. description.nb_NO = En lydpakke uten noen lyder. description.nl_NL = Een geluidset zonder geluid. @@ -50,6 +53,7 @@ description.sv_SE = Ett ljudpaket utan några ljud. description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு. description.th_TH = ชุดเสียงแบบไร้เสียง description.tr_TR = Ses içermeyen boş bir ses kümesi. +description.uk_UA = Порожній набір звуків. description.vi_VN = Gói âm thanh này không có âm thanh nào. description.zh_CN = 一个空的音效包. description.zh_TW = 不含任何音效的音效集。 diff --git a/bin/baseset/openttd.grf b/bin/baseset/openttd.grf index 86b70789f0..efe35ffd38 100644 Binary files a/bin/baseset/openttd.grf and b/bin/baseset/openttd.grf differ diff --git a/bin/baseset/orig_dos.obg b/bin/baseset/orig_dos.obg index 609b5c0167..ffe230ccf2 100644 --- a/bin/baseset/orig_dos.obg +++ b/bin/baseset/orig_dos.obg @@ -11,7 +11,7 @@ palette = DOS description = Original Transport Tycoon Deluxe DOS edition graphics. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس -description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для DOS. +description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS. description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS. description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS). @@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat. description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS). +description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS. description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje. @@ -34,6 +35,7 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgá description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS. description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS) description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다. +description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS. description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik. description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS. @@ -50,7 +52,8 @@ description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள். description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri. +description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü grafikleri. +description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition. description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS description.zh_CN = 运输大亨DOS豪华版原版图形包. description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。 @@ -69,7 +72,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 -OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd +OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/bin/baseset/orig_dos.obs b/bin/baseset/orig_dos.obs index be92a79185..5ae658692d 100644 --- a/bin/baseset/orig_dos.obs +++ b/bin/baseset/orig_dos.obs @@ -10,7 +10,7 @@ version = 0 description = Original Transport Tycoon Deluxe DOS edition sounds. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس -description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. +description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS. description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS. description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS). @@ -24,6 +24,7 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS. description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet. description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS). +description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS. description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS. description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje. @@ -33,6 +34,7 @@ description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útg description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS. description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS) description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다. +description.la_VA = Soni ex editione originale Transport Tycoon Deluxe DOS. description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound. description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai. description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS. @@ -49,7 +51,8 @@ description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja. description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள். description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü sesleri. +description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü sesleri. +description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition. description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS description.zh_CN = 运输大亨DOS豪华版原版音效包. description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。 diff --git a/bin/baseset/orig_dos_de.obg b/bin/baseset/orig_dos_de.obg index ea73c1ad6c..5649613eef 100644 --- a/bin/baseset/orig_dos_de.obg +++ b/bin/baseset/orig_dos_de.obg @@ -11,7 +11,7 @@ palette = DOS description = Original Transport Tycoon Deluxe DOS (German) edition graphics. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس -description.be_BY = Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS. +description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) . description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany). description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS). @@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika. description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat. description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande). +description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach). description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe. description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje. @@ -34,6 +35,7 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýs description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS. description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版) description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다. +description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica). description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik. description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk). @@ -50,7 +52,8 @@ description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DO description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska). description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள். description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. +description.tr_TR = Özgün Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. +description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького). description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức) description.zh_CN = 运输大亨DOS豪华德语版原版图形包. description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。 @@ -69,7 +72,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = fcde1d7e8a74197d72a62695884b909e -OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd +OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/bin/baseset/orig_win.obg b/bin/baseset/orig_win.obg index 7d64d3fac2..f9bd77934c 100644 --- a/bin/baseset/orig_win.obg +++ b/bin/baseset/orig_win.obg @@ -11,7 +11,7 @@ palette = Windows description = Original Transport Tycoon Deluxe Windows edition graphics. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز -description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для Windows. +description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows. description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows. description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows). @@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Win description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat. description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows). +description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows. description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje. @@ -33,7 +34,8 @@ description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows. description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni. description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows. description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows) -description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 그래픽입니다. +description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다. +description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows. description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik. description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows. @@ -50,7 +52,8 @@ description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izda description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள். description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri. +description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü grafikleri. +description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe Windows edition. description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.zh_CN = 运输大亨Windows豪华版原版图形包. description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。 @@ -69,7 +72,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 -OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd +OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/bin/baseset/orig_win.obm b/bin/baseset/orig_win.obm index 737c16e04e..203c0417c3 100644 --- a/bin/baseset/orig_win.obm +++ b/bin/baseset/orig_win.obm @@ -10,7 +10,7 @@ version = 1 description = Original Transport Tycoon Deluxe Windows edition music. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز -description.be_BY = Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. +description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows. description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows. description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows). @@ -24,6 +24,7 @@ description.es_ES = Música original de Transport Tycoon Deluxe versión Windows description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika. description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki. description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows). +description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows. description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows. description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje. @@ -32,9 +33,11 @@ description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windo description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni. description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows. description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows) -description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 음악입니다. -description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Music. +description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다. +description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows. +description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik. description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika. +description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika. description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows. description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie. description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows. @@ -49,7 +52,8 @@ description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Win description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை. description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri. +description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü müzikleri. +description.uk_UA = Оригінальна музика з Transport Tycoon Deluxe Windows edition. description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.zh_CN = Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包 description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。 diff --git a/bin/baseset/orig_win.obs b/bin/baseset/orig_win.obs index 185cc905af..33164e9584 100644 --- a/bin/baseset/orig_win.obs +++ b/bin/baseset/orig_win.obs @@ -10,7 +10,7 @@ version = 0 description = Original Transport Tycoon Deluxe Windows edition sounds. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز -description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. +description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows. description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows. description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows). @@ -24,6 +24,7 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windo description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet. description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows). +description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows. description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows. description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje. @@ -32,7 +33,8 @@ description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows. description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni. description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows. description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows) -description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 효과음입니다. +description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다. +description.la_VA = Soni ex editione originale Transport Tycoon Deluxe Windows. description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound. description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai. description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows. @@ -49,7 +51,8 @@ description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izda description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள். description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü sesleri. +description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü sesleri. +description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition. description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包. description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。 diff --git a/bin/game/compat_1.2.nut b/bin/game/compat_1.2.nut index f9a63e698b..aa5d48c3a3 100644 --- a/bin/game/compat_1.2.nut +++ b/bin/game/compat_1.2.nut @@ -7,4 +7,19 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -GSLog.Info("1.2 API compatability in effect."); +GSLog.Info("1.2 API compatibility in effect."); + +GSTown._SetGrowthRate <- GSTown.SetGrowthRate; +GSTown.SetGrowthRate <- function(town_id, days_between_town_growth) +{ + /* Growth rate 0 caused resetting the custom growth rate. While this was undocumented, it was used nevertheless (ofc). */ + if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL; + return GSTown._SetGrowthRate(town_id, days_between_town_growth); +} + +/* 1.5 adds a game element reference to the news. */ +GSNews._Create <- GSNews.Create; +GSNews.Create <- function(type, text, company) +{ + return GSNews._Create(type, text, company, GSNews.NR_NONE, 0); +} diff --git a/bin/game/compat_1.3.nut b/bin/game/compat_1.3.nut index 656794c891..78a03534df 100644 --- a/bin/game/compat_1.3.nut +++ b/bin/game/compat_1.3.nut @@ -7,4 +7,19 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -GSLog.Info("1.3 API compatability in effect."); +GSLog.Info("1.3 API compatibility in effect."); + +GSTown._SetGrowthRate <- GSTown.SetGrowthRate; +GSTown.SetGrowthRate <- function(town_id, days_between_town_growth) +{ + /* Growth rate 0 caused resetting the custom growth rate. While this was undocumented, it was used nevertheless (ofc). */ + if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL; + return GSTown._SetGrowthRate(town_id, days_between_town_growth); +} + +/* 1.5 adds a game element reference to the news. */ +GSNews._Create <- GSNews.Create; +GSNews.Create <- function(type, text, company) +{ + return GSNews._Create(type, text, company, GSNews.NR_NONE, 0); +} diff --git a/bin/game/compat_1.4.nut b/bin/game/compat_1.4.nut index 4703a7c361..a00431ed64 100644 --- a/bin/game/compat_1.4.nut +++ b/bin/game/compat_1.4.nut @@ -1,4 +1,4 @@ -/* $Id: compat_1.3.nut 24469 2012-08-13 19:33:17Z yexo $ */ +/* $Id$ */ /* * This file is part of OpenTTD. @@ -6,3 +6,12 @@ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ + +GSLog.Info("1.4 API compatibility in effect."); + +/* 1.5 adds a game element reference to the news. */ +GSNews._Create <- GSNews.Create; +GSNews.Create <- function(type, text, company) +{ + return GSNews._Create(type, text, company, GSNews.NR_NONE, 0); +} diff --git a/bin/game/compat_1.5.nut b/bin/game/compat_1.5.nut new file mode 100644 index 0000000000..96a7647ff6 --- /dev/null +++ b/bin/game/compat_1.5.nut @@ -0,0 +1,10 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +GSLog.Info("1.5 API compatibility in effect."); diff --git a/bin/game/compat_1.6.nut b/bin/game/compat_1.6.nut new file mode 100644 index 0000000000..fe985b90d0 --- /dev/null +++ b/bin/game/compat_1.6.nut @@ -0,0 +1,8 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ diff --git a/changelog.txt b/changelog.txt index 510c916b16..4fa211c9f9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,521 @@ +1.5.0-beta2 (2015-02-24) +------------------------------------------------------------------------ +- Feature: [NoGo] Game scripts can point to a location, station, industry, or town when publishing news. (r27164) +- Feature: Allow changing max heightlevel in scenario editor. (r27151) +- Feature: Make use of both rocky tile sets from the base graphics. (r27117) +- Change: Scale (non-custom) default window sizes according to GUI zoom. (r27147) +- Change: Make statusbar and chat-entry window use the same width as the toolbar. (r27146) +- Change: The chatbox-width setting now uses percent of screen width instead of pixels. (r27144) +- Change: [NewGRF] Interpret negative positions in industry layouts depending on GRF version. (r27138) +- Fix: [SDL, Windows] Right-mouse-button scrolling scrolled/jumped too far, when OpenTTD lagged during mouse event processing. (r27167) +- Fix: Toolbars were not invalidated when changing max-vehicles settings. [FS#6204] (r27163) +- Fix: Tile selection was drawn outside of map in some cases. [FS#6208] (r27162) +- Fix: Reimplement the viewport drawing algorithm. [FS#6156] [FS#6206] (r27161) +- Fix: Issues with smallmap and viewport coordinates and transformations. (r27160, r27159, r27158) +- Fix: Mark bridge middle tiles dirty when building/removing/changing bridges. (r27157) +- Fix: Rounding and unit-conversion inconsistencies in calls to MarkAllViewportsDirty. (r27148) +- Fix: Oilrig empty-tile checks were incorrect due to wrong TileIndexDiff->TileIndexDiffC conversion. (r27137) +- Fix: Misalignment in generate world window in case of small fonts. (r27135) +- Fix: Dragging of free wagons in depot failed with GUI zoom. (r27133) +- Fix: Reduce memory footprint of map array by shuffling its members. [FS#6218] (r27132, r27126) +- Fix: Dropdown- and tooltip-windows should not steal the focus. (r27131) +- Fix: [NewGRF] Action 7/9 condition 0A failed for present, but disabled, NewGRF. (r27119) +- Fix: Road vehicles could not reverse to be sent to depots when the following tile has the right type to run on, but could not be entered. [FS#6183] (r27107) +- Fix: Use the actual max speed of the vehicle in front when determining if a RV can overtake. [FS#6176] (r27106) +- Fix: grow_counter was not properly bounded by growth_rate, but by some other value used to calculate growth_rate. [FS#6195] (r27105) +- Fix: [Script] Support 64 bits integers in ScriptLists. [FS#6194] (r27104) +- Fix: [Script] Money values would end up wrong in strings when outside the bounds of a 32 bits integer. [FS#6194] (r27102) + + +1.5.0-beta1 (2014-12-24) +------------------------------------------------------------------------ +- Feature: Support .txt.gz and -txt.xz changelog, readme and license files in basesets, NewGRFs, etc (r27035, r27034) +- Feature: More height levels [FS#4126] (r27010) +- Feature: Latin translation (r26993) +- Feature: Add option to choose normal, double or quad-size interface (r26990) +- Feature: [Script] Swap method for script lists (r26894) +- Feature: [Script] ScriptStationList_Cargo for sorting cargo by from and via (r26893) +- Feature: [Script] API for retrieving planned flow (r26892) +- Feature: [CargoDist] Predict links for station-autorefitting vehicles (r26889) +- Feature: Setting for limiting the height of bridges (r26882) +- Feature: Make aircraft ascend/descend when they are too close to the ground or too far away (r26866) +- Feature: Allow hiding of non-interesting engines in the GUI (r26805, r26804) +- Feature: Vehicle sorting in autoreplace GUI [FS#1640] (r26800) +- Feature: [NewGRF] Advanced visual effects with multiple effect sprites independent of spawning model (r26988, r26747) +- Feature: Warn about missing industries after generating a map (r26729) +- Feature: Upgrade currently active NewGRFs to newest installed version (r26613) +- Feature: Save and load grfid and md5sum of NewGRFs in config file (r26611) +- Feature: Select an editable preset name for saving (r26610) +- Feature: Cancel cargo delivery from industries/houses to stations after about 21 months of not having picked up any of the cargo (r26582) +- Feature: Give a warning when a plane's orders tell it to use a runway which is too short for it [FS#6009] (r26566) +- Feature: [Script] Extended API for CargoDist (r26557) +- Feature: Show measured order times in timetable GUI also when not timetabled (r26550) +- Feature: Prompt for confirmation when deleting a vehicle group (r26455) +- Feature: Hierarchical vehicle subgroups (r26450) +- Feature: Allow more sound sleep for dedicated servers when there's nothing to do and nobody paying attention (r26449) +- Feature: [NewGRF] Add vehicle modflag 1 (unloading in progress) (r26430) +- Change: Improvements to the man page (r27091, r27012) +- Change: Allow to set the granularity of the tooltip hover time in milliseconds instead of seconds. New default value is 250ms (r26815) +- Change: Follow SI recommendation about spaces between numbers and units [FS#6086] (r26733) +- Change: [CargoDist] Save locations instead of distances in link graphs to reduce size (r26646) +- Change: [Squirrel] Make the internal integer for scripts always 64 bits, so scripts behave the same on 32 and 64 bit architectures and money can be represented properly (r26585, r26584) +- Change: Reshuffle advanced settings tree (r26614, r26536) +- Change: Add backend-independent config-file setting to disable 8bpp video modes, and disable 8bpp by default (r26522) +- Fix: [OS/2] Compile again [FS#6186] (r27092) +- Fix: Compilation with freetype2 version 2.5.4 and newer [FS#6185] (r27079) +- Fix: Variable 47 used the carge translation table of the wrong GRF in case of callback 1D [FS#6182] (r27075) +- Fix: Some lists did not use natural string sorting [FS#6172] (r27063) +- Fix: Mercurial version detection failed if personal presets were configured (r27059) +- Fix: [OSX] Don't require double-press from non-dead console hotkeys [FS#5812] (r27046) +- Fix: Crash when having the vehicle list opened from a buoy or oil rig when the buoy/oil rig is removed (r27030) +- Fix: Unit number was not always fully shown in depots [FS#6102] (r27014) +- Fix: [CargoDist] Reserve cargo only after unloading finished or if the vehicle has the desired cargo already [FS#6110] (r26918) +- Fix: [Squirrel] Loading a value saved as boolean caused it to be of type integer instead of boolean (r26785) +- Fix: [Squirrel] Harden string handling (r26777) +- Fix: [OSX] Implement more of the text editing API to prevent crashes and improve IME support [FS#5972] (r26758) +- Fix: Incorrect saving of order backups [FS#6066] (r26700) +- Fix: Ordering a vehicle to a competitor's rail waypoint displayed an error message. Ignore the click as is done for the other order types to competitor's stuff [FS#6059] (r26692) +- Fix: [Script] Loading/parsing of info .nuts was done in the same VM, causing e.g. constants to break the loading of info of other scripts [FS#5973] (r26617) +- Fix: [CargoDist] Improve estimation of link capacitites (r26549) +- Remove: A bunch of archaic settings from the GUI (r26528, r26526, r26525) + + +1.4.4 (2014-10-21) +------------------------------------------------------------------------ +(None) + + +1.4.4-RC1 (2014-10-08) +------------------------------------------------------------------------ +- Fix: Image widgets stored 32bit SpriteID in uint16 (r26971) +- Fix: Owner of road depot road types were not properly changed upon bankruptcy [FS#6126] (r26955) +- Fix: Compilation on HAIKU (r26922) +- Fix: Crash when enabling 'Full animation' if multiplayer chat text is on screen [FS#6096] (r26919) +- Fix: Height computation of game script text in town GUI did not consider margins [FS#6119] (r26859) +- Fix: [Squirrel] Debian lintian issues (r26853) +- Fix: Compilation of strgen on various platforms like Solaris (r26850) +- Fix: Better display of refit information for articulated vehicles [FS#6113] (r26849, r26848) +- Fix: Do not assign a next hop when returning cargo [FS#6110] (r26847) +- Fix: The ok-button in the OSK for the signs list should just close the OSK [FS#6116] (r26827) + + +1.4.3 (2014-09-23) +------------------------------------------------------------------------ +(None) + + +1.4.3-RC2 (2014-09-14) +------------------------------------------------------------------------ +- Fix: Crashes on joining a server with pending order backups [FS#6112] (r26819) +- Fix: Crashes on start due to dereferencing the -1 index of the file names array of music files (r26809) + + +1.4.3-RC1 (2014-09-07) +------------------------------------------------------------------------ +- Fix: TC_NO_SHADE did not work for 32bpp text rendering (r26792) +- Fix: Loading a game with order backups leaked Orders and left unreachable items in the pool (r26787) +- Fix: Buffer overrun in SQCompiler::Error (r26764) +- Fix: Desync due to not always properly restoring game state from the savegame (r26753) +- Fix: [Script] Crashes and infinite loops when using lists in item-descending order [FS#6085] (r26744) +- Fix: Incorrect CFLAGS when enabling gprof profiling (r26737, r26735) +- Fix: Do not reset the last selected airport or layout, unless it is really necessary [FS#6083] (r26732) +- Fix: Use the normal search path to look for xdg-open at Unix [FS#6077] (r26724) +- Fix: Properly check for cargo acceptance of houses [FS#5997] (r26723) + + +1.4.2 (2014-08-16) +------------------------------------------------------------------------ +(None) + + +1.4.2-RC2 (2014-08-03) +------------------------------------------------------------------------ +- Change: Use awk instead of trying to convince cpp to preprocess nfo files (r26708) +- Fix: CMD_CLEAR_ORDER_BACKUP should not be suppressed by pause modes (r26716) +- Fix: [NewGRF] Parameters to SCC_NEWGRF_PUSH_WORD and SCC_NEWGRF_UNPRINT were not skipped during drawing (r26713) +- Fix: [OSX] Compilation fails with some lzo2 versions, if __LP64__ is defined to 0 instead of checking whether it is defined [FS#6069] (r26709) +- Fix: Wrong breakdown sound was played for ships [FS#6015] (r26706) +- Fix: Integer overflows in acceleration code causing either too low acceleration or too high acceleration [FS#6067] (r26702) +- Fix: Discard incorrectly saved order backups when clients join [FS#6066] (r26700) +- Fix: Do not crash when trying to show an error about vehicle in a NewGRF and the NewGRF was not loaded at all (r26699) +- Fix: Slovak uses space as group separator in numbers [FS#6064] (r26695) +- Fix: Tighten parameter bound checks on GSCargoMonitor functions, and return -1 on out-of-bound parameters (r26685) + + +1.4.2-RC1 (2014-07-03) +------------------------------------------------------------------------ +- Fix: CargoPacket::SourceStation() returns a StationID (r26660) +- Fix: Days in dates are not represented by ordinal numbers in all languages [FS#6047] (r26657) +- Fix: Production cheat cannot be allowed to be active in multiplayer for desync reasons, even when activated in singleplayer previously [FS#6044] (r26656) +- Fix: Make sure an 'abs' is used that supports int64 when using 'abs' on those variables (r26651) +- Fix: Support save/load chunk lengths of up to (1 << 32) - 1 [FS#6041] (r26650) +- Fix: Incorrect usage of string commands in the base language [FS#6037] (r26642, r26640, r26639, r26632) +- Fix: Segmentation fault when encountering a .obg/.obs/.obm with empty string/zero length MD5 checksums [FS#6038] (r26637) +- Fix: The 'Load' button was not properly enabled/disabled for old savegames without NewGRF information (r26634) +- Fix: If the video driver fails to supply a list of resolutions, display an error message [FS#6012] (r26629) + + +1.4.1 (2014-06-02) +------------------------------------------------------------------------ +- Fix: First send packages about new company, then clients joining it to admin port [FS#6025] (r26616) + + +1.4.1-RC2 (2014-05-18) +------------------------------------------------------------------------ +- Fix: Save/load issues on big endian machines (r26593, r26590, r26589) +- Fix: Consider multiheaded trains in station refits [FS#5995] (r26586) +- Fix: Game script could be changed in game by double clicking [FS#5974] (r26583) +- Fix: Transfer stations also should have a cargo rating [FS#5989] (r26581, r26580) +- Fix: [Network] AIs would not reset certain network state information upon creation of their company [FS#6003] (r26578, r26576) +- Fix: [Network] Client of non-dedicated server was not correctly put into the first company for all state variables [FS#6001] (r26577) + + +1.4.1-RC1 (2014-05-04) +------------------------------------------------------------------------ +- Change: Remove demand calculation based on tiles (r26484) +- Change: Use pkg-config for libpng as well (r26435, r26433, r26432) +- Change: Use better distance metric for link graph [FS#5941] (r26411) +- Fix: [Windows] Crash when the operating system performs the "paint" callback during window creation [FS#5994] (r26539, r26538) +- Fix: OpenBSD compilation [FS#5992] (r26523) +- Fix: prevent from ever reading huge (or negative) amounts of data in strgen (r26521) +- Fix: Severity rating of dedicated server messages during world generation (r26518) +- Fix: Buffer overruns in handling of symbolic links inside tars (r26514) +- Fix: Incorrect usage of strecpy (r26505, r26485) +- Fix: Reading console input on dedicated server relied on unspecified behaviour (r26496) +- Fix: Allow single-vehicle consists to station-refit in a meaningful way (r26483) +- Fix: Prevent comparing to NULL when strndup could not allocate memory (r26476) +- Fix: Potentially undefined shifts in NewGRF code (r26475) +- Fix: Make sure there is no uninitialised sprite data (r26473) +- Fix: Draw text shadow for ellipses (r26467) +- Fix: Add special handling for PALETTE_CRASH to work for non-8bpp-mapped sprites (r26463) +- Fix: Avoid division by 0 when scaling flow values [FS#5970] (r26448) +- Fix: Draw links to match _settings_game.vehicle.road_side [FS#5961] (r26445) +- Fix: Load button for heightmap list was missing [FS#5953] (r26428) +- Fix: Do not crash when supplying an invalid filename without extension to cmd parameter -q (r26423) +- Fix: Some road constructions used the rail sound effect [FS#5946] (r26422) +- Fix: Goal GUI failed to shade [FS#5948] (r26420) +- Fix: Shares button state was not appropriately updated when switching setting or company [FS#5947] (r26416) + + +1.4.0 (2014-04-01) +------------------------------------------------------------------------ +(None) + + +1.4.0-RC1 (2014-03-18) +------------------------------------------------------------------------ +- Feature: [Script] APIs to get cargo waiting from/via other station (r26396) +- Fix: Do not explain "symmetric" cargodist mode when the setting does not allow it [FS#5939] (r26394) +- Fix: Update distances between link graph nodes when station sign is moved (r26393) +- Fix: No need to call OnFocus twice [FS#5933] (r26392) +- Fix: Select a specific font size when freetype fails to select one automatically [FS#5885] (r26389) +- Fix: Return correct values from ICU iterators in case of leading or trailing whitespace [FS#5924] (r26384) +- Fix: All goal commands invalidated the goal list of company 0 [FS#5932] (r26382) + + +1.4.0-beta5 (2014-02-25) +------------------------------------------------------------------------ +- Feature: Warn the user about empty setting search results, and about missing setting search results due to filtering (r26322, r26321) +- Feature: [NewGRF] Extend object variable 0x60 to also return the view [FS#5696] (r26316) +- Feature: Allow map sizes up to 4096x4096 (r26319) +- Feature: [NoGo] Allow GS to hide story page date (r26307) +- Feature: [NoGo] More story APIs: RemovePageElement, GetCompany, GetDate, SetDate (r26306) +- Feature: [NoGo] ScriptStoryPageElementList() - a list of all story page elements for a given page (r26305) +- Feature: [NoGo] ScriptStoryPageList() - a list of all story pages (r26303) +- Change: improve the performance of map generation (r26313, r26312, r26311, r26310, r26309, r26308) +- Fix: Station sizes > 8 were always allowed [FS#5929] (r26375) +- Fix: [NewGRF] Mixed up callback mask flags in station inspect window [FS#5928] (r26374) +- Fix: Calling DoCommandP during the gameloop cleared pending persistent storage changes [FS#5831] (r26371) +- Fix: [Windows] Use a separate event to indicate that the drawing thread has finished initialising, preventing potential deadlocks (r26367) +- Fix: [Windows] Protect the whole video driver from concurrent access (r26366) +- Fix: [Windows] Do not draw the cursor when its sprite is not ready and set _screen.dst_ptr immediately when the buffer changes [FS#5867] (r26365) +- Fix: Writing out of the bounds of the rail type map [FS#5892] (r26364) +- Fix: Reset the default window size icon size just like all the other cached icon sizes [FS#5906] (r26362) +- Fix: ClientSizeChanged is only called via WndProcGdi which already has the mutex [FS#5922] (r26360) +- Fix: Some order options do not combine with others, e.g. go via + full load [FS#5845] (r26357) +- Fix: Protect all VideoDriver_SDL methods with the (now recursive) _draw_mutex (r26351) +- Fix: Make sure link graph jobs can delete themselves after SLA_NULL [FS#5898] (r26347) +- Fix: Call Layouter::ReduceLineCache from GenerateTownName in all cases to keep cache size in check [FS#5870] (r26346) +- Fix: Rewrite SmallStack so that it does not use a pool and is re-entrant (r26343) +- Fix: Reroute cargo when automatic distribution is switched off [FS#5902] (r26341) +- Fix: Do not redraw the link graph overlay if it is empty [FS#5908] (r26338) +- Fix: Some inconsistencies regarding link graph (job) IDs (r26331) +- Fix: The case of rerouting cargo from one VehicleCargoList to another (r26330) +- Fix: Take care of next_station when reassigning from MTA_DELIVER to MTA_TRANSFER [FS#5901] (r26327) +- Fix: when autosaving the message about a save already happening could be shown, even though the code's intention was to not show it [FS#5871] (r26326) +- Fix: Check whether NewGRF change vehicle capacity when they are not supposed to, and truncate cargo appropriately if they are allowed to [FS#5897] (r26317) +- Fix: The giant-screenshot confirmation window only triggered for ridiculously big screenshots, not for ludicrously big ones [FS#5899] (r26314) + + +1.4.0-beta4 (2014-02-06) +------------------------------------------------------------------------ +- Change: [NewGRF] Make vehicle variable 61 return 'not available' instead of zero when using it in invalid callback contexts (r26294) +- Feature: Display speed limit also for road bridges in the TileInfo window [FS#5849] (r26277) +- Fix: [NoGo] Invalid DoCommand return callback for method returning bool (r26298) +- Fix: Correctly identify opposite ends of bridges and tunnels when converting rails [FS#5866, FS#5888] (r26291) +- Fix: Prevent infinite recursion also in RefreshLinks [FS#5878] (r26283) +- Fix: [NoAI] Some RemoveRail methods required to set a valid railtype, though it was not used anyway. Remove the need to set one [FS#5853] (r26279) +- Fix: Do not spawn link graph jobs for link graphs with only one node [FS#5874] (r26276) +- Fix: [NewGRF] If NewGRF provided the same station name for different industry types, stations would end up with same name. So also consider the provided name, not only the industry type (r26275) + + +1.4.0-beta3 (2014-01-21) +------------------------------------------------------------------------ +- Feature: Several small performance improvements with the SSE blitters (r26260, r26259, r26256, r26255, r26254) +- Feature: [NewGRF] Add StringCodes 9A 1B, 9A 1C and 9A 1D to display amounts of cargo (r26244) +- Fix: Do not run into infinite recursion when getting next stopping station [FS#5865] (r26267, r26263) +- Fix: Update smallmap overlay if player joins different company and make sure company masks are valid [FS#5860] (r26266) +- Fix: Do not rebuild the link graph overlay cache twice in a row (r26265) +- Fix: Custom currency was reset on game start (r26262) +- Fix: Possible out of bounds reads with the SSE blitters [FS#5854, FS#5855] (r26247) +- Fix: Do not over reserve after autorefit, but do reserve mail for aircraft (r26236) +- Fix: Decimal and digit separators were swapped for Korean language (r26235) + + +1.4.0-beta2 (2014-01-07) +------------------------------------------------------------------------ +- Feature: Blitter autoselection is now based on full animation state, so a non-animated specialised blitter will generally be chosen when animation is turned off (r26217) +- Feature: Specialised animated SSE4 blitter, and non-animated SSE4.1, SSSE3 and SSE2 blitters, improving the blitting significantly in many situations (r26214, r26213, r26212, r26211) +- Feature: Specialised SSE 4.1 sprite sorter, improving the sorting performance significantly (r26205) +- Fix: Validate everything from ini, obg, obs, obs, ... files [FS#5829] (r26206) +- Fix: Allow refitting at station if cargo has already been reserved (r26187) +- Fix: Visual effects did not work for articulated RV parts (r26180) + + +1.4.0-beta1 (2013-12-24) +------------------------------------------------------------------------ +- Feature: [NewGRF] Vehicle variable 4D for determining the position within an articulated vehicle (r26157) +- Feature: [NewGRF] Invalidate vehicle colour palette when leaving a station [FS#5669] (r26027) +- Feature: [NoGo] New goal type that show a story page when clicked (r26012) +- Feature: Optional filter parameter to the 'content state' console command, to limit the content list to only content where the name match the filter (r26000) +- Feature: When calling the 'content select' console command without args, display all selected content (r25999) +- Feature: XDG base directory support [FS#5385] (r25975) +- Feature: [Script] ScriptTown::GetFundBuildingsDuration (r25969) +- Feature: [Script] ScriptTown::TOWN_GROWTH_NONE to indicate no town growth via ScriptTown::SetGrowthRate and GetGrowthRate (r25968) +- Feature: [NoGo] GSTown::TOWN_GROWTH_NORMAL to reset a town growth rate set previously via GSTown::SetGrowthRate (r25967) +- Feature: [NewGRF Debugging] Inspecting other vehicles in a chain (r25946) +- Feature: [NewGRF] Object property 0x18 to allow specifying the number of objects of that type being placed upon map creation (r25878) +- Feature: [NewGRF] Object property 0x10, bit 13 indicating that object amount scales with water content of map border (e.g. used for lighthouses) (r25874) +- Feature: Highlight active goto item in order list dropdown [FS#5784] (r25859) +- Feature: [Admin] Send info on bankruptcy quarters also in ADMIN_PACKET_SERVER_COMPANY_INFO [FS#5756] (r25845) +- Feature: Increase maximum number of object instances on the map from 64k to about 16M (r25844) +- Feature: Increase the total number of object types from 256 to 64000 (r25835) +- Feature: [NewGRF] Increase the object class limit from 32 to 255 (r25831) +- Feature: Toggle button for wrapping lines in the textfile GUI [FS#5748] (r25816) +- Feature: [NoGo] Game Scripts can now charge fees and give money to companies (r25788) +- Feature: [Script] Allow AIs and GS to found towns. Allow GS to rename towns (r25785) +- Feature: Add keywords to the openttd.desktop.in file (r25783) +- Feature: Sticky and shade buttons for jukebox window [FS#5743] (r25776) +- Feature: Additional layered main toolbar arrangements (r25772) +- Feature: Allow implicit orders even if no explicit ones are given (r25735) +- Feature: [OSX] Pinch gesture support for zooming [FS#4760] (r25666) +- Feature: Split unit localisation choice into a choice per type of unit, and move it to the advanced settings (r25508) +- Feature: Have tractive effort in imperial (lbf) and metric (kgf) units, have weights and volumes in imperial units (short tons, gallons) [FS#5482] (r25508) +- Feature: Differentiate between total waiting cargo count and available (not reserved) cargo count in the station list and sort based on the cargo count, not the cargo value (r25405) +- Feature: Timetable spreading of vehicles by Ctrl+Click when setting a start date (r25377) +- Feature: Allow opening a goal list and story window specific to a company (r25372, r25369) +- Feature: Show cargo by next hops and final destinations in the station GUI (r25365) +- Feature: Consider cargo waiting at other stations for rating at the origin station (r25362) +- Feature: Distribute cargo according to plan given by linkgraph (r25361) +- Feature: [NoGo] GUI for viewing story pages (r25344) +- Feature: Add industry list to scenario editor's map menu (r25335) +- Feature: [NoGo] Allow more concurrent goals in a game (r25299) +- Feature: [NoGo] Goals can now have a progress text and/or be marked as completed (r25296) +- Feature: Allow saving window sizes as default sizes (r25295) +- Feature: Add another button to window title bars to resize the window to its default size (r25294) +- Feature: Save stickyness of windows when Ctrl+Clicking the sticky button (r25292) +- Feature: When opening the object-build window, restore the object build-window to the previous state (r25284) +- Feature: Show the approximate monthly supply to a station of the different cargoes (r25272) +- Feature: [Win32] Driver param for the DirectMusic driver to specify the output port to use [FS#5552] (r25269) +- Feature: Linkgraph overlay over main viewport (r25264) +- Feature: Linkgraph overlay for smallmap (r25262) +- Feature: Display imminent closure of an industry in its view window (r25238) +- Feature: [NewGRF] Expose sprite base of foundation and shore sprites via Action D Game Variables (r25230) +- Feature: [NewGRF] Variable 0x82 for canals and rivers (dike map) (r25229) +- Feature: [Script] ScriptStation::HasRating [FS#5514] (r25150) +- Feature: Add sorting on rating for the town directory window [FS#5288] (r25097) +- Feature: Introduce dropdown for selecting the sort criterion in the town directory window (r25094) +- Feature: Georgian Lari and Iranian Rial as currencies [FS#5212] (r25076) +- Feature: Collapse subtypes in the refit GUI and only expand them after selecting the cargo type (r25044) +- Feature: Only display subtypes in the refit GUI which are available for all selected vehicles. Also add a generic list item to refit while keeping the subtypes of individual vehicles [FS#3764] (r25043) +- Feature: Show the amount of cargo that has already been reserved by full loading vehicles in the station (r25013) +- Change: [NewGRF] Reset the temporary storage registers for every sprite resolving (r26173) +- Change: Improve layout of build-airport GUI [FS#5832] (r26165) +- Change: Make it slightly more clear what ports are coming from where in the debug output when listening (r25997) +- Change: Preselect the current replacement in the right-side list of the autoreplace GUI, instead of selecting the first resp. previous item [FS#5734] (r25919) +- Change: Unify behaviour when clicking on different items in the goto dropdown list when giving orders (r25894) +- Change: Do not offer subsidies for auto-distributed cargo [FS#5766] (r25882) +- Change: Allow to remove unowned objects unless they have the 'unremovable' flag (r25879) +- Change: In scenario editor allow to build all objects which were available at any point in the past to support building scenarios with historic items (r25875) +- Change: Display the cost to upgrade a bridge at the end of bridge that was clicked and not the other end, which could be outside of the screen in some cases (r25854) +- Change: [NewGRF] Lower the limit of airport tile types, house types, industry tile types and object types per NewGRF from 256 to 255 to prevent usage of ID 0xFF in Action3, and thus allowing it to become an extended byte somewhen (r25841, r25839, r25837, r25834) +- Change: Clarify the relevance of the permissible palettes (r25792) +- Change: [NewGRF] Invalidate vehicle recolour palette during (un)loading [FS#5669] (r25648) +- Change: If an editbox is configured to be cleared with ESC, but the editbox is already empty, unselect the editbox instead (r25647) +- Change: Make the bridge and object picker not restore their previous size, but the previously saved size (r25543) +- Change: Right align the infrastructure statistics [FS#5595] (r25515) +- Change: Clarify the meaning of the server advertisement settings (r25252) +- Fix: Unify the time a RV needs to travel through a curve [FS#5831] (r26169) +- Fix: Certain hotkeys crashed the content GUI when the list was empty [FS#5834] (r26167) +- Fix: Backup data of altered persistent storage arrays was freed twice [FS#5830] (r26161) +- Fix: [Script] Various API functions did not check whether ScriptRoad::SetCurrentRoadType was called appropriately [FS#5825] (r26149) +- Fix: [Script] API failed for vehicles with only implicit orders [FS#5824] (r26148) +- Fix: Several fixes found by static code analysis (r26132, r26130-r26097, r26091-r26077, r26073-r26046) +- Fix: Invalidate vehicle colour palette again when rearranging consist, reversing, etc (r26026) +- Fix: [NoGo] Properly validate the range of the growth rate passed to GSTown::SetGrowthRate, instead of masking it to 16 bit (r25966) +- Fix: [Admin] The frame of a command packet was not set for the packets that were sent via the admin interface (r25770) +- Fix: [OSX] The new 10.7 fullscreen code can now also be compiled with older SDK versions [FS#4744] (r25657) +- Fix: Under certain circumstances a track type change would make the end-of-line-is-red setting ineffective [FS#5216] (r25609) +- Fix: Highlight the right entry in the sorting selector in station view window (r25426) +- Fix: Suppress focusing editboxes which are not visible (r25413) +- Fix: Add missing compatibility settings in afterload (r25390) +- Fix: Allow changing GS settings in-game via the AI/GS config window [FS#5507] (r25104) +- Fix: [NewGRF] Do not compare GRF local cargo subtype IDs from different GRFs (r25042) +- Remove: Ordered refit with subtypes, since the cases where it worked were corner cases rather than the general case [FS#3764] (r25041) + + +1.3.3 (2013-11-29) +------------------------------------------------------------------------ +- Fix: Aircraft crashing near the map's border due to a lack of airports could trigger a crash [CVE-2013-6411] [FS#5820] (r26134) + + +1.3.3-RC2 (2013-11-24) +------------------------------------------------------------------------ +- Fix: [Script] Prevent scripts from crashing OpenTTD when they send text with command codes to user editable texts such as sign and station names [FS#5818] (r26093, r26092) +- Fix: Occasional hanging when client joins [FS#5811] (r26043) +- Fix: Multi line text was handled incorrectly causing glitches [FS#5809] (r26037, r26036) + + +1.3.3-RC1 (2013-11-17) +------------------------------------------------------------------------ +- Fix: Crash when the ICU layouter thinks a font is corrupted [FS#5711] (r26029, r26018, r26017, r26016, r26015) +- Fix: Make the installer warning about Windows XP SP3 not trigger on the 64 bit Windows XP which is not really Windows XP to start with [FS#5773] (r26028) +- Fix: Only forward key presses to the IME system if an edit box has the input focus (r26023, r25693, r25691, r25689, r25686, r25684, r25682, r25681, r25667) +- Fix: Having trains miss a platform that is just being modified is less of a problem than having trains stop twice without moving [FS#5684] (r26013) +- Fix: --help text of ./configure for packages that require pkg-config (r26011) +- Fix: The AI/GS library name to use in Import, is not the name given by GetName but GetInstanceName [FS#5662] (r26010) +- Fix: [Windows] Conditional expression with enumeral with non-enumeral type (r26009) +- Fix: Game script showing vehicle on e.g. a goal, then the vehicle being removed and eventually being replaced by a non-user vehicle (most likely smoke) causing an assertion to trigger [FS#5804] (r26007, r26006) +- Fix: Crash when transferring savegame from server to client [FS#5478] (r26005) +- Fix: [OSX] Text input into an edit box would trigger hotkeys [FS#5705] (r26003, r25743, r25671) +- Fix: Comma key collided with F12 key for hotkeys; also remove '+' as that is generally not a key (the '+' on the numpad is a separate one) [FS#5679] (r25973) +- Fix: Rail laying sounds of others could be heard in multiplayer [FS#5665] (r25972) +- Fix: [SDL] Recursive mutex locking when changing blitter [FS#5787] (r25970) +- Fix: The wrong vehicle would be taken in a shared order vehicle list window when the ID >= 65536, causing assertions triggering later on [FS#5800] (r25965) +- Fix: [OSX] Compilation under OSX 10.9 [FS#5797] (r25962, r25951, r25950, r25913) +- Fix: [NewGRF] A powered rail type implies it is compatible as well, but some NewGRF did not state that causing the path reservation code to bail out in some cases because there was no compatible path [FS#5779] (r25961) +- Fix: Temporary persistent storage modifications, e.g. command tests or those from GUI, were not properly reset, creating the possibility of desyncs [FS#5772] (r25956) +- Fix: Train's 'force proceed' status gets reset when the track on the other side of the tile has a signal [FS#5723] (r25955) +- Fix: Wrong signal conversions for savegames from before 0.4.5 [FS#5731, FS#5732] (r25954, r25953) +- Fix: Do not skip numbers when skipping spaces and other sorting 'improving' characters [FS#5719] (r25952) +- Fix: Text direction forcing characters were not filtered out, but shown as ? when ICU was not used for layouting. These are included in chat and console messages to force them to be displayed right [FS#5683] (r25949) +- Fix: NewGRF inspect window in RTL mode (r25943) +- Fix: [NoGo] Preserve the relative town growth progress when changing the town growth rate [FS#5786] (r25931) +- Fix: Several drawing overflows in the signal GUI [FS#5733] (r25929, r25928, r25927) +- Fix: Centre the edit sign window like all query windows (r25918) +- Fix: Initialisation of default objects swapped cost and dates (r25868) +- Fix: Use the actual sprite dimensions for sizing the dropdown arrow of dropdown widgets (r25864) +- Fix: If the child widgets of a NWidgetHorizontal container do not fill the complete container, align them according to text direction [FS#5686] (r25862, r25729) +- Fix: When clearing font cache, also clear layout cache [FS#5737] (r25860) +- Fix: Goto button in order window was not always lowered when it should [FS#5783] (r25858, 25857) +- Fix: Searching for a suitable font failed, if one of the fonts had no '?' glyph, and no baseset is installed [FS#5704] (r25822, r25820) +- Fix: Sprite 0 was considered available, even if no baseset was loaded (r25821) +- Fix: [GS] Language file scanner considered filenames starting with '.' as valid translations, resulting in languages with empty name, which causes trouble [FS#5750] (r25818) +- Fix: [GS] Handle savegames which contain GS translations for languages with empty name more gently [FS#5750] (r25817) +- Fix: [Script] ScriptTile::IsBuildableRectangle could report true for tiles outside of the map, if they happened to wrap around into a valid area [FS#5754] (r25815) +- Fix: [Script] Decoding JSON data with an empty array from Admin port failed (r25809) +- Fix: Ensure the vehicle bar is high enough for the start/stop vehicle graphics [FS#5740] (r25805) +- Fix: Lower sprite and text at the vehicle bar if it is pressed [FS#5739] (r25804) +- Fix: Draw start/stop graphics of the vehicle bar at the right place in RTL mode [FS#5738] (r25803) +- Fix: [NewGRF] Do not allow changing palette when it is set by the NewGRF (r25794, r25793, r25972) +- Fix: Some spelling corrections to Catalan and Latin American town names [FS#5746] (r25775, r25774) +- Fix: If old savegames contain bridges over owned land, keep on drawing the bridges nevertheless [FS#5725] (r25753) +- Fix: Several RTL alignment issues [FS#5692] (r25733, r25732, r25731) +- Fix: NWidgetMatrix used pip_pre and pip_post inconsistently and incorrectly, causing misalignment for RTL [FS#5686] (r25727) +- Fix: Right side of object class string was misaligned (r25726) +- Fix: [OSX] Do not pass -mmacosx-version-min to compilers that do not support it (r25706) +- Fix: Autoreplace/renew also refits free wagons [FS#5700] (r25698) +- Fix: Textbuf caret rendering for complex scripts (e.g. Tamil) (r25696, r25694, r25652, r25651, r25092, r25091) +- Fix: Vehicle::MarkDirty must be called for the front engine [FS#5700] (r25695) +- Fix: [Win32] Several issues regarding conversion of characters (r25677, r25676, r25675, r25674, r25673) +- Fix: [Win32] Handle Unicode characters from outside the BMP correctly (r25672, r25670, r25669, r25668) +- Fix: [OSX] Crash when unhiding the main window [FS#4689] (r25665) +- Fix: [OSX] Bootstrap downloading of a baseset did not work [FS#4847] (r25664) +- Fix: [OSX] Monospace font detection [FS#4857] (r25663, r25662) +- Fix: [OSX] Rework font detection to work even if no default font sprites are present [FS#4847] (r25661) +- Fix: [OSX] The name is OpenTTD, not OTTD (r25660) +- Fix: [OSX] System mouse cursor could become visible during dragging [FS#4420] (r25659) +- Fix: [OSX] The mouse cursor would sometimes jump near the window borders [FS#4392] (r25658) +- Fix: [OSX] The new 10.7 fullscreen code can now also be compiled with older SDK versions [FS#4744] (r25656) +- Fix: [OSX] Mouse cursor was not displayed properly after switching to fullscreen on 10.7+ (r25655) +- Fix: Improve character and word deletion for CJK languages and complex scripts (r25654, r25653) +- Fix: [OSX] Define version constants before they are used (r25643) +- Fix: Some icu_config scripts are too stupid to separate two ldflags by spaces, thus only call it with one (r25642, r25638) +- Fix: Do not suggest a start date for the game when there will be no vehicles available at all (r25640, r25639) +- Fix: City list sort of population and rating are reversed compared to the icon [FS#5666] (r25630) +- Fix: [Script] Give a slightly less generic error when removing nonexistent rail [FS#5651] (r25614) +- Fix: [Script] Do not return ERR_UNKNOWN when trying to move an order to its current location [FS#5648] (r25612) +- Fix: Various misreferences in AI and GS changelog [FS#5649] (r25607) +- Fix: [Script] If a NewGRF returned station type that could not be built by an AI via callback 18, an unknown error would be thrown instead of falling back to the default station [FS#5641] (r25605) +- Fix: Only the front engine's date of last service was updated [FS#5550] (r25604) + + +1.3.2 (2013-07-27) +------------------------------------------------------------------------ +(None) + + +1.3.2-RC2 (2013-07-13) +------------------------------------------------------------------------ +- Fix: [Admin] End-of-rcon data could not be determined reliably for any rcon command [FS#5643] (r25598, r25588, r25587) +- Fix: [Content] When the server closed the connection, the client would for eternity try to read a packet and never timeout making it impossible to reconnect [FS#5635] (r25597) +- Fix: [Script] Changing the script difficulty level in-game would also change the settings using the default even though they were not allowed to change in-game [FS#5644] (r25592) +- Fix: [Admin] Ensure that sent and received length of JSON strings are the same [FS#5646] (r25590, r25589) +- Fix: [Squirrel] Stack overflow did not show an error, due to the stack to throw the error already being full [FS#5320] (r25585) +- Fix: [Script] Documentation implied that XXList::AddItem has a default for value if it is not filled in [FS#5638] (r25579, r25577) +- Fix: Layouter caused significant slowdown with text heavy windows, cache it to make it manageable (r25574, r25570, r25569, r25567, r25564) +- Fix: Make content list appear faster (r25573) +- Fix: Non-ICU layouter started new lines with the space which triggered the linebreak (r25568) +- Fix: If the next order cannot be resolved, reset the current order property instead of leaving it in an intermediate state [FS#5633] (r25562) +- Fix: [Squirrel] Infinite recursion loop in freeing data via a looping set of references [FS#5568] (r25558) +- Fix: One could build bridges over owned land of another company [FS#5524] (r25557) +- Fix: [Script] Texts from scripts were not validated before they were shown, causing an assertion to trigger [FS#5632] (r25555) +- Fix: Provide a warning when no vehicles are available, and tell what to do in that case [FS#5530] (r25553) +- Fix: Possible reading of uninitialised memory due to undefined execution order (r25551) +- Fix: [Windows] Race condition between two drawing threads could crash OpenTTD [FS#5571] (r25550) +- Fix: ICU returns the width of the visual run as if the trailing space was added (in case a newline was added). This caused the width to be more than the requested width, but it would still be drawn correctly [FS#5626] (r25547) +- Fix: Small memory leaks (r25546) +- Fix: [GS] The checks and validations for setting the extra text in the town window became too stringent [FS#5625] (r25544) + + +1.3.2-RC1 (2013-06-30) +------------------------------------------------------------------------ +- Remove: SETX(Y) does not work at all with other than default fonts, so get rid of it (r25454) +- Fix: strndup should not examine strings beyond its upper limit [FS#5621] (r25527) +- Fix: Proper support for Brahmic scripts (e.g. Tamil and Thai) [FS#5481] (r25526, r25525, r25524, r25514, r25513, r25512, r25511, r25501, r25493, r25485, r25483, r25482, r25481, r25478, r25477, r25476, r25474, r25473, r25472, r25471, r25470, r25469, r25468, r25467, r25466, r25465, r25463, r25462, r25455, r25452, r25451, r25450, r25447, r25446, r25445, r25444, r25443, r25442, r25441, r25440, r25439, r25438, r25437, r25436, r25343, r25157) +- Fix: SDL does not give an event when an application gets mouse focus while going to full screen, so manually force the mouse-is-in-window state [FS#5587] (r25523) +- Fix: [NewGRF] When cargo NewGRF define a multiplier to modify vehicle capacities, use the same multiplier to modify loading speed (r25497, r25479) +- Fix: When adding bits to a (train) station, the train trying to stop there could overshoot the (new) stop location and not stop at all [FS#5553] (r25495) +- Fix: The face of the manager differed on clients when the company was started after the clients joined [FS#5610] (r25491, r25490) +- Fix: Do not send encoded texts to names, but decode them into a plain C string and then pass them on [FS#5613] (r25489, r25488) +- Fix: Do not allow control codes in names of things (signs, vehicles, towns, stations, etc), so they have a known maximum fixed size and are, by definition, the same for everyone (r25487) +- Fix: Missing length validation for town and president names in script APIs (r25486) +- Fix: [OSX] OS X SDK versions >= 10.5 always have a non-const iconv declaration (r25480) +- Fix: Disable the depot-refit button in the order GUI, if the consist is not refittable unless it already has a refit order (r25459, r25458, r25457) +- Fix: When town creation failed, removing remnants of the construction failed on protected houses [FS#5603] (r25429) +- Fix: There were two hotkeys to toggle between 'unload' and 'unload if possible' (r25406) +- Fix: The size of station construction windows could oscillate when resizing the window moved the mouse into the window [FS#5596] (r25395) +- Fix: Restrict renaming engines to the server, just like renaming towns (r25394) +- Fix: Loading only 8 bits into a 16 bit variable could cause endianness problems (r25337) +- Fix: Check for zero width space in translations and fail upon finding them [FS#5589] (r25326) +- Fix: [SDL] Keyboard input stopped working after fullscreen toggle [FS#5580] (r25318) +- Fix: Proper size-estimation for numbers with n digits, i.e. not assume a particular number is the widest [FS#5562] (r25314, r25313) +- Fix: Do not focus the editbox in the NewGRF window, if there is no editbox visible (r25307) +- Fix: Game Script APIs that execute a DoCommand were returning the same result as in TestMode during world generation [FS#5561] (r25305) +- Fix: Build railway fences next to objects, even if they are owned by the same company [FS#5565] (r25302) +- Fix: gcc4.6 removed -mno-cygwin option (r25266) + + 1.3.1 (2013-06-01) ------------------------------------------------------------------------ - Fix: When overbuilding a reserved track with a non-track station tile, that tile would remain reserved and eventually trigger a crash upon removal [FS#5540] (r25251) @@ -13,13 +531,13 @@ - Change: Be slightly more lenient with trying to detect a subversion repository in case someone has a sparse tags checkout. In that case the .svn folder misses from the $ROOT_DIR because it is in the $ROOT_DIR/.. (i.e. tags) folder (r25107) - Fix: 'No station' error was given, even when there was a station that way occupied or not yours [FS#5546] (r25243) - Fix: Crash when AI is executing a command as it is bankrupted (removed from the game) [FS#5547] (r25236) -- Fix: Give bridges owned by noone (from bankrupt companies) to the first company which replaces the bridge. Everyone could have removed/rebuild the bridge anyway [FS#5541] (r25231, r25227) +- Fix: Give bridges owned by no one (from bankrupt companies) to the first company which replaces the bridge. Everyone could have removed/rebuild the bridge anyway [FS#5541] (r25231, r25227) - Fix: [NewGRF] Revise when vehicle running sound effects 04, 07 and 08 are played; in depot or tunnel, or when crashed or stopped: No sound. Braking: Effect 08 instead of 07 [FS#5538] (r25226) - Fix: [NewGRF] Play vehicle sound effect also for planes (r25225) - Fix: [NewGRF] cur_speed is only valid for the front engine, so make other engines in the consist use the speed of the front [FS#5534] (r25224) - Fix: [NewGRF] Make tick_counters work the same for vehicles (r25223, r25222) - Fix: [NewGRF] IsCompatibleTrainStationTile() is not a symmetric function. Clarify the parameters and fix the cases were they were swapped (r25221) -- Fix: Consider map border as water with repsect to river/canal continuation (r25220) +- Fix: Consider map border as water with respect to river/canal continuation (r25220) - Fix: [Script] Clarify on which tiles IsDesertTile and IsSnowTile work, i.e. the ones without infrastructure or buildings, and introduce GetTerrainType for the cases where IsDesertTile/IsSnowTile do not work [FS#5537] (r25213) - Fix: The level crossing sound is an ambient sound and not a new year sound (r25200) - Fix: Original train and road vehicle acceleration did no longer respect bridge speed limits [FS#5523] (r25167) @@ -66,7 +584,7 @@ - Change: Cleanup goals and cargo monitors of companies when they go bankrupt or are taken over (r24986) - Change: Apply the same name sorting rules to content and NewGRF list as for the server list (r24983) - Fix: [SDL] Crash after bootstrap download of 32bits base set due to referencing a deleted mutex [FS#5466] (r25017) -- Fix: [SDL] Improve 8bpp hardware palette support. Instead of always requesting SDL_HWPALETTE, it is now only done for 8bp blitters in fullscreen mode (r25003, r25002, r24993) +- Fix: [SDL] Improve 8bpp hardware palette support. Instead of always requesting SDL_HWPALETTE, it is now only done for 8bpp blitters in fullscreen mode (r25003, r25002, r24993) - Fix: Set vehicle's service interval is percent flag appropriately on creation [FS#5137] (r24998) - Fix: When choosing a train in a depot to attach a newly purchased wagon to, do not consider trains currently moving in and out of the depot (r24987) - Fix: [Script] Crash when passing too many parameters [FS#5465] (r24982, r24981, r24980) @@ -207,7 +725,7 @@ - Change: Allow cloning of orders which are unreachable for the destination vehicle if they were already unreachable for the source vehicle [FS#5213] (r24390) - Change: Allow building/modifying/removing signals even if a train is on the belonging track (r24356) - Change: [NewGRF] Make bounding boxes of road vehicles change according to the vehicle length to make alignment easier [FS#5204] (r24331) -- Fix: [NewGRF] Consider regearing-like cargos as no-cargo in cargo filters [FS#5386] (r24848) +- Fix: [NewGRF] Consider regearing-like cargoes as no-cargo in cargo filters [FS#5386] (r24848) - Fix: [NewGRF] Draw NewGRF railtypes in NewGRF station previews (r24840) - Fix: Do not consider blocked rail station tiles that display wires as non-reachable for masking out unnecessary catenary wires (r24837) - Fix: The autorefit dropdown in the order GUI was not always updated when modifying vehicle consists [FS#5396] (r24834) @@ -317,13 +835,13 @@ - Fix: Short vehicles were not properly positioned at the cursor when dragging for RTL languages (r24351) - Fix: EQUALSIZE widget containers within EQUALSIZE containers were initialised with wrong sizes (r24346) - Fix: The cursor in the company password window was not blinking due to wrong magic constants (r24335) -- Fix: [NewGRF] Change the length of 8/8 roadvehicles in vehicle lists to 32 pixels; this is in fact the correct length as can be seen in corners for short articulated parts following each other [FS#2553] (r24332) +- Fix: [NewGRF] Change the length of 8/8 road vehicles in vehicle lists to 32 pixels; this is in fact the correct length as can be seen in corners for short articulated parts following each other [FS#2553] (r24332) - Fix: [NewGRF] Group vehicles in the purchase list properly by source GRF, but also consider engine GRFID overrides [FS#4254] (r24330, r24321) - Fix: Make the AI settings window behave more like the other settings window by closing the query window whenever selecting a different row (r24315) - Fix: Editing NewGRF parameters using the query window showed wrong values, if there was no direct relation between parameter index and parameter register (r24314) -- Fix: Center object previews in 1- and 2-view selectors based on the 4-view selector layout [FS#5057] (r24299) +- Fix: Centre object previews in 1- and 2-view selectors based on the 4-view selector layout [FS#5057] (r24299) - Fix: Increase the left and right margins of the text in the yes/no query window (r24293) -- Fix: [NewGRF] GetReverseCargoTranslation() was unnecessary complicated and also returned the wrong thing for cargos not present in the translation table (r24273) +- Fix: [NewGRF] GetReverseCargoTranslation() was unnecessary complicated and also returned the wrong thing for cargoes not present in the translation table (r24273) - Fix: [NewGRF] Load cargo- and railtype-translation during both reservation and activation stage. That way they can be selected using Action7 depending on present cargo- or railtypes (r24272) - Fix: Use the same colour scheme for the script selection window as in other comparable windows (r24268) - Fix: Make the oilrig-vehicle list accessible to spectators and colour its caption neutrally grey [FS#5126] (r24260) @@ -351,8 +869,8 @@ - Fix: If you consider a settings to potentially cause desyncs via NewGRFs and thus disallow changing it in network games, you should probably also sync it to clients (r24193, r24191) - Fix: Use default value when reading an invalid setting value [FS#5153] (r24192, r24146) - Fix: [Windows] When going to fullscreen and back, restore to the resolution you were, not to the fullscreen resolution (r24189) -- Fix: [Windows] When changing the basics of a window (fullscreen, 8bpp/32bpp), and a window already exists, it was forced out of maximize mode, and its resolution/position was reset, often causing unwanted side-effects [FS#5151] (r24188) -- Fix: Town radii were not updated immediatelly after construction/destruction of houses, resulting in desyncs [FS#5169] (r24183) +- Fix: [Windows] When changing the basics of a window (fullscreen, 8bpp/32bpp), and a window already exists, it was forced out of maximise mode, and its resolution/position was reset, often causing unwanted side-effects [FS#5151] (r24188) +- Fix: Town radii were not updated immediately after construction/destruction of houses, resulting in desyncs [FS#5169] (r24183) - Fix: The population of a town was computed incorrectly for overridden houses when loading a game (r24182, r24181, r24179) - Fix: The object name from property A was not displayed in the object GUI [FS#5110] (r24178) - Fix: The arctic 'shops and offices' used the 'church' sprite in one of its four views [FS#5148] (r24177) @@ -382,7 +900,7 @@ - Fix: Reversing trains while they were entering or leaving a depot could lead to stuck trains [FS#5093] (r24078, r24071) - Fix: The 'last joined' server was not properly selected anymore [FS#5098] (r24070) - Fix: Immediately start querying the last joined server instead of waiting for the requery loop [FS#5097] (r24069, r24062) -- Fix: Make the full snowedness level of houses the same as roads and rails [FS#5121] (r24064) +- Fix: Make the full snowiness level of houses the same as roads and rails [FS#5121] (r24064) - Fix: With certain versions of GCC and compiler flags the compiler could reorder some code badly causing the 32bpp depot flag not working [FS#5125] (r24063) - Fix: Do not freeze aircraft mid-flight when skipping to an out-of-range destination [FS#5123] (r24060) - Fix: Wrong numbering of string parameters causing wrong capacities to be shown [FS#5124] (r24058) @@ -397,9 +915,9 @@ - Feature: Allow display of baseset textfiles (r24037) - Feature: Increase the station class limit from 32 to 256 (r24031) - Fix: After opening a text window with the monospaced font, all other text started glitching (r24038) -- Fix: [NoAI] Reset 'is random' status of temporary variable during saveload as it is not always written to when loading an AI which means it wouldd be taking the 'is random' setting of another AI (r24033) +- Fix: [NoAI] Reset 'is random' status of temporary variable during saveload as it is not always written to when loading an AI which means it would be taking the 'is random' setting of another AI (r24033) - Fix: [NoAI] Make AIEngine::IsArticulated return true if the articulated callback flag is set, do not try to run the callback (r24029) -- Fix: Pass cases down into the list of cargos [FS#5090] (r24024, r24023, r24022) +- Fix: Pass cases down into the list of cargoes [FS#5090] (r24024, r24023, r24022) 1.2.0-RC2 (2012-03-04) @@ -452,7 +970,7 @@ - Fix: [Makefile] Make sure bin/baseset/openttd.32.bmp is removed on make clean (r23908) - Fix: [Makefile] Let 'make clean --dry-run' not delete Makefiles (r23907) - Fix: [Windows installer] OpenMSX got downloaded to and extracted in the wrong (non-existent) folder [FS#5045] (r23905) -- Fix: Memory leak everytime one clicked a savegame in the load GUI (r23901) +- Fix: Memory leak every time one clicked a savegame in the load GUI (r23901) - Fix: [NewGRF] It was not possible to import sounds from a NewGRF later in the load order (r23883) - Remove: PNG sprite loader; use 32bpp sprites in a NewGRF (r23898) @@ -460,7 +978,7 @@ 1.2.0-beta4 (2012-02-04) ------------------------------------------------------------------------ - Feature: [NewGRF] Give NewGRF defined level crossings and rail depots access to the townzone (r23866) -- Feature: [NewGRF] New algorithm (activated via an engine flag) to determine the capacity of vehicles. This allows vehicles to better control the capacity for cargotypes which they know; and let cargo NewGRFs influence the capacity for cargos the vehicle NewGRF does not know, but which the vehicle is refittable to due to cargo classes (r23861) +- Feature: [NewGRF] New algorithm (activated via an engine flag) to determine the capacity of vehicles. This allows vehicles to better control the capacity for cargotypes which they know; and let cargo NewGRFs influence the capacity for cargoes the vehicle NewGRF does not know, but which the vehicle is refittable to due to cargo classes (r23861) - Feature: [NewGRF] Add cargo property 1D to set the capacity multipliers when refitting vehicles, which do not use callback 15 (r23860) - Feature: Allow command line options -e and -g to be combined to load saves/scenarios directly into SE (r23839) - Feature: [NoGo] Allow querying orders of vehicles [FS#4994] (r23837) @@ -477,26 +995,26 @@ - Fix: When removing road or tram from a tram+road stop, the owner of the road stop's cache was updated instead of the owner of the removed infrastructure (r23847) - Fix: Infrastructure count for stations was not updated properly on company takeover. And do not count buoys while loading a game either (r23844) - Fix: Clear NewGRF vehicle cache when their owner changes (r23841) -- Fix: Assertion got hit when destroing a dock when a ship was loading [FS#5000] (r23838) +- Fix: Assertion got hit when destroying a dock when a ship was loading [FS#5000] (r23838) - Fix: If a vehicle is not refittable to any cargo in the CTT, then pick the first refittable cargoslot (r23836) 1.2.0-beta3 (2012-01-21) ------------------------------------------------------------------------ - Feature: [NoGo] Allow to chose the goal question window's title from a (small) set of options [FS#4992] (r23827) -- Feature: [NewGRF] Enhance some fatal NewGRF errors with the spritenumber that caused the problem (r23809) +- Feature: [NewGRF] Enhance some fatal NewGRF errors with the sprite number that caused the problem (r23809) - Fix: Loading empty GS strings/translations failed [FS#4996] (r23829) -- Fix: Return early from SlString() for empty strings, before doing invalid things which surprisingly do not break everything. (r23828) +- Fix: Return early from SlString() for empty strings, before doing invalid things which surprisingly do not break everything (r23828) - Fix: The detailed performance rating window showed the cargo count of the current quarter instead of the last quarter like the tooltip says [FS#4972] (r23826) - Fix: Removal of towns with 0 population failed during map generation [FS#4951] (r23819) - Fix: [Network] Desync due to different NewGRF version at client and server [FS#4962] (r23817) - Fix: [NewGRF] Textstack was not properly used when storing parameters for the error message window [FS#4969] (r23803) -- Fix: Game lobby gui not updated when new company information becomes available [FS#4968] (r23802) +- Fix: Game lobby GUI not updated when new company information becomes available [FS#4968] (r23802) - Fix: Reading the UTF-8 BOM from AI/GS files on big-endian machines failed (r23801) -- Fix: Move 'refitable to' text above custom newgrf text in build vehicle gui [FS#4958] (r23792) +- Fix: Move 'refittable to' text above custom NewGRF text in build vehicle GUI [FS#4958] (r23792) - Fix: [NewGRF] Resize text panel for parameter description if it does not fit in 4 lines [FS#4960] (r23791) - Fix: [NewGRF] While we can only show one error per NewGRF, fatal errors should always disable the GRF. Also give those errors precedence over other information (r23789) -- Fix: [NewGRF] Failure to load newgrf files that use action 0 general prop 15 with a missing language file (r23788) +- Fix: [NewGRF] Failure to load NewGRF files that use action 0 general prop 15 with a missing language file (r23788) - Fix: Crash due to genders used for station name in hangar string of Italian translation [FS#4965] (r23782) - Fix: Under certain circumstances, e.g. a single invalid order, trying to determine the next order state could end up in an infinite loop [FS#4964] (r23781) - Fix: [Network] Missing naming of some errors[FS#4963] (r23780) @@ -536,7 +1054,7 @@ - Fix: Hardcode the original defaults for loading old savegames if they could totally mess with the game's behaviour [FS#4859] (r23693) - Fix: Infrastructure count of canals/locks/ship depots was not updated properly when a company went into bankruptcy or was taken over [FS#4921] (r23686) - Fix: When fitting another engine the cargo capacity of wagons could become lower, causing them to contain more than they should. This caused the cargo transfer from the replaced parts to put even more stuff in the already full wagon. Prevent this from happening by reducing the amount of cargo in the vehicle to the capacity when moving vehicles/wagons around, or when autoreplacing [FS#4912] (r23683) -- Fix: Vehicle numbers got misaccounted when autoreplacing failed due to length checks [FS#4914] (r23681) +- Fix: Vehicle numbers got miscounted when autoreplacing failed due to length checks [FS#4914] (r23681) - Fix: [AI] Prevent removal of the (AI) company the local player is in [FS#4915] (r23680) - Fix: [Script] Close the editbox of settings when changing an AI, to avoid invalid memory read/write (r23678) - Fix: [Script] Invalidate AI Parameters window when changing AI [FS#4909] (r23677) @@ -585,7 +1103,7 @@ - Feature: [NewGRF] House variable 0x64 (r23070) - Feature: [NewGRF] Long date of last service for vehicles, also available in the purchase list (r23068) - Feature: A -q command line option to read a savegame, write some general info and exit (r23065) -- Feature: [NewGRF] stringscodes 9A 19 and 9A 20 to print 'short volume' and 'short weight' respectively (r23063) +- Feature: [NewGRF] stringcodes 9A 19 and 9A 20 to print 'short volume' and 'short weight' respectively (r23063) - Feature: [NewGRF] Allow use of NewGRF text stack during callback 23 (r23040) - Feature: Support company colour for the airports' runways [FS#4797] (r23010) - Feature: [NewGRF] Allow to use offsets for all types of action5 except sea shores [FS#4795] (r23004) @@ -600,7 +1118,7 @@ - Feature: [NewGRF] Extended Action1 format to define arbitrary spriteset IDs (r22926) - Feature: [NewGRF] Allow referencing spritesets from different Action1 in a single Action2 (r22925) - Feature: Allow towns to build bridges over canals and rivers (r22899) -- Feature: Resize the tree build gui to according to tree size (r22862) +- Feature: Resize the tree build GUI to according to tree size (r22862) - Feature: Conditional order depending on remaining lifetime of a vehicle (r22858) - Feature: [NewGRF] Allow replacing depot sprites without having to provide rail overlays (r22854) - Feature: Display separate ocean and canal speeds in the ship purchase list, if they differ (r22850) @@ -614,7 +1132,7 @@ - Feature: [NewGRF] Implement feature 04 property 18 bit 5 (r22746) - Feature: [NewGRF] Per vehicle custom cargo ageing period (r22713) - Feature: Display option to hide competitors' signs and station names [FS#4701] (r22708) -- Feature: Add a menu entry for the sprite bounding box debuging feature in the help menu and enable bounding boxes only in conjunction with the NewGRF developer tools (r22675) +- Feature: Add a menu entry for the sprite bounding box debugging feature in the help menu and enable bounding boxes only in conjunction with the NewGRF developer tools (r22675) - Feature: [NewGRF] Provide random bits in var 0x10 for callback 0x3B in all cases [FS#4690] (r22673) - Feature: Do not spawn explosion effects when bulldozing in paused mode. They block the view (r22670) - Feature: [NewGRF] Support for the land slope check callback for stations (r22659) @@ -661,8 +1179,8 @@ - Change: [NewGRF v8] Do no longer apply base cost fallbacks (r23139) - Change: [NewGRF v8] New result format for callback 16 (r23137) - Change: [NewGRF v8] Deprecate old-style callback results 0xFF?? (r23136) -- Change: Open the query string window centered as it (almost) always requires your attention [FS#4825] (r23130) -- Change: [NewGRF] Enforce that the default cargo type of a vehicle is one of the refittable cargos in case of refittable engines (r23077) +- Change: Open the query string window centred as it (almost) always requires your attention [FS#4825] (r23130) +- Change: [NewGRF] Enforce that the default cargo type of a vehicle is one of the refittable cargoes in case of refittable engines (r23077) - Change: Use the currency -> euro conversion rate for currencies that have been replaced with the euro, so when the switch happens the conversion rate at that point is roughly that of the real world conversion rate (r23056) - Change: Disable palette animation for pixels with alpha, as the alpha and previous colour information will be lost when the palette is animated (r23016) - Change: More suitable default news settings instead of everything on 'full' (r22897) @@ -683,12 +1201,12 @@ - Fix: Clear the backed up orders of a removed station as well, otherwise one could create orders to a station that was never in the original backupped orders. For example a road vehicle trying to go to a buoy [FS#4876] (r23464) - Fix: Do not assume all industries that cut trees have tile (0,0) and wait until all tiles of an industry are completed before starting to cut trees (r23458) - Fix: Mark company window dirty when moving a rail engine creates or deletes a train (r23454) -- Fix: Some airport functions did not take the layout into account resulting in wrong noise levels or nearests towns [FS#4764] (r23441) +- Fix: Some airport functions did not take the layout into account resulting in wrong noise levels or nearest towns [FS#4764] (r23441) - Fix: Perform checks for NFORenum/GRFCodec in configure, including a version check so a proper error can be given when a too old GRFCodec or NFORenum is used [FS#4867] (r23438) - Fix: Recolouring of some animated colours from the Windows (=least consistent) palette went wrong [FS#4868] (r23433) - Fix: Prevent windows to be resized beyond the bounds of the (main) window [FS#4842] (r23429) - Fix: [NoAI] The AIEvent.ET_COMPANY_NEW was only triggered if a company named itself, which seems like a very odd place to do so. Trigger it when the company is created instead (r23398) -- Fix: Bring some more order in the ordering of the windows, e.g. do not let a save or load dialog get hidden by a news message [FS#4709] (r23336) +- Fix: Bring some more order in the ordering of the windows, e.g. do not let a save or load dialogue get hidden by a news message [FS#4709] (r23336) - Fix: Road vehicle purchase info failed to display vehicles carrying no cargo [FS#4820] (r23334) - Fix: Abort building/moving HQ when clicking on the button again, just like when building rail, stations, etc [FS#4851] (r23331) - Fix: Change the centre of train vehicles to depend on the vehicle length instead of being fixed at 4/8th of the original vehicle length to make sure shortened vehicles do not block tiles they should not block [FS#2379,FS#3569] (r23290) @@ -753,7 +1271,7 @@ - Fix: [NewGRF] Do not call CB 32 for disaster, effect vehicles or aircraft shadows/rotors (r22947) - Fix: [NewGRF] Crash when accessing vehicle var 44 for a non-front aircraft [FS#4781] (r22946) - Fix: Calculate the size of the start/stop vehicle button correctly (r22941) -- Fix: [OSX] Various MacOSX 10.7 issues causing OpenTTD to not work [FS#4751] (r22921, r22895, r22893, r22889) +- Fix: [OSX] Various OSX 10.7 issues causing OpenTTD to not work [FS#4751] (r22921, r22895, r22893, r22889) - Fix: [NewGRF] Properties for feature 0x05 were not zeroed for each NewGRF, thus waterfeatures could glitch when the properties were set by a previous NewGRF and the NewGRF assumed the properties to be unmodified (r22918) - Fix: Old TTO/TTD savegames could get non-stop via orders upon savegame loading, even when those orders did not exist back then. This 'conversion' feature is something for TTDPatch and old OpenTTD savegames [FS#4716] (r22914) - Fix: The icon would (almost) never be shown for SDL builds [FS#4617] (r22910) @@ -790,7 +1308,7 @@ - Fix: [NewGRF] Invalid memory access when querying the grfID of the default objects [FS#4730] (r22757) - Fix: When marking tile selections dirty, use the height information of the corners instead of the surface slope. This is more accurate when the foundation is kind of undefined [FS#4727] (r22755) - Fix: Make aircraft point to the exit when leaving the hangar [FS#4696] (r22743, r22742, r22741) -- Fix: Display the size of the leveled platform in the measurement tooltip of terraforming operations [FS#4708] (r22740, r22739) +- Fix: Display the size of the levelled platform in the measurement tooltip of terraforming operations [FS#4708] (r22740, r22739) - Fix: Setting company passwords via the GUI on servers (including starting a company with the default password) failed, so no client could join that company [FS#4722] (r22738) - Fix: [NewGRF] The construction stage sprites were incorrectly selected in cases other than 1 or 4 sprites per set (r22731) - Fix: [NoAI] AITile::GetCargoAcceptance, AITile::GetCargoProduction and AIRail::BuildNewGRFRailStation did not check the cargo argument for validity (r22726) @@ -809,11 +1327,11 @@ 1.1.2-RC2 (2011-07-30) ------------------------------------------------------------------------ - Fix: Cost of adding an extra road type to a bridge or tunnel was undercalculated [FS#4680, FS#4681] (r22700, r22699) -- Fix: Only insert cleared object tiles into _cleared_object_areas if clearing actually succeeds, else subsequential tests of the same tile will be skipped and considered successful [FS#4694] (r22698) +- Fix: Only insert cleared object tiles into _cleared_object_areas if clearing actually succeeds, else subsequent tests of the same tile will be skipped and considered successful [FS#4694] (r22698) - Fix: When building a house it could be built at the wrong place if multitile houses failed some tests (r22697) - Fix: [Network] Failed network address resolving could trigger temporary freezes [FS#4697] (r22696, r22695) - Fix: [NewGRF] The override managers were not reset in some cases like creating a new scenario [FS#4691] (r22693) -- Fix: [NewGRF] Aircrafts defined with IDs above the default aircrafts always defaulted to passenger cargo (r22690) +- Fix: [NewGRF] Aircraft defined with IDs above the default aircraft's always defaulted to passenger cargo (r22690) 1.1.2-RC1 (2011-07-24) @@ -834,7 +1352,7 @@ - Fix: Do not zero the orders of disaster vehicles when converting savegames [FS#4642] (r22625) - Fix: When closing an AI company the local player cheated to, we need to cheat him to another company [FS#4654] (r22624, r22623) - Fix: When closing down companies their shares in other companies must be sold even if share trading is disabled at that point of time (r22622) -- Fix: When asking the user to confirm an unsafe unpausing, there is no need to execute a command if 'no' is choosed. This also prevents crashing when clicking unpause while the confirm window is shown (r22621) +- Fix: When asking the user to confirm an unsafe unpausing, there is no need to execute a command if 'no' is chosen. This also prevents crashing when clicking unpause while the confirm window is shown (r22621) - Fix: Enforce refit orders to be 'always go to depot' orders; service-only and stop-in-depot orders make no sense with refitting [FS#4651] (r22620) - Fix: Consider the size of the vehicle sprite for the lineheight in the company GUI. This also makes the widget containing the sprite not skip drawing it, if the bounds of the widget are outside of the drawing area though the sprite actually needs drawing [FS#4662] (r22619) - Fix: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly [FS#4653] (r22618, r22617) @@ -858,7 +1376,7 @@ - Fix: Callback result for airport layout name was incorrectly used (r22496) - Fix: Airport preview sprite can depend on the layout, so update the cached SpriteID when the layout changes (r22494) - Fix: Engine IDs for coal and mail wagons were swapped in the TTO savegame conversion [FS#4622] (r22487) -- Fix: The caption of centered windows could be moved out of the main window and thus become inaccessible when resizing the main window (r22485, r22484) +- Fix: The caption of centred windows could be moved out of the main window and thus become inaccessible when resizing the main window (r22485, r22484) - Fix: No client error packet was sent to the admin bots [FS#4585] (r22384) @@ -875,7 +1393,7 @@ - Change: Show one digit of the fractional train length in the depot (r22336, r22305, r22304, r22303) - Fix: When determining the executable path failed, the working directory was used instead, circumventing the not-home-directory check [FS#4613] (r22465) - Fix: [Windows] Prevent a crash when launching OpenTTD with -d from a MSYS console [FS#4587] (r22464) -- Fix: Update the saveload window immediatelly after scanning a new directory, so queued events reach the window when already updated [FS#4615] (r22463) +- Fix: Update the saveload window immediately after scanning a new directory, so queued events reach the window when already updated [FS#4615] (r22463) - Fix: [NewGRF] The c and p parts of station vars 40, 41 and 49 were incorrect for large stations (r22455, r22286) - Fix: [NewGRF] Zero register 0x100 as specified before resolving custom station foundations (r22452) - Fix: Do not 'log' the NewGRFs in the screenshot when in the menu [FS#4610] (r22450) @@ -938,7 +1456,7 @@ - Fix: Windows video driver crashed when it could not go to full screen at the resolution of the configuration file when starting OpenTTD [FS#4521] (r22149) - Fix: Do not run savegame conversion during SlNullPointers; the pointer might not be converted or be NULL at that point (r22146) - Fix: Some valid keycodes were ignored along with the invalid ones (r22142) -- Fix: When commands need to invalidate windows, process these events asynchronously before the next redraw. Calling window code directly from command scope uses wrong _current_company and might issue nested DoCommands() which interfer with the running command [FS#4523] (r22141, r22140, r22135, r22134) +- Fix: When commands need to invalidate windows, process these events asynchronously before the next redraw. Calling window code directly from command scope uses wrong _current_company and might issue nested DoCommands() which interfere with the running command [FS#4523] (r22141, r22140, r22135, r22134) - Fix: [NewGRF] Skipping only the invalid part of an action14 failed, the rest of the action was skipped instead (r22138) - Fix: Spectators had crashes when closing buoy windows (r22131) - Fix: Build-station-window showed wrong selection when reopening [FS#4530] (r22128) @@ -958,7 +1476,7 @@ - Feature: Wheel scrolling in the console (r21982) - Feature: Console command to reset the engine pool. It removes the traces of engines which are no longer associated to a NewGRF, and can be used to e.g. 'fix' scenarios which were screwed up by the author. You can only use it when there are no vehicles in the game though (r21975) - Feature: Add a setting to enable/disable funding local road reconstruction (r21974) -- Feature: Introduce 'minimal' number of industries as a replacment for the old 'none' setting in the new game window (r21969) +- Feature: Introduce 'minimal' number of industries as a replacement for the old 'none' setting in the new game window (r21969) - Change: When loading old savegames with long trains set the maximum train length to the length of the longest train (r22061) - Change: Always report mammoth trains are disabled to NewGRFs, and allow the maximum train length to be modified in multiplayer as well [FS#4471] (r22004) - Fix: Remove invalid keycodes when reading hotkeys.cfg [FS#4510] (r22094) @@ -1012,7 +1530,7 @@ - Change: [NewGRF] Disable the flipping of train engines/wagons in the depot by default for NewGRFs [FS#4462] (r21966) - Change: Show the length of vehicles in tiles, instead of half tiles in the depot (r21960) - Change: Replace longbridges settings with custom maximum bridge and tunnel length setting (r21959) -- Change: Randomize the vehicle a small UFO targets, do not use the one with lowest index (r21949) +- Change: Randomise the vehicle a small UFO targets, do not use the one with lowest index (r21949) - Fix: Do not count the number of vehicles but the length of vehicles to (configurably) limit train length [FS#4461] (r21960) - Fix: [NewGRF] Reset the carry flag every 4 bytes in Action 6 when adding more than one variable (r21951) - Fix: Road vehicle was moved under the bridge when it was destroyed by an UFO while on a bridge (r21948) @@ -1022,7 +1540,7 @@ - Fix: Do not remove existing road/tram bits when overbuilding stops of the opposite road type [FS#4457] (r21936) - Fix: Allow to overbuild road stops which are built over trams (r21935) - Fix: Automatic orders behave now stable wrt. service orders and are not added or removed depending on the need of servicing [FS#4440] (r21933) -- Fix: The town window would not be invalidated in the scenario editor if the ground changed and thus the required cargos for town growth [FS#4554] (r21929) +- Fix: The town window would not be invalidated in the scenario editor if the ground changed and thus the required cargoes for town growth [FS#4554] (r21929) - Fix: Converting an expensive rail type to a cheap one could give more money than removing and rebuilding cost (r21919) - Fix: Languages improperly sorted in the 'start server' window [FS#4443] (r21918) - Fix: The minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to 'fail'. Make sure that the minimum speed always overrules the maximum speed [FS#4442] (r21916) @@ -1049,7 +1567,7 @@ - Feature: After building a road or tram bridge/tunnel, connect it to any existing road or tram (r21778, r21777) - Feature: Display NewGRF object sprites during object picking (r21772) - Feature: Display NewGRF station sprites during station picking (r21755) -- Change: Allow LMB scrolling with the mouse outside of the extra viewport instead of canceling scrolling when going slightly over the edge (r21838) +- Change: Allow LMB scrolling with the mouse outside of the extra viewport instead of cancelling scrolling when going slightly over the edge (r21838) - Change: Only show rail/road types that will eventually be available in-game. For example do not show trams when there is no tram NewGRF loaded (r21817) - Change: Keep aqueducts and road/tram tunnels and bridges after removing a company (r21780) - Fix: Distant-join station would build at the wrong location when having persistent building turned on and selecting a 'second' location for the station tile [FS#4430] (r21864) @@ -1061,7 +1579,7 @@ - Fix: Crash with the small map window on big endian platforms [FS#4417] (r21830) - Fix: The expectations from the 'always build infrastructure' setting name/description did not match the behaviour [FS#4007] (r21826) - Fix: Allow dragging of combo signals (again) [FS#4378] (r21816) -- Fix: [YAPF] Apply a pathfinder penalty for back of one-way path signals so those arenot preferred over other possibilities [FS#3908] (r21815) +- Fix: [YAPF] Apply a pathfinder penalty for back of one-way path signals so those are not preferred over other possibilities [FS#3908] (r21815) - Fix: Check GRF version from action 8, and disallow usage of GRFs with versions above 7 (r21814) - Fix: Crash when displaying the owner view [FS#4411] (r21813) - Fix: Do not create automatic orders when there are no manual orders, and remove unreached automatic orders when reaching an ordered waypoint or depot [FS#4404] (r21809, r21808) @@ -1084,7 +1602,7 @@ ------------------------------------------------------------------------ - Feature: Configurable limit amount of tiles that can be cleared/terraformed by a company [FS#4331] (r21728) - Feature: Show a list of companies in the owner legend and allow them to be toggled for visibility (r21720, r21718) -- Feature: Console command 'list_ai_libs' to get a list of recognized AI libraries [FS#4372] (r21703) +- Feature: Console command 'list_ai_libs' to get a list of recognised AI libraries [FS#4372] (r21703) - Feature: Allow changing the AI configuration in the scenario editor / in game [FS#4362] (r21696) - Change: Tune 'realistic' acceleration even more to make more trains reach their top speed, and make it behave more like TTDPatch (r21712) - Change: Display the minimum height of the tile in the LandInfo window instead of the height of the northern corner. So it is more useful for NewGRF and AI developers, and maybe more transparent for players (r21711) @@ -1118,7 +1636,7 @@ - Fix: Autofill timetable had side effects in test mode, possibly causing desyncs in MP [FS#4354] (r21660) - Fix: Cargo payment graph was not properly invalidated when payment rate changed [FS#4351] (r21658) - Fix: Use a bool instead of uint8 to store a bool and use the dedicated accessor function when reading boolean settings [FS#4345] (r21656) -- Fix: Infinite loop in the road pathfinder due to bouncing around in an 'one way' trap; two one ways pointing towards eachother making it impossible to leave [FS#4338] (r21651) +- Fix: Infinite loop in the road pathfinder due to bouncing around in an 'one way' trap; two one ways pointing towards each other making it impossible to leave [FS#4338] (r21651) - Fix: Make '[centre|main] view' consistent, and make '[main|global] view' consistent [FS#4339] (r21650) - Fix: Newly created skip-to order was created at wrong place (r21633) - Fix: Ships with the old pathfinder would easily show up as lost, even when it would eventually find a path. Now also the distance from the 'end' of the pathfinding run to the destination is compared to the current distance to the destination; if the distance to the destination at the end of the pathfinder run is less than the current distance from the destination the ship will not be marked as lost. This means that the ships with the old pathfinder will less likely get marked as lost, but due to the design of the old ship pathfinder there 'lostness' is merely a best guess. When you still get a lost message you need to build buoys to guide the ship pathfinder [FS#4325] (r21631) @@ -1131,7 +1649,7 @@ - Feature: [NewGRF] Variable 7B for accessing 60+x variables while taking the parameter from the accumulator (r21604) - Feature: Allow to refit only the selected part of a train consist (r21567) - Feature: Store the used OpenTTD version, base graphics set, NewGRFs and AIs in the PNG screenshots (r21558, r21553) -- Feature: Make the delay of the chat messages timing out unrelated to the number of passed game days, i.e. do not stop aging chat messages when the server is paused, and make the timeout user configurable [FS#532] (r21513, r21512) +- Feature: Make the delay of the chat messages timing out unrelated to the number of passed game days, i.e. do not stop ageing chat messages when the server is paused, and make the timeout user configurable [FS#532] (r21513, r21512) - Feature: Vehicle lost messages for ships and road vehicles [FS#1956] (r21511, r21510) - Feature: Diagonal tile clearing and terraforming by pressing Ctrl [FS#730] (r21500) - Feature: [NewGRF] Use the station graphics property to determine a fallback for the depot sprites [FS#4279] (r21473) @@ -1163,7 +1681,7 @@ - Feature: Chat directly to the server or a bot/admin/IRC channel monitoring the server (r21000) - Feature: Remote administration (r20975-r20963) - Feature: [NewGRF] The concept of minimum loadable version to NewGRFs when choosing compatible NewGRFs (r20960, r20958) -- Feature: Center new extra viewports on the tile below the mouse. Only center on center of main viewport if mouse is not in any viewport (r20956) +- Feature: Centre new extra viewports on the tile below the mouse. Only centre on centre of main viewport if mouse is not in any viewport (r20956) - Feature: [NewGRF] Make it possible to distinguish player built/randomly placed industries in the location and land slope check callbacks (r20942) - Feature: Highlight all destination tiles when building a lock [FS#4153] (r20932) - Feature: Transfer orders imply 'leave empty' by default [FS#3905] (r20927) @@ -1189,7 +1707,7 @@ - Feature: Allow horizontal resizing for all vehicle lists [FS#3955] (r20174) - Feature: [NewGRF] Information (var 4A) about the current railtype a train is on (r20165) - Feature: Tooltips are shown by hovering the mouse over a widget instead of by right clicking on it [FS#3913] -- Feature: Customizable hotkeys (r20055) +- Feature: Customisable hotkeys (r20055) - Feature: Wrap console lines when they are too long [FS#3816] (r20046) - Feature: [NewGRF] Variable 43 depot build date for railtypes [FS#3886] (r20003) - Feature: Show some savegame details when selecting items in saveload GUIs (r19984) @@ -1207,8 +1725,8 @@ - Feature: Graphs with negative values are no longer forced to have the zero axis in the middle, resizeable graphs (r19662, r19631) - Feature: [NewGRF] Support callback 36 for aircraft speed also in the build menu (r19660) - Feature: Add an input box to the AI Debug window where you can input a break string [FS#3496] (r19544) -- Feature: Add buttons to enable/disable all cargos at the cargo payment rates graph (r19542) -- Feature: Sort industries alphabetically at the smallmap legend, fund industry list; sort cargos alphabetically at cargo payment graph, build vehicles cargo filter dropdown, station ratings and refit options (r19541, r19540, r19436, r19535, r19522, r19503) +- Feature: Add buttons to enable/disable all cargoes at the cargo payment rates graph (r19542) +- Feature: Sort industries alphabetically at the smallmap legend, fund industry list; sort cargoes alphabetically at cargo payment graph, build vehicles cargo filter dropdown, station ratings and refit options (r19541, r19540, r19436, r19535, r19522, r19503) - Feature: Console command 'reload_newgrfs'; only available when NewGRF developer tools are enabled (r19515) - Feature: Enter the starting year in the scenario editor by clicking at the date panel (r19397) - Feature: Configurable slope steepness for road vehicles from 0% to 10%, default is 7% (r19346) @@ -1220,7 +1738,7 @@ - Add: Support for MSVC 2010 (r20032) - Add: [NoAI] AIIndustry::GetIndustryID(TileIndex) (r19773) - Change: Make it possible to start actions that require selecting stuff (landscaping, vehicle cloning, etc) in the viewport while paused. As side-effect you will get an error message explaining the command cannot be executed because the game is paused instead of seemingly nothing happening when you click. Additional side effect of this is that you can make use of the measurement tooltip while paused [FS#4292] (r21480) -- Change: Make building aqueducts behave more like building tunnels. They cannot be built on flat (or foundationed) tiles, so there is at most one destination tile like there is only one for tunnels [FS#4153] (r21471) +- Change: Make building aqueducts behave more like building tunnels. They cannot be built on flat (or foundation) tiles, so there is at most one destination tile like there is only one for tunnels [FS#4153] (r21471) - Change: Place the bridge building window under the mouse instead of somewhere randomly on the screen and change the default sort order [FS#3975] (r21460) - Change: Make sure the client is listening, or rather receiving, our frames (r21361) - Change: Read some metadata from (official) source tarballs so you will more likely get the right version/revision out-of-the-box (r21351) @@ -1291,7 +1809,7 @@ - Fix: Aircraft speed would ignore callback 36 result when it is greater than the engine speed (r21094) - Fix: [OSX] Mouse cursor would leave footprint with 8bpp blitter when switching to full screen (r21037) - Fix: [OSX] Properly set the palette when using the 8bpp blitter during start-up (r21036) -- Fix: Center industry gui and waypoint gui after resize [FS#4171] (r21021) +- Fix: Centre industry gui and waypoint gui after resize [FS#4171] (r21021) - Fix: Draw bridge pillars with correct length on all tile corners by drawing only half of the pillar sprite if required (r20950, r20947) - Fix: Accidentally moving the mouse of the scrollbar arrows while pressing it clicks the button next to the arrow [FS#4071] (r20922) - Fix: Refit costs were not shown for long cargo names [FS#4160] (r20921) @@ -1327,7 +1845,7 @@ - Change: Make OpenTTD aware of XZ/LZMA compressed savegames so loading those gives a proper error message (r21047) - Change: Make it possible to make .tar.xz bundles (r21042) - Fix: Missing default values for the custom town number in the world generation options (r21034) -- Fix: Dropdown menu glitched in small screenshots, when issueing them from the menu (r21031) +- Fix: Dropdown menu glitched in small screenshots, when issuing them from the menu (r21031) - Fix: Do not let the resize button go past the bottom of the screen [FS#4176] (r21015) - Fix: The detailed performance rating window could be too narrow [FS#4102] (r21010) - Fix: For the compact notation 1.000.000k and 1.000M would be shown depending on the initial (and later rounded) value. Make everything that would round to 1.000.000k be drawn as 1.000M as well (r21009) @@ -1402,7 +1920,7 @@ - Fix: PBS reservations were always displayed on halftile foundations if the railtype uses overlays [FS#4013] (r20408) - Fix: Make the default minimum width for editboxes 10 pixels to prevent crashes [FS#4010] (r20394) - Fix: Prevent buying more vehicles than allowed or buying companies when you'd get too many vehicles [FS#3993] (r20393, r20392, r20391, r20390) -- Fix: Initialize fund-industry buttons when opening window (r20386) +- Fix: Initialise fund-industry buttons when opening window (r20386) - Fix: Update cursor dimensions when reloading grfs resp. changing base graphics, so the cursor does not glitch if it becomes bigger (r20384) - Fix: Stop vehicle following after zooming out [FS#3989] (r20361) - Fix: [NoAI] Ship depots were constructed along the wrong axis [FS#4004] (r20348) @@ -1477,7 +1995,7 @@ 1.0.2-RC1 (2010-06-05) ------------------------------------------------------------------------ - Feature: Translated desktop shortcut comments (r19884) -- Change: Name invalid engines, cargos and industries 'invalid', if the player removed the supplying NewGRFs, hide invalid engines from the purchase list (r19879, r19877) +- Change: Name invalid engines, cargoes and industries 'invalid', if the player removed the supplying NewGRFs, hide invalid engines from the purchase list (r19879, r19877) - Fix: When 'pause on new game' is set, pause the game before CleanupGeneration() to avoid conflicts with concurrent GUI code [FS#3857] (r19934) - Fix: Pay for the rail/road when constructing tunnels, bridges, depots and stations [FS#3859, FS#3827] (r19925, r19887, r19881) - Fix: Closing chatbox could cause glitches when news message was shown [FS#3865] (r19921) @@ -1508,7 +2026,7 @@ - Fix: Make sure the chat area fits in the default window size; if you want it larger, you can always change/override it in the config file [FS#3798] (r19751) - Fix: [NewGRF] Industry var 0x43 is not 'safe' during callbacks 22 and 38 either (r19750) - Fix: [NewGRF] Possible divide-by-zero if a NewGRF checked industry var 42 while the production level was 0 (r19749) -- Fix: Do not recenter usually centered windows when resizing main window or changing language, if they have been moved/resized before [FS#3675] (r19746) +- Fix: Do not recenter usually centred windows when resizing main window or changing language, if they have been moved/resized before [FS#3675] (r19746) - Fix: The GUI is controlled by _local_company, not _current_company (r19745) - Fix: NewGRFs could access map bits of not yet constructed industries and houses during construction callbacks (r19748, r19743) - Fix: [NewGRF] Passing some invalid data to industry variable 67/68 could cause a crash (r19713) @@ -1529,7 +2047,7 @@ 1.0.1-RC2 (2010-04-22) ------------------------------------------------------------------------ - Fix: Desync when joining the game because of using the wrong variable (r19687) -- Fix: Truncated archives were not detected when using zlib 1.2.3. This also fixes zlib 1.2.4 compatibility, zlib 1.2.5 is bugfree (r19686) +- Fix: Truncated archives were not detected when using zlib 1.2.3. This also fixes zlib 1.2.4 compatibility, zlib 1.2.5 is bug free (r19686) - Fix: Towns with 3x3 and 2x2 road layouts could not expand (r19683) - Fix: When joining a MP game all clients with company ID > 0 would be shown as if they were a spectator [FS#3775] (r19680) - Fix: Client status was shown incorrect in the console (r19678) @@ -1624,7 +2142,7 @@ - Feature: [NewGRF] Add CB36 support for aircraft properties 0F and 11 (r19218) - Feature: Scroll to current order destination when ctrl+clicking the start/stop bar (r19216, r19215) - Feature: Concept of fallback base sets, i.e. do not automatically load the NoMusic/NoSound sets when there is another set; make NoSound part of base installations (r19214, r19213, r19212, r19211, r19206) -- Feature: Support for genders for cargos, industries, vehicles, stations (r19180, r19179, r19178, r19177) +- Feature: Support for genders for cargoes, industries, vehicles, stations (r19180, r19179, r19178, r19177) - Change: Increase the default small font size for freetype fonts as 6 point fonts are usually unreadable [FS#3655] (r19308) - Change: [NewGRF] Railtype cost factor from byte to word value (r19306) - Change: Improve error message with track building when signals are in the way (r19190, r19189) @@ -1649,7 +2167,7 @@ - Fix: When selecting 'build many industries' in the scenario editor the 'build' button was not enabled [FS#3632] (r19176) - Fix: Buoys are no Stations, only BaseStations (r19174) - Fix: Under some circumstances timidity (via extmidi) would not shut down properly causing all kinds of trouble (e.g. blocked audio output). Try harder to shut down timidity and first shut down the music so shut down order is the inverse of initialisation order (r19168) -- Fix: Industry 0 could be choosen even if not available [FS#3631] (r19167) +- Fix: Industry 0 could be chosen even if not available [FS#3631] (r19167) - Fix: Vehicle running costs should not be changed in a running game [FS#3629] (r19165) @@ -1732,7 +2250,7 @@ - Feature: [NewGRF] Implement VarAction2Houses variables 66 and 67 (r18736) - Change: [SDL/Allegro] Make the number of samples/frequency runtime configurable (r18821, r18820) - Change: Be consistent with airport naming [FS#3493] (r18819) -- Change: [NewGRF] Consider callback 19 only broken after subcargos 0 to 255 have been used, instead of stopping at 15 (r18774) +- Change: [NewGRF] Consider callback 19 only broken after subcargoes 0 to 255 have been used, instead of stopping at 15 (r18774) - Change: Replace MiniLZO with the real library (r18769) - Fix: Town noise population settings could not be changed in-game [FS#3532] (r18864) - Fix: Do not pass AI strings through iconv [FS#3544] (r18862) @@ -1747,17 +2265,17 @@ - Fix: [NoAI] NoAI's custom implementation of DoCommandP has several flaws (not masking of bits, not resetting town authority updates on checks/estimates, ...). Let it use DoCommandPInternal, DoCommandP without showing error messages and such, instead [FS#3507] (r18786) - Fix: [NoAI] AIs did update their last cost incorrectly in network games if the cost of the DC_EXEC phase differed from the ~DC_EXEC phase (r18781) - Fix: [YAPP] Remove a special check for two-sided signals when reserving a path as this causes trains to get stuck in front of them [FS#3483] (r18778) -- Fix: Assertions because the unloading and signal wait counter got into eachother's way [FS#3422] (r18764) +- Fix: Assertions because the unloading and signal wait counter got into each others way [FS#3422] (r18764) - Fix: [NewGRF] Spritelayouts do not need an Action 1 if only using default sprites [FS#3497] (r18761) - Fix: [NewGRF] Action 9 did not properly detect whether an Action 8 was encountered already [FS#3500] (r18760) - Fix: [NewGRF] Do not segfault when a NewGRF contains an Action 2 and Action 3 but no Action 0 (r18759) - Fix: [NewGRF] CircularTileSearch skipped a few tiles close to the starting tile, as a result some NewGRF houses could be placed too close together [FS#3495] (r18755) - Fix: The cargo payment button states were not properly set on opening the window [FS#3492] (r18750) -- Fix: [NoAI] The AI's name and version in the debug panel was not properly centered [FS#3491] (r18749) +- Fix: [NoAI] The AI's name and version in the debug panel was not properly centred [FS#3491] (r18749) - Fix: Clear the cached NewGRFs of a server when receiving a reply instead of when requesting the information. With slow/unstable network connections it would look like the NewGRF settings button went randomly missing [FS#3489] (r18746) - Fix: Do not toggle the sticky- and shading-button twice per mouseclick when clicking fast [FS#3487] (r18744) - Fix: [NewGRF] House prop 1D was trashed when a NewGRF contains prop 14 after prop 1D (r18742) -- Fix: Building trees on snow with rocks underneed caused an assert [FS#3501] (r18739) +- Fix: Building trees on snow with rocks underneath caused an assert [FS#3501] (r18739) - Fix: When a tree died while there was snow the amount of snow on the tile changed (r18738) - Fix: [NewGRF] VarAction2Station variable 67 was not swapped properly for orientation (r18737) @@ -1773,7 +2291,7 @@ - Change: [NoAI] Merge buoy and waypoint functions (r18725) - Change: [NoAI] AIEngine::IsValidEngine will now also return true when you have at least one vehicle of that type even if you cannot build it anymore (r18687) - Change: Update Squirrel from 2.2.3 to 2.2.4 (r18639) -- Fix: New viewports did not center on the correct position [FS#3414] (r18730) +- Fix: New viewports did not centre on the correct position [FS#3414] (r18730) - Fix: The lock in the company window was only drawn for your own company [FS#3427] (r18729) - Fix: Some invalid gender/plural indices in strings, which could eventually cause crashes [FS#3480] (r18727) - Fix: With non-uniform industries the 'supplies' text when building a station could be incorrect (missing a cargo) [FS#3463] (r18726) @@ -1843,14 +2361,14 @@ - Feature: Possibility to choose (randomise or enter custom) town name before its creation (r17612) - Feature: [NewGRF] Callbacks for houses to disable drawing foundations and to disable slope changes, like industry tile callbacks 30 and 3C (r17558) - Feature: [NewGRF] Implement callback 145 (custom station rating) (r17547) -- Feature: Filtering in Add-NewGRF dialog (r17541) +- Feature: Filtering in Add-NewGRF dialogue (r17541) - Feature: Add the date to all logging in the (real, not in-game) console if show_date_in_console is set. For dedicated server binaries the default is 'on', for the rest it is 'off' [FS#2339] (r17488) - Feature: Reconnect console command (r17466) - Feature: Allow building rail stations over existing rail without signals but will upgrade normal rail to electrified rail if necessary (r17460) - Feature: Crash logger for all Unixy OSes in a similar way as the Windows crash logger (r17453) -- Feature: Open the 'Rename group' dialog after creating new group (r17281) +- Feature: Open the 'Rename group' dialogue after creating new group (r17281) - Feature: [NoAI] Older API compatibility wrappers, so one can get the 0.7 API in later versions while keeping the real API clean (r17214) -- Feature: The Windows installer can now optionnaly download OpenGFX and OpenSFX (r17191) +- Feature: The Windows installer can now optionally download OpenGFX and OpenSFX (r17191) - Feature: Sort vehicle lists on (timetable) delay [FS#2945] (r17182) - Feature: Localised decimal separator (r17157) - Feature: Improved the sample rate conversion a bit (r17146) @@ -1873,17 +2391,17 @@ - Add: [NoAI] Enable the squirrel standard math library (r17498) - Add: [NoAI] A vehicle list for all vehicle that are ordered to a specific depot (r17486) - Add: [NoAI] AISubsidy::SubsidyParticipantType, AISubsidy::GetSourceType, AISubsidy::GetSourceIndex, AISubsidy::GetDestinationType, AISubsidy::GetDestinationIndex for better subsidy management (r17115) -- Change: Forbid industries to clear sea/river when leveling land (r18554) +- Change: Forbid industries to clear sea/river when levelling land (r18554) - Change: Make it visible when you are to pass the next signal on danger and possible to cancel it (r18515) - Change: Move the 'check online content' button from the AI list window to the AI configuration window. This makes it consistent with the NewGRF windows [FS#3340] (r18507) - Change: Use zł instead of zl for the Polish Zloty [FS#565] (r18434) - Change: Show different texts in town GUI when the town does not need food the whole year to grow (r18433) - Change: Make road vehicles behave more like trains 'around' stations and use pathfinder penalties to determine to which 'part' to go (r18382) -- Change: Do not split up articulated vehicles in the train details view. If an articulated vehicle it too 'wide' draw the information on the next line and if there are multiple cargos split that over multiple lines too [FS#2923] (r18344) +- Change: Do not split up articulated vehicles in the train details view. If an articulated vehicle it too 'wide' draw the information on the next line and if there are multiple cargoes split that over multiple lines too [FS#2923] (r18344) - Change: Make pause on join pause during the whole joining (including download) phase [FS#3287] (r18054) - Change: Prefer extmidi over allegro midi and allegro over null driver [FS#3272] (r17875) - Change: Several improvements to the performance of CargoPackets/CargoLists; time spent in those functions reduces by 55-85% (r17840, r17836, r17818, r17814, r17812, r17801, r17736, r17735, r17733, r17731, r17730) -- Change: [SDL] Make 'update the video card'-process asynchronious. Improvements of 2%-25% (real time) during fast forward on dual core/hyperthreading-enabled CPUs (r17776) +- Change: [SDL] Make 'update the video card'-process asynchronous. Improvements of 2%-25% (real time) during fast forward on dual core/hyperthreading-enabled CPUs (r17776) - Change: [NoAI] Make AIEngine:CanRefitCargo() not report refittability to Mail by default for aircraft. It is not necessarily true, and the special case of carrying both passenger&mail is better handled by AIs themself than by the API (r17719) - Change: [OSX] Do not use deprecated methods/undocumented functions [FS#1411] (r17712, r17711) - Change: Make SDL's video driver more likely to be loaded than Allegro's video driver; SDL seems to perform better (r17583) @@ -1891,8 +2409,8 @@ - Change: Make the performance ratings harder to exploit; only count profitable vehicles and recently serviced stations [FS2459] (r17485) - Change: When removing a station or waypoint keep the rail unless Ctrl is pressed. This makes the behaviour consistent between the two (r17471) - Change: Show the client id in join messages at the server (r17467) -- Change: NewGRF price modifiers now take effect everytime when loading NewGRFs instead of once on gamestart (r17433) -- Change: Make a distinction between missing and corrupted data files. If (at least) one data file is missing do not consider the set to be useable. Do also no autodetect sets with missing files (r17241) +- Change: NewGRF price modifiers now take effect every time when loading NewGRFs instead of once on gamestart (r17433) +- Change: Make a distinction between missing and corrupted data files. If (at least) one data file is missing do not consider the set to be usable. Do also no autodetect sets with missing files (r17241) - Change: Update MiniLZO to 2.0.3 (r17215) - Change: Update Squirrel to 2.2.3 (r17195) - Change: Remove UNICODE notice in windows installer (r17186) @@ -1909,7 +2427,7 @@ - Fix: Do not account for path reservation costs when entering a signal block via a 'block' signal. This way you will not get double penalties, both red signals and reservation costs, for the block signalled tracks [FS#2722] (r18535) - Fix: [NewGRF] An industry NewGRF that defined a too small size for action0 prop 0A could cause a crash (r18527) - Fix: Allegro does not like to work with extmidi, so warn the user about that [FS#3272] (r18520) -- Fix: When you pass a signal at danger, in a PBS controlled area, do not try to do the 'safe' thing and stop, but continue going; the user wanted the train to pass the signal at danger so (s)he has to suffer the consequences. Ofcourse one can always stop the train manually [FS#2891] (r18515) +- Fix: When you pass a signal at danger, in a PBS controlled area, do not try to do the 'safe' thing and stop, but continue going; the user wanted the train to pass the signal at danger so (s)he has to suffer the consequences. Of course one can always stop the train manually [FS#2891] (r18515) - Fix: No error message was created for the first fatal NewGRF error [FS#3368] (r18506) - Fix: Improve airport movement on several airports [FS#3169] (r18505) - Fix: Autoreplace and autorenew always reset their cargo sub type to 0. Now find a sub cargo type with the exact same name and use that, otherwise fallback to 0. So cargo sub types can be maintained via autoreplace *if* the new vehicle supports the same cargo sub type [FS#3159] (r18499) @@ -1929,7 +2447,7 @@ - Fix: [OSX] The splash image was not displayed if the Quartz video driver was used (r17793) - Fix: Do not let aircraft drive a while over the grass when landing at high altitude airports [FS#3259] (r17762 - Fix: Make the -c location relative to the current directory instead of the directory of the binary [FS#3247] (r17686) -- Fix: Some semaphore signals fell outside of the signal GUI. Now the signals are properly centered which should make that problem go away [FS#3242] (r17657) +- Fix: Some semaphore signals fell outside of the signal GUI. Now the signals are properly centred which should make that problem go away [FS#3242] (r17657) - Fix: Some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor [FS#3219] (r17644) - Fix: Do not accept cargo produced in the same industry; generalise and improve the check used only for valuables (r17437) - Fix: Pay only for cargo actually delivered, not for all cargo unloaded at station; can differ with 'stockpiling' industries (r17436) @@ -1945,7 +2463,7 @@ - Fix: NewGRF stations would be triggering assertions for waypoints all over the place when using the more advanced station types [FS#2996] (r16909) - Fix: Skipping a 'nearest depot order' because none could be found could cause multiple orders to get skipped [FS#2925] (r16457) - Fix: Makedepend cannot handle the amount of files we have and it also miss some dependencies. So use our custom implementation of makedepend (r16307) -- Fix: Autopause and manual pausing conflict with eachother, new game + pause on new game + autopause make the game not unpause on the first join [FS#2864] (r16242) +- Fix: Autopause and manual pausing conflict with each other, new game + pause on new game + autopause make the game not unpause on the first join [FS#2864] (r16242) - Remove: [NoAI] AIVehicle::SkipToVehicleOrder as it was a duplicate of AIOrder.SkipToOrder (r18504) - Remove: OPF for RVs and NTP for trains; both the oldest path finders (r18362) - Remove: Support for gcc2. It has not been able to compile OpenTTD for months. All attempts to do another workaround failed (r16492) @@ -1961,7 +2479,7 @@ - Add: Some missing latin-ish characters from the OpenGFX set (r18431) - Change: Recolour the bubble generator just like any other industry [FS#3349] (r18409) - Fix: Read after free in case no network connection could be made with the content server (r18493) -- Fix: [NewGRF] Initialisation of cargo payment was broken for NewGRF cargos [FS#3344] (r18475) +- Fix: [NewGRF] Initialisation of cargo payment was broken for NewGRF cargoes [FS#3344] (r18475) - Fix: [NoAI] AIOrder::SkipToOrder did not properly resolve ORDER_CURRENT (r18471) - Fix: When moving a wagon and only the last part of a dual headed engine you could split the dual headed engine over two vehicles. This could be used to crash servers [CVE-2009-4007] (r18462) - Fix: [Windows] Forgot to load the symbol from SDL.dll (r18439) @@ -1973,7 +2491,7 @@ - Fix: Drive through road stops did not get flooded (r18401) - Fix: [YAPP] Trains on bridges were not found, when searching for the origin of a reservation [FS#3345] (r18392) - Fix: (Invalid) GRFs could trigger invalid reads (r18391) -- Fix: One could not share orders between buses carrying different cargos (r18380) +- Fix: One could not share orders between buses carrying different cargoes (r18380) - Fix: Off-by-one in the preconfigured music lists [FS#3339] (r18369) @@ -2044,7 +2562,7 @@ - Change: Mention the MD5 checksum of the original NewGRF in the 'saveload failed horribly'-error message and make it more clear that the filename is of the current NewGRF [FS#3139] (r17267) - Change: Make overbuilding the front tile of a road station/depot with road consistent with overbuilding the front tile of tunnels/bridges [FS#2802] (r17239) - Change: Improve error output on missing or corrupt files (r17238) -- Change: [Unix] Only use colourized error output on interactive terminals (r17227) +- Change: [Unix] Only use colourised error output on interactive terminals (r17227) - Change: [NoAI] Crash an AI when it uses a DoCommand/Sleep instead of just printing an error message in the AI Debug Window [FS#2980] (r17223) - Change: [NoAI] When the API requests a string as parameter allow every squirrel type and convert to a string [FS#3101] (r17221) - Change: Make strgen warn if the translation uses STRINGn or RAW_STRING instead of STRING (r17137, r17129) @@ -2056,11 +2574,11 @@ - Fix: When loading GRFConfigs from ini file, validate them wrt. duplicate GRF IDs [FS#3197] (r17510) - Fix: When building a part fails during cloning, sell what was already cloned instead of leaving it 'for free'. Also make cloning multiheaded trains possible with with 'max - 1' vehicles existing [FS#3196] (r17509) - Fix: [NoAI] The wrong value was restored to SetAllowDoCommand possible resulting in an AI that was not allowed to do any actions (r17500) -- Fix: Road vehicles could get lost when the prelimiary destination (for the pathfinder heuristics) is unreachable [FS#3188] (r17491) +- Fix: Road vehicles could get lost when the preliminary destination (for the pathfinder heuristics) is unreachable [FS#3188] (r17491) - Fix: When building roads is not allowed for town, then do not build the initial piece either [FS#3173] (r17444) - Fix: Destruction of depots did not remove any vehicle lists related to the depot, causing windows pointing to deleted depots and (thus) crashes [FS#3180] (r17442) - Fix: Economy recession would never end when economy is set to Steady while in recession (r17426) -- Fix: The index of orders loaded from old savegames was owerwritten with an unitialized value (r17419) +- Fix: The index of orders loaded from old savegames was overwritten with an uninitialised value (r17419) - Fix: Incomplete check on validity of industry type when building industries (r17413) - Fix: [Squirrel] Guard against Squirrel stack overflows (r17403) - Fix: [NoAI] During every save a few slots on the Squirrel stack were leaked (r17402) @@ -2093,7 +2611,7 @@ - Fix: Make restart command work again and make the help show how it works and how it does not work [FS#3092] (r17097) - Fix: News message about ordered refits failing was not very clear [FS#3091] (r17096) - Fix: Crash when renaming some stations [FS#3082] (r17078) -- Fix: RPM spec file failed for CentOS; apparantly their rpmbuild is pickier or so [FS#3024] (r17077) +- Fix: RPM spec file failed for CentOS; apparently their rpmbuild is pickier or so [FS#3024] (r17077) - Fix: [NewGRF] Mark house tiles dirty when triggers were triggered (r17047) - Fix: [NewGRF] Trigger house trigger 02 only for the north tile [FS#3085] (r17046) - Fix: Graphical glitch with graph key [FS#3083] (r17041) @@ -2134,7 +2652,7 @@ - Fix: [NoAI] AITile::GetCargoProduction/Acceptance did not accept a radius of 0 anymore (r16767) - Fix: In the refit window the 'Select cargo type to carry' line always showed the ship refit tooltip [FS#3018] (r16757) - Fix: When loading a savegame Engine::grffile might be left NULL in certain cases (dynamic_engines enabled, articulated vehicle with only wagon-override action3s) (r16737) -- Fix: Show Close instead of Cancel when there is nothing to canel in the content downloading window [FS#2991] (r16732) +- Fix: Show Close instead of Cancel when there is nothing to cancel in the content downloading window [FS#2991] (r16732) - Fix: [NoAI] AIDepotList contained wrong tiles for hangars when st->xy != st->airport_tile (r16731) - Fix: The Join station window did not show all stations nearby in some cases (r16728) - Fix: Invalidate subsidies with invalid source or destination when converting older savegames (r16710) @@ -2161,7 +2679,7 @@ 0.7.1 (2009-06-09) ------------------------------------------------------------------------ - Fix: When finding duplicate graphics sets favour the more complete one (r16538) -- Fix: [Squirrel] Crash that occured when an AI was halted while one or more generators were still in a 'running' state [FS#2942] (r16534) +- Fix: [Squirrel] Crash that occurred when an AI was halted while one or more generators were still in a 'running' state [FS#2942] (r16534) - Fix: [Squirrel] Do not copy an object when we just checked that the pointer to it is NULL (r16532) - Fix: Notify small UFOs on deletion of road vehicles, so they can head for somewhere else instead of stumbling over a ghost (r16525) - Fix: [NoAI] StationIDs from oilrigs were not considered valid by the API (r16529) @@ -2174,12 +2692,12 @@ 0.7.1-RC3 (2009-06-03) ------------------------------------------------------------------------ - Add: [NoAI] AISignList that can be used to get a list of valid signs (r16400) -- Change: [NoAI] Stop an AI when it takes too long to initialize or load [FS#2869] (r16425) +- Change: [NoAI] Stop an AI when it takes too long to initialise or load [FS#2869] (r16425) - Fix: Base graphics names must be unique, so do not add duplicates (r16503) - Fix: [NoAI] When an AI was suspended while in a function called (indirectly) via call/acall/pcall OpenTTD crashed. Fix this by disallowing AIs to be suspended while called via call/acall/pcall [FS#2935] (r16502) - Fix: [NewGRF] Invalidate NewGRF variable caches of more vehicles in more places. Esp. they were only invalidated for trains (r16480) - Fix: [NewGRF] Call callbacks after initialisation of vehicle variables (r16479) -- Fix: [NewGRF] Determining most common (sub-)cargo-type was broken due to someone confusing similiary named variables (r16478) +- Fix: [NewGRF] Determining most common (sub-)cargo-type was broken due to someone confusing similarly named variables (r16478) - Fix: Loading indicator when 'unload' in and 'no loading' is off was pointing in the wrong direction [FS#2936] (r16477) - Fix: Track reservation was drawn at bridge heads in the menu (r16470) - Fix: [NoAI] Another try/catch related bug (r16454) @@ -2267,7 +2785,7 @@ - Fix: Do not warn that crashed vehicles are getting old; upgrading them is impossible [FS#2740] (r16048) - Fix: The currency abbreviation for the Romanian Leu is now RON [FS#774] (r16041) - Fix: Dash was not able to run iconv detection (r16035) -- Fix: [NewGRF] Do not give '... Mines' as name to the station of oil rigs, or more general: do not add '... Mines' when the all of the cargos are part of the liquid, passenger or mail classes [FS#2785] (r16029) +- Fix: [NewGRF] Do not give '... Mines' as name to the station of oil rigs, or more general: do not add '... Mines' when the all of the cargoes are part of the liquid, passenger or mail classes [FS#2785] (r16029) - Fix: Storing/loading some currencies failed due to inconsistent settings 'tables' [FS#2826] (r16028) - Fix: Usage of uninitialised memory when trying to build a random new industry, but there are no industrytypes to choose from (i.e. all appearance probabilities are zero) (r16027) - Fix: 'Build separate station' in the station picker would reuse deleted stations [FS#2818] (r16025) @@ -2322,9 +2840,9 @@ 0.7.0-RC1 (2009-03-16) ------------------------------------------------------------------------ - Feature: Pop up the AI Debug Window if one of the AIs crashed and show a message that the user should report the crash [FS#2728] (r15708) -- Feature: Allow the number of towns that will be generated in the generate world window to be customized [FS#2672] (r15695) +- Feature: Allow the number of towns that will be generated in the generate world window to be customised [FS#2672] (r15695) - Fix: Enabling freeform edges could cause submarines to get stuck on land tiles (r15733) -- Fix: Centering on a vehicle did not respect its z coordinate (r15725) +- Fix: Centring on a vehicle did not respect its z coordinate (r15725) - Fix: Do not show passenger-/mail-capacity if the aircraft carries only cargo (r15705) - Fix: Blame NewGRFs returning inconsistent information in purchase-list/after building before users have a chance to blame OpenTTD for incorrectly autorenewing/-replacing [FS#2595] (r15701) - Fix: Just sell the old engines after autorenew/replace. Do not bother about trains exceeding the trainlimit, which will be sold anyway [FS#2721] (r15692) @@ -2332,7 +2850,7 @@ - Fix: Do not crash when someone substitutes the 'map generation' sprites with garbage [FS#2720] (r15685) - Fix: Vehicle images would be determined during the process of moving the vehicle which means that only the (orientation) data for the vehicles in front of it is valid. Now the data for the vehicles behind the vehicle are valid too [FS#2546] (r15677) - Fix: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies [FS#2718] (r15667) -- Fix: Sorting of engines in the purchase list did not use the same numbers as the GUI showed, e.g. articulated parts were not taken into accound when ordering by capacity [FS#2689] (r15666) +- Fix: Sorting of engines in the purchase list did not use the same numbers as the GUI showed, e.g. articulated parts were not taken into account when ordering by capacity [FS#2689] (r15666) - Fix: Handling of aircraft crash counter did not take account of the reduced number of calls (from 6 down to 2) to the aircraft event handler, resulting in crashed aircraft taking three times longer than they should to clear. Compensate by increasing the counter by 3 on every call instead of 1 (r15665) - Fix: Growing of vsize as (some) threads were not properly released (r15663) - Fix: Do not mark a company as having ratings in a town when querying the cost of a command (r15662) @@ -2348,7 +2866,7 @@ - Feature: [NewGRF] Support vehicle vars 0x47 and 0xF2 in purchase list (r15542) - Feature: [NewGRF] Show the cargo subtype in the vehicle details window (r15480) - Change: The background of the the waypoint sign is now in the company colour (r15593) -- Change: Allow the default debug level of 6 for a dedicated server to be overriden by -d (if used after -D) (r15543) +- Change: Allow the default debug level of 6 for a dedicated server to be overridden by -d (if used after -D) (r15543) - Change: [NewGRF] To decide whether a vehicle is refittable do not test its current capacity for being zero, but always use the 'capacity property' (r15541) - Fix: [Squirrel] Almost infinite loop in garbage collection (r15659) - Fix: Undeterministic file sorting when the date is equal for all files [FS#2716] (r15657) @@ -2397,14 +2915,14 @@ 0.7.0-beta1 (2009-02-16) ------------------------------------------------------------------------ -- Feature: Make it possible to have multiple windows with edit box open simultaniously (r15424) +- Feature: Make it possible to have multiple windows with edit box open simultaneously (r15424) - Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues (r15389) - Feature: Do not draw superfluous catenary wires [FS#1761] (r15347) - Feature: Add option to group and subtotal expenses list in the company finance window (r15301) - Feature: Allow moving clients between companies/spectators by the server and the clients themselves (r15242) - Feature: Native support for Transport Tycoon (Original) savegames (r15216) - Feature: Allow terraforming of the tiles at the edges of the map (r15190) -- Feature: [NewGRF] Allow a grf to customize house name via callback 0x14D, during Tile Inquiry process (r15172) +- Feature: [NewGRF] Allow a grf to customise house name via callback 0x14D, during Tile Inquiry process (r15172) - Feature: Downloading content from a central server (content.openttd.org) where authors can upload their NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from within the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates (r15126) - Feature: Add support for IP range bans using CIDR notation (r15094) - Feature: An AI framework so people can write their own AIs. This also removes the old cheating and heavily broken AI (r15027) @@ -2416,7 +2934,7 @@ - Feature: Allow road vehicles to move multiple steps in a tick (code based on train movement code) and add support for RV prop 15. This gives RVs a maximum speed of 318mph instead 79mph. This only implements higher speeds, not 'realistic acceleration' (r14869) - Feature: Automatic reversing in front of block signals can now be disabled by setting pf.wait_oneway_signal respectively pf.wait_twoway_signal to 255 (r14852) - Feature: Few (optional) optimisations to making (initial) orders; like keeping goto selected [FS#1984] (r14827) -- Feature: Make the road grids of town match, when all are using the same road layout ofcourse [FS#2390] (r14821) +- Feature: Make the road grids of town match, when all are using the same road layout of course [FS#2390] (r14821) - Feature: Pressing CTRL while dragging to build a bridge builds the last built bridge type if possible [FS#2238] (r14805) - Feature: Make the date format for default savegame/screenshot names configurable (r14792) - Feature: Allow scrolling with the left mouse button pressed (if enabled). Primarily useful for systems with touch screen (r14789) @@ -2449,10 +2967,10 @@ - Feature: [NewGRF] Add var 0x69 for industries, long format construction date (r13443) - Feature: [NewGRF] Add long format introduction and maximum construction year for house (r13437) - Feature: [NewGRF] Add access to current long year and date from Action 7/9/D and VarAction2 (23/24 or A3/A4), and add access to (long format) building year, in Variational Action2 Variable 49 for Vehicles (r13376) -- Feature: Splitting of the main toolbar when the resolution becomes very low so the buttons are still visible and useable (r13339) +- Feature: Splitting of the main toolbar when the resolution becomes very low so the buttons are still visible and usable (r13339) - Feature: Make news messages use a linked list instead of a moving circular buffer. This makes it possible to store more news messages in the history (r13317) - Feature: The number of news messages is reduced by removing every news message that is a configurable amount older than when it would not be shown in the newspaper popup/ticker, which is e.g. a month for industry production changes and half a year for subsidy offers. As a result the more important messages will stay longer in the message history (if longer than 30 messages) (r13317) -- Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is (13226) +- Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's centre and how tolerant the town is (13226) - Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist (r12924) - Feature: [NewGRF] The ability to play NewGRF sounds for industries and stations (r12817) - Feature: [NewGRF] Add some support for NewGRF station animation (r12798) @@ -2463,7 +2981,7 @@ - Feature: Four different non-stop types, individually selectable per order. Replaces 'TTDP compatible order' setting (r12648) - Feature: Three different load type in a single game instead of two. One can choose full load all and full load any instead of full load being governed by the 'full load any' patch setting (r12648) - Feature: Financial and Player Selection Face windows are now remembering their position when toggling sizes (r12634) -- Feature: Show what cargos a station could be supplied with (r12596) +- Feature: Show what cargoes a station could be supplied with (r12596) - Feature: [NewGRF] Add random action 2 type 84. For vehicles only (r12452) - Feature: [NewGRF] Add support for var A2/22 for action 7/9/D: Difficulty level (r12449) - Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information (r12446) @@ -2472,7 +2990,7 @@ - Change: When checking for unique names, compare only with manually set names [FS#1923] (r14958) - Change: Apply the 'warn if train's income is negative' setting to other vehicle types, too (r14835) - Change: When loading games in 'network' mode use the start date of the save game for the server and all clients when loading the NewGRFs instead of the current date. Prevents desyncs caused by action 7/9s skipping parts of the GRF based on the date or some other variables that can differ at NewGRF load time (r14769) -- Change: Only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos (r14683) +- Change: Only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargoes (r14683) - Change: [NewGRF] Since our NewGRF handling is better than it used to be, disable a NewGRF if unexpected sprites are reached (r14184) - Fix: A town could build a statue under a bridge [FS#2618] (r15397) - Fix: Multiple vehicles could be filling the timetable and only the data from one vehicle would be taken. Now only allow one to be filling at a time [FS#2466] (r15382) @@ -2484,7 +3002,7 @@ - Fix: Deadlock (with wide fonts) or desync when generating manager name (r15279) - Fix: Close all windows *before* starting a new game/loading a game instead of doing that as one of the latest steps of loading the game. This caused, in some cases, the NewGRF settings to be reset when the game was already loaded resulting in instant desyncs when joining a network game [FS#2577] (r15256) - Fix: Aircraft could be 'loading in the air' or have zero speed while in air after converting old savegames [FS#2571] (r15230, r15227) -- Fix: Tile error location not reset when leveling land causing a tile to be highlighted when there was nothing to flatten [FS#2542] (r15138) +- Fix: Tile error location not reset when levelling land causing a tile to be highlighted when there was nothing to flatten [FS#2542] (r15138) - Fix: Signs with sign 'Sign' were lost when converting from TTD savegames (r15137) - Fix: [NewGRF] Add support for 8 byte action7/9 data, used as a mask for GRFID checks (r15114) - Fix: [NewGRF] Keep industry variables 8E and 8F in sync with 93, when changing production using results 0D, 0E or 0F of callback 29 or 35 (r15103) @@ -2527,7 +3045,7 @@ - Fix: Save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync (r14233) - Fix: Glitches (alignment issues/inconsistent vehicle graphics) in original graphics (r14214, r14211) - Fix: One could not get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though [FS#2085] (r14097) -- Fix: Various assorted autoreplace issues/malbehaviours [FS#1264, FS#2037, FS#2038, FS#2110] (r14083) +- Fix: Various assorted autoreplace issues/misbehaviours [FS#1264, FS#2037, FS#2038, FS#2110] (r14083) - Fix: The autoreplace gui showed vehicle types for replacement which CmdSetAutoReplace() did not accept (r14037) - Fix: Automatically recalculate inflation if NewGRFs are changed and cargo types are added, so that cargo payment rates are correct [FS#2074] (r13836) @@ -2566,7 +3084,7 @@ - Fix: Desyncs after deleting a waypoint because of explicit destructor call instead of using operator delete (r14265) - Fix: Merge keycode for 'normal' 0-9 keys and keypad 0-9 keys so people do not get confused that the keypad does not work as expected [FS#2277] (r14260) - Fix: Clicking on the smallmap did not break the 'follow vehicle in main viewport' [FS#2269] (r14243) -- Fix: The engine-purchase-list-sorter doubled running-cost and halfed capacity of double-headed engines [FS#2267] (r14239) +- Fix: The engine-purchase-list-sorter doubled running-cost and halved capacity of double-headed engines [FS#2267] (r14239) - Fix: Feeder share was computed wrong when splitting cargo packet (r14234) - Fix: Signs (town name, station name, ...) could be too long for 8bit width in pixels (r14221) - Fix: 10 days != 6*2.5 days, effectively causing the payment graph to show the wrong data (r14219) @@ -2589,11 +3107,11 @@ - Fix: Division by 0 in NewAI [FS#2226] (r14062) - Fix: NewGRF callback 23 did not use the NewGRF compatible text stack [FS#2224] (r14058) - Fix: NewGRF text stack's 'push word' did not move the data around properly (r14057) -- Fix: Long strings in the edit box would cause OpenTTD to stop drawing the string. This is especially noticable with low resolutions and the chat input box (r14054) +- Fix: Long strings in the edit box would cause OpenTTD to stop drawing the string. This is especially noticeable with low resolutions and the chat input box (r14054) - Fix: [OSX] Changed the condition for selecting 8 or 32 bpp blitter by default. Now we will pick 32 bpp if no 8 bpp fullscreen resolutions are available on the main display (the one with the dock) (r14032) - Fix: Crash when the AI tries to find the depot of an airport that does not have a depot [FS#2190] (r13999) - Fix: MSVC cannot handle changed files in the prebuild event, so make the version determination a separate subproject [FS#2004] (r13998) -- Fix: The dedicated console removed any character that was not a printable ASCII character instead. Now it allows UTF8 formated strings too [FS#2189] (r13992) +- Fix: The dedicated console removed any character that was not a printable ASCII character instead. Now it allows UTF8 formatted strings too [FS#2189] (r13992) - Fix: Resetting construction stage counter reset more than it should (r13981) - Fix: Wrong tooltip for the industry directory's list [FS#2178] (r13917) @@ -2620,7 +3138,7 @@ - Fix: Checking for train waiting at other side of two-way signal was broken [FS#2162] (r13806) - Fix: Some revision checking code was unintentionally disabled (r13776) - Fix: Enforce the validity of a NetworkAction (chat packet) issued by a client (r13775) -- Fix: Selecting non-full length vehicles in the depot gui would place the 'mouse pointer' out of the center of the vehicle making it hard to 'aim' [FS#2147] (r13759) +- Fix: Selecting non-full length vehicles in the depot gui would place the 'mouse pointer' out of the centre of the vehicle making it hard to 'aim' [FS#2147] (r13759) - Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction (r13734) - Fix: Assumption that non-north tiles of a house do not have the 1x1 building bit set was flawed with some NewGRFs. This caused the amount of houses to differ, which causes the town radii to differ, which causes desyncs when towns are expanded (r13729) - Fix: Possible desync on the autorenew settings 20+ game years (i.e. 4.5+ hours) after a company was started (r13718) @@ -2634,7 +3152,7 @@ ------------------------------------------------------------------------ - Fix: Possible buffer overflow in string truncation code [CVE-2008-3576] (r13700) - Fix: Handle SETX(Y) properly when truncating a string instead of ignoring it and returning a too long string (r13699) -- Fix: In some cases the (sound) mixer could overflow causing artefacts in the sound [FS#2120] (r13695) +- Fix: In some cases the (sound) mixer could overflow causing artifacts in the sound [FS#2120] (r13695) - Fix: Do not rely on .tar files always ending with a block of zeros (r13693) - Fix: Make sure a command is ran in the context of autoreplace or not (r13691) - Fix: In the case that elrails and 'realistic' acceleration are disabled all electrified engines would have no power on load, until the vehicle got turned around, loaded or got into a depot [FS#2102]- Fix: Saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code [FS#2131] (r13679) @@ -2645,19 +3163,19 @@ - Fix: Bus/truck forgetting go-to-depot order when entering a non-drivethrough road stop [FS#2117] (r13664) - Fix: Server crashing when banning the rconning client (r13661) - Fix: Signals were not updated correctly when a player removed a non-existing track piece (r13626) -- Fix: Crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor [FS#2106] (r13624) -- Fix: Only the front of a RV would be considered when determining to what cargos a vehicle can be refitted instead of all cargos [FS#2109] (r13622) +- Fix: Crash when one tries to raise the northern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor [FS#2106] (r13624) +- Fix: Only the front of a RV would be considered when determining to what cargoes a vehicle can be refitted instead of all cargoes [FS#2109] (r13622) - Fix: If the first bridge can not be build for a given length, then none of the other bridges can. Effectively meaning that if someone replaces the first bridge with a bridge that can be only 3 tiles longs then only other bridges that can be 3 tiles long will be buildable, but only if they are 3 tiles long [FS#2100] (r13611) - Fix: Signal states could be propagated through waypoints built in orthogonal axis (r13589) - Fix: [OSX] 10.5 failed to switch to fullscreen (r13584) -- Fix: RVs continueing onto next DT station when they are build adjacent to them [FS#2040] (r13581) +- Fix: RVs continuing onto next DT station when they are build adjacent to them [FS#2040] (r13581) - Fix: Disable static NewGRFs when non-static NewGRFs query them in the context of network games. This makes it impossible for static NewGRFs to disable non-static NewGRFs and 'bad' things happening because the non-static NewGRF does not know about the static NewGRF (r13576) - Fix: Properly count number of non-north housetiles [FS#2083] (r13518) - Fix: Incorrect usage of strtoul (r13508) - Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505) - Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502) - Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489) -- Fix: Track was not removed on company bankrupcty when there was a ship on lower halftile (r13488) +- Fix: Track was not removed on company bankruptcy when there was a ship on lower halftile (r13488) - Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485) - Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409) - Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397) @@ -2687,7 +3205,7 @@ - Fix: Minor errors related to industries accepted/produced cargo (r12933) - Fix: Town rating was affected even after the test run (r12920) - Fix: Flood road tiles even when there are road works in progress [FS#1965] (r12919) -- Fix: Do not initialize Station struct with tile=0, buoys will never change that value [FS#1960] (r12915) +- Fix: Do not initialise Station struct with tile=0, buoys will never change that value [FS#1960] (r12915) - Fix: Game crash when a spectator/server tried to show an engine with no owner when a NewGRF requested a specific variable (r12914) - Fix: Report reverse sprite status (FD/FE) to NewGRF for manually toggled vehicles (r12910) - Fix: Vehicles going twice to a depot when the automatic service interfered with the current order [FS#1985] (r12629) @@ -2724,7 +3242,7 @@ - Fix: The convert signal button disallowed signal dragging when the signal GUI was closed (r12577) - Fix: Binding to a specific IP could cause OpenTTD to not register properly with the masterserver if one has multiple external interfaces (r12574) - Fix: The function min() has 32bit arguments, clamping of 64bit values did not work (r12572) -- Fix: Towns could not terraform when inflation rised terraform prices enough (r12564) +- Fix: Towns could not terraform when inflation raised terraform prices enough (r12564) - Fix: Do not affect town rating change by the order in which we examine stations (r12561) - Fix: Redraw the signal GUI when the signal drag density changes in the patch settings and vice versa (r12553) - Fix: Do not install scenarios into the current user's homedir when running 'make install', that is silly. Simply always install scenarios system wide instead (r12542) @@ -2761,7 +3279,7 @@ - Fix: Reset train speed limits when _patches.realistic_acceleration changes (r12369) - Fix: Commands were sent to clients waiting for map download causing 'executing command from the past' error [FS#1650] (r12367) - Fix: Do not allow building 'zero' road bits (r12363) -- Fix: Randomize variable 8F only once per callback 28 (r12362) +- Fix: Randomise variable 8F only once per callback 28 (r12362) - Fix: openttdd.grf was using the wrong colours for glyphs due to a grfcodec bug (fixed in grfcodec 0.9.10 r1837) (r12360) - Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa (r12352, r12358) - Fix: Do not try to flood water tile [FS#1836] (r12350) @@ -2769,7 +3287,7 @@ - Fix: Remove duplicated and inconsistent code wrt. autoreplace with rules in both vehicles' group and ALL_GROUP [FS#1748, FS#1825] (r12346) - Fix: Do not try to restore backupped timetable when timetabling is disabled [FS#1828] (r12345) - Fix: Slow helicopters never got the 'chance' to finish the landing routine (r12343) -- Fix: GRM buffer for cargos was incorrect size [FS#1827] (r12341) +- Fix: GRM buffer for cargoes was incorrect size [FS#1827] (r12341) - Fix: Recalculate cached train data after clearing reversing flag when entering depot (r12339) @@ -2804,8 +3322,8 @@ - Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197) - Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195) - Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191) -- Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186) -- Fix: Take into account possible loan when AI is deciding which bridge to build, so it will not build wooden bridges everytime (r12184) +- Fix: Assert when trying to play tile sound at NW border of map (placing buoys, levelling land) [FS#1784] (r12186) +- Fix: Take into account possible loan when AI is deciding which bridge to build, so it will not build wooden bridges every time (r12184) 0.6.0-beta4 (2008-02-18) @@ -2824,14 +3342,14 @@ - Feature: Show all cargo sources (en-route from) in the station view cargo waiting list instead of just one (r11990) - Feature: [NewGRF] Resizable industry view window on callback 3A (r11987) - Feature: [NewGRF] Implement var 8F (random bits) during callback 28 [FS#1697] (r11985) -- Feature: [NewGRF] Add support for Action 0D, var 13: informations about current map size (r11961) +- Feature: [NewGRF] Add support for Action 0D, var 13: information about current map size (r11961) - Feature: Support Action5 type 0D (newwater) (r11947) - Feature: Allow building bridge heads on more slopes (r11937) - Feature: [NewGRF] Add support for Rivers. Rivers can currently only be placed with-in the scenario editor (r11926, r11938, r11949, r12071) - Feature: Generate.vbs script to allow project files generation for users unable to run generate bash script (r12123) - Feature: Sort the strings in languages dropdown (r11886) - Codechange: Drop MSVC 2003 support (r11979) -- Fix: Test purchase list loading/loaded sprites instead of unconditionally returning a possibly non-existant sprite (r12180) +- Fix: Test purchase list loading/loaded sprites instead of unconditionally returning a possibly non-existent sprite (r12180) - Fix: Return correct bridge price for AI when DC_QUERY_COST is set [FS#609] (r12171) - Fix: When drag&drop mode was cancelled by keyboard input, depot/group window was not updated [FS#337] (r12166) - Fix: Buffer overflow when drawing scrolling news [FS#1652, FS#1773] (r12165) @@ -2870,7 +3388,7 @@ - Fix: The cargo translation table was loaded at the right time, but all the other global variables were now loaded too early [FS#1737] (r12052) - Fix: Random_func broke for desync debug (r12050) - Fix: Memset on multibyte array with wrong byte count (r12049) -- Fix: Crash when centering on a vehicle (aircraft) that is outside of the map [FS#1741] (r12044) +- Fix: Crash when centring on a vehicle (aircraft) that is outside of the map [FS#1741] (r12044) - Fix: Allow building transmitters and lighthouses on tree tiles [FS#1736] (r12043) - Fix: Reimplement how rivers and canals are stored in the map, allowing the sea/river/canal status to also be stored for buoys, docks, locks and depots. All these are now allowed on rivers and removal of them will revert to the original water type [FS#1676] (r12042) - Fix: Change ownership of or remove statues when merging/bankrupting companies (r12038) @@ -2880,9 +3398,9 @@ - Fix: When removing a statue, remove town statue flag for the statue owner, not current player (r12032) - Fix: Prevent towns from removing or claiming ownership of player owned tiles when growing [FS#1689,FS#1719] (r12031) - Fix: In one case trees could spread under bridges (r12024) -- Fix: Put a better suited text in the quit-dialog [FS#1690] (r12023) +- Fix: Put a better suited text in the quit-dialogue [FS#1690] (r12023) - Fix: Restore initial intent on the invisible tree while transparent building patch setting [FS#1721] (r12018) -- Fix: When you have more than 9 network interfaces you'll enter the wonderfull world of overflows (r12017) +- Fix: When you have more than 9 network interfaces you'll enter the wonderful world of overflows (r12017) - Fix: Better work on strings in regard to gender [FS#1716] (r12015) - Fix: Lighthouses and transmitters were never supposed to be build on a slope (r12014) - Fix: When modifying watered tiles, mark neighboured canals and rivers dirty in more cases (r12013) @@ -2915,12 +3433,12 @@ - Fix: [Windows] FileExists() failed for non latin paths (r11945) - Fix: Allow building drive-through road/tram stops at road/tram track that has no owner (r11944) - Fix: 'BRIDGE_TOO_LOW_FOR_TERRAIN'-check was wrong for steep slopes (r11936) -- Fix: [Autoreplace] Single to dualhead locomotive replacefailed when player had enough money to replace and refit one but not enough to refit the last one as well [FS#1624] (r11929) +- Fix: [Autoreplace] Single to dualhead locomotive replace failed when player had enough money to replace and refit one but not enough to refit the last one as well [FS#1624] (r11929) - Fix: [Autoreplace] Autoreplace could refit train engines to the wrong cargo type if the old engine had no cargo capacity and the new one had (r11928) - Fix: Loading old, pre savegame version 2, savegames (r11925) - Fix: AI was reading wrong tile slope while building road bridge (r11917) - Fix: Set correctly crossing state after train reversal, train leaving crossing, train crash (r11900) -- Fix: Segmentation faults/wrong frees due uninitialized memory in the AI [FS#1658] (r11887) +- Fix: Segmentation faults/wrong frees due uninitialised memory in the AI [FS#1658] (r11887) - Fix: Assert when trying to remove rail from a house or industry tile [FS#1663,FS#1665-6-7-8,FS#1680,FS#1686-7-8 FS#1715 FS#1742 FS#1771 FS#1776](r11883) - Fix: Crash in MP in vehicle group window if the currently selected group is deleted by another player (r11878) - Fix: Another way to crash competitors' train in a station (r11877) @@ -2965,7 +3483,7 @@ - Fix: Do not allow refitting flooded (destroyed) vehicles (r11707) - Fix: Trains could have sprites with wrong direction when reversing, also was inconsistent with save/load process [FS#1557] (r11705) - Fix: When removing buoys, return to water or canal depending on their owner (r11666) -- Fix: Animation informations should not be copied from original industry tile spec, while doing an action 00, industry tile, prop 08 (r11665) +- Fix: Animation information should not be copied from original industry tile spec, while doing an action 00, industry tile, prop 08 (r11665) - Fix: Do not allow modifying non-uniform stations when non-uniform stations are disabled [FS#1563] (r11659) - Fix: 'Initialised' NewGRFs could still be deactivated in the later 'activation' pass (r11650) - Fix: Vehicles were still followed when sold [FS#1541] (r11632) @@ -3013,7 +3531,7 @@ - Fix: Assertion when tram reversed at a station [FS#1485] (r11524) - Fix: The scrollbar of the network gui could run out of bounds (r11522) - Fix: [OSX] The cocoa video driver let the mouse cursor escape the window when using rmb scrolling (r11520) -- Fix: Signs totally illegible when transparant signs is turned on and zoomed out more than one level [FS#1463] (r11507) +- Fix: Signs totally illegible when transparent signs is turned on and zoomed out more than one level [FS#1463] (r11507) - Fix: Selling vehicles could cause the window of others to scroll to that location [FS#1471] (r11506) - Fix: Do not do standard production change if callbacks 29/35 failed, disable smooth economy for industries using callbacks 29/35 (r11502) - Fix: Two small layout issues with the vehicle grouping GUI (r11478) @@ -3025,7 +3543,7 @@ 0.6.0-beta1 (2007-11-18) ------------------------------------------------------------------------ - Feature: Make news messages related to the industry (production) changes better configurable; you can now disable news messages popping up for industries you are not servicing (r11442) -- Feature: When sorting stations by cargo sum, only sum the cargos that are selected in the filter (r11437) +- Feature: When sorting stations by cargo sum, only sum the cargoes that are selected in the filter (r11437) - Feature: Show all players who have shares, not just the first two (r11435) - Feature: Make OpenTTD's sprites replaceable using Action 5 and make replacing contiguous subsets of sprites in for some types possible in Action 5 (r11433) - Feature: Allow town-bridges to be build on slopes (r11395) @@ -3126,7 +3644,7 @@ - Codechange: Add support for returning 'TTDPatch variables' (Action D) (r9701) - Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static (r9671 and several others) - Codechange: Add support for multiple 'base' directories for NewGRF searching (r9560) -- Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites (rmany) +- Codechange: Implement actions 1/2/3 for cargoes, callback handler and custom icon sprites (rmany) - Codechange: Rename the 'New ' button of the global vehicle lists to 'Available ' as it is a view-only list, not one from which you can purchase (rolling) stock (r8420) - Codechange: Remove the landscaping button from the build toolbars (r8143) - Codechange: [NewGRF] Do not mark as unsafe those NewGRFs that set their own parameters (via action D) and/or change only bridge sprite table layouts (action 0, property D) (r7831) @@ -3165,7 +3683,7 @@ - Fix: When Cheat-Window is open and a new month happens, the window was not redrawn instantly (r10547) - Fix: You can now have both Available Train as Available Ship window open [FS#1026] (r10546) - Fix: Cargo payment rates overflow and cargo payment rates diverge from cost rates making it impossible to make any profit after a certain number of years. Both are solved by stopping the inflation after 170 years; there is absolutely no point in continuing the inflation after that as it only makes the game have overflows at some point that cannot be solved; using larger variables only delays the inevitable [FS#1028] (r10541) -- Fix: Error dialog was sometimes shown on all clients when a command failed instead of only the client that actually did the command [FS#1015] (r10501) +- Fix: Error dialogue was sometimes shown on all clients when a command failed instead of only the client that actually did the command [FS#1015] (r10501) - Fix: The network protocol check for required NewGRFs sent static NewGRFs too (r10414) - Fix: When landscape generating, allow for 200ms between screen updates instead of updating every 200ms. Previously slow screen updates would result in very slow map generation (r10396) - Fix: One could only build a limited number of stations before one had to rename them [FS#278] (r10320) @@ -3230,12 +3748,12 @@ - Fix: [Windows] Do not try to minimise or restore the window when closing OpenTTD [FS#998] (r10835) - Fix: Trains going over bridges would get the 'going down hill' accelerate bonus, which causes trains to go faster on bridges than they would be going on level land [FS#1096] (r10739) - Fix: Trains being split into two pieces when loading an old savegame [FS#1062] (r10735) -- Fix: [OS/2] Fix chdir problem with open/save dialog (r10650) +- Fix: [OS/2] Fix chdir problem with open/save dialogue (r10650) - Fix: One could not remove locks that were build in a (very) old version of OpenTTD [FS#1038] (r10593) - Fix: One cannot navigate using arrow keys in the game name text box [FS#1038] (r10500) - Fix: Ship's maximum speed wrongly shown [FS#1013] (r10497) - Fix: [OSX] Of the resolution is changed to something that is too high for the monitor, then it is reduced to fit the monitor size, solving several crashes and graphical glitches [FS#458] (r10410) -- Fix: NPF was leaking memory each time it got initialized, except for the first time (r10357) +- Fix: NPF was leaking memory each time it got initialised, except for the first time (r10357) - Fix: [YAPF] 'target_seen' flag that is set prematurely in some cases (1 tile long cached segment followed by target station) which caused asserts to trigger [FS#884] (r10199) @@ -3279,8 +3797,8 @@ - Fix: When you got a sufficiently small resolution, there is a possibility for a division by zero when a sound is played (r10138) - Fix: When removing a dock, a ship will always try to reach the old location of the dock even when it cannot anymore because it the old location of the dock is now land instead of water [FS#810] (r10131) - Fix: SetCurrentGrfLangID returned the wrong language ids for most languages (r10130) -- Fix: Some NewGRFs use the same (unused in the 'current' climate) sprite IDs. Normally this gives some artefacts, but when one NewGRF expects it to be a sprite and another NewGRF overwrites it with a non-sprite nasty things happen (drawing a non-sprite crashes OpenTTD) [FS#838] (r10109) -- Fix: Multiple subsequent 'give money' actions could result in duplicate messages that money has been transfered when it only happened once, or tell you paid money when you did not [FS#834, FS#839] (r10087, r10085) +- Fix: Some NewGRFs use the same (unused in the 'current' climate) sprite IDs. Normally this gives some artifacts, but when one NewGRF expects it to be a sprite and another NewGRF overwrites it with a non-sprite nasty things happen (drawing a non-sprite crashes OpenTTD) [FS#838] (r10109) +- Fix: Multiple subsequent 'give money' actions could result in duplicate messages that money has been transferred when it only happened once, or tell you paid money when you did not [FS#834, FS#839] (r10087, r10085) - Fix: 'Deactivate Electrified Railways' did not work [FS#836] (10083) - Fix: Memory leaks in the networking code [FS#846, FS#844] (r10082, r10075) - Fix: Coverage area highlight was still show when it was turned off for docks [FS#835] (r10068) @@ -3304,7 +3822,7 @@ - Feature: Add password protected status to 'players' (network server) console command (r9771) - Feature: Add server_lang in [network] section of openttd.cfg (r9716) - Fix: Loading some TTDP savegames caused an instant assertion on loading (r9857) -- Fix: [NewGRF] Catch occurance of division-by-zero in varaction handling (r9837) +- Fix: [NewGRF] Catch occurrence of division-by-zero in varaction handling (r9837) - Fix: Only non dedicated servers cannot have 0 players [FS#765] (r9785) - Fix: Remove arbitrary limit on length of NewGRF strings (r9775) - Fix: [NewGRF] Ignore axis-bit of station tile layouts [FS#756] (r9758) @@ -3433,7 +3951,7 @@ - Fix: Crash when removing a town in the scenario editor while the query window is open for one of the town's tiles (r8030) - Fix: Overflow of system-ticks was not handled properly, resulting in a possibly unresponsive server/client (r8028) - Fix: Automatic pause interfering with 'pause_on_join setting' in MP when is pressed [FS#486] (r8027) -- Fix: Picking up en-route cargo will also have virtual profit deducted for trains aswell (r8026) +- Fix: Picking up en-route cargo will also have virtual profit deducted for trains as well (r8026) - Fix: Out-of-bounds read access on _clients array (harmless) (r7984) 0.5.0-RC3 (2007-01-07) @@ -3452,7 +3970,7 @@ - Codechange: Drastically reduce the CPU usage in certain cases (AI using CheckStationSpreadOut()) (r7585) - Fix: Internal bug in updating the animated_tiles table caused desyncs between (different endian) machines in MP (r7631) - Fix: Signal update got propagated through incompatible railtypes and under certain circumstances tunnels and rail on top (r7620) -- Fix: Remove landscaping toolbar option from road consturction toolbar in scenario editor [FS#473] (r7586) +- Fix: Remove landscaping toolbar option from road construction toolbar in scenario editor [FS#473] (r7586) - Fix: The server could under certain circumstances tell a client too late to start syncing if it has been waiting to join (r7566) - Fix: Removing towns in scenario editor did not remove their subsidies causing possible crashes [FS#468] (r7563) - Fix: Internal and (patches) GUI were disagreeing about autorenew settings [FS#431] (r7561) @@ -3465,7 +3983,7 @@ 0.5.0-RC1 (2006-12-21) ------------------------------------------------------------------------ -- General fixes and improvements to TTDPatch's NewGRF format, most noticable are newstations, newsounds, more callbacks and I18n +- General fixes and improvements to TTDPatch's NewGRF format, most noticeable are newstations, newsounds, more callbacks and I18n - Added languages: Bulgarian, Esperanto, Russian, Ukrainian, Languages with proper diacretics: Czech, Hungarian, Turkish - Feature: Show NewGRF compatibility of network games; green for full compatibility, yellow for missing NewGRFs and red for invalid revision (r7505) - Feature: Load a list of NewGRFs from the config (in the [NewGRF-static] section) that should always be loaded (r7490) @@ -3474,7 +3992,7 @@ - Feature: Support for saving NewGRF settings with savegames (r7348) - Feature: Add support for gradual (un)loading of vehicles (r7326) - Feature: Add freight trains patch option which is a multiplier for the weight of cargo on freight trains, to simulate longer heavier trains (r7269) -- Feature: UNICODE/UTF8 support, with (optional) usage of fonts rendered by Freetype instead of sprites. This means full unicode support (input, rendering, file/io) and greatly enhanced internationalization for non-latin languages (utf8) (r7182) +- Feature: UNICODE/UTF8 support, with (optional) usage of fonts rendered by Freetype instead of sprites. This means full unicode support (input, rendering, file/io) and greatly enhanced internationalisation for non-latin languages (utf8) (r7182) - Feature: Add Slovak, Brazil and Slovenian currency [SF 1243657, 1171147; FS#131] (r7160, r5964) - Feature: Allow towns to be built on top of trees in the scenario editor [FS#396] (r7152) - Feature: Allow over-building of compatible railtypes, i.e. normal and electrified rail. If building electrified rail, normal rail is upgraded for you (at a cost) (r7106) @@ -3482,9 +4000,9 @@ - Feature: [Windows] Remember the window size between restarts when quit in fullscreen mode (r7061) - Feature: Increase the chatbuffer of chat messages, messages longer than the graphical box will be wrapped to a new line (r6956) - Feature: Allow typing longer text than visible for an editbox; it will scroll properly now (r6954) -- Feature: Allow spectators to team-speak to eachother (r6933) +- Feature: Allow spectators to team-speak to each other (r6933) - Feature: Allow for ' to be in console tokens. Escape them with \. eg \' (r6875) -- Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T) sends a message to all players, CTRL+ENTER (CTRL+T) sends a message to all team mates and ENTER (T) is customizable (r6824) +- Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T) sends a message to all players, CTRL+ENTER (CTRL+T) sends a message to all team mates and ENTER (T) is customisable (r6824) - Feature: (Train is) lost message is now generated immediately when pathfinder cannot find the path (r6800) - Feature: Add a measurement tool that will show dimensions and height differences of various draggable tools (r6758) - Feature: Added sort options to the build aircraft and train windows (r6708) @@ -3503,14 +4021,14 @@ - Feature: List of vehicles with the same shared orders, accessible from the orders-window of a given vehicle (r6161) - Feature: Added -s (source) and -d (destination) to strgen to specify paths for input and output files (r6089) - Feature: After removing a farm, its farmland is removed too (over time) [FS#82] -- Feature: Clicking twice on the location button in the smallmap centers to your position, clicking twice centres your viewport [FS#54] (r6040) +- Feature: Clicking twice on the location button in the smallmap centres to your position, clicking twice centres your viewport [FS#54] (r6040) - Feature: Change the original date format to a 32 bits format based at the year 0. Highest date is the year 5.000.000AC (r5999) - Feature: Auto-completion in chat-window. It completes Player and Town names (in that order) using (r5968) - Feature: Catalan Town Names generator [FS#261] (r5965) - Feature: Possibility to generate scenarios by importing heightmaps. It can be in PNG or BMP format - Feature: New (optional) landscape generator based on TerraGenesis Perlin noise with GUI, progress bar and fine-tuning options (r5946) - Feature: Filter for textboxes to only allow input of certain patterns (like numbers only) (r5944) -- Feature: [Windows] Remember the maximized state of the game window and restore on start [FS#234] (r5874) +- Feature: [Windows] Remember the maximised state of the game window and restore on start [FS#234] (r5874) - Feature: Add an icon to the SDL openttd executable (r5872) - Feature: Also allow horizontal and vertical rails on steep slopes (r5864) - Feature: Allow building of (certain) rails, roads and bridge ramps on steep sloped tiles (r5833) @@ -3522,8 +4040,8 @@ - Feature: Add new pathfinder, YAPF. Has greatly improved performance and better, fully configurable, pathfinding (yapf) (r4987) - Feature: Add a new console command 'players' that lists current players along with basic stats [FS#150] (r4828) - Feature: Station List View can now be sorted and filtered (by waiting cargo type and facilities) (r4822) -- Feature: The integer-list parser now accepts a space character as an item seperator next to the comma for openttd.cfg (r4490) -- Feature: Add support for electric railways as a seperate tracktype. Electric trains will not run on non-electrfied track unless otherwise controlled by patch option (elrails) (r4150) +- Feature: The integer-list parser now accepts a space character as an item separator next to the comma for openttd.cfg (r4490) +- Feature: Add support for electric railways as a separate tracktype. Electric trains will not run on non-electrified track unless otherwise controlled by patch option (elrails) (r4150) - Feature: A new multi-lingual multi-measuring-unit system (r4126) - Feature: Add proper OPENTTD <> LOCALCODE conversion using iconv. Savegames with special characters will be legible in filesystem (r4105) - Feature: Undraw the mouse when it leaves the window and draw it again when it enters (r4075, r4083) @@ -3531,7 +4049,7 @@ - Feature: Delete news items about vehicles when they get stale (r3757) - Feature: Save patch settings with the savegame so you are presented with the same behaviour when loading the game on another machine/installment (r3726) - Feature: Add 2cc (two company colours) livery schemes. This replaces the original colour selection window (r3717, r6455) -- Feature: [OSX] Added support for tripple binaries (binaries optimised for G3, G5 and i686) (r3674) +- Feature: [OSX] Added support for triple binaries (binaries optimised for G3, G5 and i686) (r3674) - Feature: Allow autoreplacing of train wagons (r3535) - Feature: Allow sorting of vehicle lists by model or value (r3528) - Feature: Allow trains details view to be resized (r3521) @@ -3554,7 +4072,7 @@ - Codechange: Remove MSVC6 support. The compiler was too stupid and too many workarounds were needed. Please switch to mingw or VC2005++ express (r5286) - Codechange: Allow a switch in Makefile.config to disable threads in OpenTTD (r5978) - Codechange: [Windows] Add native x64 target to VS2005 project files (r5813) -- Codechange: [Windows] The exception dialog showed the last modification-date of win32.c instead of the last compilation-date (r5801) +- Codechange: [Windows] The exception dialogue showed the last modification-date of win32.c instead of the last compilation-date (r5801) - Codechange: Add owner attribute to canals and locks. This makes them more useful in multiplayer games, as only the owner can delete them. Does not affect usage (r5084) - Codechange: [Windows] Add MSVC2005 support, project and solution files are in the _vs80.* files (r4581) - Codechange: [OSX] Shark (Xcode's profiling tool) can now relate CPU usage to lines (r3611) @@ -3577,9 +4095,9 @@ - Fix: MiniMap was misplacing vehicles sometimes [FS#402] (r7166) - Fix: Some mouse events possibly lost under high CPU load, handle mouse input right away instead of waiting for GameLoop [FS#221, SF1168820] (r7157) - Fix: Some keyboard events possibly lost under high CPU load, handle keyboard input in place instead of global variables magic [FS#279] (r7153) -- Fix: 'Position of Main Toolbar' option is not honored when starting new game or loading saved [FS#172] (r7130) -- Fix: Synchronize the engine-renew settings of a player when joining a multiplayer game (r7126) -- Fix: Several errors/glitches related to multiplayer and bankrupcty (mainly server), and non-updated company-information (r7125) +- Fix: 'Position of Main Toolbar' option is not honoured when starting new game or loading saved [FS#172] (r7130) +- Fix: Synchronise the engine-renew settings of a player when joining a multiplayer game (r7126) +- Fix: Several errors/glitches related to multiplayer and bankruptcy (mainly server), and non-updated company-information (r7125) - Fix: Cloning a vehicle that has been refitted would incur the expense as running costs, not new vehicles [FS#371] (r7115) - Fix: Do not let ships enter partial water tiles under bridges; they will travel up land... (r7110) - Fix: AI tried to build road from the back or side of road stop/depot (r7069) @@ -3602,7 +4120,7 @@ - Fix: Reset the location of the last sound as that location can be outside the map when you are loading another, (smaller) map (r6437) - Fix: Show an error message when executing 'scrollto x' with x < 0 or >= MapSize() instead of asserting later on [FS#340] (r6435) - Fix: Station catchment area persists after switching tools [FS#136] (r6368) -- Fix: Do not reset the current cursor action when centering on a depot/hangar (r6360) +- Fix: Do not reset the current cursor action when centring on a depot/hangar (r6360) - Fix: Go to hangar orders for aircraft could get spuriously removed when a road or rail depot got deleted (r6355) - Fix: Due to some off-by-one errors the width or height of a clipping rectangle could become 0, which is not sensible. This should fix a very rare and hard to trigger assertion in GfxFillRect() (r6351) - Fix: Never allow scrolling the map in the main menu (scroll-settings were not reset if switched to mainmenu) (r6037) @@ -3634,7 +4152,7 @@ - Codechange: Verify the presence of music files in the gm/ folder. This should also solve some 100% CPU buildup for some users - Fix: Certain combinations of trains crash when moved around inside the depot - Fix: Reversed arrow-sign in the multiplayer list column headers on sort by name -- Fix: Industry production change button does not work for oilrig passangers +- Fix: Industry production change button does not work for oilrig passengers - Fix: Helicopters stopping in depot after autorenew/autoreplace - Fix: MorphOS crashes when you go a level up in the root level - Fix: UDP sockets were used even if network-availability was set to false @@ -3647,7 +4165,7 @@ - Feature: Add a fully optional configure script that is a wrapper around the cumbersome makefile.config - Codechange: [NPF] Disable NPF totally for ships as it wholly kills performance. Only for 0.4/ branch and 0.4.8 - Fix: Redraw the screen when switching the signal side in the patches window -- Fix: It was possible to dig into a tunnel if certain rail combinations were ontop of it +- Fix: It was possible to dig into a tunnel if certain rail combinations were on top of it - Fix: A HQ could only be flooded at its northern tile, the other 3 were immune to water - Fix: Fix several glitches concerning foundations. Houses, property (rail/road/bridge/etc.) and cursor are now aligned properly - Fix: Prohibit altering a road tile while road works are in progress. This fixes some glitches like 'turning' the excavation by adding/removing road bits or removing the road piece @@ -3681,12 +4199,12 @@ - Fix: Reset the last built railtype when starting a new game - Fix: Cloned vehicles get the same service interval as the original vehicle - Fix: Game no longer errors out when 'Many random towns' is selected in the scenario editor -- Fix: Obscure road dragging bug. The road build command did not return the appropiate error message of invalid-slope when building road +- Fix: Obscure road dragging bug. The road build command did not return the appropriate error message of invalid-slope when building road - Fix: Temperate bank will no longer appear (during game) in tropic landscape. This bug is from the original game - Fix: Specify the 'stopall' console command as a debug command - Fix: Fixed a problem that caused DeliverGoodsToIndustry to not work as intended - Fix: Ships and aircraft can now be used as feeders as well -- Fix: When a multiheaded train is sold the pointers were not updated correctly causing sporadious crashes/disconnects +- Fix: When a multiheaded train is sold the pointers were not updated correctly causing sporadic crashes/disconnects - Fix: New plantations now cause the correct '.. being planted ..' news item - Fix: Danish town names were saved/loaded as Swiss - Fix: Removing roads on crossings was done without a check for ownership @@ -3705,8 +4223,8 @@ ------------------------------------------------------------------------ - Feature: [OSX] Add support for triple-binaries (PPC, PPC970, i386) (r4102) - Fix: [OSX] Crash when going to fullscreen (r4100) -- Fix: Allow unused wagons to have their first cache set. Fixes faulty cache-warning message and noticably speeds up depot operations (r4094) -- Fix: [NPF] Trains & busses were unable to find a route when leaving a depot or bus stop (r4072) +- Fix: Allow unused wagons to have their first cache set. Fixes faulty cache-warning message and noticeably speeds up depot operations (r4094) +- Fix: [NPF] Trains & buses were unable to find a route when leaving a depot or bus stop (r4072) 0.4.6 (2006-03-22) @@ -3719,7 +4237,7 @@ - Fix: [Makefile] Make sure the ICON_DIR gets created before copying files there (r4032) - Fix: [Windows] Change compiler settings to use the multithreaded CRT. This prevents certain crashes on multi-threaded machines (r4031) - Fix: [NPF] Road vehicles planning through the back of depots and stations [SF#1453646] (r4029) -- Fix: Use the title of a savegame in the saveload dialog-editbox (r4018) +- Fix: Use the title of a savegame in the saveload dialogue-editbox (r4018) - Fix: Improper resolution written to the configuration file when exiting from fullscreen (r4017) - Fix: When removing rail track from a tile where only X and Y pieces exist, explicitly update signals in both directions (r4016) - Fix: Default the patch-setting 'pause_on_join' to true (r4015) @@ -3731,12 +4249,12 @@ - Fix: Update german and finnish languages (r3968) - Fix: Properly set back the owner of a crossing/road-under bridge after removing it (r3967) - Fix: [Autoreplace] Autoreplacing trains now keep their tile length instead of their pixel length [FS#67] (r3964) -- Fix: Mark the right tile as dirty. It is just a graphical glitch which happend in r1592 (r3962) +- Fix: Mark the right tile as dirty. It is just a graphical glitch which happened in r1592 (r3962) - Fix: Fix crash when resizing news history window (r3961) -- Fix: Correctly implement minimum search, so road vehicles head twoards the closest station, not the last one in the list (r3960) +- Fix: Correctly implement minimum search, so road vehicles head towards the closest station, not the last one in the list (r3960) - Fix: The tooltips for raising and lowering land buttons in the scenario editor are interchanged [FS#61] (r3959) - Fix: Correctly restore the roadside after roadworks are finished (r3957) -- Fix: [Multistop] Check the status of the destination road stop instead of a station's first road stop. This only has effect with road vehicle queuing disabled (r3956) +- Fix: [Multistop] Check the status of the destination road stop instead of a station's first road stop. This only has effect with road vehicle queueing disabled (r3956) - Fix: Validate the setting of max_companies/spectators through the console (r3955) - Fix: Improve game-load times (r3954) - Fix: On loading a game, GetPlayerRailtypes() did not account for the fact that vehicles are introduced a year after their introduction date. This will also relieve possible (rare) network desyncs (r3952) @@ -3752,7 +4270,7 @@ - Feature: Shortcut CTRL + U that clears the current input-box (r2385) - Feature: [NewGRF] Implement the mechanism for handling NewGRF callbacks (r2389) - Feature: [NewGRF] Implement the 'refit capacity' callback (r2389) -- Feature: Saving games happen in a seperate thread (r2391) +- Feature: Saving games happen in a separate thread (r2391) - Feature: [NewGRF] Implement powered wagons, and the callback that goes with it (r2414) - Feature: [NewGRF] Implement shorter train vehicles (r2428) - Feature: New display option: 'transparent station signs' (r2438) @@ -3769,7 +4287,7 @@ - Feature: Clone vehicles (r2764) - Feature: When starting without a config file determine the language on basis of the current locale (r2777) - Feature: [NewGRF] Add support for 'extended bytes' (r2872) -- Feature: [Localisation] Major step twoards ISO-8859-15: Implement missing characters (r2879) +- Feature: [Localisation] Major step towards ISO-8859-15: Implement missing characters (r2879) - Feature: Implement the console command rm to remove savegames (r2941) - Feature: Danish town names (r2957) - Feature: Menu option to toggle console (r2958) @@ -3786,7 +4304,7 @@ - Feature: 'status' and 'clients' now show the IP of the players (r3067) - Feature: Make it possible to create a screenshot from the console that is both big and has no console, or any combination of (r3068) - Feature: [NewGRF] Add support for rail vehicle weight greater than 255 tons (r3071) -- Feature: 'HOME' icon to saveload dialogs that jumps to the default save/load directory based on the dialog (r3096) +- Feature: 'HOME' icon to saveload dialogues that jumps to the default save/load directory based on the dialogue (r3096) - Feature: Turkish translation (r3120) - Feature: [NewGRF] Support positioning of rail vehicle visual effects (r3132) - Feature: [NewGRF] Support for articulated rail vehicles (r3139) @@ -3817,7 +4335,7 @@ - Fix: Check selling land and setting player colour. Also an extra map-bounds check for terraforming (r2384) - Fix: [Realistic acceleration] Very slow trains no longer get an increase in maximum speed when part of them is in a depot (r2388) - Fix: [NewGRF] Load power for dual-headed engines correctly (r2400) -- Fix: [NewGRF] When resolving callbacks, dont ignore wagon overrides (r2410) +- Fix: [NewGRF] When resolving callbacks, don't ignore wagon overrides (r2410) - Fix: Station ratings are not affected by speed limits from realistic acceleration anymore (r2411) - Fix: Building vehicles without depot crashed the game (r2412) - Fix: Certain resolutions caused a crash when minimap was partly dragged outside the game window (r2424) @@ -3837,7 +4355,7 @@ - Fix: Change the fence algorithm so it removes fences when no farm tile is adjacent (r2739) - Fix: Tree tiles above the snow line got redrawn disproportionately often (r2750) - Fix: Depots could build trains of the wrong track type (r2764) -- Fix: Sort the directories in the scenarion/savegame list (r2860) +- Fix: Sort the directories in the scenario/savegame list (r2860) - Fix: On OS/2 show the trailing \ if the current directory is a root directory (r2860) - Fix: Return a proper version number, when testing the TTDPatch version in the SkipIf action (r2862) - Fix: Change the way NewGRFs are loaded, this saves quite some sprite slots - about 2000 for DBSetXL for example (r2868) @@ -3864,15 +4382,15 @@ - Fix: There are only 2 possible directions for ship depots, not 4 (r3199) - Fix: Allow bribing up to the maximum rating for bribing, do not disable this option at some arbitrary value early (r3201) - Fix: Do not lower land on tunnel, even with diag tracks on it (r3228) -- Fix: Crash when making a screenshotin the main menu (r3235) -- Fix: Crash when starting a scenarion via 'New Game' fails (r3235) +- Fix: Crash when making a screenshot in the main menu (r3235) +- Fix: Crash when starting a scenario via 'New Game' fails (r3235) - Fix: Determine clicked status of sticky icon from window flags rather than the widget click state (r3247) - Fix: Graphical glitch with autorail tool on a certain tile-types (r3254) -- Fix: Center the X of the window close button (r3302) +- Fix: Centre the X of the window close button (r3302) - Fix: [NewGRF] Unload engine names before loading grf files (r3316) - Fix: Network window crash when it receives invalid information for example from the integrated nightly, so validate the network-input when it is received (r3322) - Fix: Build failed if SDL is built without pthread support (r3326) -- Fix: Move initialization of vehicle random_bits to DC_EXEC blocks to allow use of Random() instead of InteractiveRandom(), which will alleviate some possib le network desyncs (r3352) +- Fix: Move initialisation of vehicle random_bits to DC_EXEC blocks to allow use of Random() instead of InteractiveRandom(), which will alleviate some possib le network desyncs (r3352) - Fix: The default AI tried to change the service intervals of vehicles via the CMD_CHANGE_TRAIN_SERVICE_INT command - regardless of the type of the vehicle (r3367) - Fix: Out-of-bounds array access when road vehicles overtook in a curve caused desyncs (r3371) - Fix: Update signal states when building or removing rail station blocks (r3372) @@ -3893,7 +4411,7 @@ - Fix: Incorrect validating of tree-planting command which can allow a buffer-overflow (r3446) - Fix: [NewGRF] When changing the sprite ID of a vehicle, if it is not FD (custom graphics), the value needs to changed from a 16bit array offset to an array index (r3449) - Fix: You could not remove an item from a list-type of config ingame from the configuration file (r3475) -- Fix: [NewGRF] Always reinitialize the TTDPatch flags as patch settings may have changed (r3486) +- Fix: [NewGRF] Always reinitialise the TTDPatch flags as patch settings may have changed (r3486) - Fix: Price for demolishing a bridge was dependent on orientation and map size (r3487) @@ -3923,7 +4441,7 @@ 0.4.0 (2005-05-15) ------------------------------------------------------------------------ - Feature: Bigger maps. Enjoy playing up to 2028x2048 (64 times as big as you were used to!) -- Feature: New realistic acceleration; should be much better. Inlcudes gigger penalty on narrow curves and speedlimits in depots/stations +- Feature: New realistic acceleration; should be much better. Includes bigger penalty on narrow curves and speedlimits in depots/stations - Feature: It is now possible to build multiple road stations (up to 8) on a single station - Feature: New PathFinder (NPF). Support for train/road and ship based on A*. No more braindead pathfinding - Feature: Dynamic towns/industries/stations/vehicles/signs/orders/everything, up to 64K @@ -3949,7 +4467,7 @@ - Fix: Game no longer crashes when right-clicking a disabled Full Load button [SF#1113399] - Fix: Dedicated server boots again [SF#1114100] - Fix: Game crashed sometimes when there were no industries in the map [SF#1114950] -- Fix: In the main menu, when starting a new game while the load game dialog is open, openttd asserts [SF#1115200] +- Fix: In the main menu, when starting a new game while the load game dialogue is open, openttd asserts [SF#1115200] - Fix: Non-stop orders are no longer accidentally skipped [SF#1117538] - Fix: Generate the correct smoke type for diesel trains [SF#1116619] - Fix: Max passengers/mail variables are now 32 bit [SF#1119308] @@ -3958,16 +4476,16 @@ - Fix: Carriages of NewGRFs can be refitted again [SF#1143587] - Fix: Production values of temperate-climate banks can now be altered [SF#1117730] - Fix: Mapwrap fixed in ship_cmd.c (was implicitly ok before biggermaps) [SF#1118810] -- Fix: Assertion error on kick. When a company is cleaned all its windows need to be closed. For global vehicle lists, the no-staiton index of -1 was not taken into account [SF#1117327] +- Fix: Assertion error on kick. When a company is cleaned all its windows need to be closed. For global vehicle lists, the no-station index of -1 was not taken into account [SF#1117327] - Fix: Speeding up when pressing ALT+TAB (Windows) [SF#1114261] - Fix: Signals disappear after typing text and pressing enter!. Signs in Scenario Editor have no owner so ignore that [SF#1149403] - Fix: Single tile Bridge in Volcano City scenario. Some bridges still had the old single-tile bridge bug that was caused by improper town growth in combination with DC_AUTO. Fixed the scenario [SF#1149766] -- Fix: Stop startup memory corruption crash using optimized MSVC6. MSVC6 workaround as it is too stupid again for its own good [SF#1119147] +- Fix: Stop startup memory corruption crash using optimised MSVC6. MSVC6 workaround as it is too stupid again for its own good [SF#1119147] - Fix: Dedicated server now accepts '-g' (load game) as param [SF#1101874] - Fix: Crash with German umlauts in station names [SF#1155696] - Fix: Segmentation fault when loading savegame, out of bounds array check [SF#1158618] - Fix: Autosave ignoring settings [SF#1149487] -- Fix: [Windows] Infinite access for A:\. Only requery drive(s) if the user changes a directory, also supress the OS error box that pops up on some windows machines [SF#1024703] +- Fix: [Windows] Infinite access for A:\. Only requery drive(s) if the user changes a directory, also suppress the OS error box that pops up on some windows machines [SF#1024703] - Fix: Create Lake and draggable Create Desert tools [SF#1095110] - Fix: Trains 'Go to depot' button: click twice skip to next order [SF#1172878] - Fix: Engine power not updated w/auto replace' autoreplace now forces an update of the cache [SF#1146215] @@ -3985,7 +4503,7 @@ - Fix: Train in tunnel is not properly detected by signal code [SF#1185176] - Fix: [NewGRF] Rotors of custom helicopters are displayed correctly in the hangar window - Fix: Scenario Editor now handles human-made roads better (try to build a city layout before placing the city, finally that works very nice) -- Fix: [NewGRF] Helicopters are correctly recognized +- Fix: [NewGRF] Helicopters are correctly recognised - Fix: [Autoreplace] Made sure that planes only show planes in replace GUI and helicopters only show helicopters - Fix: Crash when generating tropical maps - Fix: [Autoreplace] Cheaters can no longer exploit autoreplace to get vehicles, that is not invented yet @@ -4004,7 +4522,7 @@ ------------------------------------------------------------------------ - Feature: Resizeable windows. All useful windows are already made resizeable - Feature: Highscore chart (accessible from the difficulty window) with top 5 companies for a given difficulty (select the difficulty in the menu) -- Feature: Endgame score on 1 jan 2051 where you are added to the highscore if sufficiently large points have been accumulated. Game is paused while +- Feature: Endgame score on 1 Jan 2051 where you are added to the highscore if sufficiently large points have been accumulated. Game is paused while - Feature: Visually enhanced autorail placing - Feature: Autoreplace Vehicles (accessible from the vehicle lists) - Feature: A counter to tell how many engines you have of each type to the autoreplace vehicle windows @@ -4020,7 +4538,7 @@ - Feature: [Windows] Dedicated server is now functioning correctly - Feature: Added keyboard shortcuts for the order window - Feature: Aircraft refit options have been restricted to 'sane' values -- Feature: Allows setting the production values of the rawmaterial producing industries in the editor +- Feature: Allows setting the production values of the raw material producing industries in the editor - Feature: Console support for loading maps. Use 'load', 'list_files' and 'goto_dir' to navigate and load games - Feature: Display server port in the multiplayer game info window - Feature: Dynamite in landscaping toolbar (hotkey 'D') @@ -4075,7 +4593,7 @@ - Fix: Destroyed train locks crossings [SF#1105112] - Fix: Upgrade rail fails when train under bridge [SF#1105281] - Fix: Trains do not think they are on a slope any more while they drive around in a tunnel [SF#1105959] -- Fix: Buoys can now only be removed if no ship has it in their schedule. This makes buoys more useable in multiplayer games again, as buoys cannot be deleted by other players if they are used [SF#1105963] +- Fix: Buoys can now only be removed if no ship has it in their schedule. This makes buoys more usable in multiplayer games again, as buoys cannot be deleted by other players if they are used [SF#1105963] - Fix: Graph's keys get confused [SF#1106354] - Fix: Placing signals with 2x1 drags is treated as placing a single signal [SF#1106930] - Fix: Console ignoring return character occasionally [SF#1107350] @@ -4089,7 +4607,7 @@ - Fix: [Network] Bug in bind system. Advertising failed on systems with more than 1 ip, and server_bind active to one of them - Fix: [Network] Disabled 'money-cheat' (read: bug which could give people a lot of money) - Fix: [SDL] Now the binary never links to SDL if DEDICATED is set -- Fix: [Windows] Somehow mousewheel was disabled on windows using SDL; reenabled again +- Fix: [Windows] Somehow mousewheel was disabled on windows using SDL; re-enabled again - Fix: A modified client could try to replace a vehicle to an invalid engine ID and crash the server - Fix: Autoreplace vehicle lists are now redrawn when a new vehicle becomes available - Fix: Buy Vehicle GUI now shows HPs bigger than 32000 correctly @@ -4157,8 +4675,8 @@ - Change: [OSX] Moved data and lang folders inside OpenTTD. This got rid of the package system too, making installing/updating easier - Fix: [OSX] Music is now on by default again - Fix: [OSX] Made error opens the console -- Fix: [SDL] Added a confirmation dialog when quitting the game -- Fix: A train can leave and enter the same depot at the same time, then the trai simply got stuck +- Fix: [SDL] Added a confirmation dialogue when quitting the game +- Fix: A train can leave and enter the same depot at the same time, then the train simply got stuck - Fix: Crash when making png screenshot with odd resolution - Fix: Directories in *nix are now sorted alphabetically in ascending order - Fix: Do not consider a road station as street when growing the town @@ -4166,7 +4684,7 @@ - Fix: Game options (like drive side) are not taken from the scenario when using 'new game' command - Fix: Order checker now correctly detects station with invalid facilities - Fix: Polished GUI in a lot of ways -- Fix: Saving or loading a map doesnt pauses the game anymore +- Fix: Saving or loading a map doesn't pauses the game anymore - Fix: Some bridge part is not displayed transparent in transparent mode - Fix: Starting with -r option allows all resolutions - Fix: The pathfinder no longer sees rail with another owner as a possible route @@ -4179,14 +4697,14 @@ - Fix: Crashed trains are not reported to have too few orders any more [SF#1087403] - Fix: Backup-order-list was not closed with an OT_NOTHING, [SF#1086375] - Fix: Docks now have a button to display the catchment area [SF#1085255] -- Fix: Invisible trains. Weird macros and MSVC optimizing do not always mix [SF#1070274] +- Fix: Invisible trains. Weird macros and MSVC optimising do not always mix [SF#1070274] - Fix: Number of passengers and mail in exclusive test offer window is swapped [SF#1068269] - Fix: Pause key pauses the game [SF#1066504] - Fix: Resetting file name after deleting a file [SF#1066121] - Fix: Code error in win32.c Thanks Shai [SF#1066114] - Fix: Windows can be placed behind toolbar [SF#1065247] - Fix: Editor Map-Menu wrong String [SF#1064742] -- Fix: Always report a bus/lorry station as unpassable [SF#1058809] +- Fix: Always report a bus/lorry station as impassable [SF#1058809] - Fix: Refit train window stays open [SF#1053397] - Fix: Incorrect Tooltip in Road Vehicle List [SF#1050993] - Fix: Monorail and Maglev sounds are swapped [SF#1048596] @@ -4195,7 +4713,7 @@ - Fix: 'Allow goto depot' turned off, no checkpoints in orders [SF#1035066] - Fix: Place sign and blue message box [SF#1034318] - Fix: Wrong mapping between music titles and songs [SF#1033947] -- Fix: Some screensizes crashes OpenTTD. Fix in general bug that only allows resolutions which were multiple of 8 in width and height. Also use closest possible resolution in fullscreen if window size is not a valid resolution [SF#1030393] +- Fix: Some screen sizes crashes OpenTTD. Fix in general bug that only allows resolutions which were multiple of 8 in width and height. Also use closest possible resolution in fullscreen if window size is not a valid resolution [SF#1030393] - Fix: 'Service at' orders ignored after 2090. After 2090 year is reset to 1. Jan 2090, so most of the time, last service was in the future and no service ensured [SF#1030275] - Fix: Building a station acted weird in some rare situations [SF#1029064] - Fix: Ships could unload cargo at stations without docks [SF#1022227] @@ -4229,7 +4747,7 @@ - Feature: Added new icons for landscaping toolbar - Feature: Added original vehicle names file. Select it from the list. Vehicles will have real name, all other strings are in English - Feature: Added/heavily modified patch by truesatan cheat change date -- Feature: Align toolbar left/center/right patch +- Feature: Align toolbar left/centre/right patch - Feature: All TTDLX kind of savegames are supported (.SS1, .SV1, .SV2, .SV0, .SS0) - Feature: Alpha version of a new AI - Feature: Autodetect server in LAN via udp @@ -4248,7 +4766,7 @@ - Feature: Option to sort vehicles in vehicle-list window by different criteria - Feature: Performance details window in company league menu - Feature: Proper crediting to graphics artists to about box -- Feature: Removing town roads has been finetuned +- Feature: Removing town roads has been fine tuned - Feature: Safeguard against invalid values in Patches window. Values will stick to their defined min and max values - Feature: Sorting savegames, scenarios by name/date - Feature: Terraforming toolbar (in the plant tree menu) @@ -4275,11 +4793,11 @@ - Fix: Bulldozing stuff with cheat magic_dynamite turned on does not lower city ratings - Fix: Change SDL_HWSURFACE back to SDL_SWSURFACE (Diablo-3D); better performance - Fix: Coast line near edge of map and near oilrigs -- Fix: Company-value was not updated immediatly if legend was changed +- Fix: Company-value was not updated immediately if legend was changed - Fix: Delete canal under bridge was not possible - Fix: Disable Fast Forward in network games visually (did not work anyways, just showed graphical output) - Fix: Error message for 'game load failed' when no town is in a scenario -- Fix: Game not pausing when saveload dialog is clicked in main menu +- Fix: Game not pausing when saveload dialogue is clicked in main menu - Fix: Load Scenario fix - Fix: Make Endianness check 100% accurate - Fix: Memory leak in news system @@ -4293,7 +4811,7 @@ - Fix: Possible to disable some patches (e.g. default service interval) again by setting them to 0 - Fix: Problems around exclusive transport rights - Fix: Rail road crossings on slopes are now possible -- Fix: Random crash when player-face was displayed in error-dialog +- Fix: Random crash when player-face was displayed in error-dialogue - Fix: Rare mousewheel scrolling with scrollbar crash - Fix: Road vehicles do not get stuck any more at stations - Fix: Savegames are sorted with newest date first by default @@ -4336,7 +4854,7 @@ - Fix: Weird two tile bridges on slopes [SF#996065] - Fix: Empty strings in signs [SF#997303] - Fix: Junction after tunnel bug [SF#997703] -- Fix: 'autosave' directoy creation (MorphOS/AmigaOS) [SF#999592] +- Fix: 'autosave' directory creation (MorphOS/AmigaOS) [SF#999592] - Fix: I lost all wagons. Half-assed fix for lost wagons. But now users can at least fix this problem. Consolecommand 'resetengines' [SF#1001540] - Fix: BuildRoadOutsideStation fix [SF#1006530] - Fix: Autorenew issues [SF#1006715] @@ -4370,7 +4888,7 @@ - Feature: Extra dynamite, allow the removal of town-owned roads, bridges, tunnels for a popularity rating penalty - Feature: Magic bulldozer cheat, that lets you remove industries, unmovables and town-owned buildings, roads and bridges - Feature: Enabled 'remove' button for stations -- Feature: Cheat GUI (activate with crtl-alt-c) The game remembers if you have used a cheat +- Feature: Cheat GUI (activate with ctrl-alt-c) The game remembers if you have used a cheat - Feature: Station sort implemented using qsort() - Feature: Station list shows #of stations owned by player - Feature: Split canal/lock tool in two tools, one for building canals, one for locks @@ -4397,7 +4915,7 @@ - Feature: Ability to add 'service if needed' orders (the 'full load' button changes to 'service' after selecting a depot order) - Feature: If a vehicle has depot orders in its schedule, automatic servicing is disabled - Feature: Patch setting so that helicopters get serviced automatically on helipad -- Feature: Center toolbar on screen +- Feature: Centre toolbar on screen - Feature: Sort savelist by date - Feature: Allow scrolling in both directions - Feature: Two new airports (metropolitan in 1980 and international in 1990) @@ -4411,10 +4929,10 @@ - Change: Crossing tunnels is now considered a cheat - Change: Made helicopters able to land on small airports again - Fix: Removing and upgrading tracks under a bridge when a train is on the bridge -- Fix: Pause button was not synched in network games +- Fix: Pause button was not synced in network games - Fix: Crash caused by invalid screen resolutions - Fix: AI can not build tubular bridges in 1950, etc. Same restrictions apply to it, as to human players -- Fix: Volume, liters, was x100, should be x1000 +- Fix: Volume, litres, was x100, should be x1000 - Fix: Bridge building by towns was screwed when executed without testing first - Fix: Better AI route finding - Fix: AI builds less inner-city bus stations @@ -4436,10 +4954,10 @@ - Fix: Nordic characters - Fix: Also restore Service Interval when rebuying vehicle - Fix: Crash with map bits > 8 -- Fix: UFO crash in busstop +- Fix: UFO crash in bus stop - Fix: Town actions has empty row - Fix: Train stuck with the head in one depot and tail in another -- Fix: Optimized random radio tower spreading +- Fix: Optimised random radio tower spreading - Fix: Ground below trees is sometimes not covered by snow - Fix: Fast forward button in scenario editor - Fix: Screenshot hotkey does not function in scenario editor @@ -4459,7 +4977,7 @@ - Fix: 'Refit train' button remains - Fix: Enable up/down scrolling with the mouse - Fix: 1920 all trains -- Fix: Wrong heli breakdownspeed +- Fix: Wrong heli breakdown speed - Fix: Station list cargo waiting display bug - Fix: Bug that could allow rails on steep slopes - Fix: Train depots and checkpoints not flooded by water @@ -4525,8 +5043,8 @@ - Fix: Cactus plants died on desert - Fix: Invalid letters in Spanish town names - Fix: Rail upgrade button -- Fix: Makefile reorganization -- Fix: Zoom out button not grayed out +- Fix: Makefile reorganisation +- Fix: Zoom out button not greyed out - Fix: No space between some values and units - Fix: Station catchment outline-tiles were not shown properly on slopes - Fix: Oil rig station was not properly deleted @@ -4567,7 +5085,7 @@ - Fix: Array bounds error with train breakdown speeds - Fix: Towns deleting random tiles around houses - Fix: Incorrect road vehicle list caption for competitors -- Fix: Vehicle menu graying after a bankruptcy +- Fix: Vehicle menu greying after a bankruptcy - Fix: Selective road removal - Fix: Make houses available in 1920 to prevent hang - Fix: Duration of breakdown smoke @@ -4614,7 +5132,7 @@ - Feature: High bridges - Feature: ZLIB savegames (smaller than before) - Feature: PNG, PCX screenshot support -- Feature: Indicate with gray in vehicle popup menus if company has no vehicles of that type +- Feature: Indicate with grey in vehicle popup menus if company has no vehicles of that type - Feature: Clicking on the money brings up finances - Feature: [OSX] Distribution now uses Apples package system for easier updates - Feature: [OSX] Application is now a proper bundle application @@ -4712,12 +5230,12 @@ - Change: Increased number of windows on screen to 20 - Change: [OSX] Start when doubleclicked - Change: [OSX] Significant performance increase -- Change: Optimized startup time +- Change: Optimised startup time - Change: Sorted savegame list - Fix: News window was moved strangely when resizing - Fix: Fixed sign drawing bug in max zoom out mode - Fix: Road vehicles sometimes getting stuck -- Fix: Connecting tracks behind depot causing incorrect signal behavior +- Fix: Connecting tracks behind depot causing incorrect signal behaviour - Fix: Save/load diskspace bug - Fix: Incorrect bridge cost for long bridges - Fix: Disallow buoy in north corner @@ -4785,7 +5303,7 @@ - Fix: Missing candy initial cargo payment values - Fix: Goods and Food/FizzyDrinks subsidies - Fix: Graphical glitch in subsidies window -- Fix: Take over company dialog was not shown properly +- Fix: Take over company dialogue was not shown properly - Fix: Crash if player windows were open while the company went bankrupt - Fix: Train slowness on hills @@ -4800,7 +5318,7 @@ 0.1.1 (2004-03-14) ------------------------------------------------------------------------ - Feature: Preliminary presignal support -- Feature: Center windows properly in higher resolutions +- Feature: Centre windows properly in higher resolutions - Feature: Command line -g flag now optionally takes a game to load - Add: External MIDI driver for Unix version - Add: DirectMusic driver for Windows version diff --git a/config.lib b/config.lib index 145d6c6f5d..2c46e71279 100644 --- a/config.lib +++ b/config.lib @@ -72,6 +72,7 @@ set_default() { with_zlib="1" with_lzma="1" with_lzo2="1" + with_xdg_basedir="1" with_png="1" enable_builtin_depend="1" with_makedepend="0" @@ -91,6 +92,7 @@ set_default() { with_ccache="1" with_nforenum="1" with_grfcodec="1" + with_sse="1" save_params_array=" build @@ -145,6 +147,7 @@ set_default() { with_zlib with_lzma with_lzo2 + with_xdg_basedir with_png enable_builtin_depend with_makedepend @@ -164,6 +167,7 @@ set_default() { with_ccache with_grfcodec with_nforenum + with_sse CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD" } @@ -347,6 +351,13 @@ detect_params() { --without-liblzo2) with_lzo2="0";; --with-liblzo2=*) with_lzo2="$optarg";; + --with-xdg-basedir) with_xdg_basedir="2";; + --without-xdg-basedir) with_xdg_basedir="0";; + --with-xdg-basedir=*) with_xdg_basedir="$optarg";; + --with-libxdg-basedir) with_xdg_basedir="2";; + --without-libxdg-basedir) with_xdg_basedir="0";; + --with-libxdg-basedir=*) with_xdg_basedir="$optarg";; + --with-png) with_png="2";; --without-png) with_png="0";; --with-png=*) with_png="$optarg";; @@ -438,6 +449,10 @@ detect_params() { --with-threads) with_threads="1";; --with-threads=*) with_threads="$optarg";; + --without-sse) with_sse="0";; + --with-sse) with_sse="1";; + --with-sse=*) with_sse="$optarg";; + CC=* | --CC=*) CC="$optarg";; CXX=* | --CXX=*) CXX="$optarg";; CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";; @@ -511,10 +526,10 @@ check_params() { log 1 " PREPROCESSOR is only available for OSX" exit 1 fi - # OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP - if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then + # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP + if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then log 1 "configure: error: invalid option --os=$os" - log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]" + log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]" exit 1 fi # cpu_type can be either 32 or 64 @@ -578,6 +593,7 @@ check_params() { check_makedepend detect_cputype + detect_sse_capable_architecture if [ "$enable_static" = "1" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then @@ -818,6 +834,7 @@ check_params() { fi fi + detect_xdg_basedir detect_png detect_freetype detect_fontconfig @@ -845,7 +862,7 @@ check_params() { endian="PREPROCESSOR" fi - log 1 "checking endianess... $endian" + log 1 "checking endianness... $endian" # Suppress language errors when there is a version defined, indicating a release # It just isn't pretty if any release produces warnings in the languages. @@ -1020,7 +1037,7 @@ check_params() { log 1 "checking revision... svn detection (tag)" elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then log 1 "checking revision... git detection" - elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then + elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then log 1 "checking revision... hg detection" elif [ -f "$ROOT_DIR/.ottdrev" ]; then log 1 "checking revision... source tarball" @@ -1037,7 +1054,7 @@ check_params() { fi if [ "$doc_dir" = "1" ]; then - if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then + if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then doc_dir="share/doc/openttd" else doc_dir="$data_dir/docs" @@ -1047,7 +1064,7 @@ check_params() { fi if [ "$icon_theme_dir" = "1" ]; then - if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then + if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then icon_theme_dir="share/icons/hicolor" else icon_theme_dir="" @@ -1081,7 +1098,7 @@ check_params() { if [ "$man_dir" = "1" ]; then # add manpage on UNIX systems - if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then + if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then man_dir="share/man/man6" else man_dir="" @@ -1092,7 +1109,7 @@ check_params() { if [ "$menu_dir" = "1" ]; then # add a freedesktop menu item only for some UNIX systems - if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then + if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then menu_dir="share/applications" else menu_dir="" @@ -1424,6 +1441,7 @@ make_cflags_and_ldflags() { make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES" CFLAGS="$CFLAGS -D$os" + CFLAGS_BUILD="$CFLAGS_BUILD -D$os" if [ "$enable_debug" = "0" ]; then # No debug, add default stuff @@ -1433,7 +1451,11 @@ make_cflags_and_ldflags() { LDFLAGS="$LDFLAGS -noixemul" fi - CFLAGS="-O2 -fomit-frame-pointer $CFLAGS" + if [ "$enable_profiling" = "0" ]; then + # -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible) + CFLAGS="-fomit-frame-pointer $CFLAGS" + fi + CFLAGS="-O2 $CFLAGS" else OBJS_SUBDIR="debug" @@ -1455,12 +1477,16 @@ make_cflags_and_ldflags() { fi if [ $enable_debug -le 2 ]; then - if basename "$cc_host" | grep "gcc" &>/dev/null; then + cc_host_is_gcc=`basename "$cc_host" | grep "gcc" &>/dev/null` + if [ -n "$cc_host_is_gcc" ]; then # Define only when compiling with GCC. Some GLIBC versions use GNU # extensions in a way that breaks build with at least ICC. # This requires -O1 or more, so debug level 3 (-O0) is excluded. CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" + fi + cc_build_is_gcc=`basename "$cc_build" | grep "gcc" &>/dev/null` + if [ -n "$cc_build_is_gcc" ]; then # Just add -O1 to the tools needed for building. CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1" fi @@ -1473,13 +1499,16 @@ make_cflags_and_ldflags() { fi if [ "$enable_profiling" != "0" ]; then - CFLAGS="$CFLAGS -p" + CFLAGS="$CFLAGS -pg" LDFLAGS="$LDFLAGS -pg" fi if [ "$with_threads" = "0" ]; then CFLAGS="$CFLAGS -DNO_THREADS" fi + if [ "$with_sse" = "1" ]; then + CFLAGS="$CFLAGS -DWITH_SSE" + fi if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then if [ "$os" = "CYGWIN" ]; then @@ -1509,7 +1538,7 @@ make_cflags_and_ldflags() { fi fi - if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then + if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then LIBS="$LIBS -lpthread" fi @@ -1536,10 +1565,6 @@ make_cflags_and_ldflags() { LIBS="$LIBS -pthread" fi - if [ "$os" = "FREEBSD" ]; then - LIBS="$LIBS -lpthread" - fi - if [ "$os" = "OSX" ]; then LDFLAGS="$LDFLAGS -framework Cocoa" @@ -1581,7 +1606,7 @@ make_cflags_and_ldflags() { fi # Most targets act like UNIX, just with some additions - if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then + if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then CFLAGS="$CFLAGS -DUNIX" fi # And others like Windows @@ -1657,6 +1682,17 @@ make_cflags_and_ldflags() { CFLAGS="$CFLAGS -DWITH_LZO" fi + if [ -n "$xdg_basedir_config" ]; then + CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR" + CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`" + + if [ "$enable_static" != "0" ]; then + LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`" + else + LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`" + fi + fi + # 64bit machines need -D_SQ64 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then CFLAGS="$CFLAGS -D_SQ64" @@ -1665,17 +1701,18 @@ make_cflags_and_ldflags() { if [ -n "$png_config" ]; then CFLAGS="$CFLAGS -DWITH_PNG" - CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`" + CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`" - # The extra flags are unneeded for latest libpng-config, but some versions are so broken... if [ "$enable_static" != "0" ]; then if [ "$os" = "OSX" ]; then - LIBS="$LIBS `$png_config --prefix`/lib/libpng.a" + # fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix + # Also, despite the reason we link to the .a file ourself (because we can't use -static), we do need to ask pkg-config about possible other deps + LIBS="$LIBS `$png_config --variable=prefix`/lib/libpng.a `$png_config --libs --static | sed s@-lpng[0-9]*@@`" else - LIBS="$LIBS `$png_config --static --ldflags | tr '\n\r' ' '`" + LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`" fi else - LIBS="$LIBS `$png_config --ldflags | tr '\n\r' ' '`" + LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`" fi fi @@ -2227,52 +2264,54 @@ detect_awk() { detect_os() { if [ "$os" = "DETECT" ]; then - # Detect UNIX, OSX, FREEBSD, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP + # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP # Try first via dumpmachine, then via uname os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk ' - /linux/ { print "UNIX"; exit} - /darwin/ { print "OSX"; exit} - /freebsd/ { print "FREEBSD"; exit} - /openbsd/ { print "OPENBSD"; exit} - /netbsd/ { print "NETBSD"; exit} - /hp-ux/ { print "HPUX"; exit} - /morphos/ { print "MORPHOS"; exit} - /beos/ { print "BEOS"; exit} - /haiku/ { print "HAIKU"; exit} - /sunos/ { print "SUNOS"; exit} - /solaris/ { print "SUNOS"; exit} - /cygwin/ { print "CYGWIN"; exit} - /mingw/ { print "MINGW"; exit} - /os2/ { print "OS2"; exit} - /dos/ { print "DOS"; exit} - /wince/ { print "WINCE"; exit} - /psp/ { print "PSP"; exit} + /linux/ { print "UNIX"; exit} + /darwin/ { print "OSX"; exit} + /freebsd/ { print "FREEBSD"; exit} + /dragonfly/ { print "DRAGONFLY"; exit} + /openbsd/ { print "OPENBSD"; exit} + /netbsd/ { print "NETBSD"; exit} + /hp-ux/ { print "HPUX"; exit} + /morphos/ { print "MORPHOS"; exit} + /beos/ { print "BEOS"; exit} + /haiku/ { print "HAIKU"; exit} + /sunos/ { print "SUNOS"; exit} + /solaris/ { print "SUNOS"; exit} + /cygwin/ { print "CYGWIN"; exit} + /mingw/ { print "MINGW"; exit} + /os2/ { print "OS2"; exit} + /dos/ { print "DOS"; exit} + /wince/ { print "WINCE"; exit} + /psp/ { print "PSP"; exit} '` if [ -z "$os" ]; then os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk ' - /linux/ { print "UNIX"; exit} - /darwin/ { print "OSX"; exit} - /freebsd/ { print "FREEBSD"; exit} - /openbsd/ { print "OPENBSD"; exit} - /netbsd/ { print "NETBSD"; exit} - /hp-ux/ { print "HPUX"; exit} - /morphos/ { print "MORPHOS"; exit} - /beos/ { print "BEOS"; exit} - /haiku/ { print "HAIKU"; exit} - /sunos/ { print "SUNOS"; exit} - /cygwin/ { print "CYGWIN"; exit} - /mingw/ { print "MINGW"; exit} - /os\/2/ { print "OS2"; exit} - /gnu/ { print "UNIX"; exit} + /linux/ { print "UNIX"; exit} + /darwin/ { print "OSX"; exit} + /freebsd/ { print "FREEBSD"; exit} + /dragonfly/ { print "DRAGONFLY"; exit} + /openbsd/ { print "OPENBSD"; exit} + /netbsd/ { print "NETBSD"; exit} + /hp-ux/ { print "HPUX"; exit} + /morphos/ { print "MORPHOS"; exit} + /beos/ { print "BEOS"; exit} + /haiku/ { print "HAIKU"; exit} + /sunos/ { print "SUNOS"; exit} + /cygwin/ { print "CYGWIN"; exit} + /mingw/ { print "MINGW"; exit} + /os\/2/ { print "OS2"; exit} + /gnu/ { print "UNIX"; exit} '` fi if [ -z "$os" ]; then log 1 "detecting OS... none detected" log 1 "I couldn't detect your OS. Please use --os=OS to force one" - log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP" + log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP" exit 1 fi @@ -2680,42 +2719,64 @@ detect_libtimidity() { detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h" } -detect_lzma() { +detect_pkg_config() { + # $1 - config-param ($with_lzma value) + # $2 - package name ('liblzma') + # $3 - config name ('lzma_config', sets $lzma_config) + # $4 - minimum module version ('2.3') + # 0 means no, 1 is auto-detect, 2 is force - if [ "$with_lzma" = "0" ]; then - log 1 "checking liblzma... disabled" + if [ "$1" = "0" ]; then + log 1 "checking $2... disabled" - lzma_config="" + eval "$3=\"\"" return 0 fi - if [ "$with_lzma" = "1" ] || [ "$with_lzma" = "" ] || [ "$with_lzma" = "2" ]; then - lzma_config="pkg-config liblzma" + log 2 "detecting $2" + + if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then + pkg_config_call="pkg-config $2" else - lzma_config="$with_lzma" + pkg_config_call="$1" fi - version=`$lzma_config --modversion 2>/dev/null` + version=`$pkg_config_call --modversion 2>/dev/null` ret=$? - log 2 "executing $lzma_config --modversion" + check_version "$4" "$version" + version_ok=$? + log 2 "executing $pkg_config_call --modversion" log 2 " returned $version" log 2 " exit code $ret" - if [ -z "$version" ] || [ "$ret" != "0" ]; then - log 1 "checking liblzma... not found" + if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then + if [ -n "$version" ] && [ "$version_ok" != "1" ]; then + log 1 "checking $2... needs at least version $4, $2 NOT enabled" + else + log 1 "checking $2... not found" + fi # It was forced, so it should be found. - if [ "$with_lzma" != "1" ]; then - log 1 "configure: error: pkg-config liblzma couldn't be found" - log 1 "configure: error: you supplied '$with_lzma', but it seems invalid" + if [ "$1" != "1" ]; then + log 1 "configure: error: pkg-config $2 couldn't be found" + log 1 "configure: error: you supplied '$1', but it seems invalid" exit 1 fi - lzma_config="" + eval "$3=\"\"" return 0 fi - log 1 "checking liblzma... found" + eval "$3=\"$pkg_config_call\"" + log 1 "checking $2... found" +} + +detect_lzma() { + detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0" +} + +detect_xdg_basedir() { + detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2" } detect_png() { @@ -2742,33 +2803,7 @@ detect_png() { return 0 fi - if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then - png_config="libpng-config" - else - png_config="$with_png" - fi - - version=`$png_config --version 2>/dev/null` - ret=$? - log 2 "executing $png_config --version" - log 2 " returned $version" - log 2 " exit code $ret" - - if [ -z "$version" ] || [ "$ret" != "0" ]; then - log 1 "checking libpng... not found" - - # It was forced, so it should be found. - if [ "$with_png" != "1" ]; then - log 1 "configure: error: libpng-config couldn't be found" - log 1 "configure: error: you supplied '$with_png', but it seems invalid" - exit 1 - fi - - png_config="" - return 0 - fi - - log 1 "checking libpng... found" + detect_pkg_config "$with_png" "libpng" "png_config" "1.2" } detect_freetype() { @@ -2863,39 +2898,7 @@ detect_fontconfig() { return 0 fi - if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then - fontconfig_config="pkg-config fontconfig" - else - fontconfig_config="$with_fontconfig" - fi - - version=`$fontconfig_config --modversion 2>/dev/null` - ret=$? - check_version '2.3' "$version" - version_ok=$? - log 2 "executing $fontconfig_config --modversion" - log 2 " returned $version" - log 2 " exit code $ret" - - if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then - if [ -n "$version" ] && [ "$version_ok" != "1" ]; then - log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled" - else - log 1 "checking libfontconfig... not found" - fi - - # It was forced, so it should be found. - if [ "$with_fontconfig" != "1" ]; then - log 1 "configure: error: fontconfig-config couldn't be found" - log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid" - exit 1 - fi - - fontconfig_config="" - return 0 - fi - - log 1 "checking libfontconfig... found" + detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" } detect_icu() { @@ -2937,7 +2940,7 @@ detect_icu() { # It was forced, so it should be found. if [ "$with_icu" != "1" ]; then log 1 "configure: error: icu-config couldn't be found" - log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid" + log 1 "configure: error: you supplied '$with_icu', but it seems invalid" exit 1 fi @@ -3178,9 +3181,9 @@ detect_grfcodec() { log 2 " returned $version" log 2 " exit code $ret" - if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then - if [ -n "$version" ] && [ "$version" -lt "949" ]; then - log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled" + if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then + if [ -n "$version" ] && [ "$version" -lt "985" ]; then + log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled" else log 1 "checking grfcodec... not found" fi @@ -3220,9 +3223,9 @@ detect_nforenum() { log 2 " returned $version" log 2 " exit code $ret" - if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then - if [ -n "$version" ] && [ "$version" -lt "949" ]; then - log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled" + if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then + if [ -n "$version" ] && [ "$version" -lt "985" ]; then + log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled" else log 1 "checking nforenum... not found" fi @@ -3261,6 +3264,40 @@ detect_cputype() { rm -f tmp.64bit tmp.64bit.cpp } +detect_sse_capable_architecture() { + # 0 means no, 1 is auto-detect, 2 is force + if [ "$with_sse" = "0" ]; then + log 1 "checking SSE... disabled" + return + fi + + echo "#define _SQ64 1" > tmp.sse.cpp + echo "#include " >> tmp.sse.cpp + echo "#include " >> tmp.sse.cpp + echo "#include " >> tmp.sse.cpp + echo "int main() { return 0; }" >> tmp.sse.cpp + execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1" + sse="`eval $execute 2>/dev/null`" + ret=$? + log 2 "executing $execute" + log 2 " returned $sse" + log 2 " exit code $ret" + if [ "$ret" = "0" ]; then + log 1 "detecting SSE... found" + else + # It was forced, so it should be found. + if [ "$with_sse" != "1" ]; then + log 1 "configure: error: SSE couln't be found" + log 1 "configure: error: you force enabled SSE, but it seems unavailable" + exit 1 + fi + + log 1 "detecting SSE... not found" + with_sse="0" + fi + rm -f tmp.sse tmp.exe tmp.sse.cpp +} + make_sed() { T_CFLAGS="$CFLAGS" T_CXXFLAGS="$CXXFLAGS" @@ -3553,9 +3590,9 @@ showhelp() { echo " --awk=AWK the awk to use in configure [awk]" echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]" echo " --os=OS the OS we are compiling for [DETECT]" - echo " DETECT/UNIX/OSX/FREEBSD/OPENBSD/NETBSD/" - echo " MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/MINGW/OS2/" - echo " DOS/WINCE/PSP/HAIKU" + echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/" + echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/" + echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU" echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)" echo "" echo "Paths:" @@ -3631,13 +3668,16 @@ showhelp() { echo " --with-cocoa enables COCOA video driver (OSX ONLY)" echo " --with-sdl[=sdl-config] enables SDL video driver support" echo " --with-zlib[=zlib.a] enables zlib support" - echo " --with-liblzma[=liblzma.a] enables liblzma support" + echo " --with-liblzma[=\"pkg-config liblzma\"]" + echo " enables liblzma support" echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support" echo " --with-png[=libpng-config] enables libpng support" echo " --with-freetype[=freetype-config]" echo " enables libfreetype support" - echo " --with-fontconfig[=pkg-config fontconfig]" + echo " --with-fontconfig[=\"pkg-config fontconfig\"]" echo " enables fontconfig support" + echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]" + echo " enables XDG base directory support" echo " --with-icu[=icu-config] enables icu (used for right-to-left support)" echo " --static-icu try to link statically (libsicu instead of" echo " libicu; can fail as the new name is guessed)" @@ -3648,6 +3688,8 @@ showhelp() { echo " --with-ccache enables ccache support" echo " --with-distcc enables distcc support" echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets" + echo " --without-threads disable threading support" + echo " --without-sse disable SSE support (x86/x86_64 only)" echo "" echo "Some influential environment variables:" echo " CC C compiler command" diff --git a/configure b/configure index c80fb2f234..6b2c9d87b7 100755 --- a/configure +++ b/configure @@ -129,6 +129,7 @@ AWKCOMMAND=' if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; } if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; } if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; } + if ($0 == "SSE" && "'$with_sse'" != "1") { next; } skip += 1; diff --git a/docs/desync.txt b/docs/desync.txt new file mode 100644 index 0000000000..b0b6bd7d47 --- /dev/null +++ b/docs/desync.txt @@ -0,0 +1,268 @@ +Some explanations about Desyncs +Last updated: 2014-02-23 +------------------------------------------------------------------------ + + +Table of contents +----------------- +1.0) Desync theory + * 1.1) OpenTTD multiplayer architecture + * 1.2) What is a Desync and how is it detected + * 1.3) Typical causes of Desyncs +2.0) What to do in case of a Desync + * 2.1) Cache debugging + * 2.2) Desync recording +3.0) Evaluating the Desync records + * 3.1) Replaying + * 3.2) Evaluation the replay + * 3.3) Comparing savegames + + +1.1) OpenTTD multiplayer architecture +---- -------------------------------- + OpenTTD has a huge gamestate, which changes all of the time. + The savegame contains the complete gamestate at a specific point + in time. But this state changes completely each tick: Vehicles move + and trees grow. + + However, most of these changes in the gamestate are deterministic: + Without a player interfering a vehicle follows its orders always + in the same way, and trees always grow the same. + + In OpenTTD multiplayer synchronisation works by creating a savegame + when clients join, and then transfering that savegame to the client, + so it has the complete gamestate at a fixed point in time. + + Afterwards clients only receive 'commands', that is: Stuff which is + not predictable, like + - player actions + - AI actions + - GameScript actions + - Admin Port command + - rcon commands + - ... + + These commands contain the information on how to execute the command, + and when to execute it. Time is measured in 'network frames'. + Mind that network frames to not match ingame time. Network frames + also run while the game is paused, to give a defined behaviour to + stuff that is executing while the game is paused. + + The deterministic part of the gamestate is run by the clients on + their own. All they get from the server is the instruction to + run the gamestate up to a certain network time, which basically + says that there are no commands scheduled in that time. + + When a client (which includes the server itself) wants to execute + a command (i.e. a non-predictable action), it does this by + - calling DoCommandP resp. DoCommandPInternal + - These functions first do a local test-run of the command to + check simple preconditions. (Just to give the client an + immediate response without bothering the server and waiting for + the response.) The test-run may not actually change the + gamestate, all changes must be discarded. + - If the local test-run succeeds the command is sent to the server. + - The server inserts the command into the command queue, which + assigns a network frame to the commands, i.e. when it shall be + executed on all clients. + - Enhanced with this specific timestamp, the command is send to all + clients, which execute the command simultaneously in the same + network frame in the same order. + +1.2) What is a Desync and how is it detected +---- --------------------------------------- + In the ideal case all clients have the same gamestate as the server + and run in sync. That is, vehicle movement is the same on all + clients, and commands are executed the same everywhere and + have the same results. + + When a Desync happens, it means that the gamestates on the clients + (including the server) are no longer the same. Just imagine + that a vehicle picks the left line instead of the right line at + a junction on one client. + + The important thing here is, that noone notices when a Desync + occurs. The desync client will continue to simulate the gamestate + and execute commands from the server. Once the gamestate differs + it will increasingly spiral out of control: If a vehicle picks a + different route, it will arrive at a different time at a station, + which will load different cargo, which causes other vehicles to + load other stuff, which causes industries to notice different + servicing, which causes industries to change production, ... + the client could run all day in a different universe. + + To limit how long a Desync can remain unnoticed, the server + transfers some checksums every now and then for the gamestate. + Currently this checksum is the state of the random number + generator of the game logic. A lot of things in OpenTTD depend + on the RNG, and if the gamestate differs, it is likely that the + RNG is called at different times, and the state differs when + checked. + + The clients compare this 'checksum' with the checksum of their + own gamestate at the specific network frame. If they differ, + the client disconnects with a Desync error. + + The important thing here is: The detection of the Desync is + only an ultimate failure detection. It does not give any + indication on when the Desync happened. The Desync may after + all have occurred long ago, and just did not affect the checksum + up to now. The checksum may have matched 10 times or more + since the Desync happend, and only now the Desync has spiraled + enough to finally affect the checksum. (There was once a desync + which was only noticed by the checksum after 20 game years.) + +1.3) Typical causes of Desyncs +---- ------------------------- + Desyncs can be caused by the following scenarios: + - The savegame does not describe the complete gamestate. + - Some information which affects the progression of the + gamestate is not saved in the savegame. + - Some information which affects the progression of the + gamestate is not loaded from the savegame. + This includes the case that something is not completely + reset before loading the savegame, so data from the + previous game is carried over to the new one. + - The gamestate does not behave deterministic. + - Cache mismatch: The game logic depends on some cached + values, which are not invalidated properly. This is + the usual case for NewGRF-specific Desyncs. + - Undefined behaviour: The game logic performs multiple + things in an undefined order or with an undefined + result. E.g. when sorting something with a key while + some keys are equal. Or some computation that depends + on the CPU architecture (32/64 bit, little/big endian). + - The gamestate is modified when it shall not be modified. + - The test-run of a command alters the gamestate. + - The gamestate is altered by a player or script without + using commands. + + +2.1) Cache debugging +---- --------------- + Desyncs which are caused by inproper cache validation can + often be found by enabling cache validation: + - Start OpenTTD with '-d desync=2'. + - This will enable validation of caches every tick. + That is, cached values are recomputed every tick and compared + to the cached value. + - Differences are logged to 'commands-out.log' in the autosave + folder. + + Mind that this type of debugging can also be done in singleplayer. + +2.2) Desync recording +---- ---------------- + If you have a server, which happens to encounter Desyncs often, + you can enable recording of the gamestate alterations. This + will later allow the replay the gamestate and locate the Desync + cause. + + There are two levels of Desync recording, which are enabled + via '-d desync=2' resp. '-d desync=3'. Both will record all + commands to a file 'commands-out.log' in the autosave folder. + + If you have the savegame from the start of the server, and + this command log you can replay the whole game. (see Section 3.1) + + If you do not start the server from a savegame, there will + also be a savegame created just after a map has been generated. + The savegame will be named 'dmp_cmds_*.sav' and be put into + the autosave folder. + + In addition to that '-d desync=3' also creates regular savegames + at defined spots in network time. (more defined than regular + autosaves). These will be created in the autosave folder + and will also be named 'dmp_cmds_*.sav'. + + These saves allow comparing the gamestate with the original + gamestate during replaying, and thus greatly help debugging. + However, they also take a lot of disk space. + + +3.1) Replaying +---- --------- + To replay a Desync recording, you need these files: + - The savegame from when the server was started, resp. + the automatically created savegame from when the map + was generated. + - The 'commands-out.log' file. + - Optionally the 'dmp_cmds_*.sav'. + Put these files into a safe spot. (Not your autosave folder!) + + Next, prepare your OpenTTD for replaying: + - Get the same version of OpenTTD as the original server was running. + - Uncomment/enable the define 'DEBUG_DUMP_COMMANDS' in + 'src/network/network_func.h'. + (DEBUG_FAILED_DUMP_COMMANDS is explained later) + - Put the 'commands-out.log' into the root save folder, and rename + it to 'commands.log'. + - Run 'openttd -D -d desync=3 -g startsavegame.sav'. + This replays the server log and creates new 'commands-out.log' + and 'dmp_cmds_*.sav' in your autosave folder. + +3.2) Evaluation the replay +---- --------------------- + The replaying will also compare the checksums which are part of + the 'commands-out.log' with the replayed gamestate. + If they differ, it will trigger a 'NOT_REACHED'. + + If the replay succeeds without mismatch, that is the replay reproduces + the original server state: + - Repeat the replay starting from incrementally later 'dmp_cmds_*.sav' + while truncating the 'commands.log' at the beginning appropriately. + The 'dmp_cmds_*.sav' can be your own ones from the first reply, or + the ones from the original server (if you have them). + (This simulates the view of joining clients during the game.) + - If one of those replays fails, you have located the Desync between + the last dmp_cmds that reproduces the replay and the first one + that fails. + + If the replay does not succeed without mismatch, you can check the logs + whether there were failed commands. Then you may try to replay with + DEBUG_FAILED_DUMP_COMMANDS enabled. If the replay then fails, the + command test-run of the failed command modified the game state. + + If you have the original 'dmp_cmds_*.sav', you can also compare those + savegames with your own ones from the replay. You can also comment/disable + the 'NOT_REACHED' mentioned above, to get another 'dmp_cmds_*.sav' from + the replay after the mismatch has already been detected. + See Section 3.2 on how to compare savegames. + If the saves differ you have located the Desync between the last dmp_cmds + that match and the first one that does not. The difference of the saves + may point you in the direction of what causes it. + + If the replay succeeds without mismatch, and you do not have any + 'dmp_cmd_*.sav' from the original server, it is a lost case. + Enable creation of the 'dmp_cmd_*.sav' on the server, and wait for the + next Desync. + + Finally, you can also compare the 'commands-out.log' from the original + server with the one from the replay. They will differ in stuff like + dates, and the original log will contain the chat, but otherwise they + should match. + +3.2) Comparing savegames +---- ------------------- + The binary form of the savegames from the original server and from + your replay will always differ: + - The savegame contains paths to used NewGRF files. + - The gamelog will log your loading of the savegame. + - The savegame data of AIs and the Gamescript will differ. + Scripts are not run during the replay, only their recorded commands + are replayed. Their internal state will thus not change in the + replay and will differ. + + To compare savegame more semantically, there exist some ugly hackish + tools at: + http://devs.openttd.org/~frosch/texts/zpipe.c + http://devs.openttd.org/~frosch/texts/printhunk.c + + The first one decompresses OpenTTD savegames. The second one creates + a textual representation of an uncompressed savegame, by parsing hunks + and arrays and such. With both tools you need to be a bit careful + since they work on stdin and stdout, which may not deal well with + binary data. + + If you have the textual representation of the savegames, you can + compare them with regular diff tools. diff --git a/docs/landscape.html b/docs/landscape.html index cef38e03e8..f60e859fc3 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -15,20 +15,60 @@ For a graphical representation of the tile-layout have a look at Landscape grid page.

-

Eight attributes (counting "type_height") hold the informations about a tile.
+

Nine attributes (counting "type" and + "height") hold the informations about a tile.
These attributes are referred to as - "type_height", + "type", + "height", "m1", "m2", "m3", "m4", "m5", "m6" and "m7".
The most important value is the class of a tile, stored in the upper 4 bits - of the type_height attribute. The lower 4 bits are used to encode the height and - slope data. + of the type attribute.

Frequently repeating patterns:
    +
  • type +
      +
    • + + Bits 7..4: + + + + + + + + + + + + + +
      The tile type.
      00Ground
      01Railway tracks
      02Roads
      03Town building
      04Trees
      05Station tiles
      06Water
      07Void
      08Industries
      09Tunnel / bridge
      0AObjects
      +
    • + Bits 3..2: + + + + + +
      Presence and direction of bridge above.
      00no bridge
      01Axis X (North-East)
      02Axis Y (South-West)
      +
    • + + Bits 1..0: + + + + + +
      Only meaningfull in tropic climate. It contains the definition of the available zones
      00normal
      01desert
      02rain forest
      + In any other climate these 2 bits are theoretically free of use, however using them does not seem useful. +
    • +
  • m1
    • @@ -58,32 +98,6 @@
  • -
  • m6 -
      -
    • - - Bits 7..6: - - - - - -
      Presence and direction of bridge above, for tiles that support this.
      00no bridge
      01Axis X (North-East)
      02Axis Y (South-West)
      - Some tiles, such as houses do not support bridges over them and use these bits for other purposes. -
    • -
    • - - Bits 1..0: - - - - - -
      Only meaningfull in tropic climate. It contains the definition of the available zones
      00normal
      01desert
      02rain forest
      - In any other climate these 2 bits are theoretically free of use, however using them does not seem useful. -
    • -
    -
  • m7:
    Animation frame/state. Used for houses, industries, objects and stations.
  • @@ -196,9 +210,7 @@ -
  • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
  • m6 bits 4..2: type of hedge on NW border of the tile
  • -
  • m6 bits 1..0 : Tropic zone definition
@@ -510,8 +522,6 @@
  • m5 bit 4: pbs reservation state
  • -
  • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
  • -
  • m6 bits 1..0 : Tropic zone definition
  • @@ -539,6 +549,7 @@ +
  • m3 bits 7..4: owner of road type 1 (tram); OWNER_NONE (10) is stored as OWNER_TOWN (0F)
  • m5 bits 7 clear: road or level-crossing
    • m6 bits 5..3: @@ -573,7 +584,6 @@
    • -
    • m3 bits 7..4: owner of road type 1 (tram); OWNER_NONE (10) is stored as OWNER_TOWN (0F)
    • m5 bit 6 clear: road
      • m1 bits 4..0: owner of the road type 0 (normal road)
      • @@ -663,10 +673,9 @@ +
      • m7 bits 4..0: owner of the road type 0 (normal road)
    • -
    • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
    • -
    • m6 bits 1..0 : Tropic zone definition
    @@ -713,7 +722,6 @@
  • bits 7..2 : lift position (for houses type 04 and 05)
  • -
  • bits 1..0 : tropic zone specifier
  • m7 : @@ -835,7 +843,6 @@
  • -
  • m6 bits 1..0 : Tropic zone definition
  • @@ -969,7 +976,6 @@
  • m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)
  • m6 bit 2: pbs reservation state for railway stations/waypoints
  • -
  • m6 bits 1..0 : Tropic zone definition
  • m7 bits 4..0: owner of road (road stops)
  • m7 bits 7..6: present road types (road stops)
  • m7: animation frame (railway stations/waypoints, airports)
  • @@ -1082,8 +1088,6 @@ -
  • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
  • -
  • m6 bits 1..0 : Tropic zone definition
  • @@ -1101,7 +1105,7 @@ 8 - Industry tile + Industries   @@ -1425,7 +1429,6 @@
  • m6 bits 5..3: random triggers (NewGRF)
  • m6 bit 2: bit 8 of type (see m5)
  • -
  • m6 bits 1..0 : Tropic zone definition
  • m7: animation frame
  • @@ -1576,8 +1579,6 @@ -
  • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
  • -
  • m6 bits 1..0 : Tropic zone definition
  • m7 bits 4..0: owner of road
  • m7 bit 5 set = on snow or desert
  • m7 bits 7..6: present road types for road
  • @@ -1593,41 +1594,12 @@  
      -
    • m1 bits 6..5 : Water class (sea, canal, river or land) +
    • m1 bits 6..5 : Water class (sea, canal, river or land)
    • m1 bits 4..0: owner of the object (for lighthouses and transmitters normally 10)
    • -
    • m2: index into the array of objects -
    • m3: random bits -
    • m5: tile type: - - - - - - - - - - - - - - - - - - - - - - - - -
      00  transmitter
      01  lighthouse
      02  company statue -
      03  company-owned land
      04  company headquarters
      -
    • -
    • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
    • -
    • m6 bits 1..0 : Tropic zone definition
    • -
    • m7: animation counter +
    • m2: index into the array of objects, bits 0 to 15 (upper bits in m5)
    • +
    • m3: random bits
    • +
    • m5: index into the array of objects, bits 16 to 23 (lower bits in m2)
    • +
    • m7: animation counter
    diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index e2f3c1f977..d34fe9840c 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -17,7 +17,7 @@

    Landscape

    -Six attributes hold the information about a tile. +Nine attributes hold the information about a tile. This can be seen in the Landscape document. This page tries to give an overview of used and free bits of the array so you can quickly see what is used and what is not.
      @@ -28,13 +28,14 @@ the array so you can quickly see what is used and what is not.

      -
    • type_height - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits)
    • +
    • type - 8 bits in size, tile class (bits 4..7), bridge (bits 2..3) tropic zone (bits 0..1, only valid in tropic climate)
    • +
    • height - 8 bits in size, stores tile height
    • m1 - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.)
    • m2 - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array
    • m3 - 8 bits in size, is used for general storage
    • m4 - 8 bits in size, is used for general storage
    • m5 - 8 bits in size, is used for general storage
    • -
    • m6 - 8 bits in size, special meaning : lower 2 bits only valid in tropic climate, upper 2 bits for bridges
    • +
    • m6 - 8 bits in size, is used for general storage
    • m7 - 8 bits in size, is used for general storage
    @@ -42,7 +43,8 @@ the array so you can quickly see what is used and what is not. class - type_height (8) + type (8) + height (8) m1 (8) m2 (16) m3 (8) @@ -55,6 +57,7 @@ the array so you can quickly see what is used and what is not. bits 7654 3210 7654 3210 + 7654 3210 FEDC BA98 7654 3210 7654 3210 7654 3210 @@ -66,69 +69,75 @@ the array so you can quickly see what is used and what is not. 0 ground XXXX XXXX + XXXX XXXX OOO~ ~~~~ OOOO OOOO OOOO OOOO XXXX OOOO XXXX XXOO XXXX XXXX - XXOX XXXX + OOOX XXOO OOOO OOOO farmland -inherit- -inherit- + -inherit- XXXX XXXX XXXX XXXX XXXX XXXX -inherit- -inherit- - XXOX XXXX + OOOX XXOO OOOO OOOO 1 rail XXXX XXXX + XXXX XXXX OOOX XXXX OOOO XXXX OOOO OOOO OOOO XXXX OOOO XXXX XXXX XXXX - XXOO OOXX + OOOO OOOO OOOO OOOO rail with signals -inherit- -inherit- + -inherit- OOOO XXXX XXXX XXXX XXXX XXXX XXXX XXXX -inherit- - XXOO OOXX + OOOO OOOO OOOO OOOO depot -inherit- -inherit- + -inherit- XXXX XXXX XXXX XXXX OOOO XXXX OOOO XXXX XXOX OOXX - XXOO OOXX + OOOO OOOO OOOO OOOO 2 road XXXX XXXX + XXXX XXXX OOOX XXXX XXXX XXXX XXXX XXXX XXXX XXXX OOOO OOOO XXXX XXXX - XXXX XOXX + OOXX XOOO XXXO XXXX @@ -136,10 +145,11 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- XXXX XXXX -inherit- XXXX OOOX - XXXX XOXX + OOXX XOOO XXXX XXXX @@ -147,46 +157,50 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- - OOOO OOOO + -inherit- + XXXX OOOO OOOO OOOO XXOO OOXX - XXOO OOXX - XXXO OOOO + OOOO OOOO + XXXO XXXX 3 house XXXX XXXX XXXX XXXX + XXXX XXXX XXXX XXXX XXXX XXXX XXO~ ~~XX XXXX XXXX XXXX XXXX - XXXX XXXX + XXXX XXOO XXXX XXXX 4 trees XXXX XXXX + XXXX XXXX OOO~ ~~~~ OOOO OOOX XXXX XXXX ~~XX XXXX OOOO OOOO XXOO OXXX - OOOO OOXX + OOOO OOOO OOOO OOOO 5 rail station XXXX XXXX + XXXX XXXX OXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - OOXX XXXX + OOXX XXOO XXXX XXXX @@ -199,16 +213,18 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- road stop -inherit- -inherit- -inherit- + -inherit- XXXX OOOO OOOO OOOO ~~~~ ~XXX - OOXX XOXX + OOXX XOOO XXOX XXXX @@ -216,10 +232,11 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- OOOO OOOO OOOO OOOO ~~~~ ~XXX - OOXX XOXX + OOXX XOOO OOOO OOOO @@ -227,10 +244,11 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- XXXX OOOO OOOO OOOO XXXX XXXX - OOXX XOXX + OOXX XOOO XXXX XXXX @@ -238,10 +256,11 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- OOOO OOOO OOOO OOOO ~~~~ ~~~~ - OOXX XOXX + OOXX XOOO OOOO OOOO @@ -249,68 +268,74 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- + -inherit- OOOO OOOO OOOO OOOO ~~~~ ~~~~ - OOXX XOXX + OOXX XOOO OOOO OOOO 6 sea, shore XXXX XXXX + XXXX XXXX OXXX XXXX OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO X~~X XXXX - XXOO OOXX + OOOO OOOO OOOO OOOO canal, river -inherit- -inherit- + -inherit- OOOO OOOO OOOO OOOO OOOO OOOO XXXX XXXX -inherit- - XXOO OOXX + OOOO OOOO OOOO OOOO shipdepot -inherit- -inherit- + -inherit- XXXX XXXX XXXX XXXX OOOO OOOO OOOO OOOO -inherit- - XXOO OOXX + OOOO OOOO OOOO OOOO 8 industry XXXX XXXX + XXXX XXXX XXXO XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - OOXX XXXX + OOXX XXOO XXXX XXXX 9 tunnel entrance XXXX XXXX + XXXX XXXX OOOX XXXX OOOO OOOO OOOO OOOO XXXX XXXX OOOO OOOO XOOX XXXX - XXOO OOXX + OOOO OOOO XXXX XXXX @@ -321,19 +346,21 @@ the array so you can quickly see what is used and what is not. -inherit- -inherit- -inherit- - XXXX XXXX + -inherit- + OOXX XXOO -inherit- A objects XXXX XXXX + XXXX XXXX OXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX OOOO OOOO XXXX XXXX - XXOO OOXX + OOOO OOOO XXXX XXXX diff --git a/docs/openttd.6 b/docs/openttd.6 index 0382306d7e..4e04be32c1 100644 --- a/docs/openttd.6 +++ b/docs/openttd.6 @@ -1,112 +1,152 @@ .\" Hey, EMACS: -*- nroff -*- .\" Please adjust this date whenever revising the manpage. -.Dd May 31, 2011 +.Dd October 13, 2014 .Dt OPENTTD 6 +.Os .Sh NAME .Nm openttd -.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe" +.Nd open source clone of the Microprose game \(lqTransport Tycoon Deluxe\(rq .Sh SYNOPSIS .Nm .Op Fl efhx .Op Fl b Ar blitter .Op Fl c Ar config_file -.Op Fl d Ar [level | cat=lvl[,...]] -.Op Fl D Ar [host][:port] -.Op Fl g Ar [savegame] +.Op Fl d Op Ar level | Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ... +.Op Fl D Oo Ar host Oc Ns Op : Ns Ar port +.Op Fl g Op Ar savegame .Op Fl G Ar seed .Op Fl I Ar graphicsset -.Op Fl l Ar host[:port] +.Op Fl l Ar host Ns Op : Ns Ar port .Op Fl m Ar driver .Op Fl M Ar musicset -.Op Fl n Ar host[:port][#player] +.Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player .Op Fl p Ar password .Op Fl P Ar password .Op Fl q Ar savegame -.Op Fl r Ar widthxheight +.Op Fl r Ar width Ns x Ns Ar height .Op Fl s Ar driver .Op Fl S Ar soundset .Op Fl t Ar year .Op Fl v Ar driver .Sh OPTIONS -.Bl -tag -width ".Fl n Ar host[:port][#player]" +.Bl -tag -width "-n host[:port][#player]" .It Fl b Ar blitter -Set the blitter, see +Select the blitter +.Ar blitter ; +see .Fl h -for a full list +for a full list. .It Fl c Ar config_file -Use 'config_file' instead of 'openttd.cfg' +Use +.Ar config_file +instead of +.Pa openttd.cfg . .It Fl d Ar [level] Set debug verbosity for all categories to -.Ar level -or 1 if omitted -.It Fl d Ar cat=level[,...] -Set debug verbosity for a specific category -.It Fl D Ar [host][:port] -Start a dedicated server. Sets network debug level to 6. If you want to change this, use +.Ar level , +or 1 if omitted. +.It Fl d Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ... +Set debug verbosity to +.Ar lvl +for a specific category +.Ar cat . +.It Fl D Oo Ar host Oc Ns Op : Ns Ar port +Start a dedicated server. +.Pp +Network debug level will be set to 6. +If you want to change this, set .Fl d -after -.Fl D -.It Fl G Ar seed -Seed the pseudo random number generator +after setting +.Fl D . .It Fl e -Start in world editor mode +Start in world editor mode. .It Fl f Fork into background (dedicated server only, see -.Fl D ) -.It Fl g Ar [savegame] +.Fl D ) . +.It Fl g Op Ar savegame Load .Ar savegame -at start or start a new game if omitted. The +at start or start a new game if omitted. .Ar savegame -must be either absolute or relative to the current path or one of the search paths. +must be either an absolute path or one relative to the current path or one of +the search paths. +.It Fl G Ar seed +Seed the pseudo random number generator with +.Ar seed . .It Fl h -Display a summary of all options and lists all the available AIs, blitters, sound, music and video drivers, graphics sets and sound sets. +Display a summary of all options and list all the available AIs, blitters, +sound, music and video drivers, graphics sets and sound sets. .It Fl I Ar graphicsset -Set the graphics set, see +Select the graphics set +.Ar graphicsset ; +see .Fl h -for a full list -.It Fl l Ar host[:port] -Redirect DEBUG(), See -.Fl D +for a full list. +.It Fl l Ar host Ns Op : Ns Ar port +Redirect +.Fn DEBUG +output; see +.Fl D . .It Fl m Ar driver -Set the music driver, see +Select the music driver +.Ar driver ; +see .Fl h -for a full list +for a full list. .It Fl M Ar musicset -Set the music set, see +Select the music set +.Ar musicset ; +see .Fl h -for a full list -.It Fl n Ar host[:port][#player] -Join a network game, optionally specify a port to connect to and player to play as +for a full list. +.It Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player +Join a network game, optionally specifying a port to connect to and player to +play as. .It Fl p Ar password -Password used to join server. Only useful with -.Fl n +Password used to join server. +Only useful with +.Fl n . .It Fl P Ar password -Password used to join company. Only useful with -.Fl n +Password used to join company. +Only useful with +.Fl n . .It Fl q Ar savegame -Write some information about the savegame and exit -.It Fl r Ar widthxheight -Set the resolution +Write some information about the specified savegame and exit. +.It Fl r Ar width Ns x Ns Ar height +Set the resolution to +.Ar width +\(mu +.Ar height +pixels. .It Fl s Ar driver -Set the sound driver, see +Select the sound driver +.Ar driver ; +see .Fl h -for a full list +for a full list. .It Fl S Ar soundset -Set the sound set, see +Select the sound set +.Ar soundset ; +see .Fl h -for a full list +for a full list. .It Fl t Ar year -Set the starting year +Set the starting year to +.Ar year . .It Fl v Ar driver -Set the video driver, see +Select the video driver +.Ar driver ; +see .Fl h -for a full list +for a full list. .It Fl x -Do not automatically save to config file on exit +Do not automatically save to config file on exit. .El .Sh SEE ALSO -http://wiki.openttd.org/, http://www.openttd.org +.Lk https://wiki.openttd.org "Wiki" +(includes community maintained manual), +.Lk https://forum.openttd.org "Forum", +.Lk https://www.openttd.org "News" .Sh HISTORY Transport Tycoon Deluxe was written by Chris Sawyer and published by Microprose. .Nm diff --git a/findversion.sh b/findversion.sh index c0d500a8fd..6be52b696f 100755 --- a/findversion.sh +++ b/findversion.sh @@ -106,21 +106,21 @@ elif [ -d "$ROOT_DIR/.git" ]; then fi elif [ -d "$ROOT_DIR/.hg" ]; then # We are a hg checkout - if [ -n "`hg status | grep -v '^?'`" ]; then + if [ -n "`HGPLAIN= hg status | grep -v '^?'`" ]; then MODIFIED="2" fi - HASH=`LC_ALL=C hg id -i | cut -c1-12` + HASH=`LC_ALL=C HGPLAIN= hg id -i | cut -c1-12` REV="h`echo $HASH | cut -c1-8`" - BRANCH="`hg branch | sed 's@^default$@@'`" - TAG="`hg id -t | grep -v 'tip$'`" + BRANCH="`HGPLAIN= hg branch | sed 's@^default$@@'`" + TAG="`HGPLAIN= hg id -t | grep -v 'tip$'`" if [ -n "$TAG" ]; then BRANCH="" REV="$TAG" fi - REV_NR=`LC_ALL=C hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"` + REV_NR=`LC_ALL=C HGPLAIN= hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"` if [ -z "$REV_NR" ]; then # No rev? Maybe it is a custom hgsubversion clone - REV_NR=`LC_ALL=C hg parent --template="{svnrev}"` + REV_NR=`LC_ALL=C HGPLAIN= hg parent --template="{svnrev}"` fi elif [ -f "$ROOT_DIR/.ottdrev" ]; then # We are an exported source bundle diff --git a/known-bugs.txt b/known-bugs.txt index 00025a63f4..34aca33002 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -1,6 +1,6 @@ OpenTTD's known bugs -Last updated: 2013-06-01 -Release version: 1.3.1 +Last updated: 2015-02-24 +Release version: 1.5.0-beta2 ------------------------------------------------------------------------ @@ -33,12 +33,13 @@ No suitable AI can be found If you have no AIs and an AI is started the so-called 'dummy' AI will be loaded. This AI does nothing but writing a message on the AI debug window and showing a red warning. There are basically two solutions - for this problem: you must change the settings so no AI is started, - this is done in the difficulty settings window. The other solution is - acquiring (downloading) some AI. The easiest way to do this is via - the "Check Online Content" button in the main (intro) menu or via - "AI Settings" -> "Select AI" -> "Check Online Content" which is also - accessed via the main menu. + for this problem: Either you set the number of AI players to 0 so that + no AI is started. You find that setting at the top of the window in the + "AI / Game Scripts Settings" window. + The other solution is acquiring (downloading) some AI. The easiest way + to do this is via the "Check Online Content" button in the main (intro) + menu or directly in the "AI / Game Scripts Settings" dialogue via the + "Check Online Content" button. After a while of playing, colours get corrupted In Windows 7 the background slideshow corrupts the colour mapping of @@ -403,3 +404,52 @@ Mouse cursor going missing with SDL [FS#4997]: We cannot fix this problem as SDL simply does not provide the required information in these corner cases. This is a bug in SDL and as such there is little that we can do about it. + +Inconsistent catchment areas [FS#5661]: + Due to performance decisions the catchment area for cargo accepted + by a station for delivery to houses or industries differs from the + catchment area for cargo that is delivered to stations from houses + or industries. + + Conceptually they work the same, but the effect in game differs. + They work by finding the closest destination "around" the source + which is within a certain distance. This distance depends on the + type of station, e.g. road stops have a smaller catchment area than + large airports. In both cases the bounding box, the smallest + rectangle that contains all tiles of something, is searched for the + target of the cargo, and then spiraling outwards finding the closest + tile of the target. + + In the case of a station with two tiles spread far apart with a house + that is within the station's bounding box, it would be possible that + the spiraling search from the house does not reach one of the station + tiles before the search ends, i.e. all tiles within that distance + are searched. So the house does not deliver cargo to the station. On + the other hand, the station will deliver cargo because the house + falls within the bounding box, and thus search area. + + It is possible to make these consistent, but then cargo from a house + to a station needs to search up to 32 tiles around itself, i.e. 64 + by 64 tiles, to find all possible stations it could deliver to + instead of 10 by 10 tiles (40 times more tiles). Alternatively the + search from a station could be changed to use the actual tiles, but + that would require considering checking 10 by 10 tiles for each of + the tiles of a station, instead of just once. + +Trains might not stop at platforms that are currently being changed [FS#5553]: + If you add tiles to or remove tiles from a platform while a train is + approaching to stop at the same platform, that train can miss the place + where it's supposed to stop and pass the station without stopping. This + is caused by the fact that the train is considered to already have stopped + if it's beyond its assigned stopping location. We can't let the train stop + just anywhere in the station because then it would never leave the station + if you have the same station in the order list multiple times in a row or + if there is only one station in the order list (see FS#5684). + +Some houses and industries are not affected by transparency [FS#5817]: + Some of the default houses and industries (f.e. the iron ore mine) are + not affected by the transparency options. This is because the graphics do + not (completely) separate the ground from the building. + This is a bug of the original graphics, and unfortunately cannot be + fixed with OpenGFX for the sake of maintaining compatibility with the + original graphics. diff --git a/media/extra_grf/assemble_nfo.awk b/media/extra_grf/assemble_nfo.awk new file mode 100644 index 0000000000..cf6b425c1d --- /dev/null +++ b/media/extra_grf/assemble_nfo.awk @@ -0,0 +1,32 @@ +# $Id$ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + +BEGIN { + # Very basic variant function; barely any error checking. + # Just use the first argument as the file to start from when assembling everything + path = ARGV[1]; + gsub("[^/\\\\]*$", "", path); + assemble(ARGV[1]); +} + +# Recursive function for assembling by means of resolving the #includes. +function assemble(filename) { + while ((getline < filename) > 0) { + if (NF == 2 && $1 == "#include" ) { + # Remove the quotes. + gsub("[\"'<>]", "", $2); + assemble(path $2); + } else { + print $0; + } + } + + if (close(filename) < 0) { + print "Could not open " filename > "/dev/stderr"; + exit -1; + } +} diff --git a/media/extra_grf/openttd.nfo b/media/extra_grf/openttd.nfo index e93b2066fb..66149a37e5 100644 --- a/media/extra_grf/openttd.nfo +++ b/media/extra_grf/openttd.nfo @@ -104,3 +104,4 @@ #include "rivers/tropic.nfo" #include "rivers/toyland.nfo" #include "tunnel_portals.nfo" +#include "palette.nfo" diff --git a/media/extra_grf/openttdgui.nfo b/media/extra_grf/openttdgui.nfo index 1d96de8558..1b17b8651b 100644 --- a/media/extra_grf/openttdgui.nfo +++ b/media/extra_grf/openttdgui.nfo @@ -7,7 +7,7 @@ // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "OpenTTD GUI graphics" - -1 * 3 05 15 \b 174 // OPENTTD_SPRITE_COUNT + -1 * 3 05 15 \b 175 // OPENTTD_SPRITE_COUNT -1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal @@ -182,3 +182,4 @@ -1 sprites/openttdgui.png 8bpp 414 440 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 440 440 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 466 440 20 20 0 0 normal + -1 sprites/openttdgui.png 8bpp 490 440 20 20 0 0 normal diff --git a/media/extra_grf/openttdgui.png b/media/extra_grf/openttdgui.png index 6f011b654d..28ad2fbafe 100644 Binary files a/media/extra_grf/openttdgui.png and b/media/extra_grf/openttdgui.png differ diff --git a/media/extra_grf/palette.nfo b/media/extra_grf/palette.nfo new file mode 100644 index 0000000000..4a6ae69505 --- /dev/null +++ b/media/extra_grf/palette.nfo @@ -0,0 +1,20 @@ +// +// $Id$ +// +// This file is part of OpenTTD. +// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . +// + + -1 * 0 0C "All black palette" + -1 * 0 05 18 01 + -1 * 0 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 diff --git a/media/extra_grf/shore.nfo b/media/extra_grf/shore.nfo index 70fae8f4d8..7b7c12ad3b 100644 --- a/media/extra_grf/shore.nfo +++ b/media/extra_grf/shore.nfo @@ -47,7 +47,7 @@ -1 sprites/shore.png 8bpp 82 200 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 162 200 64 31 -31 -8 normal -1 * 6 07 83 01 \7! 03 0C - -1 * 44 0C "Missing shore tile graphics for the toyland climate" + -1 * 52 0C "Missing shore tile graphics for the toyland climate" -1 * 3 05 0D 0A -1 sprites/shore.png 8bpp 290 200 64 15 -31 0 normal -1 sprites/shore.png 8bpp 370 200 64 31 -31 -8 normal diff --git a/media/openttd.desktop.in b/media/openttd.desktop.in index 11b3cc6313..513ff712df 100644 --- a/media/openttd.desktop.in +++ b/media/openttd.desktop.in @@ -9,3 +9,4 @@ Exec=!!TTD!! Terminal=false Categories=!!MENU_GROUP!! Comment=A clone of Transport Tycoon Deluxe +Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo; diff --git a/os/debian/changelog b/os/debian/changelog index 3f3ae6256f..d56400af01 100644 --- a/os/debian/changelog +++ b/os/debian/changelog @@ -1,3 +1,171 @@ +openttd (1.5.0~beta2-0) unstable; urgency=low + + * New upstream release 1.5.0-beta2 + + -- OpenTTD Tue, 24 Feb 2015 21:00:00 +0100 + +openttd (1.5.0~beta1-0) unstable; urgency=low + + * New upstream release 1.5.0-beta1 + + -- OpenTTD Wed, 24 Dec 2014 21:00:00 +0100 + +openttd (1.4.4-0) unstable; urgency=low + + * New upstream release 1.4.4 + + -- OpenTTD Tue, 21 Oct 2014 21:00:00 +0200 + +openttd (1.4.4~RC1-0) unstable; urgency=low + + * New upstream release 1.4.4-RC1 + + -- OpenTTD Wed, 08 Oct 2014 19:00:00 +0200 + +openttd (1.4.3-0) unstable; urgency=low + + * New upstream release 1.4.3 + + -- OpenTTD Tue, 23 Sep 2014 21:00:00 +0200 + +openttd (1.4.3~RC2-0) unstable; urgency=low + + * New upstream release 1.4.3-RC2 + + -- OpenTTD Sun, 14 Sep 2014 19:00:00 +0200 + +openttd (1.4.3~RC1-0) unstable; urgency=low + + * New upstream release 1.4.3-RC1 + + -- OpenTTD Sun, 07 Sep 2014 19:00:00 +0200 + +openttd (1.4.2-0) unstable; urgency=low + + * New upstream release 1.4.2 + + -- OpenTTD Sat, 16 Aug 2014 21:00:00 +0200 + +openttd (1.4.2~RC2-0) unstable; urgency=low + + * New upstream release 1.4.2-RC2 + + -- OpenTTD Sun, 03 Aug 2014 18:00:00 +0200 + +openttd (1.4.2~RC1-0) unstable; urgency=low + + * New upstream release 1.4.2-RC1 + + -- OpenTTD Thu, 03 Jul 2014 21:00:00 +0200 + +openttd (1.4.1-0) unstable; urgency=low + + * New upstream release 1.4.1 + + -- OpenTTD Mon, 02 Jun 2014 21:00:00 +0200 + +openttd (1.4.1~RC2-0) unstable; urgency=low + + * New upstream release 1.4.1-RC2 + + -- OpenTTD Sun, 18 May 2014 21:00:00 +0200 + +openttd (1.4.1~RC1-0) unstable; urgency=low + + * New upstream release 1.4.1-RC1 + + -- OpenTTD Sun, 04 May 2014 21:00:00 +0200 + +openttd (1.4.0-0) unstable; urgency=low + + * New upstream release 1.4.0 + + -- OpenTTD Tue, 01 Apr 2014 21:00:00 +0200 + +openttd (1.4.0~RC1-0) unstable; urgency=low + + * New upstream release 1.4.0-RC1 + + -- OpenTTD Tue, 17 Mar 2014 21:00:00 +0100 + +openttd (1.4.0~beta5-0) unstable; urgency=low + + * New upstream release 1.4.0-beta5 + + -- OpenTTD Tue, 25 Feb 2014 10:15:00 +0100 + +openttd (1.4.0~beta4-0) unstable; urgency=low + + * New upstream release 1.4.0-beta4 + + -- OpenTTD Thu, 06 Feb 2014 21:00:00 +0100 + +openttd (1.4.0~beta3-0) unstable; urgency=low + + * New upstream release 1.4.0-beta3 + + -- OpenTTD Tue, 21 Jan 2014 21:00:00 +0100 + +openttd (1.4.0~beta2-0) unstable; urgency=low + + * New upstream release 1.4.0-beta2 + + -- OpenTTD Tue, 07 Jan 2014 21:00:00 +0100 + +openttd (1.4.0~beta1-0) unstable; urgency=low + + * New upstream release 1.4.0-beta1 + + -- OpenTTD Tue, 24 Dec 2013 00:00:00 +0100 + +openttd (1.3.3-0) unstable; urgency=low + + * New upstream release 1.3.3 + + -- OpenTTD Fri, 29 Nov 2013 19:00:00 +0100 + +openttd (1.3.3~RC2-0) unstable; urgency=low + + * New upstream release 1.3.3-RC2 + + -- OpenTTD Sun, 24 Nov 2013 19:00:00 +0100 + +openttd (1.3.3~RC1-0) unstable; urgency=low + + * New upstream release 1.3.3-RC1 + + -- OpenTTD Sun, 17 Nov 2013 19:00:00 +0100 + +openttd (1.3.2-0) unstable; urgency=low + + * New upstream release 1.3.2 + + -- OpenTTD Sat, 27 Jul 2013 18:00:00 +0200 + +openttd (1.3.2~RC2-0) unstable; urgency=low + + * New upstream release 1.3.2-RC2 + + -- OpenTTD Sat, 13 Jul 2013 12:00:00 +0200 + +openttd (1.3.2~RC1-0) unstable; urgency=low + + * New upstream release 1.3.2-RC1 + + -- OpenTTD Sun, 30 Jun 2013 12:00:00 +0200 + +openttd (1.3.1-0) unstable; urgency=low + + * New upstream release 1.3.1 + + -- OpenTTD Sat, 01 Jun 2013 00:00:00 +0300 + +openttd (1.3.1~RC1-0) unstable; urgency=low + + * New upstream release 1.3.1-RC1 + + -- OpenTTD Fri, 17 May 2013 22:00:00 +0200 + openttd (1.3.0-0) unstable; urgency=low * New upstream release 1.3.0 diff --git a/os/debian/control b/os/debian/control index de22a807ae..54e14ce5d4 100644 --- a/os/debian/control +++ b/os/debian/control @@ -3,11 +3,10 @@ Section: games Priority: optional Maintainer: Matthijs Kooijman Uploaders: Jordi Mallach -DM-Upload-Allowed: yes Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev Standards-Version: 3.8.4 -Vcs-Browser: http://git.debian.org/?p=collab-maint/openttd.git -Vcs-Git: git://git.debian.org/collab-maint/openttd.git +Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/openttd.git +Vcs-Git: git://anonscm.debian.org/collab-maint/openttd.git Homepage: http://www.openttd.org/ Package: openttd diff --git a/os/debian/copyright b/os/debian/copyright index c361d80dd2..be573b4825 100644 --- a/os/debian/copyright +++ b/os/debian/copyright @@ -1,77 +1,106 @@ -This package was debianized by Matthijs Kooijman -on Wed, 15 Sep 2004 00:24:01 +0200. - -Upstream author: Ludvig Strigeus (ludde) and many others. -Upstream homepage: http://www.openttd.org - -Copyright © 2004-2009 Ludvig Strigeous and others. - -OpenTTD License: - - 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 - published by the Free Software Foundation; - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General Public License -version 2 can be found in `/usr/share/common-licenses/GPL-2'. - -This package contains an embedded version of the "Squirrel" programming -language, which is shipped under the following license: - - Copyright (c) 2003-2009 Alberto Demichelis - - This software is provided 'as-is', without any - express or implied warranty. In no event will the - authors be held liable for any damages arising from - the use of this software. - - Permission is granted to anyone to use this software - for any purpose, including commercial applications, - and to alter it and redistribute it freely, subject - to the following restrictions: - - 1. The origin of this software must not be - misrepresented; you must not claim that - you wrote the original software. If you - use this software in a product, an - acknowledgment in the product - documentation would be appreciated but is - not required. - - 2. Altered source versions must be plainly - marked as such, and must not be - misrepresented as being the original - software. - - 3. This notice may not be removed or - altered from any source distribution. - -This package contains an implementation of the md5 hash algorithm, which -is shipped under the following license: - - Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: OpenTTD +Upstream-Contact: info@openttd.org, #openttd on irc.oftc.net +Source: http://www.openttd.org + + +Files: * +Copyright: © 2004-2012 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 + published by the Free Software Foundation; + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU General Public License + version 2 can be found in `/usr/share/common-licenses/GPL-2'. + +Files: src/3rdparty/squirrel/* +Copyright: © 2003-2009 Alberto Demichelis +License: Zlib + +Files: src/3rdparty/md5/* +Copyright: © 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. +License: Zlib + + +License: Zlib + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + . + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + . + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in + a product, an acknowledgment in the product documentation would be + appreciated but is not required. + . + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + . + 3. This notice may not be removed or altered from any source + distribution. + +Files: os/dos/exe2coff/* +Copyright: © 1998 DJ Delorie +License: GPL-2.0 with additional restrictions + This document is Copyright (C) DJ Delorie and may be distributed + verbatim, but changing it is not allowed. + . + Source code copyright DJ Delorie is distributed under the terms of the + GNU General Public Licence, with the following exceptions: + . + * Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and + libemu.a are distributed under the terms of the GNU Library General + Public License, rather than the GNU GPL. + . + * Any existing copyright or authorship information in any given source + file must remain intact. If you modify a source file, a notice to that + effect must be added to the authorship information in the source file. + . + * Runtime binaries, as provided by DJ in DJGPP, may be distributed + without sources ONLY if the recipient is given sufficient information + to obtain a copy of djgpp themselves. This primarily applies to + go32-v2.exe, emu387.dxe, and stubedit.exe. + . + * Runtime objects and libraries, as provided by DJ in DJGPP, when + linked into an application, may be distributed without sources ONLY + if the recipient is given sufficient information to obtain a copy of + djgpp themselves. This primarily applies to crt0.o and libc.a. + . + On Debian systems, the complete text of the GNU General Public License + version 2 can be found in `/usr/share/common-licenses/GPL-2'. +Comment: + Given only the exe2coff.c file is distributed in the source distribution (and + nothing in Debian binary distribution), it seems only the 2nd condition + applies. + +Files: os/dos/cwsdpmi/* +Source: http://homer.rice.edu/~sandmann/cwsdpmi/index.html +Copyright: © 1995-2000 Charles W Sandmann (sandmann@clio.rice.edu) +License: Custom binary-only license + This is release 5. The files in this binary distribution may be redistributed + under the GPL (with source) or without the source code provided: + . + * CWSDPMI.EXE or CWSDPR0.EXE are not modified in any way except via CWSPARAM. + . + * CWSDSTUB.EXE internal contents are not modified in any way except via + CWSPARAM or STUBEDIT. It may have a COFF image plus data appended to it. + . + * Notice to users that they have the right to receive the source code and/or + binary updates for CWSDPMI. Distributors should indicate a site for the + source in their documentation. +Comment: + Files are distributed as binary only, so the second option in the license + ("without source code provided: ...") is applicable. diff --git a/os/debian/menu b/os/debian/menu index 58e23aaa08..3afa6e08e8 100644 --- a/os/debian/menu +++ b/os/debian/menu @@ -1,2 +1,2 @@ ?package(openttd):needs="X11" section="Games/Simulation" title="OpenTTD"\ -command="/usr/share/games/openttd/openttd-wrapper" icon="/usr/share/pixmaps/openttd.32.xpm" +command="/usr/games/openttd" icon="/usr/share/pixmaps/openttd.32.xpm" diff --git a/os/debian/rules b/os/debian/rules index 97094b0c58..dfd39253ef 100755 --- a/os/debian/rules +++ b/os/debian/rules @@ -4,7 +4,7 @@ # Use debhelper default for all targets (but some are overridden below). %: - dh $@ + dh --parallel $@ DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) @@ -12,21 +12,29 @@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) endif +# This prevents linking uselessly to libicudata and silences a warning +# in the build process. +DEB_LDFLAGS_MAINT_APPEND="-Wl,-as-needed" + +# Enable all hardening options (since openttd offers a network-listening +# service that handles untrusted data). +DEB_BUILD_MAINT_OPTIONS=hardening=+all + +# Load buildflags (this uses dpkg-buildflags). Note that we don't export +# them, but instead pass them to ./configure explicitly. +include /usr/share/dpkg/buildflags.mk + # Pass custom options to configure. Since it's not autoconf but a custom # script, some of the option names are slightly different. We also need # to be explicit about the dependencies, in case we're not running in a # clean build root. override_dh_auto_configure: - ./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --without-iconv --disable-strip CFLAGS="$(CFLAGS) -g" LDFLAGS="$(LDFLAGS) -Wl,-as-needed" + ./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --without-xdg-basedir --without-iconv --disable-strip CFLAGS="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" CFLAGS_BUILD="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS_BUILD="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS_BUILD="$(LDFLAGS)" # Do some extra installation override_dh_auto_install: $(MAKE) install DO_NOT_INSTALL_CHANGELOG=1 DO_NOT_INSTALL_LICENSE=1 - # Install the wrapper and make it executable - install -d debian/openttd/usr/share/games/openttd/ - install -m755 debian/openttd-wrapper debian/openttd/usr/share/games/openttd/ - # Don't do testing. Because the OpenTTD Makefile always does dependency # generation (even on invalid targets), dh_auto_test thinks there is a # "test" target, while there isn't. diff --git a/os/dos/cwsdpmi/README.licensing b/os/dos/cwsdpmi/README.licensing new file mode 100644 index 0000000000..112b02a087 --- /dev/null +++ b/os/dos/cwsdpmi/README.licensing @@ -0,0 +1,3 @@ +The files in this directory are not licensed under the same terms as the +rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt +and in this directory or subdirectories as well. diff --git a/os/dos/cwsdpmi.exe b/os/dos/cwsdpmi/cwsdpmi.exe similarity index 100% rename from os/dos/cwsdpmi.exe rename to os/dos/cwsdpmi/cwsdpmi.exe diff --git a/os/dos/cwsdpmi.txt b/os/dos/cwsdpmi/cwsdpmi.txt similarity index 100% rename from os/dos/cwsdpmi.txt rename to os/dos/cwsdpmi/cwsdpmi.txt diff --git a/os/dos/cwsdstub.exe b/os/dos/cwsdpmi/cwsdstub.exe similarity index 100% rename from os/dos/cwsdstub.exe rename to os/dos/cwsdpmi/cwsdstub.exe diff --git a/os/dos/exe2coff/README.licensing b/os/dos/exe2coff/README.licensing new file mode 100644 index 0000000000..112b02a087 --- /dev/null +++ b/os/dos/exe2coff/README.licensing @@ -0,0 +1,3 @@ +The files in this directory are not licensed under the same terms as the +rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt +and in this directory or subdirectories as well. diff --git a/os/dos/copying b/os/dos/exe2coff/copying similarity index 100% rename from os/dos/copying rename to os/dos/exe2coff/copying diff --git a/os/dos/copying.dj b/os/dos/exe2coff/copying.dj similarity index 100% rename from os/dos/copying.dj rename to os/dos/exe2coff/copying.dj diff --git a/os/dos/copying.lib b/os/dos/exe2coff/copying.lib similarity index 100% rename from os/dos/copying.lib rename to os/dos/exe2coff/copying.lib diff --git a/os/dos/exe2coff.c b/os/dos/exe2coff/exe2coff.c similarity index 100% rename from os/dos/exe2coff.c rename to os/dos/exe2coff/exe2coff.c diff --git a/os/dos/make_dos_binary_selfcontained.sh b/os/dos/make_dos_binary_selfcontained.sh index c21e29d2c3..259e502372 100755 --- a/os/dos/make_dos_binary_selfcontained.sh +++ b/os/dos/make_dos_binary_selfcontained.sh @@ -3,9 +3,9 @@ # $Id$ cd `dirname $0` -cc -o exe2coff exe2coff.c || exit +cc -o exe2coff/exe2coff exe2coff/exe2coff.c || exit cp $1 binary.exe || exit -./exe2coff binary.exe || exit -cat cwsdstub.exe binary > binary.exe || exit +./exe2coff/exe2coff binary.exe || exit +cat cwsdpmi/cwsdstub.exe binary > binary.exe || exit mv binary.exe $1 -rm binary exe2coff +rm binary exe2coff/exe2coff diff --git a/os/os2/installer/make_installer.cmd b/os/os2/installer/make_installer.cmd index f21961f7fb..6fe6dace66 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.3.0 +set OPENTTD_VERSION=1.6.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 91ffc8dfdc..5ad5a53cab 100644 --- a/os/rpm/openttd.spec +++ b/os/rpm/openttd.spec @@ -17,9 +17,9 @@ # Name: openttd -Version: 1.3.beta2 +Version: 1.6.beta1 Release: 0 -%define srcver 1.3.0-beta2 +%define srcver 1.6.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 c2045788e2..ebe9ed3dcd 100644 --- a/os/windows/installer/install.nsi +++ b/os/windows/installer/install.nsi @@ -1,9 +1,9 @@ # Version numbers to update !define APPV_MAJOR 1 -!define APPV_MINOR 3 +!define APPV_MINOR 6 !define APPV_MAINT 0 -!define APPV_BUILD 5 -!define APPV_EXTRA "" +!define APPV_BUILD 0 +!define APPV_EXTRA "-beta1" !define APPNAME "OpenTTD" ; Define application name !define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version @@ -545,15 +545,22 @@ FunctionEnd ;------------------------------------------------------------------------------- ; Determine windows version, returns "win9x" if Win9x/Me/2000/XP SP2- or "winnt" for the rest on the stack Function GetWindowsVersion + GetVersion::WindowsPlatformArchitecture + Pop $R0 + IntCmp $R0 64 WinNT 0 ClearErrors StrCpy $R0 "win9x" ${If} ${IsNT} ${If} ${IsWinXP} ${AndIf} ${AtLeastServicePack} 3 ${OrIf} ${AtLeastWin2003} - StrCpy $R0 "winnt" + GoTo WinNT ${EndIf} ${EndIf} + GoTo Done +WinNT: + StrCpy $R0 "winnt" +Done: Push $R0 FunctionEnd diff --git a/projects/generate b/projects/generate index 542a27d6e1..42b684d2af 100755 --- a/projects/generate +++ b/projects/generate @@ -77,7 +77,7 @@ safety_check() { done } -grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //' | sort > tmp.headers.source.list +grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //g' | sort > tmp.headers.source.list find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then echo "The following headers are missing in source.list and not in /src/ or vice versa." diff --git a/projects/generate.vbs b/projects/generate.vbs index 87c27ab387..4e1e886873 100755 --- a/projects/generate.vbs +++ b/projects/generate.vbs @@ -173,6 +173,7 @@ Function load_main_data(filename, ByRef vcxproj, ByRef filters, ByRef files) line = "MSVC" Or _ line = "DIRECTMUSIC" Or _ line = "AI" Or _ + line = "SSE" Or _ line = "HAVE_THREAD" _ ) Then skip = skip + 1 deep = deep + 1 diff --git a/projects/langs_vs100.vcxproj b/projects/langs_vs100.vcxproj index be9e0c6227..078a7b374a 100644 --- a/projects/langs_vs100.vcxproj +++ b/projects/langs_vs100.vcxproj @@ -227,6 +227,12 @@ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) ..\bin\lang\korean.lng;%(Outputs) + + Generating latin language file + ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" + ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) + ..\bin\lang\latin.lng;%(Outputs) + Generating latvian language file ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" diff --git a/projects/langs_vs100.vcxproj.filters b/projects/langs_vs100.vcxproj.filters index 64221319e2..fb16aa64e0 100644 --- a/projects/langs_vs100.vcxproj.filters +++ b/projects/langs_vs100.vcxproj.filters @@ -97,6 +97,9 @@ Translations + + Translations + Translations diff --git a/projects/langs_vs80.vcproj b/projects/langs_vs80.vcproj index 6cea19753f..1413a80d27 100644 --- a/projects/langs_vs80.vcproj +++ b/projects/langs_vs80.vcproj @@ -513,6 +513,21 @@ /> + + + + + diff --git a/projects/langs_vs90.vcproj b/projects/langs_vs90.vcproj index 5fe8dca8d8..db6fef1a43 100644 --- a/projects/langs_vs90.vcproj +++ b/projects/langs_vs90.vcproj @@ -514,6 +514,21 @@ /> + + + + + diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj index c632a3a019..0571ef4862 100644 --- a/projects/openttd_vs100.vcxproj +++ b/projects/openttd_vs100.vcxproj @@ -102,7 +102,7 @@ Size true ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions) true Sync MultiThreaded @@ -156,7 +156,7 @@ /MP %(AdditionalOptions) Disabled ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -204,7 +204,7 @@ Size true ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions) true Sync MultiThreaded @@ -256,7 +256,7 @@ /MP %(AdditionalOptions) Disabled ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -304,12 +304,14 @@ + + @@ -339,6 +341,7 @@ + @@ -353,7 +356,6 @@ - @@ -384,6 +386,7 @@ + @@ -421,6 +424,7 @@ + @@ -434,6 +438,7 @@ + @@ -491,6 +496,7 @@ + @@ -564,6 +570,7 @@ + @@ -638,6 +645,7 @@ + @@ -676,6 +684,7 @@ + @@ -798,7 +807,6 @@ - @@ -861,6 +869,8 @@ + + @@ -875,6 +885,7 @@ + @@ -889,6 +900,7 @@ + @@ -944,13 +956,8 @@ - - - - - @@ -1030,6 +1037,8 @@ + + @@ -1092,6 +1101,8 @@ + + @@ -1109,12 +1120,22 @@ + + + + + + + + + + diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters index 3146a24272..0b6dc573b4 100644 --- a/projects/openttd_vs100.vcxproj.filters +++ b/projects/openttd_vs100.vcxproj.filters @@ -141,6 +141,9 @@ Source Files + + Source Files + Source Files @@ -159,6 +162,9 @@ Source Files + + Source Files + Source Files @@ -246,6 +252,9 @@ Source Files + + Source Files + Source Files @@ -288,9 +297,6 @@ Source Files - - Source Files - Source Files @@ -381,6 +387,9 @@ Source Files + + Source Files + Source Files @@ -492,6 +501,9 @@ Header Files + + Header Files + Header Files @@ -531,6 +543,9 @@ Header Files + + Header Files + Header Files @@ -702,6 +717,9 @@ Header Files + + Header Files + Header Files @@ -921,6 +939,9 @@ Header Files + + Header Files + Header Files @@ -1143,6 +1164,9 @@ Header Files + + Header Files + Header Files @@ -1257,6 +1281,9 @@ Core Source Code + + Core Source Code + Core Source Code @@ -1623,9 +1650,6 @@ Command handlers - - Command handlers - Command handlers @@ -1812,6 +1836,12 @@ Save/Load handlers + + Save/Load handlers + + + Save/Load handlers + Tables @@ -1854,6 +1884,9 @@ Tables + + Tables + Tables @@ -1896,6 +1929,9 @@ Tables + + Tables + Tables @@ -2061,27 +2097,12 @@ Squirrel headers - - Squirrel headers - - - Squirrel headers - - - Squirrel headers - Squirrel headers - - Squirrel headers - Squirrel headers - - Squirrel headers - Squirrel headers @@ -2319,6 +2340,12 @@ Script API + + Script API + + + Script API + Script API @@ -2505,6 +2532,12 @@ Script API Implementation + + Script API Implementation + + + Script API Implementation + Script API Implementation @@ -2556,6 +2589,12 @@ Blitters + + Blitters + + + Blitters + Blitters @@ -2574,6 +2613,30 @@ Blitters + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + Blitters diff --git a/projects/openttd_vs100.vcxproj.in b/projects/openttd_vs100.vcxproj.in index ce522dad8b..7a4f0bce81 100644 --- a/projects/openttd_vs100.vcxproj.in +++ b/projects/openttd_vs100.vcxproj.in @@ -102,7 +102,7 @@ Size true ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions) true Sync MultiThreaded @@ -156,7 +156,7 @@ /MP %(AdditionalOptions) Disabled ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -204,7 +204,7 @@ Size true ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions) true Sync MultiThreaded @@ -256,7 +256,7 @@ /MP %(AdditionalOptions) Disabled ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index 30bb9df721..f6b938ed7d 100644 --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -52,7 +52,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -156,7 +156,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -257,7 +257,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -362,7 +362,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -486,6 +486,10 @@ RelativePath=".\..\src\console_cmds.cpp" > + + @@ -510,6 +514,10 @@ RelativePath=".\..\src\depot.cpp" > + + @@ -626,6 +634,10 @@ RelativePath=".\..\src\linkgraph\mcf.cpp" > + + @@ -682,10 +694,6 @@ RelativePath=".\..\src\order_backup.cpp" > - - @@ -806,6 +814,10 @@ RelativePath=".\..\src\viewport.cpp" > + + @@ -958,6 +970,10 @@ RelativePath=".\..\src\console_type.h" > + + @@ -1010,6 +1026,10 @@ RelativePath=".\..\src\direction_type.h" > + + @@ -1238,6 +1258,10 @@ RelativePath=".\..\src\linkgraph\mcf.h" > + + @@ -1530,6 +1554,10 @@ RelativePath=".\..\src\roadveh.h" > + + @@ -1826,6 +1854,10 @@ RelativePath=".\..\src\viewport_func.h" > + + @@ -1982,6 +2014,10 @@ RelativePath=".\..\src\core\smallmatrix_type.hpp" > + + @@ -2482,10 +2518,6 @@ RelativePath=".\..\src\depot_cmd.cpp" > - - @@ -2738,6 +2770,14 @@ RelativePath=".\..\src\saveload\waypoint_sl.cpp" > + + + + + + @@ -2854,6 +2898,10 @@ RelativePath=".\..\src\table\strgen_tables.h" > + + @@ -3090,34 +3138,14 @@ RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h" > - - - - - - - - - - @@ -3454,6 +3482,14 @@ RelativePath=".\..\src\script\api\script_story_page.hpp" > + + + + @@ -3706,6 +3742,14 @@ RelativePath=".\..\src\script\api\script_story_page.cpp" > + + + + @@ -3778,6 +3822,14 @@ RelativePath=".\..\src\blitter\32bpp_anim.hpp" > + + + + @@ -3802,6 +3854,38 @@ RelativePath=".\..\src\blitter\32bpp_simple.hpp" > + + + + + + + + + + + + + + + + diff --git a/projects/openttd_vs80.vcproj.in b/projects/openttd_vs80.vcproj.in index 0c64f78527..57938f9e91 100644 --- a/projects/openttd_vs80.vcproj.in +++ b/projects/openttd_vs80.vcproj.in @@ -52,7 +52,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -156,7 +156,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -257,7 +257,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -362,7 +362,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 61a3d5130f..84e6fffa3c 100644 --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -53,7 +53,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -155,7 +155,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -255,7 +255,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -359,7 +359,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -483,6 +483,10 @@ RelativePath=".\..\src\console_cmds.cpp" > + + @@ -507,6 +511,10 @@ RelativePath=".\..\src\depot.cpp" > + + @@ -623,6 +631,10 @@ RelativePath=".\..\src\linkgraph\mcf.cpp" > + + @@ -679,10 +691,6 @@ RelativePath=".\..\src\order_backup.cpp" > - - @@ -803,6 +811,10 @@ RelativePath=".\..\src\viewport.cpp" > + + @@ -955,6 +967,10 @@ RelativePath=".\..\src\console_type.h" > + + @@ -1007,6 +1023,10 @@ RelativePath=".\..\src\direction_type.h" > + + @@ -1235,6 +1255,10 @@ RelativePath=".\..\src\linkgraph\mcf.h" > + + @@ -1527,6 +1551,10 @@ RelativePath=".\..\src\roadveh.h" > + + @@ -1823,6 +1851,10 @@ RelativePath=".\..\src\viewport_func.h" > + + @@ -1979,6 +2011,10 @@ RelativePath=".\..\src\core\smallmatrix_type.hpp" > + + @@ -2479,10 +2515,6 @@ RelativePath=".\..\src\depot_cmd.cpp" > - - @@ -2735,6 +2767,14 @@ RelativePath=".\..\src\saveload\waypoint_sl.cpp" > + + + + + + @@ -2851,6 +2895,10 @@ RelativePath=".\..\src\table\strgen_tables.h" > + + @@ -3087,34 +3135,14 @@ RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h" > - - - - - - - - - - @@ -3451,6 +3479,14 @@ RelativePath=".\..\src\script\api\script_story_page.hpp" > + + + + @@ -3703,6 +3739,14 @@ RelativePath=".\..\src\script\api\script_story_page.cpp" > + + + + @@ -3775,6 +3819,14 @@ RelativePath=".\..\src\blitter\32bpp_anim.hpp" > + + + + @@ -3799,6 +3851,38 @@ RelativePath=".\..\src\blitter\32bpp_simple.hpp" > + + + + + + + + + + + + + + + + diff --git a/projects/openttd_vs90.vcproj.in b/projects/openttd_vs90.vcproj.in index 01166221f8..2793927bdb 100644 --- a/projects/openttd_vs90.vcproj.in +++ b/projects/openttd_vs90.vcproj.in @@ -53,7 +53,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -155,7 +155,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\"" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" @@ -255,7 +255,7 @@ FavorSizeOrSpeed="2" OmitFramePointers="true" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT" StringPooling="true" ExceptionHandling="1" RuntimeLibrary="0" @@ -359,7 +359,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" diff --git a/readme.txt b/readme.txt index 68cc47200a..817f397b51 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ -Last updated: 2013-06-01 -Release version: 1.3.1 +Last updated: 2015-02-24 +Release version: 1.5.0-beta2 ------------------------------------------------------------------------ @@ -26,6 +26,7 @@ Table of contents * 8.1) Translation * 8.2) Previewing 9.0) Troubleshooting +10.0) Licensing X.X) Credits @@ -35,9 +36,9 @@ OpenTTD is a transport simulation game based upon the popular game Transport Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features. -OpenTTD is licensed under the GNU General Public License version 2.0. For -more information, see the file 'COPYING'. - +OpenTTD is licensed under the GNU General Public License version 2.0, +but includes some 3rd party software under different licenses. See the +section "Licensing" below for details. 2.0) Contacting ---- ---------- @@ -281,7 +282,8 @@ your operating system: C:\Documents and Settings\\My Documents\OpenTTD (2000, XP) C:\Users\\Documents\OpenTTD (Vista, 7) Mac OSX: ~/Documents/OpenTTD - Linux: ~/.openttd + Linux: $XDG_DATA_HOME/openttd which is usually ~/.local/share/openttd when + built with XDG base directory support, otherwise ~/.openttd 3. The shared directory Windows: C:\Documents and Settings\All Users\Shared Documents\OpenTTD (2000, XP) C:\Users\Public\Documents\OpenTTD (Vista, 7) @@ -306,9 +308,9 @@ chosen main OpenTTD directory: 32bpp Sets: newgrf (or a subdirectory thereof) Music Sets: baseset (or a subdirectory thereof) AIs: ai (or a subdirectory thereof) - AI Libraries: ai/libraries (or a subdirectory thereof) + AI Libraries: ai/library (or a subdirectory thereof) Game Scripts (GS): game (or a subdirectory thereof) - GS Libraries: game/libraries (or a subdirectory thereof) + GS Libraries: game/library (or a subdirectory thereof) Savegames: save Automatic Savegames: save/autosave Scenarios: scenario @@ -321,10 +323,13 @@ Notes: others. - The previous search order is also used for NewGRFs and openttd.cfg. - If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, - 5 order. + 5 order. When built with XDG base directory support, openttd.cfg will be + created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd. - Savegames will be relative to the config file only if there is no save/ directory in paths with higher priority than the config file path, but autosaves and screenshots will always be relative to the config file. + Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all + other files will be saved under $XDG_DATA_HOME/openttd. The preferred setup: Place 3rd party files in shared directory (or in personal directory if you do @@ -476,9 +481,9 @@ DOS: website. Compilation is straight forward: use make, but do a './configure' before the first build. The build binary will need cwsdpmi.exe to be in the same directory as the openttd executable. cwsdpmi.exe can be found in - the os/dos subdirectory. If you compile with stripping turned on a binary - will be generated that does not need cwsdpmi.exe by adding the cswdstub.exe - to the created OpenTTD binary. + the os/dos/cwsdpmi subdirectory. If you compile with stripping turned on a + binary will be generated that does not need cwsdpmi.exe by adding the + cswdstub.exe to the created OpenTTD binary. 7.1) Required/optional libraries ---- --------------------------- @@ -642,50 +647,80 @@ development section (http://www.tt-forums.net/viewforum.php?f=66) or GrfCrawler (see section 4.2 'OpenTTD directories') and rescan the list of available NewGRFs. Once you have all missing files, you are set to go. +10.0) Licensing +----- --------- +OpenTTD is licensed under the GNU General Public License version 2.0. For +the complete license text, see the file 'COPYING'. This license applies +to all files in this distribution, except as noted below. + +The squirrel implementation in src/3rdparty/squirrel is licensed under +the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete +license text. + +The md5 implementation in src/3rdparty/md5 is licensed under the Zlib +license. See the comments in the source files in src/3rdparty/md5 for +the complete license text. + +The implementations of Posix getaddrinfo and getnameinfo for OS/2 in +src/3rdparty/os2 are distributed partly under the GNU Lesser General Public +License 2.1, and partly under the (3-clause) BSD license. The exact licensing +terms can be found in src/3rdparty/os2/getaddrinfo.c resp. +src/3rdparty/os2/getnameinfo.c. + +The exe2coff implementation in os/dos/exe2coff is available under the +GPL, with a number of additional terms. See os/dos/exe2coff/copying and +os/dos/exe2coff/copying.dj for the exact licensing terms. + +The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a +custom binary-only license that prohibits modification. The exact +licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources +for these files can be downloaded at its author site, at: +http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip X.X) Credits ---- ------- The OpenTTD team (in alphabetical order): - Albert Hofkamp (Alberth) - GUI expert - Jean-François Claeys (Belugas) - GUI, newindustries and more - Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework - Ulf Hermann (fonsinchen) - Cargo Distribution - Christoph Elsenhans (frosch) - General coding - Loïc Guilloux (glx) - Windows Expert - Michael Lutz (michi_cc) - Path based signals - Owen Rudge (orudge) - Forum host, OS/2 port - Peter Nelson (peter1138) - Spiritual descendant from newGRF gods - Ingo von Borstel (planetmaker) - Support - Remko Bijker (Rubidium) - Lead coder and way more - Zdeněk Sojka (SmatZ) - Bug finder and fixer - José Soler (Terkhen) - General coding - Thijs Marinussen (Yexo) - AI Framework - Leif Linse (Zuu) - AI/Game Script + 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) + Christoph Elsenhans (frosch) - General coding (since 0.6) + Loïc Guilloux (glx) - Windows Expert (since 0.4.5) + Michael Lutz (michi_cc) - Path based signals (since 0.7) + Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1) + Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5) + Ingo von Borstel (planetmaker) - General coding, Support (since 1.1) + Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5) + José Soler (Terkhen) - General coding (since 1.0) + Leif Linse (Zuu) - AI/Game Script (since 1.2) Inactive Developers: - Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles - Victor Fischer (Celestar) - Programming everywhere you need him to - Tamás Faragó (Darkvater) - Ex-Lead coder - Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) - Jonathan Coome (Maedhros) - High priest of the NewGRF Temple - Attila Bán (MiHaMiX) - WebTranslator 1 and 2 - Christoph Mallon (Tron) - Programmer, code correctness police + Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0) + Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7) + Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6) + Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6) + Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6) + Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5) + Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3) + Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5) + Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active) + Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3) Retired Developers: - Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3) - Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3) - Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6) - Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker - Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active) + Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5) + Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3) + Emil Djupfeld (egladil) - MacOSX port (0.4 - 0.6) + Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5) + Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3) + Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3) + Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3) + Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7) + Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3) Thanks to: Josef Drexler - For his great work on TTDPatch. Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations - Petr Baudiš (pasky) - Many patches, newgrf support, etc. - Simon Sasburg (HackyKid) - For the many bugfixes he has blessed us with Stefan Meißner (sign_de) - For his work on the console Mike Ragsdale - OpenTTD installer - Cian Duffy (MYOB) - BeOS port / manual writing Christian Rosentreter (tokai) - MorphOS / AmigaOS port Richard Kempton (RichK67) - Additional airports, initial TGP implementation Alberto Demichelis - Squirrel scripting language diff --git a/source.list b/source.list index 04b6ed45e3..62b1dd3f43 100644 --- a/source.list +++ b/source.list @@ -12,12 +12,14 @@ cheat.cpp command.cpp console.cpp console_cmds.cpp +cpu.cpp crashlog.cpp currency.cpp date.cpp debug.cpp dedicated.cpp depot.cpp +disaster_vehicle.cpp driver.cpp economy.cpp effectvehicle.cpp @@ -47,6 +49,7 @@ linkgraph/linkgraph.cpp linkgraph/linkgraphjob.cpp linkgraph/linkgraphschedule.cpp linkgraph/mcf.cpp +linkgraph/refresh.cpp map.cpp misc.cpp mixer.cpp @@ -61,7 +64,6 @@ network/network_server.cpp network/network_udp.cpp openttd.cpp order_backup.cpp -os_timer.cpp pbs.cpp progress.cpp rail.cpp @@ -97,6 +99,10 @@ townname.cpp #else #if OS2 os/os2/os2.cpp + 3rdparty/os2/getaddrinfo.c + 3rdparty/os2/getaddrinfo.h + 3rdparty/os2/getnameinfo.c + 3rdparty/os2/getnameinfo.h #else #if OSX os/macosx/crashlog_osx.cpp @@ -110,6 +116,9 @@ townname.cpp vehicle.cpp vehiclelist.cpp viewport.cpp +#if SSE +viewport_sprite_sorter_sse4.cpp +#end waypoint.cpp widget.cpp window.cpp @@ -154,6 +163,7 @@ console_func.h console_gui.h console_internal.h console_type.h +cpu.h crashlog.h currency.h date_func.h @@ -167,6 +177,7 @@ depot_map.h depot_type.h direction_func.h direction_type.h +disaster_vehicle.h music/dmusic.h driver.h economy_base.h @@ -224,6 +235,7 @@ linkgraph/linkgraphjob.h linkgraph/linkgraphjob_base.h linkgraph/linkgraphschedule.h linkgraph/mcf.h +linkgraph/refresh.h livery.h map_func.h map_type.h @@ -297,6 +309,7 @@ road_internal.h road_type.h roadstop_base.h roadveh.h +safeguards.h screenshot.h sdl.h sound/sdl_s.h @@ -371,6 +384,7 @@ vehicle_gui_base.h vehicle_type.h vehiclelist.h viewport_func.h +viewport_sprite_sorter.h viewport_type.h water.h waypoint_base.h @@ -426,6 +440,7 @@ core/random_func.cpp core/random_func.hpp core/smallmap_type.hpp core/smallmatrix_type.hpp +core/smallstack_type.hpp core/smallvec_type.hpp core/sort_func.hpp core/string_compare_type.hpp @@ -554,7 +569,6 @@ autoreplace_cmd.cpp clear_cmd.cpp company_cmd.cpp depot_cmd.cpp -disaster_cmd.cpp group_cmd.cpp industry_cmd.cpp misc_cmd.cpp @@ -619,6 +633,8 @@ saveload/subsidy_sl.cpp saveload/town_sl.cpp saveload/vehicle_sl.cpp saveload/waypoint_sl.cpp +saveload/extended_ver_sl.h +saveload/extended_ver_sl.cpp # Tables table/airport_defaults.h @@ -635,6 +651,7 @@ table/control_codes.h table/elrail_data.h table/engines.h table/genland.h +table/heightmap_colours.h table/industry_land.h table/landscape_sprite.h table/newgrf_debug_data.h @@ -649,6 +666,7 @@ table/roadveh_movement.h table/sprites.h table/station_land.h table/strgen_tables.h +table/string_colours.h ../objs/langs/table/strings.h table/town_land.h table/townname.h @@ -712,13 +730,8 @@ script/squirrel_std.hpp 3rdparty/squirrel/squirrel/sqpcheader.h 3rdparty/squirrel/squirrel/sqstate.h 3rdparty/squirrel/include/sqstdaux.h -3rdparty/squirrel/include/sqstdblob.h -3rdparty/squirrel/sqstdlib/sqstdblobimpl.h -3rdparty/squirrel/include/sqstdio.h 3rdparty/squirrel/include/sqstdmath.h -3rdparty/squirrel/sqstdlib/sqstdstream.h 3rdparty/squirrel/include/sqstdstring.h -3rdparty/squirrel/include/sqstdsystem.h 3rdparty/squirrel/squirrel/sqstring.h 3rdparty/squirrel/squirrel/sqtable.h 3rdparty/squirrel/include/squirrel.h @@ -808,6 +821,8 @@ script/api/script_signlist.hpp script/api/script_station.hpp script/api/script_stationlist.hpp script/api/script_story_page.hpp +script/api/script_storypagelist.hpp +script/api/script_storypageelementlist.hpp script/api/script_subsidy.hpp script/api/script_subsidylist.hpp script/api/script_testmode.hpp @@ -872,6 +887,8 @@ script/api/script_signlist.cpp script/api/script_station.cpp script/api/script_stationlist.cpp script/api/script_story_page.cpp +script/api/script_storypagelist.cpp +script/api/script_storypageelementlist.cpp script/api/script_subsidy.cpp script/api/script_subsidylist.cpp script/api/script_testmode.cpp @@ -893,12 +910,26 @@ script/api/script_window.cpp #else blitter/32bpp_anim.cpp blitter/32bpp_anim.hpp +#if SSE +blitter/32bpp_anim_sse4.cpp +blitter/32bpp_anim_sse4.hpp +#end blitter/32bpp_base.cpp blitter/32bpp_base.hpp blitter/32bpp_optimized.cpp blitter/32bpp_optimized.hpp blitter/32bpp_simple.cpp blitter/32bpp_simple.hpp +#if SSE +blitter/32bpp_sse_func.hpp +blitter/32bpp_sse_type.h +blitter/32bpp_sse2.cpp +blitter/32bpp_sse2.hpp +blitter/32bpp_sse4.cpp +blitter/32bpp_sse4.hpp +blitter/32bpp_ssse3.cpp +blitter/32bpp_ssse3.hpp +#end blitter/8bpp_base.cpp blitter/8bpp_base.hpp blitter/8bpp_optimized.cpp @@ -1082,7 +1113,10 @@ music/null_m.cpp #else #if DOS #else - music/extmidi.cpp + #if MORPHOS + #else + music/extmidi.cpp + #end #end #end #end diff --git a/src/3rdparty/README.licensing b/src/3rdparty/README.licensing new file mode 100644 index 0000000000..112b02a087 --- /dev/null +++ b/src/3rdparty/README.licensing @@ -0,0 +1,3 @@ +The files in this directory are not licensed under the same terms as the +rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt +and in this directory or subdirectories as well. diff --git a/src/3rdparty/md5/md5.cpp b/src/3rdparty/md5/md5.cpp index d2d6fbab77..2111a8eb81 100644 --- a/src/3rdparty/md5/md5.cpp +++ b/src/3rdparty/md5/md5.cpp @@ -60,6 +60,8 @@ #include "../../core/endian_func.hpp" #include "md5.h" +#include "../../safeguards.h" + #define T_MASK ((uint32)~0) #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) diff --git a/src/3rdparty/os2/getaddrinfo.c b/src/3rdparty/os2/getaddrinfo.c new file mode 100644 index 0000000000..3cdda21f1b --- /dev/null +++ b/src/3rdparty/os2/getaddrinfo.c @@ -0,0 +1,299 @@ +/* + * This file is part of libESMTP, a library for submission of RFC 2822 + * formatted electronic mail messages using the SMTP protocol described + * in RFC 2821. + * + * Copyright (C) 2001,2002 Brian Stafford + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface. + */ + +#if !HAVE_GETADDRINFO + +/* Need to turn off Posix features in glibc to build this */ +#undef _POSIX_C_SOURCE +#undef _XOPEN_SOURCE + +#include "getaddrinfo.h" +//#include "compat/inet_pton.h" + +#include +#include +#include +#include +#include +#include +#include + +static struct addrinfo * +dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) { + struct addrinfo *ret; + + ret = malloc (sizeof (struct addrinfo)); + if (ret == NULL) + return NULL; + memcpy (ret, info, sizeof (struct addrinfo)); + ret->ai_addr = malloc (addrlen); + if (ret->ai_addr == NULL) { + free (ret); + return NULL; + } + memcpy (ret->ai_addr, addr, addrlen); + ret->ai_addrlen = addrlen; + return ret; +} + +int +getaddrinfo (const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res) +{ + struct hostent *hp; + struct servent *servent; + const char *socktype; + int port; + struct addrinfo hint, result; + struct addrinfo *ai, *sai, *eai; + char **addrs; + + if (servname == NULL && nodename == NULL) + return EAI_NONAME; + + memset (&result, 0, sizeof result); + + /* default for hints */ + if (hints == NULL) { + memset (&hint, 0, sizeof hint); + hint.ai_family = PF_UNSPEC; + hints = &hint; + } + + if (servname == NULL) + port = 0; + else { + /* check for tcp or udp sockets only */ + if (hints->ai_socktype == SOCK_STREAM) + socktype = "tcp"; + else if (hints->ai_socktype == SOCK_DGRAM) + socktype = "udp"; + else + return EAI_SERVICE; + result.ai_socktype = hints->ai_socktype; + + /* Note: maintain port in host byte order to make debugging easier */ + if (isdigit (*servname)) + port = strtol (servname, NULL, 10); + else if ((servent = getservbyname (servname, socktype)) != NULL) + port = ntohs (servent->s_port); + else + return EAI_NONAME; + } + + /* if nodename == NULL refer to the local host for a client or any + for a server */ + if (nodename == NULL) { + struct sockaddr_in sin; + + /* check protocol family is PF_UNSPEC or PF_INET - could try harder + for IPv6 but that's more code than I'm prepared to write */ + if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) + result.ai_family = AF_INET; + else + return EAI_FAMILY; + + sin.sin_family = result.ai_family; + sin.sin_port = htons (port); + if (hints->ai_flags & AI_PASSIVE) + sin.sin_addr.s_addr = htonl (INADDR_ANY); + else + sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + /* Duplicate result and addr and return */ + *res = dup_addrinfo (&result, &sin, sizeof sin); + return (*res == NULL) ? EAI_MEMORY : 0; + } + + /* If AI_NUMERIC is specified, use inet_pton to translate numbers and + dots notation. */ + if (hints->ai_flags & AI_NUMERICHOST) { + struct sockaddr_in sin; + + /* check protocol family is PF_UNSPEC or PF_INET */ + if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) + result.ai_family = AF_INET; + else + return EAI_FAMILY; + + sin.sin_family = result.ai_family; + sin.sin_port = htons (port); + if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0) + return EAI_NONAME; + sin.sin_addr.s_addr = inet_addr (nodename); + /* Duplicate result and addr and return */ + *res = dup_addrinfo (&result, &sin, sizeof sin); + return (*res == NULL) ? EAI_MEMORY : 0; + } + +#if HAVE_H_ERRNO + h_errno = 0; +#endif + errno = 0; + hp = gethostbyname(nodename); + if (hp == NULL) { +#ifdef EAI_SYSTEM + if (errno != 0) { + return EAI_SYSTEM; + } +#endif + switch (h_errno) { + case HOST_NOT_FOUND: + return EAI_NODATA; + case NO_DATA: + return EAI_NODATA; +#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA + case NO_ADDRESS: + return EAI_NODATA; +#endif + case NO_RECOVERY: + return EAI_FAIL; + case TRY_AGAIN: + return EAI_AGAIN; + default: + return EAI_FAIL; + } + return EAI_FAIL; + } + + /* Check that the address family is acceptable. + */ + switch (hp->h_addrtype) { + case AF_INET: + if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)) + return EAI_FAMILY; + break; +#ifndef __OS2__ + case AF_INET6: + if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6)) + return EAI_FAMILY; + break; +#endif + default: + return EAI_FAMILY; + } + + /* For each element pointed to by hp, create an element in the + result linked list. */ + sai = eai = NULL; + for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) { + struct sockaddr sa; + size_t addrlen; + + if (hp->h_length < 1) + continue; + sa.sa_family = hp->h_addrtype; + switch (hp->h_addrtype) { + case AF_INET: + ((struct sockaddr_in *) &sa)->sin_port = htons (port); + memcpy (&((struct sockaddr_in *) &sa)->sin_addr, + *addrs, hp->h_length); + addrlen = sizeof (struct sockaddr_in); + break; +#ifndef __OS2__ + case AF_INET6: +#if SIN6_LEN + ((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length; +#endif + ((struct sockaddr_in6 *) &sa)->sin6_port = htons (port); + memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr, + *addrs, hp->h_length); + addrlen = sizeof (struct sockaddr_in6); + break; +#endif + default: + continue; + } + + result.ai_family = hp->h_addrtype; + ai = dup_addrinfo (&result, &sa, addrlen); + if (ai == NULL) { + freeaddrinfo (sai); + return EAI_MEMORY; + } + if (sai == NULL) + sai = ai; + else + eai->ai_next = ai; + eai = ai; + } + + if (sai == NULL) { + return EAI_NODATA; + } + + if (hints->ai_flags & AI_CANONNAME) { + sai->ai_canonname = malloc (strlen (hp->h_name) + 1); + if (sai->ai_canonname == NULL) { + freeaddrinfo (sai); + return EAI_MEMORY; + } + strcpy (sai->ai_canonname, hp->h_name); + } + + *res = sai; + return 0; +} + +void +freeaddrinfo (struct addrinfo *ai) +{ + struct addrinfo *next; + + while (ai != NULL) { + next = ai->ai_next; + if (ai->ai_canonname != NULL) + free (ai->ai_canonname); + if (ai->ai_addr != NULL) + free (ai->ai_addr); + free (ai); + ai = next; + } +} + +const char * +gai_strerror (int ecode) +{ + static const char *eai_descr[] = { + "no error", + "address family for nodename not supported", /* EAI_ADDRFAMILY */ + "temporary failure in name resolution", /* EAI_AGAIN */ + "invalid value for ai_flags", /* EAI_BADFLAGS */ + "non-recoverable failure in name resolution", /* EAI_FAIL */ + "ai_family not supported", /* EAI_FAMILY */ + "memory allocation failure", /* EAI_MEMORY */ + "no address associated with nodename", /* EAI_NODATA */ + "nodename nor servname provided, or not known", /* EAI_NONAME */ + "servname not supported for ai_socktype", /* EAI_SERVICE */ + "ai_socktype not supported", /* EAI_SOCKTYPE */ + "system error returned in errno", /* EAI_SYSTEM */ + "argument buffer overflow", /* EAI_OVERFLOW */ + }; + + if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0])) + return "unknown error"; + return eai_descr[ecode]; +} + +#endif /* HAVE_GETADDRINFO */ diff --git a/src/3rdparty/os2/getaddrinfo.h b/src/3rdparty/os2/getaddrinfo.h new file mode 100644 index 0000000000..0a588a40a2 --- /dev/null +++ b/src/3rdparty/os2/getaddrinfo.h @@ -0,0 +1,101 @@ +#ifndef _getaddrinfo_h +#define _getaddrinfo_h + +/* + * Shamelessly duplicated from the fetchmail public sources + * for use by the Squid Project under GNU Public License. + * + * Update/Maintenance History: + * + * 15-Aug-2007 : Copied from fetchmail 6.3.8 + * - added protection around libray headers + * + * 16-Aug-2007 : Altered configure checks + * Un-hacked slightly to use system gethostbyname() + * + * Original License and code follows. + */ + +/* + * This file is part of libESMTP, a library for submission of RFC 2822 + * formatted electronic mail messages using the SMTP protocol described + * in RFC 2821. + * + * Copyright (C) 2001,2002 Brian Stafford + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Structure and prototypes taken from RFC 2553 */ + +/* SG 23/09/2007: +On Windows the following definitions are already available, may be that +this could be needed on some other platform */ +typedef int socklen_t; + +struct addrinfo { + int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ + int ai_family; /* PF_xxx */ + int ai_socktype; /* SOCK_xxx */ + int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ + socklen_t ai_addrlen; /* length of ai_addr */ + char *ai_canonname; /* canonical name for nodename */ + struct sockaddr *ai_addr; /* binary address */ + struct addrinfo *ai_next; /* next structure in linked list */ +}; + +/* Supposed to be defined in */ +#define AI_ADDRCONFIG 0 +#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */ +#define AI_CANONNAME 2 /* Request for canonical name. */ +#define AI_NUMERICHOST 4 /* Don't use name resolution. */ + +/* Supposed to be defined in */ +#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ +#define EAI_AGAIN 2 /* temporary failure in name resolution */ +#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ +#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ +#define EAI_FAMILY 5 /* ai_family not supported */ +#define EAI_MEMORY 6 /* memory allocation failure */ +#define EAI_NODATA 7 /* no address associated with nodename */ +#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ +#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ +#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ + +#ifndef EAI_SYSTEM +/* Not defined on mingw32. */ +#define EAI_SYSTEM 11 /* System error returned in `errno'. */ +#endif +#ifndef EAI_OVERFLOW +/* Not defined on mingw32. */ +#define EAI_OVERFLOW 12 /* Argument buffer overflow. */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif +/* RFC 2553 / Posix resolver */ +int getaddrinfo (const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res); +/* Free addrinfo structure and associated storage */ +void freeaddrinfo (struct addrinfo *ai); + +/* Convert error return from getaddrinfo() to string */ +const char *gai_strerror (int code); +#ifdef __cplusplus +} +#endif + +#endif /* _getaddrinfo_h */ diff --git a/src/3rdparty/os2/getnameinfo.c b/src/3rdparty/os2/getnameinfo.c new file mode 100644 index 0000000000..14fd89ef15 --- /dev/null +++ b/src/3rdparty/os2/getnameinfo.c @@ -0,0 +1,367 @@ +/* + * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Issues to be discussed: + * - RFC2553 says that we should raise error on short buffer. X/Open says + * we need to truncate the result. We obey RFC2553 (and X/Open should be + * modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says + * nothing about it, but defines a new error code EAI_OVERFLOW which seems + * to be intended the code for this case. + * - What is "local" in NI_NOFQDN? (see comments in the code) + * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. + * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if + * sin6_scope_id is filled - standardization status? + * - what should we do if we should do getservbyport("sctp")? + */ + +/* + * Considerations about thread-safeness + * The code in this file is thread-safe, and so the thread-safeness of + * getnameinfo() depends on the property of backend functions. + * - getservbyport() is not thread safe for most systems we are targeting. + * - getipnodebyaddr() is thread safe. However, many resolver libraries + * used in the function are not thread safe. + * - gethostbyaddr() is usually not thread safe. + */ + +#if !HAVE_GETNAMEINFO + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "getaddrinfo.h" +#include "getnameinfo.h" + +static const struct afd { + int a_af; + int a_addrlen; + int a_socklen; + int a_off; + int a_portoff; +} afdl [] = { +#if INET6 + {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6), + offsetof(struct sockaddr_in6, sin6_addr), + offsetof(struct sockaddr_in6, sin6_port)}, +#endif + {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in), + offsetof(struct sockaddr_in, sin_addr), + offsetof(struct sockaddr_in, sin_port)}, + {0, 0, 0, 0, 0}, +}; + +#if INET6 +static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *, + size_t, int)); +static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); +#endif + +int +getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) +const struct sockaddr *sa; +socklen_t salen; +char *host; +size_t hostlen; +char *serv; +size_t servlen; +int flags; +{ + const struct afd *afd; + struct servent *sp; + struct hostent *hp; + unsigned short port; + int family, i; + const char *addr; + uint32_t v4a; + char numserv[512]; + + if (sa == NULL) + return EAI_FAIL; + +#if HAVE_SA_LEN /*XXX*/ + if (sa->sa_len != salen) + return EAI_FAIL; +#endif + + family = sa->sa_family; + for (i = 0; afdl[i].a_af; i++) + if (afdl[i].a_af == family) { + afd = &afdl[i]; + goto found; + } + return EAI_FAMILY; + +found: + if (salen != afd->a_socklen) + return EAI_FAIL; + + /* network byte order */ + memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port)); + addr = (const char *)sa + afd->a_off; + + if (serv == NULL || servlen == 0) { + /* + * do nothing in this case. + * in case you are wondering if "&&" is more correct than + * "||" here: RFC3493 says that serv == NULL OR servlen == 0 + * means that the caller does not want the result. + */ + } else { + if (flags & NI_NUMERICSERV) + sp = NULL; + else { + sp = getservbyport(port, + (flags & NI_DGRAM) ? "udp" : "tcp"); + } + if (sp) { + if (strlen(sp->s_name) + 1 > servlen) + return EAI_OVERFLOW; + strncpy(serv, sp->s_name, servlen); + } else { + snprintf(numserv, sizeof(numserv), "%u", ntohs(port)); + if (strlen(numserv) + 1 > servlen) + return EAI_OVERFLOW; + strncpy(serv, numserv, servlen); + } + } + + switch (sa->sa_family) { + case AF_INET: + v4a = (uint32_t) + ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr); + if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) + flags |= NI_NUMERICHOST; + v4a >>= IN_CLASSA_NSHIFT; + if (v4a == 0) + flags |= NI_NUMERICHOST; + break; +#if INET6 + case AF_INET6: { + const struct sockaddr_in6 *sin6; + sin6 = (const struct sockaddr_in6 *)sa; + switch (sin6->sin6_addr.s6_addr[0]) { + case 0x00: + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) + ; + else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr)) + ; + else + flags |= NI_NUMERICHOST; + break; + default: + if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) + flags |= NI_NUMERICHOST; + else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) + flags |= NI_NUMERICHOST; + break; + } + } + break; +#endif + } + if (host == NULL || hostlen == 0) { + /* + * do nothing in this case. + * in case you are wondering if "&&" is more correct than + * "||" here: RFC3493 says that host == NULL or hostlen == 0 + * means that the caller does not want the result. + */ + } else if (flags & NI_NUMERICHOST) { + /* NUMERICHOST and NAMEREQD conflicts with each other */ + if (flags & NI_NAMEREQD) + return EAI_NONAME; + + goto numeric; + } else { +#if USE_GETIPNODEBY + int h_error = 0; + hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); +#else + hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); +#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used +#if HAVE_H_ERRNO + h_error = h_errno; +#else + h_error = EINVAL; +#endif +#endif /* 0 */ +#endif + + if (hp) { +#if 0 + if (flags & NI_NOFQDN) { + /* + * According to RFC3493 section 6.2, NI_NOFQDN + * means "node name portion of the FQDN shall + * be returned for local hosts." The following + * code tries to implement it by returning the + * first label (the part before the first + * period) of the FQDN. However, it is not + * clear if this always makes sense, since the + * given address may be outside of "local + * hosts." Due to the unclear description, we + * disable the code in this implementation. + */ + char *p; + p = strchr(hp->h_name, '.'); + if (p) + *p = '\0'; + } +#endif + if (strlen(hp->h_name) + 1 > hostlen) { +#if USE_GETIPNODEBY + freehostent(hp); +#endif + return EAI_OVERFLOW; + } + strncpy(host, hp->h_name, hostlen); +#if USE_GETIPNODEBY + freehostent(hp); +#endif + } else { + if (flags & NI_NAMEREQD) + return EAI_NONAME; + +numeric: + switch (afd->a_af) { +#if INET6 + case AF_INET6: { + int error; + + if ((error = ip6_parsenumeric(sa, addr, host, + hostlen, + flags)) != 0) + return(error); + break; + } +#endif + default: + if (inet_ntop(afd->a_af, addr, host, + hostlen) == NULL) + return EAI_SYSTEM; + break; + } + } + } + return(0); +} + +#if INET6 +static int +ip6_parsenumeric(sa, addr, host, hostlen, flags) +const struct sockaddr *sa; +const char *addr; +char *host; +size_t hostlen; +int flags; +{ + int numaddrlen; + char numaddr[512]; + + if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL) + return EAI_SYSTEM; + + numaddrlen = strlen(numaddr); + if (numaddrlen + 1 > hostlen) /* don't forget terminator */ + return EAI_OVERFLOW; + strncpy(host, numaddr, hostlen); + + if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { + char zonebuf[SQUIDHOSTNAMELEN]; + int zonelen; + + zonelen = ip6_sa2str( + (const struct sockaddr_in6 *)(const void *)sa, + zonebuf, sizeof(zonebuf), flags); + if (zonelen < 0) + return EAI_OVERFLOW; + if (zonelen + 1 + numaddrlen + 1 > hostlen) + return EAI_OVERFLOW; + + /* construct */ + memcpy(host + numaddrlen + 1, zonebuf, + (size_t)zonelen); + host[numaddrlen] = SCOPE_DELIMITER; + host[numaddrlen + 1 + zonelen] = '\0'; + } + + return 0; +} + +/* ARGSUSED */ +static int +ip6_sa2str(sa6, buf, bufsiz, flags) +const struct sockaddr_in6 *sa6; +char *buf; +size_t bufsiz; +int flags; +{ + unsigned int ifindex; + const struct in6_addr *a6; + int n; + + ifindex = (unsigned int)sa6->sin6_scope_id; + a6 = &sa6->sin6_addr; + +#if NI_NUMERICSCOPE + if ((flags & NI_NUMERICSCOPE) != 0) { + n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); + if (n < 0 || n >= bufsiz) + return -1; + else + return n; + } +#endif + + /* if_indextoname() does not take buffer size. not a good api... */ + if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) || + IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) { + char *p = if_indextoname(ifindex, buf); + if (p) + return (strlen(p)); + } + + /* last resort */ + n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); + if (n < 0 || n >= bufsiz) + return -1; + else + return n; +} +#endif /* INET6 */ +#endif diff --git a/src/3rdparty/os2/getnameinfo.h b/src/3rdparty/os2/getnameinfo.h new file mode 100644 index 0000000000..c1861aa033 --- /dev/null +++ b/src/3rdparty/os2/getnameinfo.h @@ -0,0 +1,29 @@ +#ifndef _getnameinfo_h +#define _getnameinfo_h +/* + * Reconstructed from KAME getnameinfo.c (in lib/) + */ + + /* getnameinfo flags */ +#define NI_NOFQDN 0x0001 +#define NI_NUMERICHOST 0x0002 /* return numeric form of address */ +#define NI_NAMEREQD 0x0004 /* request DNS name */ +#define NI_NUMERICSERV 0x0008 +#define NI_DGRAM 0x0010 + +#ifdef __cplusplus +extern "C" { +#endif +/* RFC 2553 / Posix resolver */ +int getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags ); +#ifdef __cplusplus +} +#endif + +#endif /* _getnameinfo_h */ diff --git a/src/3rdparty/squirrel/COMPILE b/src/3rdparty/squirrel/COMPILE deleted file mode 100644 index 8dbbf8c2fc..0000000000 --- a/src/3rdparty/squirrel/COMPILE +++ /dev/null @@ -1,41 +0,0 @@ -Squirrel 2.2.4 stable --------------------------------------------------------- -What is in this distribution? - -squirrel - static library implementing the compiler and interpreter of the language - -sqstdlib - the standard utility libraries - -sq - stand alone interpreter - -doc - The manual - -etc - a minimalistic embedding sample - -samples - samples programs - - -HOW TO COMPILE ---------------------------------------------------------- -GCC USERS -......................................................... -There is a very simple makefile that compiles all libraries and exes -from the root of the project run 'make' - -for 32 bits systems - - $ make - -for 64 bits systems - - $ make sq64 - -VISUAL C++ USERS -......................................................... -Open squirrel.dsw from the root project directory and build(dho!) diff --git a/src/3rdparty/squirrel/HISTORY b/src/3rdparty/squirrel/HISTORY deleted file mode 100644 index 8de77ac16a..0000000000 --- a/src/3rdparty/squirrel/HISTORY +++ /dev/null @@ -1,357 +0,0 @@ -***version 2.2.5 stable*** --sq_getsize() now returns userdatasize for classes and instances --added parameter 'isstatic' to _newmember metamethod(thx G.Meyer) --now array.sort() is implemented with heapsort --added SQUIRREL_VERSION_NUMBER preprocessor definition --now floats in scientific notation also accept numbers with no '.' (eg. 1e+6 or 1e6) --fixed some compiler warning --fixed a minor compiler bug --fixed some bugs when SQUSEDOUBLE is used in 32bits systems --fixed bug in GC - -***2009-11-15 *** -***version 2.2.4 stable*** --fixed bug in functions with default parameters - -***2009-06-30 *** -***version 2.2.3 stable*** --added sq_getfunctioninfo --added compile time flag SQUSEDOUBLE to use double precision floats --added global slot _floatsize_ int the base lib to recognize single precision and double precision builds --sq_wakeupvm can now resume the vm with an exception --added sqstd_format --generators can now be instantiated by calling sq_call() or closure.call() --fixed a bug in sqstd_printcallstack(thx takayuki_h) --fixed modulo by zero(thx jup) --fixed negative enums and constants --fixed generator crash bug if invoked as tail call (thx Mr.Accident) --fixed some minor bug - -***2008-09-24 *** -***version 2.2.2 stable*** --fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident) --fixed coroutine error propagation --fixed lingering return value from native function (thx Tom Leonard) --fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard) --fixed some minor api bug --added sq_arrayremove() and sq_arrayinsert() - -***2008-05-16 *** -***version 2.2.1 stable*** --fixed a tailcall bug - -***2008-02-17 *** -***version 2.2 stable *** --added _newslot metamethod in classes --added enums added constants --added sq_pushconsttable, sq_setconsttable --added default param --added octal literals(thx Dinosaur) --fixed debug hook, 'calls' and 'returns' are properly notified in the same number. --fixed a coroutine bug - -***2007-07-29 *** -***version 2.1.2 stable*** --new behaviour for generators iteration using foreach -now when a generator is iterated by foreach the value returned by a 'return val' statement -will terminate the iteration but will not be returned as foreach iteration --added sq_setclassudsize() --added sq_clear() --added table.clear(), array.clear() --fixed sq_cmp() (thx jyuill) --fixed minor bugs - -***2006-08-21 *** -***version 2.1.1 stable*** --vm refactoring --optimized internal function memory layout --new global symbol _version_ (is the version string) --code size optimization for float literals(on 32bits float builts) --now the raw ref API(sq_addref etc...) is fully reentrant. --fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB) --improved C reference performances in NO_GARBAGE_COLLECTOR builds --sq_getlocal() now enumerates also outer values. --fixed regexp library for GCC users. - -***2006-03-19 *** -***version 2.1 stable*** --added static class fields, new keyword static --added 64bits architecture support --added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds --added functions with fixed environment, closure.bindenv() built-in function --all types except userdata and null implement the tostring() method --string concatenation now invokes metamethod _tostring --new metamethods for class objects _newmember and _inherited --sq_call() sq_resume() sq_wakeupvm() have a new signature --new C referencing implementation(scales more with the amount of references) --refactored hash table --new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv() --the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot --sq_setreleasehook() now also works for classes --stream.readstr() and stream.writestr() have been deprecated(this affects file and blob) --fixed squirrel.h undeclared api calls --fixed few minor bugs --SQChar is now defined as wchar_t --removed warning when building with -Wall -pedantic for GCC users --added new std io function writeclosuretofile() --added new std string functions strip(),rstrip(),lstrip() and split() --regular expressions operators (+,*) now have more POSIX greedyness behaviour --class constructors are now invoked as normal functions - -***2005-10-02 *** -***version 2.0.5 stable*** --fixed some 64bits incompatibilities (thx sarge) --fixed minor bug in the stdlib format() function (thx Rick) --fixed a bug in dofile() that was preventing to compile empty files --added new API sq_poptop() & sq_getfreevariable() --some performance improvements - -***2005-08-14 *** -***version 2.0.4 stable*** --weak references and related API calls --added sq_objtobool() --class instances memory policies improved(1 mem allocation for the whole instance) --typetags are now declared as SQUserPointer instead of unsigned int --first pass for 64bits compatibility --fixed minor bug in the stdio stream --fixed a bug in format() --fixed bug in string.tointeger() and string.tofloat() - -***2005-06-24 *** -***version 2.0.3 stable*** --dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian --sq_setparamscheck() : now typemesk can check for null --added string escape sequence \xhhhh --fixed some C++ standard incompatibilities - -***2005-05-15 *** -***version 2.0.2 stable*** --performances improvements (expecially for GCC users) --removed all dependencies from C++ exception handling --various bugfixes - -***2005-04-12 *** -***version 2.0.1 stable*** --various bugfixes --sq_setparamscheck() now allows spaces in the typemask - -***2005-04-03 *** -***version 2.0 stable*** --added API sq_gettypetag() --added built-in function to the bool type(tointeger, tostring etc...) - -***2005-02-27 *** -***version 2.0 release candidate 1(RC 1)*** --added API sq_reseterror() --modified sq_release() --now class instances can be cloned --various bufixes - -***2005-01-26 *** -***version 2.0 beta 1*** --added bool type --class properties can be redefined in a derived class --added ops *= /= and %= --new syntax for class attributes declaration instead of ( and ) --increased the max number of literals per function from 65535 to 16777215 --now free variables have proper lexical scoping --added API sq_createinstance(), sq_pushbool(), sq_getbool() --added built-in function type() --added built-in function obj.rawin(key) in table,class and instance --sq_rawget() and sq_rawset() now work also on classes and instances --the VM no longer uses C++ exception handling (more suitable for embedded devices) --various bufixes - -***2004-12-21 *** -***version 2.0 alpha 2*** --globals scoping changed, now if :: is omitted the VM automatically falls back on the root table --various bufixes --added class level attributes - -***2004-12-12 *** -***version 2.0 alpha 1*** --codebase branch from version 1.x --added classes --added functions with variable number of parameters(vargc & vargv and the ...) --0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while) --added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes() --modified api sq_settypetag() - -***2004-11-01 *** -***version 1.0 stable*** --fixed some minor bug --improoved operator 'delete' performances --added scientific notation for float numbers( eg. 2.e16 or 2.e-2) - -***2004-08-30 *** -***version 1.0 release candidate 2(RC 2)*** --fixed bug in the vm(thx Pierre Renaux) --fixed bug in the optimizer(thx Pierre Renaux) --fixed some bug in the documentation(thx JD) --added new api functions for raw object handling --removed nested multiline comments --reduced memory footprint in C references - -***2004-08-23 *** -***version 1.0 release candidate 1(RC 1)*** --fixed division by zero --the 'in' operator and obj.rawget() do not query the default delegate anymore --added function sq_getprintfunc() --added new standard library 'auxlib'(implements default error handlers) - -***2004-07-12 *** -***version 1.0 beta 4*** --fixed a bug in the integer.tochar() built-in method --fixed unary minus operator --fixed bug in dofile() --fixed inconsistency between != and == operators(on float/integer comparison) --added javascript style unsigned right shift operator '>>>' --added array(size) constructor built-in function --array.resize(size,[fill]) built-in function accepts an optional 'fill' value --improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename() - -***2004-05-23 *** -***version 1.0 beta 3*** --minor vm bug fixes --string allocation is now faster --tables and array memory usage is now less conservative(they shrink) --added regular expression routines in the standard library --The 'c' expression now accepts only 1 character(thx irbrian) --multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string") --added new keyword 'parent' for accessing the delegate of tables and unserdata --The metamethod '_clone' has been renamed '_cloned' --the _delslot metamethod's behaviour and prototype have been changed --new default function in the integer and float object 'tochar()' --the built-in function chcode2string has been removed --the default method [table].getdelegate() has been removed --new api sq_rawdeleteslot() --new table built-in method rawdelete(key) --the dynamic mudule loading has been removed from the standard distribution --some optimizations in the VM - -***2004-04-21 *** -***version 1.0 beta 2*** --minor compiler/parser bug fixes --sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck() --sq_setparamscheck allows to add automatic parameters type checking in native closures --sq_compile() lost the lineinfo parameter --new api sq_enabledebuginfo() globally sets compiler's debug info generation --added consistency check on bytecode serialization --fixed += operator, now works on strings like + --added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime --added registry table --new api call sq_pushregistrytable() --added type tag to the userdata type sq_settypetag() --sq_getuserdata now queries the userdata typetag --the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons --new standard libraries(sqlibs are now obsolete) - -***2004-02-20 *** -***version 1.0 beta 1*** --fixed a bug in the compiler (thanks Martin Kofler) --fixed bug in the switch case statement --fixed the _unm metamethod --fixed minor bugs in the API --fixed automatic stack resizing --first beta version - first pass code clean up in the VM and base lib - first pass code coverege test has been done on VM and built-in lib --new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete) --new api allows to specifiy a "print" function to output text(sq_printfunc) --added some small optimizations --new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread") --new built in functions have been added for manipulating the new "thread" type --friend virtual machines share the same root table, error handler and debug hook by default --new compile time options - -***2004-01-19 *** -***version 0.9 alpha*** --fixed a garbage collection bug --fixed some API bugs(thanks to Joshua Jensen) --fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled) --new function parameters semantic, now passing a wrong number of parameters generates an exception --native closures have now a built in parameter number checking --sq_rawget and sq_rawset now work also on arrays --sq_getsize now woks also on userdata --the userdata release hook prototype is changed(now passes the size of the userdata) --the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen) --faster compiler --try/catch blocks do not cause any runtime memory allocation anymore - -***2003-12-06 *** -***version 0.8 alpha*** --fixed a bug that was preventing to have callable userdata throught the metamethod _call --fixed a garbage collection bug --fixed == operator now can compare correctly different types --new built in method getstackinfos(level) --improoved line informations precision for the debug hook --new api call sq_compilebuffer() --new built-in api function compilestring() --new syntactic sugar for function declarations inside tables --the debug API has been finalized - -***2003-11-17 *** -***version 0.7 alpha*** --fixed critical bug SQInteger the tail call system --fixed bug in the continue statement code generation --fixed func call param issue(thanks to Rewoonenco Andrew) --added _delslot metamethod(thanks to Rewoonenco Andrew) --new multiline string expression ( delimited by <[ and ]> ) --normal strings ("") do not allow embedded new line anymore --reduced vm memory footprint(C refs are shared between friend VMs) --new api method sq_deleteslot() --new debug hook event 'r' is triggered when a function returns - -***2003-11-04 *** -***version 0.6 alpha*** --fixed switch statement(was executing the default case after a break) --sq_call() doesn't pop the closure (just the params) --the vm execution can be suspended from the C API anytime (micro-threads) --new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack() - -***2003-10-13 *** -***version 0.5 alpha*** --fixed some minor bug --tested with non ASCII identifiers in unicode mode(I've tried chinese chars) --added built-in function string.find() --the built-in function array.sort() optionally accepts a cmp(a,b) function --the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname) --fixed some debug info imprecision - -***2003-10-01 *** -***version 0.4 alpha*** --faster VM --sq_call will pop arguments and closure also in case of failure --fixed a bug in sq_remove --now the VM detects delegation cycles(and throws an exception) --new operators ++ and -- --new operator ',' comma operator --fixed some expression precedence issue --fixed bug in sq_arraypop - -***2003-09-15 *** -***version 0.3 alpha*** --fixed a bug in array::insert() --optional Unicode core(define SQUNICODE or _UNICODE on Win32) --sq_compiler uses a new reader function SQLEXREADFUNC --the debug hook passes 'l' instead of 'line' for line callbacks - and 'c' instead of 'call' for call callbacks --new array.extend() bulit-in function --new API sq_clone() - -***2003-09-10 *** -***version 0.2 pre-alpha*** --new completely reentrant VM (sq_open and sq_close are now obsolete) --sq_newvm() has a new prototype --allocators are now global and linked in the VM --_newslot meta method added --rawset creates a slot if doesn't exists --the compiler error callback pass the vm handle(thanks Pierre Renaux) --sq_setforeignptr() sq_getforeingptr() are now public --sq_resume() now is possible to resume generators from C --sq_getlasterror() retrieve the last thrown error --improved docs - -***2003-09-06 *** -***version 0.1 pre-alpha*** -first release diff --git a/src/3rdparty/squirrel/Makefile b/src/3rdparty/squirrel/Makefile deleted file mode 100644 index 594ec8b1c2..0000000000 --- a/src/3rdparty/squirrel/Makefile +++ /dev/null @@ -1,23 +0,0 @@ - -SQUIRREL=. -MAKE=make - -sq32: - cd squirrel; $(MAKE) - cd sqstdlib; $(MAKE) - cd sq; $(MAKE) - -sqprof: - cd squirrel; $(MAKE) sqprof - cd sqstdlib; $(MAKE) sqprof - cd sq; $(MAKE) sqprof - -sq64: - cd squirrel; $(MAKE) sq64 - cd sqstdlib; $(MAKE) sq64 - cd sq; $(MAKE) sq64 - -clean: - $(MAKE) -C squirrel clean - $(MAKE) -C sqstdlib clean - $(MAKE) -C sq clean diff --git a/src/3rdparty/squirrel/README b/src/3rdparty/squirrel/README deleted file mode 100644 index 9c3bd7b76d..0000000000 --- a/src/3rdparty/squirrel/README +++ /dev/null @@ -1,22 +0,0 @@ -The programming language SQUIRREL 2.2.5 stable - --------------------------------------------------- -The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and -Linux(Slackware 9.0 on Intel x86, Fedora Core 4 on AMD x64). - -Has been tested with the following compilers: - MS Visual C++ 6.0,7.0,7.1 and 8.0 (32 and 64bits) - MinGW gcc 3.2 (mingw special 20020817-1) - Cygnus gcc 3.2 - Linux gcc 3.2.3 - Linux gcc 4.0.0 (x86 64bits) - - -Feedback and suggestions are appreciated -project page - http://www.squirrel-lang.org -community forums - http://www.squirrel-lang.org/Forums -wiki - http://wiki.squirrel-lang.org -author - alberto@demichelis.net - -END OF README - diff --git a/src/3rdparty/squirrel/doc/sqstdlib2.chm b/src/3rdparty/squirrel/doc/sqstdlib2.chm deleted file mode 100644 index fbf53ec2af..0000000000 Binary files a/src/3rdparty/squirrel/doc/sqstdlib2.chm and /dev/null differ diff --git a/src/3rdparty/squirrel/doc/sqstdlib2.pdf b/src/3rdparty/squirrel/doc/sqstdlib2.pdf deleted file mode 100644 index 72fc15c505..0000000000 --- a/src/3rdparty/squirrel/doc/sqstdlib2.pdf +++ /dev/null @@ -1,1714 +0,0 @@ -%PDF-1.3 -% -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 246 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0Pb;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_fr2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qI)8(I~> -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 1047 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasao966RV&AJ$CE(_tHW'$$Ddo4`99KG>D'5hXt!eaDq&+nrXf8D?8/YXB;^F4ot&;YF>$C33$R8(!afRg9emADDoN/Gq^kFG<%$"-FhiSoSSum`^8D^FT^E01>:QhB:j8S4iIc_3g`<(ZIeSFbcT)eJi3m:JO/0#ego2NMb(gI!*VY0P8Z-r@N'UT(?F"h&Y_<=^n-jDu4[b6tEH.H$cf-MA$FdM91QcQO2Y@7BLign\JkFbaS>$e3FcoJ8#_N6]YFu[7/uM16Gq?!%D'plAM.ilY2J3tif8V;%hMiO1D))GSQfbBUk8fujAtdoh%J0tictI5qs*AfS5DYn(Z39C&Oq!\YQr0-]D2BYiB#%'CkGuNnB-rtlq5%>`+ohaG([_Q,;0ekW8V3\9YY*8O:nV)n_%m^$N_@a(U%h&K?iem:)hFG6`XgqAkXEtJb#>mX`8g\)2frpN&1dqs'E(s<="*3eS;[87[IUJu*[?gVp3qK5f\oWadQc"(BZkuPdi.GH%,8S(K?6hi/DHRaZ"p9eoW5gf3)U.`2-e1b0HE4V;_4N5Et!nH-l]A^eYNg`ShQa#iU^IbipEr$0fPPB-//Fbr\r#uldV%o!ih_KBDnR/Zn4JU,"Y((^5(AZrjJ5d\'KQN/A9ARObUYE/M=g&.6pIj4RWPm4;<3RfEBJpQs(EM&jBY#d$^AG6 -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Length 71 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE! -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 9 0 R ->> -endobj -11 0 obj -<< /Length 1275 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"/l9llag*6.GrMEQ\]$2_`c1!(]3FJdNRE9m.H8dl^SK@iclkmOSI`N7'NX((Wn%fY*'\qfHgs">qd@INiG'C+8p-fJpg+ep)):AID:a)$O@DI<]9P&O*DS:ja(N@j^PH(H$I.`b2)gH*!g-:L$GAet26_GB9i-)"(ZQ1E)@X&;t-\AG_S8(D1M?!Tj!j!WHB,0u#86'5]AEg05+)Qcb2rs+*?TU1HA;'B4)d>Ig?YAkY]\PIGdlW,j5(T1X&7JYAjVFa"5o#L%5-p.&P5p/usnSD4qoruWp7e&G3o-DZBZk;uafB`!XQcl&I9Et\%Fid0Z^G6EO)^G0GB)P9,OkJd)T;Al/+:s=""pb@c7ad<1,^krR=pQfQUKJmUEVLu55bS)06Tlt&hUo`"[1Y8$%nQa4#dat0il2.[oNC3Ff9<"$U,;ZZ/P7A6%hAR*5p4OT'JI[fpZT1"-0tSg#?lPM)m]Qr5eD1Cf?oHoK05ReFil6R-Bh:_&5@o(_(NFW1tB/H>B*-I'k])P$RFbfSdu)0g/d;b!cTD'"$e!UhAs]sXuf#ockl`a]d;C6G[G5]C_ngt)?YXc%m:./#kX/f&/a`&!pt`p@R#NY)^V6TV/NJj>m'(Ol%&J-#o\"PU!VR.jktbX]&B"?KRe.rU]?Ufq-#XNssdD'^NI*bRo([LB-,Na"/%TXR0ZUNj5/mn.U/XB%d/s[VJ[TY0'h8Q%5_;8WV&/dIZl[r(dK4jDXGKW$QO@QPScZYA#7H@AqAOAGa7CNW$kV&JP1:PY7:Vb?70sg:.rftX[KufNH4>6Uptf>`j8hDb?h(SHmJSST`;.3]!BXEX`)Rm/TYM'D#Rh1mO=;Ihgn&]L_amFbR\o0/fsEh!eL&^5:WUn>+=M_SnD4tE>M?(WCeQEEU\7(5jt2n.TqHOK'LJW@9gbn!mbuiJO!M:V4T>XTXYDWpH=:jHHOUIda06O2*3,G0tH\"l^`g3-b@1W`q,K#admI76]'m4n -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 11 0 R -/Annots 13 0 R ->> -endobj -13 0 obj -[ -14 0 R -16 0 R -18 0 R -20 0 R -22 0 R -24 0 R -26 0 R -28 0 R -30 0 R -32 0 R -34 0 R -36 0 R -38 0 R -40 0 R -42 0 R -44 0 R -46 0 R -48 0 R -50 0 R -52 0 R -54 0 R -56 0 R -58 0 R -60 0 R -62 0 R -64 0 R -66 0 R -68 0 R -70 0 R -72 0 R -74 0 R -76 0 R -78 0 R -80 0 R -82 0 R -84 0 R -86 0 R -88 0 R -] -endobj -14 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 655.001 179.44 645.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 15 0 R -/H /I ->> -endobj -16 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 644.001 228.88 634.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 17 0 R -/H /I ->> -endobj -18 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 633.001 194.83 623.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 19 0 R -/H /I ->> -endobj -20 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 622.001 231.06 612.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 21 0 R -/H /I ->> -endobj -22 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 611.001 205.5 601.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 23 0 R -/H /I ->> -endobj -24 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 600.001 169.28 590.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 25 0 R -/H /I ->> -endobj -26 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 589.001 219.11 579.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 27 0 R -/H /I ->> -endobj -28 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 578.001 210.5 568.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 29 0 R -/H /I ->> -endobj -30 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 567.001 292.71 557.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 31 0 R -/H /I ->> -endobj -32 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 556.001 196.66 546.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 33 0 R -/H /I ->> -endobj -34 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 545.001 194.83 535.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 35 0 R -/H /I ->> -endobj -36 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 534.001 231.06 524.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 37 0 R -/H /I ->> -endobj -38 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 523.001 225.77 513.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 39 0 R -/H /I ->> -endobj -40 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 512.001 169.28 502.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 41 0 R -/H /I ->> -endobj -42 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 501.001 219.11 491.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 43 0 R -/H /I ->> -endobj -44 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 490.001 214.39 480.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 45 0 R -/H /I ->> -endobj -46 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 479.001 198.32 469.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 47 0 R -/H /I ->> -endobj -48 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 468.001 194.83 458.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 49 0 R -/H /I ->> -endobj -50 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 457.001 231.06 447.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 51 0 R -/H /I ->> -endobj -52 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 446.001 169.28 436.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 53 0 R -/H /I ->> -endobj -54 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 435.001 219.11 425.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 55 0 R -/H /I ->> -endobj -56 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 424.001 206.66 414.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 57 0 R -/H /I ->> -endobj -58 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 413.001 194.83 403.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 59 0 R -/H /I ->> -endobj -60 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 402.001 231.06 392.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 61 0 R -/H /I ->> -endobj -62 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 391.001 169.28 381.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 63 0 R -/H /I ->> -endobj -64 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 380.001 219.11 370.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 65 0 R -/H /I ->> -endobj -66 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 369.001 201.66 359.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 67 0 R -/H /I ->> -endobj -68 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 358.001 194.83 348.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 69 0 R -/H /I ->> -endobj -70 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 347.001 231.06 337.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 71 0 R -/H /I ->> -endobj -72 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 336.001 220.49 326.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 73 0 R -/H /I ->> -endobj -74 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 325.001 169.28 315.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 75 0 R -/H /I ->> -endobj -76 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 314.001 219.11 304.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 77 0 R -/H /I ->> -endobj -78 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 303.001 212.45 293.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 79 0 R -/H /I ->> -endobj -80 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 292.001 247.16 282.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 81 0 R -/H /I ->> -endobj -82 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 281.001 194.43 271.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 83 0 R -/H /I ->> -endobj -84 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 270.001 169.28 260.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 85 0 R -/H /I ->> -endobj -86 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 259.001 226.6 249.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 87 0 R -/H /I ->> -endobj -88 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 248.001 142.77 238.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 89 0 R -/H /I ->> -endobj -90 0 obj -<< /Length 971 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas1_9lHOU&A@P9n8Y3KKWesRgleV$dR2K`83JdmGer`M1,^j6$2sN;0Z5l'C8I3YH"NZH4C`H)D/MO-.#bjW+[T>Bn^2%a+?K1_oT0L)u?7'<'Uc<.IgYI(MXYSh0b7UseQ*4HA+>@ot>=.0YoI#q_d9RA:nfmE="Y]=WF]2C+F1.:S5Ptjk"\nDH/A/3%'Eaf\B&b/"qbEg=^47!#no2XVcga.TRAe30!LU%FfUH]Br5g^OuBPH.:?gGZ2J7ZhGJGWph&\0A'BQ7^Ea[i-@JF\X6RMQf*R;fF,"?Bp.'LHK8,r^ZQ>M<6J\)!\Q:IU03Ya@FDimSA(MM0+Zi+>n^7Y#om:hK)RFBB:X,nb=qJ6YCaT.u>UW24(%@8__iKUmj!F:YFl!J*m_#m,Pn9Tm.FO0TlR(S*ujDD!hQN/CC3L,\uI2JA^tAI5M1_nLm$C8>#~> -endstream -endobj -91 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 90 0 R ->> -endobj -92 0 obj -<< /Length 2083 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau`Uhf%7-&:Vr4+loI0eh[)=$,[h8@NDb@D5`@U1ju$.3n>WNY!f\>rq]L'U[BPbEI^1d!Kt&>ms+b$hFB&6=')m",;5!EQ:9YFHf]Sb=+TP(T>4Zc_Y;J0(MUPSp.R^AYask)\7pQ0VJZ:H.-CDtTUA,k1rnN+qje3<\;K8CLZDb8c\l&3h$N(1iIk5rA[Gg\t$K]rH3F[^GJE@ci-o9W5?NJ)%:g_,>s>E>UnQM%0&leZ@jH,RIpud66mK:";sXK&@&88`gtY"9NG/D-[7X>(,W8iRljkFs@0*)F(P0&W,^'AmeUY[3PmY+.*`-nC!L.ML_/a.Ense3C#tYg1aLhGCq#F8S"DY\`?$F?hCuo!^JHsXSg't5\&#n;i]fn4T/ea.%7Nutfhi("INMFD>kE>`A+rM+ZndhR]WV`=7)So/K\9Q3!&!lmUfl5ZfeZ4p8-@3XQN?Ld]PkpY.g0$#:mUdlt/'8.l!NPCDp5am!!2=_Bl>+3120L'l2HmRZqht$:0E]G,cmK9)F-Pr"a?PgTaB<`a]@%O04b3`6;L-/TAFRpW%J"hLtL7C3.-l2gg:$q*9h;2^Q]("sg`7>7bc3IID(WRE"WRo%=Z=-`k6DI9SDRmW>MjT!9soB\5AEf\)>i;+(k%4rpWk\>*Rd)mtrZV8[",NO)%J\ZIoIJM%OLRa&PF2ke7Rnrr4VKGl2*,si=!;6gr]QY[jFPV&RMa)MF9]%2a]Y"9tW6po'#Phg',SjpQO[No).J<;iH6%V?qVjS`(,/O^;>agHSb1W<"W!0U>knB+4'4aN9?:Dss+PV<%.R[:8:K.KYY'nBi$5?68@'N[b8J"lB8$Z*JF($YiF)^q8KBn5-(7DXZ(noEf[a_=UR]\RQr6dqe%(!ME]udD*1N(*T0;5ep:h=6kFfI$)DG@;MMX:/N4YKI!la+%r#-]'@4h4C%id963q3e6(+#Uo-tgrGejS2;RLuZ]'d=2L"aZ_oG&,K2P?*S#W'TYuWs^[59F!96,BbL^$MEOEG`s3tg;^f&`L2Yq)J.r/7serVV.S,I/6]fiY.h^O/&mO7EF<\:nL49(C6c9AqXa">C>R?#Vk]IS/-=5g1#=^i8Gd=dO@K-Y0P:Zc~> -endstream -endobj -93 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 92 0 R ->> -endobj -94 0 obj -<< /Length 1700 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm=bAQW(&Dd46gf5=:@DnKR/\:-t=s+!+[X`SRG9P_*,?0t68PY@rI;+fZLPeL)Llk+oC*%#BUZ%a(bBi^N/&k4%TO>=U(;]RG^ro"Ba?=RsN%dO0?ET@4Y:EI-pWIKuol!_Wl#h;t)@tmfX3LSR]a"M8dNQnJO5PaDs`$bh=-Ml9g\:o@ms(#iQX6P+>*e8VqTmHeL\li477j7aIBKEtb0PHDB^oTM[RE<6I&0Yq,lr$Xl0BoO)!16bT;8$,KFR>k!hK:q1dF.@2h-GKm^dl884=/apD+9O1Sn^)9T$*[D\;8HRA4^GG2Y.3J4:Z4]9n"M0IK[P5&&[USOCN/N^Ni'KnjCLho:6$/D@/F6#5$1C1m!cHdi@@O+qCS<]_+MujCA3@o:'4O`*gkQ0E_.0pQcOo2a&H<,-q9Wn/OQF%D9@Z47$Pi^PZdd^/8IZ>#argK,<2unnoC?qJ$X]q9A/[2n]\*3l,IP=]6cRKNk(Z,\K+225AD59Yc&PcY!V]0?&.0oW_hQ?:!@,U@@"R++d\+S+rjfJl=-ZUFd&/2<&)32P\40j1s1ZOYS@dYWQ#&-ZTA`sXA2SFe=?0h5]dS`gd^A;/h#nLWSWO4>h>]dNSA4t",*g`b+oFbA4=!^0Sps]Z_I5k?TsS)Gg=;Z/kS<,`#.=4Nd9BrHc?ubqUomoGqZJq>Zg91KU7CtYn#NL*,Y+,kVM6p[%h%0u/SSZo/q[nqiSV&L,TR35&/pb_5LXML0'G0a1n>j=M@MCfVjl3dli)O`hQ^KIU1i_CAO`fO#PCh$'jOp%PC#4ce(XXK%>\rh?Q-!O]P.W$]`&C8Y-^e;hYd0IBh6F52dE;MA:(q@6>n27XZY#ftgmh][sQ(4A1b+fs;+/"E`2%cpK/[1c85Fn?nR&A*%\PO,-OSNiLTIT4k`Y-Up:lV08JK+PG;Gm.O1%qeT2#Ku)<;m"<)-S?OTePAs6)C@0%B$q"d:2hjN`M@-O65+6OXBih30CMVpk:cn*DQ^#pKZPJD#7I"g!N`l1&WK-6:02^Jni@!VQunC&)M7;^'+d?i#@Q%U0/X"R:);e.A(2QN"ZKr@*XSJ:RVe+k>m;^O*89VDAAXHen8lVn,*^"sLmG*6rd<;N^T87OW.24RJ$DP5b.GYFc,ced/@3<&M_FDd&R'?l*_I_=O(`FCL)99!GriE1J"0a=bNp#?[SH/_E<%/GON7:naUG-'kH`QBahBM%+$<-s3<~> -endstream -endobj -95 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 94 0 R ->> -endobj -96 0 obj -<< /Length 1355 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU495iiK&AJ$Cki`^d7\ltaHYS'JFcf+T7(\e'Z(PsfAlk;2&tNk8lUsg63Kbgq:(\W-ORqVY2cT4.amI;nE/7'G,jUH:W5Z@C8>TK^.MV.V4Jd$m[l^,,b"=JL@M5tj]kUJN%pg6,X0WFAbu;qj/;_%e,@2IO#P@>^o_.E04/UG4Y$"SERteI!K(&LU:jj8Zk1"'_QoFM=te-\g]CfES$e-J@)X'EbQak$ie<#kcQA94f2Wj"T'fatG$K;jraO=CT#MUKV;b!1d[mHpGp3jflfbi3=g?ouqJUN6pSh"dE-Wiejn]3#HaHANdEjD>SfZ41H?QCb-M'A[=G$]hY*uj\X?e#_'Q)9G_,b^8F;*ROT7j-qF$dL#)f:cCuN@JUt6ZOcgFi4Im=b/.e0ffGR5F_?;j)"^6Ds5>7kP-[U;a]`Ofbd\al3@1;MoPW,5b_DaFknlR>;RqFa:AhF-%O#GKH,WkoU_\*T1N=/pH3'+T-gGksN'lEB*`6[Zfa?oJ5>X^#K;qOe0YIm>pF=T*PQd.!fY68icQp0l`S80kfurblgr+hbT6/$5Yb;+qUOQ6Ob&er\CPD;H1g@7FE'S7@EQjQBF]L?,!1`Buo::2:/m4XWRI+RS2gs('f^c+F[G#%_#4;7J``Mlc$Al"Wi2UeS6[PP6HEfPHfFUXdFiOo[0q?t1k.GTa&/l_$3s/Hk%Sdp/I"_%?PGTR:ZXOq253[uc)DcHbU73'Dop/_Y3&?>=l6=E=TgN(B6>T8k&H%4m!5Ui8=_@rgDmIjfe;'m&RME'Df0p0E@9'UB+_:"mYlk.ap)L[FbP6k1ZK?M5."1`3!ZO+Cc!&.TY3$$:3Zm18d]c\#2H/76WPJ#Z?<*H]T(kGfE%^((b*(9(1'+%'-O'*~> -endstream -endobj -97 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 96 0 R ->> -endobj -98 0 obj -<< /Length 2063 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!;d?#SIU'Re<2&Gf;&881rYlJ#DZUO'.l;.eFoF.^mT$0on\A\!dYlo@dAtsHMjrJe%j0[,qYP2?QP.\:?.ThGFFR`QH!Ri5KGHM5]=!Z!M8U+T0HrS/,^_o`9Hf!r`b`jB=J+81+r(rWYH\>n1l?o8hT[C^/2`?_$kd[leJgGKYb`PaLg9ffXDbB]sVbQ"]JV_0=Vu$-fo+6&t!rjcI&Pm$NrXXFkB[e\hZ<*.ckf`Gg=F66$*\/CW%u5RR!)VOhWO-:h!1DsnFbA>Tl;j8em4J81#B-NDdn,\+M4YUfjXU8L2!m4&-;(.`U\WS+AtDuY.UdisRd:ATG5hPhq*?_-!=;gno;oK4>hd]qUCkW68TUT"EJS2%E3N^6c[iYLNu%UWA?%mpGkDi+Nn9tMF_K!\[DVm[C]1q9/gThE`U_CH?)keHgmkrU*a^8f;oj[gThg%q'hu^qaDM%Z#rX+;F(7b'fED+MPbj5SSoK_[j,P9qWTMkuE$p0g=?.7L<7hDQO?,Lp=<,X$FVLHlRXgFRSY*fQt^^l8D4A"]>i\q18U@Xu)';gPVcdR/j(QsjunnV0r<-a&\OYD0Kb"IEa%aBQjBri4K,lMEC<9$j-9>j_n^`/5`(']-HK`QFP^9OWc"71oj:H]>e<^eAck<:CL0H#;"jR^=u`>`F#7$:>HlVQmF-^K(/BKGEq3!nib1Nktr=U.(t[1ej0rW&+KoDG5.G&]/i/pQ2FQ<$D`=-17W("$:Eq)lsoO"9ML&>$P6WO.m9]`I_"H+=88C;+M0,p%KROD0bVLSHhM]W[m')Ua?q4,hSlJ4I1+4*^ekB5r]@qNu*VdS*3j99-ANe)Yl#iU>b.E"elgPg=m,LLkbs0Sj;q"8;B.;K@D4?p_'hB,n?n=^9p6H,%NV50`>[,&:GIZ(W%E"`bPT`E&D#oB&4^H4X%r6Q%cAp'73\XV`#3kJOap9#,c\)),f;[oDb!=T'K0=s":9GYpapa<1ipl.JC*oRSRehLrre]hX6'87PP".[0N#h('48qBBp0>`l!%L5RgrIJ>__6$b$.8oG26I=DKa0,^tPGJ%t'VU4%mL"5,l0\j$iu_RH^[)B_$oB&b>9L[N;2DFJ!5"#8Rlp5?%`>BDd8MUu.J_oMLca)t8b'OU9PjFP@-8jf&1<<'/uUZAVUY'IeHX4_nSm"Z6eg?AN4o-WS2oXNle1d$4m))9>_&Q,qC$N^>5MHGYSRSaEnDB4&(&ZNY(s:`cq-S,Hn>#?3muXUjH%f(Hn9KTR+9&/qSP(mTGR*BHB6hsj'h9!U#!:"Gg?+: -endstream -endobj -99 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 98 0 R ->> -endobj -100 0 obj -<< /Length 727 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasan?#SFN'Rf.Gp^sB4il!Q^Hg='WVG7edmU_q9"&?*:P12Csm+9R?PM"5Yp(X-gHd;S3EZ=bMEUUI$JYsR[4m7I%(Vp[@lKmc!?m+^YHag.&.U>SuCDTD2Tu/P%V9!dD'A3)&"WlJg!0u\+1&aFb!!JDP=1eg%0o1&3B4!hq[JBbF\74b\Q[?PJT(%sR^b67KFbj&50nEhFLs,U'\pV#KCWFgC6>af02&V`l400skgq4Sg+@'Q`O8U`Tq87$RR,7l<2?6)YKdEXH\8f;Fc_PUNErL>W7<_mf^e&4H5A1Do.Roh-7X+3=n>T,8Hst).#-';#Wk>R/a0VZ$H,A7Se[iOIW*h]aQuL$!h9?JI[WA>'YU#X1bn>B#p=LX&cjNoZMs]f=m'V2EER+&4BWFQ;Zr4hS+f!QJab-_4+64>EbJ;YFih,\Y/clW%TGgo^j*>bgVq3qXOT&)D7Abhu`)2&crQ2.^fuNU[#D(9V+%-dg%g`Z$G+:fsJ!a`Tc<437e`cm:l%bH`?O83Bh*D@%_7ME(0@9DhpUlMWXO'28hjUb~> -endstream -endobj -101 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 100 0 R ->> -endobj -102 0 obj -<< /Length 1445 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm<9=(*G']/^gclIE[<4L`)>_I.G<_6E-JA'$cmmlM%#q/s=Fn/M$kLuOeJgM@OJ`sq_DqnZT,:uLk'5s1+=mE,7bJ',a`8G1uU-W,P[3(URB;rk*j\TBc:b;scias'hP]tJYt^$VHC"6SRXg9UEj[P;JT3"HU]P0S.ag*N"\ojQp@k''(cc5AINUqVTEfTSEfu.Yl1[&24FG-A2m+qR:]d]2/jZS=7+S,GkJ,KE?i!>J?5n-IjN_Zk:hpc@c@SUT_UR[4d6bdkW6Tb4Jj)MlaFcnnlS0JbFYO2^?p.8eMg`4j^mh-6pJc;E5U&mJLc8UHshu1c3Hi;9:ggONfci7CB]iH4TS5Kp0jTH5<6N('pl!M9#h`h@=k"7--I74I#EcF0#Y,1X1R"2CY(?LNLY9rU$E#n\nCZ$pn8C"I!Ekc#.7)C[E`+.E[d@daDg@R^pTfCsJ0TdLcu>CK.'f"3)KUT%s2epH!-];3jn9I"^^E*c-3-Qp=DVQrduY^S:$F$]fB&"Xm+dRfEI511H"FL&;D8;\2uJS\,?K-2;S*&R$3BfcC+HehLRXMm`Pm8A^SZB5F&gnEq[W#GC+9-.t6pc[_M.Wb,INa1tPF5H_o-q=NL;,Wq@N@5V]bJeNtXGXoNa`36WF9orV'sM;qF^#=_e^Pp'Wk13aj;48NX:S-Zfj;d^lCf2L9$TVG689b`B(d"De79eDPXmg?!c:[>#?JgM>6H\R/$J8+:"PWo)L$6"u."loP1.l]WNfG2g@`Jbgp_0XX6j9o[eFR^-6pf(rN2U[_GokHF,^KOW[jpkkcL#/R7,Z5cn07+oZG]Q+qM2=6`n)CCS&2*jqLB)_^EH*,US6t;1mUaI<9)kAWgQ&`pHWcq)@3n4Ab/+D3s6586mMo3tINQ5P.oku]-,^-Hs`]u@%hF%#l6Iht;OHWa99B:n!GSG=D#^M^bqqO^rnGR&NYd)-l2fE=od]_EMp[55[X7@[WLtO5kr>sU08p]1Qn'10AI#s,>:7dsAe,csi(e(o`US>U$ItpNe"9~> -endstream -endobj -103 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 102 0 R ->> -endobj -104 0 obj -<< /Length 1752 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!kuhiFNj&:Vr4_:rRu4V$KoR.dL`[F/*Ue4P"uS5(>\4]I#S5^'R0f67K1*YU5t\o1TE-oNm\^):eV2f0;HqhkYDI=@S0\PnpFi_a=,d/P:S$s%LSW[L:Um6GuIJ,RKJ/op!%CmBC,O1&HAOX(aid`=,D(GJ8J7+_q6r4,K3,9/md+en_+*"#(/FTH&!5GWZZVb+4=,u(lm]jF#CaigMu(?@Ur#L"mY/RXOuj`3$GpZ0P.C,fktS?`"]IEMt_1bakk'[@?@_K5@F$2&Lt"n[nh$%DoB*[+J["S!^WNIQ*M4a!12`B\"HDH4.>5:[('ho(Il6Vs"\d/"g?jbJn82^piB.,>J2XH%iMS_Y0_PVD3'^1@%`9b+J:ro--\U$I]C]WEqVE7Dbrg&;7_-bX>YpI=/0fAh\^4m42-F[$<=lu<%cP'1V7\qOJ2_8RW=-t@b3\Zdm:MolI%7Wt6PthnDVJ%M*sUgo[olDE]b#"aCNHHpa?.(,)"f2]jL[5/JrgPtUnuO?Q^"f!Mrf8o6ZSqaP6,,h*a/o_'F:"1NN+]d)kqh+4/`BiWW(g`e-^rcB&lX\P]NJ;[f,BhJkFS/?B6jNkfPUgAD"[JWJ^i\%at%X'[)F5iL>\%D#D4?o&`@43>7*GFj-V]g!T`)3<_Kdt.6N3JGb+1t:0\Q\8HF'eMomPF:X:5pNm2@Xh)jCZhn7Jgc",JKp3!dJU%+(WbJqZm*f]8Q@'T2N-fY8.&_DQFVE$X>?%mZg%]56f8kJNRQPX`ZU7P)ae,o8+_;;1"b9q(B*3OToe$GC]>P0MV1l2.kKJB2QBL-P3i<=`tq[%B^b;&'mjZ0]\'_nOnmEu2aA=D'HHd5U.5>c+N2U2q!&6bPOnUmck]I609lUj'jMgNI"k'5!\WN,`21@]ASfb$aNFSr5;fjGi6p:sa[aV%(/#KtWMYk="Q2I]DQf#>'c'F>f7<,a)Ni7%3-9h`V3W=%IBtnitJ9RUZrJL5!6'V*k'TD4VUP,aO1:ZY8eU@/8o4RlM*:1*iBL(ek(R:GcPC&0[,-LsFk77RZe\]bS3^KjB;SbjcU5bFRoTp9fpB5'Dh_qNRh&dpZ$erE(M"'&.&GY%];D28Q]mAHV8J8oC$$R\WCh6/,*_$8mCKFX]fO8R31$nE^Bao`2O-DsIE8TsCn>1_P64M?;9:I\pHoGqV`!@KE@uX_V_3lJK-.=p4i3`ApAS2"FP3Qm(=>6A-iq>kiTJ4]kc`W7&Zd?HH@3OA~> -endstream -endobj -105 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 104 0 R ->> -endobj -106 0 obj -<< /Length 1223 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!;c92jS!&AI=/pf?TTR3-B7ujSa8:?*-:^qs!2?k9N;(^`]1D@'H#k!3.+J&?[?)KL(9CoK)cPF#lHE3'B>qGCs6gqGdP.lB+4ZU'"A?;p($UJhQ[mEq+Lb>g8T1XS7in\0*IF\G3W+j`GflG]IhDo_j"nGSe4(Z?,b]pLEZID,R>H#SRV;lR+?+R:j_@03:n&X.;oK#?4(?;dF#[]B4uCq*C>dDW[\E&rXSj8t.Vr9E,?,Na47h4d>ir(RcXc.+T?GZMd!oUb>8gl_-#Zr3o0V;#dql+"]'(pgl"@UD>1-u^YLF&_';\.&0Hu%sRn'VPrlZ<^@`7>mXZd!B11`9;V5g`W,(5(7o\Y?S>@MTHI6T%4bDDpaN0fY^F(6U?9-L0aaM[/"tXQ8Bq.PL'nF!V`7^fVQLXd4UI'L'r:6OXOTRp+nNNfQ`d\tdYIeGH2n=Be,LPQiae>cohLK'-TcD5sr4?d*P)/+.^`k,ebKVnr'"FmCY+8E[OKn>\@raK:_o1so#>Ia\)r,Eb=Zc"s,?O6WEO)-K/)o._mNpk*Li4iiA78_.Y>Nj.?JcZ;$NISs9;,(LeheEg%BZ5.>!>j#NhgaZ?BjCK\*RJVBBFG08lBQ[mU$&`pQUYEf9c3-Yg[e2kC#@^@L!AsL2$ZN0WQe:IPn?HfHGF%!S"ZRYJA1j-"l[,8!?oW`\9K)Xh'*gk:JK#!Y4;;6eKTBDYp[it0DY=\5C:/'@-fh+H48t:?*32QqPMAdL;.:YTG^m/L]NW:T$O:isUnlQO-^C$sKn?jbqWhKoHemdH0Yi'1N>)C*#7&;R<(jh2c\[i/js_Qn,=7T2Z=BFW@iP'(+m))NOUj~> -endstream -endobj -107 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 106 0 R ->> -endobj -108 0 obj -<< /Length 452 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasId3H)bg']/F34MlWRF#G&$5c&3#^h'K+38bck85dKYkc\n7A31>@AU2VBG)eP=RegFA4pXOAO`X0W%YV4bG=3!N`?]\[mS4Y48]Pg]^JN0hlBZdT(I1)P;aGO(0I](iR6I4X"9q:kVV,'?aMHBK,j*JE[P)i0M\6$^C*@lt/kT&KHC,lqtSlK9ifY1qS]ZVKpW]55f>K9"KcKV0\IDB58DGH._p?-.>)B2$KfM.@*MDGe^.q;%Jk+2lbY<)G(D%L!sX@&:#!N5kD:ZgBXqNoAl\5(8"p6>q/L%GU`D!Jh~> -endstream -endobj -109 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 108 0 R ->> -endobj -110 0 obj -<< /Length 1150 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHLac>C>&A@rkG]X&P)XaCTVp$7i&g0Gkpm0$QG%e>b/T+1PFT6d3D9F9f7@[a40ORusCO**UO!T9Xbhi:H#a\r$+H,oOP0JptMB>:r#>2?T5YFH[2>M=mn]>Wp+!/KJ2[0U^$Vfardd+l9:D\J&rDU:*Q-8+&lN?s@/:PDD'O_\c@Jh9,j80"^,qr7;K(fMb70/]Pb/q:[qE;$ThfN9Gg<\m<^.VOoXt*S?^-$k(f0d19bJnaf/hb5TS.HuAbIUr<@UGf'3"!02qQeE:?ImlRf=pM*j,qCpGtLKcQ#-UN^9QZ3N)27hLMCl2<$#oUGi"]/q!(g?8I_);s4bk^+(g&X$TG*DTE[>>M8XtZ[X#DH/o.U@dpU:mh1IC7i&X';@C(W,;Q>S$[f7cWFHjF9gcQe"..R?(FSLjAeK>tOU59-"'4Ias!$)pU\ptiEaVNB_@3YqQN91VaG%kr'IFVSB!FY0atG_WD9G8e\!^2@`b*UXhb9Rjk/L.%mIT(%(?%5dbKAQmj+cU'>\Nt@>];kF-Imks8qr86!PfP1rf8m?u;9>Oorcr]Ih2WH/He"?QKA\0d),2]%5Vn&X9rRg@0pig=QA4C-PGd8E.,@jQ26$Tad+esV#0l`mgI]bK5pg9J"fOQF`Y@-=hf<_IY8mRDNCWBKFhuVBO,r^%h?5bs^niLBn0W.0)\d?V0f6R,aGE>\'O0hEVO^^'g+Rl3q],`,)>O3B@IpO8BfVmh,ae`H2$K[fd=-2IS[X[(FQ:V6tZ7M!'6%paQ%hcEis-[\[GlQ$Fmt\mKq='0\+bjO#E$!j8VYDZdZC_"YqlgoUe>PT5pKcf]:kfAQW]p@$_UpmH^Dp)BYQ~> -endstream -endobj -111 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 110 0 R ->> -endobj -112 0 obj -<< /Length 1243 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasap?#uJp'Rf_Zi6chK<^IFNmSg\kB=$(R1l9uOb^(W]A!o#.i!A,LrUgmIL+<=ma\2oT4nn!lUFZ/rC@T=LmLY>]Ze@"8'.o#mbo^q]>J:g(779,9`;+>N^8M!Jt1"T[k/eK%:H7B=>/9-Inij@L[YSDUt:V_"VQo\X5c)gPK8pTD4D@kJu$BM#e:-WJL)B*a2@Sbn"9$N^WrL,@H@#@n%=T?c4'Amp?UgS(,b5=j!3&U`L-kY>iCd[."PRI:RB8d6%FQ[.JH7I(R4t$1[F-H5WkE6n&nRCf\A#.AoAZU,##+HF6_oh,.+?LdT5:S`-Rh%[@P9f&W8Wh;8jpaL"&P]7W^!J?T);#Xc8sP^N4kNrKd]pr3rap#ZHj4N-0?7^*:E_B0'50U/2CoE\mgo%Ver"JPV"9k'"VREgs"m_@SW3,BlVG!VPNTS9?bp!r@q+.)Ft^]`2-l!j+6)^6]qgH<_?5"1"o:'q7&boW\Drl\)!g[Ym$(ObW.s]9D7t^PK+Kcenhuej.a#;MM+u,rH="kY;,.F75uok"4N5DSkkMdF+(;n0'$qRiE0b;_H'QJ/OhUYEj);:UC0p[9L?78AO33/DB;#l>YWL3_>:CXE.\M7?JieLq=iqJkM(cIRu^qE9TM>AX*`.aFF@a>gc12;*UR6%_)?u(^-cD(*G!oL`ITg?EK8rQKI#H@#4P/!R%mZ_h('Hi1QR^tWYXRDp.Y38Ck0`U,(c/lQ[:_+/%qAU2HKJppmtOh+'[1(Ki1>`nX-OW/ZR-<)4& -endstream -endobj -113 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 112 0 R ->> -endobj -114 0 obj -<< /Length 1631 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D9lJcG&A@7.kS=D:=HV*GM`kmg?S,)^GN1h;iZ)X"ZAD,:.oAme?b_gOR6t2A($mOk'I'YI(q7\tQ73,:j=I=fC,\=[lmMS;I8TOW9GDh[1*u")gdoR#OU3ZP%t.V":'_(0i-k*C\G.F&>JV-sIWI6BUSV(@JofU+CS5%"RMqcJln%563i*6mOfLj2V;u]pW66@a0p&I-``Ujm++kNcm)tM4u*1)WJ5\P,q1qO-o\^ih&M;Mq-)LMn,R],/8nt>h,[PN-*9+VHLa")4#YWnk'.o9oX$k[;"D+A=]pY]PkhZC7ZrI'QO:ViYgKPHir4:1>sID/&b+K8"8B%lI9Mjq;\-3Di'o,NB>d%mqo&uOKSg(M70(!Vq!kfI6bRGc]hoN/=i`=WZU.[\VK=e:pN0jd\a-1h3(rKRi9iE2=K5cOj?hE)OBO5@1Uo<'I_<6XQam1-<\kJF:=_.2[#gDG!W_XX:#l(A"%.3+\BD2mV`.K$YT#Hgi&GjuK-'f,5jcmun?l6X;K?m6BD/nqiIP?iN/CK1g"tuLka9%1mqg^AbP?M$E$,YPdSAbS?A+b+JKHXe]_U"`:?Igq5P2=`0_u>XiqJ\?McLM)^7Ql#WOa>Xn)Yd7qJM6h1qa/3Q0GCE7EpeJL]"h\md2%K,b,!>sHiao<9I]Or6=L[jZW+9S&2[APW^#KN&A?X\LhI1cP`%hPE"R[7#3t.c:qk5Xbs43tD-&[W>QHV=\d#+JQ60tf)k]__+YApo_c'TKf$CG'BWd*R_9F^g"]6p>KQ]t(\^G?lABPj\@TH3%cQm;W]A3*V&u)=[r]/C"<3!![;9"ua>eM&1WrLnWm3J-"4a]-"%LnN,$4j^^Yo,0QaZ@%%a_pWKt%L]UH'\T@7JbE==kIG:t]KdP@f)"tpJfB+_8tMs_*p9_nYgLandlBOfYn>]-.Im"UY9:8dW@#SZ$`p34a[lbTD'6]CG=o$+7<\iq<$MLXYX4eD0AWA7=N@N?"p)q@>'=:d'JGCiZ'ZDb7E&Jde=ca>lJd^kt5)hu(>li1T;h`11'3*>%X0!Q1$hY.'kG_hC:0Fk`lnmEg[#N1!o/)^W]&NJ(7fu@.N-$AO>d6J'N.1NrrEepnV$~> -endstream -endobj -115 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 114 0 R ->> -endobj -116 0 obj -<< /Length 586 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasIe9iJn_&A@g>j9Q!+dO$EnRklb`kQ*):`,Pj5R\:EhU5o5!e'Gs9o[M.Z]sfZ,41RtrET4ZX&>U?STFXh(q"Aoj)i!:r'rl8#m.pQH?o19?eO\W>"*Z,#F!!P[1MgZLpA.K^cl;d*3-co;\1m_#'dsUkW=:`4m88]GW=YQS!KIYu/3ZHB]G=`6+T-2XLCfqA&\68?A`AUeOarZ?/:Y*``i%)F(C+0T[qBamalK?oM#7B3(%9rR\%MJ4q]1dLm#alJkJiIlYUtXFD]'?A6_Ph"pZdf/"XDfbpu,L7R<%\`n+BH"ll3\"qG$+lpDJuY>d`5lF>g*C6UF:Tcf@id3XDI3S!;2b*;^lrCu=fC(5L[WQoaet<_gMdR]SB$m*bObkks'o5MU9OZd$c:5@1k\Y(hq,4mE\QZbr5Cp>#)`c[M+B,rfT8dG.e\gXCS<0KS_X[A0TrnIe67jJ2Q;8DI@o:Mk>`3GJctB=4t6R2IEUCE[MZ^&^uf5(`~> -endstream -endobj -117 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 116 0 R ->> -endobj -118 0 obj -<< /Length 1596 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm<>E@K-'Ro4H=K!`9b"g!$4-^]r8s3601h!B5.Scgk*PdhVCCf6,[JfPW@-fm`0P6N+(XI%Qhmn.kp?R"m]/QU!=N'f)D8,:4D;EYu$9qg;%72qmo8-tfg-!qM%43$[$(_[8CVt:Omnqui"qFM^o*nb[DFGTnCNV9;(HK[2L>$9Wr\Ird24]=X5YuaXNST?L=@@B3d_.%\gUfZS7;]G;K13;=1QQ,iWbBZsC*im^a**n4_*JHL4TYm!h.MBP&e)PDXL/N5ZR\[)0"-&20:ukia7jumb+gS#7HNC"Wr0#n\Ql$-h-RZb!^2-D\iI_tWd*_RM;cgqE[/g3oMSgC\XTjo`>ln!BLWb+l,-B6TciX?]]hm7A0^350**.*aNbrt+EdY`,\m0m`/u<\C:,s^iKu;#.Zb'XLt0%`;]Qc_rBH`$T]ErFrNnh"Y!sJhre]Z,:@a4Wr]"O?Rji/bA8btkhiD*DMr:IN=,F4tC#&]OP_2@"0s\`0o55\^;hPkg6_BQo_7TM60'D9H(GMiOA+rQmHRo^%^*lZ77W@r'+aAKX! -endstream -endobj -119 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 118 0 R ->> -endobj -120 0 obj -<< /Length 1842 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm+T$L,Ie[3(i2HYru;odXCu6Q>Frd''4("?:9M.O/+1eo#(+Zp,R<#Md0o+]PsFl"a4/H_[\$#9ShU(EOFkT@Aql0oCM=[Np!8Q6.!C+cM29WHJ?DWKEIf7`d`,,#5rT*]34$<3;r3(9g^d%>_Lb4+(P;03FN2c3a!<0Q?$+D,R0a.h9H52UH>;XI1cl-=*_SalJ-&N"A-(THH/rcPMH.UM8EM9n'9,mjCNgC(aST0U/47^!!R&/g'.?5_.;nS6sJZE1(.H<%CGJ0u6&b^g6ss;#m+mb?eFd!*$KSQ-]dR!(QE1Nq(249XgoYk@JK3%h3G#YqoE%K.agM7oUo2@ik7coLf3nfX-RU,#aa&7bJIL7Sbtf7Jed%CpL2jCK0@W*)+ubPBW67i)6e\Nn&#;+,qlFHpiU?nD^^ah_1q>Jo1!ge=XRH4sPHo1W)X%SDmK\h!`roMBNRbZb*RVFTG+E<'^*LPScUI][,M2Kp>9Gi)BB#'Qf:/[R-DVuIS6Z9UVs34k2$'k**XMEE8#pml7J4)jfr6PH"TQT?]"'#:/)kbpN)PEi$#,k)A!&Z@$+?.6/YL5Pbm7_@35Yh&DrQ"JbP.j.1de$$=%[C#kn?!i(_KLLpS&^)]DEB7_N2Kl+F`<.-":l\%OqC3io"$m8^@E#rQ]7/)-nQo-ds/W"eE<1F7#.,P6`eJceMIdlR*(RQU%RmGdaB)=cLkYOslCN]lqU4!G2ETm_E1Su?i,[P[n'3<9J3r)kgaB3+<)84Tf2TiLM/q!$/Wenc+&]HpXH7\@4\rUT(>rK)+Cn>Vhf"Ba>g>,rWZRZHHjpSo,AaO?lL+5XsgKO!Tm=]Ebn;o8Y$V's7P9Adl(*(J8W0?EFD(r2P$B=p!i43sX",/jM9JlgrQ+o>7T@PL=!(FRajL?MpohMlY1_*gYi^f<44#l;ZPA?Mnj60K!iI+-&_Xm;r]9nV`g'=uo=>Q$I>/huXG:PA&Ibm8jq]Be15@:&b7:DhMK~> -endstream -endobj -121 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 120 0 R ->> -endobj -122 0 obj -<< /Length 1681 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHLD/\/e&H;*)+UBK(@h'`HHtcp>$sqOITU+pMG6/6AD*7/]QDeUhhe'q8u<;8+,0cHNoIbAT&\WOIg@Fb*utGfa>1X*`%j4aCfp1^%8.V`VK'jOio^;(#=#HgIeGEOVB!+P/*Xg"8"Soe3VJp@l5ll-i3f0#kh)6]T[MfKL,aY"h_.V_E&=$,P<3Ma\$`UQ_KR:.!Z4'J[Q[!guHgC;HXaA[/>5'&6FcmQ;'NrSe/1XNc<`^;;Kij3'4FW-U120dkBVoT;TAg[KjNCh0`^s2>pfQsmqimAgau1l=&#]Xc3!)nrf+*o2eAk:-b;]Y5Y#V+`=[)j0+*4l!chhDPWu4X,B_<%">.fcjGOa@IpLet-@(CTsO(Mu\]?k2Z"t0baY%rQpm`hIgXOg@iKM!Cu78Z$Ye=]Fh)gOr(39(R&Oi*JmhmLU%549f6EU;7R>Zu$Ura6I!2i-\RT8N;/6`.p1S0`Ko(b9V8BI`36"4S)lG--c"X*j/GIZ!,6nT&!hcIk7Lkok0-)m&G*f=:E`e]L>l8*$TMm3oD>GW/sFOVf.>Lf,b(qJM%)7&JGUUPk1ba;6h<3^Kf#6Z+3't-aHkoOfR]/Y3JIYHk]dENBa#1.)L6;HmE0.IDb5:HI_)/d3Y6Q5,[kC2:*odc22f'AWP8W=N:(aPG/n:o`/[64RJr[k@ObNN]/1]Z'h_i?p]K$q/?rS2-U^e*YaCSA/A]r=^G$jKd@KqL"42C]q!R[g=.sUjs+VD(-/5HYR@e]FZX3TlOA4?OiG'"[Tdk@ZFF#=SF*n.P:kD6;XeR89s%c:9CQk2.6PaB_o"PRC3a7"eoJZOjX@C;noEKo&TRbU?H7o,K3_k]\>-B7CEh/k!=X&R5Jc$X"NUPm!W0aI0<)>YdP:b#U4]nB/4JCUFIM'2Gm_Yq%W.m&]#%4*BuaF^#k!#8F__.k^2_U0N,!_G#iMjkjgCdc=^B/G:4P6tkF`hd##eq%SjLJ'[P`^#Dj)G#bS+/(+"`gZpLo2`I(q^4)AZnotKhW-BJ&$mcA*8cu#)\E%NidT:Zr,K!+D3.Fe/BJuNo8KO;jmd"Na`s(TO.AGY=H+\iLm(E+=ZnVecf`[2,5$K82,/2khd0UjTmtR*Bo_JsT!P*C~> -endstream -endobj -123 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 122 0 R ->> -endobj -124 0 obj -<< /Length 1763 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4968iG&AJ$CE,q*t%8?8noTkG!9ukM;D7Q"5PCY/R@RH7d#l2kT?P!3g,m@Im3kf"OphFM42S_@;@iJ@-bJ#/6&!]+L#-XZYB!t!Q+\>X6Z_+9$[^sqT`i5/N7SO6YQc2B\X&HW]-X)XPYnBsSf->u/Z3DOdAEue887=oG[Q3E5n#>H31!&Y;onN0G#Shitum2fc!AggK:;'.=bA-j!EV,c<@Y(12Wf5*>&Oq4][bNG^YqV`OD"Fr$_2g&>H:M>\=i3$*ZHCIZ-529H`@:UPk;.tO5;:,b4*9&N7IB,!DqFLjcY6p:@TphK[Ie/RD90N^fo?']ad+`0WPMWR]D(bF;7-%%e_Cf)^1h=/.V3mcg^\F9UN`A(Qcd9;qt0j);O3;$b(-;bq7cD>6L!Am`umK>fS4uC3k\$H8pm\af`;eV(b5MQ#<4:3@hCtq7CAl9+=ku1meT5K8QdVt5#^0)NnG]L3nsjk!#72_'s_ION&[]XN1(f;`M11c2"e22X"a@)Sd)OdH>Fn]k`LG>aF)?S0BaVX+F)JSFNlgCh^RC=0"WrTO/(U"pZ_lH_DH#fm=FVN:7/`Di9aI3GD";e-9RM2(?[2UD(JRdNICu!V,LSoefpg5+k;PbHP3]U:194(q%Pfo)hgqU*Ug:*kl4YI^;20==EMH!e!9g[Cp1:/n\+0+r5<6_KjV%Lm&ZVPH*ZBJ#_j45D%L!A!i8+bF'0E_p(SVW7e,pJF?jf^]u$f.k9AuopqYFMA@pc;H/G3904Eu`A7u5co3-$glSul]WZ?t!q9WC3q2/nE?'2$SS/6ALqCATOX)"/)[o]DS-:8p4,KgC,+To=?o*^IU:QR>6Xm28f6+HaEuq,MG6u;*WOmf[l--E?k#c7]I1.58'u?Q+5d)-YQ>>od&Jg)d)S9TtWF+%N0g#4Rdg#4)D?S/P(V0))eo>17G8O&XJZ!tTMYt.~> -endstream -endobj -125 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 124 0 R ->> -endobj -126 0 obj -<< /Length 1330 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!Slc#]@8&AS+Gi958$<>(+Kp6JHpGdfND]tDGu>K"`FOFmDirqB22+Y?e5aL(E_*#qQ,hsP5DIZ(biXM/OP5??E`?4i&,p*-"Ljot,jb>lNpCj!4uJV'[0$'RW4OAIPLE\(mg9Znm&9$V#Cdr"*,k'3(=Gu%%W`$:MT\-.MJ[s@NC?IqDVZ$WSIkqT4u^[hBo2Lbbtek?dPLa_eCbC$4A52?i\N#2[:,+Jk1IiXdM_#X>9^;'Qj:KQCqL`>=G#J9&pf8$C[7NFSb7/>+pjD/m"Ic,h0;?q'P>c2`oeQ'8bo?a"1/^.?SMqQgV_5/0qB'LR[.n7$JlKSDs^s1L7kuW"K,G&haT.B-pF^&QW.eqcC?[T7PX4,G>jf_Mk(R1!QJuofh-(:SS4j\G.0&]>1i6@h:I'Y3H9YC`1.lZ,Y!@YUZ/S8MPa@#T:qq*^T!7KmdnZ*0+C>2@");4iu7`cM[ei^'(f[^QWPU+H)(1Kal\EPmmJ:ABk:'4daOE5sIb-;IB@4%]&c:6Gp"Dj'>QAR5puNk%-Z8i(Kmahj_X@aEBLa\YH2/Hn.[noVBcK3C61KAjY([nDtiI/fUcH%#jaG,F&HKq!O9u3X@VA_N@HiDq+ctOfCMJWdj>*]lZD2VlnWIGDdXO0dnDN:>[)E2*Wc.q'X:ZbR6i[i6^=Zm0B#-`%L9TTi&6/Z7-& -endstream -endobj -127 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 126 0 R ->> -endobj -128 0 obj -<< /Length 1612 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!Sl997gc&AJ$CkdVRJ)3LY"a_cq=B[IkZ<_deBODW\a?qVG1DDqO/'M4ESRC;0F%RmXX--%e`B86#P*j`i_c`)\JjEoQtiHtG*p3cjp4\U02N!YBHQQJs$i!7+\YSP$Ug-,Mj1]TqB:I_Z^#`%\B8l1sKeHKo&E4KGYqiCS[_XkC)&2?JEJro`K=q28C'_Mf0DJ$_$_QI^.Jq.se]1l^tlJ2RO^YadRD->QQnbu4bm@(?7gU&OoPfL(>>FW;)0nK"\2u/SYX;UQmOKn%q[<:@oKXDJKW'FUP`"lWnr(%i_qdlV:.XIU>9Mbm?YsOP;glAK?l]+U>OC$^-+FP0P,eB:S:9ie0!CJjZ5i9EA!`ScDj?1Csm[,g4h7I=*IS%/=DTVn/=j@%:o_U#&2hb)MXC@P%cMJCu\h%QHE1#aFiX_UG_A/")'J+@:*N$a\AQL89\u72#^\@b-f2s4Bi/AXH@'(fo]?4Ci3Jobr(iA$%.;PCBCVPb/tI0pIc6G67QrSUmCU!o9g]_MhnT4JXkjZ.)8a9W5Nj21!PJ@(63(#`j4Zo6*GO:/f?DX&_@KBg@LRJ+FlSTqUi8T+_Df_H!B,OJS\I]h7S(#6?a_[7_'AEdeGF0oJ!=Xm9TU@@a`9^n)3/<>q$]`8[Ud$&b6d9_a5sCDh[9`&M/Q"*3YK&PPk05mRZ-<%DS&(gW:(kkF+Dh=djgi89V:Z3:C82l>Ei\&qNXb3W$DtN;H!o1:/'M>^L4`>LMVQ!<+)#5nAZlLj+nJ+).qI3KK]Onc6O-Fk?q&q\bl-rE6)0t$2+;rI(Di6tO!(>0GR0f)F?`ZC(hi!"MBi[ji0tgf;?_UC'-F3@f3Y5FM0c#Oe`gB)"TU*e`7<0NUj*<)C:_"JJafM=firg]hB/$BebukS4FXB4;!I;UO&:25A3'_7NBX+7epcN!^cOFCR9RI&12t+tfk[)-qTL.I`77grMYj[*;:eP*ob!3EA((Aj2ImAIBas=>,a@UADgo3WM^Sq8Segg8Z@A)_Wm2g&62DCZ3Hd1~> -endstream -endobj -129 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 128 0 R ->> -endobj -130 0 obj -<< /Length 263 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas1X]afWJ(u5!&h["kB/Oe0O6j>S:2rfElYR-Ut^n8*FLp7tZl#K#%?8!%,T#Er$-6Od+TLKWO4VT:``Iop='+bu4"\/3Jhj@MV,ZH0^WVGmn#oOO,I/+d8r0]ulPcc$FeA7C3q7CO\EV-^l,1LpYK__O(;>8KH]09R>~> -endstream -endobj -131 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 130 0 R ->> -endobj -132 0 obj -<< /Length 907 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU2hf$st&:X(TiQ"t#cTgFmT%LE,+ct=^]MO8Jla@C>dO!2Wq!2o4Vfiu^l\>8a]A.hlqhUR+1N\(-/-KW,RquH6l>lY*HBduj7;e+68Jq--I7"kb]#1/D*<7W5$-2jt6Jgm42V%L<*&H%R?&?D.N$ii*1:38'Tn%`7^fh+3%S@%.PFK[>m"F@h5N%uikg1X^#C_n8'NF]YR(cUt3\:j2X$BnpKE3R^\WH1sb=h"MTE0bke,*2W4k91!ZT0qZ2[EqAu#p@e(;[nhuE$(B#rLA]-(cLPGhW$-Cdd0BTLB&K^97[:pN^9[<0^Ci;.!.BW,;1-cqb?rmL9M)4qOUkY:.0AB[RId84'7J/:eCRCB/6<(N>g4\N_GPTrS&$&]D4s%$79#mNOhY7VD#OR/=A1Rd%![D,s-e(d7GB8[s8bmasaE/spV7n^=;K_qFFEGd'-AKTC"M(-*DUk79;*7_4TG4dAR1?p^k3D-0eaaBeF#8f*lZ="M5V;pt_MF$NelRS\8[s&&C5Oo)bPlC^a&7^k~> -endstream -endobj -133 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 132 0 R ->> -endobj -134 0 obj -<< /Length 1408 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=lhf%7-&BE],=6Qmi2GH=5e75em6\i,&3^4$$MEnFX=/]rGP1jIFl[-'NPG1gL1'C,Lj$$!(m`W5;n!8mh?LnFjC^cAjRmds,(G&2JLIE-@,Z5tKQ-dp!(O^]$B"uW`DPBqSnk\=W`"KFBC.K`b1S&^-0/q:^+HL+fi$LM`F["76Nu0**j2>SNr#*:]D`hJQ(@L&KN4:g<`k]3gh$+Ak.S`]NS38^c-;X!TSk3_4Wb)6fYWu.RK7HY+"kmbs?sis778-0D8eWSBFnf5j>Z/XFS)4"8X<*+Q*c0,lgiHnTHk7sb*k8W8Pi%qU6%XY6b'Y;<:RJPno5$SQ(a;\/:iI;G;jV0T+1["@&lHXm9qHh@!`D+q@s3AF+k2Sb6%V09DtC7C!oRVeYqFbc$SY:0mSS<4R8bn"-8li)r:c;1\Q1HARa-5E*SPG>RiJ<(CW;W]Tr-X2ECC!N,K5`n?k[&RGF6#kK*?dHE/:f'IIZSPJH0a&\r9>f)c@D$hH/?rTjRubQ^ciXS[E`^F.g'2<1BW+LFjjW4^hg97>JVbDNCic)*nuc\sX0-"mNOA3]o'_8V5bjG4=hEDOJmSl[.sBS;,"iEX3("Fo.Phen>a#_HmSiWE5qpS9BSDQ5EY:g7Er)-`T!4TrJ>oGSuJ2L%%\e$)FQ.pSoBNO*0\r:DH50db9>VSV+7YRPk(VqOEYIWil`(8$ES/A2tR.M&2UqgVk5J%qLA=m4^iRq$!C;s!)_H@Y#coS)aNGWd&@["\n?c3t:[JC[5UXX=J0O?/DQ%^cc/o/Hud"A<>\RQ4'jf#?Tnq3*d7R.I]`/f;pp3%/ofNac/%U166s>_4UDkY(;M_<"(bA$4/?DqqbaW!f@OE2XgjQZCUcE%DdO?ec1Nh2)j7cFI1kqt5pHEFY+A\*m\\^UsGg"pWdaM6*TGZn.R_3r32B66t"PZLrO@oV$0@98/(3$uJ.=\>:MUk:ml+e)XXPJ64`O1A=JSlMK*tVh\gB6MkRX#NDn&68+7g!Co*AkaniJ[!BNn:92[V5=&uc[Y7\]kCjK:alG^91\S4FT+pc,AXs7eg[sS-Hpq2t:_rFu=`k.=4j/5TgDS2m6cq]`G(%-B)`3uh;OU'dP-ih7"ARqBb+hIJp#stLA-+qTDY%rs=NZ"*48,c)16YD)T%YQ2PnNkn824h+P\A`lXI.?uH`2jN]?3`^XkDW8#.-o<=2#'DO%%O[p&4FUAT@)`h>;_bcn7M>C?T(M#](cpM[)rSkFmqC]sD7F\VlY]!SVHT2fqnf8,BPurkgr^cO5.F1Ql4<5M`NCh-l]'Mj.R#(LKsFPb&pn>2XJto_f1Z`W,3cg+<50gatZN/,4HDAW3WMnH7%~> -endstream -endobj -135 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 134 0 R -/Annots 136 0 R ->> -endobj -136 0 obj -[ -] -endobj -137 0 obj -<< /Length 550 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=i92C1*&:j6IMESD)Y09)gC8-RA9Lq8_e'PC"&dl3dA,Z.>+3Kga9/R\3S,GN_L=tNDMf.r/JXFG&/#/I_,9X8+J8")s1b]9*A1R4+krq.0bcKLA8o)Z$P[$#TjX-'aaXbIS#A=MHFD5!hSt!tdi`R8\<>qLi([\eRit@me,cf]PhF8/T.LE>MamCCYe0e[o2p:af.A6s#c8] -endstream -endobj -138 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 137 0 R -/Annots 139 0 R ->> -endobj -139 0 obj -[ -] -endobj -142 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\123\0\164\0\141\0\156\0\144\0\141\0\162\0\144\0\40\0\114\0\151\0\142\0\162\0\141\0\162\0\171\0\40\0\62\0\56\0\62) - /Parent 140 0 R - /Next 144 0 R - /A 141 0 R ->> endobj -144 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) - /Parent 140 0 R - /Prev 142 0 R - /Next 145 0 R - /A 143 0 R ->> endobj -145 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) - /Parent 140 0 R - /Prev 144 0 R - /Next 146 0 R - /A 15 0 R ->> endobj -146 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\62\0\56\0\240\0\124\0\150\0\145\0\40\0\111\0\156\0\160\0\165\0\164\0\57\0\117\0\165\0\164\0\160\0\165\0\164\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 147 0 R - /Last 150 0 R - /Prev 145 0 R - /Next 154 0 R - /Count -7 - /A 17 0 R ->> endobj -147 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) - /Parent 146 0 R - /First 148 0 R - /Last 149 0 R - /Next 150 0 R - /Count -2 - /A 19 0 R ->> endobj -148 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 147 0 R - /Next 149 0 R - /A 21 0 R ->> endobj -149 0 obj -<< - /Title (\376\377\0\106\0\151\0\154\0\145\0\40\0\143\0\154\0\141\0\163\0\163) - /Parent 147 0 R - /Prev 148 0 R - /A 23 0 R ->> endobj -150 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 146 0 R - /First 151 0 R - /Last 153 0 R - /Prev 147 0 R - /Count -3 - /A 25 0 R ->> endobj -151 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 150 0 R - /Next 152 0 R - /A 27 0 R ->> endobj -152 0 obj -<< - /Title (\376\377\0\106\0\151\0\154\0\145\0\40\0\157\0\142\0\152\0\145\0\143\0\164) - /Parent 150 0 R - /Prev 151 0 R - /Next 153 0 R - /A 29 0 R ->> endobj -153 0 obj -<< - /Title (\376\377\0\123\0\143\0\162\0\151\0\160\0\164\0\40\0\154\0\157\0\141\0\144\0\151\0\156\0\147\0\40\0\141\0\156\0\144\0\40\0\163\0\145\0\162\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 150 0 R - /Prev 152 0 R - /A 31 0 R ->> endobj -154 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\63\0\56\0\240\0\124\0\150\0\145\0\40\0\102\0\154\0\157\0\142\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 155 0 R - /Last 158 0 R - /Prev 146 0 R - /Next 161 0 R - /Count -6 - /A 33 0 R ->> endobj -155 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) - /Parent 154 0 R - /First 156 0 R - /Last 157 0 R - /Next 158 0 R - /Count -2 - /A 35 0 R ->> endobj -156 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 155 0 R - /Next 157 0 R - /A 37 0 R ->> endobj -157 0 obj -<< - /Title (\376\377\0\124\0\150\0\145\0\40\0\142\0\154\0\157\0\142\0\40\0\143\0\154\0\141\0\163\0\163) - /Parent 155 0 R - /Prev 156 0 R - /A 39 0 R ->> endobj -158 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 154 0 R - /First 159 0 R - /Last 160 0 R - /Prev 155 0 R - /Count -2 - /A 41 0 R ->> endobj -159 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 158 0 R - /Next 160 0 R - /A 43 0 R ->> endobj -160 0 obj -<< - /Title (\376\377\0\102\0\154\0\157\0\142\0\40\0\157\0\142\0\152\0\145\0\143\0\164) - /Parent 158 0 R - /Prev 159 0 R - /A 45 0 R ->> endobj -161 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\64\0\56\0\240\0\124\0\150\0\145\0\40\0\115\0\141\0\164\0\150\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 162 0 R - /Last 164 0 R - /Prev 154 0 R - /Next 166 0 R - /Count -4 - /A 47 0 R ->> endobj -162 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) - /Parent 161 0 R - /First 163 0 R - /Last 163 0 R - /Next 164 0 R - /Count -1 - /A 49 0 R ->> endobj -163 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 162 0 R - /A 51 0 R ->> endobj -164 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 161 0 R - /First 165 0 R - /Last 165 0 R - /Prev 162 0 R - /Count -1 - /A 53 0 R ->> endobj -165 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 164 0 R - /A 55 0 R ->> endobj -166 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\65\0\56\0\240\0\124\0\150\0\145\0\40\0\123\0\171\0\163\0\164\0\145\0\155\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 167 0 R - /Last 169 0 R - /Prev 161 0 R - /Next 171 0 R - /Count -4 - /A 57 0 R ->> endobj -167 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) - /Parent 166 0 R - /First 168 0 R - /Last 168 0 R - /Next 169 0 R - /Count -1 - /A 59 0 R ->> endobj -168 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 167 0 R - /A 61 0 R ->> endobj -169 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 166 0 R - /First 170 0 R - /Last 170 0 R - /Prev 167 0 R - /Count -1 - /A 63 0 R ->> endobj -170 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 169 0 R - /A 65 0 R ->> endobj -171 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\66\0\56\0\240\0\124\0\150\0\145\0\40\0\123\0\164\0\162\0\151\0\156\0\147\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 172 0 R - /Last 175 0 R - /Prev 166 0 R - /Next 179 0 R - /Count -7 - /A 67 0 R ->> endobj -172 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) - /Parent 171 0 R - /First 173 0 R - /Last 174 0 R - /Next 175 0 R - /Count -2 - /A 69 0 R ->> endobj -173 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 172 0 R - /Next 174 0 R - /A 71 0 R ->> endobj -174 0 obj -<< - /Title (\376\377\0\122\0\145\0\147\0\145\0\170\0\160\0\40\0\143\0\154\0\141\0\163\0\163) - /Parent 172 0 R - /Prev 173 0 R - /A 73 0 R ->> endobj -175 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 171 0 R - /First 176 0 R - /Last 178 0 R - /Prev 172 0 R - /Count -3 - /A 75 0 R ->> endobj -176 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 175 0 R - /Next 177 0 R - /A 77 0 R ->> endobj -177 0 obj -<< - /Title (\376\377\0\106\0\157\0\162\0\155\0\141\0\164\0\164\0\151\0\156\0\147) - /Parent 175 0 R - /Prev 176 0 R - /Next 178 0 R - /A 79 0 R ->> endobj -178 0 obj -<< - /Title (\376\377\0\122\0\145\0\147\0\165\0\154\0\141\0\162\0\40\0\105\0\170\0\160\0\145\0\163\0\163\0\151\0\157\0\156\0\163) - /Parent 175 0 R - /Prev 177 0 R - /A 81 0 R ->> endobj -179 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\67\0\56\0\240\0\124\0\150\0\145\0\40\0\101\0\165\0\170\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) - /Parent 140 0 R - /First 180 0 R - /Last 180 0 R - /Prev 171 0 R - /Next 182 0 R - /Count -2 - /A 83 0 R ->> endobj -180 0 obj -<< - /Title (\376\377\0\103\0\40\0\101\0\120\0\111) - /Parent 179 0 R - /First 181 0 R - /Last 181 0 R - /Count -1 - /A 85 0 R ->> endobj -181 0 obj -<< - /Title (\376\377\0\105\0\162\0\162\0\157\0\162\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) - /Parent 180 0 R - /A 87 0 R ->> endobj -182 0 obj -<< - /Title (\376\377\0\111\0\156\0\144\0\145\0\170) - /Parent 140 0 R - /Prev 179 0 R - /A 89 0 R ->> endobj -183 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F11 -/BaseFont /Courier-Bold -/Encoding /WinAnsiEncoding >> -endobj -184 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F1 -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding >> -endobj -185 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F10 -/BaseFont /Courier-Oblique -/Encoding /WinAnsiEncoding >> -endobj -186 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -187 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F3 -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding >> -endobj -188 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F9 -/BaseFont /Courier -/Encoding /WinAnsiEncoding >> -endobj -189 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F6 -/BaseFont /Times-Italic -/Encoding /WinAnsiEncoding >> -endobj -190 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F7 -/BaseFont /Times-Bold -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 28 -/Kids [6 0 R 8 0 R 10 0 R 12 0 R 91 0 R 93 0 R 95 0 R 97 0 R 99 0 R 101 0 R 103 0 R 105 0 R 107 0 R 109 0 R 111 0 R 113 0 R 115 0 R 117 0 R 119 0 R 121 0 R 123 0 R 125 0 R 127 0 R 129 0 R 131 0 R 133 0 R 135 0 R 138 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - /Outlines 140 0 R - /PageMode /UseOutlines - >> -endobj -3 0 obj -<< -/Font << /F1 184 0 R /F11 183 0 R /F10 185 0 R /F5 186 0 R /F3 187 0 R /F9 188 0 R /F6 189 0 R /F7 190 0 R >> -/ProcSet [ /PDF /ImageC /Text ] >> -endobj -15 0 obj -<< -/S /GoTo -/D [91 0 R /XYZ 115.0 725.0 null] ->> -endobj -17 0 obj -<< -/S /GoTo -/D [93 0 R /XYZ 115.0 725.0 null] ->> -endobj -19 0 obj -<< -/S /GoTo -/D [93 0 R /XYZ 115.0 666.009 null] ->> -endobj -21 0 obj -<< -/S /GoTo -/D [93 0 R /XYZ 115.0 632.684 null] ->> -endobj -23 0 obj -<< -/S /GoTo -/D [93 0 R /XYZ 115.0 233.665 null] ->> -endobj -25 0 obj -<< -/S /GoTo -/D [95 0 R /XYZ 115.0 127.26 null] ->> -endobj -27 0 obj -<< -/S /GoTo -/D [97 0 R /XYZ 115.0 725.0 null] ->> -endobj -29 0 obj -<< -/S /GoTo -/D [97 0 R /XYZ 115.0 514.701 null] ->> -endobj -31 0 obj -<< -/S /GoTo -/D [99 0 R /XYZ 115.0 725.0 null] ->> -endobj -33 0 obj -<< -/S /GoTo -/D [103 0 R /XYZ 115.0 725.0 null] ->> -endobj -35 0 obj -<< -/S /GoTo -/D [103 0 R /XYZ 115.0 655.009 null] ->> -endobj -37 0 obj -<< -/S /GoTo -/D [103 0 R /XYZ 115.0 621.684 null] ->> -endobj -39 0 obj -<< -/S /GoTo -/D [103 0 R /XYZ 115.0 347.085 null] ->> -endobj -41 0 obj -<< -/S /GoTo -/D [105 0 R /XYZ 115.0 177.98 null] ->> -endobj -43 0 obj -<< -/S /GoTo -/D [105 0 R /XYZ 115.0 144.655 null] ->> -endobj -45 0 obj -<< -/S /GoTo -/D [107 0 R /XYZ 115.0 570.14 null] ->> -endobj -47 0 obj -<< -/S /GoTo -/D [111 0 R /XYZ 115.0 725.0 null] ->> -endobj -49 0 obj -<< -/S /GoTo -/D [111 0 R /XYZ 115.0 655.009 null] ->> -endobj -51 0 obj -<< -/S /GoTo -/D [111 0 R /XYZ 115.0 621.684 null] ->> -endobj -53 0 obj -<< -/S /GoTo -/D [113 0 R /XYZ 115.0 415.7 null] ->> -endobj -55 0 obj -<< -/S /GoTo -/D [113 0 R /XYZ 115.0 382.375 null] ->> -endobj -57 0 obj -<< -/S /GoTo -/D [115 0 R /XYZ 115.0 725.0 null] ->> -endobj -59 0 obj -<< -/S /GoTo -/D [115 0 R /XYZ 115.0 655.009 null] ->> -endobj -61 0 obj -<< -/S /GoTo -/D [115 0 R /XYZ 115.0 621.684 null] ->> -endobj -63 0 obj -<< -/S /GoTo -/D [115 0 R /XYZ 115.0 145.225 null] ->> -endobj -65 0 obj -<< -/S /GoTo -/D [115 0 R /XYZ 115.0 111.9 null] ->> -endobj -67 0 obj -<< -/S /GoTo -/D [119 0 R /XYZ 115.0 725.0 null] ->> -endobj -69 0 obj -<< -/S /GoTo -/D [119 0 R /XYZ 115.0 666.009 null] ->> -endobj -71 0 obj -<< -/S /GoTo -/D [119 0 R /XYZ 115.0 632.684 null] ->> -endobj -73 0 obj -<< -/S /GoTo -/D [121 0 R /XYZ 115.0 209.54 null] ->> -endobj -75 0 obj -<< -/S /GoTo -/D [123 0 R /XYZ 115.0 281.78 null] ->> -endobj -77 0 obj -<< -/S /GoTo -/D [123 0 R /XYZ 115.0 248.455 null] ->> -endobj -79 0 obj -<< -/S /GoTo -/D [125 0 R /XYZ 115.0 662.0 null] ->> -endobj -81 0 obj -<< -/S /GoTo -/D [125 0 R /XYZ 115.0 335.841 null] ->> -endobj -83 0 obj -<< -/S /GoTo -/D [133 0 R /XYZ 115.0 725.0 null] ->> -endobj -85 0 obj -<< -/S /GoTo -/D [133 0 R /XYZ 115.0 666.009 null] ->> -endobj -87 0 obj -<< -/S /GoTo -/D [133 0 R /XYZ 115.0 632.684 null] ->> -endobj -89 0 obj -<< -/S /GoTo -/D [135 0 R /XYZ 67.0 725.0 null] ->> -endobj -140 0 obj -<< - /First 142 0 R - /Last 182 0 R ->> endobj -141 0 obj -<< -/S /GoTo -/D [10 0 R /XYZ 115.0 725.0 null] ->> -endobj -143 0 obj -<< -/S /GoTo -/D [12 0 R /XYZ 115.0 715.0 null] ->> -endobj -xref -0 191 -0000000000 65535 f -0000053910 00000 n -0000054176 00000 n -0000054269 00000 n -0000000015 00000 n -0000000071 00000 n -0000000408 00000 n -0000000514 00000 n -0000001653 00000 n -0000001759 00000 n -0000001920 00000 n -0000002027 00000 n -0000003395 00000 n -0000003518 00000 n -0000003804 00000 n -0000054435 00000 n -0000003940 00000 n -0000054500 00000 n -0000004076 00000 n -0000054565 00000 n -0000004212 00000 n -0000054632 00000 n -0000004348 00000 n -0000054699 00000 n -0000004483 00000 n -0000054766 00000 n -0000004619 00000 n -0000054832 00000 n -0000004755 00000 n -0000054897 00000 n -0000004890 00000 n -0000054964 00000 n -0000005026 00000 n -0000055029 00000 n -0000005162 00000 n -0000055095 00000 n -0000005298 00000 n -0000055163 00000 n -0000005434 00000 n -0000055231 00000 n -0000005570 00000 n -0000055299 00000 n -0000005706 00000 n -0000055366 00000 n -0000005842 00000 n -0000055434 00000 n -0000005978 00000 n -0000055501 00000 n -0000006114 00000 n -0000055567 00000 n -0000006250 00000 n -0000055635 00000 n -0000006386 00000 n -0000055703 00000 n -0000006522 00000 n -0000055769 00000 n -0000006658 00000 n -0000055837 00000 n -0000006794 00000 n -0000055903 00000 n -0000006930 00000 n -0000055971 00000 n -0000007066 00000 n -0000056039 00000 n -0000007202 00000 n -0000056107 00000 n -0000007338 00000 n -0000056173 00000 n -0000007474 00000 n -0000056239 00000 n -0000007610 00000 n -0000056307 00000 n -0000007746 00000 n -0000056375 00000 n -0000007882 00000 n -0000056442 00000 n -0000008018 00000 n -0000056509 00000 n -0000008154 00000 n -0000056577 00000 n -0000008290 00000 n -0000056643 00000 n -0000008426 00000 n -0000056711 00000 n -0000008562 00000 n -0000056777 00000 n -0000008698 00000 n -0000056845 00000 n -0000008833 00000 n -0000056913 00000 n -0000008969 00000 n -0000010032 00000 n -0000010140 00000 n -0000012316 00000 n -0000012424 00000 n -0000014217 00000 n -0000014325 00000 n -0000015773 00000 n -0000015881 00000 n -0000018037 00000 n -0000018145 00000 n -0000018965 00000 n -0000019075 00000 n -0000020614 00000 n -0000020724 00000 n -0000022570 00000 n -0000022680 00000 n -0000023997 00000 n -0000024107 00000 n -0000024652 00000 n -0000024762 00000 n -0000026006 00000 n -0000026116 00000 n -0000027453 00000 n -0000027563 00000 n -0000029288 00000 n -0000029398 00000 n -0000030077 00000 n -0000030187 00000 n -0000031877 00000 n -0000031987 00000 n -0000033923 00000 n -0000034033 00000 n -0000035808 00000 n -0000035918 00000 n -0000037775 00000 n -0000037885 00000 n -0000039309 00000 n -0000039419 00000 n -0000041125 00000 n -0000041235 00000 n -0000041591 00000 n -0000041701 00000 n -0000042701 00000 n -0000042811 00000 n -0000044313 00000 n -0000044439 00000 n -0000044460 00000 n -0000045103 00000 n -0000045229 00000 n -0000056978 00000 n -0000057032 00000 n -0000045250 00000 n -0000057098 00000 n -0000045504 00000 n -0000045705 00000 n -0000045941 00000 n -0000046288 00000 n -0000046486 00000 n -0000046654 00000 n -0000046798 00000 n -0000046954 00000 n -0000047123 00000 n -0000047288 00000 n -0000047562 00000 n -0000047862 00000 n -0000048060 00000 n -0000048228 00000 n -0000048395 00000 n -0000048551 00000 n -0000048720 00000 n -0000048870 00000 n -0000049170 00000 n -0000049368 00000 n -0000049521 00000 n -0000049677 00000 n -0000049831 00000 n -0000050143 00000 n -0000050341 00000 n -0000050494 00000 n -0000050650 00000 n -0000050804 00000 n -0000051116 00000 n -0000051314 00000 n -0000051482 00000 n -0000051638 00000 n -0000051794 00000 n -0000051963 00000 n -0000052123 00000 n -0000052315 00000 n -0000052609 00000 n -0000052750 00000 n -0000052903 00000 n -0000053018 00000 n -0000053131 00000 n -0000053240 00000 n -0000053356 00000 n -0000053467 00000 n -0000053581 00000 n -0000053688 00000 n -0000053800 00000 n -trailer -<< -/Size 191 -/Root 2 0 R -/Info 4 0 R ->> -startxref -57164 -%%EOF diff --git a/src/3rdparty/squirrel/doc/squirrel2.chm b/src/3rdparty/squirrel/doc/squirrel2.chm deleted file mode 100644 index f289edd1e6..0000000000 Binary files a/src/3rdparty/squirrel/doc/squirrel2.chm and /dev/null differ diff --git a/src/3rdparty/squirrel/doc/squirrel2.pdf b/src/3rdparty/squirrel/doc/squirrel2.pdf deleted file mode 100644 index af3e0fde9b..0000000000 --- a/src/3rdparty/squirrel/doc/squirrel2.pdf +++ /dev/null @@ -1,6426 +0,0 @@ -%PDF-1.3 -% -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 242 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gaqco]*cD?&4QKpMCE&o3;_QsMHU9D\t)sA0PV_"go0+KHisl,*LLp9/;hPIK/+9qL3ODc"L/XD-R"&PP9?to9cdO^b_(UoJR,^t4fXaV*l1s(hf6dZA.$iuD"u).S!&PO>r7V:qqXVEI0U=0mG7sAWmV*Z%c@b(d,nP\Eb_Xje&sj6s,!HjU@qn5CB!ftO"(S1 -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 1100 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasao968Q9&AI=/pdUZcKcb0YV5PX5.]$TD`djHhOm=Z8n=#bBB0ulWKOLp;rIK:J%!SknV>3/6R/#6>VLpZWMkUF9,F?<#%=hM6Mkp!uBj5X$B2#V2>=u>L)5!(7V&8*!fU%#V69""keG\0eUbVCc5.r[(!8>"DSYhfG[893-2tT1i8c%;:Z3D/uE8j?BK!h$XJApc)$;3-ItK1.bP!IVr357,=/cjMBSALe)R#Po&70$jj*1c,Haa9iTARZD>$lCoK*T6^XuqdGRg:a=7sCF&@T:+8e'qhSZ$hkpkh(3/N^S+25;.:g"Q8%WNhlUF6rg(0&1BXO((l>;:%"FU<.[UZE^W'Z'?VtckL)2MZNV3*-J>irIPqji:W.#TTu%jI5EX$d;62d51St5A8+Vm&R"8iCZ#^r&J,(ZM2DTb\)BGmcq+h5ghXK-Rii#oKG?CT>/@u_0ML$gnDYSfs)M.]auTrhRM/Hi8fGL2O"tk<&ncl4F46`Mlpi!2AtnGL!`:[)QlcS*7A8[R)7\pHK15rmH>*7]a?>;jh0J.0ln"S@mk-",=nfhiqo&j+^$Hd23H9aXfL8\GGK[=C2s>7'6p87ej'W@H'[TPF:ha)(JJ3*V^OLDAEAT7o\N/pk_klbaiBNK)d)dMIAX8?J!B;A5`pZL%t'I<)4e*Q2ef^NoVMGn\J!0L$d%f~> -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Length 71 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE! -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 9 0 R ->> -endobj -11 0 obj -<< /Length 1807 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"/lc#]C5(rl%A=)dGlK*hD4CSj8IC#!]tBr9-%4Z#;5ZEp.qndD\&+UTAM7%q7/dba*rb2SW+[6XLX*.U<3(_$_!5`E'Y>1UTB9Z=T`0d-Q!*>*.1K(\G_mrgb^ZFIGZ>SsBoLOT@.3WOISrcPKdUFuQ'a&s^WP_"9Ec55mkig$s)1OPsJ5bLV=#`J[6+WEd^R]jjn:K6>+\aYW35SL$R0W0Y8oI#b[9?Hku`/3cO?n0D$JO!!X#CaE-&Ao%TDC+A<=UDr)\p4kNi+Z:6>f5J[^Qp'ECW)2,&P(MrIe7Lu$H/%0D)-+WO@oE"Kofpe`qJIlp!2$N_=pdEPhKDSKMfL@6gqa7GVP/#94"kPdEq76GmBE:.;$Sa[f<[5fZX%Efbb3#e6;Z9O_N2i3Qj?g(Z,,P/T1oh2oJ:XTO,DN?=ecDF2hl0AOJ+4p^eFn`S:)pZU6=4uHD*R7;`mLIlj0PoH=(;Qa@PELC(dl=1Q7,7&BfZptLk@9tIfV)GA/58_#`+:r3[]qG=M6)'nVns*C.91'P25bK@"4j)_%<]lLG2n!bd@4a,Z@B>JpAOV%5pS[jo(6.0O&EjF1_`(h,Df2$bm[KVboVWhY!DofsXBu"@Sg/S@I@nf]b:74$^#/pOcNA`i2+[U?U*8;GZRnQlQ>rna'`1XW5_ht6..lst9:0.U9XhFG25G,d!pu;d'0O`bmJ_665/2TBcQ1S`?Rm)>V%+Z7`uH-WZB9V(roZKNC[m_~> -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 11 0 R -/Annots 13 0 R ->> -endobj -13 0 obj -[ -14 0 R -16 0 R -18 0 R -20 0 R -22 0 R -24 0 R -26 0 R -28 0 R -30 0 R -32 0 R -34 0 R -36 0 R -38 0 R -40 0 R -42 0 R -44 0 R -46 0 R -48 0 R -50 0 R -52 0 R -54 0 R -56 0 R -58 0 R -60 0 R -62 0 R -64 0 R -66 0 R -68 0 R -70 0 R -72 0 R -74 0 R -76 0 R -78 0 R -80 0 R -82 0 R -84 0 R -86 0 R -88 0 R -90 0 R -92 0 R -94 0 R -96 0 R -98 0 R -100 0 R -102 0 R -104 0 R -106 0 R -108 0 R -110 0 R -112 0 R -114 0 R -116 0 R -118 0 R -] -endobj -14 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 655.001 179.44 645.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 15 0 R -/H /I ->> -endobj -16 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 644.001 184.15 634.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 17 0 R -/H /I ->> -endobj -18 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 633.001 211.48 623.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 19 0 R -/H /I ->> -endobj -20 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 622.001 209.1 612.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 21 0 R -/H /I ->> -endobj -22 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 611.001 209.1 601.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 23 0 R -/H /I ->> -endobj -24 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 600.001 207.43 590.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 25 0 R -/H /I ->> -endobj -26 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 589.001 219.38 579.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 27 0 R -/H /I ->> -endobj -28 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 578.001 198.55 568.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 29 0 R -/H /I ->> -endobj -30 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 567.001 211.34 557.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 31 0 R -/H /I ->> -endobj -32 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 556.001 233.7 546.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 33 0 R -/H /I ->> -endobj -34 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 545.001 196.32 535.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 35 0 R -/H /I ->> -endobj -36 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 534.001 188.56 524.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 37 0 R -/H /I ->> -endobj -38 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 523.001 192.45 513.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 39 0 R -/H /I ->> -endobj -40 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 512.001 185.78 502.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 41 0 R -/H /I ->> -endobj -42 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 501.001 187.45 491.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 43 0 R -/H /I ->> -endobj -44 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 490.001 190.77 480.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 45 0 R -/H /I ->> -endobj -46 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 479.001 191.32 469.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 47 0 R -/H /I ->> -endobj -48 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 468.001 203.56 458.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 49 0 R -/H /I ->> -endobj -50 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 457.001 189.67 447.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 51 0 R -/H /I ->> -endobj -52 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 446.001 224.94 436.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 53 0 R -/H /I ->> -endobj -54 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 435.001 207.98 425.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 55 0 R -/H /I ->> -endobj -56 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 424.001 203.54 414.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 57 0 R -/H /I ->> -endobj -58 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 413.001 196.32 403.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 59 0 R -/H /I ->> -endobj -60 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 402.001 238.24 392.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 61 0 R -/H /I ->> -endobj -62 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 391.001 218.72 381.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 63 0 R -/H /I ->> -endobj -64 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 380.001 206.32 370.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 65 0 R -/H /I ->> -endobj -66 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 369.001 187.89 359.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 67 0 R -/H /I ->> -endobj -68 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 358.001 191.89 348.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 69 0 R -/H /I ->> -endobj -70 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 347.001 268.01 337.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 71 0 R -/H /I ->> -endobj -72 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 336.001 193.0 326.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 73 0 R -/H /I ->> -endobj -74 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 325.001 190.21 315.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 75 0 R -/H /I ->> -endobj -76 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 314.001 202.44 304.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 77 0 R -/H /I ->> -endobj -78 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 303.001 191.88 293.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 79 0 R -/H /I ->> -endobj -80 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 292.001 188.0 282.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 81 0 R -/H /I ->> -endobj -82 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 281.001 276.3 271.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 83 0 R -/H /I ->> -endobj -84 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 270.001 250.49 260.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 85 0 R -/H /I ->> -endobj -86 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 259.001 236.6 249.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 87 0 R -/H /I ->> -endobj -88 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 248.001 202.99 238.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 89 0 R -/H /I ->> -endobj -90 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 237.001 191.33 227.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 91 0 R -/H /I ->> -endobj -92 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 226.001 189.11 216.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 93 0 R -/H /I ->> -endobj -94 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 215.001 190.22 205.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 95 0 R -/H /I ->> -endobj -96 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 204.001 251.6 194.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 97 0 R -/H /I ->> -endobj -98 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 193.001 192.33 183.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 99 0 R -/H /I ->> -endobj -100 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 182.001 290.1 172.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 101 0 R -/H /I ->> -endobj -102 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 171.001 207.43 161.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 103 0 R -/H /I ->> -endobj -104 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 160.001 238.26 150.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 105 0 R -/H /I ->> -endobj -106 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 149.001 201.32 139.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 107 0 R -/H /I ->> -endobj -108 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 138.001 189.66 128.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 109 0 R -/H /I ->> -endobj -110 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 127.001 238.81 117.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 111 0 R -/H /I ->> -endobj -112 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 116.001 170.66 106.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 113 0 R -/H /I ->> -endobj -114 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 105.001 219.67 95.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 115 0 R -/H /I ->> -endobj -116 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 94.001 218.83 84.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 117 0 R -/H /I ->> -endobj -118 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 83.001 218.84 73.001 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 119 0 R -/H /I ->> -endobj -120 0 obj -<< /Length 2026 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"/l>Ar7S!/9>//,V6B&+r>QPiTk298a;D_cdk'(^>VYka7`*V6lIFqt8FW1?CoaHJ)]Z4tTTY@Ot#!FH1T+,d6C+T3q1EEMh$+^)B#l]+GoB`EtAIN"q%1EMp_sc]dmk=2,Rs*]K;Q/(^C.5J!:!a;kft"St#s.sJNJ_.=lG%\"nq3)bFBe*@ZDL'eNVSQMNn8<$tRV[P1?Y+1A[oH%SnRr>u##7qs)\df!9hhnH(KPkNdX&4VLf/F,50*_m8[+OhWMk3XEW(FlkV2DWM$B%uSq_6In\"9S6e\gmG&hb!Yk(7S%sT;Ei3Id;R2kEMVX3Mj!WnoS2/79GeOo$K[48l3KFY&o![muPmfN^(6u)A;](PCA^tDr*Q:=lCSWqZOpXkfB!eJ']m^uKdHtJRKmpmaXRB=r:IVF/L^2snlF@ac-B@e+6CsqU.e?Wa.Vl%s",8`3=JM*I=gr$HaZ(&+8Y@jsQr(e)HFe6[cl`KILGL8AMJ\Fd8h4[QgK*,;q,Rb7J%&h2HR*EK2H/14[%fh.b6B."niW.V!b5>D7`<5RR_+E,+0\G.U7poGe-Y_0"$HW\+A8gGIbr,Kgg(=F`"p&.%pH6+Z7>0Q%PLMn@+tW/mc15TnG*3=)rO_M+;J2fW$'"G_:/#]sD&irmj9$5\h`[na^eL+#?\1Sr))\gIJ6f7jqT,)SuW5i3jnFQq<8)hb\H2Y1L*.WM>lif?RB4gBT1\Cfl)!_H3!Fa1<.>!=TP'FK%e)!Ss7?S]G=j9mIYtk0"moi96i*X)ch$iPk+f`Ruc<-bC+.=1JfbgVXR2/V$)66&k*#mDrDE`'#&=HkWDN&R3@q*g:.R=3F=`d&I>%L*p?r[+:RMM*0(bI\V5*l"Wq<:60iO+OGC3UX<^Y7ChMM>\^$]FDBo_>;V\ABQ%7E&"dlRN%El&S=gH'!hC0FXahF*@_4pA62)W^O&l.7d,M4^]]ePJ/r![J(n'n1"SPu0CO6blq(e90ptj(gD>*[#?cB"CZq"b!^MshK586^t;d?fOUrGUj@B(E,B'FL.QTF>t!eF*uH8P*F"P6k[1*pE&cbU**M@D^6TRfq7lt>@q[B_rbjdNAWFkR@o#g7Y:R?('&5TimqT2[fa_JMuJZ&l)_-lpD_FiP.X"U#_NodH7hLD69bXmYd_A9HK?4oVR65c7D;+G9)3]5(ncmrP&!UfD8uq`St8Tqf,8W+-AW"T"`*q^gB&/!egEf1h^hX*Ci:9N^)'7bq-mCNE1+#(ZtP4dpS2''r*+#8Q,iQRke6DCZ!7)RNL/G<48=ZY?N\,=U1`TsqCYdqo2CFFuirUIOgM;t>LaO3PX!QL3V,N`l\-Lr\'WT6?q@N1PYSO;`8P>BScI8"W8rphj&,Nq=3WnhI2t.EKU#C@qDeHG5SOq$!!!*t2H]Ek53$*k[giBqu5CDs)=2kN1+r?'jIahuD[N:kohJS5.c2pHR:`qA3NsR&9~> -endstream -endobj -121 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 120 0 R -/Annots 122 0 R ->> -endobj -122 0 obj -[ -123 0 R -125 0 R -127 0 R -129 0 R -131 0 R -133 0 R -135 0 R -137 0 R -139 0 R -141 0 R -143 0 R -145 0 R -147 0 R -149 0 R -151 0 R -153 0 R -155 0 R -157 0 R -159 0 R -161 0 R -163 0 R -165 0 R -167 0 R -169 0 R -171 0 R -173 0 R -175 0 R -177 0 R -179 0 R -181 0 R -183 0 R -185 0 R -187 0 R -189 0 R -191 0 R -193 0 R -195 0 R -197 0 R -199 0 R -201 0 R -203 0 R -205 0 R -207 0 R -209 0 R -211 0 R -213 0 R -215 0 R -217 0 R -219 0 R -221 0 R -223 0 R -225 0 R -227 0 R -229 0 R -231 0 R -233 0 R -235 0 R -237 0 R -] -endobj -123 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 719.0 171.21 709.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 124 0 R -/H /I ->> -endobj -125 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 708.0 183.45 698.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 126 0 R -/H /I ->> -endobj -127 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 697.0 250.49 687.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 128 0 R -/H /I ->> -endobj -129 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 686.0 224.39 676.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 130 0 R -/H /I ->> -endobj -131 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 675.0 318.27 665.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 132 0 R -/H /I ->> -endobj -133 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 664.0 224.37 654.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 134 0 R -/H /I ->> -endobj -135 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 653.0 223.82 643.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 136 0 R -/H /I ->> -endobj -137 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 642.0 174.0 632.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 138 0 R -/H /I ->> -endobj -139 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 631.0 236.6 621.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 140 0 R -/H /I ->> -endobj -141 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 620.0 228.83 610.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 142 0 R -/H /I ->> -endobj -143 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 609.0 212.98 599.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 144 0 R -/H /I ->> -endobj -145 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 598.0 222.44 588.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 146 0 R -/H /I ->> -endobj -147 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 587.0 187.87 577.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 148 0 R -/H /I ->> -endobj -149 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 576.0 251.78 566.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 150 0 R -/H /I ->> -endobj -151 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 565.0 207.45 555.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 152 0 R -/H /I ->> -endobj -153 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 554.0 223.55 544.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 154 0 R -/H /I ->> -endobj -155 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 543.0 254.94 533.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 156 0 R -/H /I ->> -endobj -157 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 532.0 176.21 522.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 158 0 R -/H /I ->> -endobj -159 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 521.0 223.27 511.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 160 0 R -/H /I ->> -endobj -161 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 510.0 214.24 500.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 162 0 R -/H /I ->> -endobj -163 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 499.0 187.88 489.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 164 0 R -/H /I ->> -endobj -165 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 488.0 198.44 478.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 166 0 R -/H /I ->> -endobj -167 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 477.0 184.11 467.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 168 0 R -/H /I ->> -endobj -169 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 466.0 185.22 456.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 170 0 R -/H /I ->> -endobj -171 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 455.0 204.11 445.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 172 0 R -/H /I ->> -endobj -173 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 444.0 199.67 434.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 174 0 R -/H /I ->> -endobj -175 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 433.0 187.44 423.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 176 0 R -/H /I ->> -endobj -177 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 422.0 186.89 412.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 178 0 R -/H /I ->> -endobj -179 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 411.0 188.56 401.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 180 0 R -/H /I ->> -endobj -181 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 400.0 185.78 390.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 182 0 R -/H /I ->> -endobj -183 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 389.0 203.56 379.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 184 0 R -/H /I ->> -endobj -185 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 378.0 190.78 368.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 186 0 R -/H /I ->> -endobj -187 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 367.0 198.55 357.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 188 0 R -/H /I ->> -endobj -189 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 356.0 190.22 346.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 190 0 R -/H /I ->> -endobj -191 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 345.0 187.44 335.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 192 0 R -/H /I ->> -endobj -193 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 334.0 199.66 324.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 194 0 R -/H /I ->> -endobj -195 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 323.0 193.0 313.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 196 0 R -/H /I ->> -endobj -197 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 312.0 203.56 302.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 198 0 R -/H /I ->> -endobj -199 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 301.0 208.55 291.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 200 0 R -/H /I ->> -endobj -201 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 290.0 222.43 280.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 202 0 R -/H /I ->> -endobj -203 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 279.0 214.84 269.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 204 0 R -/H /I ->> -endobj -205 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 268.0 231.06 258.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 206 0 R -/H /I ->> -endobj -207 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 257.0 237.7 247.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 208 0 R -/H /I ->> -endobj -209 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 246.0 210.83 236.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 210 0 R -/H /I ->> -endobj -211 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 235.0 232.04 225.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 212 0 R -/H /I ->> -endobj -213 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 224.0 177.88 214.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 214 0 R -/H /I ->> -endobj -215 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 213.0 271.76 203.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 216 0 R -/H /I ->> -endobj -217 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 202.0 290.1 192.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 218 0 R -/H /I ->> -endobj -219 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 191.0 215.93 181.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 220 0 R -/H /I ->> -endobj -221 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 180.0 222.61 170.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 222 0 R -/H /I ->> -endobj -223 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 169.0 184.27 159.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 224 0 R -/H /I ->> -endobj -225 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 158.0 223.27 148.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 226 0 R -/H /I ->> -endobj -227 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 168.0 147.0 245.5 137.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 228 0 R -/H /I ->> -endobj -229 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 136.0 237.88 126.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 230 0 R -/H /I ->> -endobj -231 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 125.0 218.45 115.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 232 0 R -/H /I ->> -endobj -233 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 114.0 216.22 104.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 234 0 R -/H /I ->> -endobj -235 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 103.0 222.04 93.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 236 0 R -/H /I ->> -endobj -237 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 92.0 269.81 82.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 238 0 R -/H /I ->> -endobj -239 0 obj -<< /Length 835 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"/jbAs(+'Sc?EKpH.EMJc[bFkY-N1S1BKl))p`N+H3F#"Q[Ie#+k9"u-V]U=0TDI)_XOa+BFira,nM(a[J^NuVTco2.8eI'diHnuE9jR'A+X@cH>X,qJW\ibg"69U*C_D[89l>_mc>)s6JP6KP&nRjuQo@%pt]]C1<$J5-cW7@3o7u5gaFa3L(>iDYWs5D2kb%=O:idNDrlZFCgWSNgS8LFgpt4Y6F-5%n:[ug'!!35uk:T"nQQV)f(LWh]@)i)`9sXng:]uUt&C?hDj!nJeDSa6AYZeX_bJcc#>f;1kC1K)`?%OqPAtHc/V6YmFGAtoUpbcJ6j&ZN@9b_NQiEd,ffG:*=*_Vn:ZVE[)7VX5)ot->@NVLlL!<43 -endstream -endobj -240 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 239 0 R -/Annots 241 0 R ->> -endobj -241 0 obj -[ -242 0 R -244 0 R -246 0 R -248 0 R -250 0 R -252 0 R -254 0 R -256 0 R -258 0 R -260 0 R -262 0 R -264 0 R -266 0 R -268 0 R -270 0 R -] -endobj -242 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 719.0 250.64 709.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 243 0 R -/H /I ->> -endobj -244 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 708.0 214.54 698.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 245 0 R -/H /I ->> -endobj -246 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 697.0 398.68 687.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 247 0 R -/H /I ->> -endobj -248 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 686.0 208.69 676.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 249 0 R -/H /I ->> -endobj -250 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 675.0 189.14 665.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 251 0 R -/H /I ->> -endobj -252 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 664.0 209.82 654.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 253 0 R -/H /I ->> -endobj -254 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 653.0 181.78 643.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 255 0 R -/H /I ->> -endobj -256 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 642.0 212.6 632.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 257 0 R -/H /I ->> -endobj -258 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 631.0 259.81 621.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 259 0 R -/H /I ->> -endobj -260 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 620.0 164.56 610.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 261 0 R -/H /I ->> -endobj -262 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 609.0 229.83 599.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 263 0 R -/H /I ->> -endobj -264 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 598.0 233.15 588.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 265 0 R -/H /I ->> -endobj -266 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 587.0 226.77 577.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 267 0 R -/H /I ->> -endobj -268 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 144.0 576.0 208.14 566.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 269 0 R -/H /I ->> -endobj -270 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 565.0 142.77 555.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 271 0 R -/H /I ->> -endobj -272 0 obj -<< /Length 726 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GarnUa_oie&A@B[G]]$LeRgDR-:i[\&erluk^f$h'G2r)76,M*^=3orJdV[t]]Y^AbjZ&`9CL%sN2"8:o,*aP(Eh^k-nrCIAW\(-1b\b`a\^+,YJX:s3t:Hb*MY1WM``CcF9qgsr[,"8oh]?P`?"f7b4"JO'++i*c()"M9Xe&2d'@SZspI@s151\p$6mJ`H'sV)ou[_OOOjS5:cXJ-e>?WeR)X!OZLG[.YAT(=^G::sIotd8u3KH?5I>Ot?dh%H/#U+m9^-EM05Z%u[1'd@m8Fh_J/IZ#3uCo^qV%P='?J;I-ce)2n?Df"0]5)L>%)_!J!KLHRfW(iU&`$>$QefQE-RGgs[WPL6jFN^%mOWKr;'gKXg!o>VGLG7J/l_'91H4EF)E-L!L9$Vt=\I5XRD#jj9*0F-ouns[1p?IQ%ZYW,Ao6#rI-i^pKK\!ap\,G&Z3GfXn[\;KkGNDO1.srTF3.qt`_q=*mt^X>mN'P^(uOsiRuW-RnE.8`?f]S*p^\5kD&i~> -endstream -endobj -273 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 272 0 R ->> -endobj -274 0 obj -<< /Length 1558 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasap>Ar7S'Roe[:]iOGPF.W6HPQijLBZ<6.#.P3Bi`RnAJ:=XQ_NKLbP'[\8X+LraE-:+o:87?)im22+6Jd]GHQW_'Lf/^cR-*.S2ch:IZ>.PA6V>6UVI8>q:`DEs)CIcP)=J7'Sdih,EcA,d!Y7;"gr>ed=BYOkCWlO.#\d+t)-OE,>*'Lk[AFop9kg"$[\2`5*T`;SnmjH5.591-iK>MK.meG[U4&H0Y;Q_n*uI)kbTre7=OFck>^!W1.F]X[+Tn=,L>mM2GUM4\TJOrkq1[G\MAs@1#K(RJuV!P?*YZ+,^NKp<<;0ecY!Gm7@k<"RMsF[#J>*XGdUlMHtKQUUV&W!][!PAe=\lhCq>h9-'NI]>h___TKf")gXGrVdlV)^IseAc&2ZCm`G+U&(]TD0Od%/S]U(6NKKL=0!B&=R8U4Kk:g*BaqKS&L8QO2EWSqd;V+ZNmm,DeBj.fK-(_iJVmBtX_bcBm,lr$muJD)Ff'9r06nB#0]Z-!4GBDJJjQmP_i#-1'3V0NN4t+%EYCf6Hqe87ig:S`:+/@2l>VAFK(K`Rn9]<%SJm-jgpW83$=mG"u09'>Pe-h9g4j74bG"d==o0s$9.3A0Te56@(O&/Cb\.WhV?Uc]8b20J6HdAF]oSd8r7?5jZqGCPa6k."QK#XLqogA\j#B,tmm3]f8ZYp)@cQb8QFMX"o,??bg55La\k#rjFB$HFg^p^LjrqtQlZ[r)I[#],0p=X:)hi>u$/U7`T^E**\]H#uh*OK4)B>E+JOT-4p_Zm5f#0[#Mo'N*N2`H@AhqfEF>:4BP)e(t>C: -endstream -endobj -275 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 274 0 R ->> -endobj -276 0 obj -<< /Length 1576 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D95iQE&AJ$C#eA#JCPEPr>[W,[h$-ET=C;`9Qb!E*VB)@V30LpGJH#$nE--]msO7UZr9mY.%W!.O-nJ?r#9rc+9hV+`PERH$0*;\@&j>?;_6nlfpAWI]G`/S/(ue]9d'7%NBXNGJt6HR49Fj=6<@[[8[9,rNj/ic:QFlY=E2q=^-&)[Q0t+Y7gi+o`NK%e>hg*Zq<>r-3%pF-nZBU+P_O,&B@gUK5&6H,GI$N1)ULDU6MiE>kO/Bui)D@#85[_`+;5B4p`'In)I\jP7_FSUh!;FuP!oLD>10Z3!52rH?YUjJ$N=2a4X7M_?S:3jg^[WA(5@T.XJ7pf+#&l=sn$I9+>=L/n1o@*uJN.S\qs5cLF.UHK:W:"%HO-QEbb3FB&;8;ie]?=nMBHSq#?ZRm,Th`gbY`R&uEd\++?fG8X%EKS%XFfm"(1ee9,X&.b,E&,BWIqt8s1)35@oqDDl$Bn*TV@c.[qZSRHJN.g>5.jio_I:5KVY7+f@*G6W)Pe,0j9ol?'B:mOe1djeh`']TqeF0Jd.'cP/olr:26.Q@4:?n^ecN"6QC"t/a5Z6id/YCE_r?.&e1ph(_[!TKNRS@+Q''WTfNiKrCGElG%;E\A'8EmQ62PgDjA^`F%;&t9P,"fc_G[r!m?NuRM6cSk/!SaPUWs_(VE9X,DOlo.BLKih/qhSc);""r3.nTATDQ`6>.FD$#gm*Jk$s?%M:CiOdW4C]@=H[)GiL]DLD!`=ZVg1fW-SRulY>40q4AMEXVSlqIV4r9L>%c+_&i@h+!g;hQdn&l2pd(,gY#UOb^ibd:`D[^nKe-SmRN,$Oq7)W6/2^>,LU:i5!QPnP]2eUD.km;cHI=o6e`,"&1`HoT1m5PmHd:n5>0])HN^l3N$1gl&=4a>O*eqTt&CA-0R?jLfWF#.!4JR;+NoXt%1-(kE2uh[jl.Lj@T.LN17$(."@29mM#pVb][AWF@X6VI=L*ZojS1=oqb8AJ*h:G_L2[l%,".^ME"td;eTVkRWMB8ZA1=4iu/%#)Ga'De)'ijNd<8`,J@qV?]]:VA"n+!_73qPdOL^U567&CAad*"5gQlOm.@i'#+-7m+I9nlCYM`/MjfAjQ:lp8o$gbueTKBg@L$"0`g%tPO)#Bb;)43iTF;=$14=p4G<[#JLAsHe$T!&5ljqqcT^VeMmRJ\hrXN7FJtYU)#(R^MN$2])4O[4Egb![BU.5c1NWs*E*f?dTTHGS\1R*sk=6T6]4X8gVB*,prP="3<9dJpT.R]c~> -endstream -endobj -277 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 276 0 R ->> -endobj -278 0 obj -<< /Length 1831 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D95iiK&AI=/(qq93Af896'j+kU72OSt$5>@DWI(;7Ysh'T*/a=Ihj4s)F6(\f(Q0VJ^_r:k_iODH^+A`E^W&(e,Mm7I\asFf4+HCl?[q2C4`fQc`*^`Sp$D.&5@6K!"B:GgO$ONpJ+gZ]4/[7*S2dWR:93YjRI[_;_NGYqgQ$0fEn\OYpJ`iXXoQQscn]O8,tb`RV]!1f-aZdnZK\eDg/%i+:r!8<>&9]qpU'4M\pn>8h_(Qo1B.cJ/EpPN&s/nJ?!fuuUV3+jG1t\D/;`?:S2G.d52D:\;LubA/n#.Ia`9:>6RAI2.2^qd#4JQ!Og<%-$&]VlK]R>=Q`T/%[07%lb,/8+!\!`e!9Fr4gYli$0.D6P8U1f%[;ME?Og5Zd$VOEYLopnY:e?L@r;8FBq$Rh2]iU7q/:u`73$;oJCFd,5Pg5&#,[=FmA7Q;KqU!RDl9,Ll)$4s_>2Z\TQJ-$iT_gIVC%]gq0l)j``9P`j>.3OCDTo_=%Dps\]4-)VAL-i+kuFL1;TVJBZXIJBa\MdW[)DQW!BI4X;iVZRdu;5M>PQo$gcKhR+(4mj*9k'r()]uCjj]F)FY%"'TZQ:Qd7HgUcn2hJMS;=1A'oQn"gY!Si26On5tHSQd5o&90mV7F@O9kA"64g\"ZH5Ls6b2c*gJ6,B@j*[o)69>om$@bgD<*M`,iXj'PA\Lh5Ahr4;*=p:"1CP,[iabYp&_pKK[PDlo;pr0X-g-u-jsF`s8-F\fg6N(f105>mJl<;;"1!phEBZgi*md5_lI5^)1_$NP3jEJG)TI*$l&*.sl5)P45%rRj4s1FAC/#C=Z'n7T$B9q,S\K?-UjZCOXI>$5G4dQ@/o=!sF?ZU9GM[:1).Gk#diC3:Ko^+fim_G4hcjf#XlRrG7FbM@_:9*3m+'aeZ!++kF#EC9nC0Fh]eXlnPsH%G/=PiQe^$=;*2IM6X<+RXD7Hg>rW9?*0\1kP"=3J9et0D+R9-As&@?2Mgbin*L6csiZCGr!c_pD;dE`62AA"2$>.?#VVD9g^=P:g1jj[rIO*SilqqAUDd-q+TVF)!gKTap>[-bS9)&XY![pbRu4afM69/a2FBnj"M3?4IY>\e.*3>:CU%/tRiCYBFI(;8dh',$D52!h$6kC-d<(RQBi;]?s.ej<:15_)gc`k&-Zj!N[%='bV0UcXakOAKcQ\NWa]3Ib8N+g&PL-s1,>!65Bg`_HrfJK:+m)Nb%Q3YoU?+$Bg1(V$-rh9iKl!C-61s`dI#_1coh!6iB$h1D&sm4l"Q&q!\9^,^_N/3dB4gW1AioI..7ni7^]!o0Wc!Q()O!^769%$DCq.Z-HDJd:SWVD6T]ag"GG9"AfcI:;*5b3DPQ/kP4"cJ:Z6[p]Gs\kJA@&]&+5t:EeO3(fCd@XGJ6:[hRf0]>"4FBr]3"s-:Oh>]Hki^00_a'j^he)da5*)Ym33>qab!X^9[DU7QFP;rDgjbI0@pi/hK, -endstream -endobj -279 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 278 0 R ->> -endobj -280 0 obj -<< /Length 1586 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasaq9lK&O%)(h*(qm;qAi,h8:CM8WM]JI;=C?^8g)cJH8[N!N*F!6H*R'"?g9NNCfeFjT>4)Q_irq4("d2J0$D*Prn7.#F][.ajVDsAfk@_%mU+#B_E4%^89bNQo@.0M"+gc=fptgf=K&LSSnsWNY'^r5Z-qdDI@&c0R?YY[!]+qi<)lYQ7[s#t-BlaIDA?N$!q*p9!7;6_r$eVhjMYeFCkT+iPGO,(GEt=3Hunp4d\qh0,4KqD3s)(#m^^79hKpr>m8X%soS8tX:4"Q%K'FI_%&,OOC'5+,*">)=B0/AK?5"Y[LdG,H?5@%e:"$C&8ONA3Sb*k=](-`]AgR1,2&Y2"ToO.kZtl\?6jS@$/)hXe`*QC]]4_f<.HB3$s-6mbCVs(0:.TVkm#jCfjfr.o.Pe:gg\:D>-&eqXt9_8Y0+:j,2A+Hrtu8$;/Ur*X7SK/V1Q$sHB'+1<-LWA!#7e#Ad^d`Gel+as=P6=1O\Iu$G[Mu9g6%nul[obsMa5gW:XK$E<^1?KJp0]+0Bo)`XGg^[P\XUK>Ff.^JDWuS4_7(+lG[e'0]\.McYNhlel8orWSeJ,_U'%J>fpf=8aX-^##J7U+sr>(9BPmhG'I?nN^:*#"co"#ieFR.Z#0%F^;e=DehR':OTP>#QC[dkgsKMeNoM0:3NMd'(\uRS852^c.J'r14F.[sr3)1IiU^PNhq_4.eLtTX9)'Y=cqc9Ar@OE,%S@+<`IM]/M,n8H4Kr7r"9Qsu"'9O.ca;b&.T8d;>_jq\)_SE*$7QG'OeR9=A+/.aRi8_"Qa<=HpC)Zn4;J$Dq,ZOU()4X=cMj6f0.gn4Qm>u -endstream -endobj -281 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 280 0 R ->> -endobj -282 0 obj -<< /Length 1995 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%$968iG&AJ$CE,r3GP9>71<'*6"D3CdquaAuJg`!ddI1N)k:t2N(F^fqR?IT42,)FnaDmWubggGlO%>j1hD1j/&Va^6bc#&)@rlJ/Nf1oHfBm87EpU=nA*lj&O6qKU'rtU5M0D$g[_K,C*S[p?g[Y!]=^Bj0#A?6qP-r?D^M+,YV9<&e>3>4Q6$f<"p#(LK,FejrK,%I30/-e(O>NQ0V15sJt5ETdO>$DBep%#7A44@\W_tQ-mcnc2YNV'ZLZWemPU//\&)#RNB!VZ7WG.9;S_:H[4d%^MFa$K$A*aFIH\Z23E]li)U/1i)^\]dp=?m.AQfcnKf)t/&hZ`C8hiF3XsP^0R\@RJe.<:,:`qKPJ,k\3=Yoi_k-cSn7Gftl)d$8bU'JKPK*3[(12amZ$=[[*6AJu-Zgh%T"0"sXgB9BKb^T6bB9&BJV0&ZFd;Q90$6:BaKQ%mC&u.\8LL&Zbq&N5R^$'g9@/^P=_hnFq?FjCm\,p->\@7'fQ&RLjW.`#d>e5ZOG]N4'aGdId9oKeZ4CLXM]!'&MA"7@O,S$`4M-(84/bpPUpuJ6OW1[tJf$qbco-CE]9hoo\2JT$%e,Be;g[kt"a>FFn2eRc`-mBkgF]-Y_%]H,.f+d#`LcftsS03o<%_Tr3^hU61$%)>Y:%.\*'W`O-UjI7$7LOnL+\8TZSsWn.)Fbp5k0_(/`!gYC9IH6Ueajqbi)Z\]"YCGfrq4VcnAp&>BBeJXoS'l;2$JjjZ&sPOKFPK;oNLV6;p)m?A7,^S2Gi;&PXh:JhNJS;lIfG,iBf8^%(E>WaP4A/ZlOWW4!%IkH+/Ji,MuDegFIJ,],>Rmen`p2PrMtnhYJ*]VNY7N?gZd>+'CV^cbLO+]$>@'E1A"m_%#o(B_@KiFV9?P1C<)oro9S/U'Bh9""iY-rO6SlhU,/IN)Y'@$/4q+LB,FqVk["K&)T5#s1RVcEd5d&*+2VUD\ZBhlb(nR0nVp3-8mo]1!fm&I*9r\sJ[R+7Ub-fP1l4bpg`H4dTtt0D(N6)jQ_$4<^'(2;h5$%'oe]d3&=TOdNu8p-oCN-AHE9PD]XcsscNLqXrN"QIjioaW>-)%edthORU[>f`pl[2\h#)HhDE/akc3pq61RM=(n&\5(7STB>O`&kE#4n')ccT&#"SeBZ$$.W\ItbUjh#~> -endstream -endobj -283 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 282 0 R -/Annots 284 0 R ->> -endobj -284 0 obj -[ -285 0 R -287 0 R -288 0 R -290 0 R -292 0 R -294 0 R -295 0 R -] -endobj -285 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 505.14 668.561 540.12 658.561 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 286 0 R -/H /I ->> -endobj -287 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 657.561 132.22 647.561 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 286 0 R -/H /I ->> -endobj -288 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 191.92 596.122 298.56 586.122 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 289 0 R -/H /I ->> -endobj -290 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 161.11 484.244 231.35 474.244 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 291 0 R -/H /I ->> -endobj -292 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 526.45 407.919 549.78 397.919 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 293 0 R -/H /I ->> -endobj -294 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 120.0 396.919 139.45 386.919 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 293 0 R -/H /I ->> -endobj -295 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 314.494 374.919 352.814 364.919 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 296 0 R -/H /I ->> -endobj -297 0 obj -<< /Length 1193 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU39on$e&A@sB#e@$rV@5[Xa[%N[OqbSEF\cueZBk'eOMqYTmj9IZhb-P*88;^OG7.d!naLPnhTV)X\6HZDbT[/jN-js$V:t5AWd@@T\^Bsh[U-"N>K8WUkRX*sihhOX_@YQrKOHp>f0X;"Yj0D%uN$OG/XC2EqLqSrI5jr9[N.lG`ad=3UqTqdph'VI9W':1b&B[3sj%<\GQ\.*9q)ucRNg=VY^9Ld]UMUL9SS?u2=$k`h_J(806p@ESu:U#m9'\'\)(CTOsocUZB:7Y4&1fHB^X:B`<]K\[`&dTX=J^r_,fO-OpLNY<;U#1U5_g1OC_R]G]?clV3QC-&`2Nqo2GiXNTKVh):dfd?^##'flNn1ZI>Lqp.fN!*`pmfY&"k%BOP3s.:]bZ>"+hX]H.%<<%W4#p6SG):9eeHJ[ZePeb$#8,>0YRGC)NMeD1O6Ub<_1(tXB/`4KZ,'^r<5hB#Oq!^98JGpV&(]!*"[S0/U)$W2eIY$@-G.\)07uJ)L[&Bs15l711JJob84dFA*7&E2DbsAr2(OS6_ETg#-?(@=rOZ9Tf*osCJd,##-_*8R**:*1H4qm)Bk?sE^oB^MG#Z6#8QH`I?XV34sFt6^mYX#)H.3!b)MHV0@1D4I>(lU/pB,@o7E1YNn9YK%ac%>0r291Q%n`<&EYr@=V%CPb3-"n,8SQs$]A=W>=3ITc%PV'rsQ"+*Y'%JU%;p;`pQsj*0/$YDk<B*;$=c5k8]LGCr!~> -endstream -endobj -298 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 297 0 R ->> -endobj -299 0 obj -<< /Length 1682 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=,95iQE&AI=/#hXcH,[j*SeKPAX_<0,!U:sVfcn]/?Td?&"Op9V;pE_-.1Q(;*]?,a_*0TpQpJJY/?JI[B9m,Zlu?i^5!*0kPB8bqBD(!1Y*^2.0LdLt)C@HMH+hrga]8K-a;^Rf1RM`F?iNUjpGYK+MFK\oas:M@R[ai,1oX)'AhaJq*1jRmUeiXf!3RAl5`7jRH7\c\C>,kGRiYVMZ`3:Z!G(Ai<80%!BpVX5/FD!=qJ!ee9L'_r]^_]oZGdPl=#K]YH/5$)X3cX?X_NEL-`M:>-i+f+:D@.n>SQA%)?c0L>h\B/*WS=RZl%6,R6Of05:HNKdj+@0iWZTh5EKNB"s&YjB>dUIX6Z8/$G3lH+DH/XFmO43#B-`]ZB:EF^7PmqVFQXNPS-U/SsG)@hp`+HI9s@Yi)m7eY6Wn%71Z>P@d\3rg>L$eoQ3sRZ,BeZrC&KTph8\b@0>Mektu$j,URtYX]^Pm2>$R"k(^sJg/U0cFt/YKR3'2c71BW>=h&45U[A+%5DWDQg!q=(#fQg2q)HDpkDFh?CuneKP2Ud5tm83TZNt(S:i^Bd5WN:dMVg8$.A@4ks"[U!)-LK?q1l*rtst=B-pdbE?h-]M)g[n<"tpr&q-rRkOf:*\fntQGib*,Phpm.FU/-@QFd*'hN`e81'*#M_;i;/3ZTt,n`fgq^O(U+uGqc(I@i@D[V0P4>Ce(nm5C)*8<1[Hlp6tH\hP])#C0)c"?b`W.e)m%P=G:&5CXYbb7Xfo@2C-NO;&g&\b3&':Q+7CbrmWX#:&Tkne=*\te`Y%,p@P+'%BUAFpP6F=2n;:&=1@P7?Fg_2hcek"^I]rU5Nr#B#e.:m4V"2Feef876+fqg7Q!Y)+o$5+*,0=-`?ZL6OBd;.<7"Gh,,/M$^\sVqo,!3\T>[=LK68/Urq`F:+\bbfSo0VhIt>2;s&rb,k^T\tcAMe)8M]MLXr^1&'Gl7+gau;u>=)3s-#o"XC:S2<]6sB%Sj#htNVJ]M%K$%*YP%bZ4V26-)uU-bIM\m~> -endstream -endobj -300 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 299 0 R ->> -endobj -301 0 obj -<< /Length 1421 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%#>Ar7S'Roe[&GdRiD&ADbNSQ@_"^5:&Q,T8#]g^W"uGN(#]k=!#Mb0%Qg+<8I<\M(S#Q;1B\`s&YMJMu@dDu5=4OA-V9obSFP5DcG8uUsC?j2'PL$ZcSQQO@9/UfJS7F/>j)V'Ob2I^KF*.(E+S6OiV3!/N,SG.ACX]EVl.RHR39C2%qaD@tsJTe%WQH*LP&inB;pZ=b=L91hOWXI"1=Zo_5c^cnGjiF9"#^B5<%9pJWZ&qXe3M;LL_?%.$h7"b^l`Mk)EMa*u#nHV(L82K;M-!;Se_d>NB8/`TdfuSWf>KFkdr]PK%rmD7ln_bb1-t&]uFuc#&0F5($?i7ScG[GUm:\]u)U'^JlF`A-fLf#uedXQTAZljqBBWV5X9oM'#mT),C"RMSgEe50WXa4!tO21[ll7,Sp!(N[qqM#,Vk(";Dm"+lum)CEUW%ROG8BA$fqNPGLJ3AIb$am>L"^N^LDA$")F)$llJqm6r4/odne[rX;Jd1T,r>@W*2'ED/=^+O,fJQpBKkMC0#JqC>M8nNFR;T!6@HuFnTEljd6E1IDFkj\5ZGMTX)pSm'r#7n2__c'&&YSqOC1KpjG4aM$.%;!rg$N1_["'(^?j?Np86D2to/s4'fj.!2%Vl+tohF9<;r?@gTJ;)R^d?:%40E.;G"A6/RW6eu0#4gs;ocTU+a-,qoOs*kePqHg6Q^jWnG[PADDj#N%CO84@W^@KD7RDT@B!%2m/#dd\9[Q0eDoWk_(/eK28-TK0i$76Bck?Ef(H"jr>!+%8eY\6N9\D$I+kb&2*ZBKkAIf2]MOXk2/7eGXSuCOgb.Gb,Z/9S(Om'pdkBYqrmOkPhY6qS/-h)5U5Q9Gs"pB@*`;U!2pRh4oH.PACg-~> -endstream -endobj -302 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 301 0 R ->> -endobj -303 0 obj -<< /Length 1371 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%#bAQ>u']&X:KP[/$*h#kflH*Xg)5,e#n1G1X`hj`!AB?(<8HqW`]qd'E=0c:X&0N;QahrJnPPVSV/\_l;&<(S4:1lQ=cU`T2*si4\_?a'SO^NSC*cJ)_f"XB'"eS+tQYtu#;9m""EslT@3nLcc5&0Yl;Q0&8)o0$=Q=7CFOXZ=5-ZU.YC)WK-U=+5b;&ncE,+]j!t,IZI6-5E\GjKk>%qS.XP7H0+r(rAQC7%k*183M,?[.j(,g,1!4?Ek,fjMn4J-Vk26+>g"`u[B+3';#,R,F%c^[V]\_GdqjYhW^Y.DEL*tcYKHf8VEk*aDnP(?>KQ*FS=n1jDqY\Hro2Cs7*Z#,O@02g!%)^*a=@2_jiUkGE.1oJmZQ?+.`)U-\6qGa0ins8H+[]dt\I]0H!Ed=SbZnW(',WW^+V&ae+@^e3.(OadT)rSsIgHW1'GBh/c.ca[o%p28?[=Y,G(B3G/quSWY\M%<7OV8_dpWTD#SHMc8qH.'R%Q3=oaH#>O@4;WhfH([HIA`Gf.Lo&l`#X6"E"#-r(mX(jAb?p\M`QOVL&X'Cpq/kXW[s.0][2%G.o?^bmY!]^_'h9U;uPDNEr.((/3Bq+_Mlrj.(WN+F`=j@?!7dj/)DHg,3aOOWVmOIhi$G9[I\]j]H>5ThLmZA_:G8E)mO\]_-3[aSu;Q8SHo,_Q@*/`WV-ke#/]/b-VhMLcss,[KXC15mZ#js#-aFaMkn590]dXf?ZA+3t"8kI0Cm70001O\Ou&)]40Hp>47HQs*ZpJJ\oC*mV=`o3"ua=V!:\+[U!7QmjU);k_ojZ[?c>A!!ni/?A_auiPnIBQml,5tDmLYr<=iaI!0r=uu$qcH<\YT:?B1sGJMnsdsT<%^t07gMA?C=P2[8@#OeTZF(\rq@++:QJ$\M,V@XE\OM8&BqHk8oA/*HRo~> -endstream -endobj -304 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 303 0 R ->> -endobj -305 0 obj -<< /Length 1333 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU3997gc&AJ$CkU%6?[!_(Gm<1,h2FWKGD#k^cfKO7cg+-,5Q]gBOP5b3=+si6`);6oL?pP98^>XJ2T_rsj]6TI"K9:qZeUE7C_[JUtra?$F-&`E*,4)COB0EG5Wm(@:;bHM!M%gnGPmEL1u>d1dRp5B_J!-qOY/B]Z`gK,a"6-(5;68ho\6o.r9ZJ+a>?1jX$FtJQ9Wg.\k=lBUYgdAL'7@;q8h5SeP29j*&c8Z:j@r/(7Q=.Thgig$FS/gu/iIWW_JN0nYLE93qtnFcAX,*-l'$4!@K1KS4XW"Zjk#b-PAd!a9W[N9iACK7:2`#62fLm,l)?]S&KK"JM1X@$8pb^11:We;<5[sQ6#RbM,[>RoqX[@A5'RL.WC9*5`/,u["l"ZlS%:GUlZ!-=1kWjf.PEL+PY;D%&=)eaV=JeVBR$I:9s>DaMX87aeBV&"NZf>-"]9tXs2+oo4PYHOg#b*Mi6C2bHq7^.6q]2=6k_6+BX*E3sI\B3N[%@S,1?S+"S/E)mXA$BUs2%HmAa,+'XVI1QY1e],>P8&&3V*[5)?\=^1>+TFKT\i>EOYA^6+?4R+!Ki0;2=.qa;PgD\0msg"F(f2PT':3S"F+V&KE:f./*S[BY4;UPEh#>lk/Ua@&5bY:Ro~> -endstream -endobj -306 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 305 0 R -/Annots 307 0 R ->> -endobj -307 0 obj -[ -308 0 R -] -endobj -308 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 138.6 576.841 182.47 566.841 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 286 0 R -/H /I ->> -endobj -309 0 obj -<< /Length 1240 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK997OU&AIm?6l]lAg,6,Uk5k4j@oi_O5ucjZEq$MT)j/i#O6s*#s,NX0nYDXl5XMDI2'-CB5(E0[o6N-:G/ZT1,Mu_,-bd'X@*dFhlsX@fO\ZOK]Z&1n10\S6Rk4`ajPe7\l+\S^GEg`mn'McQ:Ga#,g2n)b%-SO!W6qO5=&)23:"n'0l\6Fi=R4?<7kXhpTUBE&[UmB1R56ltBHLC[O^Nth48(<1um\n5X=f+7_S:hT1)H!*,gb#5DSQKcNF`>Na7c\Y#l#s>mAW_8GLEa?Y6M.LEOU"lq6g#9k:Kr7MhXE.gbuC;)i#7*I(s6#ju7A(^-M'C9p[Ecc?e,8/tT`h`,">fR?Q3qfq(13EqD\*mS-'-:;>TXa[)0Fl+46VdAJhRg`Yc`1:qJFSVLK]sV/^^noo/.?BaPq:'tITV]),U+W2WLX$3r!F0IBI-VL]V\^UIui`2l@N'H+n<9Cd?5GY-sc#=M0hG6t$/_7Bt(NSB5>>\`ag*Jk9e^a*k/+]i=E0[DT=9/SMZoe+EE4#oI$>_Qf;7k0\WiU;X[6F-=(trTe%_b\0*'9&QJ`"@mlR*n!*[I8[(ko6&\a3cAUQn/:N,WS-8fMWC+i]Im[OUc6;]LK>$u"OEr`Cio8'';bH5:YX]8D!i>=ihuf5%8'@$+QPE#SA$]Y&It(Y*(86k<^c[006l%b3GhE'p]p0%R_lh?\9&Eo];oq@:mJ*qB$ri\.JP3++.NmjtX-g2#8WT@LUU"qkq8[hN/]lLJiu?WTA9iT1-"3iVZjc\=!RB6-=aEXFd7#ho_*T4@o?kY[ND7BJlE_?aR5Z'EnA9US$]_Us%jj^Reoq-%OIOoh`^3N-Lr9=aQCPE1pZ$WiTjN"X#"PO[&pP`:fF\Z,?n$jR%?6m)(tI;H&>eC8L**#%N"2^kmqC]~> -endstream -endobj -310 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 309 0 R -/Annots 311 0 R ->> -endobj -311 0 obj -[ -312 0 R -314 0 R -] -endobj -312 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 218.85 516.542 326.63 506.542 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 313 0 R -/H /I ->> -endobj -314 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 240.51 386.943 348.29 376.943 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 313 0 R -/H /I ->> -endobj -315 0 obj -<< /Length 1695 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau/YbAQ'(nF!Jf%Z0:<>4_]s_ZgF/!%D(SD1u;r,$7JgR0Z529@C+sI!g_)-"fbIQ4GipR@2lV5B`udMmLUQO^X[%1_uQ:e(C6pL'^)fYj@eqQo5='A$IihRICSom[H(VnnsJlAR8^\ru-f&6'TuXlAP07RlOZri`6&cm9i8-rH[ka,"G`5,Pu"cH_/EteqdL*;F8JlTfujX`>q`)?IAsejKr"PMRF:I!MZkOP3B0R15,^LQ'0qcRo=XcknJDd`'Q[fDLIU>j@Vi-uD&Gj-"%j0%WYQ`3GVo@i`%SkmZN2J_q+8P"-9"pl8aP>WY2f1^uDkh1EFGXV!:[*jYnP?.^L^^@ls8OqYYgN*aY+-OcBm`p5h&T3-T_tem1pT\o?5D/Rre;iI`5!#.Re1,SdWe/g:M*D@^aMU3^!)Ms@FW@lNp>e4cfBn`#RVFXs+Y\fdM/r*Ek=&[+hjVDVF4_aL:3=N?6I)s/GLU1W5IE]aTmFY#fE-\-Y.KrK-'8VTdm:eP(oiSimC%g@sT?7J/'UG=gLAP7Eoj,C,`[uQC8ok3)I)8?"UmPCRl%5BY?J<=OtT+,G\KsH<0R&ojfW?VMek9AL0mJI=\:d%R(&BS,;*X,?ttj$[^Lp$.B$8e/)\Z(#ca'8h,n1kpil7dcE!8gU=$KL`r5pMFBY&]<)(I*Wf\;jgTW,XIdnpQu(70ML.@5)ZjJ"IBmhB;af-^b%2Y/9@!B2e[lMo4?L6D,`!Y_&4*'HL!qkXr8_.o_Lb!XZHE1o=:R%@?/0-BU_gUrmQ)IMh;'".:rSF8^,"P!V9>7Sd/1oQNLHeh.l5(2#k]s'$sLDS=6(%;Z(kKs7O:%%g>"Z#l~> -endstream -endobj -316 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 315 0 R -/Annots 317 0 R ->> -endobj -317 0 obj -[ -318 0 R -] -endobj -318 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 385.406 679.14 412.066 669.14 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 319 0 R -/H /I ->> -endobj -320 0 obj -<< /Length 1396 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU395iQE&AJ$CBROlP\-tsB\*H\WbhHZ<NaN'Um:CUDba\:";:ZOFS`Idn3-9Aq/7C!9jQTJ`9E="`Hl)ns3:9W_R-9"A['ChVc)(VfcJIC%)u82,cVNp-B-f66_@C%5&F2/]J21Bu%CqANAoFNfSJ^\mnJO3C(cerOr!O-RdkTH(%:GH=D^!R@M@RZ$+?Afbq?94Dlf";4-.24mO;rk0$&\%lpj?dc\oobYW_ap#eM>L9PYQUijJ7rS7LKXb?#$@6c"Nk.0nElVgE`94X76a!Qr=H$00Nr&D:Ka1(Q/<-!#cC/Ra&F=AZj7h2>$m/u?HrLR*#u3Bba3cI9McQF`D;/AT-pX=QW\k!FYQeS1s-9O0>E;M=))XsMTs,Q8$giRe_!-/gVsf:\s90[.m3=]Huo,?&"aDt'*,6(neuJ&qa?W<,Xj.WD3MGlWUAtri_@Z=jtY$MbhMJ"IG45B-KtAEakHG7SKB15MQK%rq0L9LThE221c-/8SXkUlnRo_08.>[t8Zhh,lb&?R<$%CQR-3VSGq_5I%;YV4E,;ab$jWl$1N=Aqc;UdDiERE,fJRW39nJ$aJ3_CeYaIhHUEh0u:-BTs:VgM:'N&eb/p_2-QS0dZm7(n(Ro/=F4'U`t[EK+n6GqSuZIe&=De1/n4aM9XdjS4CSU0HV>Q+?)]NNM6D^Wph]_'N>)Q"oV%)PkEPoH%oMq!_.93kno#GRnR,tH7mATPj.;8:[V#M*i#BrDeG2PLJea@bPc[E1'Ga`h%BYnC1T*'%WmR4Zuc&V7aDsAlD=d"#VqTB4!^TOg@OccVm33fZgAi!F&S`2p55t9qcPp;U1imjgL.W^[(dSo9!d@+R76SSJiO`Z[ZR/f%q%;BngXH/$3XY$e<7\6rrF_ -endstream -endobj -321 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 320 0 R ->> -endobj -322 0 obj -<< /Length 1582 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%$hf#8L&:Vr4_*2*_]au!L+,4ZsPBsfg\@jLZ&04#c;n-.Yd,C)F#19F_%!FDS+'kkP>bJMd*^N1`)G[R;BD'ILt7B^S?kH8ZsHXpG>)hG/8&D!korpAC-&?dEQP]k67E7X2k\1_9?rF!b)3J\L93'OrEZos78Dc3A*c^7$2B#2njb!tQC>UcA+W0B%PbuSt!^6i9PTB=[h\QgV,T'XK7m*d`HU^Sq*ilr86/@Y/\l8tOI#FK`c&qZHPjEem)VT\'6.;:+,9*+mURa/Y^49&2@AAt]N,5VsAOr[D^:H8MT#0'kJZD3]P7]#A]-]+"\E"DIoD/OF3Lgl5t&][hjX$[!MZj6IEkYrS,H,1]u^s\#rpAS5i^<*FY%]A>IaL-E5W?mIhCr))'jIaQe$:+DImM^[#Fo<4H3$g>9FWFm]%kB*9fJb83,iBf_EVPN&8\=olH,FBT,Z_U_D\c[VWk@Va\dn;004R'+#Nl=jjLm17jq9@\1NPa0iuYGl?S$'iahl3c3!\iRCqGVVM-W![p[60>Q-sW^0\'KY#NO]:D[Dju#`W[+qfPVICo9S5G<<`/\..g6CgfNIaPniq]`:"45t4?q/0>%42#.$LBIoMJZ<`K0Z$fucKNk5V(H\j$YsBj@$ci^9(M!CSH!nC&d46bdHVJk.O4K\>EBiIC:gGk'V1>M!lo65N7OSMj:,]Cl9Z\bXd5*PIaEp5he5AondE-XA7f@Y__?ZF$]jI8m[)Vg;5,o*`WT)YL+(Z3iG.QbCBWN![>j"920n\j]uVlU5+Vcl;Ln"=g;:hIjOi@[_:Rg(`JW_07i8r"3ZI-b662*Fq0idm$8O`PA60<5Xq@^iNa+=1t5]b-a1Q^r@O4Z_kcmi&beKL -endstream -endobj -323 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 322 0 R ->> -endobj -324 0 obj -<< /Length 1021 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0B;/b/B&:WeD7(c>QlM2DI+g#uk[8#B3VFB2@n6j&YBH^eUBW8$2pK\C:4)G%@dY*:$cM>)acemEi$[No03YkOYX^Kt[etrZf`?/3tMFija!hL-CXm+B6TlnVM@eM8fMb%T(RD`7"m[&3^)NuArL5<.2iLc%TpmacESnW6lQ]Xg-*[^EZT)BDdpI5Ma7KV6V!Zl66f%^VH@nAqH2)X]>a$;bcl3UMti6i6GU5/M8`V#P;9e\K^Q.RR(0XKnRLCL"mb_A2MmB6VJ6>lmN1\Y78QVD5+NKfErQ*Tu-DPta&OD*ekD0D%p.TfApNnV1.(0254l/STO`g_F40/eXReJgg;PNS8B7nh<--*?q3ZFCZl<=?((?&?s<2Jc`Z1q?nW\`:O/EBI6(.eA('J;XqrgK%G=iu)PipV09K_jcC,QR[Y3EV6aDpPl4r]+q1cnjb.@DbdX^P$PngLr_<^D1P40fF75R,!+ApTo,\3N8t2toDB1*"UT=\iB_EmS6n(lTLQf'EL,u[.c\0]bMKnCIF!uYDBT9#pSV!`]7fKO6"s;\[%4;k=;Yh2^*),>9T2q_qksV7X@,d:7P:)ceqrb!]^e^JA(]0n/8I5f_f`#'Jbtno*PuAfbI*/-nIV*sc%^C+=8Q@-XhG=lCCqC.N4N$UAX(+L#grC'$`m9^,t_*h>%V,nhOj)l> -endstream -endobj -325 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 324 0 R -/Annots 326 0 R ->> -endobj -326 0 obj -[ -327 0 R -] -endobj -327 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 200.54 156.341 244.42 146.341 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 328 0 R -/H /I ->> -endobj -329 0 obj -<< /Length 1778 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasa1bAQ>un=Hg[F)_7@MY3:(h*ZD@"^7RSU'>q"K*_V/.D!S=j+MOGk3rY"hh>3I,D9$,Y;J2k!7*!0DD3%'g%TAr2#HJq;KiDn4auOIBXp]SB_?bAP%VSb/$(u&HdG`+Y$Bc"5R%<8rO6n61]X^3Np`h%5clM6l0rQ4CA+]e*>M1ZBftK4<,\CkM[4Xm*]&l%9kul'>:c0]"pPm--KB+8`oY-R6i]5QN$=gOa$)m!GP3D@/Sdl?L^e\rD-H\nu\EB(MnZBIurBJ;gA^dI*4Vl:+SQr[KdW@,5",^PUX2.RDL^o#mo)ja5;(=eoIQbdsSq4&#u`\ZYZaD5oOIV/J9cZm%YHa0TdU.F\OG-LLdG"A*cVa`&p$%0's1Rn@^r^t)()Qb%ndM!A&O"=E7\;^AG<=.:1Sb;ucZ2DN))k))1_aIg:?Y[A1j3W$">,pM6u!n!>k58gC+H>E'LQ_\Drg3Q!WD9$^Ep4(Vm/$@fh.r\u[:3oU8\/TXn)g+!3Jo'YhHBo5tDN*[H/oUqb@`MoMP#-:%2i?rIE;Y:QPUL0aVP619!&ccVUb)@g!(l.D9n]-'RPeWJo*BiK5s59hc:%?TVg=M*PE&MMPnNM).j/=-J==eu0M!m)9^ogar^kP.\fKb3G-)gPPpWAHI37`KeSp?mj>*[lO%qO9d65F?P,$RXbA-IR!*05_7'/"o66s3Si/Y\[oC.!<")p33*-7JO%7Jj(6]s`PoW;_!/gHT*L7oOXa63#f0FDIH63Gi6dFdJsM4Nm13*+e]\`:=W[peo^2FLf$Eu1hhKXRjrQZk6RZ)3(MFobA"tVl$L`ti*Y+5kHWl%U_[XM]hR$\qH2T($FQ`5q?e=H]W7\,?<@)`A?_ZTt.,P'er-#c( -endstream -endobj -330 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 329 0 R -/Annots 331 0 R ->> -endobj -331 0 obj -[ -332 0 R -333 0 R -335 0 R -] -endobj -332 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 237.19 687.0 281.07 677.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 328 0 R -/H /I ->> -endobj -333 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 404.65 666.0 459.09 656.0 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 334 0 R -/H /I ->> -endobj -335 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 331.6 295.777 401.86 285.777 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 336 0 R -/H /I ->> -endobj -337 0 obj -<< /Length 1415 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasIh95iQE&AJ$C#ek*`e;QqTH8M*Y]=S6PLBY9Z/^ApUBh,*Q3L#ab?0m(08>O1d,#p=)E/'nWHlVGCAo[d'44GRZZT0XCkHpnB$UeMIuC8mr]n"i-o>WIkjk&4'7G=q`>K927PCP@@No!M$['(cuTn]2k<9!V9kuja')oSk3]dF0GBOmTTA-1QZp38/QFu+9>$(f6=bP83!Z-[U(23XA+:NW&f+pE63cU4pIXS;m+gpFYV7=WVnR4pOJsdp4R:KnG9TTG6.IC6HK=hDa'7k%UIAWqaWm=D9f.XLKrrcf4($P[%D"rp[BN;&?:-RZACcMuPEm\j<*l,e0E^]kPAdY83[!B.MOTI_8etE1Nr*G"fME,=*%lQ"R*IV>:/2X?)ZeW*1>'pA+1jFH>2DM6LN#KqJlIlc#5/.cGd1*o`nU7&Te!ia97e&L[B@TFUpi5"`m=K6!N>:ig=*C@?"WouE]d%A,uGWDs5QTt-#VL:Bg!6-EG/U]L2?2M73u*I*Kb92gobNGqtf$2gX)h)L2(g)^pb_#o7Uua'RC3rn1=5,3s9mMXuG85qFN.+o*"AP1a/FNc''SDRpMg-J:\6Dn=4JG&O-Z+Z&[7Q"=LVH&(XZb0QAomBXs`q?a]4,X3WGll@$5I87'Tq+o+GO45;Z3Ac#"JH_TaQ>8@C\A&c>Ah[@qhiq?g(R!/db%#l8^lpfY%5P4*uj(L2M(_An;H@RI%/eZJ[n_cTK6M[K^#f(/4LJ/oX4Aj=$eEgCNV6lXp7U#86$0G`&jV0`R,[PCXG%394s%E:"2J26*tMW)';U/DPs17(:"qSVC99p:rn?#Q0iAUMt-^DDY(+:]r6^1koMUI[b<#"P0GBXoc9thcRHUAZ?Nn1dcZ.Z"eXW7k#:$a,@bEY1t)g5ME?&F][Zn=Nbk7"4Lhc3P^i$1Rj7uKt).^^^@)m9HJ*61q.R?hiD/BIog%#!>t%jdK#_jFC,l#5KH+gt,[@d)F*V3CL>6Y#=U1(_*JXqIRAg?1@?qh:9uPF3h_Q[oC@a?PnHhL5Y08^$rfEguR56cB"j0R;u2s9&T+D@^JQZM3>?^o$@rdrX,N]qiW3I\;hGGh43F'O)uI,8sOf;OKCLQbU0NOckpTsU\7@g3",Ge_bs_7QuO(*^Ii:*Zh(-R](W2Z~> -endstream -endobj -338 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 337 0 R -/Annots 339 0 R ->> -endobj -339 0 obj -[ -340 0 R -] -endobj -340 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 138.6 222.176 207.77 212.176 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 341 0 R -/H /I ->> -endobj -342 0 obj -<< /Length 895 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%b9lldX&;KZQ'tVq`-49T9-uBL>Zp"'2::W5F-q(M3&nh7me&g[cG;6st>lh3Y6"776HM$W_lZ@.B73N<&#c4RjK[pN_,5;g>BK$eZMA(QhHh;A^<1,Aacp\psDjL6PHX:R4XNdg:AuX*pca0)spZf:ImC"X\F`21OZ?Is7kSHk+6?oaGIhZ'_/6!_&WaS%*]CesF]5aThA)*aQ>IGF_ah4V?>1`XRC+L-sR*%VDYSWXGQKu]Jg!83sH9s>6rVG\e$dLhl#^0]DL5?$R$fE+2#kQ+?+QKQ4DE#.L)"P[0Rtkk[W!cOMn(VTCOT7k(%*nGKG?EWIhHu5_@0DtuA5l5G'7c%@PEBiM-J3*rET'[LLSTj*Ehbj!e)[ul3j9jmA>d=\!]\/.Da.^8],56?c&9:RZSL%E-cXaY@.pN.@W@0#%X,aq*8$`#=8n2jN&OB=PE*p0F>if2Pa#+"+FVFrl#kXX\-PC5L#rH,$+/eoA]45nW,s7h)rZ-.24;#'=[SaOehPQ!28U8XZPX4][,+ph -endstream -endobj -343 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 342 0 R ->> -endobj -344 0 obj -<< /Length 1837 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4>Ar7S'RnB30`4fR;-B$mVqXQH[(ll^^eeNfW!\KLBUbJ9V%i;B)"uiWM3N6596Q4:5eqG/T$)=14S8ODc'sdA!rL&GXLC.f@X!G@^A>_T9Nl$J',3ooou#e\l=nSEgVmq@#:N`VjITL`H`RRrC\@MH@fd``#N?jFRt)*%PN@g]JdKb+HQ$MD8UQtlYmCHKX34&HSp=NZ7S3\UrtmJ_f<%ZelMtpX2-C^_Z1`uqN2jKB_NkBgp=g@F%hJ9A4Voh@k[B2rHAAMRN;%[LCSQIGF3[l:_].B/pr$)'Yd?p1)"#AI[,p6!l7o6):qtil^HsR(qc?gaXA_)3oBWe"qAKcAnR`)G'Qb)@/rfbWTKo2%h00EF3eKH*[;./U263Z+8U1L,jVK9V%3SE\&&?7L!aA)/4D^Sb0(amC#N/2u'>N3$G&h1&)YGE$1l;/9;7Rdotb9--"Ig^Gt@+S[R^i+F@kI,*D@=j)E`\sRfU=p5*.*To$qtimWauWl]Q&Z>DX(?Rsn!9/\0(6@sq96V//b?VYk-o9,XW\".Ha*O@"qr@48M4le1*s!q8I&q>X'#Po!"l#"n&!]$ddoWg&MNW?0CiR*nPX.N2t*`eV.\gpd*D?!2EgIs.am,V@tul,cfAFu;Ntd*RT7i%4b0qNJo)7KEcUi9b.I\>V`(pB_J%E#qG49>L."1$VHJsgcK=_jo"0Ie&I6ii4#DPp.V]Y^$"j8-[7e)WQ=EBotsJa_oOn7':@^M7YrpH%o1bck-(a6BjTQOHhNft#c\3K;F"jF@lbf=q1"N-5)!P/RLfo-T<2;7:jF2$Wf7+%*+Xd@Aj93:_^f=cG3)PO/`eWmKHrV^#S[6bfu+kOO#ePe]"Cl[BSeeJV=MBR0Gd\t:g_RD>#hA)tK:HA -endstream -endobj -345 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 344 0 R ->> -endobj -346 0 obj -<< /Length 2418 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat$:?#Sa]niab)^caM?Z--2pA&.i+j+k(VI?dAVl^30p6CQ=4g7t4Gh)Vf4K(HOQ/\@3o^chrUR!<6Kn3j="`hJ5;3/eULu`PhUcImh_g4@X:,J+#"kGb9do3"A6")3l4)lEG!uPG70GSHOpEPrd8ONuh-hfL>DYkrb&H&*QF8=W*+Olu7mlp3.?jhmCV3;S9dWauG\#9F2LUeTmino+6qA@rc8TlNKJA1rr7A&n\3*BsN*/1iep9f6U]-i8/kd*iK!$A25g;B9Xeouklh[O10@c(>"V-%Ed*Znmd4Va4Tek\BL<=rY4l&r"0;.&jmk+/LF>ZdCJ<:=FXgelW<(Z*BNXlDZ!jF##?7=e[^:?H']_\4G/+B4i!gFm1r'"neiVHeB<%=EA&RQ20U\^HD*]b'&NVl"`MVY:V_hk`/8a9'\]TA9jVaHAe@I,BCUp)s;q>uad[4X*b#7RQiC2T$!3!3?'$mc':'1G^\%'->8#MN$bl5[pelNP#Yp+#eRFVFkT@uO`(B'GdQfc[N=ZUlQ!)=_S'%.dNn%cQt7+C(ER820<)%3nUUCO2bQ`*#_'eA#+4l7"AfO"qp,jN'1"%=F.L^b&EQkI#Q6c9P5E)+m+!`k:0pPmU9/\X2bCB5&?I0J.Z53j)DBLdP$ZqtoTT42>\dkWCCD.<4i(WYS^E*W#?La&^2&\4;5.iZYAja9]T=(6\_V``1g7$MVUWLTZQ>*jA;A>p_a*[*-dq#c"aRhJ$Sh?Y1?rfWd?B?qO-_4rEjBk-eH4ra;2uP6f!,gGlEQL?)[+%rP>h)f#GgIdcg27rqD7&.P:PRT@4>#A%`MKF(^Zh&[Y6@L&P16Jhe#/u!XkHkh+24@3&sX_`G;gN`a@@>]O)L)GX-6!om8l_i:]C?2gr?mjc)G/h]dtrtDGCHW1:^[h=H7im@D;f$:!Ij"pKu[[A_?_]!4o9@jl-\1Is0rO"6R8:7,Q[Vjf&C3[.)n=O/i(bpJI^&DNVuB1>t9$/>=Sl+5ndF5JSar(%Xf1+mJ[r$Y<3OP;A"f!PDlC`]bQB)PgF74F(`$-),#mqLM%I09)n55'IaRs+RJh(KTpH?P1pEkYn"(]"[q[2Vu)P/M(qpXs>;AP09'p6IfeV7VUr)JU&kY'ohsqM29HWqqBG7af@!rn?"+f69h](doX0'6EAEk\[eZj7\e"T@e)2UE'rCC'7FI+OpunL53>B38j@cQI/M&b70rEJm`iqVO$mC`8/!32enVq_PTf7+GA6;m=2Vitn$Z3K.G)A4P*u!'f6S^+k[P!9fh4mU5YuaUe#+IA)(dme_456m,[ptt(dKn#,/gEL.u@`]<_I$h>"b[ol5B1N?)D1$k9&1GGWi'@M\;:S3XMS\%SuqYH9"\XSO+4@9g7#,$;G)2#lEC81R_$"95c`#C*puEE?*@)^:sKhr.AXl@%R#h8M[@L]b5-]hu307bBd,Ue5'FKWd!`G0)+N2F!L#1o*k9`)rIG5#N>/g5S?^P$A$VI.t_`*~> -endstream -endobj -347 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 346 0 R ->> -endobj -348 0 obj -<< /Length 1287 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK968iG&AII3E-.4)O^[7gLXR<59RZ+JP>9Y,PQOU1&n?eq#r8q:PQ0JC,ml>#;Jr&IGfBh:p4_<5+'7osPH,Yfi=M-m>G`(kgJ"j7_]SS=Jp]6D3Jmn+/U-'Lq>4E1IGnIp0LRY9baYeIP)E4;R49i%cee4'E5t-.K-bbX4^he&5t"O?n\Nao`_@!fm`gsHlX?i3^W<4Vqoh&n8gu7#[Xr6uWd;!o"k%;VjQ!p'*VEPKCM!ak/sia&R@I0?kNZ@aK[jPpm%0I*V".Vm*XgOJ;M]1P.e-n?\2fqWe?4L2+e_;d%6eOo:DXSJ<*US\:RS=_YogD_s6oCJ$mHq;dIpf3aLYI=jYK5qniI$E*J@kr@.h;`*R^:GIL<8Na^AI8/rQ3fQ)paH[i*Lg3tTZU0=!)XQDnC?l8Dioq3-*D*:c#<0:uuo5*s)6/aOtk(ISdp+5(J)8R`<6h(4i<%p3]GYkrbhO@0>k0n/Fd+a??S*\CAhulr"cW7)U]"7*KlBmqLZlG-MMT#]13j&Nh9Z'dbpSHTedK$4A(HqsAT>ar1kP6oQ2/eIo+T?9$_qtbiM$;'9WnNg1CSkj%AeMLpcK0]2m=G'Q6?(KcB`e66!^N,4U3\%(-3=%7-P9s:&Y=g"@?"VHmCL1frIdL3cgZi!Kpr#2s$A+J]#`mY#=JZG!r?(e3VkKo5>P%KT8kAW)LkHI2j)ieH2blkr1PB++7t`Tb?UI>:0Z76)_AA@]+K8X6X,q,md);oCuE`.rU25ZFY+Bpgr(l-T%Tca-nkZ_-SS(FRnVUh6QbeOYB*ViF!D:'0eH_\f^TM'Ur9BA:H;K$gir(qPQMpAj>5-K6'A\Vge_ggiGO~> -endstream -endobj -349 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 348 0 R ->> -endobj -350 0 obj -<< /Length 1932 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=,>Ar:F'RnB3Yk$41gFrhZSR/,KU37V.XZH?df`u=LM,fV)g:6B\ec3?kYQ;fn@dZW_YM@VrH5O:lC=3B^@lFg?YWiZB4';BnqXNb^Uq(h^@qR"G/$g(6n&1/W%@j&=b0s+=!S'IWEQR_*h0ItG?:+EgQtRq@gjJ\b!2dSOGkrP0L50nM?&8_>h\6jq+WH?/fCDjJNNsuc7k9[OMkG1#"N1)IM$9g#;E*_WT;UbbZN(@jN.i:h9V_@q(9du0`pbs;VHK%gX9f'J1^FSX`M=L#%QJqDQ10lAo/r*".XL`+e9d7eXSSE;OB9UktG_J2)gpn#jb'Ck64$61ua6,PqHE^t6piP]r,KM>WYklk^"LL+[m-o,CHpR&'o"4h\M=UhDP9m;^s&;Y-(@Sq1KSe.s3,XM2/l**M$^Jf#9eUTdFl!ugfJmaO"(fep]0A%(I\p0nQTnrh_J`(0qS:*>DcnU0;IflLjN(0lAW5mQC-1o99?p,p?'"0lBk[05"U@?Wq``F>dttiOb>%'."A&"G(l`l-C4Krb""QA(^?\MY\,!kb"#m/-3J*fJf[VDb1%<;Y#&rU'rX0r;gFU>-[1#Uke?tg3,U;X#KMZ3U7&pqn6#7:1D[aRdj&YZW`p$%!+QhLiJ\Qd2>#oV8h\JC;UCp/UV_R:ipKe%c*$/?Q34)l#Q<=>&:$3+Ee0mccDNK?*i[$G6l*WGZq88;*U="Wq]&$Rcr%3_DDGFKHCnTjHjB3g$bNS.CiWYojuJ%_OCWS.6ng5T.eJ+)^r:V'^LC#2^H#722$l(:=erB-oNbE+A)^YP^:^R&0rLlZ:A!G=%@U/gTk(MoSM3-@njYtcR(/AIHi97P.k)'Vs^!*E2S&F;Qch!#`_,E$Gn0:Wh$C@]&,8pCuW!@l23US@VB`3!/SfGlRC.+d(G6_;m[ENeChnQUkgKQ/\?8[^Wo'-)XH[X0HbKi>RBerQQo)H4:fuU.1;;``Ar]CDcR/)ibHKo+'Q78c^`2^LS;V#GBFKPKeG>684@*PdXW73gZLA(A@U%.+&`%W7!Nj:8a+jV;VLhfDUTN-7cSL8DhpW.MtCJT_E*#.1JRt2K(F[p,%:NJ1sbYaXlI??7DDd% -endstream -endobj -351 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 350 0 R ->> -endobj -352 0 obj -<< /Length 2292 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=-997gc&AIV:E;,N$A4)9LSk0hC%@TX[/S^r63!\03enem=Of7)PKDtV*6qSH@PW*7W"J"uj3V.5s<.je2HH+\Q?'d?-:okmB(_f`$]9!2u#S#n7gBD`/IN)Ni9b2rF($tmiH^^&&LN2rk/&@B!7"&5@-<$$9F$*OhcMHqXph/@!crHZYsa"?cn_e$bq4Cpp]Y!]\_MZELR[s&fMJaFi2-7M:.:p4sL@qO-[G?VpgjY7dA\"SR"-_?^7$XitK,tn(?h')bb!,N[Q-O\JQRQ3503e@ZDT(]:Zqs+T;ecouD$qY*h,"e.B%VZ-@_'5H!uU;Pt:S;pH!1'D7UAH\^gTn't*k:J&NLKcj=NT3kf*f:nXQgSV=!\<7`7O4gPU>.krMLV,L+Nm4\Sm?Mchq#cqPdRRfrejU>ljj^7r@j\-nGUekL#?#L`Y/M(#W$]9@KsSnjc5_L<\>$dKAu/C'DmC5gf-)I<0^b4EY"G65q5-3Hm]<$Sr!9ZJ;skP%^N@>8&7hdWWQ=gi^JD.Ba_0sGrjVoR$ub7?1UFX2MW+(J:HCc_^HW7dD/CCm0"VJ!V559A;I,nFk,=j-60+nCLs2G8\Cs<1lK0bH7?4d?t(]mBsS?Y+?a=&[JQHK$Y=>1_?Cs(U+Z7=N.&[5<*i8r.%Y7aKlYnX'DiAu-f,]ci!_lLqnt(k5OuMu)aXWgCkO]0>.'L#8@oBj61sQ4Y$0Uo?em9DDi2H5J95hj[&hT&)](ZCmTJms&[WOP].!b@sn%N5F5cVBQWi_E%UK!!PA`s?/W!0\d"o;*4:rg"@nl,m2lj1\,EK3]^K>aM55Z-tX?9huGo;I?KZh/KM)8!EhjJ*>*R<%1L]CFgqN'!5lT<<*LarAC$Ojb:p/`oAU`jti'WnY4t21/s6bYJ,u5A(VEj;qo\./;hfF@^S$$+q"aDJ.R_Od7t+7FiSA[&tHC90iMkqn[5ZR*7NaS0j<`f4sP`QYmY-5$o&B9-,R37p7F#Ap]4$ln%TD:IjeToV?G)':gV]67lS!2oE(9brqjaH>B';Z+UeL&Bqr__AZn(,38-21D;OT.rV-r1HDU(`H_A60rS_1bSEebKebQ\286HRZTVmd$s=?6,gsc&jk,JKR>Dn]U2c&3KfW0N;MBc=LjlUaa&l]ZX89f+jdR%O4E"9J#'P,%oo/Plq\R+WP#j(d5cB'd=e@"!]`AQfe-:g^dBESq?urri'(ipc`R_\VsNDQ!RNA'jba]:SA@K2N)4`YBQNM&h+mU23PE(tqY=rRtG-Q-F8Y\%:5>@MVZi3P0c^Y.aks-5Uf7XZtW[^dE$=MsgJ8^)tVq@'9^D_9oiql6AfGF;96J)55Q>#Fd@Y@r96qakWni*dB9W3Q8YEL6?ZX/tS_RG["isP>4,`Boa1!5(P%pp\^J)5R=oNFoZ4"2>SsY]uI7FX0;@a@X;SEJ -endstream -endobj -353 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 352 0 R -/Annots 354 0 R ->> -endobj -354 0 obj -[ -355 0 R -] -endobj -355 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 340.168 516.68 409.338 506.68 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 341 0 R -/H /I ->> -endobj -356 0 obj -<< /Length 1802 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatlQbAQ>un=Hg;p6#PL(l?b#.=0W8)`.`ld)J<]FUtiJ>A@`s9@7a2UAnOlUr8Bift0Zb"Q0\Kn#-(tIeE1uB46=BfmJ2_bViP]/C8n*/As+q%5:DlfmGmYrFT'7VR`8R-UE*#o.+/s#Q9'4qdVPafo[YM7OJnF/@OW6DNrq[P`Ufm_d0OWooio';//X^RGoo7?_dgY`4S'o\LO*bhn.q-4$R^O&5E[S_95QH][XnT[8eh+.'i:9a8[>-.(0o+H!(@cX9h1L[JTol#VeWu7a5Pu+*btF?"Gqk$rOCFIBO6@&.%8trg7:n(Guh+.^bkJlP+3tmhgnu8Y'3e1\5Xc0,`qm9n85[UJ,nl9\QT_1#7+1,i_\2FLGD0_3GI)+8F@uV?PO!j@Coh<%PEH"*7u"6@S=rVBc7t8T)[#7+nEVr["Yna%do:_B5JpbMpQ=J(\-j>DTT>7]/0im'f%&lMH?DHj[<62aI.6IM\6FK_1H.lVs3%R[VkCQS%(N_"*ZfcXK3EDUeq)EJa4VlOBfnj^I$5GOCGsR+9E**pLU2hTsXL,?E$iP6NPPt!f1jK%M7i]ZG-(F.h.4l`X9*#l.GiIEAPfd?^5&YO6@B@qB/HsFc5Kaf4!n$e+mWuMWmtD/U^i>XQu"4VMBIQB'G+?+!.[NB+7ED):L%k.$0SQg79*P<1?qeX-;$c_(D_6]bD+mL4"Utd5`Qk2e%XGqEOW),ISaafFEFP]bp9kY3p:jNud!098c[^co(qGhoEd./8MB2LZd'TAAA>moYZoRKMiMVS]<"N.'ZDPY8Vj]4-EL+dSoO`m7i#2re%3W7?ia2II!94hkB;RtfZl/Qr5IP(6KVpdR*ZPpGcWoT;nUDF1Zh/[Sl"6'Z"CA3@I)=NG%^f_PJ$F09q5)$^!Rkf%bA$L/(hOq3^q=O6FSaF%>O8Kh_jl1@W.ohG$DjuLWFTXbY4F<9$N#]_kQ[GZ('Z26T"Fb#JKJH@t#%uSK-Y=,=]0A'#Tk"=+/W1.G#73+C9`X-k!/ZR7pQ7bZ>;*GnAEnUggO:N\VCt5DLQ=o(Nm";,Of%6I%J)XP76LL;sH\X.sRCC]$qB4?ulGO2M`Nl"tU_g[`p>/ZW^=8mgcZVAYT5eYqnIX0=h4'Q`T/ti"GBk<]X(2VO%iiia5?Wjeg2:R?-Qf5N/_%m>)m-*-4(k"H`WRKg99:-tQ*C[sj"u?^%S"rDRf,=Y!db`Q*e`c>9if"&,\!`3kC;Y,u0#9njlITaO=)08.*"$7e.1U*neDDFe-uo6lKhR($AO-mc@2(\SjU3d(G$"2cf,a@FgjGhV\1(P:G',W2gZ8HDG+r]nAT]8uq[`rc>HN-k7*3HAohs(r1u!0q91NpPhe]rbM9iFPG)ks%=5V3UYK5rp(_l;.9i9Ani,.>p@?GLoI`r<,KDlAI[jbn0u)Y7?gaX"`Hhu2c[e8O5$MCmEqO/7rrUPQL>l<6ALL58?QU#`2g`!lIUPg$Lf`03c3,;*J!JC0_(`p7j7G!K@aS`~> -endstream -endobj -357 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 356 0 R -/Annots 358 0 R ->> -endobj -358 0 obj -[ -359 0 R -] -endobj -359 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 240.6 477.24 309.77 467.24 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 341 0 R -/H /I ->> -endobj -360 0 obj -<< /Length 1377 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D998*k%)1n+(jhYRk\@2S+53HUBfj-(:nX32RN=Sr-?7YB;Hoa[T\09N3g)'tEL`G+MHiQ>MpWW*tE7[!](,h8oV!u"MZU^g1mYq=fm::ES+tVJ!(?5+On-(G+7T*AO$+!$N:=^^C8*fNe&3lK$m1/qt0,T(R<]*5CC1*=@KV6Q?^UlnR8d#hD;#lMc53ef>bQ#&u=!;'8eJ$&na\@844%GiGHc>C$asmm8;C-;Hf+U>DXhR6q1P^OH#TcU<&"8HRk^W>o.c=S/c_JPPMR@V'tKpQ$bnq8pa@B=]mX=BtrZ"0o7@=8Um=n%HR?G-f(_T$t28&#.XjEQ>ClB(TS_=%$>5+)PWH>lIF)FI5KHf-QTIcFrmqVQOa^!Lk]>/Jn]MEWA3R5CpUS?`:Pb4N1%3rdj?N0Z-T")43^W=Mc77uo2pWLp1C^[=VfaYGe8F\$W!q;5PrWHhW%N^O.uCIlUM_ko([41,"[HC[/LBg2rAbC%$u-7mgC:"XaiMH0h&4?_rAiY=f<@hQK(6NVEc3./899QrJHo(.1tQi:4KPe!S_5Ko8G3eUKbJu?S+MnAZC`BfY$EHi3F/0.>rm<3!- -endstream -endobj -361 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 360 0 R ->> -endobj -362 0 obj -<< /Length 1722 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%$997gc&AIV:&:CGnG.8`q(L=D'Utm3qH737p&dJfI7GDQ&dA:BW]g_sJ7hTB2[\QXV$YRERk"3kFn!A5/O3GEmEh2=Sc?6R>fQ#l**?7J_$lD9mmjp9XbOj\=kGtreFM/nCLp:R4k)cdi7-=6h]>1O&Vn^<6j_DB<2k5B#:^@O\P`R(_)jJ>$;+f>1rn+D3TSS7'G*,Boi)A^qd2eIG5[46WYZ?@BU+h=BZcpCH+d0JdH+k&K,<'65q61YBm-iOs.#PBuWEf&%Me]2_D?5)od@e&l_RT8KYEHQ*gmEKe+Z!*.Zg<^+8rb*eoV23+6UYS$1@?J4&!,5V+X0c`3N[*g.T$g&(22CY7EI>_mUTR-"T;!4?0MJf,-"rEORf.:_nulp'6];Qdo=$uZLLX&lU+Ol/:$?g*]:Q)[VcQQ7<^o[0*#Ujl-6*,.:\jtoSUK!!C0UiqhYN/aS//,$c)"&ZUnQP@ef^Y`5[!!QT)b-9DZTcR-:oWN\Lb0[t.PD$3KT!^WW/=1.5R8*X).UB:?.K%b(gSAg&&htlQ`@,%>O:NoQX3_s,d([g&sk@a2e>On&5h'FgA8bJGRc.S%DjTY:W;;'6YD1]6c[A>o2+&Y*XkOYYaV+kj>A9m#>\Zn0*30f?F=D.L@#q*`iA!%P+/E]g*/5!E2[Vqa6cZ=##..NdBnG+_cHo.TZZ@^,OTbD'qjE5lbMO7s6pR8W0b8f:tKQQU6Ge@Q2HPXc8eaqE#5a(To%]h2F/]S/R^s-/XXkLk])QJGAZG_T4qpa=um-9L$;]VTsB&3)%6Z_Ql2qI)N>@C2TD4/Jgc485ASFIJipl9'RHX4O%jP=-6KaJb.F^rRHj[Q=KW@hal7Gt?B$-lc%OX^lha$&-qdkYSSh6VhV@\f+Y2DQg?=OR\jbl"r$l>aHRj#B92P\9O%U*"P>FGcl;j!&WpnJ'4%DD+K030MD\")n3e\T!mUH+QtYObU52KSD2$KCpI7+'7410l7U^:VS#)?c0Ktm4po+=R,+4[U)C1XDC@=&BSL6,m=)CcHA:t(?4%2MT67:4Y$O[Eke]=C9%GS<\EgrS+2ZL1X3Bka_p'RmOW<[N?KbFN`rGLn%kg@t/X[=O"l`ZD7?SbS[q7m[o1#;8b>.,Qib$lP5tu*p/C$`,bYV#Xf7_A%rM?(o=r_<5(sY(q,sfncr4CtJO^#ZL"AfW38:%,s]5l._'Ll0(P"rf7V#+$k4mXB"WS^>8TZ5SFHV2_m@fMO$%9Lo[KJhB81L+S\WjB:*g+]c3VJ;a"X\b1;qF,UR=bGZVol$GQ\@S44mE0>kYF\tfQI:B"0(8dWrktf7%O"q<,cOtZYYr?kh#26eIb>ZL!j`l!(OtX;E:#S&QF8RucaO.n(&c;50[a95QR[&rou*b)!=_!p%FTakM,()~> -endstream -endobj -363 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 362 0 R -/Annots 364 0 R ->> -endobj -364 0 obj -[ -365 0 R -] -endobj -365 0 obj -<< /Type /Annot -/Subtype /Link -/Rect [ 154.932 500.661 209.372 490.661 ] -/C [ 0 0 0 ] -/Border [ 0 0 0 ] -/A 334 0 R -/H /I ->> -endobj -366 0 obj -<< /Length 2066 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasIi997gc&AIV:E-#\OaG/+>JaFMA+p$+ZJYE?hW-b1Kg*S:JNZR^/62u:%iaYNIb$nd1k7]iqIPVrRq-e^GmSg\(!tq]dqn$6Y\-l@=r.V1*)SnOl8=6U3Vq']!mpE9T`^rk@ebsq.t]e"3+tY_I47?q'CM=ku#6'HWWL/a]&$efsl/&VRn=RID-b!u7sZs/aedcUc1#d#]HrH[mhJ0n-at4goPDlVJ4Ronbi[Y`[\RjT9Ord,t5ISgU36jhY:`"2i$fT9kf<_&rejW%Ob-^t95O"_JC'>"D(DH@9Hd#kqb4F5>n?YYg_qV/>mX#I521rKU(q'["q#-Ph9L`F'\3ZA,e9U<"b)]4,V7-E!3`f5]Y1m3HfdI-#8^@(,%)cH9,AkQ7i2$7G@`fS15I0.V9JFh'brgf:9_8`^E#_g:G_<=gG\H]ok`Se27/p4kq$3]k_`;`/FXWlL1_/b1)Y;g"p5%uq1+9]:H./TFQ%A%&fpi27!i7>Xf>cb;1d5Cl[q56(=bcOWfour>K[r/]m=jA4Z2UdeO73b:SfKUAn2#n.8i`l'c^ALc+%ZZ`TRpFO_L5HZBSk6c[-qZfV8GHA#12NHXA_I#O:JJ_'At[4RtF,iU%mn0ri;N&h.b`,csR$qBsN1=bh$Nfm[[l)!^s0P[$nNO]2q_T>(WL9q`=Y>K6b,od%WdK?`_9);l&TF78neKb5J="LXCAj>X<,SoNBr2U)hK=Z#Lk-3*VuP$ic$[p8Qup^IpGa^ucpIqB:9U$8#4J898n31HZ\qX\*Kl?)$Q?"EE0F5%[im;0QDXX&78@<'C$+lH_^V<2c2Bf2S7Kdj_VYGjU0Li)^?FW;apl*4/*Xr,PK=RN9EieSCKtDn>ab>]-?K)8FQh3dL(IAh$@k7UBQ\D_;_8Uus+3[)At9S`cH?K1hJ@o4)m+m"HcJKu0g67AO773-1r_2ST#UTNW!C'Z6]?E;;DON:iI"o82VZCtgY"jh-o'Y/Y/be&+OZtKj@=GWk3I<=q2A647U1$u?d\(g)dE!+``^^>Pp^I8]p+kf)\Rp#I;1;p.4e"0(XAZq<-Bu9ZFZO.m$?(jWC79u@V(lqs!S=J'W?]Uf@PS_/K7DZifI^2:9U-[L[oOq;!fj,/hTbrP\l4M*aKUEAJE\W45c(d3GYb2o!Y5;7AHH@@GBYK`fSXecI013rCIQ,bC`C4l+c.F8UtX([Q8I&c*"\TUU_AcUcj9G\+=6i4,MQ&pYlebh65?l2)es.H05f7n9InG'-.c)dY<.?_*t>[7LBWN+Y-fr1O_MqocT>/n?n=EGKi$SC7P;><3^,f;hi*c_nj5O8>t%P]?bRbMOQ6e=F"EmV%E)iDXiSC&n5o:%-d&1fFX-./$;';[30rNk?_R,AP/^RqIlX2jYrTK"M]4g_o_]f_G@0I4ZSWd28IAJifFFS)ZISsBcas^'Dd&%hJs9+>U[T^GD7cg&%5?-2o1tYu,kfN[ouB?Xh:>,kPXbmlqB,5&O!=~> -endstream -endobj -367 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 366 0 R ->> -endobj -368 0 obj -<< /Length 1408 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=+9lK&M&A@sB#^^8`A/U5g/8:"`]#?;K*XWVSXkNq0;76HsoTJhn6.,_HPXoL:KoXV-(VULEK5ZL^n]0JJrc8i$0oD`3Z\bHp-Ac4'T0ru,K\J(JBbp*IkjP!5oLdS=X4ui$c;R\12cMOCn-AgNI6;JRVjou&6ri6bl8oP6;KRH]dBhD\NqI_gn`bYcRT8,KI)E>c2E-5/n^-t7&65Iu$rjS=+BcVCqqL>,B_VCmN@^LN@!sn9aNTFfr/D;3BIWf.V[UKS/a#c`3mq1o/7n5X+L$O%'Y2S+j8/O%Ya#jg)sjH`d>@i?[`&gFm-q>1N%$$e(Wc1X5fbKBVI!>Ri>*iu?P;5F6F#c_g79O`Fmr_hWMep3_@PTjkQ>4nY7-I^qm#\Zlae0uCKOih@>_)It2;7p,a!b=3+VPe[]]^/=K3%8g8:u;nr<2r"/nXbDl>g@c)\PI'B%"h`b#FJnh!FerXU'^-:!;aondR,K[j18NX@?XmH/W=B\.usC4Yau2k6>IDg;j=$gKmNMT.?d(7UauVLS[!H0H^AK$gtf%MM%^7"*9WJ,-5nI_8E^*3[":(h)i!YOFV0X%%)k'J]Y1`*.884'KW*Gl=E7q\`a(,eL!\e&;^;sY\&qDacs(N9M(P!`eTl];K_eiVrf=<,aiuYQn!;gs3g)-!Vl-[ct'YlBq1r8mduuL.X_OOp\4O:._r3@3]*.g>K9%iUs)[j0rgUdW9ZBF:Vt\@*0o3!@?.IkhdRN0COql-&=:]9IokA@+XWG1`M"oeA.9Jeo()0N_o'lYT=&&c:Vph^_r:/T>(Z&.CfS4X)qbu4-Xl`I&5\a%S/$ijY9k+,`Z&'&-^(,2\s#R(A%-EY!4ShjBhul0A,"M06XeZ9%a$&)IAH]Ec]DnRQ;`9c=F7'LZX0@@66#%0Ft24Ailg6L+LF^9okt'kX`-q*f</W\Duh`Nm12%W7h*Zq7$f11plieB1ApeM&Z/47rOdQB'_V.!t.3FVPa8Y^*`_&:50(GT[Xk"-!:!Rf`J2@~> -endstream -endobj -369 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 368 0 R ->> -endobj -370 0 obj -<< /Length 3038 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%&D/\IE&cSA/@I0=kJV;F_jJMm[=59KNTIl%u/W0.nTP`C`,E"b!X>`<7^R*@W3CBngB9=ip*g+@.iK0S'oA0#_it(Au$q.=EhVAV:rRSZK:anU"PcZL4UG)Dr[c\C&>q=fI1Z4AIs*PjJ69$(q/h?+p).=a+VaReGU9gTE!kr=tlIQ'P@.2mW.6ogH'eg/Q'C,O4I2o,f@*bEeiCSfB"'5pDK.cFWBaQ#Yt#Oaks3;TFOklJ-$YNDGulocRdo[LXErR!/Q[4&)E-0JdH[Ko\%;p9h>]U9_1baPM&7!JS"gW&lA"t@,6fe5.U-XlfAEp\h0`;7h2]LbWN@mG@),p@=o4l=`5`scDP($Pj(0C^0_GhqmHWcDU4MQ1"-`BCJV%K^5&fmdfUQAeV_86][WJ7ed@k8&nfS3)[#,Osplgcn!sH$PFXAA]$MG#U5e"5aXC&_>RBL3W_*=?rCSrp,-+C#Gg#k:11C8*^YfLn@q\IWhaGQh_nVKT\LQ1$^-?po`qP>j7L\\nGnR=pGC:(]G7:F2)(`uO;pL?AN"&:2;Q,a2PQENJ,*a)DZ(Yon(Yui?0YH$/T]f-q.Kb;YO_*4`ai>?1FHD::6Dp)DmO[a09f>GlL55R"h?]cs")ftk)Mt(LhN%]S=a4Rr,S4W.[?1UjZ7O!mLJ'=V6rVeKaR)^Clb6q_6QWC\W1IgniCV@FUC>1mqLXC3#-.BS[)7\l;UDD+dV#nC/HH9>^I#L"0\idS2_1O7Jo?_XtEe;MIleSWnHLGZAfJ1Y6DMaAjRil9(:hdD*)n4\M5%poRe]Tn>XeS[I"p^pXT:qM53r$[@'S)1Q;\&X0LqtTAWOUGUa)^7&H_;8O"PKQS">se%VF=ofB]a8X_VGNqiij%jl]]eP#X_;@I8S957X+4>Ki:mRk#K^2$s';L]>[6AVm)YgaagXn#UPCar%r%6Bgj;sGc3`>Xo,d]RE=+T54(F%oJW@a%9pQ*k@80p)D,Y)*FN9Vg`aY>P5!qr>=3UUu-up-K`F,'?=3J@9AlWeU'QWKMZnQJ2Z;7;[?UI\a5n#@M`KkAjg8qj!U;--O#]+`?$>`HA2\0gH>CbO/c>,GJ%@hphFYi9&iSnjp^ES3luAhT0a*NNjahMf?$=(EM$@r?.lRn96FYd0O46\VOuAb3Him1+AB-%@k_`OmiYt(5nj,-J/#[CkRT3R2Q'i2-V9'4EUemcH9'rW:m[DD6;*V.AThAO1.ni>hQhKg*G8C:9X\m2CA179Ta+`Y/m4K\(9;8b__.'SrSIS?Z"\qhY\6',p>;&=9-ZNKuiXEJaL&88m@WaMV>P93<3q'Nt8LIY^P7n@#mIdp2OjNCZS-%3lQF!.rn*-M[$3qb[]3m$jXaJkhSF.)"$='rfi5uJ=L^"MMWpU$rE-Qqf\@kQE]F'/8l!)0?f!6hBKD:c2X"?R72;A%@QfaS460Z@W4+)patUn2U?O%\>k-ZbR%k`R,<<(K>6l34[V^'7#\s9kTEZ57/QBi+BP1T7;/\qkDHTp;>k3?J$t3PdRD[T:hD/'^E[\Vnq^_([7%+aIbYNueAMW-'Uu4@q00IG30RrXOiQ,4NnUZ4*77qqclTP?Cb#mH6Ur']=.XDo*^%>"i(Nb0c:,j=gu2Q/,N6=B#A,(58'Tea[=iXlBWIIIV%oiSTA#,OkZh]8b-sS>A;OdJKYJ12n\uS6j(9N.WG7O4aj\A`sRF#",Lfbq0=mt6s/Rqnod)65A..PH7V[i^R!8dLYIL_"KSuJL]C1JdgHGSnC\+4gOK9_:J3C&$V28h?.&b*!@8`8<&qfJU]B]9KlO1t!5cE%c+>K#aBd^036Q)\k^/o:Q_*o1qh!];A-ZLT#=.Sa5\p)4D2gQXj4M+=ihVrPl$ucT/8GR,/P]0!(U1t:HWOtL/(ksYdg'_.p9KfU$uHIW@o35nqHDSVJhjgD/]I%Jn[:/Mhkr;ma4C,rBXs3MEJdbbZ+>.Nj[l]NUsa3S\/=A?Yt0N74=H&b4ud!I/eTc$iC5 -endstream -endobj -371 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 370 0 R ->> -endobj -372 0 obj -<< /Length 1130 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0C9on!^&A@ZcU0J&"*THO@C+h)[V=mrH>>nN&$q(O2c%ft4m=2<,6=R`b/ZTVQf[t+ShRp,6O0c[`.<(@RShjR[4D-fBNi.?I6/5P*_S[LX1YXtJL=>B>O4,j(7UpZ'I,J>ECZpfA@lFfp2]R5c3T$C\QSSmg@.7;$O^s@ul1a>Glj"("kB'm,`D3;RE9O`;rL_/Kai=qqB?n*M7eW;f=e8W)S8(tkoV^'R;,5pQ8.\%^0lpD!fFH.4@.Eq&0EMs%+p)5/V?@`_qZmH.*cqunH)b`]r,18MQ<>]nEsu=R`A%D.c/Z-UKgu.eUNGfE/A.g"?Z'm%.H\3P&N#.X*4hMiq'c,;/:4_^t,(Zf@hG2llW[qg8C-=[jC>gZ)Bk.9J4r.'%]/VN&a^XPn@hF"E@hc -endstream -endobj -373 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 372 0 R ->> -endobj -374 0 obj -<< /Length 2043 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4968iG&AJ$CE-/?JZ"ZD?=54jcR:_oEg:ujO_"hPn$(Q/g]0)0=(p$f]b_S?\p7-(kTleSIiR_Gb?pbND48*:OMi@k]$O$<7!c1:SZqrB>X`sC*u:8LD?k6XQGp?eQURXTP2orR?TY2sK[5I8]6GZ`fRDr8d)b@\2qIFNumhT)3m72@7cEQ2f1.B?&,`t;GPaOt2D8X*e8OjA[(]D7YW]]ID,GGD!F9Tks>1b/DWdd\o4>T$-Y5:qa:pMQS1C"0N.1tAqD(=*Y"5;dXu`O9@T4`@5o$[^'YjqC!prc1XK^F]J#0l1RIC_Ar1!=*sUL*%/H-Ur4ui1_W60-s(i;ldA;BLBbfTQXeRS]LIn;D_5++d5ohkDe7IBrVa<>>rN4D-m7Oh)K@9fgYJ8DXH$<:hcGe!-UEJIfh7inc%+,>SJ:>A=0Rj-/'RlMo1NAad%:fPd3/!uCOYJEDN=AJC4E2XSi>^2]nIR?J#J%9*`90Ucho;3M:i*R.j=3G:**`U*RO+SG#G-GCt=t2cfGqlK(UO$CidqJO-D`6QkRUomuM>7SU#R8P*Q,@9DMCQ??h!:^3f_\P-"&<2Zje5m;d``I!r5]U=t`-HQBdIaMTL)]87oWk*SpNr;e^ZAFfj"X?fEK`3_pcU]6,gZPt#A**R%WQ!1l_Le'U)Dk)!pDLs_5,cVt+0J7XchXSi2R3b$d4H@GRnSkRIl7FhPYpJ3;iQ-_'S1s_1!2S;,8[!>3He;=n^1eIgID*Tcb6*_J^$66pM*IG&(I3lL'@!tjq]I286N`G'0a0)R)e(#bM/'S/:mA/k2Dd=s`hu>[&4YHlOR(Ee^VkL$Acu@4sAf[69Z&o,kD;*8$PM8AEqLRml+!.'al'tLj'dkLDA3B4/GtG7s&VjP+KV:R@%or),83E@kTLId(f4)&4O%,6+18[Vg,YsAB6&uiZo_Da06u)J\Krh5aHKY?c8eX)0>aou@D7sQWcIOaT1n[WB&?%2Mt%R$9l--N,`%rEGcNB8?*<5O9SeqUeVQ!^0;&P9tl6PQQ-i@9BP;K;3NgrH#>Il&)ukr`e<;$/Uh8JA^1TqY1`IgM3`f]3bF.U$_H(=L8GI[9GNDJ*"ut0kiK8HKue+#5u2mplbt4S:(<=dAiqaZJKKL_?+nj@+>d3s#Lj5_fBD-C'IOh7sUNc;[cLb:&5\GpRk.h+QQ\77eA0GrpI6;kL\=b`D<2?b<$to!A>Lop]\>FnFsW@Dd)]JCmgD[)/:"(2&/AlbuVh*Ta8un`iVn)fA[7t(sqXH\U.MXMeic*L(^t(gs?TW]?pa($6-p<32]fH5m?PcdNi7g,:Z^+[P7.qm@*6;"#^%1HLX*4s73hn6mB-WOWaU:dSonRinXP"ZJQFi]aF$FjE1A9`N<#:GET53J,KU2T@'?%%a~> -endstream -endobj -375 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 374 0 R ->> -endobj -376 0 obj -<< /Length 1996 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4h/D%+&:`#5@J$BFO>%=?@4>mpXD83N5Tb_!gVZ,VZ:%o3,uGEA]%O=fI4'K"Ub(7;L*-]h7,Aa%]AN/'lK[ec[.$6>/QUUVDm?qF(EWMM$Qfo'35I$4(TV0"1WVu'bF6Ln_qeblk]Uc!glZoHKni.$0gIYD)[r`lNg:480$dH?cHInT*r*iaBr=>e`D"eg\o0LNV5fqp)L[$nW$knr]Bb.pAY.TP?_$Sgs_rnJ(mFq-u/\@'`%h^C0\_"qURfclb",Y!WO@O^duWQ?dQ'lD!&d0Vn/BSf&/P3Y;]gK/f!C@EV?P//6KmlK/1%i)!W]"6$7DE,V6%2ndgFihG1dmDO$/EJ;r-Z^[q"AEkfqIFf/-STq[-["3Rg_i]28O"Uu;I.d$Hse;Pn>_9#o*3PU8^LqH-DqQAop+8.4N#O(i_)?2kcBpaPZA$u6,q'e$d:'Y:@Dfb#kOt1\3hnQ"[q0jjbke*926uf0D*#TEE_\DlOC1"tkrR>EgjHbRHWBl?g$hjH0_V5!Xk2I:0j'-OH_Z!'=b>ZFiI=ET0dX3]7JbDoBrG%GY2-<=])653]F3*()#G^_TDQKjq"0."R@IECF(I5hUc]G1)8UqH"o<;5'/=so`(7i"3cBK);JK;Y\9I<"SkXkGQU)lsl5sC#0C%"=ailq''TQka]l^;qWA2F>fIFCXJmWafnC;@r@e.UaXiAc!^M/mPrTJ&Arp'#T,6_8^_>b9T]P6ONrg!V]@13ai?"P?Rg5CYEki/c_0W+J*@$9fHSZ*.AS'>,"pjEq`((;m7=FeG.5e@(5J%J1QT4KHf&?Fnsg"sLkc<=Q]!V.8.uo\OJ,O)J\RB![Fq#+eQFLJT;70^>*^%d\5TLB8&,?&k*lLaEh(`!Z]l1-(_Yah)"%Ve)[8N$F;R']=J^R%U^rFrj`oGLSb3GDp1u.f6\\X7?%0*_%M%?Tp.FIdZ*H9sA8>._E@bC&hujoi[LAm?4kA5Dk8G6#02haR0HeW@@*%c.Xfn:+VG1V[S@!T3%5?PjH5jY3fJrV!0q[CP2l,,groU1p9@?n3'_@9'+gRB^B<#5#gmm"cm'nKhq9Xd74dq_tb_ZGApXJ.qs&5[eoCGVX4.=WA6$1R1-YppX$4&$("cH(^@o@-4hI(_(L,kL%!S812=_lpIR\bNa)Z[$Csk\4MiM+]Cf!M&n)e?;mL%==QQ@G^a<]?42#& -endstream -endobj -377 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 376 0 R ->> -endobj -378 0 obj -<< /Length 1051 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!kr9lJ`N&A@ZcXIP*2%,NY@2[tn,k/'SLdrq\V<`->W)I0ULlZcRuos^c1dNs21]-_jc%Y7jupbJ\Vi&lH&:*"?%W[&;(P_7K`iJY9HjZ8#a`ONTW'^bG^YK037C5PXi(0ft4N4(V@nc[2`P$9P6+6eV2h/4hF?e#9uK2@i_n*:rbN&/S3e6$pl)8#tl&_@<=Gt?8e".$&#+3guM%-:59WHqVjWM!_*;\c*L(Ofo5/o5j0&+Fut^@kb6eZ"++gXis^m1[g$$7>[J5PMQ8Q`$4D4SFO20]%l8^4ZUGtTgEdSg4CAo=6gErDt'XHuiep-ZVPrN%>'<`r;^gUL5YFI8WJ=rks>"?!bfb`eW9e8L5mGGqE_P51("'JCL5Q9FiX)3CT8Qa"[T_agSS]V-r\@*kO3[(f8WHB\hm[@C:].#+YGX.2"_lsWVO1=6B4.J.i3oCYnmD#TMf&23bUq_&5m5k~> -endstream -endobj -379 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 378 0 R ->> -endobj -380 0 obj -<< /Length 962 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0Ba_oie&A@rkGU_QmTg_j)7A/lg5]c.kJ8]R=0G\4-dGfs];ZD0Ec(Yn$.LHi>4g9oH*]U;6nE^YdKI\GE0LQms;t+QC7lT?6Aj5j?&-5n&P8ZK(P+/.8-A@WAAa!*C@Vtba(M=,dN@^+4N-u5YGhY21d`T6U[0g=]Z+24^EJT6>g+JoU.[gqd0\V3K6^9LN[8HmN(nKoUt*P3=BOQk=uY!ASN'7V-`sEF*@p]K/b7lu)d#0"[Ul>CcTnLP]=BP4YO9KM'C;^bQ[RI4AC'^JQjH',3N@#.t_K_E!)=Cg_r!>-IgD!g7o;hV@SYESb/fj@Z\(;qR+#*lrXR$PiL6na'ap_+3'^&pP3+@lR][?:60&Kd\I`0=$TgUmbTi^(t7\MOi?,[X%)E>TfVJagQ=+N/g9.;E5Z^=T1VL!PJV>4q_Ae@Yq$lGBm`uYkm#P15#R2r:9$`-7U6&(!E;DtbKC;/BKP[i@5hPs./NN]geZdu"0Zf@chaGs#HgA\NFUut1W"G<5&)7A8YVeksfZd\AY^\m5=D]ST>CN6u_J)@E#RP3:TMq(=Z!l&'r`rueRU=IT?h=c^HF$""g[6'$,2q6EtPK<)mb+kCh^j_u>2tI[ne[#kaD/qu?9Rd'por)C~> -endstream -endobj -381 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 380 0 R ->> -endobj -382 0 obj -<< /Length 1306 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm;95iQE&AJ$Cki`!UbGQD>VM>6-6Z3-U>;$%]VJY`nPUk-QqX7'KPXsJ:jBWH#'$XsYTB7(j?T+sG?aC#(!2IeI"f()b7F:t*#iSgP5R\8>D9D(Gp#2Wc/M$K*4iX`)kP@1lceET=:SQ]04@FZhRr;C-EIn4rrjC+>=uFTrH_I7`i[F(VCm7.CWulaM,Qe@2@S/mZ,7%D)R/'a?kcjotqQfWBqh2X+lFc&ndT)#`_ecF@1V?:PrEpX0JRJ+2Qoqm]oLXB-IWgbmAt`ON$:o>9YJ&m8]b1Z[gm8gle](d1eVb/[p$(_d?BP7o@CQE(K%'l"agCQ)g9Crbn7fUeO'bJ3&qJGShM3(BRt;q(@$(%ASo\3PUC/"Y17`=&@R(-D8G,mZ/+t;AAmO-BP>G$6mSWR]+[.m]dYN4q[:`@emPuqFdl:4)7WXh&:ZMD_/\A.$(7p3e-OaPL*F>3hL=imr9#Z_O(>042?LtJU@`V$ALV]ch#4O;ncZrA:YGr/(1l26,nGe+3G@9$&\M[Dom$"q;\4Z+=&OMsB#%E8'B\UH-hY5rDplN>1iiC"eQAb6qN.E5trtXDJ31Ws*RVP.RmcSE36WFMcT:DXSWq.F[,[k9mP9A-k9\]6N(,'_.k+Nb_N)E"Vi[m6$[LnLR&5Q*ed]SEm/[]pX"n0_t/*[f"o7h9p-(Jq9FYiQ%_)!)4VqXo3?,oueidU7:4nhHd+Knakn`IdT&?snuN*8cs?T`]1'1*[d0>+e#YW18<`ZU#8*Gf"=\sDWkpni"&!);\%Cn$DNh/)i6rmHQAj<;JbkEY&;),nL+RTA=,rER8NQJc]pRWN=^;WHHkeF0b5b\<<)Gj=A'@@Oe8dl&O92=:0JV4Dt&?k=&>F>N0DnphO9CEgn02$uFNIA&j+4\[W/(1D>I[YoEDQ2"K(J@:Y\6%9?drB%gEX2Vfu@2d:p6=WNJuHCQS!;@`d.Wnfl`f?:fm)$L.TQ8_^0)irKmS@L%6!%$ud32obf=dHWrG8`X[a!8C!qPpGS>LSl!TruP;`jYnbHs*$K;&U;Mh(ZaZ1^:sIdc4Wc:ii7)1-G5WTB.o,+N=!,V'SDe9kJ"[OF6%terSrk2)D2TYS5"&\LR,qFY\S -endstream -endobj -383 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 382 0 R ->> -endobj -384 0 obj -<< /Length 1368 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0C95iiK&AJ$CW2D\,="ER<6S8DNM\bNMJC.$&=ND+d'.]2KP"M8DqN@Ri%V7`Q*eFAH8Wbgd]P!heMpG`C%g@F?Xd_c;m2!bNe0"6XW"63WoMObQ47@GdkR79=lNclWR-8J3L2jiAA[T"Z%X2+c^=Kf/9+E$WC=f:fWbXrRm?Z:@Rq4%HPY+La+jN8EDqPY6Obk_5m*7ohr4#?BnE/Z5k2+.jBXG]W9;pR9+Ee=+^A6aGVkTlQ--C=qE'p!9m),\%'=Tid*K4/\(LHg=G[?"5;H1?=dD0"%[S;dqAf`bK*WAA5NCSbX*mhLjYF+!M9SEb"p$S=lpNG*+W)2EE?:7OfCp.+h!,=`6X!RNe)^6KZg%l#G#lu6G].>.BY^u^d'acfOV&Ag[-+T9B=j(R2iW-bRa:QXX%W>Vamk:D;!J?eN-8uX<>/u>Ln\DSsi'HT>[_&;fZ3E0G*;0]R"I[[D0uU^EcK(Ko4ngC(3Ttm\`KNj@V/6Fq6Qu"4tP5DJ@tqdAT'M`SHCm=/7!a6=$A\alKF@4@m*9H6/=U:4!`G*L8a]*2Q-@L"K7bqamBiJi@1Ugf.:Tm\X.R^*-sO5X\B8NS2033eet@d1JCUR90j9(;M&1"`!(N\eDM%Glahpr9UDoP5AEd++e2!OMDFd:[UaV2bFeMEmcij-:*7H-G8oRqB\cM1_";l_F(c4r.P1KN01&eR(Hap4rI)^r(^)pEFLhts'VjRB5?G1c1"qls;hs53"VNe1E<8+HYV@W<2n<"tWVVWG8*,8ife[Q,DQJ/IDDPg&XcgKPBZ&Ti,1<0,Pm,cs/qsPWq]pd*3b2LtSX2MHQhO5VZ(>16$%;0pa@c*VpZ;;$pc1mQ#WJ/M!1nn=d_tA41+hkPfcnF\:[g!FV8IF$^W@_]8oMT$cA1^QStfRK7FA^-T_br[p4L#9\,[\"9X6uZB6:'*j7.?d]H*FFF/g.u3GgOQjX5Z3LPM#)j&`N3e2`050BO$IERILY*8&qqVjBcEC"6"iAK%u;Up`M=Mk=U;2oE6[q5VEaCDCb/a'Q+IBCW>5X^1?2@A7Z%k:tk^^=nb -endstream -endobj -385 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 384 0 R ->> -endobj -386 0 obj -<< /Length 1432 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasap>EA&-&:WeD7(g<-kCbhhCrJcf9qkNid&D+0Q$tF1'82%O+:eGc5a*`g>7+u=<`L!N5W+V-P0uoO0&?$[R;/8I-)MRn(\5D4"B*:st_lGN%W]=sRA]bA7Z65Z:\aA`0LN>1j_4#,J\TYJ-PR+S$Em@-pN`*((=hL8T.(9*G%^)Nclg.Ss,MC=$I\']7JWJbhZ%W04!1u`00#`B!QD1J+ln><]&Z8,CY^eqCAs"iqP0R2bF)SAtUg8.j,&2[Mn5cc>1T0;-kWK(E8WTOLo5E%De-a3V=Hq%<\73T1`UZ\RhIP/s!k4<(DcEQe/+Ai;]>eAL:f5g+WtM4m4[7f!29Z[ldc9Lp^OtQGmRS!Meq9`2WdHi*`4h,+.&QIWe6"9_8!5!iX725[,K>S0l#Wd`!"'QXDUjPY`0rPG[jG$NdLj,GFoBJh/M"+pScjqf$^+ImETuU,6Ln&6$ERZ@)mcADI_.qeeg/dYe.(n>i3H6T0f3]n"94=*.1tiOE'B.jE#s*$;Sce,j1qf?c!4$dQfRgN3F0mi`eP;2\k/cO9E[rLqO39@"t+`tj!I="GDu9&&7dEA_7*Dt9/R48=:qU#SlqAe=mOpD6JcYu^VVBOQ1rS&`]]uA4@%)il*"V\a-BIWZY#JQ?;F/.S1X\C8rW)93a"f2(E:,6p:rL.<3@gG_&Q&Iu_PCe["Q[XT65?o*R2#hiKPF5KDnMVG[3;&AuURID+#ICbtd(j8r[[>`QjVN%/ENl[")G5Sr$?AEHghgQP:P@B!Vi9all7uj0ZEWcbh/Z3M2mmseA^8R7H@N2mbX!BbG6$UpT5cn`Vdqat>SCGpN=;S?q([[tm$Slgo!t;gEd)_gI^OBFiXQZ+9m]>pU&[Pho>(->Ee*"Pj6Q,06:jAIbgSCUs1SdD/pMl51XNu1d/huZ"k6'gdNKU9`E\g+KQ-.=YZ"r`7p@>Iu.KD?N`k\b9FMM,R)sR=&,+QVWdU)8#q_BO%@*,\t$U.B`A=qu(KT!SjfnS+qPig2A*OW54,9+T2gmU=02~> -endstream -endobj -387 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 386 0 R ->> -endobj -388 0 obj -<< /Length 963 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!#[bAs(+']&X:Zufmu'hJ\,D5PEK]B]m;V@1?YKU.B<6sBV=Ku"n9H._Y]j,J3?50g]?8)b[oI=<@?q%,=nKI[9q.g-j`6bpah!PUoEo-alBn72DcL8%B6*Os/(%lm'2=Dqap,GA[g#C_9_RgDRcEf?oQG)V)nAagOk5!a=ia1iS(X!8eOER#G(B4[7u/L&sC%:p^5j1ADoA0?:3M^^QNA;`R7hB6CqGNU,50PT&WeBD;QE"iVOc!:(e50T4.82\+BFuBPTbB]1'o;.>[tI-h)cBpbFr;XF44f\O4\5#c.IAPm8)A%1Dp'un>E*ImQrVZR+I=f%d,n=Z6fT)I*(M6n>L:uae(;is`.D)+,W=@oYS'#D$YchLc$\2?Es1Zo0O(tSoLFer8qtNf+LH20l,9KVYrc%T'p@UGl6p.b),Kp+Sq0R_"ps7T$P)_)cLEg!ga'X`OpUYp0UHTMJnaEE!P(4)hM:b.F4UV=JV7K%DM%-8&rJ-H+Y?_7m%T?)qu7A.1[KdC*)H$RH(Dglh"#E@:*InEa,fN8i3':dV3#';EF$LMSgUjhOc(B'alO_##jNC*clhOSB_':"REqR`du1,(V.ub?@.S*K#;4O7=ZVQ4np$[!&YkILp-,V7+EbEiR9-ce%=A0j)->hg,N\^6&j3gr"V_5QW5t\GEpc#gW1hS;8.`j2E/3lem=WpPHtc;FDbO4>Yc*Euj9S#9@]Ecu"@JhF78GI#E7V~> -endstream -endobj -389 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 388 0 R ->> -endobj -390 0 obj -<< /Length 1251 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau`S6$&MV&AJ$C0KCH.P_&l;f66#?H10<5\$uY\(8=l5E^:u<^TTm(XV5N7R,^'7.*?27W]qJP,':LH'pIY6WEs.54b=@@;K=->eH)lP)+!>;Yoi'f`fQ>aK%:SJ)%9llj1TOI,O@fG,u8#\_a1B`R\YKj\kJs,0IBqXB[l'b=?;pm"=9I4cp52Q*6F^b.E)t-C+VIm;;+`8KJbBh/t4YGe5;W@`gLs_&U0$G.0d^,:6%>=&A;P:tU9_ZU*4Mp4fUAMlekZ;6OD(,FFGbac+FL9N:K`M4Ik;Pa=P2$7_sKkl7Wo9_(9S1^B&reo#>GnN,Mtk'o\^4*aBp;Dp>\KE7Dp6_u%=9N_orEHW^WmjWR*E8OdFdJ^+G(r`GMf/e&c#lD=/G5j6OB%;r"V&2Y"]lu`rEm3NdlY!X=bu4F.K'a^.i"3m+1P@Z6N+OOe,?a;$R*Q`+<_-^^WY&("\F.Q4$2^&U7Q"sCL%^dChmOY"n=B.*%3arK_-lpE(/BX'f'&P>KuId0QY*l,#VDVDSD>s17h2FJ/pQ,<_h>6S[gq_FO^7Q7M?]`Cl\Ec)SckBo9M+aR']1U-V#]HbTW@_:\XFS;H?Id]jOnjmfs]Q0)Wl(p>%U'_lFQF'"J>08(9.j^q!:s1@K`"D.Y+-11t7*?,(.h8>t5Kb38YKpE"qr*`M'o0US*iNfj$["m6Q2CURi36\/%s>\n`-u;4FO/nqmkBXs1sOl8iJ3(GUW`7skRW#&-KBaD\AX$"*aKLl!^B1K/>c=IU8I)[#Eh80TZ?;8n8eatrH?JPqYiahHq;uO,.o;GH^',]fe)#TNa'M`ODk1j#XR'sWCPX:?#VcDM6;:2I%3QY7Q9o7X4VeYhtJ@`1_02K& -endstream -endobj -391 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 390 0 R ->> -endobj -392 0 obj -<< /Length 1172 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!;c997OU&AIm?6sSqJ]-2?\VVq^l88pr]N?[FAPK%ER(WY@P^W1WRnKu0[/uXPO`h)?P1NqXDKO40=S\W#tRAY*kanq^CuXBCG.iON.^hIXMaQ[h#:ihqWJ6]\R4s+W`IBdT\P!/(*Y%]>NB_O4#l@H>?[!Qr0,RN]DHFOYWj6n9EuUb$mZ+Eq'Jie^^6eWoI1(31MWJJ#;QhAnOrWM+GdW5Ml1"s)EE(+4JFt!)Ku-o6*2BWO-.ab;&/[*E!Y68MHfY'L3pSrW$Xn#AKQo"]6X7_LClM%!Xj)[UOAa@=\fJ.o@Ft9Nf(?!F4E2!L_;<-mXLM+="BYg\g31o7-8jqB_E-$[]]N<*XZ+rbq$RQ$.m%pq)VfqsY.ek.S1P4])&t6k(=hm^#U6erF'hl>HH\BS/^7RH(`[.##0qFV,nY'i!LJ*Rl%0`]U8>.$_a2HjOF%#=;q&`':K9jL!7AtnVl#]%&AX=!=cs`i_V!e%*t!hc#bk;U-'D>-W2=bG+kl39VkfuSG)ER1ILe50Id\k'eet85.Q*3k>=1ubf/]O91Jr9qXSfccY9c2nL7Pf"H/XuZ&Gqqu%_7Gg:d111KNhp&Xb#l-5FADnm3ONMMnZ1&-j;i]*:./#]EgY7q-f_\IO)FH",/qY@I(rq+is7a]V0p69qk[a"QgD9\4O*T$S4c=/![%+IF6SY5')gq\Z6?+==0@BY\_'tHU3?FYsmiG*o8t1Bt\XMJ)uVC1`,5f#oBKYmITFC's>C4D>aD;)b8UpG`iNENMoLc;5f151r=;7GM_uQ_-"17)@`V?m\LQAL(2:;cCO/$0['Cb+MnC'd.(aPMcsH_3L6:S!k/cGh:UiDjC63JLY_6.qe=k+:Enl??IZ%Y[1_EZX"UOJ]?,`b6tI:W8kNIA]?snQf]c"'0PsKH*lCQR^&Chc?i<+ZUJ?)f[&.3N9uc`~> -endstream -endobj -393 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 392 0 R ->> -endobj -394 0 obj -<< /Length 1697 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHL9lK&M&A@sB#^_D\3ip%I[7(U1FFj'b^pdthcna^e.uRSnFuEXu^R#W\EMuF:cpJBfer5@$2ifa7;BL+`+$W2Sk9AO2'e@lrXusaiJ"G]r9"FVBjDCIDaa%&KjMW[(h`D?tUu&5m$SfL%QY.FM0k49@:'G3od:Bu[dDIp=iu9;HB#`l._/K(nB4pso`1@IkD;9-j!Sj4E9sV2'^Nh;B=anZa#7o4PLTNZ/cpf(s-lrq6Tgc=C1+d)H=fhbGV:!f&_'^Et1ViP9GBj&88!4f!Oc&-j#_A>8,Y>'\']A.3a_=&_!MC4drNMYmHu3N^V*0'Ek0Slkk.._9=?KRDFi<,Wmt)FZ6'MlKH-$381q>o:TIlhl?j=A'Efg$76kK$5"l0E5/mAHJI@&?kk5MED,'H&7V(h_S=O3cjLI6Oq4]IVN@br`J]MPF%Hnr]j,\_2bYpq<^Y(b(cFONa[hnf.#gn-ZEe#EZo[&MOXL]:&p;)#`n5,E<\sF(&X9EfAj7ioaA3ME1t@&hO"K?Z=bIDqct-<&IJqmrlDJBQ3&b5[Dq[bo+hrquPaiTff&\Pd>s?L-oHP&rI8dD+\3EbZlU<5e=SlaZ,)dhp[!-g>%@?]=8FKCG3#Xa)F%JquU_9?nZf6:XSnd;.M0!\n90ti[;"9_2Wc8F%Ls6U4%SNf[PXcK&QJu$,Q>X=_e;p+.Q3l;Z_o97W/Idr$j0M,Fb*,L2DT[>qn$h1T?dYeC]5u_aN0EPU_@8CWB625@1i0R2;CpNf!njHK8kieMO34A_Uj(7K.OPT*@f*oNR4a:\G5EFi)&J;!8BX>]4ao9l$]9+Bj:Bq2m[rDhLK#HF0P&JUJR!0=UQ:J$;AXL3rcW]%sK,n#4!&MFf3OZP#[mUC@iOfPhC/BVkkP!XOF;Rr9#uo(8RB].D/HaF:3!b>-P.U>Q%\jVq6U,Pu_'G8h$m4:FH+T9-l0W1dX[B]8dKd3N31;*[fD^FTIJF>KBqn0WhG=@=Jml]7Vhg?dSZIe^E:mbH:[3CaW4U!tG-(qu66bDY7"Z!7W+i64ZNU0Wq!Qq:#tR=T,f,\20bR[L#S)86VIoq@:eQip(d.7l!5YCgY"Ys+*cnGmcuJk -endstream -endobj -395 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 394 0 R ->> -endobj -396 0 obj -<< /Length 1637 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!#\hiFNj&:Vr4JaR*UdN.F^J3I;i9'o!B8pMr;aWXF=L=iI[S(mtW"rh.sODn3r<\*Rsch@/*Gl5g25AsW\rKK=VkBbGIYk"=Eb',uHj#__:J=A*/rP[AqSDVq";NS3.f0i7%re8F'Q+t$oIlQ1i[#qjW1,=sf]n'dAp$-o3ZGbQYCNZAu37PT;9Q3779V#c"='&S0"/C3n.">`)n-e=b5dC3M(+N\S5nKt.X.$d4kH:FrADp-+\PP_+jT;r?b`NSC]rDEDZlU*1+n9k3[-lC!6J\uiZ7L.LL#@hBcM2C8RnY+-30"4V2+2>`/;M=7c;mrQ*lN6?'*?DjN[JseEOXZ@dp:;0EA=36pmX7lBj\k_mn4T7EJ(HoPX7^CTt2Jf)%af-DhY'G"+20r.r.^t)t2-N.Ipf=EHnaTWt\1HRL)QpS<0\6e:G;H$ZQg*DdboM(kq[=HsMu2dcUhep[EGCN9a]3^OB;#5)T=_q_7piYkLDeGDu!u0'8-Q0&Rg_8?,>!BmZ9Hcjb:E0TGL$lVqgM!8B*4!c&r(YdVs+RB^GTgPWJZ9XLK"!kt'uf#'#'$F_'[=mV(9V+3&cr2Yr&3TitHCk.B,1H.%RlZ`<3#Ojt9FD)Z>NSDMD4BGQaDKt=O<)PkhWdj!nuBTd6$d+jL.[&ALnm;*SB^C%V]QUiI%)K,FBjA)H),;s(1^S=L]d'ptt`"]dYUO8++$JdKp]-,m>);F#A,t7,KP&t'R%SkJPp>11ZQq;)qI!X(7$6ZK9I*%GcV6RK$Z&"WV@LKecn.1E9q$aD'f?!FgZXY&Z-hR@NWO;Uk\-JL0?hR<"V3Ue;qD8RB.9QtG8]>Q\6rC*p[Yf5&J8VTMar5kk'mNB4YL]CFsKAhPd2Sg3#)Z=\2/EDOG#N)SY_Ul$RkKm'kuh*'"n8\P;F-?j'M^P:1L]jnu$$pN(:p[UOoH'ns,M[f^]$/Z<"b!.:8&-ng:t9X(4e?6,g<(mcm-^jqGdO$p]#^/i'CtJhYWj(N]OElh-7K`qSkp/4ll0'b*oogAolaHA,s+'],d[jpr:ak\rVm"#1$7[LS`8X+KFSH^je"(JiH"sP2)G-c-Gs08Mij7A?+"AG[ptYeoZ]b=/-A*d=A5Rapj/UH2A$or;[p_d''NK-=o:nLtrF%M2\Fj&^_sj>&V0b,m%IMc%mm86lE*3oS)h%+ehbJ#]r'9&3fg3Cab#dLL3]*;TGApoLR[`pX@4Q1R,#UjZ2S'l""3"#Ob5K7LA7ISn*;WH*E.gDmI4XI.AJN/cGT4rsk2Xl),akmjX4%`**,q(G&A[TF6f+8c(?kdTbde,__)9]eJ0GI1C@ir -endstream -endobj -397 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 396 0 R ->> -endobj -398 0 obj -<< /Length 1166 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK995Pr&AI=/TNmdR=c+;Sd,R`8V;>BElCk:/D\s+u/5Th7c+gFg%iYS%XK'elefN.rB>/:H9HJA8&"buefp6LA_M)hH(J,o`_Vf);j@(>1S"Eob'5ad?_t$V)YXZL8/["-G`o7hHgEd/[;?j%VVhW",uN=D3;+'W3#,_UO"i-E_&.A,i,=ju*GdL8)K.ITmtU?&I-Gq+-3K+rXGPSKuS:EbD#^pbh!$W4Q'_sk!OfM0ZP3_%-H.>Fr7hcI`n@$J[h+s@?%4p11#VV@:/.7F$\oU1??pXTq$\(Geb\Ibc-3jEi"4/RDTX3%$4M\h5U,D5cP5As'&M;p4m:-rH9">#X>I+VX[EI@?F./J]j.S$MIE$+2i`Z)7L'>)^!5#LdRl$<-=<+GFDEVOcK6'00Y5IuOcO$ERhPBiqLsX_H`D&DbLdYpW)`8Is9cQ#-e=2=,rK)jJeXH/WVmB]f,41O$=r"WVKSd+j,fQT;22:(ZU-#XZL&,X2H3**ED$nt!!_r1VHl5="k`J&5S*R!GBt*k9rSFW?.?^6b?IlPiEA58K\&H7&O@nl^.2+ek9)Y:4l/`kjjA<&_$st?n1)[a*nP -endstream -endobj -399 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 398 0 R ->> -endobj -400 0 obj -<< /Length 293 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas2D_/@+D%#44r$B%i0=GYFZQ5u*r"#m%2ef?g4QEi*u64g=rTNbL.A8"g\[qb=H\IZD]I?pu1.:DnA'2o@U#124!8$$9'B.Bo6QrFg&#Dauq*I2>#I`X7P!trKC[Iit9>l.HDDs -endstream -endobj -401 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 400 0 R ->> -endobj -402 0 obj -<< /Length 2721 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasar93:/`'&N41Z3/D!^4+)DYQBQI_jk>K%I)_SmcgM!$IQ4j]-TO\k1>[\P$B;C)IT?/ZRhC,/a%.soUk$9=VuLD75S4cNr7SZ;)%V7IkXM_c_&Gu95blLZdise^QY]MWuEZeB-4uIop,u83M2j1Sr9drCS'^`HueJ,n#_\7(T4V>cW5P\D]#2[ek#oromK&lSLC'eU+0G(k:2[)bsuiae[%n*Q&Bo8X%T.VPSKr&fm"alN$d%s+YqW*HKIE%Eacf,Vj9JcQi0rccNVY8oN2uoGLDM4d%.IDnjp#WKSjWiS4hD:'&N#IT/9U%4fXod&60Z1O!E;^Z=S_KQo006XAOec?h0/`W`pbV;_KlKRk[HB5foHq^+tiNBR$Ml)%:)aH%qP@k[PHaADsWDeY;8ufeB',"85&>qHQSX=LJqjOb?T:`3(`fNgEIQM^dJ;!M5lc/Vd!tB0B^SKigtp&"^tI#,Sr\>a#,c/&b$E1D_Ot\AVcZK/[Z#a4P&C'0H@T)B:?3j03FNfk;icMHBKgc.)/,lF(*FB\f19ULWrYRSpQe^HpD`MtAX98A4iW\cC*sL+kOZOLZd\j.'`cPAF&)YU/Hm-X1C:M1F&c3$A?_IUF;I^mNM(-58ehd@1gG8q"gJ2_.9NHDf9b/B=Lm@ji<>aGlV9;@/pH!`1eq9nkEZe6qf_IbR[+b=(NQYJF$Pn,\E%5@Oij]4ColoKk4.O3lL>QC,7E"!lqBA>Tan*]42f^Q4kL361O(n13KguOn3*+NaB73o:5YGp=qorK1%eYtS:%l$Eu78"P./8AbddTp$@u?Sce%_,SP8UhHKMk0pr)7I(8d\EWhRkj[j!HRC`+Z7);TX6hA#(cqSpWX'q(G1XhEMZejC"C*cqaRA5Pf^8.&FpPZS`^i&"AT@Z)6m'M;3:#9JcK,a3B?aJ](1U3;)YL-)OJ[JE[./Z3Q/)l8.!fpQPH8upK&uMMg"^sF5^M:S7(\G&8:B\U@ooH)Ol(+s5N60$\W!3l:J;;=K>o3^:QorVCe]7QQ_[rO&>NrXLV,O+^9G`mf_eEG67UT(_\f``6.]*kSp@]cjV0h0o7^ir8N.O6`uNG99%U?`iba+&C4\QSWKfh3odu;"nKm6,=P%Xap4b(dob475YXaB%M=,FMM2m('Ih%T2\@+/[TK-R?<+n$JpI,_#"M5=:(X'pj=p8A2ld&%LQaS!nNB.#jd\eJm!3,"RT^^UO]qpT/0R`!J$<7TOf(n_E6XUXu"*%`Hh9f6Zq)gd$i8l>8jh@XC;-'TQbN7CP$WP`W(!/\\r+^9tkEm75V!2PA+Pdn63qr^c9a#\o7[kkkX(h)lj\epi==)[p]lA"uTq=NM",Y2Y1b((FCfPP+F28_/qM$Y7kE"r'-BD\S@[U*8!Y+]XT$YP;B9Nr:T#Vh8:d271OtFYuM+=73B*X86u2.U1Z3VpcnQN(NbA7on87IFT1@\q-4A>"9>\7fkjDP&%1$;Ork\6DK'!V(F+Q4LSrCM&bW8/-60<8a"])D78Q:]p(m0;(nD0,]]&Bb)1;_CpPja(@]ZP+Jihuo64HKU*/sRd"qJ-'Np^m2t'c&FYO3iQP`7@8QUt0cN?Hc?%u3NfCUI:bZ>>UFhpa[lf$iUF^W!$%p(\K#d^YI9P7Y"3(MEPR?.t!*8=^'U)\@BMMQHRnEKOO2ck4<>p#9>?dqkJ5rqLN5k0$3K+Y_E\NN;F4rR.$TJ$4jKA]l@h`Uhnfb"@.Wu8P;TSdq14k/^==tX1=Mt*)B^4^_P]@cP3%$UOJfl[:sjQ^Ru$:?K=-a)Sm/Vh5,&-0(qjoO[!8#@Id5t^a7OV#l1\ma"fa1W3^6Oq?1f8!/np_X<'p+eN1E:qC-#\qJ(bE?kAbbYPXq^!0-VI33KSu!ZPd#?[ZD*e)P?AW$6*GnJP8U:gtc/2:5E%g%Ab_e=A`1)eWZd&#%r$fuO>X+c5-@1HHEeMQ8ei'$#V_seIo0&DdS"aB:gHH>t]#pj&h)\`&D[QdAMDSg6]Xeq"OAg"%=8h;t6O_rm9LUh''m&#[X@Jf(0O;,4\Gkm`oArK`2bQ!%)4PFGTQdXIIgP*;:H`m7-s1f=_=\3c7g@YPc2R&+^ZFG\VGVG@CFVmI,VW#]%a)%NFgc)'`,d$PIl<8<_>:SleYR[9S`cZ\.=6W2ja0-K<@J1f`5pkM?1qXDY5qqZTcdZ;)kIR_#:ZGPMSqN0.Mkan-&?KLbeE_H#kIUAo`%bBui!>eC_4tH?Jj#IbF'&P3Tb6RDo-7q[b:RCif75k]/PP301adEh69Mj9PXm>0m15)UEEHIf\@!-0"~> -endstream -endobj -403 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 402 0 R ->> -endobj -404 0 obj -<< /Length 2090 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4997gc&AIV:&:,b;`@`b-XTgp6RpBRZUhI&/06%PBD;$<\99((M,Xq`[7j]MlAbluQ^2QQ:Da)I*Ak9\(>`A,9l4&&_$iM@INVOluF+M]XN,sN_35)4p0o^Z/2dm'Xne-'8>EcUBEf-GE,809/Vm"E"Y$qU12*jB3!0*nYK=mf]fIZ`9M9-R$hLV9G&9l]lM=M$uOXHFYNp>AUXf`/M+_7jb<(5_WOjM^p@bA2GesX1?d<#VWIU04Y'K(#'"OimBMKXdVq(5fZTn6CFa#7Df-%Q/WtfL$7(g>mG#9=4^+asKK?s*g`pWY!\"$GCmV00g7nVAb?A4Giq7"N1gBka@qa+LA/Jpkah%WJi-PokDBdm9cN0,gb\H7jETV3Sk:rbIT+tl2DCFOLT^kb%og#ekA=i%2CC[ZR[WQ@K=,^uO_?9PrLJ,ermmH\%uQ&"`_qhkc6^C/n!S,]@PI^k='&ih4/lqV8\\GIH:A$@A>(=ItVW'Ai]+bNb>=[%Mp(8(C/kUt<0#4PbqR$sp9Hmf(!A8A],P\=MhM$tCun3@b&hAJ"QA@o+$dSo/oZoBT,/aTnTnum3j5Ls4](CK,,9'+7GI\o/,H]P8^S#FaGN=Pg\P:tlAYha`WE9O-3qjg&[Fd2rrWl,lhpDb(3Hm,GLs27tfC-NZs>hWWTKGSXXVOo.n5ng3FdLNg(j(1^OZ3f4VBC!F:ZfKEkipF^C#r8>bj]jB0Za3g]S6TIT"D(2la+OWEqJN[FI/5G=8@pRPtgNtNC5\:)3`K6[T$"`mAR7P]?V?_,A^aQEWF)VWB'Tr@!*+6(d4U#+&:8IqX?$l8l*![/h!q-C1h#9[NrPq4Ps8RJYIcU+2qI`d9qS?OB"#j(Br1dSGQaZq05g:\n6*-4J"*(*$5Q~> -endstream -endobj -405 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 404 0 R ->> -endobj -406 0 obj -<< /Length 1485 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D9lo&I&A@C2E,q+'0hQi_X#\]JBBi5JNFSfO30U$]87kL,1-s'&IsmXd7=Z"9a_c)DJAps2LI^]o=0p$AD"9RU^%DLA+8K5r',5[NBV'Ws._3$WgeP"G_q$)l@h]*K%E4-*/P4I%3QG#$mjuMSLIkthq5gp=J\t=Ge(V';O$FZ`pb))U@kq7;HOp%"fY`BLq[sT4hJD5#T#/2Lmu'.%eSlT(-qLRti?3]A$TQOaW>0C!"7EuPLLA4I<'h$8NeuS=,4s72,sBCSE?@O<3c!Whl&a4F@>GNWpshum8L-A5@D)VXNP?+C+l62@;ZiG$Jbsec?X1DD4R4(,j2P(2-$J6JeI/LS<<@,*P[c>:s"NZAQSj],&FmP8mF_RL\DgHWW_\")tkq?dsU(i;@;"!bOFR`G=*?ld1B&7Wn(>6.Adm6G=c4tUYc!mc%btM#arc"V;@^Y3l_5?9T?DdNQKn`;Jo^fMW%sjHU6NYC=h!(5<>,?u:;J[?9G5#*OA]YAuZ=*i@rh7^P7]dYGFk,"ZnQJ_*`hOKg05[tK@)pr7-WKCmucEjNE97t'ThTXa,]`@^]chRdtQ)E*O0uBV?IBe2lp-fWq_E#E?1K\%)KVHi16HM1'<4b^iQe>O$n!%mF!Z"7]qCW*hQLCII7RNF8f'Eq)G.5]%@`cCLiVi9&OP/Nk4BN:Qn@>LVN\F&\AS"l>LUW!Z5)WST2RPBM0%)j(iLH#90fI8TYY6#JKgXM?R9KCRGIn@LSC=-N#Z\rd)CnZ;>Xrd!MKt[1GN=@BaSDR_'F^@6AER4$gD8dL=!KM/u?`g'(,/b;g$rt:2,7J54VDu_[%3/We'`=a/XZgkBXL:Z29N<.Z55o/\=^+`b&)H`l9(KfEkPFp,0D`i(06I[ZU73%ni?TG*X66T>EqT]-DnD8_97NsGn8hh3;sY*T@bh=f56$g"WgV"=fF,LMGNdZlXS\([I/&r*o0Eap,W[kU0$[n\E`KT(+FcHKkFd890oQ0IXI -endstream -endobj -407 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 406 0 R ->> -endobj -408 0 obj -<< /Length 2190 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatmNke6A;dF7o`d5+Gs\g(,m3^%E=ql>584j>']ZYTPi3qjsC-4;!Rc0iWD&=20^3r^n+T0o6W4q`C*U3oqrQk4ggE>>VOo4Apb8+3(1Zf^;=45E?>q@DS,7P$DX!/D\)mPBfm(%A_O&C>O2^0TfmeA3e;$6G@[l)eP$GX?^$NEe*J*rD8JEI(@D#$*&c6j@`#1gh&jK<\"$f,q^)%r&1]la+6j5=X`ZXHsG*WgA)]D@QpV/lF=IjTaF]QE0CdXe:q665;+(lYP_poLXV_-0"SFJD=qS+U(*iFq8AG5gD9R4?Y5"t",DCGZA%";H&2e4p6bD4gm5uXqhr70o@p/o[9c#HL"$DkjO-.N'(Kj?e\*r,0e1lk@qOSm^5gkfTu_krV"^DB9'1l!9M/5:dfre!EVq;P1j1#eC?nepqD3]PG5+?B8TaE3I'Y:7`<[Zde.BuZS!?7/>:lU5[dWciT/V\R7*4K?iP@&TKT6NH)pr-\p`TBoLnBEj8!@X6AKd"WincuNs%:*NR^E<$@++-+BthEuJ_B:@n24Bp*&d3^VD.I?nnCd5$:jOXL9JXfePNE)&CLZ"3U+h/g.0SeLWmFp'FSkRaY7L;h&r*\/AqdC@:<:t>23\Km%Zfb%5hAAFcf:m7fWhhBiIR:C'%i)3QqgC26h\7M_37KRF];Vp;_>Q@gVZ"e$KE\&HbRmUfe?S9blK4C_2::6Ie"",X5h>.S-$VLXqS8LOIl\i3G.n_o]Z?Rgh(Hj's!1lOV>MSI)V'Bp.a9Ce5>s#BEk,cOWie;(\qm?5BJ`,4!_D!\K(>(T/j;*$R[D7G#VheuD\:&sS1M9i%ZpI9?q8pod[K*VHeRi^Jo+_>R0GWsNF#("IRUMboY;)&U3=9/S%PS:#?;GSqlMPMpCR`pBrY1%3>3R544*>fh"YY_!&L7?a.?Y,`5_q!H#tI!iH/&8gE)AoeN5FIAI^TRC(M+3<5kg-I+Ie#h>-q_=p*#GSX&t.!Sq"T=5m(5\*@lr#%p/^ipH\]Hk]dW*"t+/XGRp_tT6LlG/-'7G"C2P&o]X=*G:7_""3j[Q482FoP(NKdjqmpYfhqH=AVU#K6tPkkA=:m0eO-*c;dFrY=c&2j:NI*F#9Mj[60/[j;iMn5rJY=JIR\%MF=IES(7B!UDo8,B&uT4'q.qi&+=o4L^ksRk&f+!=0n2Va,o0[/`&i>r13Uuo^GmDtY#C/hd3pB-`bBN794Y`c5&I^T@B8,eQI*MjHe(`K=VepLIA_6@6(Dc[*W5mSEEL?.9-UlcBL'9MXK592i;0>_%AYj=eqJ$'!_N%5XKF/&=W+dD7[WcH+V$OPn5P#g@ -endstream -endobj -409 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 408 0 R ->> -endobj -410 0 obj -<< /Length 1658 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%$>Ar7S'Roe[d*lAA%P![<]80l%FE%C[>B7+/n&LLkDK2b#*QXI9u[$Mub(tGBW#gR\!L;-,RUI,q8Z-`+XgRq@j.A:`o@b7YCMA-!\3@(U4fd:`BFeOTfgU,lXSq.O/CmBBDpe/R$qYe>)mB$n(^Z7Mh'/B!"3*QAE2S^K^X).^_jfg;X@0*I:iW-YaCW;8kr=Teh;?nE$#+?dqJ,mF,_R56A+"IBj)=5%rb)hR3$>4Y^2]'7KqNDegq;[OF?Z$SHe=XfTCPjJ-9F682GO)pRYBLZ_N^A(/W5nfn/V4d]k#nR&`eA_fNfujeT=ntETt(dUZ0>T;[XIFTa5f-LfC3+Tp,BRS=MKjHl"`f\I^"[/Qe`h:L;?KO12@pX6,p=k&EMP-&4n(;0+J*lID`+LV0Lhf235,M(\([ISC<8jlYg/!TKX/NMoE/Z58iZ$oBF_GhX)1'I,$T$r\`$>*tmghMn0%ZFZRjH\N"+C#@0LaD*C\RFRWQaP/AoCc;cG+B/kSWf(9+O]tuq^2Zl3J3S39c*#Dh-i:CjEicLqdn*b.:"#>172CPlh._6@bD+[3q5@2-ZQ.]9gD:YEo!0iodr%d%[S@$.NKI78Du's$FDs>^>W7BYOHFuM2H=@WP3NOR,t`_=7UtADE/+cj8pUL4#t%:bc\_-g;/!u)c**c9VabQDpi+f-P),d,oGAF\b<9YEA`Cp;T$R2)k!7q7YqCCHm/Fmje,NA\Yr^$q98Z2\3agN>$S+(kGO^O;rM5J_!X6/88Mi$aGYK2E!LA*k@\7/8%'R@[a*%9/F#q\k1;=jliuGcUR/]"02QWSPMG=n<@o;)VpHnr]9\a@-VDK[PE?4Rn?1LjXFT!^oDX&FH[+fdN;9Vpu -endstream -endobj -411 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 410 0 R ->> -endobj -412 0 obj -<< /Length 1991 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=,hf%7-&:Vr4+VYdYX=5[bVqnEbD32+GdKE.smU7.D>,Gf'ZKP1adU<+Q8O.Ccjfq6,_f_B4YM.."kgPd-TU[fU7@#260<@8X_-_a6LG!V=?28i9rrN[!7tZm'4=)HM8V9SiWYngXn[-9anDXA$o!-)D%:`A*g?"#j8^!:d-BY,XT]aIc["2\J$BMXt.8$)Ms4P;7QZ<^*iWle?)2[e@uk@nZtdceai^M5IG8/#$t'Ob&IL[\)*Ks2M*Hg6r?WFV7KJ=8Q!K4G(SPLF6O<-u^7F0G9p=*7dpu/s"\_8;_rPn4a.9B$&&t=&]*R_37p)Rq]`rl1`"][Q@\6epTtXBW-ZfuZlfqLK",Zf&tUR1ofQ[cf0poV$Fk9Gr-6`cl4LN'\u'_ZiIk:q#COrHk=NEhsQ^OOAgOc4E!3&0#Ll_SK3=)J#M8dk(bm6)X=\aJJZ((P+j%YLQN[H/^!k$(XkHnRfDo\L3B$#HF96UnqAe*h4a2SW@t-Y=R8XCV5AMq+2&57D6Vo`G+8U\?C^*MCIHo-(,ZXBg5F"Y9\+8Pf@*b_3Zb*a/o"r[`b=?@Tq9?/9NZaZMOLS2IGAO9f<]Bs?S4"DO*FIm7I`V5OQUenc)WCBZ($V/#sI>gJejl>mlMsK8:cPJnIVM\ea34oq<\/3haph&?@=Ytc=]X3e7W1^q,_CrcjB!BCdadSX.u/Z&$u6k-ORg]2&'*NOV4^>k@/'VQ`X>lI>ITNMurPIl&42aoO8?A:?\H -endstream -endobj -413 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 412 0 R ->> -endobj -414 0 obj -<< /Length 1416 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasapgMZ%0&:O:S#lEZs%O9guWI7ZBV<^$^)I(mhW/H22kmLOX*(ii3./ND/,g2o"0eNM1,W2)PS2l?E?cRf"gVA@mE1M52E1QY%3j/=3%YC9UA1dol3q:MkF1@RkZrkS.TCP=.et;(@5?p0t3UtG8*\TdoVp1fG.JQun$n;?jjs(E?NS/pHiki7ug^;-l5(8C,lauBXIeO6QL^clYInkY;ObWsHk7LQ"#db]]Vpk,G$R10'V$8+r-3)_[#\2crk7JjGHu)+@3/aXuL2gl-"Yg:M!NO@t>k3L$EOc3;GSV))#XHmklfRVap,KHZO89";^jrg`ZFlE25$XB;U=a)Br5+>Q1'/jfO3f,e@hs`]0HP_#5/p/#n4ho?]\'r5Y)^#1]!_QZ"@>@m?6Bq\i7\>);`'?.@=1;I^df(];^?.@$H\3"g6"Z.n9L^(QNCn88k$q\m`1MNZ="mX"eI00MOF?89nXN-nL7l/77.mqJP@s[GN!@M_<%ZrVIC;IcZ;/ll2c!5/qeHLgZ1,]bi3S^A)STI*[%=d[V9(;FCDrR#kELi?6hoV1RgpaO2>8$dB*Sh$#*LcofWS#;Y9h:\oq=&O&P5*1`mBSP$F3/V8fQQNEWnrta.pVZp^+I:;d^fb>o.)X="6>R!In^;n""4Q"J-SPL@>Qb^b2aPreKMbVtfaetP?Lb2kZC%To-@o4"JW+>%f`6?_s:V<("GbFM034Z0cVr6t;=<0s=$0iH-!'FgWVL#(fm/9n/c'tt(+::K[gM5:L]\aN4=n,`#6*t.C@4]._h*04MegW_?2q_Co.C*hB`Hn!iFllo#h6;<7NX,_+6H'skTYg&(gos&i72+`rSRg&/H)gefLS&2iO5oI]])2'!QI4+HiV%83'9DT0g-[f&AEk5a?Gd6(r-u1Jq+f-eH?5&[:"c6(s7F_@+[opb6=cKq7G[,U.bj`Z<"WD\ZE<@l/,IkR7[MK5fi8HRa3CT.4$N.Ko>hr_L3=?tdOI)VED8OSmMr)I.+9b)A>idm1m]0;93:.sV';PQHU[iUZr@R0I8Fk]i[[!hHduNQ[Pr]\oES,Q7^m'[I)iiI*kX);2nj=P/:?2*X:59Di'RR>")F27_7>3;U9=^61i)8'Mq@Al(Pp-~> -endstream -endobj -415 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 414 0 R ->> -endobj -416 0 obj -<< /Length 1006 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHKa_oie&A@rkFGtd(,t1Z=EbYRj9p$J:/%mc.6-$?!2m)[904E8QJa$0OSih`&u>7Ku5Ejo&16:&-UALf+Vg#'4aB(6O#:RV#sGB*5dhrmq7))2(hR#W6ZLfUDZucU^s"=JC/-K;jJjU&S`?M+0nCrKo@WO9jFrb"XQlu#a#(X2aDmUbKebP);'R0#Tu50)&r[_T60'Xi7<2HZ!bea!,6JO&uZB6[h&<1^+=U*X>:\4cmZU'B_tl8#m9RH2Nco,Z^@.Sj"n=L5nB!gk1]#o\nDu[W1-0EC0nh=E`(0.RLe&.je.G6hqfUgUQrgab)&m9pX408['RjA[is#B:9hjFF]`kS;%YuV&@W0-I0L?*)(O-4^ch5[S?OsQ$'^+.HOcsY97@Tp-B5)Nfp<0%?!+,['$j6@EuI?DK31N&_GaV\n>77j8l83f*-g9'PV9Y3qWf:e06M1j>BY`7EN!MqPNDFa"&qM*^dM6k6%De2-(lnQU>P:YF@M8j'h>F+=$!=FsA!?#WpJj02BMgK+q#.?=HG+'[G->j#44_?fdU@5A[[YB$_B_g -endstream -endobj -417 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 416 0 R ->> -endobj -418 0 obj -<< /Length 2487 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasa2flH+2loe_7a/"nI&p;m`Vql35G'coP`bcg_:5>-KMiB96Fi:4`I:^KY%#Iu%`gn+j?_WTjj5<6D*7>0!mod=9okmqYDcoe=/ul*nAq/$jhh%DWhThgS8K)jF=PJ(M^[ITm`$E&0EthpIYa2FbG#.Fm*Z_L^DCHSN\Ok^2(0YVIq+iHLlH4-irNa!8G$(R8n*_RQajZQ6H%]1^2*FaI5CeYqu)=@)q")#rWf1aSWO$Vgg'q`:M=`K!?!*X%j)*GqEh"5D1ghPD1g;pQS4f@HaOU/,lARF\Z-jcV9jSMg=B]2EZdUW8cD<3\r^,D:NFWNAg@p$RY$'N00HYFgt1hbXIShT_X\ZmP^Q>,Z?c9Vs^HbREg(J&F7)5edcE,]"lh&1ja[-;VmG%:Ag41?][Au4&`aV@^c`5)EL3ZFtXXA4qs)"0.K)=_HZYt7G)T&AY=HfUk'1=H23A\]D(N>OlhL'KPEi$]^)c8[b`p;hb!F!n&FiV]!N[%E,7!]>klbEuh2FZ"4AORaMp9\O9Ne@`E,CW^[HLm58%CBFm"C$_9Vu^p"E.3V'Ft$V^=5lNJ>6*iuit0PiL3@,i,bd>RW8MqI7Or\iiqom3'HN%l2&sSUUs)="c&`?t\]JeYe0iQ#XuTsk$$)*E*^FoedDd5oCjTWq'JpEIE'[<;=%=j$]ti2HK0Tun`R%*[Y$"%t\CtCZ0mROg/Ft!q1<6J['%Pic%Y)MS$@tVR$HtJsIARb4,%B1.EX]dDfJ+d'eTNuMo=tOPe02-e]so_S)R5&h@kQRpY1$[oBGj!fRc6rQ`XdA*Y[YtG/OP?Lqc:1:]kFuG<5!,90)>s3+:Im(&J[mIjL@J_,SMdL&g;I[B$6c!J)pej.ZX4c#6aH3uaNiJc(uTAjoL%omj2p)f])M!Z&I.'H[ndMVJ,Jgu\1/$0jkC*=iNPDL!%pHlSb-7l7sE/jmp?s>:NZ1*bO*)CpIU5<+1!mt+?29FD_'RE_iUh/0fMO`oPZAe`j;_Ckg;f9[UAc$c#!1[0,ZJ-/'W_qh4P1.e@Fg6j(eF1BO?s!mAWLe;`FT9/%:^h8)h&ecrs^0jge.`_eCgi^_J#DguY^>+HC8Ii&Sq-`8C;uK0ti2PL<=;ZQJieBgg"eBX@l#_,\`7E.<^%GU!bA9]iphS>o)k3?9c_48&-d"`#S*"][VVIF\&"rb:faOFC-qa*pXnI*;mg]S1k'O@be#l*"B*Vln!cI$W&ATEK4`$r^ZQ;E%2A<`67UDd"s:p/F0LSNiu;&peLO`I_NY$&1c(`<`iLBno*;3"@QcT!R]5>>nAQa,04Im=F6h00:^$Xe_gM)D+KCZk5e!eb,g%%!0)JRamD\nE#bt'nH!BZ`qg8i,_>"hQ+?&\_qrrXd+\4(e8fmbnA*3V'\B.C]CPLL_gpOfU/[>YjZch:i@"0e<:IgAYRoJD--IqZMS0U&$al*7l3Aj2Uc(BrB>&+*]K[k>>+m=LQ?-8hR.3Wb>J:_2brA5pL0POorIJsnh~> -endstream -endobj -419 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 418 0 R ->> -endobj -420 0 obj -<< /Length 2168 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!S-bAu>qnF!L(Z"nd1fE;%;X>an,f?qhFB[^A5://s%u'tM8k,24?NDb\j7kG.cCd3Pf$`U_YB%D74EU$l,SF]4P-<(.V1U.%Oe"5T1Gq!"qm&Bqqt-DmY^J@N2leUX@;!42oih4]PddA3Y0=G-rsM_H;Bmgk'biB`9AE%&ioEbOk)VQEpATFDhol@LqV?J"T#qr`;IOhgDQ!7-*'[^C(\g:b,W6M9^gI3".+7rgHZJCDOV_,37@T1^/J?Kc;4Aol4A\;ZZL!V9\g_D(bZm)Ka7TpI&r"$U.V#qt]##fRRHPs"[Rum,O']u)0jQotlXm:?@+fV>YAW(5@[r)2&PkmtkLle&SDX]:(!MOuKJM<&["7*$LFE2`%3JT(n(.@KcZ#=50c3X=%t"H'[?LAA:"uMtF0CLV%eHh,DqI3166JdPO.hIPDDJAcoposE<7ssJl>lc^_W^8SDUd9t:mOrcWUd\1f*6CfWQ8bR"/_V1IZCje<d-+L5ukY_nDdK)XCJf/eq'nuTX"(\>Ak+6^U7[S;1O@#[V[rRn24$c(,&6P>f&sU:dJlW0@P#@kI9!br,O1(kelfsM%3hkFRZ/E*DA&<_73$uO]G\(V;%pVt`AV_9nQb_G:cg6d]!$4gKJlD-CFI$bC>#b(d:eK/eHCuAE9Znqo[L3\la!WJ6m1WaB-"r)[_NU!)BG1OO8"STShj/e;+Q*-QML13O6_iKYMS)W0+q9)[j@N=)K/s')';5aW@lNHRBE>M;-?%H,dq2^g])jH@(_VbmNPL?B+t7e;Q[,C8=8_hqf#"2gGK"Hm)-UC--ga(Ao4J6^p.6+i8s4`mJV=G01cP?+F<\#6_/ak=PPp0,j2o>s`Xuuk-uBVnb4oU?!q/#iJYj'\CRUT/T@#(-=hdok?E(p>@9_M&jaD-Y1ZJh.;*Z+6S7Pu;>l0lAOB6b-)3=@u"6'NJDgfs#$k5h]9mD?J@l:'5(\\Xb%ll<6([$#KlKc.%W-U*_*ep(t/eZ3sQjG:i?s8n4MYH9Y&ITsk0g?e3MV.b#VLkLOG'*NIqU[5rVM78VlLg58LsX0#(DL9`l'%VQZFl1%3n3h6?jQdY'C?XR_u-;qR3[,Ic=Y%O<7_Ge<&Yp5Q$R.5PM85Ll3&@B`oE[S*rl*P7Fs@NI;.Qs-S?3p&FA/;_,o'Q@F]E-HC!)lJ3B$&KH]SH99XgqXe'Ja._X!BE?'q^2eD(jljF%RLfqB'cu:1e]L+pLp4RG$Y:^:eCEMBV0D%Lq(`\AH0:F):fT7osp5EoBsfO-E4e7n5=XM!gkscGC>++DI8IGG9M+Ba>"1)DkOcJks-KWBI;^AC7L.FSdY -endstream -endobj -421 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 420 0 R ->> -endobj -422 0 obj -<< /Length 758 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm99lo#B&A@sBkQZ-\@Y6lmVe1ZWl*Q3KV`g8>8(`a%WK9EO+oM4@fWbQ:9b&0rqf]CEN4QP/I7e,3<;._i0Y($q%-H[2c'C5iMhOkrXG_)Y?+h\ben\eARi?0"O!.,8I%8485NJKLE'i.G*E:(c?PStj$0h@:'DLd<508otT8oTVWkU26P?X2]EV8H2XNBi'NS5"J^>IT%cf$4b_h%(;_#88*%B4@Ntq>q2;Aj2abkXPKc?g[,9nO.P5N<SL2(CPU^D;H$WWMGc'^b>CoYq[dlhGgV$XiP9.G=?OlS$'!6ErE@Z$phB9n4F_[GIJNS:T@r,o,dP!a36`orr*haG+2Y@>YR:;>G=U>[*q@tVWVm]q*?B.hg2XLWXm(O[cHl$2=Xon7o<3,?dSF]6iO*1APohjZY;J6CM+De]B1?eHsBpSIY-@=D:b'R['h$Xqm^ig-GG8KHF!]4ls?OAAd)o&5,=/\Md8c*!7js1]6N&QprYA"*Mq$q].Ja"lUlX,2C$J8~> -endstream -endobj -423 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 422 0 R ->> -endobj -424 0 obj -<< /Length 1063 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU3>Ar4L(k(RKpb>=?lYE#,:M\Kq9J($_g6XNg))Vs3'']V,T0ML.S7$#DeX+:Gms`Ouk:.Uih(p1,n;YLX`Mh]-M^U2\b:>kPW,kj4p)dmrbb0cF9F,:SZ%mk3i%O&&UiHNO,)a^[)t\95R+B_4Y-s;K=)$4Sf41Ec]+[ht2%1.1KrcMHD_iIPDmE#"kAr8TRM1)m*p`[DQ:=ZU:b?5/DM*r6bX7JT?;tR?Q8e%qofgGHI"a\Dl:`>A$o[BCkD>AL,2QkQ3[ViLjKu5>]hYDM8>#1Nht!bbsg#S$T6R-umhk"`O&Pg@[oiL77a_oLAKHo\D]Wl[pb+f?!RU7M1Am>6,\>X.4+gRC0^rGgI1P\NNVUj5BWFHl\/pN)'e`aM)5&%qjMKJal8&7^r\[BMmiXh@:B#Uhap;-_/hkaU6.B[Ui;EP(qQ,T=a=;Rk4E"M58t]k`GIQ-VPK\Ir`Q3fUhCjeLT%2imHPq/8G.'*5%!,Em9L#g.oN)L>]lo),-YM0l,H>#+GUMs?X8k=j"N1%8m3Gu[Nsl5l("]NcSDQ"LXM -endstream -endobj -425 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 424 0 R ->> -endobj -426 0 obj -<< /Length 1558 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=,D/\G_&H88.@I9CuUt0=sYBunMCA+g.h.k]?qrMju85'q/'0A&smG>$2$j;B=o5^j11#n[7#+0[d>`X3'^.'.Lr4j8rH@bhG"(&eCJ-TJW9EOF1`#C;A^FiQs`_40>9gABc^V/$eg_U+I=Z^4M=2_(Xr*t!OGl-taq"F<+hn+bu`o1C%0qpf:R"d0u2CI8p7`(GLqO'#^2m<@!2to95g:ntN?'d\BX"Zo7!"k#87=ON-:kkAa<\lPgZ.ghSR$?&L-b3)^C;r]aa>9eI:V9dChoI#]G#g11eQYm7)qD;FGu>rp0QCs?jCD;U,lcYk\Qo%dcncd#5Q1LD*.8\6So/J\%5'XD5QO-p)Hbl<*q/N7ms`#nj2&rn2gcVE(u3pUDLCP')"h3H&W$sQZH/*>:lGK?Wei\#h=n'BQ6F?ELFCuIJ0pf(/d_d?;*,LpfXV'5qO6df/;1kfnmaOIqYIS#2T/`u;%3C+8@qSrjJE[-5'#0HfL9sqPJNR2f\JeQU$U3`:)dA4/X,/lXY*8C.e<=Rs0i*4W$WNO+/s?_CHs.gZ^K`N/3I=r,2qm5c\k0[jFtU-5*/"X3IDK8+,c:#tBk(%if)N=Wm#_9-6"fMPj2C.]TKg_(1j0]LSlgX8iW#i-W'1:L+9Vg4HF:j5N#I-M'[FWo:"Umfl/>DIMt63Z^Z1_9O!O;.'E2=d#Qaj?Tq=aKX864A\M;R>.US3YM=3WGEFFTjk-TqOqT!FM#*jb^Z6(m7L8dOJt)<[0gWnY=SEEj>VkG>2M/TSaRM08UQKaA3EC>FoqAaG'rFseGuQ=Fm]X@M'nHB==RLA2X!um.qG>u9nTr$16M7,glDe;%:DT7rTOpm\r2l&"q5n&r%O=o=C2B>Cb1M:=)lH?II4%GYLh#L"eU_a;f+hHbqEf%gA($@j4@6)G1_C.1a=D[!*Ncrmg\q:)\jG6>@4`T<\!FqEGJ_2";7/51@"0W",[R`30 -endstream -endobj -427 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 426 0 R ->> -endobj -428 0 obj -<< /Length 965 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatn&?#Q2d(kqGM/%A8*io2W,gXRd]>,P,!'=sZURRl]hX9k]\FP;3B$oll_-AAga'G5ECpDhCeE%]&E`AMe2$X>&a$s[F*J;u-Ed"/,4oN_Tmmt;YCa)Du/d=r%#jW?t;:FH&aCS=rKf7hG4"(%W.Vft)A=Ht^B5-.b906oHr`h$Bk*6(Q$ib4m@B`=7:s*/BPNuTls)ieARoj^s]&$,!oYB6J!%qUHYrY[*'WHB]]LLILCbfYa-N)Qs=)HCW<[Znl-)V#A9cdTN'S&saV[_0.c[Cn\]5+Ykb.QbHHX$/rTT!p8Iq+e5`#\0M5CP]%D[\[S?P.#(X84Vq9>TuiXg1TE`1n]@U=rbHq;7>QFE:qip-R8[5l,#Er(dQLMnd\"J>m^C::2g2b6i8^RN,t-[D'tl>$3JqJFL17cPneJnD"&4m0r'9G%^>E^]dM[h,MKd@hO*ND1\!A-S:rnf:4COnD\Q#uJe!$L&6@X[fFMo=>eh9%Vu#jT3M#GL^kK`)aCo%i\Jpi7unfr,VB&6B#gC&E4=Dq_:+Z* -endstream -endobj -429 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 428 0 R ->> -endobj -430 0 obj -<< /Length 1342 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4h/h:0&:`lHn6oB8+,WqC$'H"k0hcD9=_T15QjftU9^GYs1Z?.f%S3`oS+1LZMWD,If+#,Q]9j.;\/cHpThcZpRXn-o?@Me37o`k57%>ZG2>Op)E270o_,99!%'FT0GKq4?S#$rUOsp9d5)UE3X14kRg4EO:HqMEoS(bdT&*rbdE`1YU.kUD"PEP7%&E:-AZuD4T"9:\@3<')SO=E+\p8u;%V;*Gb;UcNfk%Eh=:g]\$&\$&(>o-Dp4ZOF/Qk8EEE-AMh42Qa.)qOq:5ZUL$9eqd],nXO>WE!Fl*sN9g,^8SI\O/Ki\[>WXDp.=;qP,'P[&i1_lafEc+[>Cg#HlpMld&X;V?-:[+Om^`[h?L\-C%\0OkOTeMc#gbpR)iXLbPYEqYAg@]t1),14auro,+fLgc4kak[IHJ&U#5IG6,5+kXh*?#nO"e.gE;=>IkYpr6h1]pB=Xm;WPFUF04:-i;mE19Bo?Gld^o@'`,Nc1im4Cod/>79bSBmje=?5[Q*;>1XQ4Q0*l*N)og!4*4=>MY@f.B(M"O6VOiHA9YIg`gS,'4k6mDRS)Xe=)BhK'LI/>AO>F^0gcR0Z`*/G%3_ruGBej)NQ$2WhNifa?&d/L$:WLOKfb1lIRN5n,$Hlb]BJIl#O)>.3A(&lb/-ZT`FZc:IO!'03n>UfPcu)S(p:[%0!6JV<7pXJ7"qk1X#9b(V-hsXs?cbaf6'@s%)+)o*kuNlS+R9&_FmR9?4L,IV'W!B.h'c3o`AX>KLFf)19%.jk)LAn<\>d(*4,Bp*+)^MPlc6X3g!/Du?sF0RLQH[eSe(ITE(/J(Nffs2Bl[>rtoWN;]"@\kFr*tn"deQ#b4l,@cBVLpDTo+]QKfQ+#O>Hj!Rs/4[PLJuWGSOIZ\[Z5!!?!*s-+oXFN@2_%3@!X3V>?AfiBT.<#qt9;A_#8m>$t;UI.FsB>q$uS&,\kN?\6!,SoH6_UE;+U(lc,EPJj$5\kDj\6i/Xr)\!A/)B-Mhq>]E7q\tIn^_^6qo4lqL[tFLaFV6nilY\&/eEE$5Oa[@\9Fjb~> -endstream -endobj -431 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 430 0 R ->> -endobj -432 0 obj -<< /Length 1387 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4>B?Pt'Roe[i6dra=9RX74uGFTBfb":3qd_=et!5SKjb&(&`=q`l$olJ!ZbbgPP.^@S=>PQF$AN*27m);?=oM.Rj$NA/].r`dl"@3>C=DG&^M6!>H!>r'ed@#"aPKhd;uR3GYq6@(4*R-T>#s_C:72`X)Dqd!u]1gKjAA<^9Ph?+7o'bYp:'Z[&TjuN*I6M)6;YF^51fpVN4pZ"&67&l-gH%qC'%241*@)J/NO=2BLSTkJ&VchsMR-m_8\rqiu0]=cLH!YeKtEpZ%k-ct88#duf+QFC0'0>9l.ge5E0nM(tbcGaO"OAJK'RJWF7JSrlVO.9K(_C/]\I^q+8*=61I--moa6<_7'=4,QAJ;3/C#Wpm5^D)hY''(fg;_1*!9EQr2c4?a\9+M9$$7<[I]i!frteb64QLO=+rV+1GGcRF[=cVj\Zs^jXi&,NY4hI?(s5tb)#c*R^rMYPQCN4p9Jt=1sM31XhM%[cfks1G36k:Oi?7t6B3#hMu04m42OrUak?<2aLllIb5=OC\1Fb&D9`=1FQW+K7]-9o`8c(E]-..U$%Qg!?7p+Ec'7!WQ(2[dm>`YrLFBdc+-mRIk]\G?FqQ#N8kVJfU[20$%[EKKHkf7Pp^qLpFChuN]LJq"lMYgr"C91uhBA_9.\nmBZX$LE`f.5Kog]'b">@j3Y&YCp/&+Ek=JV0'Ya_Q8L^[IjHKd;G.L!kYlpUkTY*j$([,d41IqO4+G6jn!C'r==U2:AasceDZ:9M<%6Xq;Yd]qgl\=O^^]M!Bb0ZU]);(MWjVt$gHJ7b1"+<-hJV~> -endstream -endobj -433 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 432 0 R ->> -endobj -434 0 obj -<< /Length 1821 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!"q>uTcAn=tSF3dK,UpIi-!rQ*[ikgO,0pn$e3oDH[N*fk]h'0k@\]pV,4C#JhdB3mWK*B-DmSN%^D=Ag5"/(,8j[sUQD-2pRI5_!=Hc!@XrUa7H$=l*1^O0PGIM=\24s&E1hHX"t,fm]A\Z`!fRm(8an\m>aNM:Y=,Uu7Im-;=J#nN[N<*f2=d+X2jK6')R](McZcf"pgUD(t,%(eDBlh+eDgL!QoIP',d!u9?ZrBti5(2a95MH%bVAVUC:9Qp]>=g@hr^]5N4.LIuX%8hWU<1[&SG?$W?1\u)R@)6Z+$/Utikt3!MEK`4RB3X[2_Qq1S2rng]PGO6i>Me#"LRp=t#6]=sW/RR40<-&dqpV\G,$._RlalT`?$`o:k2LW*iq=YmJL$.da]8J<:!9Q_6:@&mOd&/YoDa,`EHcmq2]3Al6GbRX@\d&8oh9GbQ+OUe_aQo.'Zm$fe@/=0RA8uYd::UE6A!,s.6?";2a\D9:Ba_p/Wl#cV5;H-.U<9"$Zdju?N7'"B[=6TqeW(7PAt[`"1KJ=R4G$6H2WUUd+db26HQ%D&;%O[2Cl#S:D(+G:p\0Zg6_&=35t#&9CDraTQ41stL9O1*DD(&=ZRD>4Q:5sHlSP<@0(6'gP17_gZV^AkND0.#T)m?hk)AMg&e1O*Bf7iR!OQ]lMOMs>VX,*3Y](Kjne\_6f:pr`AWXS19EnoF(`hhb>7Z%p0>P8]s1U!%hnk<8GLo@9a6In/4LL1P!&+WYl-+=O=t?\-!t*R!M\.nni;gQnHPXN(G2GP#^0!0"84bA$cS9o"+6n!2)2o3,TfP,FM\/k:+;Q_:QADkNO%7a3:Q>\>;@HG/U8/FN;;S%QDO(Df;Y.lLId[Nj.=N`GA]ms5@l^d:6uF4)UW-@=]o[A0%>[6jE>u5-!9H(GbSJ]ZYVV5"2F7;i?:u>cM[aQ3\0Y^>,K^q49KZ?b8(k!o#Z7oFR8&YL4]o6!FbS>u]b*t;gX\uS2 -endstream -endobj -435 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 434 0 R ->> -endobj -436 0 obj -<< /Length 1707 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0DlYkN9&HD156Jq&:N?[Y!]0ee66],I=J0f40AKD%ZVCWp;\>#53qs-cBH'7:ADD;hkH)H#ZmeGhi\')nE;C_R[?B>eklprh.(Qi"hD]?c!)G3)uL?DfK*0fGa.'1([g9JdXGWkRCe)dI;QA*M;*a`q9*N$VKG)B6fI_p94'J$9?)3](4RgH]os/U;e1U_R"L/Zd\`m0RAACad2;gr:8"8?-,hF0]f3fR2nNE1\3>H&Ptd>jn$Y929CCfT6Hl@=VV?RF9Nd':qdcF?O)Y"tUBS9-C?pP;4He/R"b(#pJiIdWC>-h#C<\NkO!YM--ETN?MlHte6>sk/^'/k]C2o=ag4(C4VWG6'tA^)@XlHd`[!lji!(NnRM<<^"GVN>aI8F2BI[lBUnJN&:o1R[HK7Y?->kb:XbR-^*?B)VoDEYMh4Z#teV1'gl:P^SDE7MBms'tp0V5n='8eYc?Df,F3dI+J/qG-KF@%4H2KTu[\-,H5glTre.kaFOqMY[gL%!fn5>qZ<6QpC8Nl"J&Ol@2nAfHtnKSpq6PJiU1Lq&$`J\A"Ii](nI.n$eKRkj9?G+bW!#$'@WP!^;H4+6L]OK%74KR:a+9FZRr+O\'0Ilr)pnZ/sE['CW@0C#*0N\qg(RO>O`^L6l;3eHBgK=0R-"H%#n=r#&"[n/O"N3MrP?$nsb1;#-E/Qbf*9Z$1)JL0oiqh06@-57-"c).TGPpVY(C8!cIZe9KHi.'1\lJVjCAepO*NW6kdQVXJ(M2Qcdccl4oW8s9:9_4aG,P@3UYM&C5]Zj9Bf(SM_8=iG;I1MGd[d1#PL=<%-,1kR,#`[lA8=>Z3U5Vr'nK3ra1,me?83Pub-D?\gH)Ch4^%Bg#u;^$q1:#R$k7`^CFJDBP+HVqoXL8;?()p;%g1.d9'X0nB'"$MOU<6sW]Ra-d75un[i^>k0Se?6dOWm0a>#,9>EH"np>Z8aUT,2O*/JUgYR2uJ;Q3:1X/D3>=5n;^WabNGWGFu<^(Cb.s!pe!7CP%nT0PaM6b,c`rr/L&fAW+J/B[@6=9%t'E(GePjNQ6hJV=@,TY(_rkS-j`g;/#`n)3@Xlbb<8[U78p9(![q2g\R(K^Q,&Hb+Bg+qP39_P(]380Vr$SlK9*:%@/`-=@j:^#1=H%'T_F'>/Ts-'Ga3Ud4Ya?\3E.'1_Ik#Qnes4fQp:/ZJ.('Q9n)s;hKjDlr8gMmKT&"V-G_Y.bB)#rR^*t>f$]%u[fZO~> -endstream -endobj -437 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 436 0 R ->> -endobj -438 0 obj -<< /Length 1136 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK;,>q#&:X)OaCC?eM&k>B2MqW9d?r(,;YDlC.AUjNd3cg=Yb+/#F^c^meeFpn+PY\"GJ:]XMgIAH%4AieSo)`!&D=k-W:'gt@C`hcMDK&!]BPlSL+kQ[*`aVLMFE.<_%L^bSI-q8RK=S%q\ID:-aSfG,qLT\6%l&+&#a8<[NY-Wf2t`+Y3_]*i/5/1ROSS!TVh>#'8]%EdMkO0cgiqh_,MA6Ybd:rKe%@I=(S]lLOd\1`R%Hj/]Haa6`f`;]1O1kIe>OVSFX$Am$V=Oh=@P>;3`>/tu/&Q1VMt>]DHENl*D?io\r];FXps4BSkInarS/Z+Z^2T@\hmg9J1Ds1#=DHSpW%*OC:B=f1pRm*9u`>_9@B@WtQObc/lqSO@I0(,\`gqX^k-&F>Y/3El[b0lP#SL,R8(,E`#""#3&0:ph`6ViM88.+RX%GGC;W`JNPM-1?arT!\T[+s+"6C5uYhi6f)FM,(Sk0h9:/"V1D85Yhhs(5.`/JEm9o_mX@RYL\X;H$rTpm:V2pO8rSKs"*m(ltnS(qh/qT%UBP7F2O.7%+@uQLU-4djoR$e&@XBO[./LFu6%EpieNZhY/>MP=^3?H\lm3UNt2*CV6DBqIH'o[%Y>ta([2#q:B1QSBZq+_FW5LBJ>6/l%DjR>S86&j%G#bI:MK0^ll_4VfDHl>Vej%a:.#$?k"8:4kLEOmhE&J+Z4$e)^iWpn/O5GfZ_!B$5mR[b\KA4II<9(s][`NL>WOmd+*L@7p$I$fcR!JZPGWjs%Y)@#n<_a^9(>fMri;C4Q"6N$H?:P%NW;j;3U*-CfXM08TDQ!>"BfpZRDFFpFarD")S+XA$l\S7DirV$Xl+6DLsCVrTG_;euh<8FigBs\1>YLL>=O!/d9l>:-oH@:V"s?$XLV(Ru(KSEQFT$#mkSiA*G@#Pg;OD'fs;Pkq?d"Au>~> -endstream -endobj -439 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 438 0 R ->> -endobj -440 0 obj -<< /Length 952 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0C?#S1G'RfGRn7*u"M*DZk'9e.f!f;&R(PYbt\nb\J[`#;f^W6.`m&!PDF@(D4dsKBNn\+*H\X8B5Hk68]0EAH@-iiud"9SNh!9*K\LbK5LR'"2cnMX#U'CZ[Z5%tQp/ZM7D/u!Ueop@nN(i]hSs'\M9TmTR0n'4=@,VZ75Lq/d0*R2pj;siT7_oS`c.3]\*]>`p`#ZaF%#]=48-PMZob&8Zl0R_YeFn_lh:dZV/aFZLV&ioj]pf$-CGNn$t.lmf0tT$qIm6)msh\46X5!Xe9M)R(hX`?(ej,I#Ru",DkjlC!T^F1KT)db1`>LCfRk_nefa\bcmn)tdRY!tI:!)kf;OX8)5D]4Tr_B8=M&4AgBos0Z3]MF8anlJKL>bt!)Em;a4(.M+DO1Im-nn`!Ds#]7]/*#1A#B0,[rrh+pWpqH0Y*odV2"7G4HnkA$a[QbeaHj3Vk_b;-qLi$K71=sch2.'EPJ#TXn%7c]U$U#dS'L_Kqf7<*eeV9VN_t4JH&8UA~> -endstream -endobj -441 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 440 0 R ->> -endobj -442 0 obj -<< /Length 1438 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0C969,O%)2U?kdJc1U(p,^eXj?.kqnsuFH^rrflT9\9KDC\P!dC;[_KNj7>VRMq2q5.0*29(J3`#prF%F-s)[0Bch3es54b<;$ospS+U@hF1.&\o+_S'"^>4EW.!X,:>%@qe9S2O1FYLIb)i\o&sgQL^7Z/GHr!gY\)5cf$7#,,a3j98fiQ2!93/jD!H(nGTnZBSqc?\8'V79P3NG"oYARj&Les/7CcQ&F$d\M^Ep?+ZA8L>H[7Z?/GQb4lLYJ%W[O8]'$jCI`^V*'%7'!2;!+03`MSUhiaE/[qr3oC7tECoZGhB*:I:IG#?/SuYJY5Ik+MLpr;q9/i-AW'M91+`W;P4?%3rFn45am)&m,U-uX"";E'.#.4b>$j/M1B,IZ$SY7XDD4m$[9;fRb2&UAe2"fGR0*1e&34OWTTSJA@V&571?>lU+rAjK_#UUc^J)K.>%UB?E;P*ipQA]!4=7d5P[3%>0EW*O$em3_C^7#=nm22Tu1BBNlc$*1='K&-R4JASsUnb;*GRt]Mo]U4rVLO>P"TXohHa3"GFnt[5lI^oYNJ6pp9:K4P/M)?!ZA'hT^D`UCK^W1edAt*%-2"O^Cr'2)lpcc)PqBs=APA^[kNe&E^-.irF65Q9(%e+;%PNRanA3CCf;&\jP$(AFpPq$:oro[41UtIhdC^6]L^[BM`Do~> -endstream -endobj -443 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 442 0 R ->> -endobj -444 0 obj -<< /Length 1212 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!;c968Q9&AI=/pdWG'f6[2q-T]]dARL8$.2QA/,uKPtM%#Oei85bD,-;O5E=*MZQUos2p=n-c-i%443PPna'_m5<>ttIi@=l/-r#lU0E\e30O(*%=p-,&2DuA*H_dU**U,8?(qPW0dDu+Xt-]4&Zq9C6iF3UP-g";m'Ttgl>NbMHRL6h9GokmHs#IO7,fi.&_`8/4R,SJJ5TsdGh3pI,N_\9A"lE879:%DQ\]U%pV.Rg#CUl4occ?$i\=(aHqG5&CpT6.FhSc0MO.1jLUGi<;DKMU^V[g*5p[XmH*1&]4j2rS,ed2PE2_q5ll#]84`^+4'<>.Y-VBCSOLhhGc':d-8tZEE,#,\_DI:?K:R9?Zn1?#QbM4Ek.j6&VL\g_6Z>^M^nT3Ofl#*cd=tM7F'^Ync.Qk)gXXL0Y[)#JcGMDd!Tr@]f+Pu:4md[VntUNAMer2Ae_4rZg^,..1eQsZ#'bK8#i@LUbP/HIN'>l%jf7nliT4\QO8npK!DF(U)7ZlQ8LF..YJqZ10;j0]\rM\d_PDP)9?jbR;6UqtOZ"q8;<0SNl-S:IMYB!W6Sr%%8=Xfl:IM*\PVU2@s:8au/d>mt9dF@VuDaT)q(R5K0*om@:V+8mp*&XM5F``"=S<-=jZ6*LGQE?>l4O*_q@2lD774W!S(YYGW;<4g43_=;G+&f6Q$5S8jP?j7fU4gG']s^%ngM__\*GHNJo^W?5fiuk0L4cqZ`]`,%%FU1m&U!2r=!5M6Bp^%L1eFO7UmkdXqU&,IOrScJhhsr([]_^"A$4p(,%-!K9;`Z0fD:#'1+oMFl7M4&~> -endstream -endobj -445 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 444 0 R ->> -endobj -446 0 obj -<< /Length 1303 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau`T>AqtE'RoMSa;Z':?@9qM4`/UoL-T3``sX#S[8%ZtD_c?t;%Md4:16c:!GX^/K[KbKO87TU.W2\7WM$A(FOYi%LA%.;(``tcn^q"uI\n4#NsCV1l(%X'NLQ!T8/hjJk95+NBP^FhTi![fBY.n3#dl)EY[F^E,VPRjd4j%E@+[f()s6CYJrMY0eJqlg=;cS+5=PmJ["V]8uDVSQDDp6(Ij81[FSeD-Dh-aGhU9rFu@NC;5bdV-1g1:G6fTHomHOIHD]Q!g6\#;P!;L]j(iLq&(d9@%5+u3)tZE$eHu#bee0s=cnq?Q@baX*ke;,VVdL66Xm2S=[dW.?'HNd?CPltDO2L$Zl]g=Q0)WnD=7mYs_[(tBX@COlBR!#&51Xu#T`BUK)nasi-g7jm^8(g+A&SWV"cEtDn@XRXF:gcZt,,tor7`U5q!Zko(QdR9I\Eh0,6[9g,"ZDu<3M%5Aa.#eB2o%4L/ANiPM%:IWc5ioT^mc2bSQSLcj6&Xuj<45:X($h-m:lKH0n3[JH,LY$*EFWQ[+*Ws]XQgJ:WbMtRPnGNHeUWEAj<'iQZR*^Q$H(RBB_:tt`Q\p'@&4I%^K7.gk!R4X&WV+g+_M=2VJ3*U=p>@18gRFN]oAU9UB4P4b%r?gjAbF\2:m)lge,,t8]0!qfGBNZC*S%u.eEe@K7IT+*/e'tp?S5WVFr7-TSbCE2gXn[=fW,!9tX6!9ocVl\e*>/"bbJbYpepQf%V`7lc:V!ULK!Rgg_:P)C9r#7J"'WRJg&^/p[p@.kscX"JVadKtW!heHJX^24nK/G<)asP!mEt5\>KRm'ONFIJCV-i=:%Z-M:o@p9V>PB/\;\[>tmK-T_!S7L7.rikZiBV5.V\kRiDEXGn5_6E#-ZM17KO:an;b[V48J8:\=F2f<"7grdM^M(Y8=2,E;-=>.krAK^Q_!m7b-hUl$4BW@)Hb!u[=#.1$u9'mBk!Ii28q@VAY%Zd!J)+hdZg0atu1iJ*Q=EMiY$,6Prr!PmEu!Zj8F&Q^:r[c]3\%[JU'!$b/JI2kU+Rh+g-a%8emH(N&\!5Kr'O;SIR0(S854cje4rl5ZiP>LF_d/A])U\L0OA8'udqb98KI!X9M)-AllG3^,@TAcAkbKQ_M&gEUV!+GORe`DQjA,KY4"7B.@*I.-l^XGAhZ2@>1W0ssZ"iet49G*?e~> -endstream -endobj -447 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 446 0 R ->> -endobj -448 0 obj -<< /Length 1352 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4>BAOI'Roe[d%f([WWJkupM&ARB=$'X2Mo%!S"1%OZ(om9*.ck?^O@n(iWpc5:+$S2Li\92mss<@-a2F&^dEYpGk:#Bn5^4`"nE1L.#[3-35[pP]_TSEGC"Ua<=60DonE-E*:-CsYKX5\nG`%AIn>DmkHFQ4;e#S!6Q4rT)/cKA\uj3^;1\6>1IBKCmq/OQdZ7kN2A-g+bm#/9Vs>APq0)GjrDXc30#sE;?!Y1,Ag@cY"\bn8EI3+TH2IET>^O#O:EH"eCY[jdO$'/VJK34a>>D=KDs'@tATAta=KA+nE]`n;U)]cSdt*dU/+Dm!ftkBFN0R,sa1>m^pgqDIcYG$$LFldk(FdL_T:cr6miH-a&K1iZ*QCa.ANg[OPq5\sfQYe/Dm)B4h:u7apucRZ_Y9H94#"8q8m_F+G8J"96*)\:t^$>ejb*qjL@l6jhH3Mj8WU([\j/PD!50>?]JbPK!#MAg`5Kohk&e@:SNXMBbb6#-$^YG=Db<,r1FlGC)*;!-c_CGQ)\Z^eHJ[RQ^'U(Mj+c7QG:]AQ97;%YV@*rJiHQ#m/3&d/"\_7"bV`i7^X4`/S<=!^th/U0%q:=L'K/(Whc`)!-DAfpKVZ+.0'6euCe)):&CAnQd6`=#OB-($g<8PTl)baB4!!LkbL]>a0d7^LU+,e224W1XPcNaYUp754J4NQr4t][?Tej5N-pDcI*oH.1mVDn8]S2OP\**S8$qIlMG7ohG[?:to'W.C];OA/-iT4?6"O2Gd!Lg2GCrY-.n9khMoM'Vh4eIIVFS)s,bOe"4EF=FY=`rb2^ZdRb>iC1Y<65,rY9[Ck@;(e,03Qen\4#Sh`)B!1b3a4FF"Y]@%a9jj6fi: -endstream -endobj -449 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 448 0 R ->> -endobj -450 0 obj -<< /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!#[?#S1G'RfGRaC@;_kH?l8GhULkL-VhW`X>5VCY]NbOtFeqq"M;CLRlA#P>t/P06VF*\]<;La3I-#42!u-5nH:/R.m8[kTL22+*%p*l;,DS5b8YE45]npiH:O1Ko?8^>6[#8rRL7Gi-]a#Ns`oZ@1!8Ar>L=pg]B<(j&NV1ad8R6RqI\sP&Mu$V`6e;H'AuR8Ml_e*f_kn\"A6ljYH$_AeN0m+9Sc6[pu@+Z#o-A@IGBo!YJKE>`S@d[+P^XS4bd`LZ>\W=e)V`knS.)5/u=s#$AV%jRL8WVWfk%@V0J=lOi'K6I_8A."S(($'3ZC/1#,f0P.Z18cQ\QG^DRl?%2YH=f_&fNN#t5CM!\d#_nG5-\HVi[%+>T-%P&Ue,g8b"^rF[(O=C9lbfi!BZt"PY+i/fWt4QDW4'BAab,Dg]i7+XZbnuc6ChfIM`k@a*7c749b=SpWh+-:&+Q>W.`"/-CrXMKpkK>P)74PSUeC#IN:YZblrh7WEOW)!Dmu2_Bb\aVMCghje4)/GBcgc_KY)c^2P*Ngjl*S#WO<)VCM/4SCmFcJn>i/TkNkk*h+p%*"!)2:D[dCO=mH1lGKnh^R7OP;+rF>.Z.=N,dGAorTr=W+=c,,Vdo-h+c=q22J#%&pphclY_k'*s:M)PH8pF'4)kAc/F.R9[+nW^U;r3tL[i;+Ps^Dn&:eluut#@DI/TX.Kq#8sZT6h5".)ZYiYHqV%d'M5fq&^\mr+6Z*PThs -endstream -endobj -451 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 450 0 R ->> -endobj -452 0 obj -<< /Length 1205 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK9iKe#&A@7.pt!fc_Qm_*C/6Mc;`_8f+nSYn*@4R=9rta0N*rPY[$//m;iZp1^qg-_L#m7q^IsY_uba5OQ&,>mEHoqI'VMVC!2T&.Y60KCc-jIhj0C%o@u=1om<#`lSS]:Eke:?n1-m+ue(o1nDLs-E17$AE_S`pPM0PF_cl6bi`^<=Y6A<'`9-=l`8n,p!#q_Ne08VGnB4g[Xc1H2GAqIORI;3o6?Wm8Si"1'BO.+1!L@#B9Z2N'ufH'j.X[.QlDN7,Egceb`/#!rlQCg,8`4CNcDQ9[W2/G3c`,!&]km>BDs&1ej*d(BSKHJJNkA5*m8pjOX$Z3Sb>.+jY^7Qh%-ID6Pj66NDf#"4'.u:5&aI+j#b!$[0nTX>5WcZ!8Qe9"#'RgJWJ+OndY3'@L])gl-*\!J(2TaeL__s>Z`N!V\fTI\r_p";qDj>#71IM)QTr*D#?DM>>&nH?W@b!n+BF/IXY@r_-)%&&'Ys"1HhSg=i6r\7;Q0R(kmDV&N#j-Tc%e)MJ`s=XQ`28*la$$GUbMBbkCBtdlB*j[5\$-$.Rr)'s7p10MJcCpPH#@4L-<%L2O]hR7P;L<4aZLdj@MVbUdR2K?jDD`qBod>0T#Y4-R)\fSt7aYJKq^;@)fQ>"Wc?Qu4D3fk/qj[`;R.@cIPOZ`u*f`(R:o#'iVgD7t,#7b`+N#7-N)U#/>H4i1#\CneVP(b\JYs3tQ)p$;SCUrPGO$[:34odk#J]NL<#l4Fc`mWr./!>+^ua-[LToM'X:dKXs:qn*oN7C_fAXfd%EWF>/D4Q"M?"8-)1s2oqAKbEK\^AX'FcOG>!Nb']j(Ss9FWWKIAT.I^NI3g?]4hq9d+/i!H%K~> -endstream -endobj -453 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 452 0 R ->> -endobj -454 0 obj -<< /Length 1295 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4h/f>L&:aF]_:pt+M%1\cO7oR;,ZAoif-YM6dW@OU,@]@0Hij3!rq-F?U]lYYpYL(Yh;JZM/)A%sp8A>/(2oOgff2ITr,1rlE&k/g^P\_Y`.nrs3Gq(h&4EXDEqdp8j81hdUCG(_8Os3(8UjFacV\-M2XgrpXn$\@TGiq=*]G(Z&0U2_N;6V3N.jutKX=6\p9/_PpsqiBV\uM'BS_J)[$?5EU9$Y42Z"f0@\#P>=%*r`J%!N!;!oGqB0H_5[=icA3LS_?mGD'SIiU#pTO8XZm$N)oAJK**=##PE+r<\jUD2d'@I?h?j.G<;+Tk$5H?FPdi$n)_beBSL/\!,hgJO0a1^lq^@JROc65n+'XR6(mVa-f5HMW0rt-8rSORSd5934_[K"iInS7_;0/pP6[Jr(@&7rcX-hZB$g4(]SrRZoZU/QupT42"JHa$,EX9MKOAqTKu4.Y_"H^"Qtk:B>]'R9ioH#>M>E[4\3aL>/M!7QA$G8E3:-^DZ?HO+@im[E7s0..oTq+f#4.S"Zf8$$=;b^n&5X"#nuXiR%[@4'7*30Rh;pcgbP6@:Y'P(XaXOVscb#\%?3>h1P3@V/%X]t%*4C'_5L4GXSF3+_ACr4T;C!I/Z9Wf0$aN1EicOPXj>!b,V#>3onKHom>Ud3'to?rBr/RFbqg72%umhtmGp%Hs,9(e*s7W[Btr5s0ebB,Kpdb4%Nn-[q#;!>-.05mh7kJs`5WRJG2;)%(^3/poV.PC_nYlKcK`jn_`O9l;%;I_T4fr"5GWEsSn:-cVF`\0sb4k]uGX6Ln(_ETFEqoAp5p6P4lVNb4L^6*VJV-0c"r2*9OaBoGZr2FMS6n?fj-t.@.f9?D8AB$R3&?&kZK-Ni@5L!/iI$]$Tl5d[M>#2,3=eGH#@@?jfG40U)M*X@ap2OO^c_c-=`eG%3:&?mW?p7uPF["'S:T"=l!3tpL/6>7.GjE3g4RK(R=am!eRUHlUn\@)q24Z],aq&D0Qn7['(>].8df*r1SEo>sgM,:0`rN3N;Z^j!PpC]j,pq\\.L":L^f\1^&~> -endstream -endobj -455 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 454 0 R ->> -endobj -456 0 obj -<< /Length 965 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHJ?#S1G'RfGRn7*hsM8/$eSsZmA+cs,bnA5`W>IUZsOtFe1fWW>854#(OS#d7fM]L\rI!Y6E2`ZjFn'2)%!=V6+RKR"]5p4N=";!1-EeGT++MIqBVGHGgGliGHpp1/Je=p+LlQbtU?]"VXaSAlE5d>sZ..#o1VOt#p^0SrpB4&B&4TTK=TS-"2DGEC&4Dab@UGrr)P+$$G.9WTS1LQtp.d^+AZ^Y--)jW&Bk5I*MFZD@6ZVDL#>DF@TjPkBc[APZGXhK.MaZEM$/:VRO)smPY;'m]e(?eQ?T%r7[p*_tB$^n,^o=mn$_fZ_j*icY&igJ^YUk"n.!#`il=A>qFVm-nlKK`cUL5;98;dN6BUPA>Y@"!56ke#U$<=!(:i\9Y>j(#6tV(AFO3%UjZ@TBp5Yn"H@2i006^:qVgm6SEEH!Uk'R5FRZ*#Fm",o;aYeI^V*+rMM":Vlm>&D_DFe0'o?%p?:kILp0^"9i\/dFAW]&sfFo3aGo]1=Wsa[,CHMN9MGdUT#bC5dEM[D5k4f;1I\]Ej^eCcC[8[5dZ9QHq=GR,bGJIt;_deE;&_QqM;8nBJT./sI^]OWZ[#uLEuV_))YF(1R:!LE[N?N~> -endstream -endobj -457 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 456 0 R ->> -endobj -458 0 obj -<< /Length 1000 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU3a_oie&A@rkFL6s\&NMA&;3?f3M6C%f:cAZ,+&gW#8]90(6Bpk2$?B`iP8;g&pE8La!K$mq#$!SYW*]M.X[m#!=U);V&]dQ$c]7*k>8njIbr4hZ-LA'a0`Gh'9/f]N(p)Z!S&JkH3kp8C44+hND;fSEa1!inR']O7__:bn&(c#LQf!7>*sH:S=I9M(hja<;mIcKaGI3s#5&*#u5Jl\\,QbK!;hQNo,!]`/_o+*KeCMIUm.+,CNQdUNP<4>W)J;X-X@+Zrq8),HglIU7Q)ECS\l3V0U8[DgS"^L4Sn)o)RsdTW)%Rs\ba&"lBIna)1jb))e&2SG9s"3D(&29YP]bc(B1j]gLEId),,M;AOEd_R"'GH'J6b3QC6U2igm$03]3IDoMf8l0g..gE`BLn4S`Ll/]0klUOWS!?&DASJ.]2%i2-Fh9M,GTkpY'U/.2$/"s&4e5KqB&`NJ(dE=R=MT3+;m,*_ku%XF40cISGb=!kd2u1=$a%\[+2]E56ak2RY2Br6@c$EQcejR@.sD1:LV]cY6ht^3=0+g1$gIt*244fa_qie9U#,t=*K`An+3E$V_\!Fe4Otl18dNF$^V00n.PN+:^k\r8(K2o9'efirr]pC'F)BpH'/Pc-oi/FA7-`D&;1;aWRpnWtG")nh5@d92IK~> -endstream -endobj -459 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 458 0 R ->> -endobj -460 0 obj -<< /Length 1598 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm:H*KAf,t"ij3kIF^"2H-l-fCJ=oL$nJcVa(nFn%n`h]XWFKU5H)^^O!_J1V5dj1Lj%:Cq2cK^I%?3jT$LoSo9!K^/HeUZ2*Qr+D;jkrdG`fC\*i>G:2#hR8=(R7t7r>>Bn)`XW4HZE(AB>(f\]NYG)PfO@Yo!Jd=j0dMCU]W_nV^Lp!C_OR3TBp4EpH,"g%<[j/Q[_"/X"EGG8U:;pl1GpT(*Z;*)kh_!m]Q"CI9;pY7Jl\pfF:>WLZYj1l,UWYqdEBr-jWh0rWn2SgDd]BRr4F:?(QM9RU"NI(_\hM8hJ7r[:?hSIKAD>:%9)hP-LGrE.oarO-GR.AuTRl(%I&a/Tlq<2c:A"RC6&Z:$KY!>*&B]e+AJq'&E-,8<:QH2PSu(Og!tlqdS&[h`5GO&l,J8Z]e).1n*3/f8.V4Z(.M8k'#B_?KA^#I"IJ0Vf1K/C%562/Kf#oj9769WboI_0tseGq?1_@E+,k^Xd@Uq_kGV%Qc6t#cah-T$in^PJrWXoe:DY%4P?pGU,Ca]\c;T*doS_iNT8\D#kn0&`2d)R&gW4H_/5pAOdF2SGQ7ju?j9R'e\:";Y[sD-T-nJK%Q=i7[Va2_XqA^pei:41%k\Ngn54VOPs)he#-%rlT@0f6d#ec=%]EW*[1P&1VQQ>#l9\P*'hL+D9&(O_)O3nSKHohQnXPmS#I3U81O?JIL3d`KG[B!V6gQ-#m&'VXfi6Nj@2W%-SC+]4Th@j]#H"d"Clpr%T(ZtT0eJk9_tqh3h67=m_`PY/ZWPX,_J6qb)-:nU2([:?p?$e<[XYT[[p#]Z\(YZ`"=u+^q;ts=!US:g1gt$,5>$Z!S]/Tt?lZqFN?Q6@g";W2dt<&r)afE_Yjoh+jb(]DC43ZOa53s[=F^I*V=e=NC'q0;0i\^kBrM:NLBH`jfFlk=bgKUN9!?H6&X&(,89hK(4>0k=YH/_S/JW!#],7^Le20kmqCY7QlMq'DW/u8MhXL-n.IDTU-@>>0Yd6)-LV!-kq#34<]t>NM]T*'F4P^.QoS&H:H+=84k2CZu6`'^.@8O'<)qGd$NjCOg<#>A&PB`jE8D/HK?ZJIYB5E%pDP>E]'-kO>G^D.?1:LAs365!j.r$eYcA\g>[#APo&bL5?pTOG[h$INihDI\@[U"^Yf\?+2u8AEnbf/9/Lr/(o703"D\%`~> -endstream -endobj -461 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 460 0 R ->> -endobj -462 0 obj -<< /Length 2370 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatTJ?#SIUn3+P'fSbq:;>"YV*Vtj5m@#UYR`$4#/42_HF=]g,>tN>^YTH)mG7m]YPVa6T_E6TjmuDT^qt18D)IWlhN^E=e4Dc\@a2lFQ#Lkcq>T[Fq&IAdT-&H9e-7pQlm8FZXF7K+q.OniEU\-H#_SQ!8AZ7-"PT8,F@g9O5"gZg%:,Uc=!)&O&I_%OUJqWO7nZ5PRT)eO>b?iq-Y;KPr0[!K$1Y8%?7l%DlAF50d>LM.*^4]-cTJJ?Ps0%=D=nnt$n)p;S4MrRO>\A92tDLm0Uo`,;n8&OmW&*NY5*d=I*_=iRp.?Wt\5EBs)0-Sder_^l(ch!.VaXh+EjYsg$/j]V@pou!f&%JI=ZRC02#P2[f6.=moBCr%`Sn+1igcj&2T,ILAr'Q\##>==>#]fUUXpLpPe&)-8m5!\5:7^#I10D`;.XR`/ImYeZ(ls%JrGPO4A7/ZL++&,[\l1_g&kc9A(L/D)H^<-W2hMfp?2ef"E5c9>ZY.ZOqUX#/o(4#UuIHWc_5h1ajn=:VK'IKjK`u"tb4&J90Rl>L2fqgF0:N$rUH:_h/-GIS)7K=mqg]3`KXX,J)3$Z4@_[q^ldX'O+fn4*[[IC,/ENj?@KQ,D%!J8o2XID0m(tn$BGof^-NcBo%=\iY9fi1+mo&Z$m0$]9ki^qMWHC\-t0$]uA_BLLR9*cc]G$uu$hpfR[E'(r4WI?06Y"HtGGfRs32k#W^=NSOlp'=+u=+,tcR.T3QT2+S<50j3+o)@,&eaHT2bHoO0RQbV`N^HA>S[5==@^mciZ8/^C[]2>DQVm,QhuIEm(<1]6&[o7]1YKhk59nEb@@sNm/^'O[qLKY9XR`aOH"L`i.q)3tZ9Pn2O0qZE$(MWu9oJ+>)Z;u]m\hfabBW`$0b77?iA5;>M0WNF/nJ!rP_<`8HuXRr:M2R>#lNZ]0pQ\EQ9NDcl!6kb#>SU!El`[@/#=$^n)ThN<>+'eP?B[mbItFo,HEm#%[Iu`;(%m$8LBgZfg)==u\8<=O/s5@aeO<+)R=a;fD+e]!LT67jmGIPbJq-t8<4,(nlQ5F+0o(RM-$s`jFq2p&ih\+Dbb`K&3]e6Y%JZ'_7DMtXUif,_3$N:Ni$B=5_jPB7'#GDPSrUg6C]SDNtP?pV;G=Mt5l:\`!a9-OAY4&VK-Go#88\s[IE,.4uV#YLi(mb!Ku-NN5W,3K>\)@$A:p=o&dqBJS-#jm*JVdI_cXhWpIY3+>ppFDW0n`3:;OfA#1b!qVe:9:8k!75Y>Er~> -endstream -endobj -463 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 462 0 R ->> -endobj -464 0 obj -<< /Length 1733 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasa1gJ[&ioK?R?iIM+Y#g7G$:V/\B91ul)$%6MKN,b*#6XjUQ"ZF'lHR2n)NY<:RQsk*tF2'4IVh<1Yd(q>TS`sVA3m.PI>ks-qS4<')G!1LgB=`*^*"dqNS-puA;no8p7$,g-2*49HRq!5fg)F.i)7S)o;*,s);^9?P?2>]>#Or8gV%3H.NRimo8BE!c`kF&?tp7*D_/.UED^k[M;DF\s98e2\`k#Q,i,Ik'$'fHYH_9j'u\aNC%*3T_iT58u:4a2P4*7A3%WZSc`,>8rpLJc%2GHqSJ[BBCVJV_nK^\2b)=Wo-5p'c3r"QZfZ'_)ROabuhCtUYaZ=R+O$)\0h)2JLRYnM`h*]>J1o=e,*R:cDUsL4\%0V^.Le3c.i_lllO[M+V&7lV.?tih[KLSc91PWkWZF*F/_4\>PuJTn0&ZT-WjC-JC*6eBT#-;raRmG_K6)=/[_;;u0/l3h=Q>"Fp:9C%3qu`oU/e,a"5,[ZkpckHE\h4D=Ua^&+/]*;q82ZMN;TWk_+KXi0aoOtmiuT#253gR)$aK%(aIXfNfg0@G.89`LTNkK`\N6jk[/!XD^U@B_kRefF#)rUoZ=7aGW"6oR%YB"UMu`o?EH>4*^NWO#LT:rLWscOrDLaj?TqB)Iq:-a`db#fMI"?B"G_qKEVCrM^k.#k"KXrkhc+Y1+r!cW?,:mq2m[K[SliUJ7Mg@6uDP[(..!rJH76H(.D[g%:[J#t3r5ln6m9(Mnh[nL3ru8\R6Jl5!d8sjP2JrUI[dWL6EQcQaZB_3Adg*+uTTdPZq-c4sY:34PTW-5gj(s*E?-!6rN-RXUZtUTpTii=N(0"9Vo,8ODpHl3MY3G7l1TllILM)M">b+spq]D+qHZ'sJ].6qUH-)c:(C*!"2qH*LE._;:3oH54,fnO;kgY:i9AMoC[]c6i?C\3\Sh,mCQAf@;Z*KePP=9C-H4<'i8&k:0QmVY.q&Fnau;K]Ekl+OHa5kY!AYFj)=;>7H<3_B0knpV>?;C+Z^I0U`c]K!]Ibh32lXYd[M6@geHbQIFRf,GCGHa4cQ<'O%.KLGq4h]/eJQ-,e]!mNlg%B'4,Cik&/~> -endstream -endobj -465 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 464 0 R ->> -endobj -466 0 obj -<< /Length 1252 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0C95iQE&AJ$CkdF(10]GHaZop93K$C"t1l8Q*VHCntmAP0'KTt9cd/Uhe.$J//ZK2jQ!J@1[^3O\m%='ZLSR82o%T+(%kG'_5N,T?n*tAQdHBG*.`Ae]!"eSQ8hjam`4C$($bXsfpjccVao4$[E*eb;Gp?)90p`,7mmU@OH-'?$0U8he`<:IM[$;UD#,pk$7NQTRJic7/-0qOT:.UW5IJ2NN%7=c/hHuq0U(^!@"l46!f.,p3p?A!S-,M#+$(2Rh,6(`!5#9dkKST-tj*9uWM-*$7NZ`(/u2sLSr8n(1t,COcWH[0i8@GD3]?X[c[cY=b3/Yn'KEQ)dm/+64]b9mGR2=DA5KGfRXKAi6W3(a(l%d`3f'd92@KR4]-u:&K\4VC8aFHA[0\N71ZV\qo,g4:G0s)KlC@1jKX"s05]('m1.J7ZF(:))BT1bGNH!.WlSJX%0H;(@hRsmg*9G)0[I*Q9":S3a6:KJ.eDLS&''892$HWSs,YP+cZ;UU-K:22*l!lVd,4ld,H+q"TJLkdT[#Q0,a),,'*'8+ar^f/O/Vm_aOFaD\M!!PO2j-@`P%N[7IM0M3paTho#!B.Tm\JV6j([*dhaR\knH+e2+;M@qgt1C"2o[Z-s+[Z@*jJ'p_HK.XQ4jeOGoh@*9,;:ILlUq%dCBJW%OLm@eDW)8_)lEJ.PG(B%LJb*KG["m,lJ_"9[OISQXtZL/dQBd@hY7roS?=9mip3K:u$JfW*MXZlgF'fh7A'R8>=D28&n5jr.[C`%3QAD-"I3FM7gXMSoOEX>)`V:].tT&Lr_1U+Q+5%X;cC1n68\4L5[rq0h:>=:8%mGH00ji0^q5%JQ@M8]QUYD_Z-5admO=fd:X<0)VoSF*ekm'DmMVkooO/%CjfA+`a_Ep).fWW6OjS)kaM[*!\D'QWdqGj3+l;@16C#gp86ND9etU3A6i%lt?dOT~> -endstream -endobj -467 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 466 0 R ->> -endobj -468 0 obj -<< /Length 1441 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4h/f>L&:aF]_.1nbF@[N]+Eba>O\_*!'sJhcG=n$](1WitkbMrU#A`="@X[=.d39gVPkSXn?:;>MBn$D#(sa%R%AdK`kiA>48T^B>5oacBFiQXOMDl&PWL3\$#N)R88MG.ko*T2!LlRPpp^R@^V/SPgG5J)8X%cTp&Ko)C\9,PfIJ4uV9nS'N8j#,Mdm>(TnHea;X:%9RTu2lIf@:U8PF\.47EPI_4e!`#RuELPC,qAN+)J^hD2)+_fEX`MJ)cWL%Ags_2k]SDU_d-eR7Y4!IHXn=.'.DAT?O56Mf:kQk@K)M\$j!\DcH14QGL7ZWCM]iO.#qR/B&abJ_mo>rl__o9QA!B\)0?leV(f@#d<*1W"7?eRH$'C.do?Zl9Z3#&W-?h^pRq#`i7f"pdntHa>K6(J^j&)3cfgH=b5k;fU`Nb%M`rBp+/e'\,TrYP7E7u]G_lN_L"*)UFqHJ`u]K^@K;t7@kF2#F!-\-)n198ODdlp$U'\Xf^G1+6Fje&o_f_fZf4EX"",QV28$n_B(f]&_Rr^,LY2tl)6k;-7Y%W@GF?66Bc@=d\!8nA\)N#6##`-4H?Hh(DNE>,3<%%AHudR=^7qFGOh5#M(5QCDl-(j??%\5g>dYM*)h=1TBDB1F%MM+LaO&Rk2,(<-JocnVL\"PQYu#sUR!aJ1.EtIKeWBp4;SG:[P>#4UZ3V:&"crAM@g(FM0@C7S&SnKWMWF;@kr?ug'VbQ2Yg%"QF"D;BtPLG\OMq5M;nqo?%`o*`7^>+c/gZs%.hhS^nISncSr=m./36&OZIWJMuN=dAeh?GCVk^6tN8i3&EGHXI0D^`j"`47/9R4F<7,7kS((HP/?iKQP?&\V*n\=.CA%4c/VPO6F\^hY()OPd$8\gB+,N1$^MgU$b`7RQnHiSlr,".3U]@lKWDXlV\5:AX".L`6MuuJc7AYk&=kVbsdTjYge18h*PpVf,LHd8X4H@W]_gnJsmbTQVD\HcU?*:sf5Fn_7D03d:#EL'bk0Ale'9#J*d!*YI^1TFPuW\fY[_If\'5/s$~> -endstream -endobj -469 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 468 0 R ->> -endobj -470 0 obj -<< /Length 1537 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4?#R&-'Y_ns@!Aa&nmZ+C2XOt=qJ)S4=)48mAsju)E=u;e=rYoXhp5\_:L#&^N1>d,\^>Tg]13)_f`^-AB`[,t;T)WctrTPn_;34WcGmG4!fFJGHS5luT;LsL0i5a\W[:<7qoGL3]`f@#=(?LDh)4`/+<2!&MG^g:fr=5\)D7lK"/NPN3VElYu;E\LhM682^`WZ6=_eC1b%7EtbM/jKlb?Njq?lAd@]'G]PO,oEc:)E\1l4`(\[Kq3Sga,]9I?X$R=7a&."3RBO:f"tWt!746?):@=5fPVD(@'R2H0%Rr$,XG4$MiOR`pLn-YqM'su80s@$(E-1e0Cm!&J(G;U5-dm3fSHLN\Zet%WtB\^rScdi=auqXgA#3tK`&Op+V]<_Te('iOZ!&>`T59kIXV+jY;R6lT7gWDL]_X9TSa)!eQ-QqVtLd8Bb0o/MC@,K'pC_3?tO%kl:5!CV;Bn&k,Tsbq;H/8fBh=a3g;iOWJ`7eiKSHe3u9l\EXK5jQd003A#2bH/04[0_tHcf4NHtH4?'6aRV%(]:6C8pEX9'O3d@b(_5?sT3sDq[!VcdqQWM"fak/tn7T"YqV7nQVX1g&H?=Jkn>qXYl?ChZ3@tY/uT-ddA5eJ@F88QM6!4Vmkl=$KS(c+?PlNf3h+N)Fa^lj/DaPLu@8YB=J/D1cMD?inOI;-BghlYqLT(8hcAt@cAW\lC_a?!QBl%OOK)!D65e)2XFr?jl4i>o2B]_<:IcC)P14'E(V++isMC@`5p77S?i-U6T$u,,ra#Y\h_%7J%/d3lLYC&XBb[CLPJo?%Y%p-pNK\M=]eh'B%7ZHVEe.%C]4*sYe`n0\biU.#EU/RY[s=2>/>.qD*+fh`oW2#Rq;XYo`\T41hW70Ar7+`7cSmg^-'LDKP;=.D_N)C`DHB"PG]MN-'HR~> -endstream -endobj -471 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 470 0 R ->> -endobj -472 0 obj -<< /Length 1332 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK99\*g%)2U?kd]C31*T/E;KHS6S*>+E8\K:nBf[-cVUoR!8YP3nr;0Af68WQ&aX#o)!!+/B!r-0:R87/&NBQVQhj^es^@s=tT!*Xr_k^1N9G#8$I-:HL24NI[c9An1?[Mg!o09T,`k?$R`Mqs!I/-`Z<;%T&b#IgJ+*\Df/C0AY^X&c!mdBO^hu3N:[FGd0RVMQ&"f7gj"@c&02tD/lY/7(=m@F-3Q,B;S^-)6o%+I9+J-"+2PJT6stf]M()RK!=Xm2$0^LUM+FpglZ?@0%*uQZ'2"``@kh,r55+a_oa\fNp_oldC'(Q(;q>L;Q'h')S(G_)il*8?l':)q(Mj?+O$*%Q7B0)P-'epV4Y$\SH'P9D1'tO$[=6<,Gi[@1*6*C2BAqnGXLMAJiL,3jSM+AULdD14@[f>"AH+p]W`O:BE>0#Te(qm)(hWL7ggf9L,X-;9?..90?cK565`JJn?Ck/f1j7OmV[`"6hfk_i94N9sPklc-@Ff.,Mq+e,2?bKk-oXGi80Mi@iE,_1Z1DO&0@mjQ<.[gU.FLg?SeM7(Z1cQg<*o5\b)WghLCi?bNULk4a.]8T/-`q\\-(3!m4gg,%d,)DAW/,;<%IWhqr4\s\K=dFS9'?9!G!o7_"DXSYEH+$L#F=G)KA0"DU)a^7*;e%CD/.WM.+h-J5+qcFP#7o2sq)gW#'_5%@-OO:Y:ha,k=_OX!t2fY'D!D2VXOPBA).''KYSEITr[+Rr+''Q`2Xq.G7#fbiU?V3k,4Fto8j&OD?t8Yr?U$A+Ie[=*Kf2i(u4k`ML-P&1?V#LId4EVY~> -endstream -endobj -473 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 472 0 R ->> -endobj -474 0 obj -<< /Length 1007 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb!#[gJ6NX&:NH>n09Fu'AjG7I4>l.<)i6kkY%nTPkDm#2?>11g97]$g":)1h..+rDg$0`b`$1^-97S+Ni%H@5l`MB#R<$`Tb*:d>-7t@;A.1YUVWW56j4js["b5M00D3`9>[g@g2Vu@3BfDk*=@L`EHLAV0DInU&lg9)gdq!QD1*.O.IfD/+qdE;Dp)`(Yoji0-jRQ1uo4Tk*3Zifa*3nZ-Nbq/b2?!QmXpHCQl-XA\!g'qWis)8N9c@;W^kgmnG6`k9hR5mUO*Nq?sUfY]8?i2T8k4H)rWpFU/0DD$dT,)h[3$75:jQ0;uL;aIA2LP4"$1mE%udOl/&,6AJETQ)!&[I4I4:$'q@N^b"/7t:0qU^tn#Lm0X8=V$YT&]AHc?70'MMi_H6l5UGh#i06*GP^TmDKQc$mn]!"-q&L`SEl?]AOjk-C/\.9Dp56HWU6*V1i$NA9ln"q>-i7Tc`c]GHPKajS>Xq/[hu,gTDrL%"0hK)!W0tu-4pZ>X0C::Y@#:(U(EI$12^O)aNWTW.jH]7'4r+0CO`A;GjO(!V$EL8_]m7f)L2=m2?rQtN"$d!YP,b!kCLS';P'?XUb6s/D67F@pr_iRQ/u#<+^YIW(&5o6R*25KWO5E\@q,kq=P0&FM3sbLt`(#2RWja&-ZtALR0`;*5;RJX~> -endstream -endobj -475 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 474 0 R ->> -endobj -476 0 obj -<< /Length 1111 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK966RV&AJ$CE-,\i)81:%Vl#YOdn-J1,J>q)%`,Gg>7Z->cVZY$mZmqe^I6D#nj#YGh6`b!Ml6icZ)PE(?gamn<+Di.2Q";3U&E+C`pa58(t)1,gqcHISFA)P3r^K#'%$OC*dECn?rm)9Y^En[r\rQjN_p#Tk/IeD_O57PXKVt"l/`oH#h;R!^12E;LHT5RIg1leLX($,Sk0Yjp\%N/N"i1aQDZ)fc27bZ9X*/"_;1Il^rf'j29(+^;@M6d0HjOp`s'(nl%1,Np!bLVbF=qF[=a`r^dS$PH'-1&p%+Dej;g"ma1"q`.[p8fH/B3KE36JZYhCNat8K_NJ"+eGeVGZRcheCRMTO_W,bP#Ubl[]=-VV[u7I6hVZ]1^)K>%kX[g0J2Tih,VMMI<5Z3g#Cp.5qhD$fb@\*kD2DRrgUIP\P!7W1n:d"-^>8"[rN`$7S'H0a4q'Zu"e[Pej.FVDW=dY6UM&aGA\(2bK -endstream -endobj -477 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 476 0 R ->> -endobj -478 0 obj -<< /Length 1456 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHL>Ar7S'Roe[d%^]=MC;?2mV)\7/40XnM7]+O-kqTF[E,'ea[uBu99Bp6`)+1Th3&Qpnm$Gm+6gtfm,C'JOQUr8U6p5OC5*^hr?DRCrF5-h/rH4=`q_H08@NC"pLhc5S-G?tc851]LHXPmrq>dFro8dQRIf*7r&MAmbasMLXsT#=2fpbRp=NG6S76Y']3G>*Pd68s$mZ4/6`*D7e5&$DUfaM4mV^cR)Zd31q2j,o)cX2tIaZ@jN[$.bS:FHQ:2b&DR3/!3*K\kF=Yp!\b@IqbTI7*R6rl>!)a.']QWt57.`GuQ94;T[6qYU9cVXDN_1jZ.F^HS1dV@80EA)Mp3cjceE/`!ijf7(mAFQt1J7(sQ9FhUr8-*)3"]Mp_01LB=s##!]^bGPGs[\P?cZe=ec9=jWpAR\eDdb7g+%sZT8O-QtZ']"]2*"Jn-*=%Z\4+,t*S;mYen\DgRX,+j7G[.026&>?F9,uJ[NQZ*g@r1h]XO/qpd0[Mc7u1X9Bsmd'Cc^Vj=AL9KW"7Kg,1t"FfP]K5ZqJ;Nk0bP&c7V7:-pJRd2gPRSA/h!_MOM+tH]E/eA2dBjH/9e15*j_G*C7$abhX9)T_q&;t5"L&;LLYjI2*-8aplrQHL]O1Q-&73t'J`;j!gNp4Nb:s\!fWfICa24=&XY5`UKgZ;::^M&1l4[[1a""(YO-tT:Y-MIbFpcee#?W;"HU9_5piNRhBEG&d+JpVtMF9maO?^#H0CW*W-&-E&g,I'"/gn\!5j+OABbmT[M'7;fcB2l#B.uI>/rN+)\X^a#.5DYQNO5EESp<:ofVJd]f`:nn6gtJOXaJ$1"l3lH;2WQkD7C4<'r6U:eM]=:0dKf3YBE+e4@+b^l`?p5CJ#+5B4S_%*qf!h_$_`.H+D@"""@iBKT$EB&*S7`+6+s0j,,f"uIZZQu&%=@XX8QKL+rF[:;SX>m2-as1GheUa4BshB9&M%P^Ed5DlFtMqNak(h9:hK_t`:)st]e.G,;b^BgpU\m[PMX$>MuN]hNie=L'MkrV_6W([~> -endstream -endobj -479 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 478 0 R ->> -endobj -480 0 obj -<< /Length 1242 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D>AqtE'RoMSa;^U*9^F_tGQMT3Tcp\Cirp!7>IT:JdQ-Pos#j-D`2BTH?H,rEno<"OcGdhrm=#l^hHXI?_(Kc!iH4!=ZN55Sq8!Q$"$%7;"Q@]FB$U.7:Uer"QT$kd=5U`^3j/Xp2EH+CFacBhcP":e?s3gKd2k^KRnH]>2l7<'1L:s0L=KBKVHuA.m_E_D0Ct(I\1l;UPK2ML!/Mnmn4+-X0a5rf'l#K"_oG#;nh#T-`Pus>;O7]hIgW./Kct]K'_tsI7UrW^nUqd9gZt@#gUjM[*8sX*r^'^E6A741#m;E[8.N*F'+=%"Y-h&`<-W=KCAkF;@$32Lmm^[,XX%k4m1i]X`:oWGM]o!khq%r@b^V=B12g[&j&B!\5W4UCaoHI;KooNkh-%6JAd"il2`Y$2Z?)Cn\Kt1U_AOO4/;Kd#cP4@,u#l+*lE/:`u13>C7`=TpmLM;Yk#^*2fk@-lL5'L^Ra*L(G/EZC4o1Mp_qpk:9pfMJPqaRd3!;[E17MhtuH7s##!iB_Q[#?V\'uOoWPu;K7QtcRc,nH8LYolHOFo=nnje;i)rQi./\U`Bn_i6.G^40HlpiihAW#G+Iua)T*e<)A(o]2[rBr%d_9+#)"u0VU8V,,;'n+9W*m0OGcShn3+<:"1lfUj3\EH]#Rs[LSFLE'G!9B4J/9[m243X[+0uN..Rm3BVB]-C:9ogjbMT,$Iom!>^P:PMZQNoi`f/0+@`Ac+HI*Ids5.H/?:8H>*Gk1!aL%"8U+1T#CAl56lQH;2lXm#3d5%gb2t~> -endstream -endobj -481 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 480 0 R ->> -endobj -482 0 obj -<< /Length 1303 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHLgMYb*&:O:Skg<_4Wd)pnIG2%W2N)[^8Xt4.Mh83J>E'gePjG2q^Q_-SA"'^b"M4pNORgV`):$GD9'>6Nq_-$3OQUr8GWtVe`;hoir'LsO"8OX,Z&:q]r9/MIrc*:5GBn7NEV7Z0On13p.])*9jEu0kInC]1$e%H#L`-idP"SgAf;^,1$XW+H"fnkX:PM(Wg4J-e?Y1TkE1ss:AhV4'!>%g\j"K,=Hk*eNjD'/DP>B"YaZ:,oP"d$_9AQu(G#WIMk/CMS#H[9R>ieCP-9::f\u5E_RVP,XRJQUg<_T_f??/nj3)2@ger$Ah?gJXAD^I[uRB$KQSbsCU!6"n)IZl\cP>RAHV;d%3X0Or2,/E]T1\\!/1[&qqi9_gTOd)EB1>0HQaq#h.d=M:GCL/\8-E!.50RR)l477rT@FFYC&<60oOcYGV:lY[lU8hHoFp>7iT`p_h-F=N?(Lsq=<=d(5qW;I$J3DT4I;o\]ZAqjI8dW$:C//ZHsPG\"NqS9SgkA,+B=Ir4;;q@OB9]DiHV8>f%G/3aI\SP"Upb^ZX:M?3D36u>;#U:P?qijeUdAFXp;n3djjX(59M4lERa$#cpLX_D?NbI+qQc>@NWnYB?hP$TBk&eE[(P(ED%02=!d0$!/8qLl7c`>&Vm7*]dnW%$tjm'Vs6J+Rn.7#)-X/#-1;c1-7,kd7%+7#GQ4^2ZO.Z$5+co4ZY@IUrXX`>%UpI<.Dm$%Xn^$t'+"-jiJ_c`"af@#$&!QjE:1rJjm5haDXF"c$=]Z]!C5<_`M@R\mL`tuJ]/Mb]"D8pftu%lF[+)F/O"f]&B/OGqp6S)P59//HL)fRCc?sDd3BjRoe^S5nqDnAo]CKFZnW^i&8>qN4O;K/bSX_Ta(E.[Mq#,b7>lRr08eR^_0iE;<2a^djH-*rcN&95"YM*!0\Uu!q#0YSNIGA6L&%9j]&XttWS:]b2lK'(!fch*SH1ub~> -endstream -endobj -483 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 482 0 R ->> -endobj -484 0 obj -<< /Length 1725 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatU4969,O%)2U?kgj8kdH^\oSsl)61nF$X-IMP8F?5@Ta(f-^92SITn!=Yo&1tqC3kbkBn,WYW&G/u-q",kUI*_JU@_M9$VhOSar9$.jcneTRE;e98[a*cC%AINo)5cf)kKZ:enH[\=4fte#o7So_bUEI>J,B3,mdBr;?[nY/Q\j#q2f7Sfak'D5jlD;HgCeQd`/Qk[11&',*Z&T[]VO#Po:2="8kP.Q-D/3:Jej:^Es5>9YhrcuE,1VfgC;apo-Kd-F1kn9gRj%Ea'c87O3UU2iM]^s>%0"7Lm)DdWI!bdL@V*q5+mi+eB95DkhP[?^iX$%Hd*uF):rq<4$p^'m:.T`euJLa&:6U1,MZ?#b[rqW*;,ki;`DWn.dDH^0H!C%2WYFmWGN8L`0HM+GX%TOMjZU!>1`:n?Q.6Ofo.6FZF\gZg[H)2,%6E.eq;52m/AO-R[.FA/_^1P.oYrR1Dk=uZCkW^HqrVi'YeDVqu)K'PdU6e0&V@]11tiRa6D[1Y%(PZ;:n7tA=L(br[lDLbUPR0#M4$BA#ZGkr/FHPXQ4/,28WU0N=FT@i3'!/Rpe@?=u>.!;u!YZ-\7`f+1,);*JMRlS27J2*9rP^%'KAe[gp3b]$*R87Bdd9F83`7-Z'@T*>&>tKbSQUtJr=k+p+oi(6mfAb>>ZXYAu^1^/Y?4](1ID;.5&n.)>-h\oLJ72__(.o2APeG2uVV[GJGg8gK109n'n7_M-h2p0Gij+G\Ke*)>;sR2&%Zq4V7gSi'/m>LHJ]T/GI5d#FN$]^?2#M%,Cbe@Sg(o:<9d_+Qk8>6\?Dg;W+OAgo5'8]5>%@3H\Ra>7eG8T=12#kXd`d]HTl45K&TsHFY'N(KDcp%kcsso1Rb44+jI@D"3B@F4%jZ`@>uf!tDbAF3"gFig=fP?jXm^]&,X4,g+U^'rT<\RuQOF9LC:sb[rTo"o>olS;A#U&<2toEfkV):WGGB?*6t"#KJq!!6q/?t1>gq>4uR_CTnTR(eP_94WCYLC>7oL8tLki'GDeXHI]7*s%lHOdD5JVDAi43[n+%#e-Eo;P?mEQThI%7kd0VV.Km/.:5URk^?PQP5+-ghDCD``p*DS1&^Jk?%X:0n8Rm7af@Bn>FoLIT(\YKNotTs8;ihmD_Qbc?,I'@nFTXlBElS*tAC%bfa.`B;n2n$#$/?k5~> -endstream -endobj -485 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 484 0 R ->> -endobj -486 0 obj -<< /Length 1451 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau`SgMZ%0&:O:SkV3)N>Q[7N9nj7rV8Bl;-1mNU0TgZ!5h;UGu5+hjc"-.P+.nS`b+Jq_Z;gc>rZX'BgFU%UqY[&Hc?q)<7C*1`^0F[_VQAq\Z2fD.@^!8=>4Oins$]j/k?KkpJ!a#ZZS0J'H+H1hHia_!iSEKQ_01$%('k>j&el9KD'jb7b,=8$3("4#m@cFtsQ@F5m!i9[Dm'TL]]9S;%[Gl=aqu]N&#HmW@3.0S+5J"]@G>gM[#@QbGgQe\[iq\RK+B^[ucoVk3BV2bThE-(W4VU\VVNqXV\W0.Nfn"AjKhNs45r/Vj]bRPA,\="BnDJC[**cL6J5pl;kO>bWLJ#Ecm/%>iff;\H^,+`K^0Pdc"3,._5FUS.SsQa_!3:oq%oe2lBq*eIEL7bN=8*Q=t0>u)hT(BiOlon>@1c6bidiS649oUJ0G^<:]fneXWRi78196PV[;t0jFpGOmq9.+hhd?+uP_`1)07k>ee/Bb\Sl6HfKnUUSEXu;=)V%KoI,%/bbQNlo#X_OVJo8V"rOnoP^.3lk]5D^4dj9Xj3@\B;s%6RA\M>.\l\!4GXU\ocl#h)_;+/6dQqir7t^8pfscm@G,LE`B+-3d``;Jqd2&\>"OB?o[7:P90uf`tbQoH*M,*AZQ.\g.G'jfd+&^@Ti[KJ>,6rUoTL4TT(3E6L-$uP_6]1n@cuDTm)"/8_nQG-JG4]$GhJ(&cgMWdn?!BeQm7[1i[9_Our3Tn>h)OJLa<4JS.0J@AN$g8/^h^.22C -endstream -endobj -487 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 486 0 R ->> -endobj -488 0 obj -<< /Length 1348 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHLhf%O5%"?N0iPu^Ihh*<8^oI_.b(nAQTVm]T+7DEg+!,;arqZGfG9-R-Mi61;=?kYR-u8#u%"Yntf@e!DQ,E>mOOrb8o"I9;g1\n]Q-7Q3SEi^nC=B+lZ`ORW*7nU;luU[YB-7Df]oNeH+/*L=oiu8LWmGl@ftO)H)MkDM(*_'jqCf`a,<`mLLY.K]Q\p@F:EW^?R@=c"KO%s7%lnoEqaYCmkj:C@>J27g]H]q1Y".TM.mk_JQ:d?i"^49JirN@^`4qdr*cpNN&r1?rnk_2)Z9/i"5,P:1cFsZ!CClo;JSV&*BrQ\iA_r*TESV&*2IHM#Bl'ru,;.A!6jde3c6H0(in7-^1q4'-f":lS_BO\H*VsuI9!D.V@BjO[)$VXKkV!4j0N4k`IS/eVBF5QYGE\LLX+/Q[>]P]pk``$e61j;!()LYIEhf>$BgAFbl$`&Oj]m1]SmsNNA(h3K#i/583im8g%\t(V"oJK1s29R\l]4Y9h/_6>b$mGPP?Yk?TOG%`:s%;dnNCas86Z2p$oueFU!.U(\=ik+rh#V!X0n0a!d%>IGK/tjQ49_O!M\g5k~> -endstream -endobj -489 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 488 0 R ->> -endobj -490 0 obj -<< /Length 1421 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D>B?Pt'Roe[i6e.d.M@PAqm:($Bfb"o-?8l[G<3#A%LiFl#WLLF?O6iJZ=;j#`\5d!SF7GgX5rTsm-,uVr&V#0CT?B`L%>>c*p+R-KWeZgnBE'D+)W-l5-5UGDpIW<"!rbbL@Rs:Qb%l:&.)K?$Co`P&VSMR"A=$5@iB\P#RSb"KGh_8.UU41;N1A3jq#%7@p2oopBBC$\gGs/_Z[m$VDbdt9qEE>^4jnR/`9bqWOV&r.DEBQLW!-UijLTC#iq]E0>H,'V%og3;J"j@p'cQp#Z2sYUuKoV6H=s-(Z:G*]8CEJ\hQ%[fCL(*n"9"h*c=1?ne7'(_QBs6h9eiiA]^F`o"fW?5P@A'b>:in!4G55J`Q.9[tDN2`N_!_kQ*4Xp>s"hjf;B:a(hR,p*J8VA/TQ[RZZuqL/B5M2p*uPN+m+9%Sj"+\T`Esl&*9NHCL7D;eZBOhVm7VFiL_md#:QQZqYQ*E53M$lmarWMS)hV/()c@I"TK=Dl_E4Q/FW-A0;C167?kl$o,&SO_RBD-OAA2p@/(9KB]oqX_Aeuc5mE=.h_\:+aBl`W[CT!an]H*#bF)CW0XdQdP7E#?pe[tka"t*Ys$FbI+%,0AI%$Mjlq_20C1]UEBMm#ae1QG2+Bb8UFCfsF(`)3KLmnL;(A,Vrm&,f5R-/<>h5=#;;1Y\:30'O)\i"69(fSP$X'O^BT'd>e#\pRm>5+Ubqecb?4Y-726Y\;;)f"+;\3.f22V$BOAVOnnh)\N1,W*aQR[D`-g$G;+qPTJs61Yr8F*gHQ5fI9/%9TBc6B'ds+(.X_0EBbcN7%.8_T0uHWolLCl\"kk"q8/.pg2_GIJseCkV6%-Ifn6i6eq~> -endstream -endobj -491 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 490 0 R ->> -endobj -492 0 obj -<< /Length 1332 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gatm;968iG&AII3n/-@c"onZfg/FNa;eON:QK@g:G<1fg=fc14+Xqcn?f*.9EgIJO8PR5A/@>fJ;@[=lF/I+mEumg+@IV;X0$;@f$'tnBoZ?phh*u&RaV6)F^HZf=FJb\GQF#/P22lpmn3]&1l1X9-H86@frpAl)kJCl._7SkG6g[-`i3`qiX:1I'WG-1&HmI,9J2hFtp2I_<8hjWfMD)80,n%Z-ipdPueg!/0Mk2h\D54DR'Fa=&XLah3GYKUAl`J^R3(?DB>5G`J!No[+5Kfdd4LRa4e'+hceW>>=UFD&+K0,c*?4\]JdN\]+iR\cW;O>28u57SQsh4=UD.\a_s\!k$-^MFN'(73C.'NJn+Q2@e=qo"UTa@SeM+^ZPp<=cK2ZBPjlg;u3@0PFJfg59X9pV]0VG=S"aEki3j/+0*5B7GG"XL2U+%BohnD,NqU\@U(M:BVo5/)oF6%="i&HH:%FAL1f1Q[bI`H3Ub>dA*:.7uE7rVg]DQ.5M1W@5WZ;Sn_>W$tDiB:%@,."_U)?FA?\`WN[\m'YKJXLqP%jf?6[i/*)uN%K+4']Z\1i2uBY1nC?(Br#S'upoQt;e0-?5PlYZaEtTcjKncL(&skb;Dl+cd$a0Ts[[iDUDS*eP&KF,0!I$]HQtV9^A_e)jm#rsB;?Y#q'f!+4Kf?=Z&n*Ado\'QnR/N)lp9/V(HB4NZ2Qf>PaY?G\nCKJjE_RaIdWtrmap6V'S5P24cpCWpn<3(*J_=^Vi*DrDMp6\o8*0qYK0sXnfie"7kAS+K2SKoX%`S!LpPY&:eoc/c;n.[Hg:hE?gde-!Kk=!(L+@&Cn-s6O#FS<23(Yu]g:)kkL/77YTS -endstream -endobj -493 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 492 0 R ->> -endobj -494 0 obj -<< /Length 1218 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gau0D968iG&AII3n5d)`TYuHn1oIkD9V"bQYq>]JG;>6_>"iVH+mCu^pB;W_Q4PHBP@T%AaaNW,ha0M6/Ui&a4mXEN>9s[7]3eslf72GjUja1iJg0Q`*kZuh2cnTI2n/6VBAS-plE++*\C^)T,%bPST0M,S9!(TmX&f"TM-Qajk]LRS#aETYSr-eIq'G'c=`\4Af!5q.^rh9X5*_*Flsg\8,p^m%W(h)":i&XPe@)*\Edt4.Z^)SRIiP&m?U;iqhM=.o43u&:fEGs&a#*\RB'5>1G?eqd_BW-+E@?4YfT1gbm@%!&cmrX/sfFQ]o_eGhrllDV%].>G,odqni6_f<)Lr;)_FG=2h]+[;d7]B/p2[ibpLt,\.bZQ2(EQ%[%;U:>iRmKJOkr9YB$+)-B<1LO=c_E];ke_Dnj,jXdj"hLLlq+bhFn/hl9kB!rI:+F")=`^GG@M%"q^EB")T8NP#<09<0r@!>-EpKjLJc9e7DNH4*OKGd4KbQ0]S9k@i>^h3pr^0AG&!01hK=nkWFkQKF7E\=Vc;c@C-Uhp96Ne\+NR#S!@P%Hg>1 -endstream -endobj -495 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 494 0 R ->> -endobj -496 0 obj -<< /Length 1108 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHK8Q4@t'Y`a3pf?Sm+j#n6p/DlrL7q6_oMR^jOXNjolsMosnF%l3N[5&nEEG948C)4(n,")soK1+Ve3OX2Va'H3BA>c_'L1Y$S-sb$!V2f\h"c)s?jW=oN$ml16g(r-^C[gZf;mdqSX6]U#Bf":Eu!SYfF,TcXM$/OZLO,J,(3cpBcb4ZeVbj<\MpsW!\XU3D8f3)NP/U-o^ORE]8OX2rX%r@`\F'g^R(tPbLU!\3IFIn5-hqQi5Ae5D=TikuM`1(':UOFhC@8VHXOq?g4c`)O%61RN=H$gTgKk:WTe_!M6g;nQKV=3_Zk:q.aq[0^+bY(r'hqNDdUWM1BQmLl(1^>[Q'@q5'QrZ#NI0%QrOH/H:m\mg%?fM8MlK7m'mJiH\s(Yi$&?L@#6Zmj->5mTM$)Z)-H/KL^^A^gNln9;^+h\u0H0Jq-I9Yo@DS@!(3dSZnoEY\"flaRj'RDIpYG(oFLSK!+$36C3u)9Mj<7Z8PjX)-7"Dd$X6>uiGY/r+D-R@bgYdHXhE<-R.Hh[-LN`8pi^_(fmnKEIGb?IY`HacER4da/JQC\;K4qfA)`,;_/HSP-_"/jVLo0\6`IbVVo,Y:Ei<\\o5@&V%LgM^h)F/jX0^!A?e*#r5,bf![7-`HTZ<,o=pE.@CU_744q3eDmVu#&BRd&AL;cnD2Rp4p!YTk;NSR&,!ARj/o$(8lk$"mtgR\/M=O5#Ca5-Q)0"1A2JXR\]+`7D7r7-=%i,uM8q;#??m>"_,"AjXuiA8bWDQh52W8Wr`g-jg#`"ba-oqhEY7p!+f9!P;eqi1[.)JeBj/a-F*$n8lFY4D2q>h[)&~> -endstream -endobj -497 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 496 0 R ->> -endobj -498 0 obj -<< /Length 1415 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GauHL968iG&AII3n.r''YlkC&d@BK&R6$O*.nf-'l?"E][*_^Gb_J=FYO@&r/1F,qijRkTYhI-Qh8QjrDc`.kh?=+g9ZpPW'?bWf&As)a@Lu`N4^sm%0igBrpRC:(2Tq8_nV=Aq%q^LeG.ilNO)0]O5BEFcYi*3#E+ES8A$bjQcca;*]DML$LYk9jNL=QRPFKJ!C(1NbgqKE\\5K&>e8h1`Vf2HolkjGb3]F9;V[]'c?$6441Rlo96FG$_b]B@Fkgqf?G"=PllYQ//O%Qg0%+B(1F0c$+!oT4_^cou[*A;\EI'7R,*?u)"Bh4M_5#l5*D[4k77JVbbj9[a.>K3C2l7X7EDf47`PRpThq?8GS2K%[E@'`@A'%4rd&9^p5NG\.S7Mh]rU:qX@&,6bpS43c)j:`DDY,`Q28N,U6"%fQ5fE`EImIjWjG;],dYk(?OR9@!@8`aNaoFd-/./QKI)\9rotpWJ;:g>#UolIjaLFj;;Il`Yc_=0(Im4=rY63OCD5$9n[)-^Q+#sZWO:tce!k$tu9NQr9i:GL[WM.o*jL/R0e=cKS17=8G,G$G5[k"7G!r.=L^.E"?6Y$ogMN$+=0.XK9)b"%K*ANbHQl0m;+7hL']1]3%Z4u`2cPlID-FROl"rgc[")*HZI9Ei>s"lR2B:5!,SI89Q\qsCN,##r4Hp.EE`WC:75/^H2JJ)PhQ"'j,GkG0X![$HJh,qJ14O4F`C3_QkA2"KhhW]*pO5N70u3JA>$4Z_s$\t3n#/bB!-'[&`]t>?Go1CKEQ,n=2k"SMBW),]UGT8(gnR1Y9k^X\]W[+/76DM]gV?85^0YudmoFd(9d"&HP;YOCbjmc6g)5uNU2#VW;<5Y%/\QL@-HVU5#rJ]CB$If-WE?Zk1!f8j>71.6"T]ha2kS`]1Lj1A$L9dP-2q*8cR%&I)hg`O(A:cIu28WTpFIN)6QM4:cDp>KspV;eHmRr!@RMHGgu,!g"Y$[a_DLCWD& -endstream -endobj -499 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 498 0 R ->> -endobj -500 0 obj -<< /Length 1175 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%#968iG&AII3n7JTY^]Xu5d@Qee4]NktW@ar0,af-95o)p(Tn&4[q=b%YO8r][Q:DbXEqe;n(*B1[bLu8GNaN:TBXs_RdIRc9Z229BQC1Y5E<9Mh/U,U/l[@#-+rP=U7IQEa"t7'cfp5fUc%Qm7dn8%fc=^UQHbn=8V?0kbgp#@%4"<1:A`Y#8Y+7h23>,Q.-r.RXk3YH22l@=T.b/;"fVqQY7E`HYAn32-S"YbV?/Me(eW_;dnfN$h1&qOHDE7UN2`^+dB/g,U6@'ZQQ(ZNNp+ZBJF:;TW5%H&r-EtZ<@#'jKI+?LFeomb&\+euD%:ep"U4%'DRGuuis0Yh/kgSL9_thl%p%m"R_rpjUj5%b*5,l6:@_ESuYO?oZEH%RCN>!Ou)OrtJ[rs:DMd<`J[GX+sRE=`JEO$!Fj*[TL_.V3$EqHpJ6ba.SL5o@?gT2Y0,pQs*+S:ODW@-+-3`r_-G>L/4B&0%%Q9Q`R^^+?clE_Q0(JZA`j#''G:cKc#uDV^M/%TD;))'B5*Z;RBR`Dj-(0WlHQT(r%DA41.T4koC-up:C<^"Dgo,I79>o0JBiTPi="NPQD*16k$+?1,KHEm*!e(0u_@Va`lmgF7=+Iqn6UfWhc0-a`l@0O*5=hh7m:E]$;B/4Q?/8U'DsErq)Yd>@='[%h"dK>?>ZpaHhD"n;21S%?_gTlBdZZItX?#i'?(IWnP[tt)QZ+RoMX8^oUjIZdM;9,bNHPoZ5iIf67jm+.]P(.a,#(@SHgAYgj5&_da5pI`bn[3R]L"?)[#;3Pl-jOse!.:&usPC6=*FpYqd+ordGBsQR./Qe)(U%IiMY\F:Un,Q)WYUi6HXkJ^tA3qlfI%`nI*SDp*b8uZZ.mYD@09kNqg"qs0mk]ZD?E#L2&0*j%10baeSFV)I]D9Fl9U%2HAO6%s&^og]D~> -endstream -endobj -501 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 500 0 R ->> -endobj -502 0 obj -<< /Length 1662 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GatUtgMZ%0&;KZF'Y6tg<\'ct(UR4IT-WJ!:s7>$Ssp/2]4.o[93N!p=`L:f"3N)_pAcC<6GmBnO(V0gsiIt\G9Wl[J8]@@<]HWrL#aPifX%:V;>k6r?S+Uk:`!QXm_9M"9$7dnT[%PpF\VT[bfO#\#Dku.6[LnXUQm(dR#@EMlhfnXQ62"GT]eU/Z9.Cki5JZf[Q2q%uT`9V?]`gM5(SspdF2,M(Q,EWcfh?4R='A'SAHe\o>udJpE5)bPZAH^kA87Wc7/@L/A7rh[PqMDUDq=^oZ\sriA>+9/G/$Nng,Iga+&kQc_]hn_n<;/h@YCDF+m;a'HBHL27Q@,9+;=kiW'p7D)-*=89iU\_g%9m:#fE#]l_FGDPu.2'CRW7>?jG5SYEZo?#,0s]UrMMcgnLb#cNbJ6^49L[J?JMSbRS9S&8Znl:G9>a+/]B$mp;V/gt06*Kq/EZ/YQZEH67<6!`QBCQg6\>=*gXna'Dhd9fV<\`\Dnss/2CI.75S'\i=m4S'7E=/kJUT*s`>[&Et1mU2_h&(`X$X:uh+q7%2k"L\h0pbH0sb**eti7OXrI\m^mC30k0#/Z[8&/57+mm&j!=%(Cs"3P[H]W6F=oF9*3B"P7qhFA[Y6#J*cb/#:R+FG@:>^V+.Ap_3S_-,9!2c/\(,m*\[9&kY%?IQl2sM$l3g^=.e@@/[FDd6r>dJfEZ1TBU+Of9?jKAs$W^S^6RRX^7hS2P+&m[qeg[>$FB8<]T;[O-aD2l[$88em#sM*RqSi(`E'cV2QOjre/fa![^40*,N-h/ZL67j"2L2l_@^9:!#kq'qT9sJS\J^)=HKN`:\a.n3) -endstream -endobj -503 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 502 0 R -/Annots 504 0 R ->> -endobj -504 0 obj -[ -] -endobj -505 0 obj -<< /Length 1658 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=lgMYb8&;KZP'YI+i7cBr*5d(6r5gLh82+9f&.u?.&>?.$tm?.dm#Ygo#(F^qeoV'pkfm^]=YB$hiXXd5GXs"<>Mmg.nWBQIk:SHoA/0\YN#P.+@JLfpg5/87k6W\em_XYBlp[=h9bL,j8,t9(@S1=M)TO6iH'l$DYN"p]pY"3W!@Bs?mpt/L62mul/pCeA6_9"LB8$YN$'O/E%nF4l>C,$#"0*b"G?Z,$3oe=J[0;;\2V=&Xa>FZS0]U^c'59$RLUS$4t4ZdWp)&o&?@2?V$r`RBO_E.sZEOPSFR$p<+DWRn9:k?i'8j;>tAYrHG'8VVs_T[mVqk!BY-Q,*Ri@(hmi"[X!Zb$lr.>Pqe/P/[U/]%XEpE9JqlV!j5oXTGh;a=W](tk"JGhieB7^=sNHK\*)=SQUd=Xd(.C7&rWD=:IfJ2qm@ld4<]))4RhuOE:-SqLF,5!_d_hJ3HC"rd%Aqc;]o0JWD]3l>)Cc`HoXJ'bK`O5(l7'e*'a;V/bNAahhE47%bDY3O:GJ3^()E?G-FYH/)b6fa]6haZY3\4:/(dFHXiWq=jf/>gFGDRJ,(MDXL+_/>dBfiTuXt:>'G]k-kGT?Q/ncq<^G1]l[@Is,@2s3/fFNFc&@5+P/(q$'1HdgLSs9-]%QGg">>anZkP8gg7mU]R"N:7Ae^O@_.=gFF%rRmV.R*me>MMD%R9maD2r8^h@&.ZGqaRF9#7&i!d/Za6TSHbEV5q8l?GK)a0EUh3#ZDLks!RBM51_@L6kS>\tnrYXi?QK551-)X/buNi4^mP"8f0]qIlW1=F]t\bQQ485ZW?(/Q#Cl3p^0>7WT'T*=o4rS=BpL\T&^8&97@>`8kTKV+b`G'C^WICPnd335dd!@'Ham%uH/?sl/Gj+1iUYD-QF_aXmAi_upNc%5ir5jOD(~> -endstream -endobj -506 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 505 0 R -/Annots 507 0 R ->> -endobj -507 0 obj -[ -] -endobj -508 0 obj -<< /Length 1693 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gasb]9lK&M&;KZQ'gD$eXWr:OdWL*nd,#,>]bEoOaL&'=(:=cd-iN_7D)ie1,?)ZpZd:M(L+d3%Xh63"7@7Ab(q]T`Hh>^&52ajgXVtFD(\f^ql[-]s22Q!RXDL_MorgAWoqF-RNlbD'+hZ02Y5bCiCr8<#-NLf:DPsT,f46:u,pE++Im9&"EiG$MpE-E8oR!8N>FO81P8%A)"M-=ks'##/N%`^$c&pq)!q%S6Cn,&#KY60a6Z=]"I(N?OfZpp:I>FXDd#_s`*C%jq&5ZjT5G9&aGYS9K6V="N('pi&]47@n$"UiniC`,SLKrf6@c?,S3D/lOddYn%Q=U\\do2TX:2('_]!&+n7g.nC@WZ%R@c7WKA?-6;PM4'_1pNQF!Z86ta"3tsSqnA9@jWQaRV@+.Sd(?meRbX/D=sW+;Zb>FUuMi?5W@U(;2nM?"%6:in^lWs/Ip5<^paWGhf\%16$pWc9-g=XW@9@RhU6aMor\WS$XW(3P"rkF/u'[.!8ctlrbs^6(IjGQT4E>dh1p5V3U#b8D!4eq[/eJf$dIP_6e+"(-2d&pVjuUN%)4k[1QshbddRDO%N/pSN:\.g@ge:L2kg&T;kW`Es:G-TCC]9=3+WB]u-:_t2Z!L)(+6@ctPR6XA32PQ.A$$n]t:8tXqNJI=WjV(Jf=>4'P.^6-"\kEE&c:u5&#YYbl\Mii86$U4uP*IA(P>H1nViF=JfTo7Wk[I<\],U[fQ1JLkW,N]!`/6-8T(Ef;BRQ@K0aKnC(WLC^eCLg.^(&n?Vo1"ObB.2XY=jo=SP,3PM1_oEm+qo@n7'BSS"/XD\P7Ni?eD#a&A1jp$AIFT1BP2`Y\2t;jQadu`LZt#u7FGdKkOuoA>JbQ&m=]l]W+_#7\hqa$Na(eCFG(+jP-o9$6nc"J"T -endstream -endobj -509 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 508 0 R -/Annots 510 0 R ->> -endobj -510 0 obj -[ -] -endobj -511 0 obj -<< /Length 341 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -GasJN9hWDY&;KZL'm&.6NL=>JF^7hjRh-,C%uZp[`SHDg62gPT+.?5s8hZl`T4]L=C]_5Y;Ll[l6GWfk)1kC$Jg;taGfQXK#Y0,Ah6#WJ_G)42TLc\OpeG&HV4Hc*Np6;JI9FIue6R)pa!+P[YrU"BPT5*mLS_O+OhYq>n'%`#9::X(kTlg4#27\+XikHDV=[?:n4u,=V1pcS0nGq>6d.sIDVKDpg>NlK8XhYK1XCMZ&C"u7g579\4R$?jTN+nt,U)q6>$381(_Fg[,L-[g`Z>1>!P?2'6*kjgoq^&[p"Pct~> -endstream -endobj -512 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 511 0 R -/Annots 513 0 R ->> -endobj -513 0 obj -[ -] -endobj -516 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\62\0\56\0\62\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\40\0\115\0\141\0\156\0\165\0\141\0\154) - /Parent 514 0 R - /Next 518 0 R - /A 515 0 R ->> endobj -518 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) - /Parent 514 0 R - /Prev 516 0 R - /Next 519 0 R - /A 517 0 R ->> endobj -519 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) - /Parent 514 0 R - /Prev 518 0 R - /Next 520 0 R - /A 15 0 R ->> endobj -520 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\62\0\56\0\240\0\124\0\150\0\145\0\40\0\154\0\141\0\156\0\147\0\165\0\141\0\147\0\145) - /Parent 514 0 R - /First 521 0 R - /Last 656 0 R - /Prev 519 0 R - /Next 683 0 R - /Count -128 - /A 17 0 R ->> endobj -521 0 obj -<< - /Title (\376\377\0\114\0\145\0\170\0\151\0\143\0\141\0\154\0\40\0\163\0\164\0\162\0\165\0\143\0\164\0\165\0\162\0\145) - /Parent 520 0 R - /First 522 0 R - /Last 527 0 R - /Next 528 0 R - /Count -6 - /A 19 0 R ->> endobj -522 0 obj -<< - /Title (\376\377\0\111\0\144\0\145\0\156\0\164\0\151\0\146\0\151\0\145\0\162\0\163) - /Parent 521 0 R - /Next 523 0 R - /A 21 0 R ->> endobj -523 0 obj -<< - /Title (\376\377\0\113\0\145\0\171\0\167\0\157\0\162\0\144\0\163) - /Parent 521 0 R - /Prev 522 0 R - /Next 524 0 R - /A 23 0 R ->> endobj -524 0 obj -<< - /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) - /Parent 521 0 R - /Prev 523 0 R - /Next 525 0 R - /A 25 0 R ->> endobj -525 0 obj -<< - /Title (\376\377\0\117\0\164\0\150\0\145\0\162\0\40\0\164\0\157\0\153\0\145\0\156\0\163) - /Parent 521 0 R - /Prev 524 0 R - /Next 526 0 R - /A 27 0 R ->> endobj -526 0 obj -<< - /Title (\376\377\0\114\0\151\0\164\0\145\0\162\0\141\0\154\0\163) - /Parent 521 0 R - /Prev 525 0 R - /Next 527 0 R - /A 29 0 R ->> endobj -527 0 obj -<< - /Title (\376\377\0\103\0\157\0\155\0\155\0\145\0\156\0\164\0\163) - /Parent 521 0 R - /Prev 526 0 R - /A 31 0 R ->> endobj -528 0 obj -<< - /Title (\376\377\0\126\0\141\0\154\0\165\0\145\0\163\0\40\0\141\0\156\0\144\0\40\0\104\0\141\0\164\0\141\0\40\0\164\0\171\0\160\0\145\0\163) - /Parent 520 0 R - /First 529 0 R - /Last 542 0 R - /Prev 521 0 R - /Next 543 0 R - /Count -14 - /A 33 0 R ->> endobj -529 0 obj -<< - /Title (\376\377\0\111\0\156\0\164\0\145\0\147\0\145\0\162) - /Parent 528 0 R - /Next 530 0 R - /A 35 0 R ->> endobj -530 0 obj -<< - /Title (\376\377\0\106\0\154\0\157\0\141\0\164) - /Parent 528 0 R - /Prev 529 0 R - /Next 531 0 R - /A 37 0 R ->> endobj -531 0 obj -<< - /Title (\376\377\0\123\0\164\0\162\0\151\0\156\0\147) - /Parent 528 0 R - /Prev 530 0 R - /Next 532 0 R - /A 39 0 R ->> endobj -532 0 obj -<< - /Title (\376\377\0\116\0\165\0\154\0\154) - /Parent 528 0 R - /Prev 531 0 R - /Next 533 0 R - /A 41 0 R ->> endobj -533 0 obj -<< - /Title (\376\377\0\102\0\157\0\157\0\154) - /Parent 528 0 R - /Prev 532 0 R - /Next 534 0 R - /A 43 0 R ->> endobj -534 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145) - /Parent 528 0 R - /Prev 533 0 R - /Next 535 0 R - /A 45 0 R ->> endobj -535 0 obj -<< - /Title (\376\377\0\101\0\162\0\162\0\141\0\171) - /Parent 528 0 R - /Prev 534 0 R - /Next 536 0 R - /A 47 0 R ->> endobj -536 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156) - /Parent 528 0 R - /Prev 535 0 R - /Next 537 0 R - /A 49 0 R ->> endobj -537 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163) - /Parent 528 0 R - /Prev 536 0 R - /Next 538 0 R - /A 51 0 R ->> endobj -538 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145) - /Parent 528 0 R - /Prev 537 0 R - /Next 539 0 R - /A 53 0 R ->> endobj -539 0 obj -<< - /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 528 0 R - /Prev 538 0 R - /Next 540 0 R - /A 55 0 R ->> endobj -540 0 obj -<< - /Title (\376\377\0\125\0\163\0\145\0\162\0\144\0\141\0\164\0\141) - /Parent 528 0 R - /Prev 539 0 R - /Next 541 0 R - /A 57 0 R ->> endobj -541 0 obj -<< - /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144) - /Parent 528 0 R - /Prev 540 0 R - /Next 542 0 R - /A 59 0 R ->> endobj -542 0 obj -<< - /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163) - /Parent 528 0 R - /Prev 541 0 R - /A 61 0 R ->> endobj -543 0 obj -<< - /Title (\376\377\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\40\0\103\0\157\0\156\0\164\0\145\0\170\0\164) - /Parent 520 0 R - /First 544 0 R - /Last 544 0 R - /Prev 528 0 R - /Next 545 0 R - /Count -1 - /A 63 0 R ->> endobj -544 0 obj -<< - /Title (\376\377\0\126\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) - /Parent 543 0 R - /A 65 0 R ->> endobj -545 0 obj -<< - /Title (\376\377\0\123\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164\0\163) - /Parent 520 0 R - /First 546 0 R - /Last 574 0 R - /Prev 543 0 R - /Next 575 0 R - /Count -22 - /A 67 0 R ->> endobj -546 0 obj -<< - /Title (\376\377\0\102\0\154\0\157\0\143\0\153) - /Parent 545 0 R - /Next 547 0 R - /A 69 0 R ->> endobj -547 0 obj -<< - /Title (\376\377\0\103\0\157\0\156\0\164\0\162\0\157\0\154\0\40\0\106\0\154\0\157\0\167\0\40\0\123\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164\0\163) - /Parent 545 0 R - /First 549 0 R - /Last 557 0 R - /Prev 546 0 R - /Next 558 0 R - /Count -5 - /A 71 0 R ->> endobj -549 0 obj -<< - /Title (\376\377\0\164\0\162\0\165\0\145\0\40\0\141\0\156\0\144\0\40\0\146\0\141\0\154\0\163\0\145) - /Parent 547 0 R - /Next 551 0 R - /A 548 0 R ->> endobj -551 0 obj -<< - /Title (\376\377\0\151\0\146\0\57\0\145\0\154\0\163\0\145) - /Parent 547 0 R - /Prev 549 0 R - /Next 553 0 R - /A 550 0 R ->> endobj -553 0 obj -<< - /Title (\376\377\0\167\0\150\0\151\0\154\0\145) - /Parent 547 0 R - /Prev 551 0 R - /Next 555 0 R - /A 552 0 R ->> endobj -555 0 obj -<< - /Title (\376\377\0\144\0\157\0\57\0\167\0\150\0\151\0\154\0\145) - /Parent 547 0 R - /Prev 553 0 R - /Next 557 0 R - /A 554 0 R ->> endobj -557 0 obj -<< - /Title (\376\377\0\163\0\167\0\151\0\164\0\143\0\150) - /Parent 547 0 R - /Prev 555 0 R - /A 556 0 R ->> endobj -558 0 obj -<< - /Title (\376\377\0\114\0\157\0\157\0\160\0\163) - /Parent 545 0 R - /First 560 0 R - /Last 562 0 R - /Prev 547 0 R - /Next 563 0 R - /Count -2 - /A 73 0 R ->> endobj -560 0 obj -<< - /Title (\376\377\0\146\0\157\0\162) - /Parent 558 0 R - /Next 562 0 R - /A 559 0 R ->> endobj -562 0 obj -<< - /Title (\376\377\0\146\0\157\0\162\0\145\0\141\0\143\0\150) - /Parent 558 0 R - /Prev 560 0 R - /A 561 0 R ->> endobj -563 0 obj -<< - /Title (\376\377\0\142\0\162\0\145\0\141\0\153) - /Parent 545 0 R - /Prev 558 0 R - /Next 564 0 R - /A 75 0 R ->> endobj -564 0 obj -<< - /Title (\376\377\0\143\0\157\0\156\0\164\0\151\0\156\0\165\0\145) - /Parent 545 0 R - /Prev 563 0 R - /Next 565 0 R - /A 77 0 R ->> endobj -565 0 obj -<< - /Title (\376\377\0\162\0\145\0\164\0\165\0\162\0\156) - /Parent 545 0 R - /Prev 564 0 R - /Next 566 0 R - /A 79 0 R ->> endobj -566 0 obj -<< - /Title (\376\377\0\171\0\151\0\145\0\154\0\144) - /Parent 545 0 R - /Prev 565 0 R - /Next 567 0 R - /A 81 0 R ->> endobj -567 0 obj -<< - /Title (\376\377\0\114\0\157\0\143\0\141\0\154\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) - /Parent 545 0 R - /Prev 566 0 R - /Next 568 0 R - /A 83 0 R ->> endobj -568 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) - /Parent 545 0 R - /Prev 567 0 R - /Next 569 0 R - /A 85 0 R ->> endobj -569 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) - /Parent 545 0 R - /Prev 568 0 R - /Next 570 0 R - /A 87 0 R ->> endobj -570 0 obj -<< - /Title (\376\377\0\164\0\162\0\171\0\57\0\143\0\141\0\164\0\143\0\150) - /Parent 545 0 R - /Prev 569 0 R - /Next 571 0 R - /A 89 0 R ->> endobj -571 0 obj -<< - /Title (\376\377\0\164\0\150\0\162\0\157\0\167) - /Parent 545 0 R - /Prev 570 0 R - /Next 572 0 R - /A 91 0 R ->> endobj -572 0 obj -<< - /Title (\376\377\0\143\0\157\0\156\0\163\0\164) - /Parent 545 0 R - /Prev 571 0 R - /Next 573 0 R - /A 93 0 R ->> endobj -573 0 obj -<< - /Title (\376\377\0\145\0\156\0\165\0\155) - /Parent 545 0 R - /Prev 572 0 R - /Next 574 0 R - /A 95 0 R ->> endobj -574 0 obj -<< - /Title (\376\377\0\145\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\40\0\163\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164) - /Parent 545 0 R - /Prev 573 0 R - /A 97 0 R ->> endobj -575 0 obj -<< - /Title (\376\377\0\105\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\163) - /Parent 520 0 R - /First 576 0 R - /Last 601 0 R - /Prev 545 0 R - /Next 602 0 R - /Count -16 - /A 99 0 R ->> endobj -576 0 obj -<< - /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\155\0\145\0\156\0\164\0\50\0\75\0\51\0\40\0\46\0\40\0\156\0\145\0\167\0\40\0\163\0\154\0\157\0\164\0\50\0\74\0\55\0\51) - /Parent 575 0 R - /Next 577 0 R - /A 101 0 R ->> endobj -577 0 obj -<< - /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) - /Parent 575 0 R - /First 579 0 R - /Last 597 0 R - /Prev 576 0 R - /Next 598 0 R - /Count -10 - /A 103 0 R ->> endobj -579 0 obj -<< - /Title (\376\377\0\77\0\72\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 577 0 R - /Next 581 0 R - /A 578 0 R ->> endobj -581 0 obj -<< - /Title (\376\377\0\101\0\162\0\151\0\164\0\150\0\155\0\145\0\164\0\151\0\143) - /Parent 577 0 R - /Prev 579 0 R - /Next 583 0 R - /A 580 0 R ->> endobj -583 0 obj -<< - /Title (\376\377\0\122\0\145\0\154\0\141\0\164\0\151\0\157\0\156\0\141\0\154) - /Parent 577 0 R - /Prev 581 0 R - /Next 585 0 R - /A 582 0 R ->> endobj -585 0 obj -<< - /Title (\376\377\0\114\0\157\0\147\0\151\0\143\0\141\0\154) - /Parent 577 0 R - /Prev 583 0 R - /Next 587 0 R - /A 584 0 R ->> endobj -587 0 obj -<< - /Title (\376\377\0\151\0\156\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 577 0 R - /Prev 585 0 R - /Next 589 0 R - /A 586 0 R ->> endobj -589 0 obj -<< - /Title (\376\377\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145\0\157\0\146\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 577 0 R - /Prev 587 0 R - /Next 591 0 R - /A 588 0 R ->> endobj -591 0 obj -<< - /Title (\376\377\0\164\0\171\0\160\0\145\0\157\0\146\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 577 0 R - /Prev 589 0 R - /Next 593 0 R - /A 590 0 R ->> endobj -593 0 obj -<< - /Title (\376\377\0\143\0\157\0\155\0\155\0\141\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 577 0 R - /Prev 591 0 R - /Next 595 0 R - /A 592 0 R ->> endobj -595 0 obj -<< - /Title (\376\377\0\102\0\151\0\164\0\167\0\151\0\163\0\145\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) - /Parent 577 0 R - /Prev 593 0 R - /Next 597 0 R - /A 594 0 R ->> endobj -597 0 obj -<< - /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163\0\40\0\160\0\162\0\145\0\143\0\145\0\144\0\145\0\156\0\143\0\145) - /Parent 577 0 R - /Prev 595 0 R - /A 596 0 R ->> endobj -598 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\143\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\157\0\162) - /Parent 575 0 R - /Prev 577 0 R - /Next 599 0 R - /A 105 0 R ->> endobj -599 0 obj -<< - /Title (\376\377\0\144\0\145\0\154\0\145\0\147\0\141\0\164\0\145) - /Parent 575 0 R - /Prev 598 0 R - /Next 600 0 R - /A 107 0 R ->> endobj -600 0 obj -<< - /Title (\376\377\0\143\0\154\0\157\0\156\0\145) - /Parent 575 0 R - /Prev 599 0 R - /Next 601 0 R - /A 109 0 R ->> endobj -601 0 obj -<< - /Title (\376\377\0\101\0\162\0\162\0\141\0\171\0\40\0\143\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\157\0\162) - /Parent 575 0 R - /Prev 600 0 R - /A 111 0 R ->> endobj -602 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\163) - /Parent 520 0 R - /First 603 0 R - /Last 605 0 R - /Prev 575 0 R - /Next 606 0 R - /Count -3 - /A 113 0 R ->> endobj -603 0 obj -<< - /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\151\0\157\0\156) - /Parent 602 0 R - /Next 604 0 R - /A 115 0 R ->> endobj -604 0 obj -<< - /Title (\376\377\0\123\0\154\0\157\0\164\0\40\0\143\0\162\0\145\0\141\0\164\0\151\0\157\0\156) - /Parent 602 0 R - /Prev 603 0 R - /Next 605 0 R - /A 117 0 R ->> endobj -605 0 obj -<< - /Title (\376\377\0\123\0\154\0\157\0\164\0\40\0\144\0\145\0\154\0\145\0\164\0\151\0\157\0\156) - /Parent 602 0 R - /Prev 604 0 R - /A 119 0 R ->> endobj -606 0 obj -<< - /Title (\376\377\0\101\0\162\0\162\0\141\0\171\0\163) - /Parent 520 0 R - /Prev 602 0 R - /Next 607 0 R - /A 124 0 R ->> endobj -607 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\163) - /Parent 520 0 R - /First 608 0 R - /Last 616 0 R - /Prev 606 0 R - /Next 617 0 R - /Count -7 - /A 126 0 R ->> endobj -608 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) - /Parent 607 0 R - /First 610 0 R - /Last 612 0 R - /Next 613 0 R - /Count -2 - /A 128 0 R ->> endobj -610 0 obj -<< - /Title (\376\377\0\104\0\145\0\146\0\141\0\165\0\154\0\164\0\40\0\120\0\141\0\162\0\141\0\155\0\141\0\164\0\145\0\162\0\163) - /Parent 608 0 R - /Next 612 0 R - /A 609 0 R ->> endobj -612 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\167\0\151\0\164\0\150\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\40\0\156\0\165\0\155\0\142\0\145\0\162\0\40\0\157\0\146\0\40\0\160\0\141\0\162\0\141\0\155\0\141\0\164\0\145\0\162\0\163) - /Parent 608 0 R - /Prev 610 0 R - /A 611 0 R ->> endobj -613 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\143\0\141\0\154\0\154\0\163) - /Parent 607 0 R - /Prev 608 0 R - /Next 614 0 R - /A 130 0 R ->> endobj -614 0 obj -<< - /Title (\376\377\0\102\0\151\0\156\0\144\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\145\0\156\0\166\0\151\0\162\0\157\0\156\0\155\0\145\0\156\0\164\0\40\0\164\0\157\0\40\0\141\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) - /Parent 607 0 R - /Prev 613 0 R - /Next 615 0 R - /A 132 0 R ->> endobj -615 0 obj -<< - /Title (\376\377\0\106\0\162\0\145\0\145\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) - /Parent 607 0 R - /Prev 614 0 R - /Next 616 0 R - /A 134 0 R ->> endobj -616 0 obj -<< - /Title (\376\377\0\124\0\141\0\151\0\154\0\40\0\162\0\145\0\143\0\165\0\162\0\163\0\151\0\157\0\156) - /Parent 607 0 R - /Prev 615 0 R - /A 136 0 R ->> endobj -617 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\145\0\163) - /Parent 520 0 R - /First 618 0 R - /Last 625 0 R - /Prev 607 0 R - /Next 626 0 R - /Count -6 - /A 138 0 R ->> endobj -618 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) - /Parent 617 0 R - /First 620 0 R - /Last 622 0 R - /Next 623 0 R - /Count -2 - /A 140 0 R ->> endobj -620 0 obj -<< - /Title (\376\377\0\123\0\164\0\141\0\164\0\151\0\143\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) - /Parent 618 0 R - /Next 622 0 R - /A 619 0 R ->> endobj -622 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\141\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\163) - /Parent 618 0 R - /Prev 620 0 R - /A 621 0 R ->> endobj -623 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145\0\163) - /Parent 617 0 R - /Prev 618 0 R - /Next 624 0 R - /A 142 0 R ->> endobj -624 0 obj -<< - /Title (\376\377\0\111\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) - /Parent 617 0 R - /Prev 623 0 R - /Next 625 0 R - /A 144 0 R ->> endobj -625 0 obj -<< - /Title (\376\377\0\115\0\145\0\164\0\141\0\155\0\145\0\164\0\150\0\157\0\144\0\163) - /Parent 617 0 R - /Prev 624 0 R - /A 146 0 R ->> endobj -626 0 obj -<< - /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162\0\163) - /Parent 520 0 R - /Prev 617 0 R - /Next 627 0 R - /A 148 0 R ->> endobj -627 0 obj -<< - /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\141\0\156\0\164\0\163\0\40\0\46\0\40\0\105\0\156\0\165\0\155\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) - /Parent 520 0 R - /First 628 0 R - /Last 630 0 R - /Prev 626 0 R - /Next 631 0 R - /Count -3 - /A 150 0 R ->> endobj -628 0 obj -<< - /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\141\0\156\0\164\0\163) - /Parent 627 0 R - /Next 629 0 R - /A 152 0 R ->> endobj -629 0 obj -<< - /Title (\376\377\0\105\0\156\0\165\0\155\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) - /Parent 627 0 R - /Prev 628 0 R - /Next 630 0 R - /A 154 0 R ->> endobj -630 0 obj -<< - /Title (\376\377\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156\0\40\0\156\0\157\0\164\0\145\0\163) - /Parent 627 0 R - /Prev 629 0 R - /A 156 0 R ->> endobj -631 0 obj -<< - /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144\0\163) - /Parent 520 0 R - /First 632 0 R - /Last 632 0 R - /Prev 627 0 R - /Next 633 0 R - /Count -1 - /A 158 0 R ->> endobj -632 0 obj -<< - /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\164\0\150\0\162\0\145\0\141\0\144\0\163) - /Parent 631 0 R - /A 160 0 R ->> endobj -633 0 obj -<< - /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163) - /Parent 520 0 R - /First 635 0 R - /Last 635 0 R - /Prev 631 0 R - /Next 636 0 R - /Count -1 - /A 162 0 R ->> endobj -635 0 obj -<< - /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\167\0\145\0\141\0\153\0\40\0\162\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163\0\40\0\145\0\170\0\160\0\154\0\151\0\143\0\151\0\164\0\154\0\171) - /Parent 633 0 R - /A 634 0 R ->> endobj -636 0 obj -<< - /Title (\376\377\0\104\0\145\0\154\0\145\0\147\0\141\0\164\0\151\0\157\0\156) - /Parent 520 0 R - /Prev 633 0 R - /Next 637 0 R - /A 164 0 R ->> endobj -637 0 obj -<< - /Title (\376\377\0\115\0\145\0\164\0\141\0\155\0\145\0\164\0\150\0\157\0\144\0\163) - /Parent 520 0 R - /First 638 0 R - /Last 655 0 R - /Prev 636 0 R - /Next 656 0 R - /Count -18 - /A 166 0 R ->> endobj -638 0 obj -<< - /Title (\376\377\0\137\0\163\0\145\0\164) - /Parent 637 0 R - /Next 639 0 R - /A 168 0 R ->> endobj -639 0 obj -<< - /Title (\376\377\0\137\0\147\0\145\0\164) - /Parent 637 0 R - /Prev 638 0 R - /Next 640 0 R - /A 170 0 R ->> endobj -640 0 obj -<< - /Title (\376\377\0\137\0\156\0\145\0\167\0\163\0\154\0\157\0\164) - /Parent 637 0 R - /Prev 639 0 R - /Next 641 0 R - /A 172 0 R ->> endobj -641 0 obj -<< - /Title (\376\377\0\137\0\144\0\145\0\154\0\163\0\154\0\157\0\164) - /Parent 637 0 R - /Prev 640 0 R - /Next 642 0 R - /A 174 0 R ->> endobj -642 0 obj -<< - /Title (\376\377\0\137\0\141\0\144\0\144) - /Parent 637 0 R - /Prev 641 0 R - /Next 643 0 R - /A 176 0 R ->> endobj -643 0 obj -<< - /Title (\376\377\0\137\0\163\0\165\0\142) - /Parent 637 0 R - /Prev 642 0 R - /Next 644 0 R - /A 178 0 R ->> endobj -644 0 obj -<< - /Title (\376\377\0\137\0\155\0\165\0\154) - /Parent 637 0 R - /Prev 643 0 R - /Next 645 0 R - /A 180 0 R ->> endobj -645 0 obj -<< - /Title (\376\377\0\137\0\144\0\151\0\166) - /Parent 637 0 R - /Prev 644 0 R - /Next 646 0 R - /A 182 0 R ->> endobj -646 0 obj -<< - /Title (\376\377\0\137\0\155\0\157\0\144\0\165\0\154\0\157) - /Parent 637 0 R - /Prev 645 0 R - /Next 647 0 R - /A 184 0 R ->> endobj -647 0 obj -<< - /Title (\376\377\0\137\0\165\0\156\0\155) - /Parent 637 0 R - /Prev 646 0 R - /Next 648 0 R - /A 186 0 R ->> endobj -648 0 obj -<< - /Title (\376\377\0\137\0\164\0\171\0\160\0\145\0\157\0\146) - /Parent 637 0 R - /Prev 647 0 R - /Next 649 0 R - /A 188 0 R ->> endobj -649 0 obj -<< - /Title (\376\377\0\137\0\143\0\155\0\160) - /Parent 637 0 R - /Prev 648 0 R - /Next 650 0 R - /A 190 0 R ->> endobj -650 0 obj -<< - /Title (\376\377\0\137\0\143\0\141\0\154\0\154) - /Parent 637 0 R - /Prev 649 0 R - /Next 651 0 R - /A 192 0 R ->> endobj -651 0 obj -<< - /Title (\376\377\0\137\0\143\0\154\0\157\0\156\0\145\0\144) - /Parent 637 0 R - /Prev 650 0 R - /Next 652 0 R - /A 194 0 R ->> endobj -652 0 obj -<< - /Title (\376\377\0\137\0\156\0\145\0\170\0\164\0\151) - /Parent 637 0 R - /Prev 651 0 R - /Next 653 0 R - /A 196 0 R ->> endobj -653 0 obj -<< - /Title (\376\377\0\137\0\164\0\157\0\163\0\164\0\162\0\151\0\156\0\147) - /Parent 637 0 R - /Prev 652 0 R - /Next 654 0 R - /A 198 0 R ->> endobj -654 0 obj -<< - /Title (\376\377\0\137\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\145\0\144) - /Parent 637 0 R - /Prev 653 0 R - /Next 655 0 R - /A 200 0 R ->> endobj -655 0 obj -<< - /Title (\376\377\0\137\0\156\0\145\0\167\0\155\0\145\0\155\0\142\0\145\0\162) - /Parent 637 0 R - /Prev 654 0 R - /A 202 0 R ->> endobj -656 0 obj -<< - /Title (\376\377\0\102\0\165\0\151\0\154\0\164\0\55\0\151\0\156\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\163) - /Parent 520 0 R - /First 657 0 R - /Last 658 0 R - /Prev 637 0 R - /Count -14 - /A 204 0 R ->> endobj -657 0 obj -<< - /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) - /Parent 656 0 R - /Next 658 0 R - /A 206 0 R ->> endobj -658 0 obj -<< - /Title (\376\377\0\104\0\145\0\146\0\141\0\165\0\154\0\164\0\40\0\144\0\145\0\154\0\145\0\147\0\141\0\164\0\145\0\163) - /Parent 656 0 R - /First 660 0 R - /Last 682 0 R - /Prev 657 0 R - /Count -12 - /A 208 0 R ->> endobj -660 0 obj -<< - /Title (\376\377\0\111\0\156\0\164\0\145\0\147\0\145\0\162) - /Parent 658 0 R - /Next 662 0 R - /A 659 0 R ->> endobj -662 0 obj -<< - /Title (\376\377\0\106\0\154\0\157\0\141\0\164) - /Parent 658 0 R - /Prev 660 0 R - /Next 664 0 R - /A 661 0 R ->> endobj -664 0 obj -<< - /Title (\376\377\0\102\0\157\0\157\0\154) - /Parent 658 0 R - /Prev 662 0 R - /Next 666 0 R - /A 663 0 R ->> endobj -666 0 obj -<< - /Title (\376\377\0\123\0\164\0\162\0\151\0\156\0\147) - /Parent 658 0 R - /Prev 664 0 R - /Next 668 0 R - /A 665 0 R ->> endobj -668 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145) - /Parent 658 0 R - /Prev 666 0 R - /Next 670 0 R - /A 667 0 R ->> endobj -670 0 obj -<< - /Title (\376\377\0\101\0\162\0\162\0\141\0\171) - /Parent 658 0 R - /Prev 668 0 R - /Next 672 0 R - /A 669 0 R ->> endobj -672 0 obj -<< - /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156) - /Parent 658 0 R - /Prev 670 0 R - /Next 674 0 R - /A 671 0 R ->> endobj -674 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163) - /Parent 658 0 R - /Prev 672 0 R - /Next 676 0 R - /A 673 0 R ->> endobj -676 0 obj -<< - /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\143\0\145) - /Parent 658 0 R - /Prev 674 0 R - /Next 678 0 R - /A 675 0 R ->> endobj -678 0 obj -<< - /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162) - /Parent 658 0 R - /Prev 676 0 R - /Next 680 0 R - /A 677 0 R ->> endobj -680 0 obj -<< - /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144) - /Parent 658 0 R - /Prev 678 0 R - /Next 682 0 R - /A 679 0 R ->> endobj -682 0 obj -<< - /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145) - /Parent 658 0 R - /Prev 680 0 R - /A 681 0 R ->> endobj -683 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\63\0\56\0\240\0\105\0\155\0\142\0\145\0\144\0\144\0\151\0\156\0\147\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154) - /Parent 514 0 R - /First 684 0 R - /Last 701 0 R - /Prev 520 0 R - /Next 702 0 R - /Count -18 - /A 210 0 R ->> endobj -684 0 obj -<< - /Title (\376\377\0\115\0\145\0\155\0\157\0\162\0\171\0\40\0\155\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164) - /Parent 683 0 R - /Next 685 0 R - /A 212 0 R ->> endobj -685 0 obj -<< - /Title (\376\377\0\125\0\156\0\151\0\143\0\157\0\144\0\145) - /Parent 683 0 R - /Prev 684 0 R - /Next 686 0 R - /A 214 0 R ->> endobj -686 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\157\0\156\0\40\0\66\0\64\0\40\0\142\0\151\0\164\0\163\0\40\0\141\0\162\0\143\0\150\0\151\0\164\0\145\0\143\0\164\0\165\0\162\0\145\0\163) - /Parent 683 0 R - /Prev 685 0 R - /Next 687 0 R - /A 216 0 R ->> endobj -687 0 obj -<< - /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\167\0\151\0\164\0\150\0\40\0\144\0\157\0\165\0\142\0\154\0\145\0\40\0\160\0\162\0\145\0\143\0\151\0\163\0\151\0\157\0\156\0\40\0\146\0\154\0\157\0\141\0\164\0\163) - /Parent 683 0 R - /Prev 686 0 R - /Next 688 0 R - /A 218 0 R ->> endobj -688 0 obj -<< - /Title (\376\377\0\105\0\162\0\162\0\157\0\162\0\40\0\143\0\157\0\156\0\166\0\145\0\156\0\164\0\151\0\157\0\156\0\163) - /Parent 683 0 R - /Prev 687 0 R - /Next 689 0 R - /A 220 0 R ->> endobj -689 0 obj -<< - /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\151\0\156\0\147\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154) - /Parent 683 0 R - /Prev 688 0 R - /Next 690 0 R - /A 222 0 R ->> endobj -690 0 obj -<< - /Title (\376\377\0\124\0\150\0\145\0\40\0\123\0\164\0\141\0\143\0\153) - /Parent 683 0 R - /First 691 0 R - /Last 692 0 R - /Prev 689 0 R - /Next 693 0 R - /Count -2 - /A 224 0 R ->> endobj -691 0 obj -<< - /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\151\0\156\0\144\0\145\0\170\0\145\0\163) - /Parent 690 0 R - /Next 692 0 R - /A 226 0 R ->> endobj -692 0 obj -<< - /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) - /Parent 690 0 R - /Prev 691 0 R - /A 228 0 R ->> endobj -693 0 obj -<< - /Title (\376\377\0\122\0\165\0\156\0\164\0\151\0\155\0\145\0\40\0\145\0\162\0\162\0\157\0\162\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) - /Parent 683 0 R - /Prev 690 0 R - /Next 694 0 R - /A 230 0 R ->> endobj -694 0 obj -<< - /Title (\376\377\0\103\0\157\0\155\0\160\0\151\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\163\0\143\0\162\0\151\0\160\0\164) - /Parent 683 0 R - /Prev 693 0 R - /Next 695 0 R - /A 232 0 R ->> endobj -695 0 obj -<< - /Title (\376\377\0\103\0\141\0\154\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) - /Parent 683 0 R - /Prev 694 0 R - /Next 696 0 R - /A 234 0 R ->> endobj -696 0 obj -<< - /Title (\376\377\0\103\0\162\0\145\0\141\0\164\0\145\0\40\0\141\0\40\0\103\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) - /Parent 683 0 R - /Prev 695 0 R - /Next 697 0 R - /A 236 0 R ->> endobj -697 0 obj -<< - /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\163\0\40\0\141\0\156\0\144\0\40\0\141\0\162\0\162\0\141\0\171\0\163\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) - /Parent 683 0 R - /Prev 696 0 R - /Next 698 0 R - /A 238 0 R ->> endobj -698 0 obj -<< - /Title (\376\377\0\125\0\163\0\145\0\162\0\144\0\141\0\164\0\141\0\40\0\141\0\156\0\144\0\40\0\125\0\163\0\145\0\162\0\120\0\157\0\151\0\156\0\164\0\145\0\162\0\163) - /Parent 683 0 R - /Prev 697 0 R - /Next 699 0 R - /A 243 0 R ->> endobj -699 0 obj -<< - /Title (\376\377\0\124\0\150\0\145\0\40\0\162\0\145\0\147\0\151\0\163\0\164\0\162\0\171\0\40\0\164\0\141\0\142\0\154\0\145) - /Parent 683 0 R - /Prev 698 0 R - /Next 700 0 R - /A 245 0 R ->> endobj -700 0 obj -<< - /Title (\376\377\0\115\0\141\0\156\0\164\0\141\0\151\0\156\0\151\0\156\0\147\0\40\0\163\0\164\0\162\0\157\0\156\0\147\0\40\0\162\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163\0\40\0\164\0\157\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\166\0\141\0\154\0\165\0\145\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\164\0\150\0\145\0\40\0\103\0\40\0\101\0\120\0\111) - /Parent 683 0 R - /Prev 699 0 R - /Next 701 0 R - /A 247 0 R ->> endobj -701 0 obj -<< - /Title (\376\377\0\104\0\145\0\142\0\165\0\147\0\40\0\111\0\156\0\164\0\145\0\162\0\146\0\141\0\143\0\145) - /Parent 683 0 R - /Prev 700 0 R - /A 249 0 R ->> endobj -702 0 obj -<< - /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\64\0\56\0\240\0\101\0\120\0\111\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145) - /Parent 514 0 R - /First 703 0 R - /Last 711 0 R - /Prev 683 0 R - /Next 712 0 R - /Count -9 - /A 251 0 R ->> endobj -703 0 obj -<< - /Title (\376\377\0\126\0\151\0\162\0\164\0\165\0\141\0\154\0\40\0\115\0\141\0\143\0\150\0\151\0\156\0\145) - /Parent 702 0 R - /Next 704 0 R - /A 253 0 R ->> endobj -704 0 obj -<< - /Title (\376\377\0\103\0\157\0\155\0\160\0\151\0\154\0\145\0\162) - /Parent 702 0 R - /Prev 703 0 R - /Next 705 0 R - /A 255 0 R ->> endobj -705 0 obj -<< - /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) - /Parent 702 0 R - /Prev 704 0 R - /Next 706 0 R - /A 257 0 R ->> endobj -706 0 obj -<< - /Title (\376\377\0\117\0\142\0\152\0\145\0\143\0\164\0\40\0\143\0\162\0\145\0\141\0\164\0\151\0\157\0\156\0\40\0\141\0\156\0\144\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) - /Parent 702 0 R - /Prev 705 0 R - /Next 707 0 R - /A 259 0 R ->> endobj -707 0 obj -<< - /Title (\376\377\0\103\0\141\0\154\0\154\0\163) - /Parent 702 0 R - /Prev 706 0 R - /Next 708 0 R - /A 261 0 R ->> endobj -708 0 obj -<< - /Title (\376\377\0\117\0\142\0\152\0\145\0\143\0\164\0\163\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) - /Parent 702 0 R - /Prev 707 0 R - /Next 709 0 R - /A 263 0 R ->> endobj -709 0 obj -<< - /Title (\376\377\0\102\0\171\0\164\0\145\0\143\0\157\0\144\0\145\0\40\0\163\0\145\0\162\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) - /Parent 702 0 R - /Prev 708 0 R - /Next 710 0 R - /A 265 0 R ->> endobj -710 0 obj -<< - /Title (\376\377\0\122\0\141\0\167\0\40\0\157\0\142\0\152\0\145\0\143\0\164\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) - /Parent 702 0 R - /Prev 709 0 R - /Next 711 0 R - /A 267 0 R ->> endobj -711 0 obj -<< - /Title (\376\377\0\104\0\145\0\142\0\165\0\147\0\40\0\151\0\156\0\164\0\145\0\162\0\146\0\141\0\143\0\145) - /Parent 702 0 R - /Prev 710 0 R - /A 269 0 R ->> endobj -712 0 obj -<< - /Title (\376\377\0\111\0\156\0\144\0\145\0\170) - /Parent 514 0 R - /Prev 702 0 R - /A 271 0 R ->> endobj -713 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F11 -/BaseFont /Courier-Bold -/Encoding /WinAnsiEncoding >> -endobj -714 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F1 -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding >> -endobj -715 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F10 -/BaseFont /Courier-Oblique -/Encoding /WinAnsiEncoding >> -endobj -716 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -717 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F3 -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding >> -endobj -718 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F9 -/BaseFont /Courier -/Encoding /WinAnsiEncoding >> -endobj -719 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F6 -/BaseFont /Times-Italic -/Encoding /WinAnsiEncoding >> -endobj -720 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F7 -/BaseFont /Times-Bold -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 105 -/Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 240 0 R 273 0 R 275 0 R 277 0 R 279 0 R 281 0 R 283 0 R 298 0 R 300 0 R 302 0 R 304 0 R 306 0 R 310 0 R 316 0 R 321 0 R 323 0 R 325 0 R 330 0 R 338 0 R 343 0 R 345 0 R 347 0 R 349 0 R 351 0 R 353 0 R 357 0 R 361 0 R 363 0 R 367 0 R 369 0 R 371 0 R 373 0 R 375 0 R 377 0 R 379 0 R 381 0 R 383 0 R 385 0 R 387 0 R 389 0 R 391 0 R 393 0 R 395 0 R 397 0 R 399 0 R 401 0 R 403 0 R 405 0 R 407 0 R 409 0 R 411 0 R 413 0 R 415 0 R 417 0 R 419 0 R 421 0 R 423 0 R 425 0 R 427 0 R 429 0 R 431 0 R 433 0 R 435 0 R 437 0 R 439 0 R 441 0 R 443 0 R 445 0 R 447 0 R 449 0 R 451 0 R 453 0 R 455 0 R 457 0 R 459 0 R 461 0 R 463 0 R 465 0 R 467 0 R 469 0 R 471 0 R 473 0 R 475 0 R 477 0 R 479 0 R 481 0 R 483 0 R 485 0 R 487 0 R 489 0 R 491 0 R 493 0 R 495 0 R 497 0 R 499 0 R 501 0 R 503 0 R 506 0 R 509 0 R 512 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - /Outlines 514 0 R - /PageMode /UseOutlines - >> -endobj -3 0 obj -<< -/Font << /F1 714 0 R /F11 713 0 R /F10 715 0 R /F5 716 0 R /F3 717 0 R /F9 718 0 R /F6 719 0 R /F7 720 0 R >> -/ProcSet [ /PDF /ImageC /Text ] >> -endobj -15 0 obj -<< -/S /GoTo -/D [273 0 R /XYZ 115.0 725.0 null] ->> -endobj -17 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 725.0 null] ->> -endobj -19 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 666.009 null] ->> -endobj -21 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 632.684 null] ->> -endobj -23 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 519.385 null] ->> -endobj -25 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 322.946 null] ->> -endobj -27 0 obj -<< -/S /GoTo -/D [275 0 R /XYZ 115.0 192.507 null] ->> -endobj -29 0 obj -<< -/S /GoTo -/D [277 0 R /XYZ 115.0 725.0 null] ->> -endobj -31 0 obj -<< -/S /GoTo -/D [277 0 R /XYZ 115.0 414.541 null] ->> -endobj -33 0 obj -<< -/S /GoTo -/D [277 0 R /XYZ 115.0 119.922 null] ->> -endobj -35 0 obj -<< -/S /GoTo -/D [279 0 R /XYZ 115.0 682.0 null] ->> -endobj -37 0 obj -<< -/S /GoTo -/D [279 0 R /XYZ 115.0 552.401 null] ->> -endobj -39 0 obj -<< -/S /GoTo -/D [279 0 R /XYZ 115.0 442.522 null] ->> -endobj -41 0 obj -<< -/S /GoTo -/D [279 0 R /XYZ 115.0 137.763 null] ->> -endobj -43 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 654.42 null] ->> -endobj -45 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 543.401 null] ->> -endobj -47 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 394.082 null] ->> -endobj -49 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 274.343 null] ->> -endobj -51 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 212.904 null] ->> -endobj -53 0 obj -<< -/S /GoTo -/D [281 0 R /XYZ 115.0 140.465 null] ->> -endobj -55 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 714.0 null] ->> -endobj -57 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 652.561 null] ->> -endobj -59 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 591.122 null] ->> -endobj -61 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 540.683 null] ->> -endobj -63 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 479.244 null] ->> -endobj -65 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 358.919 null] ->> -endobj -67 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 705.0 null] ->> -endobj -69 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 555.815 null] ->> -endobj -71 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 475.516 null] ->> -endobj -73 0 obj -<< -/S /GoTo -/D [302 0 R /XYZ 115.0 148.088 null] ->> -endobj -75 0 obj -<< -/S /GoTo -/D [304 0 R /XYZ 115.0 298.444 null] ->> -endobj -77 0 obj -<< -/S /GoTo -/D [304 0 R /XYZ 115.0 207.145 null] ->> -endobj -79 0 obj -<< -/S /GoTo -/D [304 0 R /XYZ 115.0 115.846 null] ->> -endobj -81 0 obj -<< -/S /GoTo -/D [306 0 R /XYZ 115.0 652.14 null] ->> -endobj -83 0 obj -<< -/S /GoTo -/D [306 0 R /XYZ 115.0 571.841 null] ->> -endobj -85 0 obj -<< -/S /GoTo -/D [306 0 R /XYZ 115.0 380.522 null] ->> -endobj -87 0 obj -<< -/S /GoTo -/D [306 0 R /XYZ 115.0 270.643 null] ->> -endobj -89 0 obj -<< -/S /GoTo -/D [306 0 R /XYZ 115.0 141.044 null] ->> -endobj -91 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 682.0 null] ->> -endobj -93 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 601.701 null] ->> -endobj -95 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 511.542 null] ->> -endobj -97 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 381.943 null] ->> -endobj -99 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 290.644 null] ->> -endobj -101 0 obj -<< -/S /GoTo -/D [310 0 R /XYZ 115.0 257.319 null] ->> -endobj -103 0 obj -<< -/S /GoTo -/D [316 0 R /XYZ 115.0 663.14 null] ->> -endobj -105 0 obj -<< -/S /GoTo -/D [323 0 R /XYZ 115.0 245.758 null] ->> -endobj -107 0 obj -<< -/S /GoTo -/D [325 0 R /XYZ 115.0 242.64 null] ->> -endobj -109 0 obj -<< -/S /GoTo -/D [325 0 R /XYZ 115.0 151.341 null] ->> -endobj -111 0 obj -<< -/S /GoTo -/D [330 0 R /XYZ 115.0 629.0 null] ->> -endobj -113 0 obj -<< -/S /GoTo -/D [330 0 R /XYZ 115.0 428.541 null] ->> -endobj -115 0 obj -<< -/S /GoTo -/D [330 0 R /XYZ 115.0 341.216 null] ->> -endobj -117 0 obj -<< -/S /GoTo -/D [330 0 R /XYZ 115.0 290.777 null] ->> -endobj -119 0 obj -<< -/S /GoTo -/D [338 0 R /XYZ 115.0 583.84 null] ->> -endobj -124 0 obj -<< -/S /GoTo -/D [338 0 R /XYZ 115.0 383.801 null] ->> -endobj -126 0 obj -<< -/S /GoTo -/D [338 0 R /XYZ 115.0 217.176 null] ->> -endobj -128 0 obj -<< -/S /GoTo -/D [338 0 R /XYZ 115.0 140.851 null] ->> -endobj -130 0 obj -<< -/S /GoTo -/D [345 0 R /XYZ 115.0 380.624 null] ->> -endobj -132 0 obj -<< -/S /GoTo -/D [347 0 R /XYZ 115.0 725.0 null] ->> -endobj -134 0 obj -<< -/S /GoTo -/D [347 0 R /XYZ 115.0 582.427 null] ->> -endobj -136 0 obj -<< -/S /GoTo -/D [347 0 R /XYZ 115.0 370.388 null] ->> -endobj -138 0 obj -<< -/S /GoTo -/D [347 0 R /XYZ 115.0 158.489 null] ->> -endobj -140 0 obj -<< -/S /GoTo -/D [349 0 R /XYZ 115.0 725.0 null] ->> -endobj -142 0 obj -<< -/S /GoTo -/D [353 0 R /XYZ 115.0 311.78 null] ->> -endobj -144 0 obj -<< -/S /GoTo -/D [357 0 R /XYZ 115.0 352.5 null] ->> -endobj -146 0 obj -<< -/S /GoTo -/D [363 0 R /XYZ 115.0 557.1 null] ->> -endobj -148 0 obj -<< -/S /GoTo -/D [363 0 R /XYZ 115.0 132.021 null] ->> -endobj -150 0 obj -<< -/S /GoTo -/D [367 0 R /XYZ 115.0 307.36 null] ->> -endobj -152 0 obj -<< -/S /GoTo -/D [367 0 R /XYZ 115.0 242.035 null] ->> -endobj -154 0 obj -<< -/S /GoTo -/D [369 0 R /XYZ 115.0 572.98 null] ->> -endobj -156 0 obj -<< -/S /GoTo -/D [369 0 R /XYZ 115.0 107.761 null] ->> -endobj -158 0 obj -<< -/S /GoTo -/D [371 0 R /XYZ 115.0 445.68 null] ->> -endobj -160 0 obj -<< -/S /GoTo -/D [371 0 R /XYZ 115.0 325.355 null] ->> -endobj -162 0 obj -<< -/S /GoTo -/D [375 0 R /XYZ 115.0 685.28 null] ->> -endobj -164 0 obj -<< -/S /GoTo -/D [377 0 R /XYZ 115.0 613.56 null] ->> -endobj -166 0 obj -<< -/S /GoTo -/D [377 0 R /XYZ 115.0 276.755 null] ->> -endobj -168 0 obj -<< -/S /GoTo -/D [379 0 R /XYZ 115.0 328.76 null] ->> -endobj -170 0 obj -<< -/S /GoTo -/D [379 0 R /XYZ 115.0 248.461 null] ->> -endobj -172 0 obj -<< -/S /GoTo -/D [379 0 R /XYZ 115.0 168.162 null] ->> -endobj -174 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 693.0 null] ->> -endobj -176 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 591.701 null] ->> -endobj -178 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 511.402 null] ->> -endobj -180 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 460.963 null] ->> -endobj -182 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 410.524 null] ->> -endobj -184 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 360.085 null] ->> -endobj -186 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 309.646 null] ->> -endobj -188 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 229.347 null] ->> -endobj -190 0 obj -<< -/S /GoTo -/D [381 0 R /XYZ 115.0 149.048 null] ->> -endobj -192 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 608.64 null] ->> -endobj -194 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 528.341 null] ->> -endobj -196 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 448.042 null] ->> -endobj -198 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 335.743 null] ->> -endobj -200 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 223.444 null] ->> -endobj -202 0 obj -<< -/S /GoTo -/D [383 0 R /XYZ 115.0 111.145 null] ->> -endobj -204 0 obj -<< -/S /GoTo -/D [385 0 R /XYZ 115.0 653.14 null] ->> -endobj -206 0 obj -<< -/S /GoTo -/D [385 0 R /XYZ 115.0 598.815 null] ->> -endobj -208 0 obj -<< -/S /GoTo -/D [389 0 R /XYZ 115.0 725.0 null] ->> -endobj -210 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 725.0 null] ->> -endobj -212 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 601.009 null] ->> -endobj -214 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 343.684 null] ->> -endobj -216 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 278.359 null] ->> -endobj -218 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 213.034 null] ->> -endobj -220 0 obj -<< -/S /GoTo -/D [403 0 R /XYZ 115.0 136.709 null] ->> -endobj -222 0 obj -<< -/S /GoTo -/D [405 0 R /XYZ 115.0 633.56 null] ->> -endobj -224 0 obj -<< -/S /GoTo -/D [405 0 R /XYZ 115.0 418.775 null] ->> -endobj -226 0 obj -<< -/S /GoTo -/D [405 0 R /XYZ 115.0 331.45 null] ->> -endobj -228 0 obj -<< -/S /GoTo -/D [407 0 R /XYZ 115.0 662.75 null] ->> -endobj -230 0 obj -<< -/S /GoTo -/D [409 0 R /XYZ 115.0 483.82 null] ->> -endobj -232 0 obj -<< -/S /GoTo -/D [409 0 R /XYZ 115.0 323.635 null] ->> -endobj -234 0 obj -<< -/S /GoTo -/D [411 0 R /XYZ 115.0 313.78 null] ->> -endobj -236 0 obj -<< -/S /GoTo -/D [413 0 R /XYZ 115.0 663.14 null] ->> -endobj -238 0 obj -<< -/S /GoTo -/D [415 0 R /XYZ 115.0 161.14 null] ->> -endobj -243 0 obj -<< -/S /GoTo -/D [419 0 R /XYZ 115.0 565.68 null] ->> -endobj -245 0 obj -<< -/S /GoTo -/D [419 0 R /XYZ 115.0 219.335 null] ->> -endobj -247 0 obj -<< -/S /GoTo -/D [421 0 R /XYZ 115.0 725.0 null] ->> -endobj -249 0 obj -<< -/S /GoTo -/D [421 0 R /XYZ 115.0 486.03 null] ->> -endobj -251 0 obj -<< -/S /GoTo -/D [425 0 R /XYZ 115.0 725.0 null] ->> -endobj -253 0 obj -<< -/S /GoTo -/D [425 0 R /XYZ 115.0 687.009 null] ->> -endobj -255 0 obj -<< -/S /GoTo -/D [435 0 R /XYZ 115.0 578.0 null] ->> -endobj -257 0 obj -<< -/S /GoTo -/D [439 0 R /XYZ 115.0 524.14 null] ->> -endobj -259 0 obj -<< -/S /GoTo -/D [443 0 R /XYZ 115.0 422.28 null] ->> -endobj -261 0 obj -<< -/S /GoTo -/D [469 0 R /XYZ 115.0 653.0 null] ->> -endobj -263 0 obj -<< -/S /GoTo -/D [473 0 R /XYZ 115.0 559.14 null] ->> -endobj -265 0 obj -<< -/S /GoTo -/D [491 0 R /XYZ 115.0 219.42 null] ->> -endobj -267 0 obj -<< -/S /GoTo -/D [493 0 R /XYZ 115.0 326.28 null] ->> -endobj -269 0 obj -<< -/S /GoTo -/D [499 0 R /XYZ 115.0 359.28 null] ->> -endobj -271 0 obj -<< -/S /GoTo -/D [503 0 R /XYZ 67.0 725.0 null] ->> -endobj -286 0 obj -<< -/S /GoTo -/D [363 0 R /XYZ 115.0 98.696 null] ->> -endobj -289 0 obj -<< -/S /GoTo -/D [419 0 R /XYZ 115.0 532.355 null] ->> -endobj -291 0 obj -<< -/S /GoTo -/D [375 0 R /XYZ 115.0 651.955 null] ->> -endobj -293 0 obj -<< -/S /GoTo -/D [338 0 R /XYZ 115.0 183.851 null] ->> -endobj -296 0 obj -<< -/S /GoTo -/D [283 0 R /XYZ 115.0 329.48 null] ->> -endobj -313 0 obj -<< -/S /GoTo -/D [367 0 R /XYZ 115.0 274.035 null] ->> -endobj -319 0 obj -<< -/S /GoTo -/D [330 0 R /XYZ 115.0 395.216 null] ->> -endobj -328 0 obj -<< -/S /GoTo -/D [377 0 R /XYZ 115.0 580.235 null] ->> -endobj -334 0 obj -<< -/S /GoTo -/D [377 0 R /XYZ 115.0 243.43 null] ->> -endobj -336 0 obj -<< -/S /GoTo -/D [323 0 R /XYZ 115.0 216.319 null] ->> -endobj -341 0 obj -<< -/S /GoTo -/D [385 0 R /XYZ 115.0 619.815 null] ->> -endobj -514 0 obj -<< - /First 516 0 R - /Last 712 0 R ->> endobj -515 0 obj -<< -/S /GoTo -/D [10 0 R /XYZ 115.0 725.0 null] ->> -endobj -517 0 obj -<< -/S /GoTo -/D [12 0 R /XYZ 115.0 715.0 null] ->> -endobj -548 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 414.077 null] ->> -endobj -550 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 355.881 null] ->> -endobj -552 0 obj -<< -/S /GoTo -/D [300 0 R /XYZ 115.0 140.505 null] ->> -endobj -554 0 obj -<< -/S /GoTo -/D [302 0 R /XYZ 115.0 545.96 null] ->> -endobj -556 0 obj -<< -/S /GoTo -/D [302 0 R /XYZ 115.0 349.164 null] ->> -endobj -559 0 obj -<< -/S /GoTo -/D [302 0 R /XYZ 115.0 118.649 null] ->> -endobj -561 0 obj -<< -/S /GoTo -/D [304 0 R /XYZ 115.0 516.1 null] ->> -endobj -578 0 obj -<< -/S /GoTo -/D [316 0 R /XYZ 115.0 633.701 null] ->> -endobj -580 0 obj -<< -/S /GoTo -/D [316 0 R /XYZ 115.0 556.645 null] ->> -endobj -582 0 obj -<< -/S /GoTo -/D [316 0 R /XYZ 115.0 315.709 null] ->> -endobj -584 0 obj -<< -/S /GoTo -/D [316 0 R /XYZ 115.0 206.653 null] ->> -endobj -586 0 obj -<< -/S /GoTo -/D [321 0 R /XYZ 115.0 661.0 null] ->> -endobj -588 0 obj -<< -/S /GoTo -/D [321 0 R /XYZ 115.0 444.484 null] ->> -endobj -590 0 obj -<< -/S /GoTo -/D [321 0 R /XYZ 115.0 356.428 null] ->> -endobj -592 0 obj -<< -/S /GoTo -/D [321 0 R /XYZ 115.0 210.072 null] ->> -endobj -594 0 obj -<< -/S /GoTo -/D [323 0 R /XYZ 115.0 645.84 null] ->> -endobj -596 0 obj -<< -/S /GoTo -/D [323 0 R /XYZ 115.0 506.204 null] ->> -endobj -609 0 obj -<< -/S /GoTo -/D [343 0 R /XYZ 115.0 207.32 null] ->> -endobj -611 0 obj -<< -/S /GoTo -/D [345 0 R /XYZ 115.0 642.28 null] ->> -endobj -619 0 obj -<< -/S /GoTo -/D [351 0 R /XYZ 115.0 395.64 null] ->> -endobj -621 0 obj -<< -/S /GoTo -/D [351 0 R /XYZ 115.0 181.71 null] ->> -endobj -634 0 obj -<< -/S /GoTo -/D [375 0 R /XYZ 115.0 239.055 null] ->> -endobj -659 0 obj -<< -/S /GoTo -/D [389 0 R /XYZ 115.0 673.561 null] ->> -endobj -661 0 obj -<< -/S /GoTo -/D [389 0 R /XYZ 115.0 437.365 null] ->> -endobj -663 0 obj -<< -/S /GoTo -/D [389 0 R /XYZ 115.0 201.169 null] ->> -endobj -665 0 obj -<< -/S /GoTo -/D [391 0 R /XYZ 115.0 641.0 null] ->> -endobj -667 0 obj -<< -/S /GoTo -/D [391 0 R /XYZ 115.0 192.804 null] ->> -endobj -669 0 obj -<< -/S /GoTo -/D [393 0 R /XYZ 115.0 440.0 null] ->> -endobj -671 0 obj -<< -/S /GoTo -/D [395 0 R /XYZ 115.0 266.12 null] ->> -endobj -673 0 obj -<< -/S /GoTo -/D [397 0 R /XYZ 115.0 471.0 null] ->> -endobj -675 0 obj -<< -/S /GoTo -/D [397 0 R /XYZ 115.0 148.804 null] ->> -endobj -677 0 obj -<< -/S /GoTo -/D [399 0 R /XYZ 115.0 588.0 null] ->> -endobj -679 0 obj -<< -/S /GoTo -/D [399 0 R /XYZ 115.0 435.804 null] ->> -endobj -681 0 obj -<< -/S /GoTo -/D [399 0 R /XYZ 115.0 188.608 null] ->> -endobj -xref -0 721 -0000000000 65535 f -0000224367 00000 n -0000225255 00000 n -0000225348 00000 n -0000000015 00000 n -0000000071 00000 n -0000000404 00000 n -0000000510 00000 n -0000001702 00000 n -0000001808 00000 n -0000001969 00000 n -0000002076 00000 n -0000003976 00000 n -0000004099 00000 n -0000004500 00000 n -0000225514 00000 n -0000004636 00000 n -0000225580 00000 n -0000004772 00000 n -0000225646 00000 n -0000004908 00000 n -0000225714 00000 n -0000005043 00000 n -0000225782 00000 n -0000005178 00000 n -0000225850 00000 n -0000005314 00000 n -0000225918 00000 n -0000005450 00000 n -0000225986 00000 n -0000005586 00000 n -0000226052 00000 n -0000005722 00000 n -0000226120 00000 n -0000005857 00000 n -0000226188 00000 n -0000005993 00000 n -0000226254 00000 n -0000006129 00000 n -0000226322 00000 n -0000006265 00000 n -0000226390 00000 n -0000006401 00000 n -0000226458 00000 n -0000006537 00000 n -0000226525 00000 n -0000006673 00000 n -0000226593 00000 n -0000006809 00000 n -0000226661 00000 n -0000006945 00000 n -0000226729 00000 n -0000007081 00000 n -0000226797 00000 n -0000007217 00000 n -0000226865 00000 n -0000007353 00000 n -0000226931 00000 n -0000007489 00000 n -0000226999 00000 n -0000007625 00000 n -0000227067 00000 n -0000007761 00000 n -0000227135 00000 n -0000007897 00000 n -0000227203 00000 n -0000008033 00000 n -0000227271 00000 n -0000008169 00000 n -0000227337 00000 n -0000008305 00000 n -0000227405 00000 n -0000008441 00000 n -0000227473 00000 n -0000008576 00000 n -0000227541 00000 n -0000008712 00000 n -0000227609 00000 n -0000008848 00000 n -0000227677 00000 n -0000008984 00000 n -0000227745 00000 n -0000009119 00000 n -0000227812 00000 n -0000009254 00000 n -0000227880 00000 n -0000009390 00000 n -0000227948 00000 n -0000009525 00000 n -0000228016 00000 n -0000009661 00000 n -0000228084 00000 n -0000009797 00000 n -0000228150 00000 n -0000009933 00000 n -0000228218 00000 n -0000010069 00000 n -0000228286 00000 n -0000010204 00000 n -0000228354 00000 n -0000010340 00000 n -0000228422 00000 n -0000010477 00000 n -0000228491 00000 n -0000010615 00000 n -0000228559 00000 n -0000010753 00000 n -0000228628 00000 n -0000010891 00000 n -0000228696 00000 n -0000011029 00000 n -0000228765 00000 n -0000011167 00000 n -0000228832 00000 n -0000011305 00000 n -0000228901 00000 n -0000011442 00000 n -0000228970 00000 n -0000011578 00000 n -0000229039 00000 n -0000011714 00000 n -0000013834 00000 n -0000013960 00000 n -0000014445 00000 n -0000229107 00000 n -0000014579 00000 n -0000229176 00000 n -0000014713 00000 n -0000229245 00000 n -0000014847 00000 n -0000229314 00000 n -0000014981 00000 n -0000229383 00000 n -0000015115 00000 n -0000229450 00000 n -0000015249 00000 n -0000229519 00000 n -0000015383 00000 n -0000229588 00000 n -0000015516 00000 n -0000229657 00000 n -0000015649 00000 n -0000229724 00000 n -0000015783 00000 n -0000229792 00000 n -0000015917 00000 n -0000229859 00000 n -0000016051 00000 n -0000229926 00000 n -0000016185 00000 n -0000229995 00000 n -0000016319 00000 n -0000230063 00000 n -0000016453 00000 n -0000230132 00000 n -0000016587 00000 n -0000230200 00000 n -0000016721 00000 n -0000230269 00000 n -0000016855 00000 n -0000230337 00000 n -0000016989 00000 n -0000230406 00000 n -0000017123 00000 n -0000230474 00000 n -0000017257 00000 n -0000230542 00000 n -0000017391 00000 n -0000230611 00000 n -0000017525 00000 n -0000230679 00000 n -0000017659 00000 n -0000230748 00000 n -0000017793 00000 n -0000230817 00000 n -0000017927 00000 n -0000230884 00000 n -0000018061 00000 n -0000230953 00000 n -0000018195 00000 n -0000231022 00000 n -0000018329 00000 n -0000231091 00000 n -0000018463 00000 n -0000231160 00000 n -0000018597 00000 n -0000231229 00000 n -0000018731 00000 n -0000231298 00000 n -0000018865 00000 n -0000231367 00000 n -0000018999 00000 n -0000231436 00000 n -0000019133 00000 n -0000231504 00000 n -0000019267 00000 n -0000231573 00000 n -0000019400 00000 n -0000231642 00000 n -0000019534 00000 n -0000231711 00000 n -0000019668 00000 n -0000231780 00000 n -0000019802 00000 n -0000231849 00000 n -0000019936 00000 n -0000231917 00000 n -0000020070 00000 n -0000231986 00000 n -0000020203 00000 n -0000232053 00000 n -0000020337 00000 n -0000232120 00000 n -0000020471 00000 n -0000232189 00000 n -0000020605 00000 n -0000232258 00000 n -0000020739 00000 n -0000232327 00000 n -0000020872 00000 n -0000232396 00000 n -0000021006 00000 n -0000232465 00000 n -0000021140 00000 n -0000232533 00000 n -0000021274 00000 n -0000232602 00000 n -0000021408 00000 n -0000232670 00000 n -0000021541 00000 n -0000232738 00000 n -0000021675 00000 n -0000232806 00000 n -0000021809 00000 n -0000232875 00000 n -0000021943 00000 n -0000232943 00000 n -0000022076 00000 n -0000233011 00000 n -0000022208 00000 n -0000023136 00000 n -0000023262 00000 n -0000023403 00000 n -0000233079 00000 n -0000023537 00000 n -0000233147 00000 n -0000023671 00000 n -0000233216 00000 n -0000023805 00000 n -0000233283 00000 n -0000023939 00000 n -0000233351 00000 n -0000024073 00000 n -0000233418 00000 n -0000024207 00000 n -0000233487 00000 n -0000024341 00000 n -0000233554 00000 n -0000024474 00000 n -0000233622 00000 n -0000024608 00000 n -0000233690 00000 n -0000024742 00000 n -0000233757 00000 n -0000024876 00000 n -0000233825 00000 n -0000025010 00000 n -0000233893 00000 n -0000025144 00000 n -0000233961 00000 n -0000025278 00000 n -0000234029 00000 n -0000025412 00000 n -0000026231 00000 n -0000026341 00000 n -0000027993 00000 n -0000028103 00000 n -0000029773 00000 n -0000029883 00000 n -0000031808 00000 n -0000031918 00000 n -0000033598 00000 n -0000033708 00000 n -0000035797 00000 n -0000035923 00000 n -0000036000 00000 n -0000234095 00000 n -0000036139 00000 n -0000036277 00000 n -0000234163 00000 n -0000036416 00000 n -0000234232 00000 n -0000036555 00000 n -0000234301 00000 n -0000036694 00000 n -0000036832 00000 n -0000234370 00000 n -0000036973 00000 n -0000038260 00000 n -0000038370 00000 n -0000040146 00000 n -0000040256 00000 n -0000041771 00000 n -0000041881 00000 n -0000043346 00000 n -0000043456 00000 n -0000044883 00000 n -0000045009 00000 n -0000045038 00000 n -0000045176 00000 n -0000046510 00000 n -0000046636 00000 n -0000046673 00000 n -0000234438 00000 n -0000046812 00000 n -0000046951 00000 n -0000048740 00000 n -0000048866 00000 n -0000048895 00000 n -0000234507 00000 n -0000049034 00000 n -0000050524 00000 n -0000050634 00000 n -0000052310 00000 n -0000052420 00000 n -0000053535 00000 n -0000053661 00000 n -0000053690 00000 n -0000234576 00000 n -0000053829 00000 n -0000055701 00000 n -0000055827 00000 n -0000055872 00000 n -0000056007 00000 n -0000234645 00000 n -0000056142 00000 n -0000234713 00000 n -0000056280 00000 n -0000057789 00000 n -0000057915 00000 n -0000057944 00000 n -0000234782 00000 n -0000058082 00000 n -0000059070 00000 n -0000059180 00000 n -0000061111 00000 n -0000061221 00000 n -0000063733 00000 n -0000063843 00000 n -0000065224 00000 n -0000065334 00000 n -0000067360 00000 n -0000067470 00000 n -0000069856 00000 n -0000069982 00000 n -0000070011 00000 n -0000070150 00000 n -0000072046 00000 n -0000072172 00000 n -0000072201 00000 n -0000072337 00000 n -0000073808 00000 n -0000073918 00000 n -0000075734 00000 n -0000075860 00000 n -0000075889 00000 n -0000076030 00000 n -0000078190 00000 n -0000078300 00000 n -0000079802 00000 n -0000079912 00000 n -0000083044 00000 n -0000083154 00000 n -0000084378 00000 n -0000084488 00000 n -0000086625 00000 n -0000086735 00000 n -0000088825 00000 n -0000088935 00000 n -0000090080 00000 n -0000090190 00000 n -0000091245 00000 n -0000091355 00000 n -0000092755 00000 n -0000092865 00000 n -0000094327 00000 n -0000094437 00000 n -0000095963 00000 n -0000096073 00000 n -0000097129 00000 n -0000097239 00000 n -0000098584 00000 n -0000098694 00000 n -0000099960 00000 n -0000100070 00000 n -0000101861 00000 n -0000101971 00000 n -0000103702 00000 n -0000103812 00000 n -0000105072 00000 n -0000105182 00000 n -0000105568 00000 n -0000105678 00000 n -0000108493 00000 n -0000108603 00000 n -0000110787 00000 n -0000110897 00000 n -0000112476 00000 n -0000112586 00000 n -0000114870 00000 n -0000114980 00000 n -0000116732 00000 n -0000116842 00000 n -0000118927 00000 n -0000119037 00000 n -0000120547 00000 n -0000120657 00000 n -0000121757 00000 n -0000121867 00000 n -0000124448 00000 n -0000124558 00000 n -0000126820 00000 n -0000126930 00000 n -0000127781 00000 n -0000127891 00000 n -0000129048 00000 n -0000129158 00000 n -0000130810 00000 n -0000130920 00000 n -0000131978 00000 n -0000132088 00000 n -0000133524 00000 n -0000133634 00000 n -0000135115 00000 n -0000135225 00000 n -0000137140 00000 n -0000137250 00000 n -0000139051 00000 n -0000139161 00000 n -0000140391 00000 n -0000140501 00000 n -0000141546 00000 n -0000141656 00000 n -0000143188 00000 n -0000143298 00000 n -0000144604 00000 n -0000144714 00000 n -0000146111 00000 n -0000146221 00000 n -0000147667 00000 n -0000147777 00000 n -0000148919 00000 n -0000149029 00000 n -0000150328 00000 n -0000150438 00000 n -0000151827 00000 n -0000151937 00000 n -0000152995 00000 n -0000153105 00000 n -0000154199 00000 n -0000154309 00000 n -0000156001 00000 n -0000156111 00000 n -0000158575 00000 n -0000158685 00000 n -0000160512 00000 n -0000160622 00000 n -0000161968 00000 n -0000162078 00000 n -0000163613 00000 n -0000163723 00000 n -0000165354 00000 n -0000165464 00000 n -0000166890 00000 n -0000167000 00000 n -0000168101 00000 n -0000168211 00000 n -0000169416 00000 n -0000169526 00000 n -0000171076 00000 n -0000171186 00000 n -0000172522 00000 n -0000172632 00000 n -0000174029 00000 n -0000174139 00000 n -0000175958 00000 n -0000176068 00000 n -0000177613 00000 n -0000177723 00000 n -0000179165 00000 n -0000179275 00000 n -0000180790 00000 n -0000180900 00000 n -0000182326 00000 n -0000182436 00000 n -0000183748 00000 n -0000183858 00000 n -0000185060 00000 n -0000185170 00000 n -0000186679 00000 n -0000186789 00000 n -0000188058 00000 n -0000188168 00000 n -0000189924 00000 n -0000190050 00000 n -0000190071 00000 n -0000191823 00000 n -0000191949 00000 n -0000191970 00000 n -0000193757 00000 n -0000193883 00000 n -0000193904 00000 n -0000194338 00000 n -0000194464 00000 n -0000234851 00000 n -0000234905 00000 n -0000194485 00000 n -0000234971 00000 n -0000194739 00000 n -0000194940 00000 n -0000195176 00000 n -0000195455 00000 n -0000195683 00000 n -0000195834 00000 n -0000195982 00000 n -0000196136 00000 n -0000196307 00000 n -0000196455 00000 n -0000196588 00000 n -0000196854 00000 n -0000196981 00000 n -0000197111 00000 n -0000197247 00000 n -0000197371 00000 n -0000197495 00000 n -0000197625 00000 n -0000197755 00000 n -0000197903 00000 n -0000198033 00000 n -0000198216 00000 n -0000198370 00000 n -0000198518 00000 n -0000198654 00000 n -0000198828 00000 n -0000199071 00000 n -0000199195 00000 n -0000199398 00000 n -0000199513 00000 n -0000235037 00000 n -0000199791 00000 n -0000235106 00000 n -0000199959 00000 n -0000235175 00000 n -0000200101 00000 n -0000235244 00000 n -0000200232 00000 n -0000235312 00000 n -0000200380 00000 n -0000200502 00000 n -0000235381 00000 n -0000200674 00000 n -0000235450 00000 n -0000200778 00000 n -0000200906 00000 n -0000201036 00000 n -0000201184 00000 n -0000201320 00000 n -0000201450 00000 n -0000201710 00000 n -0000201929 00000 n -0000202130 00000 n -0000202283 00000 n -0000202413 00000 n -0000202543 00000 n -0000202667 00000 n -0000202871 00000 n -0000203080 00000 n -0000203323 00000 n -0000235517 00000 n -0000203521 00000 n -0000235586 00000 n -0000203670 00000 n -0000235655 00000 n -0000203831 00000 n -0000235724 00000 n -0000203992 00000 n -0000235793 00000 n -0000204135 00000 n -0000235860 00000 n -0000204301 00000 n -0000235929 00000 n -0000204515 00000 n -0000235998 00000 n -0000204705 00000 n -0000236067 00000 n -0000204889 00000 n -0000236135 00000 n -0000205091 00000 n -0000205296 00000 n -0000205498 00000 n -0000205647 00000 n -0000205778 00000 n -0000205965 00000 n -0000206144 00000 n -0000206302 00000 n -0000206480 00000 n -0000206643 00000 n -0000206780 00000 n -0000206977 00000 n -0000236204 00000 n -0000207224 00000 n -0000236272 00000 n -0000207417 00000 n -0000207756 00000 n -0000207940 00000 n -0000208252 00000 n -0000208436 00000 n -0000208605 00000 n -0000208790 00000 n -0000236340 00000 n -0000209019 00000 n -0000236408 00000 n -0000209200 00000 n -0000209381 00000 n -0000209571 00000 n -0000209738 00000 n -0000209890 00000 n -0000210051 00000 n -0000210335 00000 n -0000210475 00000 n -0000210648 00000 n -0000210853 00000 n -0000211038 00000 n -0000211186 00000 n -0000236476 00000 n -0000211418 00000 n -0000211696 00000 n -0000211857 00000 n -0000212067 00000 n -0000212177 00000 n -0000212302 00000 n -0000212451 00000 n -0000212600 00000 n -0000212725 00000 n -0000212850 00000 n -0000212975 00000 n -0000213100 00000 n -0000213243 00000 n -0000213368 00000 n -0000213511 00000 n -0000213636 00000 n -0000213767 00000 n -0000213910 00000 n -0000214047 00000 n -0000214202 00000 n -0000214363 00000 n -0000214509 00000 n -0000214744 00000 n -0000214913 00000 n -0000236545 00000 n -0000215143 00000 n -0000236614 00000 n -0000215271 00000 n -0000236683 00000 n -0000215402 00000 n -0000236752 00000 n -0000215527 00000 n -0000236819 00000 n -0000215664 00000 n -0000236888 00000 n -0000215795 00000 n -0000236955 00000 n -0000215926 00000 n -0000237023 00000 n -0000216075 00000 n -0000237090 00000 n -0000216206 00000 n -0000237159 00000 n -0000216390 00000 n -0000237226 00000 n -0000216545 00000 n -0000237295 00000 n -0000216682 00000 n -0000216851 00000 n -0000217166 00000 n -0000217353 00000 n -0000217496 00000 n -0000217789 00000 n -0000218108 00000 n -0000218310 00000 n -0000218536 00000 n -0000218732 00000 n -0000218895 00000 n -0000219088 00000 n -0000219319 00000 n -0000219526 00000 n -0000219733 00000 n -0000219945 00000 n -0000220223 00000 n -0000220472 00000 n -0000220679 00000 n -0000221143 00000 n -0000221318 00000 n -0000221602 00000 n -0000221777 00000 n -0000221926 00000 n -0000222122 00000 n -0000222388 00000 n -0000222519 00000 n -0000222739 00000 n -0000222971 00000 n -0000223184 00000 n -0000223359 00000 n -0000223475 00000 n -0000223588 00000 n -0000223697 00000 n -0000223813 00000 n -0000223924 00000 n -0000224038 00000 n -0000224145 00000 n -0000224257 00000 n -trailer -<< -/Size 721 -/Root 2 0 R -/Info 4 0 R ->> -startxref -237364 -%%EOF diff --git a/src/3rdparty/squirrel/etc/minimal.c b/src/3rdparty/squirrel/etc/minimal.c deleted file mode 100644 index fc59859f87..0000000000 --- a/src/3rdparty/squirrel/etc/minimal.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include - -#include -#include -#include - -#ifdef _MSC_VER -#pragma comment (lib ,"squirrel.lib") -#pragma comment (lib ,"sqstdlib.lib") -#endif - -#ifdef SQUNICODE -#define scvprintf vwprintf -#else -#define scvprintf vprintf -#endif - -void printfunc(HSQUIRRELVM v, const SQChar *s, ...) -{ -va_list arglist; -va_start(arglist, s); -scvprintf(s, arglist); -va_end(arglist); -} - -void call_foo(HSQUIRRELVM v, int n,float f,const SQChar *s) -{ - SQInteger top = sq_gettop(v); //saves the stack size before the call - sq_pushroottable(v); //pushes the global table - sq_pushstring(v,_SC("foo"),-1); - if(SQ_SUCCEEDED(sq_get(v,-2))) { //gets the field 'foo' from the global table - sq_pushroottable(v); //push the 'this' (in this case is the global table) - sq_pushinteger(v,n); - sq_pushfloat(v,f); - sq_pushstring(v,s,-1); - sq_call(v,4,SQFalse,SQTrue); //calls the function - } - sq_settop(v,top); //restores the original stack size -} - -int main(int argc, char* argv[]) -{ - HSQUIRRELVM v; - v = sq_open(1024); // creates a VM with initial stack size 1024 - - //sq_pushroottable(v); //push the root table were to register the lib function - //sqstd_register_iolib(v); - sqstd_seterrorhandlers(v); //registers the default error handlers - - sq_setprintfunc(v, printfunc); //sets the print function - - sq_pushroottable(v); //push the root table(were the globals of the script will be stored) - if(SQ_SUCCEEDED(sqstd_dofile(v, _SC("test.nut"), SQFalse, SQTrue))) // also prints syntax errors if any - { - call_foo(v,1,2.5,_SC("teststring")); - } - - sq_pop(v,1); //pops the root table - sq_close(v); - - return 0; -} diff --git a/src/3rdparty/squirrel/etc/test.nut b/src/3rdparty/squirrel/etc/test.nut deleted file mode 100644 index 125df32cd8..0000000000 --- a/src/3rdparty/squirrel/etc/test.nut +++ /dev/null @@ -1,4 +0,0 @@ -function foo(i, f, s) -{ - print("Called foo(), i="+i+", f="+f+", s='"+s+"'\n"); -} diff --git a/src/3rdparty/squirrel/include/sqstdaux.h b/src/3rdparty/squirrel/include/sqstdaux.h index c16b04373b..ded3c12e8a 100644 --- a/src/3rdparty/squirrel/include/sqstdaux.h +++ b/src/3rdparty/squirrel/include/sqstdaux.h @@ -2,15 +2,7 @@ #ifndef _SQSTD_AUXLIB_H_ #define _SQSTD_AUXLIB_H_ -#ifdef __cplusplus -extern "C" { -#endif - -SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v); -SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v); - -#ifdef __cplusplus -} /*extern "C"*/ -#endif +void sqstd_seterrorhandlers(HSQUIRRELVM v); +void sqstd_printcallstack(HSQUIRRELVM v); #endif /* _SQSTD_AUXLIB_H_ */ diff --git a/src/3rdparty/squirrel/include/sqstdblob.h b/src/3rdparty/squirrel/include/sqstdblob.h deleted file mode 100644 index 1d9a4cdc38..0000000000 --- a/src/3rdparty/squirrel/include/sqstdblob.h +++ /dev/null @@ -1,20 +0,0 @@ -/* see copyright notice in squirrel.h */ -#ifndef _SQSTDBLOB_H_ -#define _SQSTDBLOB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size); -SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr); -SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx); - -SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v); - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /*_SQSTDBLOB_H_*/ - diff --git a/src/3rdparty/squirrel/include/sqstdio.h b/src/3rdparty/squirrel/include/sqstdio.h deleted file mode 100644 index 5eaec31c6d..0000000000 --- a/src/3rdparty/squirrel/include/sqstdio.h +++ /dev/null @@ -1,54 +0,0 @@ -/* see copyright notice in squirrel.h */ -#ifndef _SQSTDIO_H_ -#define _SQSTDIO_H_ - -#ifdef __cplusplus - -#define SQSTD_STREAM_TYPE_TAG 0x80000000 - -struct SQStream { - virtual ~SQStream() {} - virtual SQInteger Read(void *buffer, SQInteger size) = 0; - virtual SQInteger Write(void *buffer, SQInteger size) = 0; - virtual SQInteger Flush() = 0; - virtual SQInteger Tell() = 0; - virtual SQInteger Len() = 0; - virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0; - virtual bool IsValid() = 0; - virtual bool EOS() = 0; -}; - -extern "C" { -#endif - -#define SQ_SEEK_CUR 0 -#define SQ_SEEK_END 1 -#define SQ_SEEK_SET 2 - -typedef void* SQFILE; - -SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *); -SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE); -SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE); -SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger); -SQUIRREL_API SQInteger sqstd_ftell(SQFILE); -SQUIRREL_API SQInteger sqstd_fflush(SQFILE); -SQUIRREL_API SQInteger sqstd_fclose(SQFILE); -SQUIRREL_API SQInteger sqstd_feof(SQFILE); - -SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own); -SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file); - -//compiler helpers -SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror); -SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror); -SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename); - -SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v); - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /*_SQSTDIO_H_*/ - diff --git a/src/3rdparty/squirrel/include/sqstdmath.h b/src/3rdparty/squirrel/include/sqstdmath.h index 65de6fd72d..269a7e40d8 100644 --- a/src/3rdparty/squirrel/include/sqstdmath.h +++ b/src/3rdparty/squirrel/include/sqstdmath.h @@ -2,14 +2,6 @@ #ifndef _SQSTD_MATH_H_ #define _SQSTD_MATH_H_ -#ifdef __cplusplus -extern "C" { -#endif - -SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v); - -#ifdef __cplusplus -} /*extern "C"*/ -#endif +SQRESULT sqstd_register_mathlib(HSQUIRRELVM v); #endif /*_SQSTD_MATH_H_*/ diff --git a/src/3rdparty/squirrel/include/sqstdstring.h b/src/3rdparty/squirrel/include/sqstdstring.h index 3c3bce826f..856c33f791 100644 --- a/src/3rdparty/squirrel/include/sqstdstring.h +++ b/src/3rdparty/squirrel/include/sqstdstring.h @@ -2,10 +2,6 @@ #ifndef _SQSTD_STRING_H_ #define _SQSTD_STRING_H_ -#ifdef __cplusplus -extern "C" { -#endif - typedef unsigned int SQRexBool; typedef struct SQRex SQRex; @@ -14,20 +10,16 @@ typedef struct { SQInteger len; } SQRexMatch; -SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); -SQUIRREL_API void sqstd_rex_free(SQRex *exp); -SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text); -SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end); -SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end); -SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp); -SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp); - -SQUIRREL_API SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); +SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); +void sqstd_rex_free(SQRex *exp); +SQBool sqstd_rex_match(SQRex* exp,const SQChar* text); +SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end); +SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end); +SQInteger sqstd_rex_getsubexpcount(SQRex* exp); +SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp); -SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v); +SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); -#ifdef __cplusplus -} /*extern "C"*/ -#endif +SQRESULT sqstd_register_stringlib(HSQUIRRELVM v); #endif /*_SQSTD_STRING_H_*/ diff --git a/src/3rdparty/squirrel/include/sqstdsystem.h b/src/3rdparty/squirrel/include/sqstdsystem.h deleted file mode 100644 index b155a91f8b..0000000000 --- a/src/3rdparty/squirrel/include/sqstdsystem.h +++ /dev/null @@ -1,15 +0,0 @@ -/* see copyright notice in squirrel.h */ -#ifndef _SQSTD_SYSTEMLIB_H_ -#define _SQSTD_SYSTEMLIB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v); - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /* _SQSTD_SYSTEMLIB_H_ */ diff --git a/src/3rdparty/squirrel/include/squirrel.h b/src/3rdparty/squirrel/include/squirrel.h index 1fe023dfff..87e0ac0d69 100644 --- a/src/3rdparty/squirrel/include/squirrel.h +++ b/src/3rdparty/squirrel/include/squirrel.h @@ -1,81 +1,41 @@ /* -Copyright (c) 2003-2011 Alberto Demichelis - -This software is provided 'as-is', without any -express or implied warranty. In no event will the -authors be held liable for any damages arising from -the use of this software. - -Permission is granted to anyone to use this software -for any purpose, including commercial applications, -and to alter it and redistribute it freely, subject -to the following restrictions: - - 1. The origin of this software must not be - misrepresented; you must not claim that - you wrote the original software. If you - use this software in a product, an - acknowledgment in the product - documentation would be appreciated but is - not required. - - 2. Altered source versions must be plainly - marked as such, and must not be - misrepresented as being the original - software. - - 3. This notice may not be removed or - altered from any source distribution. - -*/ + * Copyright (c) 2003-2011 Alberto Demichelis + * + * This software is provided 'as-is', without any + * express or implied warranty. In no event will the + * authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software + * for any purpose, including commercial applications, + * and to alter it and redistribute it freely, subject + * to the following restrictions: + * + * 1. The origin of this software must not be + * misrepresented; you must not claim that + * you wrote the original software. If you + * use this software in a product, an + * acknowledgment in the product + * documentation would be appreciated but is + * not required. + * + * 2. Altered source versions must be plainly + * marked as such, and must not be + * misrepresented as being the original + * software. + * + * 3. This notice may not be removed or + * altered from any source distribution. + */ #ifndef _SQUIRREL_H_ #define _SQUIRREL_H_ -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_MSC_VER) -# define inline __forceinline -#endif /* _MSC_VER */ - -#if defined(_MSC_VER) && _MSC_VER >= 1400 // MSVC 2005 safety checks -# pragma warning(disable: 4996) // '_wfopen' was declared deprecated -# define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions -# define _CRT_NON_CONFORMING_SWPRINTFS // another deprecated stuff -#endif /* _MSC_VER >= 1400 */ - -#ifndef SQUIRREL_API -#define SQUIRREL_API extern -#endif - -#if (defined(_WIN64) || defined(_LP64)) -#ifndef _SQ64 -#define _SQ64 -#endif -#endif +#include "../../../string_type.h" -#ifdef _SQ64 -#ifdef _MSC_VER typedef __int64 SQInteger; typedef unsigned __int64 SQUnsignedInteger; typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/ -#elif defined(_WIN32) -typedef long long SQInteger; -typedef unsigned long long SQUnsignedInteger; -typedef unsigned long long SQHash; /*should be the same size of a pointer*/ -#else -typedef long SQInteger; -typedef unsigned long SQUnsignedInteger; -typedef unsigned long SQHash; /*should be the same size of a pointer*/ -#endif typedef int SQInt32; -#else -typedef int SQInteger; -typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/ -typedef unsigned int SQUnsignedInteger; -typedef unsigned int SQHash; /*should be the same size of a pointer*/ -#endif #ifdef SQUSEDOUBLE @@ -84,17 +44,8 @@ typedef double SQFloat; typedef float SQFloat; #endif -#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) -#ifdef _MSC_VER typedef __int64 SQRawObjectVal; //must be 64bits -#else -typedef long long SQRawObjectVal; //must be 64bits -#endif #define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; } -#else -typedef SQUnsignedInteger SQRawObjectVal; //is 32 bits on 32 bits builds and 64 bits otherwise -#define SQ_OBJECT_RAWINIT() -#endif typedef void* SQUserPointer; typedef SQUnsignedInteger SQBool; @@ -117,78 +68,12 @@ struct SQClass; struct SQInstance; struct SQDelegable; -#ifdef _UNICODE -#define SQUNICODE -#endif - -#ifdef SQUNICODE -#if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8 - -#ifndef _WCHAR_T_DEFINED //this is if the compiler considers wchar_t as native type -typedef unsigned short wchar_t; -#endif -#endif - -typedef wchar_t SQChar; -#define _SC(a) L##a -#define scstrcmp wcscmp -#define scsprintf swprintf -#define scsnprintf _snwprintf -#define scstrlen wcslen -#define scstrtod wcstod -#define scstrtol wcstol -#define scatoi _wtoi -#define scstrtoul wcstoul -#define scvsprintf vswprintf -#define scstrstr wcsstr -#define scisspace iswspace -#define scisdigit iswdigit -#define scisxdigit iswxdigit -#define scisalpha iswalpha -#define sciscntrl iswcntrl -#define scisalnum iswalnum -#define scprintf wprintf -#define scfprintf fwprintf -#define scvprintf vwprintf -#define scvfprintf vfwprintf -#define scvsnprintf _vsnwprintf -#define scstrdup _wcsdup -#define scstrrchr wcsrchr -#define scstrcat wcscat -#define MAX_CHAR 0xFFFF -#else typedef char SQChar; -#define _SC(a) a -#define scstrcmp strcmp -#define scsprintf sprintf -#define scsnprintf snprintf -#define scstrlen strlen -#define scstrtod strtod -#define scstrtol strtol -#define scatoi atoi -#define scstrtoul strtoul -#define scvsprintf vsprintf -#define scstrstr strstr -#define scisspace isspace -#define scisdigit isdigit -#define scisxdigit isxdigit -#define sciscntrl iscntrl -#define scisalpha isalpha -#define scisalnum isalnum -#define scprintf printf -#define scfprintf fprintf -#define scvprintf vprintf -#define scvfprintf vfprintf -#define scvsnprintf vsnprintf -#define scstrdup strdup -#define scstrrchr strrchr -#define scstrcat strcat #define MAX_CHAR 0xFFFF -#endif -#define SQUIRREL_VERSION _SC("Squirrel 2.2.5 stable - With custom OpenTTD modifications") -#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2010 Alberto Demichelis") -#define SQUIRREL_AUTHOR _SC("Alberto Demichelis") +#define SQUIRREL_VERSION "Squirrel 2.2.5 stable - With custom OpenTTD modifications" +#define SQUIRREL_COPYRIGHT "Copyright (C) 2003-2010 Alberto Demichelis" +#define SQUIRREL_AUTHOR "Alberto Demichelis" #define SQUIRREL_VERSION_NUMBER 225 #define SQ_VMSTATE_IDLE 0 @@ -294,7 +179,7 @@ typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...); typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger); typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger); -typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer); +typedef WChar (*SQLEXREADFUNC)(SQUserPointer); typedef struct tagSQRegFunction{ const SQChar *name; @@ -311,147 +196,147 @@ typedef struct tagSQFunctionInfo { /*vm*/ -SQUIRREL_API bool sq_can_suspend(HSQUIRRELVM v); -SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize); -SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize); -SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v); -SQUIRREL_API void sq_close(HSQUIRRELVM v); -SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p); -SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v); -SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc); -SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v); -SQUIRREL_API bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1); -SQUIRREL_API bool sq_resumeerror(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror); -SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v); -SQUIRREL_API void sq_decreaseops(HSQUIRRELVM v, int amount); +bool sq_can_suspend(HSQUIRRELVM v); +HSQUIRRELVM sq_open(SQInteger initialstacksize); +HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize); +void sq_seterrorhandler(HSQUIRRELVM v); +void sq_close(HSQUIRRELVM v); +void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p); +SQUserPointer sq_getforeignptr(HSQUIRRELVM v); +void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc); +SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v); +SQRESULT sq_suspendvm(HSQUIRRELVM v); +bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1); +bool sq_resumeerror(HSQUIRRELVM v); +SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror); +SQInteger sq_getvmstate(HSQUIRRELVM v); +void sq_decreaseops(HSQUIRRELVM v, int amount); /*compiler*/ -SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); -SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror); -SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable); -SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable); -SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f); +SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); +SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror); +void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable); +void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable); +void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f); /*stack operations*/ -SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop); -SQUIRREL_API void sq_poptop(HSQUIRRELVM v); -SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v); -SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop); -SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize); -SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v); -SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx); +void sq_push(HSQUIRRELVM v,SQInteger idx); +void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop); +void sq_poptop(HSQUIRRELVM v); +void sq_remove(HSQUIRRELVM v,SQInteger idx); +SQInteger sq_gettop(HSQUIRRELVM v); +void sq_settop(HSQUIRRELVM v,SQInteger newtop); +void sq_reservestack(HSQUIRRELVM v,SQInteger nsize); +SQInteger sq_cmp(HSQUIRRELVM v); +void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx); /*object creation handling*/ -SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size); -SQUIRREL_API void sq_newtable(HSQUIRRELVM v); -SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size); -SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); -SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask); -SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len); -SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f); -SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n); -SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b); -SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p); -SQUIRREL_API void sq_pushnull(HSQUIRRELVM v); -SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v); -SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b); -SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c); -SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i); -SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f); -SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b); -SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread); -SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p); -SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag); -SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag); -SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag); -SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook); -SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize); -SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi); -SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars); -SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name); -SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p); -SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag); -SQUIRREL_API SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize); -SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase); -SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t); +SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size); +void sq_newtable(HSQUIRRELVM v); +void sq_newarray(HSQUIRRELVM v,SQInteger size); +void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); +SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask); +SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx); +void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len); +void sq_pushfloat(HSQUIRRELVM v,SQFloat f); +void sq_pushinteger(HSQUIRRELVM v,SQInteger n); +void sq_pushbool(HSQUIRRELVM v,SQBool b); +void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p); +void sq_pushnull(HSQUIRRELVM v); +SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx); +SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx); +SQBool sq_instanceof(HSQUIRRELVM v); +void sq_tostring(HSQUIRRELVM v,SQInteger idx); +void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b); +SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c); +SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i); +SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f); +SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b); +SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread); +SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p); +SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag); +SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag); +SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag); +void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook); +SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize); +SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi); +SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars); +SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name); +SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p); +SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag); +SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize); +SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase); +SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx); +void sq_weakref(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t); /*object manipulation*/ -SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v); -SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v); -SQUIRREL_API void sq_pushconsttable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_setconsttable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic); -SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize); -SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx); -SQUIRREL_API SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos); -SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); -SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx); +void sq_pushroottable(HSQUIRRELVM v); +void sq_pushregistrytable(HSQUIRRELVM v); +void sq_pushconsttable(HSQUIRRELVM v); +SQRESULT sq_setroottable(HSQUIRRELVM v); +SQRESULT sq_setconsttable(HSQUIRRELVM v); +SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic); +SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); +SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); +SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval); +SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize); +SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx); +SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos); +SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); +SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx); +SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx); /*calls*/ -SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1); -SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror); -SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx); -SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); -SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err); -SQUIRREL_API void sq_reseterror(HSQUIRRELVM v); -SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v); +SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1); +SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror); +const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx); +const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); +SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err); +void sq_reseterror(HSQUIRRELVM v); +void sq_getlasterror(HSQUIRRELVM v); /*raw object handling*/ -SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po); -SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj); -SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po); -SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po); -SQUIRREL_API void sq_resetobject(HSQOBJECT *po); -SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o); -SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o); -SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o); -SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o); -SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag); +SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po); +void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj); +void sq_addref(HSQUIRRELVM v,HSQOBJECT *po); +SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po); +void sq_resetobject(HSQOBJECT *po); +const SQChar *sq_objtostring(HSQOBJECT *o); +SQBool sq_objtobool(HSQOBJECT *o); +SQInteger sq_objtointeger(HSQOBJECT *o); +SQFloat sq_objtofloat(HSQOBJECT *o); +SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag); /*GC*/ -SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v); +SQInteger sq_collectgarbage(HSQUIRRELVM v); /*serialization*/ -SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up); -SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up); +SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up); +SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up); /*mem allocation*/ -SQUIRREL_API void *sq_malloc(SQUnsignedInteger size); -SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize); -SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size); +void *sq_malloc(SQUnsignedInteger size); +void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize); +void sq_free(void *p,SQUnsignedInteger size); /*debug*/ -SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si); -SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v); +SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si); +void sq_setdebughook(HSQUIRRELVM v); /*UTILITY MACRO*/ #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC) @@ -483,8 +368,4 @@ SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v); #define SQ_FAILED(res) (res<0) #define SQ_SUCCEEDED(res) (res>=0) -#ifdef __cplusplus -} /*extern "C"*/ -#endif - #endif /*_SQUIRREL_H_*/ diff --git a/src/3rdparty/squirrel/samples/ackermann.nut b/src/3rdparty/squirrel/samples/ackermann.nut deleted file mode 100644 index 9fdaff06b4..0000000000 --- a/src/3rdparty/squirrel/samples/ackermann.nut +++ /dev/null @@ -1,23 +0,0 @@ -/* -* -* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) -* -*/ - -function Ack(M, N) { - if (M == 0) return( N + 1 ); - if (N == 0) return( Ack(M - 1, 1) ); - return( Ack(M - 1, Ack(M, (N - 1))) ); -} - -local n; - -if(ARGS.len()!=0) { - n = ARGS[0].tointeger(); - if(n < 1) n = 1; -} else { - n = 1; -} -print("n="+n+"\n"); -print("Ack(3,"+ n+ "):"+ Ack(3, n)); - diff --git a/src/3rdparty/squirrel/samples/array.nut b/src/3rdparty/squirrel/samples/array.nut deleted file mode 100644 index 58f160b12d..0000000000 --- a/src/3rdparty/squirrel/samples/array.nut +++ /dev/null @@ -1,28 +0,0 @@ -/* -* -* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) -* -*/ -local n, i, k; - -if(ARGS.len()!=0) { - n = ARGS[0].tointeger(); - if(n < 1) n = 1; -} else { - n = 1; -} - -local x = []; x.resize(n); -local y = []; y.resize(n); - -for (i = 0; i < n; i+=1) { - x[i] = i + 1; - y[i] = 0; -} - -for (k = 0 ; k < n; k+=1) { - for (i = n-1; i >= 0; i-=1) { - y[i] = y[i]+ x[i]; - } -} -print(y[0].tostring()+" "+y[n-1]); diff --git a/src/3rdparty/squirrel/samples/class.nut b/src/3rdparty/squirrel/samples/class.nut deleted file mode 100644 index babe54f0b3..0000000000 --- a/src/3rdparty/squirrel/samples/class.nut +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////// -class BaseVector { - constructor(...) - { - if(vargc >= 3) { - x = vargv[0]; - y = vargv[1]; - z = vargv[2]; - } - } - - - x = 0; - y = 0; - z = 0; -} - -class Vector3 extends BaseVector { - function _add(other) - { - if(other instanceof this.getclass()) - return ::Vector3(x+other.x,y+other.y,z+other.z); - else - throw "wrong parameter"; - } - function Print() - { - ::print(x+","+y+","+z+"\n"); - } -} - -local v0 = Vector3(1,2,3) -local v1 = Vector3(11,12,13) -local v2 = v0 + v1; -v2.Print(); - -FakeNamespace <- { - Utils = {} -} - -class FakeNamespace.Utils.SuperClass { - constructor() - { - ::print("FakeNamespace.Utils.SuperClass") - } -} - -local testy = FakeNamespace.Utils.SuperClass(); diff --git a/src/3rdparty/squirrel/samples/classattributes.nut b/src/3rdparty/squirrel/samples/classattributes.nut deleted file mode 100644 index 01232002c2..0000000000 --- a/src/3rdparty/squirrel/samples/classattributes.nut +++ /dev/null @@ -1,35 +0,0 @@ -class Foo { - //constructor - constructor(a) - { - testy = ["stuff",1,2,3]; - } - //attributes of PrintTesty - - function PrintTesty() - { - foreach(i,val in testy) - { - ::print("idx = "+i+" = "+val+" \n"); - } - } - //attributes of testy - - testy = null; - -} - -foreach(member,val in Foo) -{ - ::print(member+"\n"); - local attr; - if((attr = Foo.getattributes(member)) != null) { - foreach(i,v in attr) - { - ::print("\t"+i+" = "+(typeof v)+"\n"); - } - } - else { - ::print("\t\n") - } -} diff --git a/src/3rdparty/squirrel/samples/coroutines.nut b/src/3rdparty/squirrel/samples/coroutines.nut deleted file mode 100644 index c7e4583c19..0000000000 --- a/src/3rdparty/squirrel/samples/coroutines.nut +++ /dev/null @@ -1,25 +0,0 @@ -function coroutine_test(a,b) -{ - ::print(a+" "+b+"\n"); - local ret = ::suspend("suspend 1"); - ::print("the coroutine says "+ret+"\n"); - ret = ::suspend("suspend 2"); - ::print("the coroutine says "+ret+"\n"); - ret = ::suspend("suspend 3"); - ::print("the coroutine says "+ret+"\n"); - return "I'm done" -} - -local coro = ::newthread(coroutine_test); - -local susparam = coro.call("test","coroutine"); //starts the coroutine - -local i = 1; -do -{ - ::print("suspend passed ["+susparam+"]\n") - susparam = coro.wakeup("ciao "+i); - ++i; -}while(coro.getstatus()=="suspended") - -::print("return passed ["+susparam+"]\n") diff --git a/src/3rdparty/squirrel/samples/delegation.nut b/src/3rdparty/squirrel/samples/delegation.nut deleted file mode 100644 index e9e86ca9a5..0000000000 --- a/src/3rdparty/squirrel/samples/delegation.nut +++ /dev/null @@ -1,52 +0,0 @@ - -PEntity <- { - name="noname" - pos={x=0,y=0,z=0} - type="entity" - //methamethod - _typeof=function() - { - return type; - } -} - -function PEntity::PrintPos() -{ - ::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n"); -} - -function PEntity::new(name,pos) -{ - local newentity=clone ::PEntity; - if(name) - newentity.name=name; - if(pos) - newentity.pos=pos; - return newentity; -} - -PPlayer <- { - model="warrior.mdl" - weapon="fist" - health=100 - armor=0 - //overrides the parent type - type="player" -} - -function PPlayer::new(name,pos) -{ - local newplayer=delegate ::PEntity.new(name,pos) : clone ::PPlayer; - return newplayer; -} - -local player=PPlayer.new("godzilla",{x=10,y=20,z=30}); - -::print("PLAYER NAME"+player.name+"\n"); -::print("ENTITY TYPE"+typeof player+"\n"); - -player.PrintPos(); - -player.pos.x=123; - -player.PrintPos(); diff --git a/src/3rdparty/squirrel/samples/fibonacci.nut b/src/3rdparty/squirrel/samples/fibonacci.nut deleted file mode 100644 index 1db79423e5..0000000000 --- a/src/3rdparty/squirrel/samples/fibonacci.nut +++ /dev/null @@ -1,15 +0,0 @@ -/* -* -* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) -* -*/ - -function fib(n) -{ - if (n < 2) return 1 - return fib(n-2) + fib(n-1) -} - -local n = ARGS.len()!=0?ARGS[0].tointeger():1 - -print(fib(n)+"\n") diff --git a/src/3rdparty/squirrel/samples/flow.nut b/src/3rdparty/squirrel/samples/flow.nut deleted file mode 100644 index 1cd7cfcf4b..0000000000 --- a/src/3rdparty/squirrel/samples/flow.nut +++ /dev/null @@ -1,33 +0,0 @@ -function min(x,y) - return xy?x:y; - -if(min(100,200)>max(50,20)) - print("I'm useless statement just to show up the if/else\n"); -else - print("squirrel!!\n"); - -print("\n") - -function typy(obj) -{ - switch(typeof obj) - { - case "integer": - case "float": - return "is a number"; - case "table": - case "array": - return "is a container"; - default: - return "is other stuff" - } -} - -local a=1,b={},c=function(a,b){return a+b;} - -print("a "+typy(a)+"\n"); -print("b "+typy(b)+"\n"); -print("c "+typy(c)+"\n"); diff --git a/src/3rdparty/squirrel/samples/generators.nut b/src/3rdparty/squirrel/samples/generators.nut deleted file mode 100644 index 9853e09640..0000000000 --- a/src/3rdparty/squirrel/samples/generators.nut +++ /dev/null @@ -1,42 +0,0 @@ -/* -*Random number function from The Great Computer Language shootout -*converted to a generator func -*/ - -function gen_random(max) { - local last=42 - local IM = 139968; - local IA = 3877; - local IC = 29573; - for(;;){ //loops forever - yield (max * (last = (last * IA + IC) % IM) / IM); - } -} - -local randtor=gen_random(100); - -print("RAND NUMBERS \n") - -for(local i=0;i<10;i+=1) - print(">"+resume randtor+"\n"); - -print("FIBONACCI \n") -function fiboz(n) -{ - local prev=0; - local curr=1; - yield 1; - - for(local i=0;i"+val+"\n"); -} diff --git a/src/3rdparty/squirrel/samples/hello.nut b/src/3rdparty/squirrel/samples/hello.nut deleted file mode 100644 index 1dc45ac136..0000000000 --- a/src/3rdparty/squirrel/samples/hello.nut +++ /dev/null @@ -1 +0,0 @@ -print("Hello World!") \ No newline at end of file diff --git a/src/3rdparty/squirrel/samples/list.nut b/src/3rdparty/squirrel/samples/list.nut deleted file mode 100644 index 8ab1ab517b..0000000000 --- a/src/3rdparty/squirrel/samples/list.nut +++ /dev/null @@ -1,39 +0,0 @@ -/*translation of the list test from The Great Computer Language Shootout -*/ - -function compare_arr(a1,a2) -{ - foreach(i,val in a1) - if(val!=a2[i])return null; - return 1; -} - -function test() -{ - local size=10000 - local l1=[]; l1.resize(size); - for(local i=0;i0) - l3.append(l2.pop()); - while(l3.len()>0) - l2.append(l3.pop()); - l1.reverse(); - - if(compare_arr(l1,l2)) - return l1.len(); - return null; -} - -local n = ARGS.len()!=0?ARGS[0].tointeger():1 -for(local i=0;i\n"); -else - print("\n"); diff --git a/src/3rdparty/squirrel/samples/methcall.nut b/src/3rdparty/squirrel/samples/methcall.nut deleted file mode 100644 index 131d262288..0000000000 --- a/src/3rdparty/squirrel/samples/methcall.nut +++ /dev/null @@ -1,61 +0,0 @@ -/*translation of the methcall test from The Great Computer Language Shootout -*/ - -Toggle <- { - bool=null -} - -function Toggle::value() { - return bool; -} - -function Toggle::activate() { - bool = !bool; - return this; -} - -function Toggle::new(startstate) { - local newo=clone this; - newo.bool = startstate; - return newo; -} - -NthToggle <- { - count_max=null - count=0 -} - -function NthToggle::new(start_state,max_counter) -{ - local newo=delegate ::Toggle.new(start_state) : clone this; - newo.count_max <- max_counter - return newo; -} - -function NthToggle::activate () -{ - count+=1 - if (count >= count_max) { - bool = !bool; - count = 0; - } - return this; -} - - -local n = ARGS.len()!=0?ARGS[0].tointeger():1 - -local val = 1; -local toggle = Toggle.new(val); -for (local i=0; i -#include -#include -#include - -#if defined(_MSC_VER) && defined(_DEBUG) -#include -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -#ifdef SQUNICODE -#define scfprintf fwprintf -#define scfopen _wfopen -#define scvprintf vwprintf -#else -#define scfprintf fprintf -#define scfopen fopen -#define scvprintf vprintf -#endif - - -void PrintVersionInfos(); - -#if defined(_MSC_VER) && defined(_DEBUG) -int MemAllocHook( int allocType, void *userData, size_t size, int blockType, - long requestNumber, const unsigned char *filename, int lineNumber) -{ -// if(requestNumber==585)_asm int 3; - return 1; -} -#endif - - -SQInteger quit(HSQUIRRELVM v) -{ - int *done; - sq_getuserpointer(v,-1,(SQUserPointer*)&done); - *done=1; - return 0; -} - -void printfunc(HSQUIRRELVM v,const SQChar *s,...) -{ - va_list vl; - va_start(vl, s); - scvprintf( s, vl); - va_end(vl); -} - -void PrintVersionInfos() -{ - scfprintf(stdout,_SC("%s %s (%d bits)\n"),SQUIRREL_VERSION,SQUIRREL_COPYRIGHT,sizeof(SQInteger)*8); - if(sizeof(SQFloat) != sizeof(float)) { - scfprintf(stdout,_SC("[%d bits floats]\n"),sizeof(SQFloat)*8); - } -} - -void PrintUsage() -{ - scfprintf(stderr,_SC("usage: sq .\n") - _SC("Available options are:\n") - _SC(" -c compiles the file to bytecode(default output 'out.cnut')\n") - _SC(" -o specifies output file for the -c option\n") - _SC(" -c compiles only\n") - _SC(" -d generates debug infos\n") - _SC(" -v displays version infos\n") - _SC(" -h prints help\n")); -} - -#define _INTERACTIVE 0 -#define _DONE 2 -//<> this func is a mess -int getargs(HSQUIRRELVM v,int argc, char* argv[]) -{ - int i; - int compiles_only = 0; - static SQChar temp[500]; - const SQChar *ret=NULL; - char * output = NULL; - int lineinfo=0; - if(argc>1) - { - int arg=1,exitloop=0; - while(arg < argc && !exitloop) - { - - if(argv[arg][0]=='-') - { - switch(argv[arg][1]) - { - case 'd': //DEBUG(debug infos) - sq_enabledebuginfo(v,1); - break; - case 'c': - compiles_only = 1; - break; - case 'o': - if(arg < argc) { - arg++; - output = argv[arg]; - } - break; - case 'v': - PrintVersionInfos(); - return _DONE; - - case 'h': - PrintVersionInfos(); - PrintUsage(); - return _DONE; - default: - PrintVersionInfos(); - scprintf(_SC("unknown prameter '-%c'\n"),argv[arg][1]); - PrintUsage(); - return _DONE; - } - }else break; - arg++; - } - - // src file - - if(arg")); - for(;;) { - int c; - if(done)return; - c = getchar(); - if (c == _SC('\n')) { - if (i>0 && buffer[i-1] == _SC('\\')) - { - buffer[i-1] = _SC('\n'); - } - else if(blocks==0)break; - buffer[i++] = _SC('\n'); - } - else if (c==_SC('}')) {blocks--; buffer[i++] = (SQChar)c;} - else if(c==_SC('{') && !string){ - blocks++; - buffer[i++] = (SQChar)c; - } - else if(c==_SC('"') || c==_SC('\'')){ - string=!string; - buffer[i++] = (SQChar)c; - } - else if (i >= MAXINPUT-1) { - scfprintf(stderr, _SC("sq : input line too long\n")); - break; - } - else{ - buffer[i++] = (SQChar)c; - } - } - buffer[i] = _SC('\0'); - - if(buffer[0]==_SC('=')){ - scsprintf(sq_getscratchpad(v,MAXINPUT),_SC("return (%s)"),&buffer[1]); - memcpy(buffer,sq_getscratchpad(v,-1),(scstrlen(sq_getscratchpad(v,-1))+1)*sizeof(SQChar)); - retval=1; - } - i=scstrlen(buffer); - if(i>0){ - SQInteger oldtop=sq_gettop(v); - if(SQ_SUCCEEDED(sq_compilebuffer(v,buffer,i,_SC("interactive console"),SQTrue))){ - sq_pushroottable(v); - if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue)) && retval){ - scprintf(_SC("\n")); - sq_pushroottable(v); - sq_pushstring(v,_SC("print"),-1); - sq_get(v,-2); - sq_pushroottable(v); - sq_push(v,-4); - sq_call(v,2,SQFalse,SQTrue); - retval=0; - scprintf(_SC("\n")); - } - } - - sq_settop(v,oldtop); - } - } -} - -int main(int argc, char* argv[]) -{ - HSQUIRRELVM v; - - const SQChar *filename=NULL; -#if defined(_MSC_VER) && defined(_DEBUG) - _CrtSetAllocHook(MemAllocHook); -#endif - - v=sq_open(1024); - sq_setprintfunc(v,printfunc); - - sq_pushroottable(v); - - sqstd_register_bloblib(v); - sqstd_register_iolib(v); - sqstd_register_systemlib(v); - sqstd_register_mathlib(v); - sqstd_register_stringlib(v); - - //aux library - //sets error handlers - sqstd_seterrorhandlers(v); - - //gets arguments - switch(getargs(v,argc,argv)) - { - case _INTERACTIVE: - Interactive(v); - break; - case _DONE: - default: - break; - } - - sq_close(v); - -#if defined(_MSC_VER) && defined(_DEBUG) - _getch(); - _CrtMemDumpAllObjectsSince( NULL ); -#endif - return 0; -} - diff --git a/src/3rdparty/squirrel/sq/sq.dsp b/src/3rdparty/squirrel/sq/sq.dsp deleted file mode 100644 index 77887d0644..0000000000 --- a/src/3rdparty/squirrel/sq/sq.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sq" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sq - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sq.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sq.mak" CFG="sq - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sq - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sq - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_LocalPath ".." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sq - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x410 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /machine:I386 /out:"../bin/sq.exe" /libpath:"../lib" - -!ELSEIF "$(CFG)" == "sq - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x410 /d "_DEBUG" -# ADD RSC /l 0x410 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../bin/sq.exe" /pdbtype:sept /libpath:"../lib" - -!ENDIF - -# Begin Target - -# Name "sq - Win32 Release" -# Name "sq - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\sq.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/3rdparty/squirrel/sqstdlib/Makefile b/src/3rdparty/squirrel/sqstdlib/Makefile deleted file mode 100644 index d2c33c54a0..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -SQUIRREL= .. - - -OUT= $(SQUIRREL)/lib/libsqstdlib.a -INCZ= -I$(SQUIRREL)/include -I. -Iinclude - -SRCS= \ - sqstdblob.cpp \ - sqstdio.cpp \ - sqstdstream.cpp \ - sqstdmath.cpp \ - sqstdsystem.cpp \ - sqstdstring.cpp \ - sqstdaux.cpp \ - sqstdrex.cpp - - -sq32: - gcc -O2 -fno-rtti -Wall -c $(SRCS) $(INCZ) - ar rc $(OUT) *.o - -sqprof: - gcc -O2 -pg -fno-rtti -pie -gstabs -g3 -Wall -c $(SRCS) $(INCZ) - ar rc $(OUT) *.o - -sq64: - gcc -O2 -D_SQ64 -fno-rtti -Wall -c $(SRCS) $(INCZ) - ar rc $(OUT) *.o - -clean: - rm -f $(OUT) $(SRCS:%.cpp=%.o) diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp index 78b8a9c603..67b299bcec 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp @@ -1,8 +1,11 @@ /* see copyright notice in squirrel.h */ + +#include "../../../stdafx.h" + #include #include -#include -#include + +#include "../../../safeguards.h" void sqstd_printcallstack(HSQUIRRELVM v) { @@ -16,30 +19,30 @@ void sqstd_printcallstack(HSQUIRRELVM v) SQInteger level=1; //1 is to skip this function that is level 0 const SQChar *name=0; SQInteger seq=0; - pf(v,_SC("\nCALLSTACK\n")); + pf(v,"\nCALLSTACK\n"); while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si))) { - const SQChar *fn=_SC("unknown"); - const SQChar *src=_SC("unknown"); + const SQChar *fn="unknown"; + const SQChar *src="unknown"; if(si.funcname)fn=si.funcname; if(si.source) { /* We don't want to bother users with absolute paths to all AI files. * Since the path only reaches NoAI code in a formatted string we have * to strip it here. Let's hope nobody installs openttd in a subdirectory * of a directory named /ai/. */ - src = scstrstr(si.source, _SC("\\ai\\")); - if (!src) src = scstrstr(si.source, _SC("/ai/")); + src = strstr(si.source, "\\ai\\"); + if (!src) src = strstr(si.source, "/ai/"); if (src) { src += 4; } else { src = si.source; } } - pf(v,_SC("*FUNCTION [%s()] %s line [%d]\n"),fn,src,si.line); + pf(v,"*FUNCTION [%s()] %s line [%d]\n",fn,src,si.line); level++; } level=0; - pf(v,_SC("\nLOCALS\n")); + pf(v,"\nLOCALS\n"); for(level=0;level<10;level++){ seq=0; @@ -49,56 +52,56 @@ void sqstd_printcallstack(HSQUIRRELVM v) switch(sq_gettype(v,-1)) { case OT_NULL: - pf(v,_SC("[%s] NULL\n"),name); + pf(v,"[%s] NULL\n",name); break; case OT_INTEGER: sq_getinteger(v,-1,&i); - pf(v,_SC("[%s] %d\n"),name,i); + pf(v,"[%s] %d\n",name,i); break; case OT_FLOAT: sq_getfloat(v,-1,&f); - pf(v,_SC("[%s] %.14g\n"),name,f); + pf(v,"[%s] %.14g\n",name,f); break; case OT_USERPOINTER: - pf(v,_SC("[%s] USERPOINTER\n"),name); + pf(v,"[%s] USERPOINTER\n",name); break; case OT_STRING: sq_getstring(v,-1,&s); - pf(v,_SC("[%s] \"%s\"\n"),name,s); + pf(v,"[%s] \"%s\"\n",name,s); break; case OT_TABLE: - pf(v,_SC("[%s] TABLE\n"),name); + pf(v,"[%s] TABLE\n",name); break; case OT_ARRAY: - pf(v,_SC("[%s] ARRAY\n"),name); + pf(v,"[%s] ARRAY\n",name); break; case OT_CLOSURE: - pf(v,_SC("[%s] CLOSURE\n"),name); + pf(v,"[%s] CLOSURE\n",name); break; case OT_NATIVECLOSURE: - pf(v,_SC("[%s] NATIVECLOSURE\n"),name); + pf(v,"[%s] NATIVECLOSURE\n",name); break; case OT_GENERATOR: - pf(v,_SC("[%s] GENERATOR\n"),name); + pf(v,"[%s] GENERATOR\n",name); break; case OT_USERDATA: - pf(v,_SC("[%s] USERDATA\n"),name); + pf(v,"[%s] USERDATA\n",name); break; case OT_THREAD: - pf(v,_SC("[%s] THREAD\n"),name); + pf(v,"[%s] THREAD\n",name); break; case OT_CLASS: - pf(v,_SC("[%s] CLASS\n"),name); + pf(v,"[%s] CLASS\n",name); break; case OT_INSTANCE: - pf(v,_SC("[%s] INSTANCE\n"),name); + pf(v,"[%s] INSTANCE\n",name); break; case OT_WEAKREF: - pf(v,_SC("[%s] WEAKREF\n"),name); + pf(v,"[%s] WEAKREF\n",name); break; case OT_BOOL:{ sq_getbool(v,-1,&b); - pf(v,_SC("[%s] %s\n"),name,b?_SC("true"):_SC("false")); + pf(v,"[%s] %s\n",name,b?"true":"false"); } break; default: assert(0); break; @@ -116,10 +119,10 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v) const SQChar *sErr = 0; if(sq_gettop(v)>=1) { if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr))) { - pf(v,_SC("\nAN ERROR HAS OCCURED [%s]\n"),sErr); + pf(v,"\nAN ERROR HAS OCCURED [%s]\n",sErr); } else{ - pf(v,_SC("\nAN ERROR HAS OCCURED [unknown]\n")); + pf(v,"\nAN ERROR HAS OCCURED [unknown]\n"); } sqstd_printcallstack(v); } @@ -131,7 +134,7 @@ void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSourc { SQPRINTFUNCTION pf = sq_getprintfunc(v); if(pf) { - pf(v,_SC("%s line = (%d) column = (%d) : error %s\n"),sSource,line,column,sErr); + pf(v,"%s line = (%d) column = (%d) : error %s\n",sSource,line,column,sErr); } } diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdblob.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdblob.cpp deleted file mode 100644 index 23842ba6fd..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdblob.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* see copyright notice in squirrel.h */ -#include -#include -#include -#include -#include -#include "sqstdstream.h" -#include "sqstdblobimpl.h" - -#define SQSTD_BLOB_TYPE_TAG (SQSTD_STREAM_TYPE_TAG | 0x00000002) - -//Blob - - -#define SETUP_BLOB(v) \ - SQBlob *self = NULL; \ - { if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) \ - return SQ_ERROR; } - - -static SQInteger _blob_resize(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - SQInteger size; - sq_getinteger(v,2,&size); - if(!self->Resize(size)) - return sq_throwerror(v,_SC("resize failed")); - return 0; -} - -static void __swap_dword(unsigned int *n) -{ - *n=(unsigned int)(((*n&0xFF000000)>>24) | - ((*n&0x00FF0000)>>8) | - ((*n&0x0000FF00)<<8) | - ((*n&0x000000FF)<<24)); -} - -static void __swap_word(unsigned short *n) -{ - *n=(unsigned short)((*n>>8)&0x00FF)| ((*n<<8)&0xFF00); -} - -static SQInteger _blob_swap4(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - SQInteger num=(self->Len()-(self->Len()%4))>>2; - unsigned int *t=(unsigned int *)self->GetBuf(); - for(SQInteger i = 0; i < num; i++) { - __swap_dword(&t[i]); - } - return 0; -} - -static SQInteger _blob_swap2(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - SQInteger num=(self->Len()-(self->Len()%2))>>1; - unsigned short *t = (unsigned short *)self->GetBuf(); - for(SQInteger i = 0; i < num; i++) { - __swap_word(&t[i]); - } - return 0; -} - -static SQInteger _blob__set(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - SQInteger idx,val; - sq_getinteger(v,2,&idx); - sq_getinteger(v,3,&val); - if(idx < 0 || idx >= self->Len()) - return sq_throwerror(v,_SC("index out of range")); - ((unsigned char *)self->GetBuf())[idx] = (unsigned char) val; - sq_push(v,3); - return 1; -} - -static SQInteger _blob__get(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - SQInteger idx; - sq_getinteger(v,2,&idx); - if(idx < 0 || idx >= self->Len()) - return sq_throwerror(v,_SC("index out of range")); - sq_pushinteger(v,((unsigned char *)self->GetBuf())[idx]); - return 1; -} - -static SQInteger _blob__nexti(HSQUIRRELVM v) -{ - SETUP_BLOB(v); - if(sq_gettype(v,2) == OT_NULL) { - sq_pushinteger(v, 0); - return 1; - } - SQInteger idx; - if(SQ_SUCCEEDED(sq_getinteger(v, 2, &idx))) { - if(idx+1 < self->Len()) { - sq_pushinteger(v, idx+1); - return 1; - } - sq_pushnull(v); - return 1; - } - return sq_throwerror(v,_SC("internal error (_nexti) wrong argument type")); -} - -static SQInteger _blob__typeof(HSQUIRRELVM v) -{ - sq_pushstring(v,_SC("blob"),-1); - return 1; -} - -static SQInteger _blob_releasehook(SQUserPointer p, SQInteger size) -{ - SQBlob *self = (SQBlob*)p; - delete self; - return 1; -} - -static SQInteger _blob_constructor(HSQUIRRELVM v) -{ - SQInteger nparam = sq_gettop(v); - SQInteger size = 0; - if(nparam == 2) { - sq_getinteger(v, 2, &size); - } - if(size < 0) return sq_throwerror(v, _SC("cannot create blob with negative size")); - SQBlob *b = new SQBlob(size); - if(SQ_FAILED(sq_setinstanceup(v,1,b))) { - delete b; - return sq_throwerror(v, _SC("cannot create blob with negative size")); - } - sq_setreleasehook(v,1,_blob_releasehook); - return 0; -} - -#define _DECL_BLOB_FUNC(name,nparams,typecheck) {_SC(#name),_blob_##name,nparams,typecheck} -static SQRegFunction _blob_methods[] = { - _DECL_BLOB_FUNC(constructor,-1,_SC("xn")), - _DECL_BLOB_FUNC(resize,2,_SC("xn")), - _DECL_BLOB_FUNC(swap2,1,_SC("x")), - _DECL_BLOB_FUNC(swap4,1,_SC("x")), - _DECL_BLOB_FUNC(_set,3,_SC("xnn")), - _DECL_BLOB_FUNC(_get,2,_SC("xn")), - _DECL_BLOB_FUNC(_typeof,1,_SC("x")), - _DECL_BLOB_FUNC(_nexti,2,_SC("x")), - {0,0,0,0} -}; - - - -//GLOBAL FUNCTIONS - -static SQInteger _g_blob_casti2f(HSQUIRRELVM v) -{ - SQInteger i; - sq_getinteger(v,2,&i); - sq_pushfloat(v,*((SQFloat *)&i)); - return 1; -} - -static SQInteger _g_blob_castf2i(HSQUIRRELVM v) -{ - SQFloat f; - sq_getfloat(v,2,&f); - sq_pushinteger(v,*((SQInteger *)&f)); - return 1; -} - -static SQInteger _g_blob_swap2(HSQUIRRELVM v) -{ - SQInteger i; - sq_getinteger(v,2,&i); - short s=(short)i; - sq_pushinteger(v,(s<<8)|((s>>8)&0x00FF)); - return 1; -} - -static SQInteger _g_blob_swap4(HSQUIRRELVM v) -{ - SQInteger i; - sq_getinteger(v,2,&i); - unsigned int t4 = (unsigned int)i; - __swap_dword(&t4); - sq_pushinteger(v,(SQInteger)t4); - return 1; -} - -static SQInteger _g_blob_swapfloat(HSQUIRRELVM v) -{ - SQFloat f; - sq_getfloat(v,2,&f); - __swap_dword((unsigned int *)&f); - sq_pushfloat(v,f); - return 1; -} - -#define _DECL_GLOBALBLOB_FUNC(name,nparams,typecheck) {_SC(#name),_g_blob_##name,nparams,typecheck} -static SQRegFunction bloblib_funcs[]={ - _DECL_GLOBALBLOB_FUNC(casti2f,2,_SC(".n")), - _DECL_GLOBALBLOB_FUNC(castf2i,2,_SC(".n")), - _DECL_GLOBALBLOB_FUNC(swap2,2,_SC(".n")), - _DECL_GLOBALBLOB_FUNC(swap4,2,_SC(".n")), - _DECL_GLOBALBLOB_FUNC(swapfloat,2,_SC(".n")), - {0,0,0,0} -}; - -SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr) -{ - SQBlob *blob; - if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) - return -1; - *ptr = blob->GetBuf(); - return SQ_OK; -} - -SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx) -{ - SQBlob *blob; - if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) - return -1; - return blob->Len(); -} - -SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size) -{ - SQInteger top = sq_gettop(v); - sq_pushregistrytable(v); - sq_pushstring(v,_SC("std_blob"),-1); - if(SQ_SUCCEEDED(sq_get(v,-2))) { - sq_remove(v,-2); //removes the registry - sq_push(v,1); // push the this - sq_pushinteger(v,size); //size - SQBlob *blob = NULL; - if(SQ_SUCCEEDED(sq_call(v,2,SQTrue,SQFalse)) - && SQ_SUCCEEDED(sq_getinstanceup(v,-1,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) { - sq_remove(v,-2); - return blob->GetBuf(); - } - } - sq_settop(v,top); - return NULL; -} - -SQRESULT sqstd_register_bloblib(HSQUIRRELVM v) -{ - return declare_stream(v,_SC("blob"),(SQUserPointer)SQSTD_BLOB_TYPE_TAG,_SC("std_blob"),_blob_methods,bloblib_funcs); -} - diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdblobimpl.h b/src/3rdparty/squirrel/sqstdlib/sqstdblobimpl.h deleted file mode 100644 index 9f22c0ae2d..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdblobimpl.h +++ /dev/null @@ -1,108 +0,0 @@ -/* see copyright notice in squirrel.h */ -#ifndef _SQSTD_BLOBIMPL_H_ -#define _SQSTD_BLOBIMPL_H_ - -struct SQBlob : public SQStream -{ - SQBlob(SQInteger size) { - _size = size; - _allocated = size; - _buf = (unsigned char *)sq_malloc(size); - memset(_buf, 0, _size); - _ptr = 0; - _owns = true; - } - virtual ~SQBlob() { - sq_free(_buf, _allocated); - } - SQInteger Write(void *buffer, SQInteger size) { - if(!CanAdvance(size)) { - GrowBufOf(_ptr + size - _size); - } - memcpy(&_buf[_ptr], buffer, size); - _ptr += size; - return size; - } - SQInteger Read(void *buffer,SQInteger size) { - SQInteger n = size; - if(!CanAdvance(size)) { - if((_size - _ptr) > 0) - n = _size - _ptr; - else return 0; - } - memcpy(buffer, &_buf[_ptr], n); - _ptr += n; - return n; - } - bool Resize(SQInteger n) { - if(!_owns) return false; - if(n != _allocated) { - unsigned char *newbuf = (unsigned char *)sq_malloc(n); - memset(newbuf,0,n); - if(_size > n) - memcpy(newbuf,_buf,n); - else - memcpy(newbuf,_buf,_size); - sq_free(_buf,_allocated); - _buf=newbuf; - _allocated = n; - if(_size > _allocated) - _size = _allocated; - if(_ptr > _allocated) - _ptr = _allocated; - } - return true; - } - bool GrowBufOf(SQInteger n) - { - bool ret = true; - if(_size + n > _allocated) { - if(_size + n > _size * 2) - ret = Resize(_size + n); - else - ret = Resize(_size * 2); - } - _size = _size + n; - return ret; - } - bool CanAdvance(SQInteger n) { - if(_ptr+n>_size)return false; - return true; - } - SQInteger Seek(SQInteger offset, SQInteger origin) { - switch(origin) { - case SQ_SEEK_SET: - if(offset > _size || offset < 0) return -1; - _ptr = offset; - break; - case SQ_SEEK_CUR: - if(_ptr + offset > _size || _ptr + offset < 0) return -1; - _ptr += offset; - break; - case SQ_SEEK_END: - if(_size + offset > _size || _size + offset < 0) return -1; - _ptr = _size + offset; - break; - default: return -1; - } - return 0; - } - bool IsValid() { - return _buf?true:false; - } - bool EOS() { - return _ptr == _size; - } - SQInteger Flush() { return 0; } - SQInteger Tell() { return _ptr; } - SQInteger Len() { return _size; } - SQUserPointer GetBuf(){ return _buf; } -private: - SQInteger _size; - SQInteger _allocated; - SQInteger _ptr; - unsigned char *_buf; - bool _owns; -}; - -#endif //_SQSTD_BLOBIMPL_H_ diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdio.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdio.cpp deleted file mode 100644 index 217205e5c9..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdio.cpp +++ /dev/null @@ -1,410 +0,0 @@ -/* see copyright notice in squirrel.h */ -#include -#include -#include -#include -#include "sqstdstream.h" - -#define SQSTD_FILE_TYPE_TAG (SQSTD_STREAM_TYPE_TAG | 0x00000001) -//basic API -SQFILE sqstd_fopen(const SQChar *filename ,const SQChar *mode) -{ -#ifndef SQUNICODE - return (SQFILE)fopen(filename,mode); -#else - return (SQFILE)_wfopen(filename,mode); -#endif -} - -SQInteger sqstd_fread(void* buffer, SQInteger size, SQInteger count, SQFILE file) -{ - return (SQInteger)fread(buffer,size,count,(FILE *)file); -} - -SQInteger sqstd_fwrite(const SQUserPointer buffer, SQInteger size, SQInteger count, SQFILE file) -{ - return (SQInteger)fwrite(buffer,size,count,(FILE *)file); -} - -SQInteger sqstd_fseek(SQFILE file, SQInteger offset, SQInteger origin) -{ - SQInteger realorigin; - switch(origin) { - case SQ_SEEK_CUR: realorigin = SEEK_CUR; break; - case SQ_SEEK_END: realorigin = SEEK_END; break; - case SQ_SEEK_SET: realorigin = SEEK_SET; break; - default: return -1; //failed - } - return fseek((FILE *)file,(long)offset,(int)realorigin); -} - -SQInteger sqstd_ftell(SQFILE file) -{ - return ftell((FILE *)file); -} - -SQInteger sqstd_fflush(SQFILE file) -{ - return fflush((FILE *)file); -} - -SQInteger sqstd_fclose(SQFILE file) -{ - return fclose((FILE *)file); -} - -SQInteger sqstd_feof(SQFILE file) -{ - return feof((FILE *)file); -} - -//File -struct SQFile : public SQStream { - SQFile() { _handle = NULL; _owns = false;} - SQFile(SQFILE file, bool owns) { _handle = file; _owns = owns;} - virtual ~SQFile() { Close(); } - bool Open(const SQChar *filename ,const SQChar *mode) { - Close(); - if( (_handle = sqstd_fopen(filename,mode)) ) { - _owns = true; - return true; - } - return false; - } - void Close() { - if(_handle && _owns) { - sqstd_fclose(_handle); - _handle = NULL; - _owns = false; - } - } - SQInteger Read(void *buffer,SQInteger size) { - return sqstd_fread(buffer,1,size,_handle); - } - SQInteger Write(void *buffer,SQInteger size) { - return sqstd_fwrite(buffer,1,size,_handle); - } - SQInteger Flush() { - return sqstd_fflush(_handle); - } - SQInteger Tell() { - return sqstd_ftell(_handle); - } - SQInteger Len() { - SQInteger prevpos=Tell(); - Seek(0,SQ_SEEK_END); - SQInteger size=Tell(); - Seek(prevpos,SQ_SEEK_SET); - return size; - } - SQInteger Seek(SQInteger offset, SQInteger origin) { - return sqstd_fseek(_handle,offset,origin); - } - bool IsValid() { return _handle?true:false; } - bool EOS() { return Tell()==Len()?true:false;} - SQFILE GetHandle() {return _handle;} -private: - SQFILE _handle; - bool _owns; -}; - -static SQInteger _file__typeof(HSQUIRRELVM v) -{ - sq_pushstring(v,_SC("file"),-1); - return 1; -} - -static SQInteger _file_releasehook(SQUserPointer p, SQInteger size) -{ - SQFile *self = (SQFile*)p; - delete self; - return 1; -} - -static SQInteger _file_constructor(HSQUIRRELVM v) -{ - const SQChar *filename,*mode; - bool owns = true; - SQFile *f; - SQFILE newf; - if(sq_gettype(v,2) == OT_STRING && sq_gettype(v,3) == OT_STRING) { - sq_getstring(v, 2, &filename); - sq_getstring(v, 3, &mode); - newf = sqstd_fopen(filename, mode); - if(!newf) return sq_throwerror(v, _SC("cannot open file")); - } else if(sq_gettype(v,2) == OT_USERPOINTER) { - owns = !(sq_gettype(v,3) == OT_NULL); - sq_getuserpointer(v,2,&newf); - } else { - return sq_throwerror(v,_SC("wrong parameter")); - } - f = new SQFile(newf,owns); - if(SQ_FAILED(sq_setinstanceup(v,1,f))) { - delete f; - return sq_throwerror(v, _SC("cannot create blob with negative size")); - } - sq_setreleasehook(v,1,_file_releasehook); - return 0; -} - -//bindings -#define _DECL_FILE_FUNC(name,nparams,typecheck) {_SC(#name),_file_##name,nparams,typecheck} -static SQRegFunction _file_methods[] = { - _DECL_FILE_FUNC(constructor,3,_SC("x")), - _DECL_FILE_FUNC(_typeof,1,_SC("x")), - {0,0,0,0}, -}; - - - -SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own) -{ - SQInteger top = sq_gettop(v); - sq_pushregistrytable(v); - sq_pushstring(v,_SC("std_file"),-1); - if(SQ_SUCCEEDED(sq_get(v,-2))) { - sq_remove(v,-2); //removes the registry - sq_pushroottable(v); // push the this - sq_pushuserpointer(v,file); //file - if(own){ - sq_pushinteger(v,1); //true - } - else{ - sq_pushnull(v); //false - } - if(SQ_SUCCEEDED( sq_call(v,3,SQTrue,SQFalse) )) { - sq_remove(v,-2); - return SQ_OK; - } - } - sq_settop(v,top); - return SQ_OK; -} - -SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file) -{ - SQFile *fileobj = NULL; - if(SQ_SUCCEEDED(sq_getinstanceup(v,idx,(SQUserPointer*)&fileobj,(SQUserPointer)SQSTD_FILE_TYPE_TAG))) { - *file = fileobj->GetHandle(); - return SQ_OK; - } - return sq_throwerror(v,_SC("not a file")); -} - - - -static SQInteger _io_file_lexfeed_ASCII(SQUserPointer file) -{ - SQInteger ret; - char c; - if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) - return c; - return 0; -} - -static SQInteger _io_file_lexfeed_UTF8(SQUserPointer file) -{ -#define READ() \ - if(sqstd_fread(&inchar,sizeof(inchar),1,(FILE *)file) != 1) \ - return 0; - - static const SQInteger utf8_lengths[16] = - { - 1,1,1,1,1,1,1,1, /* 0000 to 0111 : 1 byte (plain ASCII) */ - 0,0,0,0, /* 1000 to 1011 : not valid */ - 2,2, /* 1100, 1101 : 2 bytes */ - 3, /* 1110 : 3 bytes */ - 4 /* 1111 :4 bytes */ - }; - static unsigned char byte_masks[5] = {0,0,0x1f,0x0f,0x07}; - unsigned char inchar; - SQInteger c = 0; - READ(); - c = inchar; - // - if(c >= 0x80) { - SQInteger tmp; - SQInteger codelen = utf8_lengths[c>>4]; - if(codelen == 0) - return 0; - //"invalid UTF-8 stream"; - tmp = c&byte_masks[codelen]; - for(SQInteger n = 0; n < codelen-1; n++) { - tmp<<=6; - READ(); - tmp |= inchar & 0x3F; - } - c = tmp; - } - return c; -} - -static SQInteger _io_file_lexfeed_UCS2_LE(SQUserPointer file) -{ - SQInteger ret; - wchar_t c; - if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) - return (SQChar)c; - return 0; -} - -static SQInteger _io_file_lexfeed_UCS2_BE(SQUserPointer file) -{ - SQInteger ret; - unsigned short c; - if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) { - c = ((c>>8)&0x00FF)| ((c<<8)&0xFF00); - return (SQChar)c; - } - return 0; -} - -SQInteger file_read(SQUserPointer file,SQUserPointer buf,SQInteger size) -{ - SQInteger ret; - if( ( ret = sqstd_fread(buf,1,size,(SQFILE)file ))!=0 )return ret; - return -1; -} - -SQInteger file_write(SQUserPointer file,SQUserPointer p,SQInteger size) -{ - return sqstd_fwrite(p,1,size,(SQFILE)file); -} - -SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror) -{ - SQFILE file = sqstd_fopen(filename,_SC("rb")); - SQInteger ret; - unsigned short us; - unsigned char uc; - SQLEXREADFUNC func = _io_file_lexfeed_ASCII; - if(file){ - ret = sqstd_fread(&us,1,2,file); - if(ret != 2) { - //probably an empty file - us = 0; - } - if(us == SQ_BYTECODE_STREAM_TAG) { //BYTECODE - sqstd_fseek(file,0,SQ_SEEK_SET); - if(SQ_SUCCEEDED(sq_readclosure(v,file_read,file))) { - sqstd_fclose(file); - return SQ_OK; - } - } - else { //SCRIPT - switch(us) - { - //gotta swap the next 2 lines on BIG endian machines - case 0xFFFE: func = _io_file_lexfeed_UCS2_BE; break;//UTF-16 little endian; - case 0xFEFF: func = _io_file_lexfeed_UCS2_LE; break;//UTF-16 big endian; - case 0xBBEF: - if(sqstd_fread(&uc,1,sizeof(uc),file) == 0) { - sqstd_fclose(file); - return sq_throwerror(v,_SC("io error")); - } - if(uc != 0xBF) { - sqstd_fclose(file); - return sq_throwerror(v,_SC("Unrecognozed ecoding")); - } - func = _io_file_lexfeed_UTF8; - break;//UTF-8 ; - default: sqstd_fseek(file,0,SQ_SEEK_SET); break; // ascii - } - - if(SQ_SUCCEEDED(sq_compile(v,func,file,filename,printerror))){ - sqstd_fclose(file); - return SQ_OK; - } - } - sqstd_fclose(file); - return SQ_ERROR; - } - return sq_throwerror(v,_SC("cannot open the file")); -} - -SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror) -{ - if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,printerror))) { - sq_push(v,-2); - if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue))) { - sq_remove(v,retval?-2:-1); //removes the closure - return 1; - } - sq_pop(v,1); //removes the closure - } - return SQ_ERROR; -} - -SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename) -{ - SQFILE file = sqstd_fopen(filename,_SC("wb+")); - if(!file) return sq_throwerror(v,_SC("cannot open the file")); - if(SQ_SUCCEEDED(sq_writeclosure(v,file_write,file))) { - sqstd_fclose(file); - return SQ_OK; - } - sqstd_fclose(file); - return SQ_ERROR; //forward the error -} - -SQInteger _g_io_loadfile(HSQUIRRELVM v) -{ - const SQChar *filename; - SQBool printerror = SQFalse; - sq_getstring(v,2,&filename); - if(sq_gettop(v) >= 3) { - sq_getbool(v,3,&printerror); - } - if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,printerror))) - return 1; - return SQ_ERROR; //propagates the error -} - -SQInteger _g_io_writeclosuretofile(HSQUIRRELVM v) -{ - const SQChar *filename; - sq_getstring(v,2,&filename); - if(SQ_SUCCEEDED(sqstd_writeclosuretofile(v,filename))) - return 1; - return SQ_ERROR; //propagates the error -} - -SQInteger _g_io_dofile(HSQUIRRELVM v) -{ - const SQChar *filename; - SQBool printerror = SQFalse; - sq_getstring(v,2,&filename); - if(sq_gettop(v) >= 3) { - sq_getbool(v,3,&printerror); - } - sq_push(v,1); //repush the this - if(SQ_SUCCEEDED(sqstd_dofile(v,filename,SQTrue,printerror))) - return 1; - return SQ_ERROR; //propagates the error -} - -#define _DECL_GLOBALIO_FUNC(name,nparams,typecheck) {_SC(#name),_g_io_##name,nparams,typecheck} -static SQRegFunction iolib_funcs[]={ - _DECL_GLOBALIO_FUNC(loadfile,-2,_SC(".sb")), - _DECL_GLOBALIO_FUNC(dofile,-2,_SC(".sb")), - _DECL_GLOBALIO_FUNC(writeclosuretofile,3,_SC(".sc")), - {0,0,0,0} -}; - -SQRESULT sqstd_register_iolib(HSQUIRRELVM v) -{ - SQInteger top = sq_gettop(v); - //create delegate - declare_stream(v,_SC("file"),(SQUserPointer)SQSTD_FILE_TYPE_TAG,_SC("std_file"),_file_methods,iolib_funcs); - sq_pushstring(v,_SC("stdout"),-1); - sqstd_createfile(v,stdout,SQFalse); - sq_createslot(v,-3); - sq_pushstring(v,_SC("stdin"),-1); - sqstd_createfile(v,stdin,SQFalse); - sq_createslot(v,-3); - sq_pushstring(v,_SC("stderr"),-1); - sqstd_createfile(v,stderr,SQFalse); - sq_createslot(v,-3); - sq_settop(v,top); - return SQ_OK; -} diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdlib.dsp b/src/3rdparty/squirrel/sqstdlib/sqstdlib.dsp deleted file mode 100644 index ad0bcece30..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdlib.dsp +++ /dev/null @@ -1,131 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sqstdlib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=sqstdlib - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sqstdlib.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sqstdlib.mak" CFG="sqstdlib - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sqstdlib - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "sqstdlib - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_LocalPath ".." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sqstdlib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x410 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib\sqstdlib.lib" - -!ELSEIF "$(CFG)" == "sqstdlib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD BASE RSC /l 0x410 /d "_DEBUG" -# ADD RSC /l 0x410 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib\sqstdlib.lib" - -!ENDIF - -# Begin Target - -# Name "sqstdlib - Win32 Release" -# Name "sqstdlib - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\sqstdblob.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdio.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdmath.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdrex.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdstream.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdstring.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdaux.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqstdsystem.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\sqstdblobimpl.h -# End Source File -# Begin Source File - -SOURCE=.\sqstdstream.h -# End Source File -# End Group -# End Target -# End Project diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp index 132f341f22..0ff0090209 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp @@ -1,9 +1,13 @@ /* see copyright notice in squirrel.h */ + +#include "../../../stdafx.h" + #include #include -#include #include +#include "../../../safeguards.h" + #define SINGLE_ARG_FUNC(_funcname, num_ops) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ SQFloat f; \ sq_decreaseops(v,num_ops); \ @@ -26,7 +30,7 @@ static SQInteger math_srand(HSQUIRRELVM v) { SQInteger i; if(SQ_FAILED(sq_getinteger(v,2,&i))) - return sq_throwerror(v,_SC("invalid param")); + return sq_throwerror(v,"invalid param"); srand((unsigned int)i); return 0; } @@ -62,28 +66,28 @@ SINGLE_ARG_FUNC(floor, 1) SINGLE_ARG_FUNC(ceil, 1) SINGLE_ARG_FUNC(exp, 100) -#define _DECL_FUNC(name,nparams,tycheck) {_SC(#name),math_##name,nparams,tycheck} +#define _DECL_FUNC(name,nparams,tycheck) {#name,math_##name,nparams,tycheck} static SQRegFunction mathlib_funcs[] = { - _DECL_FUNC(sqrt,2,_SC(".n")), - _DECL_FUNC(sin,2,_SC(".n")), - _DECL_FUNC(cos,2,_SC(".n")), - _DECL_FUNC(asin,2,_SC(".n")), - _DECL_FUNC(acos,2,_SC(".n")), - _DECL_FUNC(log,2,_SC(".n")), - _DECL_FUNC(log10,2,_SC(".n")), - _DECL_FUNC(tan,2,_SC(".n")), - _DECL_FUNC(atan,2,_SC(".n")), - _DECL_FUNC(atan2,3,_SC(".nn")), - _DECL_FUNC(pow,3,_SC(".nn")), - _DECL_FUNC(floor,2,_SC(".n")), - _DECL_FUNC(ceil,2,_SC(".n")), - _DECL_FUNC(exp,2,_SC(".n")), + _DECL_FUNC(sqrt,2,".n"), + _DECL_FUNC(sin,2,".n"), + _DECL_FUNC(cos,2,".n"), + _DECL_FUNC(asin,2,".n"), + _DECL_FUNC(acos,2,".n"), + _DECL_FUNC(log,2,".n"), + _DECL_FUNC(log10,2,".n"), + _DECL_FUNC(tan,2,".n"), + _DECL_FUNC(atan,2,".n"), + _DECL_FUNC(atan2,3,".nn"), + _DECL_FUNC(pow,3,".nn"), + _DECL_FUNC(floor,2,".n"), + _DECL_FUNC(ceil,2,".n"), + _DECL_FUNC(exp,2,".n"), #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS - _DECL_FUNC(srand,2,_SC(".n")), + _DECL_FUNC(srand,2,".n"), _DECL_FUNC(rand,1,NULL), #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ - _DECL_FUNC(fabs,2,_SC(".n")), - _DECL_FUNC(abs,2,_SC(".n")), + _DECL_FUNC(fabs,2,".n"), + _DECL_FUNC(abs,2,".n"), {0,0,0,0}, }; @@ -103,11 +107,11 @@ SQRESULT sqstd_register_mathlib(HSQUIRRELVM v) i++; } #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS - sq_pushstring(v,_SC("RAND_MAX"),-1); + sq_pushstring(v,"RAND_MAX",-1); sq_pushinteger(v,RAND_MAX); sq_createslot(v,-3); #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ - sq_pushstring(v,_SC("PI"),-1); + sq_pushstring(v,"PI",-1); sq_pushfloat(v,(SQFloat)M_PI); sq_createslot(v,-3); return SQ_OK; diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdrex.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdrex.cpp index 90d980e104..2bc3684a5e 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdrex.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdrex.cpp @@ -1,7 +1,5 @@ /* see copyright notice in squirrel.h */ #include -#include -#include #include #include "sqstdstring.h" @@ -12,14 +10,13 @@ #endif #ifdef _DEBUG -#include static const SQChar *g_nnames[] = { - _SC("NONE"),_SC("OP_GREEDY"), _SC("OP_OR"), - _SC("OP_EXPR"),_SC("OP_NOCAPEXPR"),_SC("OP_DOT"), _SC("OP_CLASS"), - _SC("OP_CCLASS"),_SC("OP_NCLASS"),_SC("OP_RANGE"),_SC("OP_CHAR"), - _SC("OP_EOL"),_SC("OP_BOL"),_SC("OP_WB") + "NONE","OP_GREEDY", "OP_OR", + "OP_EXPR","OP_NOCAPEXPR","OP_DOT", "OP_CLASS", + "OP_CCLASS","OP_NCLASS","OP_RANGE","OP_CHAR", + "OP_EOL","OP_BOL","OP_WB" }; #endif @@ -99,7 +96,7 @@ static void sqstd_rex_error(SQRex *exp,const SQChar *error) static void sqstd_rex_expect(SQRex *exp, SQChar n){ if((*exp->_p) != n) - sqstd_rex_error(exp, _SC("expected paren")); + sqstd_rex_error(exp, "expected paren"); exp->_p++; } @@ -115,7 +112,7 @@ static SQChar sqstd_rex_escapechar(SQRex *exp) case 'f': exp->_p++; return '\f'; default: return (*exp->_p++); } - } else if(!scisprint(*exp->_p)) sqstd_rex_error(exp,_SC("letter expected")); + } else if(!scisprint(*exp->_p)) sqstd_rex_error(exp,"letter expected"); return (*exp->_p++); } @@ -159,7 +156,7 @@ static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) } else if(!scisprint(*exp->_p)) { - sqstd_rex_error(exp,_SC("letter expected")); + sqstd_rex_error(exp,"letter expected"); } t = *exp->_p; exp->_p++; return sqstd_rex_newnode(exp,t); @@ -173,15 +170,15 @@ static SQInteger sqstd_rex_class(SQRex *exp) exp->_p++; }else ret = sqstd_rex_newnode(exp,OP_CLASS); - if(*exp->_p == ']') sqstd_rex_error(exp,_SC("empty class")); + if(*exp->_p == ']') sqstd_rex_error(exp,"empty class"); chain = ret; while(*exp->_p != ']' && exp->_p != exp->_eol) { if(*exp->_p == '-' && first != -1){ SQInteger r; - if(*exp->_p++ == ']') sqstd_rex_error(exp,_SC("unfinished range")); + if(*exp->_p++ == ']') sqstd_rex_error(exp,"unfinished range"); r = sqstd_rex_newnode(exp,OP_RANGE); - if(exp->_nodes[first].type>*exp->_p) sqstd_rex_error(exp,_SC("invalid range")); - if(exp->_nodes[first].type == OP_CCLASS) sqstd_rex_error(exp,_SC("cannot use character classes in ranges")); + if(exp->_nodes[first].type>*exp->_p) sqstd_rex_error(exp,"invalid range"); + if(exp->_nodes[first].type == OP_CCLASS) sqstd_rex_error(exp,"cannot use character classes in ranges"); exp->_nodes[r].left = exp->_nodes[first].type; SQInteger t = sqstd_rex_escapechar(exp); exp->_nodes[r].right = t; @@ -220,7 +217,7 @@ static SQInteger sqstd_rex_parsenumber(SQRex *exp) exp->_p++; while(isdigit(*exp->_p)) { ret = ret*10+(*exp->_p++-'0'); - if(positions==1000000000) sqstd_rex_error(exp,_SC("overflow in numeric constant")); + if(positions==1000000000) sqstd_rex_error(exp,"overflow in numeric constant"); positions *= 10; }; return ret; @@ -238,7 +235,7 @@ static SQInteger sqstd_rex_element(SQRex *exp) if(*exp->_p =='?') { exp->_p++; - sqstd_rex_expect(exp,_SC(':')); + sqstd_rex_expect(exp,':'); expr = sqstd_rex_newnode(exp,OP_NOCAPEXPR); } else @@ -246,13 +243,13 @@ static SQInteger sqstd_rex_element(SQRex *exp) SQInteger newn = sqstd_rex_list(exp); exp->_nodes[expr].left = newn; ret = expr; - sqstd_rex_expect(exp,_SC(')')); + sqstd_rex_expect(exp,')'); } break; case '[': exp->_p++; ret = sqstd_rex_class(exp); - sqstd_rex_expect(exp,_SC(']')); + sqstd_rex_expect(exp,']'); break; case SQREX_SYMBOL_END_OF_STRING: exp->_p++; ret = sqstd_rex_newnode(exp,OP_EOL);break; case SQREX_SYMBOL_ANY_CHAR: exp->_p++; ret = sqstd_rex_newnode(exp,OP_DOT);break; @@ -271,7 +268,7 @@ static SQInteger sqstd_rex_element(SQRex *exp) case SQREX_SYMBOL_GREEDY_ZERO_OR_ONE: p0 = 0; p1 = 1; exp->_p++; isgreedy = SQTrue; break; case '{': exp->_p++; - if(!isdigit(*exp->_p)) sqstd_rex_error(exp,_SC("number expected")); + if(!isdigit(*exp->_p)) sqstd_rex_error(exp,"number expected"); p0 = (unsigned short)sqstd_rex_parsenumber(exp); /*******************************/ switch(*exp->_p) { @@ -284,10 +281,10 @@ static SQInteger sqstd_rex_element(SQRex *exp) if(isdigit(*exp->_p)){ p1 = (unsigned short)sqstd_rex_parsenumber(exp); } - sqstd_rex_expect(exp,_SC('}')); + sqstd_rex_expect(exp,'}'); break; default: - sqstd_rex_error(exp,_SC(", or } expected")); + sqstd_rex_error(exp,", or } expected"); } /*******************************/ isgreedy = SQTrue; @@ -526,7 +523,7 @@ SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error) SQRex *exp = (SQRex *)sq_malloc(sizeof(SQRex)); exp->_eol = exp->_bol = NULL; exp->_p = pattern; - exp->_nallocated = (SQInteger)scstrlen(pattern) * sizeof(SQChar); + exp->_nallocated = (SQInteger)strlen(pattern) * sizeof(SQChar); exp->_nodes = (SQRexNode *)sq_malloc(exp->_nallocated * sizeof(SQRexNode)); exp->_nsize = 0; exp->_matches = 0; @@ -537,23 +534,23 @@ SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error) SQInteger res = sqstd_rex_list(exp); exp->_nodes[exp->_first].left = res; if(*exp->_p!='\0') - sqstd_rex_error(exp,_SC("unexpected character")); + sqstd_rex_error(exp,"unexpected character"); #ifdef _DEBUG { SQInteger nsize,i; SQRexNode *t; nsize = exp->_nsize; t = &exp->_nodes[0]; - scprintf(_SC("\n")); + printf("\n"); /* XXX -- The (int) casts are needed to silent warnings on 64bit systems (SQInteger is 64bit, %d assumes 32bit, (int) is 32bit) */ for(i = 0;i < nsize; i++) { if(exp->_nodes[i].type>MAX_CHAR) - scprintf(_SC("[%02d] %10s "),(int)i,g_nnames[exp->_nodes[i].type-MAX_CHAR]); + printf("[%02d] %10s ",(int)i,g_nnames[exp->_nodes[i].type-MAX_CHAR]); else - scprintf(_SC("[%02d] %10c "),(int)i,exp->_nodes[i].type); - scprintf(_SC("left %02d right %02d next %02d\n"),(int)exp->_nodes[i].left,(int)exp->_nodes[i].right,(int)exp->_nodes[i].next); + printf("[%02d] %10c ",(int)i,exp->_nodes[i].type); + printf("left %02d right %02d next %02d\n",(int)exp->_nodes[i].left,(int)exp->_nodes[i].right,(int)exp->_nodes[i].next); } - scprintf(_SC("\n")); + printf("\n"); } #endif exp->_matches = (SQRexMatch *) sq_malloc(exp->_nsubexpr * sizeof(SQRexMatch)); @@ -579,7 +576,7 @@ SQBool sqstd_rex_match(SQRex* exp,const SQChar* text) { const SQChar* res = NULL; exp->_bol = text; - exp->_eol = text + scstrlen(text); + exp->_eol = text + strlen(text); exp->_currsubexp = 0; res = sqstd_rex_matchnode(exp,exp->_nodes,text,NULL); if(res == NULL || res != exp->_eol) @@ -618,7 +615,7 @@ SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* t SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end) { - return sqstd_rex_searchrange(exp,text,text + scstrlen(text),out_begin,out_end); + return sqstd_rex_searchrange(exp,text,text + strlen(text),out_begin,out_end); } SQInteger sqstd_rex_getsubexpcount(SQRex* exp) diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdstream.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdstream.cpp deleted file mode 100644 index 147fc66ca7..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdstream.cpp +++ /dev/null @@ -1,330 +0,0 @@ -/* see copyright notice in squirrel.h */ -#include -#include -#include -#include -#include -#include -#include -#include "sqstdstream.h" -#include "sqstdblobimpl.h" - -#define SETUP_STREAM(v) \ - SQStream *self = NULL; \ - if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_STREAM_TYPE_TAG))) \ - return sq_throwerror(v,_SC("invalid type tag")); \ - if(!self->IsValid()) \ - return sq_throwerror(v,_SC("the stream is invalid")); - -SQInteger _stream_readblob(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - SQUserPointer data,blobp; - SQInteger size,res; - sq_getinteger(v,2,&size); - if(size > self->Len()) { - size = self->Len(); - } - data = sq_getscratchpad(v,size); - res = self->Read(data,size); - if(res <= 0) - return sq_throwerror(v,_SC("no data left to read")); - blobp = sqstd_createblob(v,res); - memcpy(blobp,data,res); - return 1; -} - -#define SAFE_READN(ptr,len) { \ - if(self->Read(ptr,len) != len) return sq_throwerror(v,_SC("io error")); \ - } -SQInteger _stream_readn(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - SQInteger format; - sq_getinteger(v, 2, &format); - switch(format) { - case 'l': { - SQInteger i; - SAFE_READN(&i, sizeof(i)); - sq_pushinteger(v, i); - } - break; - case 'i': { - SQInt32 i; - SAFE_READN(&i, sizeof(i)); - sq_pushinteger(v, i); - } - break; - case 's': { - short s; - SAFE_READN(&s, sizeof(short)); - sq_pushinteger(v, s); - } - break; - case 'w': { - unsigned short w; - SAFE_READN(&w, sizeof(unsigned short)); - sq_pushinteger(v, w); - } - break; - case 'c': { - char c; - SAFE_READN(&c, sizeof(char)); - sq_pushinteger(v, c); - } - break; - case 'b': { - unsigned char c; - SAFE_READN(&c, sizeof(unsigned char)); - sq_pushinteger(v, c); - } - break; - case 'f': { - float f; - SAFE_READN(&f, sizeof(float)); - sq_pushfloat(v, f); - } - break; - case 'd': { - double d; - SAFE_READN(&d, sizeof(double)); - sq_pushfloat(v, (SQFloat)d); - } - break; - default: - return sq_throwerror(v, _SC("invalid format")); - } - return 1; -} - -SQInteger _stream_writeblob(HSQUIRRELVM v) -{ - SQUserPointer data; - SQInteger size; - SETUP_STREAM(v); - if(SQ_FAILED(sqstd_getblob(v,2,&data))) - return sq_throwerror(v,_SC("invalid parameter")); - size = sqstd_getblobsize(v,2); - if(self->Write(data,size) != size) - return sq_throwerror(v,_SC("io error")); - sq_pushinteger(v,size); - return 1; -} - -SQInteger _stream_writen(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - SQInteger format, ti; - SQFloat tf; - sq_getinteger(v, 3, &format); - switch(format) { - case 'l': { - SQInteger i; - sq_getinteger(v, 2, &ti); - i = ti; - self->Write(&i, sizeof(SQInteger)); - } - break; - case 'i': { - SQInt32 i; - sq_getinteger(v, 2, &ti); - i = (SQInt32)ti; - self->Write(&i, sizeof(SQInt32)); - } - break; - case 's': { - short s; - sq_getinteger(v, 2, &ti); - s = (short)ti; - self->Write(&s, sizeof(short)); - } - break; - case 'w': { - unsigned short w; - sq_getinteger(v, 2, &ti); - w = (unsigned short)ti; - self->Write(&w, sizeof(unsigned short)); - } - break; - case 'c': { - char c; - sq_getinteger(v, 2, &ti); - c = (char)ti; - self->Write(&c, sizeof(char)); - } - break; - case 'b': { - unsigned char b; - sq_getinteger(v, 2, &ti); - b = (unsigned char)ti; - self->Write(&b, sizeof(unsigned char)); - } - break; - case 'f': { - float f; - sq_getfloat(v, 2, &tf); - f = (float)tf; - self->Write(&f, sizeof(float)); - } - break; - case 'd': { - double d; - sq_getfloat(v, 2, &tf); - d = tf; - self->Write(&d, sizeof(double)); - } - break; - default: - return sq_throwerror(v, _SC("invalid format")); - } - return 0; -} - -SQInteger _stream_seek(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - SQInteger offset, origin = SQ_SEEK_SET; - sq_getinteger(v, 2, &offset); - if(sq_gettop(v) > 2) { - SQInteger t; - sq_getinteger(v, 3, &t); - switch(t) { - case 'b': origin = SQ_SEEK_SET; break; - case 'c': origin = SQ_SEEK_CUR; break; - case 'e': origin = SQ_SEEK_END; break; - default: return sq_throwerror(v,_SC("invalid origin")); - } - } - sq_pushinteger(v, self->Seek(offset, origin)); - return 1; -} - -SQInteger _stream_tell(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - sq_pushinteger(v, self->Tell()); - return 1; -} - -SQInteger _stream_len(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - sq_pushinteger(v, self->Len()); - return 1; -} - -SQInteger _stream_flush(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - if(!self->Flush()) - sq_pushinteger(v, 1); - else - sq_pushnull(v); - return 1; -} - -SQInteger _stream_eos(HSQUIRRELVM v) -{ - SETUP_STREAM(v); - if(self->EOS()) - sq_pushinteger(v, 1); - else - sq_pushnull(v); - return 1; -} - -static SQRegFunction _stream_methods[] = { - _DECL_STREAM_FUNC(readblob,2,_SC("xn")), - _DECL_STREAM_FUNC(readn,2,_SC("xn")), - _DECL_STREAM_FUNC(writeblob,-2,_SC("xx")), - _DECL_STREAM_FUNC(writen,3,_SC("xnn")), - _DECL_STREAM_FUNC(seek,-2,_SC("xnn")), - _DECL_STREAM_FUNC(tell,1,_SC("x")), - _DECL_STREAM_FUNC(len,1,_SC("x")), - _DECL_STREAM_FUNC(eos,1,_SC("x")), - _DECL_STREAM_FUNC(flush,1,_SC("x")), - {0,0,0,0} -}; - -void init_streamclass(HSQUIRRELVM v) -{ - sq_pushregistrytable(v); - sq_pushstring(v,_SC("std_stream"),-1); - if(SQ_FAILED(sq_get(v,-2))) { - sq_pushstring(v,_SC("std_stream"),-1); - sq_newclass(v,SQFalse); - sq_settypetag(v,-1,(SQUserPointer)SQSTD_STREAM_TYPE_TAG); - SQInteger i = 0; - while(_stream_methods[i].name != 0) { - SQRegFunction &f = _stream_methods[i]; - sq_pushstring(v,f.name,-1); - sq_newclosure(v,f.f,0); - sq_setparamscheck(v,f.nparamscheck,f.typemask); - sq_createslot(v,-3); - i++; - } - sq_createslot(v,-3); - sq_pushroottable(v); - sq_pushstring(v,_SC("stream"),-1); - sq_pushstring(v,_SC("std_stream"),-1); - sq_get(v,-4); - sq_createslot(v,-3); - sq_pop(v,1); - } - else { - sq_pop(v,1); //result - } - sq_pop(v,1); -} - -SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,SQRegFunction *methods,SQRegFunction *globals) -{ - if(sq_gettype(v,-1) != OT_TABLE) - return sq_throwerror(v,_SC("table expected")); - SQInteger top = sq_gettop(v); - //create delegate - init_streamclass(v); - sq_pushregistrytable(v); - sq_pushstring(v,reg_name,-1); - sq_pushstring(v,_SC("std_stream"),-1); - if(SQ_SUCCEEDED(sq_get(v,-3))) { - sq_newclass(v,SQTrue); - sq_settypetag(v,-1,typetag); - SQInteger i = 0; - while(methods[i].name != 0) { - SQRegFunction &f = methods[i]; - sq_pushstring(v,f.name,-1); - sq_newclosure(v,f.f,0); - sq_setparamscheck(v,f.nparamscheck,f.typemask); - sq_setnativeclosurename(v,-1,f.name); - sq_createslot(v,-3); - i++; - } - sq_createslot(v,-3); - sq_pop(v,1); - - i = 0; - while(globals[i].name!=0) - { - SQRegFunction &f = globals[i]; - sq_pushstring(v,f.name,-1); - sq_newclosure(v,f.f,0); - sq_setparamscheck(v,f.nparamscheck,f.typemask); - sq_setnativeclosurename(v,-1,f.name); - sq_createslot(v,-3); - i++; - } - //register the class in the target table - sq_pushstring(v,name,-1); - sq_pushregistrytable(v); - sq_pushstring(v,reg_name,-1); - sq_get(v,-2); - sq_remove(v,-2); - sq_createslot(v,-3); - - sq_settop(v,top); - return SQ_OK; - } - sq_settop(v,top); - return SQ_ERROR; -} diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdstream.h b/src/3rdparty/squirrel/sqstdlib/sqstdstream.h deleted file mode 100644 index 4dcc000545..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdstream.h +++ /dev/null @@ -1,18 +0,0 @@ -/* see copyright notice in squirrel.h */ -#ifndef _SQSTD_STREAM_H_ -#define _SQSTD_STREAM_H_ - -SQInteger _stream_readblob(HSQUIRRELVM v); -SQInteger _stream_readline(HSQUIRRELVM v); -SQInteger _stream_readn(HSQUIRRELVM v); -SQInteger _stream_writeblob(HSQUIRRELVM v); -SQInteger _stream_writen(HSQUIRRELVM v); -SQInteger _stream_seek(HSQUIRRELVM v); -SQInteger _stream_tell(HSQUIRRELVM v); -SQInteger _stream_len(HSQUIRRELVM v); -SQInteger _stream_eos(HSQUIRRELVM v); -SQInteger _stream_flush(HSQUIRRELVM v); - -#define _DECL_STREAM_FUNC(name,nparams,typecheck) {_SC(#name),_stream_##name,nparams,typecheck} -SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,SQRegFunction *methods,SQRegFunction *globals); -#endif /*_SQSTD_STREAM_H_*/ diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdstring.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdstring.cpp index 681029aa70..8639b6456a 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdstring.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdstring.cpp @@ -1,22 +1,11 @@ /* see copyright notice in squirrel.h */ #include #include -#include -#include -#include -#include -#include #include -#ifdef SQUNICODE -#define scstrchr wcschr -#define scatoi _wtoi -#define scstrtok wcstok -#else #define scstrchr strchr #define scatoi atoi #define scstrtok strtok -#endif #define MAX_FORMAT_LEN 20 #define MAX_WFORMAT_LEN 3 #define ADDITIONAL_FORMAT_SPACE (100*sizeof(SQChar)) @@ -27,17 +16,17 @@ static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, SQInteger wc = 0; SQInteger start = n; fmt[0] = '%'; - while (scstrchr(_SC("-+ #0"), src[n])) n++; - while (scisdigit(src[n])) { + while (scstrchr("-+ #0", src[n])) n++; + while (isdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) - return sq_throwerror(v,_SC("width format too long")); + return sq_throwerror(v,"width format too long"); } swidth[wc] = '\0'; if(wc > 0) { - width = scatoi(swidth); + width = atoi(swidth); } else width = 0; @@ -45,20 +34,20 @@ static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, n++; wc = 0; - while (scisdigit(src[n])) { + while (isdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) - return sq_throwerror(v,_SC("precision format too long")); + return sq_throwerror(v,"precision format too long"); } swidth[wc] = '\0'; if(wc > 0) { - width += scatoi(swidth); + width += atoi(swidth); } } if (n-start > MAX_FORMAT_LEN ) - return sq_throwerror(v,_SC("format too long")); + return sq_throwerror(v,"format too long"); memcpy(&fmt[1],&src[start],((n-start)+1)*sizeof(SQChar)); fmt[(n-start)+2] = '\0'; return n; @@ -75,7 +64,7 @@ static void _append_string(SQInteger &i, SQChar *dest, SQInteger allocated, cons { va_list va; va_start(va, fmt); - i += scvsnprintf(&dest[i],allocated-i,fmt,va); + i += vsnprintf(&dest[i],allocated-i,fmt,va); va_end(va); } @@ -102,7 +91,7 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen else { n++; if( nparam > sq_gettop(v) ) - return sq_throwerror(v,_SC("not enough paramters for the given format string")); + return sq_throwerror(v,"not enough paramters for the given format string"); n = validate_format(v,fmt,format,n,w); if(n < 0) return -1; SQInteger addlen = 0; @@ -113,24 +102,24 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen switch(format[n]) { case 's': if(SQ_FAILED(sq_getstring(v,nparam,&ts))) - return sq_throwerror(v,_SC("string expected for the specified format")); + return sq_throwerror(v,"string expected for the specified format"); addlen = (sq_getsize(v,nparam)*sizeof(SQChar))+((w+1)*sizeof(SQChar)); valtype = 's'; break; case 'i': case 'd': case 'c':case 'o': case 'u': case 'x': case 'X': if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) - return sq_throwerror(v,_SC("integer expected for the specified format")); + return sq_throwerror(v,"integer expected for the specified format"); addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(SQChar)); valtype = 'i'; break; case 'f': case 'g': case 'G': case 'e': case 'E': if(SQ_FAILED(sq_getfloat(v,nparam,&tf))) - return sq_throwerror(v,_SC("float expected for the specified format")); + return sq_throwerror(v,"float expected for the specified format"); addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(SQChar)); valtype = 'f'; break; default: - return sq_throwerror(v,_SC("invalid format")); + return sq_throwerror(v,"invalid format"); } n++; allocated += addlen + sizeof(SQChar); @@ -162,7 +151,7 @@ static SQInteger _string_format(HSQUIRRELVM v) static void __strip_l(const SQChar *str,const SQChar **start) { const SQChar *t = str; - while(((*t) != '\0') && scisspace(*t)){ t++; } + while(((*t) != '\0') && isspace(*t)){ t++; } *start = t; } @@ -173,7 +162,7 @@ static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end) return; } const SQChar *t = &str[len-1]; - while(t != str && scisspace(*t)) { t--; } + while(t != str && isspace(*t)) { t--; } *end = t+1; } @@ -213,7 +202,7 @@ static SQInteger _string_split(HSQUIRRELVM v) SQChar *stemp,*tok; sq_getstring(v,2,&str); sq_getstring(v,3,&seps); - if(sq_getsize(v,3) == 0) return sq_throwerror(v,_SC("empty separators string")); + if(sq_getsize(v,3) == 0) return sq_throwerror(v,"empty separators string"); SQInteger memsize = (sq_getsize(v,2)+1)*sizeof(SQChar); stemp = sq_getscratchpad(v,memsize); memcpy(stemp,str,memsize); @@ -255,10 +244,10 @@ static SQInteger _regexp_match(HSQUIRRELVM v) static void _addrexmatch(HSQUIRRELVM v,const SQChar *str,const SQChar *begin,const SQChar *end) { sq_newtable(v); - sq_pushstring(v,_SC("begin"),-1); + sq_pushstring(v,"begin",-1); sq_pushinteger(v,begin - str); sq_rawset(v,-3); - sq_pushstring(v,_SC("end"),-1); + sq_pushstring(v,"end",-1); sq_pushinteger(v,end - str); sq_rawset(v,-3); } @@ -321,35 +310,35 @@ static SQInteger _regexp_constructor(HSQUIRRELVM v) static SQInteger _regexp__typeof(HSQUIRRELVM v) { - sq_pushstring(v,_SC("regexp"),-1); + sq_pushstring(v,"regexp",-1); return 1; } -#define _DECL_REX_FUNC(name,nparams,pmask) {_SC(#name),_regexp_##name,nparams,pmask} +#define _DECL_REX_FUNC(name,nparams,pmask) {#name,_regexp_##name,nparams,pmask} static SQRegFunction rexobj_funcs[]={ - _DECL_REX_FUNC(constructor,2,_SC(".s")), - _DECL_REX_FUNC(search,-2,_SC("xsn")), - _DECL_REX_FUNC(match,2,_SC("xs")), - _DECL_REX_FUNC(capture,-2,_SC("xsn")), - _DECL_REX_FUNC(subexpcount,1,_SC("x")), - _DECL_REX_FUNC(_typeof,1,_SC("x")), + _DECL_REX_FUNC(constructor,2,".s"), + _DECL_REX_FUNC(search,-2,"xsn"), + _DECL_REX_FUNC(match,2,"xs"), + _DECL_REX_FUNC(capture,-2,"xsn"), + _DECL_REX_FUNC(subexpcount,1,"x"), + _DECL_REX_FUNC(_typeof,1,"x"), {0,0,0,0} }; -#define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_string_##name,nparams,pmask} +#define _DECL_FUNC(name,nparams,pmask) {#name,_string_##name,nparams,pmask} static SQRegFunction stringlib_funcs[]={ - _DECL_FUNC(format,-2,_SC(".s")), - _DECL_FUNC(strip,2,_SC(".s")), - _DECL_FUNC(lstrip,2,_SC(".s")), - _DECL_FUNC(rstrip,2,_SC(".s")), - _DECL_FUNC(split,3,_SC(".ss")), + _DECL_FUNC(format,-2,".s"), + _DECL_FUNC(strip,2,".s"), + _DECL_FUNC(lstrip,2,".s"), + _DECL_FUNC(rstrip,2,".s"), + _DECL_FUNC(split,3,".ss"), {0,0,0,0} }; SQInteger sqstd_register_stringlib(HSQUIRRELVM v) { - sq_pushstring(v,_SC("regexp"),-1); + sq_pushstring(v,"regexp",-1); sq_newclass(v,SQFalse); SQInteger i = 0; while(rexobj_funcs[i].name != 0) { diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdsystem.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdsystem.cpp deleted file mode 100644 index e1fcdfbd99..0000000000 --- a/src/3rdparty/squirrel/sqstdlib/sqstdsystem.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* see copyright notice in squirrel.h */ -#include -#include -#include -#include -#include - -#ifdef SQUNICODE -#include -#define scgetenv _wgetenv -#define scsystem _wsystem -#define scasctime _wasctime -#define scremove _wremove -#define screname _wrename -#else -#define scgetenv getenv -#define scsystem system -#define scasctime asctime -#define scremove remove -#define screname rename -#endif - -static SQInteger _system_getenv(HSQUIRRELVM v) -{ - const SQChar *s; - if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ - sq_pushstring(v,scgetenv(s),-1); - return 1; - } - return 0; -} - - -static SQInteger _system_system(HSQUIRRELVM v) -{ - const SQChar *s; - if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ - sq_pushinteger(v,scsystem(s)); - return 1; - } - return sq_throwerror(v,_SC("wrong param")); -} - - -static SQInteger _system_clock(HSQUIRRELVM v) -{ - sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC); - return 1; -} - -static SQInteger _system_time(HSQUIRRELVM v) -{ - time_t t; - time(&t); - sq_pushinteger(v,*((SQInteger *)&t)); - return 1; -} - -static SQInteger _system_remove(HSQUIRRELVM v) -{ - const SQChar *s; - sq_getstring(v,2,&s); - if(scremove(s)==-1) - return sq_throwerror(v,_SC("remove() failed")); - return 0; -} - -static SQInteger _system_rename(HSQUIRRELVM v) -{ - const SQChar *oldn,*newn; - sq_getstring(v,2,&oldn); - sq_getstring(v,3,&newn); - if(screname(oldn,newn)==-1) - return sq_throwerror(v,_SC("rename() failed")); - return 0; -} - -static void _set_integer_slot(HSQUIRRELVM v,const SQChar *name,SQInteger val) -{ - sq_pushstring(v,name,-1); - sq_pushinteger(v,val); - sq_rawset(v,-3); -} - -static SQInteger _system_date(HSQUIRRELVM v) -{ - time_t t; - SQInteger it; - SQInteger format = 'l'; - if(sq_gettop(v) > 1) { - sq_getinteger(v,2,&it); - t = it; - if(sq_gettop(v) > 2) { - sq_getinteger(v,3,(SQInteger*)&format); - } - } - else { - time(&t); - } - tm *date; - if(format == 'u') - date = gmtime(&t); - else - date = localtime(&t); - if(!date) - return sq_throwerror(v,_SC("crt api failure")); - sq_newtable(v); - _set_integer_slot(v, _SC("sec"), date->tm_sec); - _set_integer_slot(v, _SC("min"), date->tm_min); - _set_integer_slot(v, _SC("hour"), date->tm_hour); - _set_integer_slot(v, _SC("day"), date->tm_mday); - _set_integer_slot(v, _SC("month"), date->tm_mon); - _set_integer_slot(v, _SC("year"), date->tm_year+1900); - _set_integer_slot(v, _SC("wday"), date->tm_wday); - _set_integer_slot(v, _SC("yday"), date->tm_yday); - return 1; -} - - - -#define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_system_##name,nparams,pmask} -static SQRegFunction systemlib_funcs[]={ - _DECL_FUNC(getenv,2,_SC(".s")), - _DECL_FUNC(system,2,_SC(".s")), - _DECL_FUNC(clock,1,NULL), - _DECL_FUNC(time,1,NULL), - _DECL_FUNC(date,-1,_SC(".nn")), - _DECL_FUNC(remove,2,_SC(".s")), - _DECL_FUNC(rename,3,_SC(".ss")), - {0,0,0,0} -}; - - -SQInteger sqstd_register_systemlib(HSQUIRRELVM v) -{ - SQInteger i=0; - while(systemlib_funcs[i].name!=0) - { - sq_pushstring(v,systemlib_funcs[i].name,-1); - sq_newclosure(v,systemlib_funcs[i].f,0); - sq_setparamscheck(v,systemlib_funcs[i].nparamscheck,systemlib_funcs[i].typemask); - sq_setnativeclosurename(v,-1,systemlib_funcs[i].name); - sq_createslot(v,-3); - i++; - } - return 1; -} diff --git a/src/3rdparty/squirrel/squirrel.dsw b/src/3rdparty/squirrel/squirrel.dsw deleted file mode 100644 index 721509106c..0000000000 --- a/src/3rdparty/squirrel/squirrel.dsw +++ /dev/null @@ -1,77 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "sq"=.\sq\sq.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - . - end source code control -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name sqlibs - End Project Dependency - Begin Project Dependency - Project_Dep_Name squirrel - End Project Dependency - Begin Project Dependency - Project_Dep_Name sqstdlib - End Project Dependency -}}} - -############################################################################### - -Project: "sqstdlib"=.\sqstdlib\sqstdlib.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - "$/squirrel", HAAAAAAA - . - end source code control -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "squirrel"=.\squirrel\squirrel.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - "$/squirrel", HAAAAAAA - . - end source code control -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ - begin source code control - "$/squirrel", HAAAAAAA - . - end source code control -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/src/3rdparty/squirrel/squirrel/Makefile b/src/3rdparty/squirrel/squirrel/Makefile deleted file mode 100644 index e48eaffa0f..0000000000 --- a/src/3rdparty/squirrel/squirrel/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -SQUIRREL= .. - - -OUT= $(SQUIRREL)/lib/libsquirrel.a -INCZ= -I$(SQUIRREL)/include -I. -Iinclude -DEFS= -LIB= - -OBJS= \ - sqapi.o \ - sqbaselib.o \ - sqcompiler.o \ - sqdebug.o \ - sqlexer.o \ - sqobject.o \ - sqparser.o \ - sqstate.o \ - sqtable.o \ - sqvm.o \ - sqmem.o \ - sqclass.o - -SRCS= \ - sqapi.cpp \ - sqbaselib.cpp \ - sqfuncstate.cpp \ - sqdebug.cpp \ - sqlexer.cpp \ - sqobject.cpp \ - sqcompiler.cpp \ - sqstate.cpp \ - sqtable.cpp \ - sqmem.cpp \ - sqvm.cpp \ - sqclass.cpp - - - -sq32: - gcc -O2 -fno-rtti -Wall -c $(SRCS) $(INCZ) $(DEFS) - ar rc $(OUT) *.o - -sqprof: - gcc -O2 -pg -fno-rtti -pie -gstabs -g3 -Wall -c $(SRCS) $(INCZ) $(DEFS) - ar rc $(OUT) *.o - -sq64: - gcc -O2 -D_SQ64 -fno-rtti -Wall -c $(SRCS) $(INCZ) $(DEFS) - ar rc $(OUT) *.o - -clean: - rm -f $(OUT) $(SRCS:%.cpp=%.o) diff --git a/src/3rdparty/squirrel/squirrel/sqapi.cpp b/src/3rdparty/squirrel/squirrel/sqapi.cpp index 3447e57626..f02fee29f6 100644 --- a/src/3rdparty/squirrel/squirrel/sqapi.cpp +++ b/src/3rdparty/squirrel/squirrel/sqapi.cpp @@ -1,6 +1,9 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include #include "sqpcheader.h" #include "sqvm.h" @@ -14,12 +17,16 @@ #include "sqfuncstate.h" #include "sqclass.h" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + bool sq_aux_gettypedarg(HSQUIRRELVM v,SQInteger idx,SQObjectType type,SQObjectPtr **o) { *o = &stack_get(v,idx); if(type(**o) != type){ SQObjectPtr oval = v->PrintObjVal(**o); - v->Raise_Error(_SC("wrong argument type, expected '%s' got '%.50s'"),IdType2Name(type),_stringval(oval)); + v->Raise_Error("wrong argument type, expected '%s' got '%.50s'",IdType2Name(type),_stringval(oval)); return false; } return true; @@ -29,7 +36,7 @@ bool sq_aux_gettypedarg(HSQUIRRELVM v,SQInteger idx,SQObjectType type,SQObjectPt #define sq_aux_paramscheck(v,count) \ { \ - if(sq_gettop(v) < count){ v->Raise_Error(_SC("not enough params in the stack")); return SQ_ERROR; }\ + if(sq_gettop(v) < count){ v->Raise_Error("not enough params in the stack"); return SQ_ERROR; }\ } SQInteger sq_aux_throwobject(HSQUIRRELVM v,SQObjectPtr &e) @@ -40,8 +47,9 @@ SQInteger sq_aux_throwobject(HSQUIRRELVM v,SQObjectPtr &e) SQInteger sq_aux_invalidtype(HSQUIRRELVM v,SQObjectType type) { - scsprintf(_ss(v)->GetScratchPad(100), _SC("unexpected type %s"), IdType2Name(type)); - return sq_throwerror(v, _ss(v)->GetScratchPad(-1)); + char buf[100]; + seprintf(buf, lastof(buf), "unexpected type %s", IdType2Name(type)); + return sq_throwerror(v, buf); } HSQUIRRELVM sq_open(SQInteger initialstacksize) @@ -49,7 +57,6 @@ HSQUIRRELVM sq_open(SQInteger initialstacksize) SQSharedState *ss; SQVM *v; sq_new(ss, SQSharedState); - ss->Init(); v = (SQVM *)SQ_MALLOC(sizeof(SQVM)); new (v) SQVM(ss); ss->_root_vm = v; @@ -253,7 +260,7 @@ SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase) if(hasbase) { SQObjectPtr &base = stack_get(v,-1); if(type(base) != OT_CLASS) - return sq_throwerror(v,_SC("invalid base type")); + return sq_throwerror(v,"invalid base type"); baseclass = _class(base); } SQClass *newclass = SQClass::Create(_ss(v), baseclass); @@ -267,7 +274,7 @@ SQBool sq_instanceof(HSQUIRRELVM v) SQObjectPtr &inst = stack_get(v,-1); SQObjectPtr &cl = stack_get(v,-2); if(type(inst) != OT_INSTANCE || type(cl) != OT_CLASS) - return sq_throwerror(v,_SC("invalid param type")); + return sq_throwerror(v,"invalid param type"); return _instance(inst)->InstanceOf(_class(cl))?SQTrue:SQFalse; } @@ -291,7 +298,7 @@ SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval) _array(*arr)->Pop(); return SQ_OK; } - return sq_throwerror(v, _SC("empty array")); + return sq_throwerror(v, "empty array"); } SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize) @@ -303,7 +310,7 @@ SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize) _array(*arr)->Resize(newsize); return SQ_OK; } - return sq_throwerror(v,_SC("negative size")); + return sq_throwerror(v,"negative size"); } @@ -332,7 +339,7 @@ SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx) sq_aux_paramscheck(v, 1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); - return _array(*arr)->Remove(itemidx) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); + return _array(*arr)->Remove(itemidx) ? SQ_OK : sq_throwerror(v,"index out of range"); } SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) @@ -340,7 +347,7 @@ SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) sq_aux_paramscheck(v, 1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); - SQRESULT ret = _array(*arr)->Insert(destpos, v->GetUp(-1)) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); + SQRESULT ret = _array(*arr)->Insert(destpos, v->GetUp(-1)) ? SQ_OK : sq_throwerror(v,"index out of range"); v->Pop(); return ret; } @@ -349,7 +356,6 @@ SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) { SQNativeClosure *nc = SQNativeClosure::Create(_ss(v), func); - nc->_nparamscheck = 0; for(SQUnsignedInteger i = 0; i < nfreevars; i++) { nc->_outervalues.push_back(v->Top()); v->Pop(); @@ -367,7 +373,7 @@ SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparam *nfreevars = (SQUnsignedInteger)c->_outervalues.size(); return SQ_OK; } - return sq_throwerror(v,_SC("the object is not a closure")); + return sq_throwerror(v,"the object is not a closure"); } SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name) @@ -378,20 +384,20 @@ SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name) nc->_name = SQString::Create(_ss(v),name); return SQ_OK; } - return sq_throwerror(v,_SC("the object is not a nativeclosure")); + return sq_throwerror(v,"the object is not a nativeclosure"); } SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask) { SQObject o = stack_get(v, -1); if(!sq_isnativeclosure(o)) - return sq_throwerror(v, _SC("native closure expected")); + return sq_throwerror(v, "native closure expected"); SQNativeClosure *nc = _nativeclosure(o); nc->_nparamscheck = nparamscheck; if(typemask) { SQIntVec res; if(!CompileTypemask(res, typemask)) - return sq_throwerror(v, _SC("invalid typemask")); + return sq_throwerror(v, "invalid typemask"); nc->_typecheck.copy(res); } else { @@ -408,12 +414,12 @@ SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx) SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && !sq_isclosure(o)) - return sq_throwerror(v,_SC("the target is not a closure")); + return sq_throwerror(v,"the target is not a closure"); SQObjectPtr &env = stack_get(v,-1); if(!sq_istable(env) && !sq_isclass(env) && !sq_isinstance(env)) - return sq_throwerror(v,_SC("invalid environment")); + return sq_throwerror(v,"invalid environment"); SQObjectPtr w = _refcounted(env)->GetWeakRef(type(env)); SQObjectPtr ret; if(sq_isclosure(o)) { @@ -438,7 +444,7 @@ SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx) case OT_TABLE: _table(o)->Clear(); break; case OT_ARRAY: _array(o)->Resize(0); break; default: - return sq_throwerror(v, _SC("clear only works on table and array")); + return sq_throwerror(v, "clear only works on table and array"); break; } @@ -468,7 +474,7 @@ SQRESULT sq_setroottable(HSQUIRRELVM v) v->Pop(); return SQ_OK; } - return sq_throwerror(v, _SC("ivalid type")); + return sq_throwerror(v, "ivalid type"); } SQRESULT sq_setconsttable(HSQUIRRELVM v) @@ -479,7 +485,7 @@ SQRESULT sq_setconsttable(HSQUIRRELVM v) v->Pop(); return SQ_OK; } - return sq_throwerror(v, _SC("ivalid type, expected table")); + return sq_throwerror(v, "ivalid type, expected table"); } void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p) @@ -605,7 +611,7 @@ SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag) switch(type(o)) { case OT_USERDATA: _userdata(o)->_typetag = typetag; break; case OT_CLASS: _class(o)->_typetag = typetag; break; - default: return sq_throwerror(v,_SC("invalid object type")); + default: return sq_throwerror(v,"invalid object type"); } return SQ_OK; } @@ -625,7 +631,7 @@ SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag) { SQObjectPtr &o = stack_get(v,idx); if(SQ_FAILED(sq_getobjtypetag(&o,typetag))) - return sq_throwerror(v,_SC("invalid object type")); + return sq_throwerror(v,"invalid object type"); return SQ_OK; } @@ -640,7 +646,7 @@ SQRESULT sq_getuserpointer(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p) SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p) { SQObjectPtr &o = stack_get(v,idx); - if(type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); + if(type(o) != OT_INSTANCE) return sq_throwerror(v,"the object is not a class instance"); _instance(o)->_userpointer = p; return SQ_OK; } @@ -648,8 +654,8 @@ SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p) SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize) { SQObjectPtr &o = stack_get(v,idx); - if(type(o) != OT_CLASS) return sq_throwerror(v,_SC("the object is not a class")); - if(_class(o)->_locked) return sq_throwerror(v,_SC("the class is locked")); + if(type(o) != OT_CLASS) return sq_throwerror(v,"the object is not a class"); + if(_class(o)->_locked) return sq_throwerror(v,"the class is locked"); _class(o)->_udsize = udsize; return SQ_OK; } @@ -658,7 +664,7 @@ SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize) SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); - if(type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); + if(type(o) != OT_INSTANCE) return sq_throwerror(v,"the object is not a class instance"); (*p) = _instance(o)->_userpointer; if(typetag != 0) { SQClass *cl = _instance(o)->_class; @@ -667,7 +673,7 @@ SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserP return SQ_OK; cl = cl->_base; }while(cl != NULL); - return sq_throwerror(v,_SC("invalid type tag")); + return sq_throwerror(v,"invalid type tag"); } return SQ_OK; } @@ -717,7 +723,7 @@ SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic) SQObjectPtr &self = stack_get(v, idx); if(type(self) == OT_TABLE || type(self) == OT_CLASS) { SQObjectPtr &key = v->GetUp(-2); - if(type(key) == OT_NULL) return sq_throwerror(v, _SC("null is not a valid key")); + if(type(key) == OT_NULL) return sq_throwerror(v, "null is not a valid key"); v->NewSlot(self, key, v->GetUp(-1),bstatic?true:false); v->Pop(2); } @@ -730,7 +736,7 @@ SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) SQObjectPtr *self; _GETSAFE_OBJ(v, idx, OT_TABLE,self); SQObjectPtr &key = v->GetUp(-1); - if(type(key) == OT_NULL) return sq_throwerror(v, _SC("null is not a valid key")); + if(type(key) == OT_NULL) return sq_throwerror(v, "null is not a valid key"); SQObjectPtr res; if(!v->DeleteSlot(*self, key, res)){ return SQ_ERROR; @@ -753,7 +759,7 @@ SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx) SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); - if(type(v->GetUp(-2)) == OT_NULL) return sq_throwerror(v, _SC("null key")); + if(type(v->GetUp(-2)) == OT_NULL) return sq_throwerror(v, "null key"); switch(type(self)) { case OT_TABLE: _table(self)->NewSlot(v->GetUp(-2), v->GetUp(-1)); @@ -779,7 +785,7 @@ SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx) break; default: v->Pop(2); - return sq_throwerror(v, _SC("rawset works only on array/table/class and instance")); + return sq_throwerror(v, "rawset works only on array/table/class and instance"); } v->Raise_IdxError(v->GetUp(-2));return SQ_ERROR; } @@ -792,7 +798,7 @@ SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx) switch(type) { case OT_TABLE: if(type(mt) == OT_TABLE) { - if(!_table(self)->SetDelegate(_table(mt))) return sq_throwerror(v, _SC("delagate cycle")); v->Pop();} + if(!_table(self)->SetDelegate(_table(mt))) return sq_throwerror(v, "delagate cycle"); v->Pop();} else if(type(mt)==OT_NULL) { _table(self)->SetDelegate(NULL); v->Pop(); } else return sq_aux_invalidtype(v,type); @@ -841,7 +847,7 @@ SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx) } v->Push(SQObjectPtr(_delegable(self)->_delegate)); break; - default: return sq_throwerror(v,_SC("wrong type")); break; + default: return sq_throwerror(v,"wrong type"); break; } return SQ_OK; @@ -853,7 +859,7 @@ SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx) if(v->Get(self,v->GetUp(-1),v->GetUp(-1),false,false)) return SQ_OK; v->Pop(1); - return sq_throwerror(v,_SC("the index doesn't exist")); + return sq_throwerror(v,"the index doesn't exist"); } SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) @@ -878,10 +884,10 @@ SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) break; default: v->Pop(1); - return sq_throwerror(v,_SC("rawget works only on array/table/instance and class")); + return sq_throwerror(v,"rawget works only on array/table/instance and class"); } v->Pop(1); - return sq_throwerror(v,_SC("the index doesn't exist")); + return sq_throwerror(v,"the index doesn't exist"); } SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po) @@ -959,7 +965,7 @@ SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror) v->Pop(); return SQ_OK; } - return sq_throwerror(v,_SC("only generators can be resumed")); + return sq_throwerror(v,"only generators can be resumed"); } SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend) @@ -981,9 +987,6 @@ SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, v->Pop(params); return SQ_ERROR; } - if(!v->_suspended) - v->Pop(params); - return sq_throwerror(v,_SC("call failed")); } SQRESULT sq_suspendvm(HSQUIRRELVM v) @@ -995,7 +998,7 @@ SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool wakeupret,SQBool retval,SQBool raiseer { SQObjectPtr ret; if(!v->_suspended) - return sq_throwerror(v,_SC("cannot resume a vm that is not running any code")); + return sq_throwerror(v,"cannot resume a vm that is not running any code"); if(wakeupret) { v->GetAt(v->_stackbase+v->_suspended_target)=v->GetUp(-1); //retval v->Pop(); @@ -1051,7 +1054,7 @@ SQRESULT sq_writeclosure(HSQUIRRELVM v,SQWRITEFUNC w,SQUserPointer up) _GETSAFE_OBJ(v, -1, OT_CLOSURE,o); unsigned short tag = SQ_BYTECODE_STREAM_TAG; if(w(up,&tag,2) != 2) - return sq_throwerror(v,_SC("io error")); + return sq_throwerror(v,"io error"); if(!_closure(*o)->Save(v,up,w)) return SQ_ERROR; return SQ_OK; @@ -1063,9 +1066,9 @@ SQRESULT sq_readclosure(HSQUIRRELVM v,SQREADFUNC r,SQUserPointer up) unsigned short tag; if(r(up,&tag,2) != 2) - return sq_throwerror(v,_SC("io error")); + return sq_throwerror(v,"io error"); if(tag != SQ_BYTECODE_STREAM_TAG) - return sq_throwerror(v,_SC("invalid stream")); + return sq_throwerror(v,"invalid stream"); if(!SQClosure::Load(v,up,r,closure)) return SQ_ERROR; v->Push(closure); @@ -1110,13 +1113,13 @@ SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) if(_closure(self)->_outervalues.size()>nval){ _closure(self)->_outervalues[nval]=stack_get(v,-1); } - else return sq_throwerror(v,_SC("invalid free var index")); + else return sq_throwerror(v,"invalid free var index"); break; case OT_NATIVECLOSURE: if(_nativeclosure(self)->_outervalues.size()>nval){ _nativeclosure(self)->_outervalues[nval]=stack_get(v,-1); } - else return sq_throwerror(v,_SC("invalid free var index")); + else return sq_throwerror(v,"invalid free var index"); break; default: return sq_aux_invalidtype(v,type(self)); @@ -1144,7 +1147,7 @@ SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx) v->Push(attrs); return SQ_OK; } - return sq_throwerror(v,_SC("wrong index")); + return sq_throwerror(v,"wrong index"); } SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx) @@ -1164,7 +1167,7 @@ SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx) v->Push(attrs); return SQ_OK; } - return sq_throwerror(v,_SC("wrong index")); + return sq_throwerror(v,"wrong index"); } SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx) @@ -1208,7 +1211,7 @@ SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(type(o) != OT_WEAKREF) { - return sq_throwerror(v,_SC("the object must be a weakref")); + return sq_throwerror(v,"the object must be a weakref"); } v->Push(_weakref(o)->_obj); return SQ_OK; @@ -1228,7 +1231,7 @@ SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t) case OT_CLASS: v->Push(ss->_class_default_delegate); break; case OT_INSTANCE: v->Push(ss->_instance_default_delegate); break; case OT_WEAKREF: v->Push(ss->_weakref_default_delegate); break; - default: return sq_throwerror(v,_SC("the type doesn't have a default delegate")); + default: return sq_throwerror(v,"the type doesn't have a default delegate"); } return SQ_OK; } @@ -1237,7 +1240,7 @@ SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr o=stack_get(v,idx),&refpos = stack_get(v,-1),realkey,val; if(type(o) == OT_GENERATOR) { - return sq_throwerror(v,_SC("cannot iterate a generator")); + return sq_throwerror(v,"cannot iterate a generator"); } int faketojump; if(!v->FOREACH_OP(o,realkey,val,refpos,0,666,faketojump)) @@ -1256,12 +1259,30 @@ struct BufState{ SQInteger size; }; -SQInteger buf_lexfeed(SQUserPointer file) +WChar buf_lexfeed(SQUserPointer file) { - BufState *buf=(BufState*)file; - if(buf->size<(buf->ptr+1)) - return 0; - return buf->buf[buf->ptr++]; + /* Convert an UTF-8 character into a WChar */ + BufState *buf = (BufState *)file; + const char *p = &buf->buf[buf->ptr]; + + if (buf->size < buf->ptr + 1) return 0; + + /* Read the first character, and get the length based on UTF-8 specs. If invalid, bail out. */ + uint len = Utf8EncodedCharLen(*p); + if (len == 0) { + buf->ptr++; + return -1; + } + + /* Read the remaining bits. */ + if (buf->size < buf->ptr + len) return 0; + buf->ptr += len; + + /* Convert the character, and when definitely invalid, bail out as well. */ + WChar c; + if (Utf8Decode(&c, p) != len) return -1; + + return c; } SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { diff --git a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp index 66a81edb4b..86a1b11858 100644 --- a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp +++ b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp @@ -1,8 +1,13 @@ /* - see copyright notice in squirrel.h -*/ -/* Needs to be first due to a squirrel header defining type() and type() - * being used in some versions of the headers included by algorithm. */ + * see copyright notice in squirrel.h + */ +/* + * Needs to be first due to a squirrel header defining type() and type() + * being used in some versions of the headers included by algorithm. + */ + +#include "../../../stdafx.h" + #include #include "sqpcheader.h" #include "sqvm.h" @@ -12,21 +17,22 @@ #include "sqfuncproto.h" #include "sqclosure.h" #include "sqclass.h" -#include #include #include +#include "../../../safeguards.h" + bool str2num(const SQChar *s,SQObjectPtr &res) { SQChar *end; - if(scstrstr(s,_SC("."))){ - SQFloat r = SQFloat(scstrtod(s,&end)); + if(strstr(s,".")){ + SQFloat r = SQFloat(strtod(s,&end)); if(s == end) return false; res = r; return true; } else{ - SQInteger r = SQInteger(scstrtol(s,&end,10)); + SQInteger r = SQInteger(strtol(s,&end,10)); if(s == end) return false; res = r; return true; @@ -104,21 +110,21 @@ static SQInteger base_getstackinfos(HSQUIRRELVM v) sq_getinteger(v, -1, &level); if (SQ_SUCCEEDED(sq_stackinfos(v, level, &si))) { - const SQChar *fn = _SC("unknown"); - const SQChar *src = _SC("unknown"); + const SQChar *fn = "unknown"; + const SQChar *src = "unknown"; if(si.funcname)fn = si.funcname; if(si.source)src = si.source; sq_newtable(v); - sq_pushstring(v, _SC("func"), -1); + sq_pushstring(v, "func", -1); sq_pushstring(v, fn, -1); sq_createslot(v, -3); - sq_pushstring(v, _SC("src"), -1); + sq_pushstring(v, "src", -1); sq_pushstring(v, src, -1); sq_createslot(v, -3); - sq_pushstring(v, _SC("line"), -1); + sq_pushstring(v, "line", -1); sq_pushinteger(v, si.line); sq_createslot(v, -3); - sq_pushstring(v, _SC("locals"), -1); + sq_pushstring(v, "locals", -1); sq_newtable(v); seq=0; while ((name = sq_getlocal(v, level, seq))) { @@ -139,7 +145,7 @@ static SQInteger base_getstackinfos(HSQUIRRELVM v) static SQInteger base_assert(HSQUIRRELVM v) { if(v->IsFalse(stack_get(v,2))){ - return sq_throwerror(v,_SC("assertion failed")); + return sq_throwerror(v,"assertion failed"); } return 0; } @@ -171,7 +177,7 @@ static SQInteger base_print(HSQUIRRELVM v) const SQChar *str; sq_tostring(v,2); sq_getstring(v,-1,&str); - if(_ss(v)->_printfunc) _ss(v)->_printfunc(v,_SC("%s"),str); + if(_ss(v)->_printfunc) _ss(v)->_printfunc(v,"%s",str); return 0; } @@ -179,7 +185,7 @@ static SQInteger base_print(HSQUIRRELVM v) static SQInteger base_compilestring(HSQUIRRELVM v) { SQInteger nargs=sq_gettop(v); - const SQChar *src=NULL,*name=_SC("unnamedbuffer"); + const SQChar *src=NULL,*name="unnamedbuffer"; SQInteger size; sq_getstring(v,2,&src); size=sq_getsize(v,2); @@ -213,7 +219,7 @@ static SQInteger base_array(HSQUIRRELVM v) SQInteger nInitialSize = tointeger(stack_get(v,2)); SQInteger ret = 1; if (nInitialSize < 0) { - v->Raise_Error(_SC("can't create/resize array with/to size %d"), nInitialSize); + v->Raise_Error("can't create/resize array with/to size %d", nInitialSize); nInitialSize = 0; ret = -1; } @@ -238,28 +244,28 @@ static SQInteger base_type(HSQUIRRELVM v) static SQRegFunction base_funcs[]={ //generic #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS - {_SC("seterrorhandler"),base_seterrorhandler,2, NULL}, - {_SC("setdebughook"),base_setdebughook,2, NULL}, - {_SC("enabledebuginfo"),base_enabledebuginfo,2, NULL}, - {_SC("getstackinfos"),base_getstackinfos,2, _SC(".n")}, - {_SC("getroottable"),base_getroottable,1, NULL}, - {_SC("setroottable"),base_setroottable,2, NULL}, - {_SC("getconsttable"),base_getconsttable,1, NULL}, - {_SC("setconsttable"),base_setconsttable,2, NULL}, + {"seterrorhandler",base_seterrorhandler,2, NULL}, + {"setdebughook",base_setdebughook,2, NULL}, + {"enabledebuginfo",base_enabledebuginfo,2, NULL}, + {"getstackinfos",base_getstackinfos,2, ".n"}, + {"getroottable",base_getroottable,1, NULL}, + {"setroottable",base_setroottable,2, NULL}, + {"getconsttable",base_getconsttable,1, NULL}, + {"setconsttable",base_setconsttable,2, NULL}, #endif - {_SC("assert"),base_assert,2, NULL}, - {_SC("print"),base_print,2, NULL}, + {"assert",base_assert,2, NULL}, + {"print",base_print,2, NULL}, #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS - {_SC("compilestring"),base_compilestring,-2, _SC(".ss")}, - {_SC("newthread"),base_newthread,2, _SC(".c")}, - {_SC("suspend"),base_suspend,-1, NULL}, + {"compilestring",base_compilestring,-2, ".ss"}, + {"newthread",base_newthread,2, ".c"}, + {"suspend",base_suspend,-1, NULL}, #endif - {_SC("array"),base_array,-2, _SC(".n")}, - {_SC("type"),base_type,2, NULL}, + {"array",base_array,-2, ".n"}, + {"type",base_type,2, NULL}, #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS - {_SC("dummy"),base_dummy,0,NULL}, + {"dummy",base_dummy,0,NULL}, #ifndef NO_GARBAGE_COLLECTOR - {_SC("collectgarbage"),base_collectgarbage,1, _SC("t")}, + {"collectgarbage",base_collectgarbage,1, "t"}, #endif #endif {0,0,0,0} @@ -277,16 +283,16 @@ void sq_base_register(HSQUIRRELVM v) sq_createslot(v,-3); i++; } - sq_pushstring(v,_SC("_version_"),-1); + sq_pushstring(v,"_version_",-1); sq_pushstring(v,SQUIRREL_VERSION,-1); sq_createslot(v,-3); - sq_pushstring(v,_SC("_charsize_"),-1); + sq_pushstring(v,"_charsize_",-1); sq_pushinteger(v,sizeof(SQChar)); sq_createslot(v,-3); - sq_pushstring(v,_SC("_intsize_"),-1); + sq_pushstring(v,"_intsize_",-1); sq_pushinteger(v,sizeof(SQInteger)); sq_createslot(v,-3); - sq_pushstring(v,_SC("_floatsize_"),-1); + sq_pushstring(v,"_floatsize_",-1); sq_pushinteger(v,sizeof(SQFloat)); sq_createslot(v,-3); sq_pop(v,1); @@ -308,7 +314,7 @@ static SQInteger default_delegate_tofloat(HSQUIRRELVM v) v->Push(SQObjectPtr(tofloat(res))); break; }} - return sq_throwerror(v, _SC("cannot convert the string")); + return sq_throwerror(v, "cannot convert the string"); break; case OT_INTEGER:case OT_FLOAT: v->Push(SQObjectPtr(tofloat(o))); @@ -333,7 +339,7 @@ static SQInteger default_delegate_tointeger(HSQUIRRELVM v) v->Push(SQObjectPtr(tointeger(res))); break; }} - return sq_throwerror(v, _SC("cannot convert the string")); + return sq_throwerror(v, "cannot convert the string"); break; case OT_INTEGER:case OT_FLOAT: v->Push(SQObjectPtr(tointeger(o))); @@ -409,14 +415,14 @@ static SQInteger table_rawget(HSQUIRRELVM v) SQRegFunction SQSharedState::_table_default_delegate_funcz[]={ - {_SC("len"),default_delegate_len,1, _SC("t")}, - {_SC("rawget"),table_rawget,2, _SC("t")}, - {_SC("rawset"),table_rawset,3, _SC("t")}, - {_SC("rawdelete"),table_rawdelete,2, _SC("t")}, - {_SC("rawin"),container_rawexists,2, _SC("t")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("clear"),obj_clear,1, _SC(".")}, + {"len",default_delegate_len,1, "t"}, + {"rawget",table_rawget,2, "t"}, + {"rawset",table_rawset,3, "t"}, + {"rawdelete",table_rawdelete,2, "t"}, + {"rawin",container_rawexists,2, "t"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, + {"clear",obj_clear,1, "."}, {0,0,0,0} }; @@ -450,7 +456,7 @@ static SQInteger array_top(HSQUIRRELVM v) v->Push(_array(o)->Top()); return 1; } - else return sq_throwerror(v,_SC("top() on a empty array")); + else return sq_throwerror(v,"top() on a empty array"); } static SQInteger array_insert(HSQUIRRELVM v) @@ -459,7 +465,7 @@ static SQInteger array_insert(HSQUIRRELVM v) SQObject &idx=stack_get(v,2); SQObject &val=stack_get(v,3); if(!_array(o)->Insert(tointeger(idx),val)) - return sq_throwerror(v,_SC("index out of range")); + return sq_throwerror(v,"index out of range"); return 0; } @@ -467,14 +473,14 @@ static SQInteger array_remove(HSQUIRRELVM v) { SQObject &o = stack_get(v, 1); SQObject &idx = stack_get(v, 2); - if(!sq_isnumeric(idx)) return sq_throwerror(v, _SC("wrong type")); + if(!sq_isnumeric(idx)) return sq_throwerror(v, "wrong type"); SQObjectPtr val; if(_array(o)->Get(tointeger(idx), val)) { _array(o)->Remove(tointeger(idx)); v->Push(val); return 1; } - return sq_throwerror(v, _SC("idx out of range")); + return sq_throwerror(v, "idx out of range"); } static SQInteger array_resize(HSQUIRRELVM v) @@ -488,7 +494,7 @@ static SQInteger array_resize(HSQUIRRELVM v) _array(o)->Resize(tointeger(nsize),fill); return 0; } - return sq_throwerror(v, _SC("size must be a number")); + return sq_throwerror(v, "size must be a number"); } @@ -505,11 +511,11 @@ bool _sort_compare(HSQUIRRELVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger func,SQ v->Push(b); if(SQ_FAILED(sq_call(v, 3, SQTrue, SQFalse))) { if(!sq_isstring( v->_lasterror)) - v->Raise_Error(_SC("compare func failed")); + v->Raise_Error("compare func failed"); return false; } if(SQ_FAILED(sq_getinteger(v, -1, &ret))) { - v->Raise_Error(_SC("numeric value expected as return value of the compare function")); + v->Raise_Error("numeric value expected as return value of the compare function"); return false; } sq_settop(v, top); @@ -545,7 +551,7 @@ bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteger bott return false; if (ret < 0) { if (root == maxChild) { - v->Raise_Error(_SC("inconsistent compare function")); + v->Raise_Error("inconsistent compare function"); return false; // We'd be swapping ourselve. The compare function is incorrect } _Swap(arr->_values[root],arr->_values[maxChild]); @@ -596,8 +602,8 @@ static SQInteger array_slice(HSQUIRRELVM v) SQInteger alen = _array(o)->Size(); if(sidx < 0)sidx = alen + sidx; if(eidx < 0)eidx = alen + eidx; - if(eidx < sidx)return sq_throwerror(v,_SC("wrong indexes")); - if(eidx > alen)return sq_throwerror(v,_SC("slice out of range")); + if(eidx < sidx)return sq_throwerror(v,"wrong indexes"); + if(eidx > alen)return sq_throwerror(v,"slice out of range"); SQArray *arr=SQArray::Create(_ss(v),eidx-sidx); SQObjectPtr t; SQInteger count=0; @@ -611,21 +617,21 @@ static SQInteger array_slice(HSQUIRRELVM v) } SQRegFunction SQSharedState::_array_default_delegate_funcz[]={ - {_SC("len"),default_delegate_len,1, _SC("a")}, - {_SC("append"),array_append,2, _SC("a")}, - {_SC("extend"),array_extend,2, _SC("aa")}, - {_SC("push"),array_append,2, _SC("a")}, - {_SC("pop"),array_pop,1, _SC("a")}, - {_SC("top"),array_top,1, _SC("a")}, - {_SC("insert"),array_insert,3, _SC("an")}, - {_SC("remove"),array_remove,2, _SC("an")}, - {_SC("resize"),array_resize,-2, _SC("an")}, - {_SC("reverse"),array_reverse,1, _SC("a")}, - {_SC("sort"),array_sort,-1, _SC("ac")}, - {_SC("slice"),array_slice,-1, _SC("ann")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("clear"),obj_clear,1, _SC(".")}, + {"len",default_delegate_len,1, "a"}, + {"append",array_append,2, "a"}, + {"extend",array_extend,2, "aa"}, + {"push",array_append,2, "a"}, + {"pop",array_pop,1, "a"}, + {"top",array_top,1, "a"}, + {"insert",array_insert,3, "an"}, + {"remove",array_remove,2, "an"}, + {"resize",array_resize,-2, "an"}, + {"reverse",array_reverse,1, "a"}, + {"sort",array_sort,-1, "ac"}, + {"slice",array_slice,-1, "ann"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, + {"clear",obj_clear,1, "."}, {0,0,0,0} }; @@ -638,8 +644,8 @@ static SQInteger string_slice(HSQUIRRELVM v) SQInteger slen = _string(o)->_len; if(sidx < 0)sidx = slen + sidx; if(eidx < 0)eidx = slen + eidx; - if(eidx < sidx) return sq_throwerror(v,_SC("wrong indexes")); - if(eidx > slen) return sq_throwerror(v,_SC("slice out of range")); + if(eidx < sidx) return sq_throwerror(v,"wrong indexes"); + if(eidx > slen) return sq_throwerror(v,"slice out of range"); v->Push(SQString::Create(_ss(v),&_stringval(o)[sidx],eidx-sidx)); return 1; } @@ -651,7 +657,7 @@ static SQInteger string_find(HSQUIRRELVM v) if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,&str)) && SQ_SUCCEEDED(sq_getstring(v,2,&substr))){ if(top>2)sq_getinteger(v,3,&start_idx); if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){ - ret=scstrstr(&str[start_idx],substr); + ret=strstr(&str[start_idx],substr); if(ret){ sq_pushinteger(v,(SQInteger)(ret-str)); return 1; @@ -659,7 +665,7 @@ static SQInteger string_find(HSQUIRRELVM v) } return 0; } - return sq_throwerror(v,_SC("invalid param")); + return sq_throwerror(v,"invalid param"); } #define STRING_TOFUNCZ(func) static SQInteger string_##func(HSQUIRRELVM v) \ @@ -667,7 +673,7 @@ static SQInteger string_find(HSQUIRRELVM v) SQObject str=stack_get(v,1); \ SQInteger len=_string(str)->_len; \ const SQChar *sThis=_stringval(str); \ - SQChar *sNew=(_ss(v)->GetScratchPad(rsl(len))); \ + SQChar *sNew=(_ss(v)->GetScratchPad(len)); \ for(SQInteger i=0;iPush(SQString::Create(_ss(v),sNew,len)); \ return 1; \ @@ -678,25 +684,25 @@ STRING_TOFUNCZ(tolower) STRING_TOFUNCZ(toupper) SQRegFunction SQSharedState::_string_default_delegate_funcz[]={ - {_SC("len"),default_delegate_len,1, _SC("s")}, - {_SC("tointeger"),default_delegate_tointeger,1, _SC("s")}, - {_SC("tofloat"),default_delegate_tofloat,1, _SC("s")}, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("slice"),string_slice,-1, _SC(" s n n")}, - {_SC("find"),string_find,-2, _SC("s s n ")}, - {_SC("tolower"),string_tolower,1, _SC("s")}, - {_SC("toupper"),string_toupper,1, _SC("s")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, + {"len",default_delegate_len,1, "s"}, + {"tointeger",default_delegate_tointeger,1, "s"}, + {"tofloat",default_delegate_tofloat,1, "s"}, + {"tostring",default_delegate_tostring,1, "."}, + {"slice",string_slice,-1, " s n n"}, + {"find",string_find,-2, "s s n "}, + {"tolower",string_tolower,1, "s"}, + {"toupper",string_toupper,1, "s"}, + {"weakref",obj_delegate_weakref,1, NULL }, {0,0,0,0} }; //INTEGER DEFAULT DELEGATE////////////////////////// SQRegFunction SQSharedState::_number_default_delegate_funcz[]={ - {_SC("tointeger"),default_delegate_tointeger,1, _SC("n|b")}, - {_SC("tofloat"),default_delegate_tofloat,1, _SC("n|b")}, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("tochar"),number_delegate_tochar,1, _SC("n|b")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, + {"tointeger",default_delegate_tointeger,1, "n|b"}, + {"tofloat",default_delegate_tofloat,1, "n|b"}, + {"tostring",default_delegate_tostring,1, "."}, + {"tochar",number_delegate_tochar,1, "n|b"}, + {"weakref",obj_delegate_weakref,1, NULL }, {0,0,0,0} }; @@ -748,19 +754,19 @@ static SQInteger closure_getinfos(HSQUIRRELVM v) { _array(params)->Set((SQInteger)n,f->_parameters[n]); } if(f->_varparams) { - _array(params)->Set(nparams-1,SQString::Create(_ss(v),_SC("..."),-1)); + _array(params)->Set(nparams-1,SQString::Create(_ss(v),"...",-1)); } - res->NewSlot(SQString::Create(_ss(v),_SC("native"),-1),false); - res->NewSlot(SQString::Create(_ss(v),_SC("name"),-1),f->_name); - res->NewSlot(SQString::Create(_ss(v),_SC("src"),-1),f->_sourcename); - res->NewSlot(SQString::Create(_ss(v),_SC("parameters"),-1),params); - res->NewSlot(SQString::Create(_ss(v),_SC("varargs"),-1),f->_varparams); + res->NewSlot(SQString::Create(_ss(v),"native",-1),false); + res->NewSlot(SQString::Create(_ss(v),"name",-1),f->_name); + res->NewSlot(SQString::Create(_ss(v),"src",-1),f->_sourcename); + res->NewSlot(SQString::Create(_ss(v),"parameters",-1),params); + res->NewSlot(SQString::Create(_ss(v),"varargs",-1),f->_varparams); } else { //OT_NATIVECLOSURE SQNativeClosure *nc = _nativeclosure(o); - res->NewSlot(SQString::Create(_ss(v),_SC("native"),-1),true); - res->NewSlot(SQString::Create(_ss(v),_SC("name"),-1),nc->_name); - res->NewSlot(SQString::Create(_ss(v),_SC("paramscheck"),-1),nc->_nparamscheck); + res->NewSlot(SQString::Create(_ss(v),"native",-1),true); + res->NewSlot(SQString::Create(_ss(v),"name",-1),nc->_name); + res->NewSlot(SQString::Create(_ss(v),"paramscheck",-1),nc->_nparamscheck); SQObjectPtr typecheck; if(nc->_typecheck.size() > 0) { typecheck = @@ -769,7 +775,7 @@ static SQInteger closure_getinfos(HSQUIRRELVM v) { _array(typecheck)->Set((SQInteger)n,nc->_typecheck[n]); } } - res->NewSlot(SQString::Create(_ss(v),_SC("typecheck"),-1),typecheck); + res->NewSlot(SQString::Create(_ss(v),"typecheck",-1),typecheck); } v->Push(res); return 1; @@ -777,14 +783,14 @@ static SQInteger closure_getinfos(HSQUIRRELVM v) { SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={ - {_SC("call"),closure_call,-1, _SC("c")}, - {_SC("pcall"),closure_pcall,-1, _SC("c")}, - {_SC("acall"),closure_acall,2, _SC("ca")}, - {_SC("pacall"),closure_pacall,2, _SC("ca")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("bindenv"),closure_bindenv,2, _SC("c x|y|t")}, - {_SC("getinfos"),closure_getinfos,1, _SC("c")}, + {"call",closure_call,-1, "c"}, + {"pcall",closure_pcall,-1, "c"}, + {"acall",closure_acall,2, "ca"}, + {"pacall",closure_pacall,2, "ca"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, + {"bindenv",closure_bindenv,2, "c x|y|t"}, + {"getinfos",closure_getinfos,1, "c"}, {0,0,0,0} }; @@ -793,17 +799,17 @@ static SQInteger generator_getstatus(HSQUIRRELVM v) { SQObject &o=stack_get(v,1); switch(_generator(o)->_state){ - case SQGenerator::eSuspended:v->Push(SQString::Create(_ss(v),_SC("suspended")));break; - case SQGenerator::eRunning:v->Push(SQString::Create(_ss(v),_SC("running")));break; - case SQGenerator::eDead:v->Push(SQString::Create(_ss(v),_SC("dead")));break; + case SQGenerator::eSuspended:v->Push(SQString::Create(_ss(v),"suspended"));break; + case SQGenerator::eRunning:v->Push(SQString::Create(_ss(v),"running"));break; + case SQGenerator::eDead:v->Push(SQString::Create(_ss(v),"dead"));break; } return 1; } SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={ - {_SC("getstatus"),generator_getstatus,1, _SC("g")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, + {"getstatus",generator_getstatus,1, "g"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, {0,0,0,0} }; @@ -826,7 +832,7 @@ static SQInteger thread_call(HSQUIRRELVM v) v->_lasterror = _thread(o)->_lasterror; return SQ_ERROR; } - return sq_throwerror(v,_SC("wrong parameter")); + return sq_throwerror(v,"wrong parameter"); } static SQInteger thread_wakeup(HSQUIRRELVM v) @@ -838,10 +844,10 @@ static SQInteger thread_wakeup(HSQUIRRELVM v) if(state != SQ_VMSTATE_SUSPENDED) { switch(state) { case SQ_VMSTATE_IDLE: - return sq_throwerror(v,_SC("cannot wakeup a idle thread")); + return sq_throwerror(v,"cannot wakeup a idle thread"); break; case SQ_VMSTATE_RUNNING: - return sq_throwerror(v,_SC("cannot wakeup a running thread")); + return sq_throwerror(v,"cannot wakeup a running thread"); break; } } @@ -862,7 +868,7 @@ static SQInteger thread_wakeup(HSQUIRRELVM v) v->_lasterror = thread->_lasterror; return SQ_ERROR; } - return sq_throwerror(v,_SC("wrong parameter")); + return sq_throwerror(v,"wrong parameter"); } static SQInteger thread_getstatus(HSQUIRRELVM v) @@ -870,26 +876,26 @@ static SQInteger thread_getstatus(HSQUIRRELVM v) SQObjectPtr &o = stack_get(v,1); switch(sq_getvmstate(_thread(o))) { case SQ_VMSTATE_IDLE: - sq_pushstring(v,_SC("idle"),-1); + sq_pushstring(v,"idle",-1); break; case SQ_VMSTATE_RUNNING: - sq_pushstring(v,_SC("running"),-1); + sq_pushstring(v,"running",-1); break; case SQ_VMSTATE_SUSPENDED: - sq_pushstring(v,_SC("suspended"),-1); + sq_pushstring(v,"suspended",-1); break; default: - return sq_throwerror(v,_SC("internal VM error")); + return sq_throwerror(v,"internal VM error"); } return 1; } SQRegFunction SQSharedState::_thread_default_delegate_funcz[] = { - {_SC("call"), thread_call, -1, _SC("v")}, - {_SC("wakeup"), thread_wakeup, -1, _SC("v")}, - {_SC("getstatus"), thread_getstatus, 1, _SC("v")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, + {"call", thread_call, -1, "v"}, + {"wakeup", thread_wakeup, -1, "v"}, + {"getstatus", thread_getstatus, 1, "v"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, {0,0,0,0}, }; @@ -915,12 +921,12 @@ static SQInteger class_instance(HSQUIRRELVM v) } SQRegFunction SQSharedState::_class_default_delegate_funcz[] = { - {_SC("getattributes"), class_getattributes, 2, _SC("y.")}, - {_SC("setattributes"), class_setattributes, 3, _SC("y..")}, - {_SC("rawin"),container_rawexists,2, _SC("y")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, - {_SC("instance"),class_instance,1, _SC("y")}, + {"getattributes", class_getattributes, 2, "y."}, + {"setattributes", class_setattributes, 3, "y.."}, + {"rawin",container_rawexists,2, "y"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, + {"instance",class_instance,1, "y"}, {0,0,0,0} }; @@ -932,10 +938,10 @@ static SQInteger instance_getclass(HSQUIRRELVM v) } SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = { - {_SC("getclass"), instance_getclass, 1, _SC("x")}, - {_SC("rawin"),container_rawexists,2, _SC("x")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, + {"getclass", instance_getclass, 1, "x"}, + {"rawin",container_rawexists,2, "x"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, {0,0,0,0} }; @@ -947,9 +953,9 @@ static SQInteger weakref_ref(HSQUIRRELVM v) } SQRegFunction SQSharedState::_weakref_default_delegate_funcz[] = { - {_SC("ref"),weakref_ref,1, _SC("r")}, - {_SC("weakref"),obj_delegate_weakref,1, NULL }, - {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, + {"ref",weakref_ref,1, "r"}, + {"weakref",obj_delegate_weakref,1, NULL }, + {"tostring",default_delegate_tostring,1, "."}, {0,0,0,0} }; diff --git a/src/3rdparty/squirrel/squirrel/sqclass.cpp b/src/3rdparty/squirrel/squirrel/sqclass.cpp index 73c8848b5b..aa1bca0443 100644 --- a/src/3rdparty/squirrel/squirrel/sqclass.cpp +++ b/src/3rdparty/squirrel/squirrel/sqclass.cpp @@ -1,12 +1,17 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include "sqvm.h" #include "sqtable.h" #include "sqclass.h" #include "sqclosure.h" +#include "../../../safeguards.h" + SQClass::SQClass(SQSharedState *ss,SQClass *base) { _base = base; diff --git a/src/3rdparty/squirrel/squirrel/sqclosure.h b/src/3rdparty/squirrel/squirrel/sqclosure.h index f872f2b8d3..a42dcd575a 100644 --- a/src/3rdparty/squirrel/squirrel/sqclosure.h +++ b/src/3rdparty/squirrel/squirrel/sqclosure.h @@ -80,7 +80,7 @@ public: struct SQNativeClosure : public CHAINABLE_OBJ { private: - SQNativeClosure(SQSharedState *ss,SQFUNCTION func){_function=func;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); } + SQNativeClosure(SQSharedState *ss,SQFUNCTION func) : _nparamscheck(0) {_function=func;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); } public: static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func) { diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp index b9eace1c63..ace9d201e9 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -1,6 +1,9 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include #include "sqpcheader.h" #include @@ -13,6 +16,10 @@ #include "sqvm.h" #include "sqtable.h" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + #define DEREF_NO_DEREF -1 #define DEREF_FIELD -2 @@ -50,23 +57,22 @@ typedef sqvector ExpStateVec; class SQCompiler { public: - SQCompiler(SQVM *v, SQLEXREADFUNC rg, SQUserPointer up, const SQChar* sourcename, bool raiseerror, bool lineinfo) + SQCompiler(SQVM *v, SQLEXREADFUNC rg, SQUserPointer up, const SQChar* sourcename, bool raiseerror, bool lineinfo) : _token(0), _fs(NULL), _lex(_ss(v), rg, up, ThrowError, this), _debugline(0), _debugop(0) { _vm=v; - _lex.Init(_ss(v), rg, up,ThrowError,this); _sourcename = SQString::Create(_ss(v), sourcename); _lineinfo = lineinfo;_raiseerror = raiseerror; } - static void ThrowError(void *ud, const SQChar *s) { + NORETURN static void ThrowError(void *ud, const SQChar *s) { SQCompiler *c = (SQCompiler *)ud; c->Error(s); } - void Error(const SQChar *s, ...) + NORETURN void Error(const SQChar *s, ...) { static SQChar temp[256]; va_list vl; va_start(vl, s); - scvsprintf(temp, s, vl); + vseprintf(temp, lastof(temp), s, vl); va_end(vl); throw temp; } @@ -75,7 +81,7 @@ public: bool IsDerefToken(SQInteger tok) { switch(tok){ - case _SC('='): case _SC('('): case TK_NEWSLOT: + case '=': case '(': case TK_NEWSLOT: case TK_MODEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MINUSEQ: case TK_PLUSEQ: case TK_PLUSPLUS: case TK_MINUSMINUS: return true; } return false; @@ -91,7 +97,7 @@ public: if(_token != tok) { if(_token == TK_CONSTRUCTOR && tok == TK_IDENTIFIER) { - //ret = SQString::Create(_ss(_vm),_SC("constructor")); + //ret = SQString::Create(_ss(_vm),"constructor"); //do nothing } else { @@ -100,23 +106,23 @@ public: switch(tok) { case TK_IDENTIFIER: - etypename = _SC("IDENTIFIER"); + etypename = "IDENTIFIER"; break; case TK_STRING_LITERAL: - etypename = _SC("STRING_LITERAL"); + etypename = "STRING_LITERAL"; break; case TK_INTEGER: - etypename = _SC("INTEGER"); + etypename = "INTEGER"; break; case TK_FLOAT: - etypename = _SC("FLOAT"); + etypename = "FLOAT"; break; default: etypename = _lex.Tok2Str(tok); } - Error(_SC("expected '%s'"), etypename); + Error("expected '%s'", etypename); } - Error(_SC("expected '%c'"), tok); + Error("expected '%c'", tok); } } SQObjectPtr ret; @@ -138,12 +144,12 @@ public: Lex(); return ret; } - bool IsEndOfStatement() { return ((_lex._prevtoken == _SC('\n')) || (_token == SQUIRREL_EOB) || (_token == _SC('}')) || (_token == _SC(';'))); } + bool IsEndOfStatement() { return ((_lex._prevtoken == '\n') || (_token == SQUIRREL_EOB) || (_token == '}') || (_token == ';')); } void OptionalSemicolon() { - if(_token == _SC(';')) { Lex(); return; } + if(_token == ';') { Lex(); return; } if(!IsEndOfStatement()) { - Error(_SC("end of statement expected (; or lf)")); + Error("end of statement expected (; or lf)"); } } void MoveIfCurrentTargetIsLocal() { @@ -159,16 +165,16 @@ public: _debugop = 0; SQFuncState funcstate(_ss(_vm), NULL,ThrowError,this); - funcstate._name = SQString::Create(_ss(_vm), _SC("main")); + funcstate._name = SQString::Create(_ss(_vm), "main"); _fs = &funcstate; - _fs->AddParameter(_fs->CreateString(_SC("this"))); + _fs->AddParameter(_fs->CreateString("this")); _fs->_sourcename = _sourcename; SQInteger stacksize = _fs->GetStackSize(); try { Lex(); while(_token > 0){ Statement(); - if(_lex._prevtoken != _SC('}')) OptionalSemicolon(); + if(_lex._prevtoken != '}') OptionalSemicolon(); } CleanStack(stacksize); _fs->AddLineInfos(_lex._currentline, _lineinfo, true); @@ -182,7 +188,7 @@ public: } catch (SQChar *compilererror) { if(_raiseerror && _ss(_vm)->_compilererrorhandler) { - _ss(_vm)->_compilererrorhandler(_vm, compilererror, type(_sourcename) == OT_STRING?_stringval(_sourcename):_SC("unknown"), + _ss(_vm)->_compilererrorhandler(_vm, compilererror, type(_sourcename) == OT_STRING?_stringval(_sourcename):"unknown", _lex._currentline, _lex._currentcolumn); } _vm->_lasterror = SQString::Create(_ss(_vm), compilererror, -1); @@ -191,16 +197,16 @@ public: } void Statements() { - while(_token != _SC('}') && _token != TK_DEFAULT && _token != TK_CASE) { + while(_token != '}' && _token != TK_DEFAULT && _token != TK_CASE) { Statement(); - if(_lex._prevtoken != _SC('}') && _lex._prevtoken != _SC(';')) OptionalSemicolon(); + if(_lex._prevtoken != '}' && _lex._prevtoken != ';') OptionalSemicolon(); } } void Statement() { _fs->AddLineInfos(_lex._currentline, _lineinfo); switch(_token){ - case _SC(';'): Lex(); break; + case ';': Lex(); break; case TK_IF: IfStatement(); break; case TK_WHILE: WhileStatement(); break; case TK_DO: DoWhileStatement(); break; @@ -236,7 +242,7 @@ public: } break;} case TK_BREAK: - if(_fs->_breaktargets.size() <= 0)Error(_SC("'break' has to be in a loop block")); + if(_fs->_breaktargets.size() <= 0)Error("'break' has to be in a loop block"); if(_fs->_breaktargets.top() > 0){ _fs->AddInstruction(_OP_POPTRAP, _fs->_breaktargets.top(), 0); } @@ -246,7 +252,7 @@ public: Lex(); break; case TK_CONTINUE: - if(_fs->_continuetargets.size() <= 0)Error(_SC("'continue' has to be in a loop block")); + if(_fs->_continuetargets.size() <= 0)Error("'continue' has to be in a loop block"); if(_fs->_continuetargets.top() > 0) { _fs->AddInstruction(_OP_POPTRAP, _fs->_continuetargets.top(), 0); } @@ -264,11 +270,11 @@ public: case TK_ENUM: EnumStatement(); break; - case _SC('{'):{ + case '{':{ SQInteger stacksize = _fs->GetStackSize(); Lex(); Statements(); - Expect(_SC('}')); + Expect('}'); _fs->AddInstruction(_OP_SCOPE_END, stacksize, _fs->GetStackSize()); _fs->SetStackSize(stacksize); } @@ -348,7 +354,7 @@ public: _exst._funcarg = funcarg; LogicalOrExp(); switch(_token) { - case _SC('='): + case '=': case TK_NEWSLOT: case TK_MINUSEQ: case TK_PLUSEQ: @@ -359,19 +365,19 @@ public: SQInteger op = _token; SQInteger ds = _exst._deref; bool freevar = _exst._freevar; - if(ds == DEREF_NO_DEREF) Error(_SC("can't assign expression")); + if(ds == DEREF_NO_DEREF) Error("can't assign expression"); Lex(); Expression(); switch(op){ case TK_NEWSLOT: - if(freevar) Error(_SC("free variables cannot be modified")); + if(freevar) Error("free variables cannot be modified"); if(ds == DEREF_FIELD) EmitDerefOp(_OP_NEWSLOT); else //if _derefstate != DEREF_NO_DEREF && DEREF_FIELD so is the index of a local - Error(_SC("can't 'create' a local slot")); + Error("can't 'create' a local slot"); break; - case _SC('='): //ASSIGN - if(freevar) Error(_SC("free variables cannot be modified")); + case '=': //ASSIGN + if(freevar) Error("free variables cannot be modified"); if(ds == DEREF_FIELD) EmitDerefOp(_OP_SET); else {//if _derefstate != DEREF_NO_DEREF && DEREF_FIELD so is the index of a local @@ -390,7 +396,7 @@ public: } } break; - case _SC('?'): { + case '?': { Lex(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); SQInteger jzpos = _fs->GetCurrentPos(); @@ -400,7 +406,7 @@ public: if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); SQInteger endfirstexp = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_JMP, 0, 0); - Expect(_SC(':')); + Expect(':'); SQInteger jmppos = _fs->GetCurrentPos(); Expression(); SQInteger second_exp = _fs->PopTarget(); @@ -422,7 +428,7 @@ public: void LogicalOrExp() { LogicalAndExp(); - for(;;) if(_token == TK_OR) { + if(_token == TK_OR) { SQInteger first_exp = _fs->PopTarget(); SQInteger trg = _fs->PushTarget(); _fs->AddInstruction(_OP_OR, trg, 0, first_exp, 0); @@ -434,8 +440,7 @@ public: if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SnoozeOpt(); _fs->SetIntructionParam(jpos, 1, (_fs->GetCurrentPos() - jpos)); - break; - }else return; + } } void LogicalAndExp() { @@ -464,21 +469,21 @@ public: void BitwiseOrExp() { BitwiseXorExp(); - for(;;) if(_token == _SC('|')) + for(;;) if(_token == '|') {BIN_EXP(_OP_BITW, &SQCompiler::BitwiseXorExp,BW_OR); }else return; } void BitwiseXorExp() { BitwiseAndExp(); - for(;;) if(_token == _SC('^')) + for(;;) if(_token == '^') {BIN_EXP(_OP_BITW, &SQCompiler::BitwiseAndExp,BW_XOR); }else return; } void BitwiseAndExp() { CompExp(); - for(;;) if(_token == _SC('&')) + for(;;) if(_token == '&') {BIN_EXP(_OP_BITW, &SQCompiler::CompExp,BW_AND); }else return; } @@ -487,8 +492,8 @@ public: ShiftExp(); for(;;) switch(_token) { case TK_EQ: BIN_EXP(_OP_EQ, &SQCompiler::ShiftExp); break; - case _SC('>'): BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_G); break; - case _SC('<'): BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_L); break; + case '>': BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_G); break; + case '<': BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_L); break; case TK_GE: BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_GE); break; case TK_LE: BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_LE); break; case TK_NE: BIN_EXP(_OP_NE, &SQCompiler::ShiftExp); break; @@ -509,7 +514,7 @@ public: { MultExp(); for(;;) switch(_token) { - case _SC('+'): case _SC('-'): + case '+': case '-': BIN_EXP(_OP_ARITH, &SQCompiler::MultExp,_token); break; default: return; } @@ -519,7 +524,7 @@ public: { PrefixedExpr(); for(;;) switch(_token) { - case _SC('*'): case _SC('/'): case _SC('%'): + case '*': case '/': case '%': BIN_EXP(_OP_ARITH, &SQCompiler::PrefixedExpr,_token); break; default: return; } @@ -531,13 +536,13 @@ public: for(;;) { switch(_token) { - case _SC('.'): { + case '.': { pos = -1; Lex(); if(_token == TK_PARENT) { Lex(); if(!NeedGet()) - Error(_SC("parent cannot be set")); + Error("parent cannot be set"); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_GETPARENT, _fs->PushTarget(), src); } @@ -549,9 +554,9 @@ public: _exst._freevar = false; } break; - case _SC('['): - if(_lex._prevtoken == _SC('\n')) Error(_SC("cannot brake deref/or comma needed after [exp]=exp slot declaration")); - Lex(); Expression(); Expect(_SC(']')); + case '[': + if(_lex._prevtoken == '\n') Error("cannot brake deref/or comma needed after [exp]=exp slot declaration"); + Lex(); Expression(); Expect(']'); pos = -1; if(NeedGet()) Emit2ArgsOP(_OP_GET); _exst._deref = DEREF_FIELD; @@ -571,7 +576,7 @@ public: } return; break; - case _SC('('): + case '(': { if(_exst._deref != DEREF_NO_DEREF) { if(pos<0) { @@ -609,9 +614,9 @@ public: break; case TK_VARGC: Lex(); _fs->AddInstruction(_OP_VARGC, _fs->PushTarget()); break; case TK_VARGV: { Lex(); - Expect(_SC('[')); + Expect('['); Expression(); - Expect(_SC(']')); + Expect(']'); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_GETVARGV, _fs->PushTarget(), src); } @@ -624,8 +629,8 @@ public: SQObject constant; switch(_token) { case TK_IDENTIFIER: id = _fs->CreateString(_lex._svalue); break; - case TK_THIS: id = _fs->CreateString(_SC("this")); break; - case TK_CONSTRUCTOR: id = _fs->CreateString(_SC("constructor")); break; + case TK_THIS: id = _fs->CreateString("this"); break; + case TK_CONSTRUCTOR: id = _fs->CreateString("constructor"); break; } SQInteger pos = -1; Lex(); @@ -643,7 +648,7 @@ public: Expect('.'); constid = Expect(TK_IDENTIFIER); if(!_table(constant)->Get(constid,constval)) { constval.Null(); - Error(_SC("invalid constant [%s.%s]"), _stringval(id),_stringval(constid)); + Error("invalid constant [%s.%s]", _stringval(id),_stringval(constid)); } } else { @@ -683,7 +688,7 @@ public: case TK_DOUBLE_COLON: // "::" _fs->AddInstruction(_OP_LOADROOTTABLE, _fs->PushTarget()); _exst._deref = DEREF_FIELD; - _token = _SC('.'); //hack + _token = '.'; //hack return -1; break; case TK_NULL: @@ -713,13 +718,13 @@ public: _fs->AddInstruction(_OP_LOADBOOL, _fs->PushTarget(),_token == TK_TRUE?1:0); Lex(); break; - case _SC('['): { + case '[': { _fs->AddInstruction(_OP_NEWARRAY, _fs->PushTarget()); SQInteger apos = _fs->GetCurrentPos(),key = 0; Lex(); - while(_token != _SC(']')) { + while(_token != ']') { Expression(); - if(_token == _SC(',')) Lex(); + if(_token == ',') Lex(); SQInteger val = _fs->PopTarget(); SQInteger array = _fs->TopTarget(); _fs->AddInstruction(_OP_APPENDARRAY, array, val); @@ -729,16 +734,16 @@ public: Lex(); } break; - case _SC('{'):{ + case '{':{ _fs->AddInstruction(_OP_NEWTABLE, _fs->PushTarget()); - Lex();ParseTableOrClass(_SC(',')); + Lex();ParseTableOrClass(','); } break; case TK_FUNCTION: FunctionExp(_token);break; case TK_CLASS: Lex(); ClassExp();break; - case _SC('-'): UnaryOP(_OP_NEG); break; - case _SC('!'): UnaryOP(_OP_NOT); break; - case _SC('~'): UnaryOP(_OP_BWNOT); break; + case '-': UnaryOP(_OP_NEG); break; + case '!': UnaryOP(_OP_NOT); break; + case '~': UnaryOP(_OP_BWNOT); break; case TK_TYPEOF : UnaryOP(_OP_TYPEOF); break; case TK_RESUME : UnaryOP(_OP_RESUME); break; case TK_CLONE : UnaryOP(_OP_CLONE); break; @@ -746,9 +751,9 @@ public: case TK_PLUSPLUS :PrefixIncDec(_token); break; case TK_DELETE : DeleteExpr(); break; case TK_DELEGATE : DelegateExpr(); break; - case _SC('('): Lex(); CommaExpr(); Expect(_SC(')')); + case '(': Lex(); CommaExpr(); Expect(')'); break; - default: Error(_SC("expression expected")); + default: Error("expression expected"); } return -1; } @@ -761,23 +766,23 @@ public: bool NeedGet() { switch(_token) { - case _SC('='): case _SC('('): case TK_NEWSLOT: case TK_PLUSPLUS: case TK_MINUSMINUS: + case '=': case '(': case TK_NEWSLOT: case TK_PLUSPLUS: case TK_MINUSMINUS: case TK_PLUSEQ: case TK_MINUSEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MODEQ: return false; } - return (!_exst._class_or_delete) || (_exst._class_or_delete && (_token == _SC('.') || _token == _SC('['))); + return (!_exst._class_or_delete) || (_exst._class_or_delete && (_token == '.' || _token == '[')); } void FunctionCallArgs() { SQInteger nargs = 1;//this - while(_token != _SC(')')) { + while(_token != ')') { Expression(true); MoveIfCurrentTargetIsLocal(); nargs++; - if(_token == _SC(',')){ + if(_token == ','){ Lex(); - if(_token == ')') Error(_SC("expression expected, found ')'")); + if(_token == ')') Error("expression expected, found ')'"); } } Lex(); @@ -810,20 +815,20 @@ public: case TK_CONSTRUCTOR:{ SQInteger tk = _token; Lex(); - SQObject id = tk == TK_FUNCTION ? Expect(TK_IDENTIFIER) : _fs->CreateString(_SC("constructor")); - Expect(_SC('(')); + SQObject id = tk == TK_FUNCTION ? Expect(TK_IDENTIFIER) : _fs->CreateString("constructor"); + Expect('('); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); CreateFunction(id); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, 0); } break; - case _SC('['): - Lex(); CommaExpr(); Expect(_SC(']')); - Expect(_SC('=')); Expression(); + case '[': + Lex(); CommaExpr(); Expect(']'); + Expect('='); Expression(); break; default : _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(Expect(TK_IDENTIFIER))); - Expect(_SC('=')); Expression(); + Expect('='); Expression(); } if(_token == separator) Lex();//optional comma/semicolon @@ -837,7 +842,7 @@ public: _fs->AddInstruction(_OP_NEWSLOTA, flags, table, key, val); //_fs->PopTarget(); } - if(separator == _SC(',')) //hack recognizes a table from the separator + if(separator == ',') //hack recognizes a table from the separator _fs->SetIntructionParam(tpos, 1, nkeys); Lex(); } @@ -846,7 +851,7 @@ public: SQObject varname; do { Lex(); varname = Expect(TK_IDENTIFIER); - if(_token == _SC('=')) { + if(_token == '=') { Lex(); Expression(); SQInteger src = _fs->PopTarget(); SQInteger dest = _fs->PushTarget(); @@ -858,20 +863,20 @@ public: _fs->PopTarget(); _fs->PushLocalVariable(varname); - } while(_token == _SC(',')); + } while(_token == ','); } void IfStatement() { SQInteger jmppos; bool haselse = false; - Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); + Lex(); Expect('('); CommaExpr(); Expect(')'); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); SQInteger jnepos = _fs->GetCurrentPos(); SQInteger stacksize = _fs->GetStackSize(); Statement(); // - if(_token != _SC('}') && _token != TK_ELSE) OptionalSemicolon(); + if(_token != '}' && _token != TK_ELSE) OptionalSemicolon(); CleanStack(stacksize); SQInteger endifblock = _fs->GetCurrentPos(); @@ -892,7 +897,7 @@ public: SQInteger jzpos, jmppos; SQInteger stacksize = _fs->GetStackSize(); jmppos = _fs->GetCurrentPos(); - Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); + Lex(); Expect('('); CommaExpr(); Expect(')'); BEGIN_BREAKBLE_BLOCK(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); @@ -920,7 +925,7 @@ public: _fs->AddLineInfos(_lex._currentline, _lineinfo, true); Expect(TK_WHILE); SQInteger continuetrg = _fs->GetCurrentPos(); - Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); + Expect('('); CommaExpr(); Expect(')'); _fs->AddInstruction(_OP_JNZ, _fs->PopTarget(), jzpos - _fs->GetCurrentPos() - 1); END_BREAKBLE_BLOCK(continuetrg); } @@ -928,25 +933,25 @@ public: { Lex(); SQInteger stacksize = _fs->GetStackSize(); - Expect(_SC('(')); + Expect('('); if(_token == TK_LOCAL) LocalDeclStatement(); - else if(_token != _SC(';')){ + else if(_token != ';'){ CommaExpr(); _fs->PopTarget(); } - Expect(_SC(';')); + Expect(';'); _fs->SnoozeOpt(); SQInteger jmppos = _fs->GetCurrentPos(); SQInteger jzpos = -1; - if(_token != _SC(';')) { CommaExpr(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); jzpos = _fs->GetCurrentPos(); } - Expect(_SC(';')); + if(_token != ';') { CommaExpr(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); jzpos = _fs->GetCurrentPos(); } + Expect(';'); _fs->SnoozeOpt(); SQInteger expstart = _fs->GetCurrentPos() + 1; - if(_token != _SC(')')) { + if(_token != ')') { CommaExpr(); _fs->PopTarget(); } - Expect(_SC(')')); + Expect(')'); _fs->SnoozeOpt(); SQInteger expend = _fs->GetCurrentPos(); SQInteger expsize = (expend - expstart) + 1; @@ -973,20 +978,20 @@ public: void ForEachStatement() { SQObject idxname, valname; - Lex(); Expect(_SC('(')); valname = Expect(TK_IDENTIFIER); - if(_token == _SC(',')) { + Lex(); Expect('('); valname = Expect(TK_IDENTIFIER); + if(_token == ',') { idxname = valname; Lex(); valname = Expect(TK_IDENTIFIER); } else{ - idxname = _fs->CreateString(_SC("@INDEX@")); + idxname = _fs->CreateString("@INDEX@"); } Expect(TK_IN); //save the stack size SQInteger stacksize = _fs->GetStackSize(); //put the table in the stack(evaluate the table expression) - Expression(); Expect(_SC(')')); + Expression(); Expect(')'); SQInteger container = _fs->TopTarget(); //push the index local var SQInteger indexpos = _fs->PushLocalVariable(idxname); @@ -995,7 +1000,7 @@ public: SQInteger valuepos = _fs->PushLocalVariable(valname); _fs->AddInstruction(_OP_LOADNULLS, valuepos,1); //push reference index - SQInteger itrpos = _fs->PushLocalVariable(_fs->CreateString(_SC("@ITERATOR@"))); //use invalid id to make it inaccessible + SQInteger itrpos = _fs->PushLocalVariable(_fs->CreateString("@ITERATOR@")); //use invalid id to make it inaccessible _fs->AddInstruction(_OP_LOADNULLS, itrpos,1); SQInteger jmppos = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_FOREACH, container, 0, indexpos); @@ -1014,8 +1019,8 @@ public: } void SwitchStatement() { - Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); - Expect(_SC('{')); + Lex(); Expect('('); CommaExpr(); Expect(')'); + Expect('{'); SQInteger expr = _fs->TopTarget(); bool bfirst = true; SQInteger tonextcondjmp = -1; @@ -1030,7 +1035,7 @@ public: _fs->SetIntructionParam(tonextcondjmp, 1, _fs->GetCurrentPos() - tonextcondjmp); } //condition - Lex(); Expression(); Expect(_SC(':')); + Lex(); Expression(); Expect(':'); SQInteger trg = _fs->PopTarget(); _fs->AddInstruction(_OP_EQ, trg, trg, expr); _fs->AddInstruction(_OP_JZ, trg, 0); @@ -1049,13 +1054,13 @@ public: _fs->SetIntructionParam(tonextcondjmp, 1, _fs->GetCurrentPos() - tonextcondjmp); if(_token == TK_DEFAULT) { // _fs->AddLineInfos(_lex._currentline, _lineinfo); - Lex(); Expect(_SC(':')); + Lex(); Expect(':'); SQInteger stacksize = _fs->GetStackSize(); _last_stacksize = _fs->GetStackSize(); Statements(); _fs->SetStackSize(stacksize); } - Expect(_SC('}')); + Expect('}'); _fs->PopTarget(); __nbreaks__ = _fs->_unresolvedbreaks.size() - __nbreaks__; if(__nbreaks__ > 0)ResolveBreaks(_fs, __nbreaks__); @@ -1076,7 +1081,7 @@ public: _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); if(_token == TK_DOUBLE_COLON) Emit2ArgsOP(_OP_GET); } - Expect(_SC('(')); + Expect('('); CreateFunction(id); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, 0); EmitDerefOp(_OP_NEWSLOT); @@ -1090,13 +1095,13 @@ public: _exst._funcarg = false; PrefixedExpr(); es = PopExpState(); - if(es._deref == DEREF_NO_DEREF) Error(_SC("invalid class name")); + if(es._deref == DEREF_NO_DEREF) Error("invalid class name"); if(es._deref == DEREF_FIELD) { ClassExp(); EmitDerefOp(_OP_NEWSLOT); _fs->PopTarget(); } - else Error(_SC("cannot create a class in a local with the syntax(class )")); + else Error("cannot create a class in a local with the syntax(class )"); } SQObject ExpectScalar() { @@ -1126,12 +1131,12 @@ public: val._unVal.fFloat = -_lex._fvalue; break; default: - Error(_SC("scalar expected : integer,float")); + Error("scalar expected : integer,float"); val._type = OT_NULL; // Silent compile-warning } break; default: - Error(_SC("scalar expected : integer,float or string")); + Error("scalar expected : integer,float or string"); val._type = OT_NULL; // Silent compile-warning } Lex(); @@ -1142,14 +1147,14 @@ public: Lex(); SQObject id = Expect(TK_IDENTIFIER); - Expect(_SC('{')); + Expect('{'); SQObject table = _fs->CreateTable(); SQInteger nval = 0; - while(_token != _SC('}')) { + while(_token != '}') { SQObject key = Expect(TK_IDENTIFIER); SQObject val; - if(_token == _SC('=')) { + if(_token == '=') { Lex(); val = ExpectScalar(); } @@ -1165,7 +1170,7 @@ public: /*SQObjectPtr dummy; if(enums->Get(strongid,dummy)) { dummy.Null(); strongid.Null(); - Error(_SC("enumeration already exists")); + Error("enumeration already exists"); }*/ enums->NewSlot(SQObjectPtr(strongid),SQObjectPtr(table)); strongid.Null(); @@ -1189,7 +1194,7 @@ public: _fs->AddInstruction(_OP_JMP, 0, 0); SQInteger jmppos = _fs->GetCurrentPos(); _fs->SetIntructionParam(trappos, 1, (_fs->GetCurrentPos() - trappos)); - Expect(TK_CATCH); Expect(_SC('(')); exid = Expect(TK_IDENTIFIER); Expect(_SC(')')); + Expect(TK_CATCH); Expect('('); exid = Expect(TK_IDENTIFIER); Expect(')'); SQInteger stacksize = _fs->GetStackSize(); SQInteger ex_target = _fs->PushLocalVariable(exid); _fs->SetIntructionParam(trappos, 0, ex_target); @@ -1199,7 +1204,7 @@ public: } void FunctionExp(SQInteger ftype) { - Lex(); Expect(_SC('(')); + Lex(); Expect('('); CreateFunction(_null_); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, ftype == TK_FUNCTION?0:1); } @@ -1214,19 +1219,19 @@ public: if(_token == TK_ATTR_OPEN) { Lex(); _fs->AddInstruction(_OP_NEWTABLE, _fs->PushTarget()); - ParseTableOrClass(_SC(','),TK_ATTR_CLOSE); + ParseTableOrClass(',',TK_ATTR_CLOSE); attrs = _fs->TopTarget(); } - Expect(_SC('{')); + Expect('{'); if(attrs != -1) _fs->PopTarget(); if(base != -1) _fs->PopTarget(); _fs->AddInstruction(_OP_CLASS, _fs->PushTarget(), base, attrs); - ParseTableOrClass(_SC(';')); + ParseTableOrClass(';'); } void DelegateExpr() { Lex(); CommaExpr(); - Expect(_SC(':')); + Expect(':'); CommaExpr(); SQInteger table = _fs->PopTarget(), delegate = _fs->PopTarget(); _fs->AddInstruction(_OP_DELEGATE, _fs->PushTarget(), table, delegate); @@ -1239,9 +1244,9 @@ public: _exst._funcarg = false; PrefixedExpr(); es = PopExpState(); - if(es._deref == DEREF_NO_DEREF) Error(_SC("can't delete an expression")); + if(es._deref == DEREF_NO_DEREF) Error("can't delete an expression"); if(es._deref == DEREF_FIELD) Emit2ArgsOP(_OP_DELETE); - else Error(_SC("cannot delete a local")); + else Error("cannot delete a local"); } void PrefixIncDec(SQInteger token) { @@ -1263,46 +1268,46 @@ public: SQFuncState *funcstate = _fs->PushChildState(_ss(_vm)); funcstate->_name = name; SQObject paramname; - funcstate->AddParameter(_fs->CreateString(_SC("this"))); + funcstate->AddParameter(_fs->CreateString("this")); funcstate->_sourcename = _sourcename; SQInteger defparams = 0; - while(_token!=_SC(')')) { + while(_token!=')') { if(_token == TK_VARPARAMS) { - if(defparams > 0) Error(_SC("function with default parameters cannot have variable number of parameters")); + if(defparams > 0) Error("function with default parameters cannot have variable number of parameters"); funcstate->_varparams = true; Lex(); - if(_token != _SC(')')) Error(_SC("expected ')'")); + if(_token != ')') Error("expected ')'"); break; } else { paramname = Expect(TK_IDENTIFIER); funcstate->AddParameter(paramname); - if(_token == _SC('=')) { + if(_token == '=') { Lex(); Expression(); funcstate->AddDefaultParam(_fs->TopTarget()); defparams++; } else { - if(defparams > 0) Error(_SC("expected '='")); + if(defparams > 0) Error("expected '='"); } - if(_token == _SC(',')) Lex(); - else if(_token != _SC(')')) Error(_SC("expected ')' or ','")); + if(_token == ',') Lex(); + else if(_token != ')') Error("expected ')' or ','"); } } - Expect(_SC(')')); + Expect(')'); for(SQInteger n = 0; n < defparams; n++) { _fs->PopTarget(); } //outer values - if(_token == _SC(':')) { - Lex(); Expect(_SC('(')); - while(_token != _SC(')')) { + if(_token == ':') { + Lex(); Expect('('); + while(_token != ')') { paramname = Expect(TK_IDENTIFIER); //outers are treated as implicit local variables funcstate->AddOuterValue(paramname); - if(_token == _SC(',')) Lex(); - else if(_token != _SC(')')) Error(_SC("expected ')' or ','")); + if(_token == ',') Lex(); + else if(_token != ')') Error("expected ')' or ','"); } Lex(); } @@ -1310,7 +1315,7 @@ public: SQFuncState *currchunk = _fs; _fs = funcstate; Statement(); - funcstate->AddLineInfos(_lex._prevtoken == _SC('\n')?_lex._lasttokenline:_lex._currentline, _lineinfo, true); + funcstate->AddLineInfos(_lex._prevtoken == '\n'?_lex._lasttokenline:_lex._currentline, _lineinfo, true); funcstate->AddInstruction(_OP_RETURN, -1); funcstate->SetStackSize(0); //_fs->->_stacksize = _fs->_stacksize; diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.h b/src/3rdparty/squirrel/squirrel/sqcompiler.h index dd55888b6e..b29917390b 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.h +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.h @@ -71,7 +71,12 @@ struct SQVM; #define TK_ENUM 323 #define TK_CONST 324 - +/* MSVC doesn't like NORETURN for function prototypes, but we kinda need it for GCC. */ +#if defined(_MSC_VER) typedef void(*CompilerErrorFunc)(void *ud, const SQChar *s); +#else +typedef NORETURN void(*CompilerErrorFunc)(void *ud, const SQChar *s); +#endif + bool Compile(SQVM *vm, SQLEXREADFUNC rg, SQUserPointer up, const SQChar *sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo); #endif //_SQCOMPILER_H_ diff --git a/src/3rdparty/squirrel/squirrel/sqdebug.cpp b/src/3rdparty/squirrel/squirrel/sqdebug.cpp index c683697d7c..74272e432a 100644 --- a/src/3rdparty/squirrel/squirrel/sqdebug.cpp +++ b/src/3rdparty/squirrel/squirrel/sqdebug.cpp @@ -1,14 +1,21 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include #include "sqpcheader.h" -#include #include "sqvm.h" #include "sqfuncproto.h" #include "sqclosure.h" #include "sqstring.h" +#include "../../../core/alloc_func.hpp" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) { SQInteger cssize = v->_callsstacksize; @@ -18,12 +25,12 @@ SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) SQClosure *c = _closure(ci._closure); SQFunctionProto *proto = _funcproto(c->_function); fi->funcid = proto; - fi->name = type(proto->_name) == OT_STRING?_stringval(proto->_name):_SC("unknown"); - fi->source = type(proto->_name) == OT_STRING?_stringval(proto->_sourcename):_SC("unknown"); + fi->name = type(proto->_name) == OT_STRING?_stringval(proto->_name):"unknown"; + fi->source = type(proto->_name) == OT_STRING?_stringval(proto->_sourcename):"unknown"; return SQ_OK; } } - return sq_throwerror(v,_SC("the object is not a closure")); + return sq_throwerror(v,"the object is not a closure"); } SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si) @@ -43,8 +50,8 @@ SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si) } break; case OT_NATIVECLOSURE: - si->source = _SC("NATIVE"); - si->funcname = _SC("unknown"); + si->source = "NATIVE"; + si->funcname = "unknown"; if(type(_nativeclosure(ci._closure)->_name) == OT_STRING) si->funcname = _stringval(_nativeclosure(ci._closure)->_name); si->line = -1; @@ -60,9 +67,12 @@ void SQVM::Raise_Error(const SQChar *s, ...) { va_list vl; va_start(vl, s); - scvsprintf(_sp(rsl((SQInteger)scstrlen(s)+(NUMBER_MAX_CHAR*2))), s, vl); + size_t len = strlen(s)+(NUMBER_MAX_CHAR*2); + char *buffer = MallocT(len + 1); + vseprintf(buffer, buffer + len, s, vl); va_end(vl); - _lasterror = SQString::Create(_ss(this),_spval,-1); + _lasterror = SQString::Create(_ss(this),buffer,-1); + free(buffer); } void SQVM::Raise_Error(SQObjectPtr &desc) @@ -72,20 +82,15 @@ void SQVM::Raise_Error(SQObjectPtr &desc) SQString *SQVM::PrintObjVal(const SQObject &o) { + char buf[NUMBER_MAX_CHAR+1]; switch(type(o)) { case OT_STRING: return _string(o); case OT_INTEGER: -#if defined(_SQ64) - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%ld"), _integer(o)); -#else - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%d"), _integer(o)); -#endif - return SQString::Create(_ss(this), _spval); - break; + seprintf(buf, lastof(buf), OTTD_PRINTF64, _integer(o)); + return SQString::Create(_ss(this), buf); case OT_FLOAT: - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%.14g"), _float(o)); - return SQString::Create(_ss(this), _spval); - break; + seprintf(buf, lastof(buf), "%.14g", _float(o)); + return SQString::Create(_ss(this), buf); default: return SQString::Create(_ss(this), GetTypeName(o)); } @@ -94,28 +99,28 @@ SQString *SQVM::PrintObjVal(const SQObject &o) void SQVM::Raise_IdxError(const SQObject &o) { SQObjectPtr oval = PrintObjVal(o); - Raise_Error(_SC("the index '%.50s' does not exist"), _stringval(oval)); + Raise_Error("the index '%.50s' does not exist", _stringval(oval)); } void SQVM::Raise_CompareError(const SQObject &o1, const SQObject &o2) { SQObjectPtr oval1 = PrintObjVal(o1), oval2 = PrintObjVal(o2); - Raise_Error(_SC("comparsion between '%.50s' and '%.50s'"), _stringval(oval1), _stringval(oval2)); + Raise_Error("comparsion between '%.50s' and '%.50s'", _stringval(oval1), _stringval(oval2)); } void SQVM::Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type) { - SQObjectPtr exptypes = SQString::Create(_ss(this), _SC(""), -1); + SQObjectPtr exptypes = SQString::Create(_ss(this), "", -1); SQInteger found = 0; for(SQInteger i=0; i<16; i++) { SQInteger mask = 0x00000001 << i; if(typemask & (mask)) { - if(found>0) StringCat(exptypes,SQString::Create(_ss(this), _SC("|"), -1), exptypes); + if(found>0) StringCat(exptypes,SQString::Create(_ss(this), "|", -1), exptypes); found ++; StringCat(exptypes,SQString::Create(_ss(this), IdType2Name((SQObjectType)mask), -1), exptypes); } } - Raise_Error(_SC("parameter %d has an invalid type '%s' ; expected: '%s'"), nparam, IdType2Name((SQObjectType)type), _stringval(exptypes)); + Raise_Error("parameter %d has an invalid type '%s' ; expected: '%s'", nparam, IdType2Name((SQObjectType)type), _stringval(exptypes)); } diff --git a/src/3rdparty/squirrel/squirrel/sqfuncproto.h b/src/3rdparty/squirrel/squirrel/sqfuncproto.h index faac9e925a..e58ccd2994 100644 --- a/src/3rdparty/squirrel/squirrel/sqfuncproto.h +++ b/src/3rdparty/squirrel/squirrel/sqfuncproto.h @@ -7,13 +7,13 @@ enum SQOuterType { otLOCAL = 0, otSYMBOL = 1, - otOUTER = 2 + otOUTER = 2, }; struct SQOuterVar { - SQOuterVar(){} + SQOuterVar() : _type(otLOCAL) {} SQOuterVar(const SQObjectPtr &name,const SQObjectPtr &src,SQOuterType t) { _name = name; @@ -33,7 +33,7 @@ struct SQOuterVar struct SQLocalVarInfo { - SQLocalVarInfo():_start_op(0),_end_op(0){} + SQLocalVarInfo():_start_op(0),_end_op(0), _pos(0){} SQLocalVarInfo(const SQLocalVarInfo &lvi) { _name=lvi._name; @@ -73,9 +73,37 @@ typedef sqvector SQLineInfoVec; struct SQFunctionProto : public SQRefCounted { private: - SQFunctionProto(){ - _stacksize=0; - _bgenerator=false;} + SQFunctionProto(SQInteger ninstructions, + SQInteger nliterals,SQInteger nparameters, + SQInteger nfunctions,SQInteger noutervalues, + SQInteger nlineinfos,SQInteger nlocalvarinfos,SQInteger ndefaultparams) + { + _stacksize=0; + _bgenerator=false; + _varparams = false; + _ninstructions = ninstructions; + _literals = (SQObjectPtr*)&_instructions[ninstructions]; + _nliterals = nliterals; + _parameters = (SQObjectPtr*)&_literals[nliterals]; + _nparameters = nparameters; + _functions = (SQObjectPtr*)&_parameters[nparameters]; + _nfunctions = nfunctions; + _outervalues = (SQOuterVar*)&_functions[nfunctions]; + _noutervalues = noutervalues; + _lineinfos = (SQLineInfo *)&_outervalues[noutervalues]; + _nlineinfos = nlineinfos; + _localvarinfos = (SQLocalVarInfo *)&_lineinfos[nlineinfos]; + _nlocalvarinfos = nlocalvarinfos; + _defaultparams = (SQInteger *)&_localvarinfos[nlocalvarinfos]; + _ndefaultparams = ndefaultparams; + + _CONSTRUCT_VECTOR(SQObjectPtr,_nliterals,_literals); + _CONSTRUCT_VECTOR(SQObjectPtr,_nparameters,_parameters); + _CONSTRUCT_VECTOR(SQObjectPtr,_nfunctions,_functions); + _CONSTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues); + //_CONSTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers + _CONSTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos); + } public: static SQFunctionProto *Create(SQInteger ninstructions, SQInteger nliterals,SQInteger nparameters, @@ -85,29 +113,7 @@ public: SQFunctionProto *f; //I compact the whole class and members in a single memory allocation f = (SQFunctionProto *)sq_vm_malloc(_FUNC_SIZE(ninstructions,nliterals,nparameters,nfunctions,noutervalues,nlineinfos,nlocalvarinfos,ndefaultparams)); - new (f) SQFunctionProto; - f->_ninstructions = ninstructions; - f->_literals = (SQObjectPtr*)&f->_instructions[ninstructions]; - f->_nliterals = nliterals; - f->_parameters = (SQObjectPtr*)&f->_literals[nliterals]; - f->_nparameters = nparameters; - f->_functions = (SQObjectPtr*)&f->_parameters[nparameters]; - f->_nfunctions = nfunctions; - f->_outervalues = (SQOuterVar*)&f->_functions[nfunctions]; - f->_noutervalues = noutervalues; - f->_lineinfos = (SQLineInfo *)&f->_outervalues[noutervalues]; - f->_nlineinfos = nlineinfos; - f->_localvarinfos = (SQLocalVarInfo *)&f->_lineinfos[nlineinfos]; - f->_nlocalvarinfos = nlocalvarinfos; - f->_defaultparams = (SQInteger *)&f->_localvarinfos[nlocalvarinfos]; - f->_ndefaultparams = ndefaultparams; - - _CONSTRUCT_VECTOR(SQObjectPtr,f->_nliterals,f->_literals); - _CONSTRUCT_VECTOR(SQObjectPtr,f->_nparameters,f->_parameters); - _CONSTRUCT_VECTOR(SQObjectPtr,f->_nfunctions,f->_functions); - _CONSTRUCT_VECTOR(SQOuterVar,f->_noutervalues,f->_outervalues); - //_CONSTRUCT_VECTOR(SQLineInfo,f->_nlineinfos,f->_lineinfos); //not required are 2 integers - _CONSTRUCT_VECTOR(SQLocalVarInfo,f->_nlocalvarinfos,f->_localvarinfos); + new (f) SQFunctionProto(ninstructions, nliterals, nparameters, nfunctions, noutervalues, nlineinfos, nlocalvarinfos, ndefaultparams); return f; } void Release(){ diff --git a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp index b4f3541731..5415b566e8 100644 --- a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp @@ -1,6 +1,9 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include "sqcompiler.h" #include "sqfuncproto.h" @@ -9,84 +12,82 @@ #include "sqopcodes.h" #include "sqfuncstate.h" +#include "../../../safeguards.h" + #ifdef _DEBUG_DUMP SQInstructionDesc g_InstrDesc[]={ - {_SC("_OP_LINE")}, - {_SC("_OP_LOAD")}, - {_SC("_OP_LOADINT")}, - {_SC("_OP_LOADFLOAT")}, - {_SC("_OP_DLOAD")}, - {_SC("_OP_TAILCALL")}, - {_SC("_OP_CALL")}, - {_SC("_OP_PREPCALL")}, - {_SC("_OP_PREPCALLK")}, - {_SC("_OP_GETK")}, - {_SC("_OP_MOVE")}, - {_SC("_OP_NEWSLOT")}, - {_SC("_OP_DELETE")}, - {_SC("_OP_SET")}, - {_SC("_OP_GET")}, - {_SC("_OP_EQ")}, - {_SC("_OP_NE")}, - {_SC("_OP_ARITH")}, - {_SC("_OP_BITW")}, - {_SC("_OP_RETURN")}, - {_SC("_OP_LOADNULLS")}, - {_SC("_OP_LOADROOTTABLE")}, - {_SC("_OP_LOADBOOL")}, - {_SC("_OP_DMOVE")}, - {_SC("_OP_JMP")}, - {_SC("_OP_JNZ")}, - {_SC("_OP_JZ")}, - {_SC("_OP_LOADFREEVAR")}, - {_SC("_OP_VARGC")}, - {_SC("_OP_GETVARGV")}, - {_SC("_OP_NEWTABLE")}, - {_SC("_OP_NEWARRAY")}, - {_SC("_OP_APPENDARRAY")}, - {_SC("_OP_GETPARENT")}, - {_SC("_OP_COMPARITH")}, - {_SC("_OP_COMPARITHL")}, - {_SC("_OP_INC")}, - {_SC("_OP_INCL")}, - {_SC("_OP_PINC")}, - {_SC("_OP_PINCL")}, - {_SC("_OP_CMP")}, - {_SC("_OP_EXISTS")}, - {_SC("_OP_INSTANCEOF")}, - {_SC("_OP_AND")}, - {_SC("_OP_OR")}, - {_SC("_OP_NEG")}, - {_SC("_OP_NOT")}, - {_SC("_OP_BWNOT")}, - {_SC("_OP_CLOSURE")}, - {_SC("_OP_YIELD")}, - {_SC("_OP_RESUME")}, - {_SC("_OP_FOREACH")}, - {_SC("_OP_POSTFOREACH")}, - {_SC("_OP_DELEGATE")}, - {_SC("_OP_CLONE")}, - {_SC("_OP_TYPEOF")}, - {_SC("_OP_PUSHTRAP")}, - {_SC("_OP_POPTRAP")}, - {_SC("_OP_THROW")}, - {_SC("_OP_CLASS")}, - {_SC("_OP_NEWSLOTA")}, - {_SC("_OP_SCOPE_END")} + {"_OP_LINE"}, + {"_OP_LOAD"}, + {"_OP_LOADINT"}, + {"_OP_LOADFLOAT"}, + {"_OP_DLOAD"}, + {"_OP_TAILCALL"}, + {"_OP_CALL"}, + {"_OP_PREPCALL"}, + {"_OP_PREPCALLK"}, + {"_OP_GETK"}, + {"_OP_MOVE"}, + {"_OP_NEWSLOT"}, + {"_OP_DELETE"}, + {"_OP_SET"}, + {"_OP_GET"}, + {"_OP_EQ"}, + {"_OP_NE"}, + {"_OP_ARITH"}, + {"_OP_BITW"}, + {"_OP_RETURN"}, + {"_OP_LOADNULLS"}, + {"_OP_LOADROOTTABLE"}, + {"_OP_LOADBOOL"}, + {"_OP_DMOVE"}, + {"_OP_JMP"}, + {"_OP_JNZ"}, + {"_OP_JZ"}, + {"_OP_LOADFREEVAR"}, + {"_OP_VARGC"}, + {"_OP_GETVARGV"}, + {"_OP_NEWTABLE"}, + {"_OP_NEWARRAY"}, + {"_OP_APPENDARRAY"}, + {"_OP_GETPARENT"}, + {"_OP_COMPARITH"}, + {"_OP_COMPARITHL"}, + {"_OP_INC"}, + {"_OP_INCL"}, + {"_OP_PINC"}, + {"_OP_PINCL"}, + {"_OP_CMP"}, + {"_OP_EXISTS"}, + {"_OP_INSTANCEOF"}, + {"_OP_AND"}, + {"_OP_OR"}, + {"_OP_NEG"}, + {"_OP_NOT"}, + {"_OP_BWNOT"}, + {"_OP_CLOSURE"}, + {"_OP_YIELD"}, + {"_OP_RESUME"}, + {"_OP_FOREACH"}, + {"_OP_POSTFOREACH"}, + {"_OP_DELEGATE"}, + {"_OP_CLONE"}, + {"_OP_TYPEOF"}, + {"_OP_PUSHTRAP"}, + {"_OP_POPTRAP"}, + {"_OP_THROW"}, + {"_OP_CLASS"}, + {"_OP_NEWSLOTA"}, + {"_OP_SCOPE_END"} }; #endif void DumpLiteral(SQObjectPtr &o) { switch(type(o)){ - case OT_STRING: scprintf(_SC("\"%s\""),_stringval(o));break; - case OT_FLOAT: scprintf(_SC("{%f}"),_float(o));break; -#if defined(_SQ64) - case OT_INTEGER: scprintf(_SC("{%ld}"),_integer(o));break; -#else - case OT_INTEGER: scprintf(_SC("{%d}"),_integer(o));break; -#endif - case OT_BOOL: scprintf(_SC("%s"),_integer(o)?_SC("true"):_SC("false"));break; - default: scprintf(_SC("(%s %p)"),GetTypeName(o),(void*)_rawval(o));break; break; //shut up compiler + case OT_STRING: printf("\"%s\"",_stringval(o));break; + case OT_FLOAT: printf("{%f}",_float(o));break; + case OT_INTEGER: printf("{" OTTD_PRINTF64 "}",_integer(o));break; + case OT_BOOL: printf("%s",_integer(o)?"true":"false");break; + default: printf("(%s %p)",GetTypeName(o),(void*)_rawval(o));break; break; //shut up compiler } } @@ -119,11 +120,11 @@ void SQFuncState::Dump(SQFunctionProto *func) { SQUnsignedInteger n=0,i; SQInteger si; - scprintf(_SC("SQInstruction sizeof %d\n"),sizeof(SQInstruction)); - scprintf(_SC("SQObject sizeof %d\n"),sizeof(SQObject)); - scprintf(_SC("--------------------------------------------------------------------\n")); - scprintf(_SC("*****FUNCTION [%s]\n"),type(func->_name)==OT_STRING?_stringval(func->_name):_SC("unknown")); - scprintf(_SC("-----LITERALS\n")); + printf("SQInstruction sizeof %d\n",sizeof(SQInstruction)); + printf("SQObject sizeof %d\n",sizeof(SQObject)); + printf("--------------------------------------------------------------------\n"); + printf("*****FUNCTION [%s]\n",type(func->_name)==OT_STRING?_stringval(func->_name):"unknown"); + printf("-----LITERALS\n"); SQObjectPtr refidx,key,val; SQInteger idx; SQObjectPtrVec templiterals; @@ -133,43 +134,43 @@ void SQFuncState::Dump(SQFunctionProto *func) templiterals[_integer(val)]=key; } for(i=0;i>\n")); + printf("<>\n"); n=0; for(i=0;i<_parameters.size();i++){ - scprintf(_SC("[%d] "),n); + printf("[%d] ",n); DumpLiteral(_parameters[i]); - scprintf(_SC("\n")); + printf("\n"); n++; } - scprintf(_SC("-----LOCALS\n")); + printf("-----LOCALS\n"); for(si=0;si_nlocalvarinfos;si++){ SQLocalVarInfo lvi=func->_localvarinfos[si]; - scprintf(_SC("[%d] %s \t%d %d\n"),lvi._pos,_stringval(lvi._name),lvi._start_op,lvi._end_op); + printf("[%d] %s \t%d %d\n",lvi._pos,_stringval(lvi._name),lvi._start_op,lvi._end_op); n++; } - scprintf(_SC("-----LINE INFO\n")); + printf("-----LINE INFO\n"); for(i=0;i<_lineinfos.size();i++){ SQLineInfo li=_lineinfos[i]; - scprintf(_SC("op [%d] line [%d] \n"),li._op,li._line); + printf("op [%d] line [%d] \n",li._op,li._line); n++; } - scprintf(_SC("-----dump\n")); + printf("-----dump\n"); n=0; for(i=0;i<_instructions.size();i++){ SQInstruction &inst=_instructions[i]; if(inst.op==_OP_LOAD || inst.op==_OP_DLOAD || inst.op==_OP_PREPCALLK || inst.op==_OP_GETK ){ SQInteger lidx = inst._arg1; - scprintf(_SC("[%03d] %15s %d "),n,g_InstrDesc[inst.op].name,inst._arg0); + printf("[%03d] %15s %d ",n,g_InstrDesc[inst.op].name,inst._arg0); if(lidx >= 0xFFFFFFFF) - scprintf(_SC("null")); + printf("null"); else { SQInteger refidx; SQObjectPtr val,key,refo; @@ -179,13 +180,13 @@ void SQFuncState::Dump(SQFunctionProto *func) DumpLiteral(key); } if(inst.op != _OP_DLOAD) { - scprintf(_SC(" %d %d \n"),inst._arg2,inst._arg3); + printf(" %d %d \n",inst._arg2,inst._arg3); } else { - scprintf(_SC(" %d "),inst._arg2); + printf(" %d ",inst._arg2); lidx = inst._arg3; if(lidx >= 0xFFFFFFFF) - scprintf(_SC("null")); + printf("null"); else { SQInteger refidx; SQObjectPtr val,key,refo; @@ -193,23 +194,23 @@ void SQFuncState::Dump(SQFunctionProto *func) refo = refidx; } DumpLiteral(key); - scprintf(_SC("\n")); + printf("\n"); } } } else if(inst.op==_OP_LOADFLOAT) { - scprintf(_SC("[%03d] %15s %d %f %d %d\n"),n,g_InstrDesc[inst.op].name,inst._arg0,*((SQFloat*)&inst._arg1),inst._arg2,inst._arg3); + printf("[%03d] %15s %d %f %d %d\n",n,g_InstrDesc[inst.op].name,inst._arg0,*((SQFloat*)&inst._arg1),inst._arg2,inst._arg3); } else if(inst.op==_OP_ARITH){ - scprintf(_SC("[%03d] %15s %d %d %d %c\n"),n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); + printf("[%03d] %15s %d %d %d %c\n",n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); } else - scprintf(_SC("[%03d] %15s %d %d %d %d\n"),n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); + printf("[%03d] %15s %d %d %d %d\n",n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); n++; } - scprintf(_SC("-----\n")); - scprintf(_SC("stack size[%d]\n"),func->_stacksize); - scprintf(_SC("--------------------------------------------------------------------\n\n")); + printf("-----\n"); + printf("stack size[%d]\n",func->_stacksize); + printf("--------------------------------------------------------------------\n\n"); } #endif @@ -233,7 +234,7 @@ SQInteger SQFuncState::GetConstant(const SQObject &cons) _nliterals++; if(_nliterals > MAX_LITERALS) { val.Null(); - Error(_SC("internal compiler error: too many literals")); + Error("internal compiler error: too many literals"); } } return _integer(val); @@ -262,7 +263,7 @@ SQInteger SQFuncState::AllocStackPos() SQInteger npos=_vlocals.size(); _vlocals.push_back(SQLocalVarInfo()); if(_vlocals.size()>((SQUnsignedInteger)_stacksize)) { - if(_stacksize>MAX_FUNC_STACKSIZE) Error(_SC("internal compiler error: too many locals")); + if(_stacksize>MAX_FUNC_STACKSIZE) Error("internal compiler error: too many locals"); _stacksize=_vlocals.size(); } return npos; @@ -418,7 +419,6 @@ void SQFuncState::AddInstruction(SQInstruction &i) break; case _OP_GET: if( pi.op == _OP_LOAD && pi._arg0 == i._arg2 && (!IsLocal(pi._arg0))){ - pi._arg1 = pi._arg1; pi._arg2 = (unsigned char)i._arg1; pi.op = _OP_GETK; pi._arg0 = i._arg0; @@ -430,7 +430,6 @@ void SQFuncState::AddInstruction(SQInstruction &i) if( pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){ pi.op = _OP_PREPCALLK; pi._arg0 = i._arg0; - pi._arg1 = pi._arg1; pi._arg2 = i._arg2; pi._arg3 = i._arg3; return; @@ -440,7 +439,6 @@ void SQFuncState::AddInstruction(SQInstruction &i) if(pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){ pi.op = _OP_APPENDARRAY; pi._arg0 = i._arg0; - pi._arg1 = pi._arg1; pi._arg2 = MAX_FUNC_STACKSIZE; pi._arg3 = MAX_FUNC_STACKSIZE; return; @@ -475,7 +473,6 @@ void SQFuncState::AddInstruction(SQInstruction &i) { pi.op = i.op; pi._arg0 = i._arg0; - pi._arg1 = pi._arg1; pi._arg2 = i._arg2; pi._arg3 = MAX_FUNC_STACKSIZE; return; @@ -541,7 +538,7 @@ SQFunctionProto *SQFuncState::BuildProto() for(SQUnsignedInteger no = 0; no < _lineinfos.size(); no++) f->_lineinfos[no] = _lineinfos[no]; for(SQUnsignedInteger no = 0; no < _defaultparams.size(); no++) f->_defaultparams[no] = _defaultparams[no]; - memcpy(f->_instructions,&_instructions[0],_instructions.size()*sizeof(SQInstruction)); + memcpy(f->_instructions,&_instructions[0],(size_t)_instructions.size()*sizeof(SQInstruction)); f->_varparams = _varparams; diff --git a/src/3rdparty/squirrel/squirrel/sqlexer.cpp b/src/3rdparty/squirrel/squirrel/sqlexer.cpp index c03048e9a2..77c487a269 100644 --- a/src/3rdparty/squirrel/squirrel/sqlexer.cpp +++ b/src/3rdparty/squirrel/squirrel/sqlexer.cpp @@ -1,30 +1,41 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include -#include #include "sqtable.h" #include "sqstring.h" #include "sqcompiler.h" #include "sqlexer.h" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + #define CUR_CHAR (_currdata) #define RETURN_TOKEN(t) { _prevtoken = _curtoken; _curtoken = t; return t;} #define IS_EOB() (CUR_CHAR <= SQUIRREL_EOB) #define NEXT() {Next();_currentcolumn++;} -#define INIT_TEMP_STRING() { _longstr.resize(0);} -#define APPEND_CHAR(c) { _longstr.push_back(c);} -#define TERMINATE_BUFFER() {_longstr.push_back(_SC('\0'));} -#define ADD_KEYWORD(key,id) _keywords->NewSlot( SQString::Create(ss, _SC(#key)) ,SQInteger(id)) +#define ADD_KEYWORD(key,id) _keywords->NewSlot( SQString::Create(ss, #key) ,SQInteger(id)) -SQLexer::SQLexer(){} SQLexer::~SQLexer() { _keywords->Release(); } -void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,CompilerErrorFunc efunc,void *ed) +void SQLexer::APPEND_CHAR(WChar c) +{ + char buf[4]; + size_t chars = Utf8Encode(buf, c); + for (size_t i = 0; i < chars; i++) { + _longstr.push_back(buf[i]); + } +} + +SQLexer::SQLexer(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,CompilerErrorFunc efunc,void *ed) { _errfunc = efunc; _errtarget = ed; @@ -74,20 +85,26 @@ void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,Compile _lasttokenline = _currentline = 1; _currentcolumn = 0; _prevtoken = -1; + _curtoken = -1; + + _svalue = NULL; + _nvalue = 0; + _fvalue = 0; + Next(); } -void SQLexer::Error(const SQChar *err) +NORETURN void SQLexer::Error(const SQChar *err) { _errfunc(_errtarget,err); } void SQLexer::Next() { - SQInteger t = _readf(_up); - if(t > MAX_CHAR) Error(_SC("Invalid character")); + WChar t = _readf(_up); + if(t > MAX_CHAR) Error("Invalid character"); if(t != 0) { - _currdata = (LexChar)t; + _currdata = t; return; } _currdata = SQUIRREL_EOB; @@ -110,9 +127,9 @@ void SQLexer::LexBlockComment() bool done = false; while(!done) { switch(CUR_CHAR) { - case _SC('*'): { NEXT(); if(CUR_CHAR == _SC('/')) { done = true; NEXT(); }}; continue; - case _SC('\n'): _currentline++; NEXT(); continue; - case SQUIRREL_EOB: Error(_SC("missing \"*/\" in comment")); + case '*': { NEXT(); if(CUR_CHAR == '/') { done = true; NEXT(); }}; continue; + case '\n': _currentline++; NEXT(); continue; + case SQUIRREL_EOB: Error("missing \"*/\" in comment"); default: NEXT(); } } @@ -123,136 +140,134 @@ SQInteger SQLexer::Lex() _lasttokenline = _currentline; while(CUR_CHAR != SQUIRREL_EOB) { switch(CUR_CHAR){ - case _SC('\t'): case _SC('\r'): case _SC(' '): NEXT(); continue; - case _SC('\n'): + case '\t': case '\r': case ' ': NEXT(); continue; + case '\n': _currentline++; _prevtoken=_curtoken; - _curtoken=_SC('\n'); + _curtoken='\n'; NEXT(); _currentcolumn=1; continue; - case _SC('/'): + case '/': NEXT(); switch(CUR_CHAR){ - case _SC('*'): + case '*': NEXT(); LexBlockComment(); continue; - case _SC('/'): - do { NEXT(); } while (CUR_CHAR != _SC('\n') && (!IS_EOB())); + case '/': + do { NEXT(); } while (CUR_CHAR != '\n' && (!IS_EOB())); continue; - case _SC('='): + case '=': NEXT(); RETURN_TOKEN(TK_DIVEQ); - continue; - case _SC('>'): + case '>': NEXT(); RETURN_TOKEN(TK_ATTR_CLOSE); - continue; default: RETURN_TOKEN('/'); } - case _SC('='): + case '=': NEXT(); - if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('=') } + if (CUR_CHAR != '='){ RETURN_TOKEN('=') } else { NEXT(); RETURN_TOKEN(TK_EQ); } - case _SC('<'): + case '<': NEXT(); - if ( CUR_CHAR == _SC('=') ) { NEXT(); RETURN_TOKEN(TK_LE) } - else if ( CUR_CHAR == _SC('-') ) { NEXT(); RETURN_TOKEN(TK_NEWSLOT); } - else if ( CUR_CHAR == _SC('<') ) { NEXT(); RETURN_TOKEN(TK_SHIFTL); } - else if ( CUR_CHAR == _SC('/') ) { NEXT(); RETURN_TOKEN(TK_ATTR_OPEN); } - //else if ( CUR_CHAR == _SC('[') ) { NEXT(); ReadMultilineString(); RETURN_TOKEN(TK_STRING_LITERAL); } + if ( CUR_CHAR == '=' ) { NEXT(); RETURN_TOKEN(TK_LE) } + else if ( CUR_CHAR == '-' ) { NEXT(); RETURN_TOKEN(TK_NEWSLOT); } + else if ( CUR_CHAR == '<' ) { NEXT(); RETURN_TOKEN(TK_SHIFTL); } + else if ( CUR_CHAR == '/' ) { NEXT(); RETURN_TOKEN(TK_ATTR_OPEN); } + //else if ( CUR_CHAR == '[' ) { NEXT(); ReadMultilineString(); RETURN_TOKEN(TK_STRING_LITERAL); } else { RETURN_TOKEN('<') } - case _SC('>'): + case '>': NEXT(); - if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_GE);} - else if(CUR_CHAR == _SC('>')){ + if (CUR_CHAR == '='){ NEXT(); RETURN_TOKEN(TK_GE);} + else if(CUR_CHAR == '>'){ NEXT(); - if(CUR_CHAR == _SC('>')){ + if(CUR_CHAR == '>'){ NEXT(); RETURN_TOKEN(TK_USHIFTR); } RETURN_TOKEN(TK_SHIFTR); } else { RETURN_TOKEN('>') } - case _SC('!'): + case '!': NEXT(); - if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('!')} + if (CUR_CHAR != '='){ RETURN_TOKEN('!')} else { NEXT(); RETURN_TOKEN(TK_NE); } - case _SC('@'): { + case '@': { SQInteger stype; NEXT(); - if(CUR_CHAR != _SC('"')) - Error(_SC("string expected")); - if((stype=ReadString(_SC('"'),true))!=-1) { + if(CUR_CHAR != '"') + Error("string expected"); + if((stype=ReadString('"',true))!=-1) { RETURN_TOKEN(stype); } - Error(_SC("error parsing the string")); + Error("error parsing the string"); } - case _SC('"'): - case _SC('\''): { + case '"': + case '\'': { SQInteger stype; if((stype=ReadString(CUR_CHAR,false))!=-1){ RETURN_TOKEN(stype); } - Error(_SC("error parsing the string")); + Error("error parsing the string"); } - case _SC('{'): case _SC('}'): case _SC('('): case _SC(')'): case _SC('['): case _SC(']'): - case _SC(';'): case _SC(','): case _SC('?'): case _SC('^'): case _SC('~'): + case '{': case '}': case '(': case ')': case '[': case ']': + case ';': case ',': case '?': case '^': case '~': {SQInteger ret = CUR_CHAR; NEXT(); RETURN_TOKEN(ret); } - case _SC('.'): + case '.': NEXT(); - if (CUR_CHAR != _SC('.')){ RETURN_TOKEN('.') } + if (CUR_CHAR != '.'){ RETURN_TOKEN('.') } NEXT(); - if (CUR_CHAR != _SC('.')){ Error(_SC("invalid token '..'")); } + if (CUR_CHAR != '.'){ Error("invalid token '..'"); } NEXT(); RETURN_TOKEN(TK_VARPARAMS); - case _SC('&'): + case '&': NEXT(); - if (CUR_CHAR != _SC('&')){ RETURN_TOKEN('&') } + if (CUR_CHAR != '&'){ RETURN_TOKEN('&') } else { NEXT(); RETURN_TOKEN(TK_AND); } - case _SC('|'): + case '|': NEXT(); - if (CUR_CHAR != _SC('|')){ RETURN_TOKEN('|') } + if (CUR_CHAR != '|'){ RETURN_TOKEN('|') } else { NEXT(); RETURN_TOKEN(TK_OR); } - case _SC(':'): + case ':': NEXT(); - if (CUR_CHAR != _SC(':')){ RETURN_TOKEN(':') } + if (CUR_CHAR != ':'){ RETURN_TOKEN(':') } else { NEXT(); RETURN_TOKEN(TK_DOUBLE_COLON); } - case _SC('*'): + case '*': NEXT(); - if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MULEQ);} + if (CUR_CHAR == '='){ NEXT(); RETURN_TOKEN(TK_MULEQ);} else RETURN_TOKEN('*'); - case _SC('%'): + case '%': NEXT(); - if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MODEQ);} + if (CUR_CHAR == '='){ NEXT(); RETURN_TOKEN(TK_MODEQ);} else RETURN_TOKEN('%'); - case _SC('-'): + case '-': NEXT(); - if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MINUSEQ);} - else if (CUR_CHAR == _SC('-')){ NEXT(); RETURN_TOKEN(TK_MINUSMINUS);} + if (CUR_CHAR == '='){ NEXT(); RETURN_TOKEN(TK_MINUSEQ);} + else if (CUR_CHAR == '-'){ NEXT(); RETURN_TOKEN(TK_MINUSMINUS);} else RETURN_TOKEN('-'); - case _SC('+'): + case '+': NEXT(); - if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_PLUSEQ);} - else if (CUR_CHAR == _SC('+')){ NEXT(); RETURN_TOKEN(TK_PLUSPLUS);} + if (CUR_CHAR == '='){ NEXT(); RETURN_TOKEN(TK_PLUSEQ);} + else if (CUR_CHAR == '+'){ NEXT(); RETURN_TOKEN(TK_PLUSPLUS);} else RETURN_TOKEN('+'); case SQUIRREL_EOB: return 0; default:{ - if (scisdigit(CUR_CHAR)) { + if (isdigit(CUR_CHAR)) { SQInteger ret = ReadNumber(); RETURN_TOKEN(ret); } - else if (scisalpha(CUR_CHAR) || CUR_CHAR == _SC('_')) { + else if (isalpha(CUR_CHAR) || CUR_CHAR == '_') { SQInteger t = ReadID(); RETURN_TOKEN(t); } else { SQInteger c = CUR_CHAR; - if (sciscntrl((int)c)) Error(_SC("unexpected character(control)")); + if (iscntrl((int)c)) Error("unexpected character(control)"); NEXT(); RETURN_TOKEN(c); } @@ -273,7 +288,7 @@ SQInteger SQLexer::GetIDType(SQChar *s) } -SQInteger SQLexer::ReadString(SQChar ndelim,bool verbatim) +SQInteger SQLexer::ReadString(WChar ndelim,bool verbatim) { INIT_TEMP_STRING(); NEXT(); @@ -282,22 +297,22 @@ SQInteger SQLexer::ReadString(SQChar ndelim,bool verbatim) while(CUR_CHAR != ndelim) { switch(CUR_CHAR) { case SQUIRREL_EOB: - Error(_SC("unfinished string")); + Error("unfinished string"); return -1; - case _SC('\n'): - if(!verbatim) Error(_SC("newline in a constant")); + case '\n': + if(!verbatim) Error("newline in a constant"); APPEND_CHAR(CUR_CHAR); NEXT(); _currentline++; break; - case _SC('\\'): + case '\\': if(verbatim) { APPEND_CHAR('\\'); NEXT(); } else { NEXT(); switch(CUR_CHAR) { - case _SC('x'): NEXT(); { - if(!isxdigit(CUR_CHAR)) Error(_SC("hexadecimal number expected")); + case 'x': NEXT(); { + if(!isxdigit(CUR_CHAR)) Error("hexadecimal number expected"); const SQInteger maxdigits = 4; SQChar temp[maxdigits+1]; SQInteger n = 0; @@ -308,22 +323,22 @@ SQInteger SQLexer::ReadString(SQChar ndelim,bool verbatim) } temp[n] = 0; SQChar *sTemp; - APPEND_CHAR((SQChar)scstrtoul(temp,&sTemp,16)); + APPEND_CHAR((SQChar)strtoul(temp,&sTemp,16)); } break; - case _SC('t'): APPEND_CHAR(_SC('\t')); NEXT(); break; - case _SC('a'): APPEND_CHAR(_SC('\a')); NEXT(); break; - case _SC('b'): APPEND_CHAR(_SC('\b')); NEXT(); break; - case _SC('n'): APPEND_CHAR(_SC('\n')); NEXT(); break; - case _SC('r'): APPEND_CHAR(_SC('\r')); NEXT(); break; - case _SC('v'): APPEND_CHAR(_SC('\v')); NEXT(); break; - case _SC('f'): APPEND_CHAR(_SC('\f')); NEXT(); break; - case _SC('0'): APPEND_CHAR(_SC('\0')); NEXT(); break; - case _SC('\\'): APPEND_CHAR(_SC('\\')); NEXT(); break; - case _SC('"'): APPEND_CHAR(_SC('"')); NEXT(); break; - case _SC('\''): APPEND_CHAR(_SC('\'')); NEXT(); break; + case 't': APPEND_CHAR('\t'); NEXT(); break; + case 'a': APPEND_CHAR('\a'); NEXT(); break; + case 'b': APPEND_CHAR('\b'); NEXT(); break; + case 'n': APPEND_CHAR('\n'); NEXT(); break; + case 'r': APPEND_CHAR('\r'); NEXT(); break; + case 'v': APPEND_CHAR('\v'); NEXT(); break; + case 'f': APPEND_CHAR('\f'); NEXT(); break; + case '0': APPEND_CHAR('\0'); NEXT(); break; + case '\\': APPEND_CHAR('\\'); NEXT(); break; + case '"': APPEND_CHAR('"'); NEXT(); break; + case '\'': APPEND_CHAR('\''); NEXT(); break; default: - Error(_SC("unrecognised escaper char")); + Error("unrecognised escaper char"); break; } } @@ -344,9 +359,9 @@ SQInteger SQLexer::ReadString(SQChar ndelim,bool verbatim) } TERMINATE_BUFFER(); SQInteger len = _longstr.size()-1; - if(ndelim == _SC('\'')) { - if(len == 0) Error(_SC("empty constant")); - if(len > 1) Error(_SC("constant too long")); + if(ndelim == '\'') { + if(len == 0) Error("empty constant"); + if(len > 1) Error("constant too long"); _nvalue = _longstr[0]; return TK_INTEGER; } @@ -359,8 +374,8 @@ void LexHexadecimal(const SQChar *s,SQUnsignedInteger *res) *res = 0; while(*s != 0) { - if(scisdigit(*s)) *res = (*res)*16+((*s++)-'0'); - else if(scisxdigit(*s)) *res = (*res)*16+(toupper(*s++)-'A'+10); + if(isdigit(*s)) *res = (*res)*16+((*s++)-'0'); + else if(isxdigit(*s)) *res = (*res)*16+(toupper(*s++)-'A'+10); else { assert(0); } } } @@ -374,7 +389,7 @@ void LexInteger(const SQChar *s,SQUnsignedInteger *res) } } -SQInteger scisodigit(SQChar c) { return c >= _SC('0') && c <= _SC('7'); } +SQInteger scisodigit(SQChar c) { return c >= '0' && c <= '7'; } void LexOctal(const SQChar *s,SQUnsignedInteger *res) { @@ -401,14 +416,14 @@ SQInteger SQLexer::ReadNumber() SQChar *sTemp; INIT_TEMP_STRING(); NEXT(); - if(firstchar == _SC('0') && (toupper(CUR_CHAR) == _SC('X') || scisodigit(CUR_CHAR)) ) { + if(firstchar == '0' && (toupper(CUR_CHAR) == 'X' || scisodigit(CUR_CHAR)) ) { if(scisodigit(CUR_CHAR)) { type = TOCTAL; while(scisodigit(CUR_CHAR)) { APPEND_CHAR(CUR_CHAR); NEXT(); } - if(scisdigit(CUR_CHAR)) Error(_SC("invalid octal number")); + if(isdigit(CUR_CHAR)) Error("invalid octal number"); } else { NEXT(); @@ -417,15 +432,15 @@ SQInteger SQLexer::ReadNumber() APPEND_CHAR(CUR_CHAR); NEXT(); } - if(_longstr.size() > MAX_HEX_DIGITS) Error(_SC("too many digits for an Hex number")); + if(_longstr.size() > MAX_HEX_DIGITS) Error("too many digits for an Hex number"); } } else { APPEND_CHAR((int)firstchar); - while (CUR_CHAR == _SC('.') || scisdigit(CUR_CHAR) || isexponent(CUR_CHAR)) { - if(CUR_CHAR == _SC('.') || isexponent(CUR_CHAR)) type = TFLOAT; + while (CUR_CHAR == '.' || isdigit(CUR_CHAR) || isexponent(CUR_CHAR)) { + if(CUR_CHAR == '.' || isexponent(CUR_CHAR)) type = TFLOAT; if(isexponent(CUR_CHAR)) { - if(type != TFLOAT) Error(_SC("invalid numeric format")); + if(type != TFLOAT) Error("invalid numeric format"); type = TSCIENTIFIC; APPEND_CHAR(CUR_CHAR); NEXT(); @@ -433,7 +448,7 @@ SQInteger SQLexer::ReadNumber() APPEND_CHAR(CUR_CHAR); NEXT(); } - if(!scisdigit(CUR_CHAR)) Error(_SC("exponent expected")); + if(!isdigit(CUR_CHAR)) Error("exponent expected"); } APPEND_CHAR(CUR_CHAR); @@ -444,7 +459,7 @@ SQInteger SQLexer::ReadNumber() switch(type) { case TSCIENTIFIC: case TFLOAT: - _fvalue = (SQFloat)scstrtod(&_longstr[0],&sTemp); + _fvalue = (SQFloat)strtod(&_longstr[0],&sTemp); return TK_FLOAT; case TINT: LexInteger(&_longstr[0],(SQUnsignedInteger *)&_nvalue); @@ -466,7 +481,7 @@ SQInteger SQLexer::ReadID() do { APPEND_CHAR(CUR_CHAR); NEXT(); - } while(scisalnum(CUR_CHAR) || CUR_CHAR == _SC('_')); + } while(isalnum(CUR_CHAR) || CUR_CHAR == '_'); TERMINATE_BUFFER(); res = GetIDType(&_longstr[0]); if(res == TK_IDENTIFIER || res == TK_CONSTRUCTOR) { diff --git a/src/3rdparty/squirrel/squirrel/sqlexer.h b/src/3rdparty/squirrel/squirrel/sqlexer.h index 1d81ab3c8b..b53b309d6b 100644 --- a/src/3rdparty/squirrel/squirrel/sqlexer.h +++ b/src/3rdparty/squirrel/squirrel/sqlexer.h @@ -2,25 +2,26 @@ #ifndef _SQLEXER_H_ #define _SQLEXER_H_ -typedef unsigned short LexChar; - struct SQLexer { - SQLexer(); ~SQLexer(); - void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); - void Error(const SQChar *err); + SQLexer(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); + NORETURN void Error(const SQChar *err); SQInteger Lex(); const SQChar *Tok2Str(SQInteger tok); private: SQInteger GetIDType(SQChar *s); - SQInteger ReadString(SQChar ndelim,bool verbatim); + SQInteger ReadString(WChar ndelim,bool verbatim); SQInteger ReadNumber(); void LexBlockComment(); SQInteger ReadID(); void Next(); SQInteger _curtoken; SQTable *_keywords; + void INIT_TEMP_STRING() { _longstr.resize(0); } + void APPEND_CHAR(WChar c); + void TERMINATE_BUFFER() { _longstr.push_back('\0'); } + public: SQInteger _prevtoken; SQInteger _currentline; @@ -31,7 +32,7 @@ public: SQFloat _fvalue; SQLEXREADFUNC _readf; SQUserPointer _up; - LexChar _currdata; + WChar _currdata; SQSharedState *_sharedstate; sqvector _longstr; CompilerErrorFunc _errfunc; diff --git a/src/3rdparty/squirrel/squirrel/sqmem.cpp b/src/3rdparty/squirrel/squirrel/sqmem.cpp index 6faf8165ae..5c1b3966aa 100644 --- a/src/3rdparty/squirrel/squirrel/sqmem.cpp +++ b/src/3rdparty/squirrel/squirrel/sqmem.cpp @@ -1,9 +1,16 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" -void *sq_vm_malloc(SQUnsignedInteger size){ return malloc(size); } -void *sq_vm_realloc(void *p, SQUnsignedInteger oldsize, SQUnsignedInteger size){ return realloc(p, size); } +#include "../../../core/alloc_func.hpp" +#include "../../../safeguards.h" + +void *sq_vm_malloc(SQUnsignedInteger size){ return MallocT((size_t)size); } + +void *sq_vm_realloc(void *p, SQUnsignedInteger oldsize, SQUnsignedInteger size){ return ReallocT(static_cast(p), (size_t)size); } void sq_vm_free(void *p, SQUnsignedInteger size){ free(p); } diff --git a/src/3rdparty/squirrel/squirrel/sqobject.cpp b/src/3rdparty/squirrel/squirrel/sqobject.cpp index c19e71fa9b..d48baca1e9 100644 --- a/src/3rdparty/squirrel/squirrel/sqobject.cpp +++ b/src/3rdparty/squirrel/squirrel/sqobject.cpp @@ -1,6 +1,9 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include "sqvm.h" #include "sqstring.h" @@ -11,30 +14,32 @@ #include "sqclass.h" #include "sqclosure.h" +#include "../../../safeguards.h" + const SQChar *IdType2Name(SQObjectType type) { switch(_RAW_TYPE(type)) { - case _RT_NULL:return _SC("null"); - case _RT_INTEGER:return _SC("integer"); - case _RT_FLOAT:return _SC("float"); - case _RT_BOOL:return _SC("bool"); - case _RT_STRING:return _SC("string"); - case _RT_TABLE:return _SC("table"); - case _RT_ARRAY:return _SC("array"); - case _RT_GENERATOR:return _SC("generator"); + case _RT_NULL:return "null"; + case _RT_INTEGER:return "integer"; + case _RT_FLOAT:return "float"; + case _RT_BOOL:return "bool"; + case _RT_STRING:return "string"; + case _RT_TABLE:return "table"; + case _RT_ARRAY:return "array"; + case _RT_GENERATOR:return "generator"; case _RT_CLOSURE: case _RT_NATIVECLOSURE: - return _SC("function"); + return "function"; case _RT_USERDATA: case _RT_USERPOINTER: - return _SC("userdata"); - case _RT_THREAD: return _SC("thread"); - case _RT_FUNCPROTO: return _SC("function"); - case _RT_CLASS: return _SC("class"); - case _RT_INSTANCE: return _SC("instance"); - case _RT_WEAKREF: return _SC("weakref"); + return "userdata"; + case _RT_THREAD: return "thread"; + case _RT_FUNCPROTO: return "function"; + case _RT_CLASS: return "class"; + case _RT_INSTANCE: return "instance"; + case _RT_WEAKREF: return "weakref"; default: return NULL; } @@ -130,8 +135,8 @@ bool SQDelegable::SetDelegate(SQTable *mt) bool SQGenerator::Yield(SQVM *v) { - if(_state==eSuspended) { v->Raise_Error(_SC("internal vm error, yielding dead generator")); return false;} - if(_state==eDead) { v->Raise_Error(_SC("internal vm error, yielding a dead generator")); return false; } + if(_state==eSuspended) { v->Raise_Error("internal vm error, yielding dead generator"); return false;} + if(_state==eDead) { v->Raise_Error("internal vm error, yielding a dead generator"); return false; } SQInteger size = v->_top-v->_stackbase; _ci=*v->ci; _stack.resize(size); @@ -156,8 +161,8 @@ bool SQGenerator::Yield(SQVM *v) bool SQGenerator::Resume(SQVM *v,SQInteger target) { SQInteger size=_stack.size(); - if(_state==eDead){ v->Raise_Error(_SC("resuming dead generator")); return false; } - if(_state==eRunning){ v->Raise_Error(_SC("resuming active generator")); return false; } + if(_state==eDead){ v->Raise_Error("resuming dead generator"); return false; } + if(_state==eRunning){ v->Raise_Error("resuming active generator"); return false; } SQInteger prevtop=v->_top-v->_stackbase; PUSH_CALLINFO(v,_ci); SQInteger oldstackbase=v->_stackbase; @@ -184,7 +189,7 @@ bool SQGenerator::Resume(SQVM *v,SQInteger target) v->ci->_prevstkbase = (SQInt32)(v->_stackbase - oldstackbase); _state=eRunning; if (type(v->_debughook) != OT_NULL && _rawval(v->_debughook) != _rawval(v->ci->_closure)) - v->CallDebugHook(_SC('c')); + v->CallDebugHook('c'); return true; } @@ -232,7 +237,7 @@ SQInteger SQFunctionProto::GetLine(SQInstruction *curr) bool SafeWrite(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(write(up,dest,size) != size) { - v->Raise_Error(_SC("io error (write function failure)")); + v->Raise_Error("io error (write function failure)"); return false; } return true; @@ -241,7 +246,7 @@ bool SafeWrite(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer de bool SafeRead(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(size && read(up,dest,size) != size) { - v->Raise_Error(_SC("io error, read function failure, the origin stream could be corrupted/trucated")); + v->Raise_Error("io error, read function failure, the origin stream could be corrupted/trucated"); return false; } return true; @@ -257,7 +262,7 @@ bool CheckTag(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQInteger tag) SQInteger t; _CHECK_IO(SafeRead(v,read,up,&t,sizeof(t))); if(t != tag){ - v->Raise_Error(_SC("invalid or corrupted closure stream")); + v->Raise_Error("invalid or corrupted closure stream"); return false; } return true; @@ -269,7 +274,7 @@ bool WriteObject(HSQUIRRELVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o switch(type(o)){ case OT_STRING: _CHECK_IO(SafeWrite(v,write,up,&_string(o)->_len,sizeof(SQInteger))); - _CHECK_IO(SafeWrite(v,write,up,_stringval(o),rsl(_string(o)->_len))); + _CHECK_IO(SafeWrite(v,write,up,_stringval(o),_string(o)->_len)); break; case OT_INTEGER: _CHECK_IO(SafeWrite(v,write,up,&_integer(o),sizeof(SQInteger)));break; @@ -278,7 +283,7 @@ bool WriteObject(HSQUIRRELVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o case OT_NULL: break; default: - v->Raise_Error(_SC("cannot serialize a %s"),GetTypeName(o)); + v->Raise_Error("cannot serialize a %s",GetTypeName(o)); return false; } return true; @@ -292,7 +297,7 @@ bool ReadObject(HSQUIRRELVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) case OT_STRING:{ SQInteger len; _CHECK_IO(SafeRead(v,read,up,&len,sizeof(SQInteger))); - _CHECK_IO(SafeRead(v,read,up,_ss(v)->GetScratchPad(rsl(len)),rsl(len))); + _CHECK_IO(SafeRead(v,read,up,_ss(v)->GetScratchPad(len),len)); o=SQString::Create(_ss(v),_ss(v)->GetScratchPad(-1),len); } break; @@ -308,7 +313,7 @@ bool ReadObject(HSQUIRRELVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) o=_null_; break; default: - v->Raise_Error(_SC("cannot serialize a %s"),IdType2Name(t)); + v->Raise_Error("cannot serialize a %s",IdType2Name(t)); return false; } return true; diff --git a/src/3rdparty/squirrel/squirrel/sqobject.h b/src/3rdparty/squirrel/squirrel/sqobject.h index ac367ae02c..d71e515a8d 100644 --- a/src/3rdparty/squirrel/squirrel/sqobject.h +++ b/src/3rdparty/squirrel/squirrel/sqobject.h @@ -32,24 +32,24 @@ enum SQMetaMethod{ MT_LAST = 18 }; -#define MM_ADD _SC("_add") -#define MM_SUB _SC("_sub") -#define MM_MUL _SC("_mul") -#define MM_DIV _SC("_div") -#define MM_UNM _SC("_unm") -#define MM_MODULO _SC("_modulo") -#define MM_SET _SC("_set") -#define MM_GET _SC("_get") -#define MM_TYPEOF _SC("_typeof") -#define MM_NEXTI _SC("_nexti") -#define MM_CMP _SC("_cmp") -#define MM_CALL _SC("_call") -#define MM_CLONED _SC("_cloned") -#define MM_NEWSLOT _SC("_newslot") -#define MM_DELSLOT _SC("_delslot") -#define MM_TOSTRING _SC("_tostring") -#define MM_NEWMEMBER _SC("_newmember") -#define MM_INHERITED _SC("_inherited") +#define MM_ADD "_add" +#define MM_SUB "_sub" +#define MM_MUL "_mul" +#define MM_DIV "_div" +#define MM_UNM "_unm" +#define MM_MODULO "_modulo" +#define MM_SET "_set" +#define MM_GET "_get" +#define MM_TYPEOF "_typeof" +#define MM_NEXTI "_nexti" +#define MM_CMP "_cmp" +#define MM_CALL "_call" +#define MM_CLONED "_cloned" +#define MM_NEWSLOT "_newslot" +#define MM_DELSLOT "_delslot" +#define MM_TOSTRING "_tostring" +#define MM_NEWMEMBER "_newmember" +#define MM_INHERITED "_inherited" #define MINPOWER2 4 diff --git a/src/3rdparty/squirrel/squirrel/sqopcodes.h b/src/3rdparty/squirrel/squirrel/sqopcodes.h index d20ef4f3f5..a9e4a8743c 100644 --- a/src/3rdparty/squirrel/squirrel/sqopcodes.h +++ b/src/3rdparty/squirrel/squirrel/sqopcodes.h @@ -92,8 +92,7 @@ struct SQInstructionDesc { struct SQInstruction { - SQInstruction(){}; - SQInstruction(SQOpcode _op,SQInteger a0=0,SQInteger a1=0,SQInteger a2=0,SQInteger a3=0) + SQInstruction(SQOpcode _op=_OP_SCOPE_END,SQInteger a0=0,SQInteger a1=0,SQInteger a2=0,SQInteger a3=0) { op = _op; _arg0 = (unsigned char)a0;_arg1 = (SQInt32)a1; _arg2 = (unsigned char)a2;_arg3 = (unsigned char)a3; diff --git a/src/3rdparty/squirrel/squirrel/sqpcheader.h b/src/3rdparty/squirrel/squirrel/sqpcheader.h index db49f5e0d1..3cebdd11ac 100644 --- a/src/3rdparty/squirrel/squirrel/sqpcheader.h +++ b/src/3rdparty/squirrel/squirrel/sqpcheader.h @@ -6,10 +6,6 @@ #include #endif -#include -#include -#include -#include #include //squirrel stuff #include diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp index 45b533776a..35878e197b 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp @@ -1,6 +1,9 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include "sqopcodes.h" #include "sqvm.h" @@ -12,20 +15,14 @@ #include "squserdata.h" #include "sqclass.h" +#include "../../../safeguards.h" + SQObjectPtr _null_; SQObjectPtr _true_(true); SQObjectPtr _false_(false); SQObjectPtr _one_((SQInteger)1); SQObjectPtr _minusone_((SQInteger)-1); -SQSharedState::SQSharedState() -{ - _compilererrorhandler = NULL; - _printfunc = NULL; - _debuginfo = false; - _notifyallexceptions = false; -} - #define newsysstring(s) { \ _systemstrings->push_back(SQString::Create(this,s)); \ } @@ -94,8 +91,12 @@ SQTable *CreateDefaultDelegate(SQSharedState *ss,SQRegFunction *funcz) return t; } -void SQSharedState::Init() +SQSharedState::SQSharedState() { + _compilererrorhandler = NULL; + _printfunc = NULL; + _debuginfo = false; + _notifyallexceptions = false; _scratchpad=NULL; _scratchpadsize=0; #ifndef NO_GARBAGE_COLLECTOR @@ -108,21 +109,21 @@ void SQSharedState::Init() _metamethodsmap = SQTable::Create(this,MT_LAST-1); //adding type strings to avoid memory trashing //types names - newsysstring(_SC("null")); - newsysstring(_SC("table")); - newsysstring(_SC("array")); - newsysstring(_SC("closure")); - newsysstring(_SC("string")); - newsysstring(_SC("userdata")); - newsysstring(_SC("integer")); - newsysstring(_SC("float")); - newsysstring(_SC("userpointer")); - newsysstring(_SC("function")); - newsysstring(_SC("generator")); - newsysstring(_SC("thread")); - newsysstring(_SC("class")); - newsysstring(_SC("instance")); - newsysstring(_SC("bool")); + newsysstring("null"); + newsysstring("table"); + newsysstring("array"); + newsysstring("closure"); + newsysstring("string"); + newsysstring("userdata"); + newsysstring("integer"); + newsysstring("float"); + newsysstring("userpointer"); + newsysstring("function"); + newsysstring("generator"); + newsysstring("thread"); + newsysstring("class"); + newsysstring("instance"); + newsysstring("bool"); //meta methods newmetamethod(MM_ADD); newmetamethod(MM_SUB); @@ -143,7 +144,7 @@ void SQSharedState::Init() newmetamethod(MM_NEWMEMBER); newmetamethod(MM_INHERITED); - _constructoridx = SQString::Create(this,_SC("constructor")); + _constructoridx = SQString::Create(this,"constructor"); _registry = SQTable::Create(this,0); _consts = SQTable::Create(this,0); _table_default_delegate = CreateDefaultDelegate(this,_table_default_delegate_funcz); @@ -486,10 +487,10 @@ void RefTable::AllocNodes(SQUnsignedInteger size) ////////////////////////////////////////////////////////////////////////// //SQStringTable /* -* The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) -* http://www.lua.org/copyright.html#4 -* http://www.lua.org/source/4.0.1/src_lstring.c.html -*/ + * The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) + * http://www.lua.org/copyright.html#4 + * http://www.lua.org/source/4.0.1/src_lstring.c.html + */ SQStringTable::SQStringTable() { @@ -507,26 +508,22 @@ void SQStringTable::AllocNodes(SQInteger size) { _numofslots = size; _strings = (SQString**)SQ_MALLOC(sizeof(SQString*)*_numofslots); - memset(_strings,0,sizeof(SQString*)*_numofslots); + memset(_strings,0,sizeof(SQString*)*(size_t)_numofslots); } SQString *SQStringTable::Add(const SQChar *news,SQInteger len) { if(len<0) - len = (SQInteger)scstrlen(news); - SQHash h = ::_hashstr(news,len)&(_numofslots-1); + len = (SQInteger)strlen(news); + SQHash h = ::_hashstr(news,(size_t)len)&(_numofslots-1); SQString *s; for (s = _strings[h]; s; s = s->_next){ - if(s->_len == len && (!memcmp(news,s->_val,rsl(len)))) + if(s->_len == len && (!memcmp(news,s->_val,(size_t)len))) return s; //found } - SQString *t=(SQString *)SQ_MALLOC(rsl(len)+sizeof(SQString)); - new (t) SQString; - memcpy(t->_val,news,rsl(len)); - t->_val[len] = _SC('\0'); - t->_len = len; - t->_hash = ::_hashstr(news,len); + SQString *t=(SQString *)SQ_MALLOC(len+sizeof(SQString)); + new (t) SQString(news, len); t->_next = _strings[h]; _strings[h] = t; _slotused++; @@ -535,6 +532,16 @@ SQString *SQStringTable::Add(const SQChar *news,SQInteger len) return t; } +SQString::SQString(const SQChar *news, SQInteger len) +{ + memcpy(_val,news,(size_t)len); + _val[len] = '\0'; + _len = len; + _hash = ::_hashstr(news,(size_t)len); + _next = NULL; + _sharedstate = NULL; +} + void SQStringTable::Resize(SQInteger size) { SQInteger oldsize=_numofslots; @@ -568,7 +575,7 @@ void SQStringTable::Remove(SQString *bs) _slotused--; SQInteger slen = s->_len; s->~SQString(); - SQ_FREE(s,sizeof(SQString) + rsl(slen)); + SQ_FREE(s,sizeof(SQString) + slen); return; } prev = s; diff --git a/src/3rdparty/squirrel/squirrel/sqstate.h b/src/3rdparty/squirrel/squirrel/sqstate.h index 302f68611a..da6bf9ae64 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.h +++ b/src/3rdparty/squirrel/squirrel/sqstate.h @@ -58,7 +58,6 @@ struct SQSharedState { SQSharedState(); ~SQSharedState(); - void Init(); public: SQChar* GetScratchPad(SQInteger size); SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name); @@ -123,12 +122,6 @@ private: #define _instance_ddel _table(_sharedstate->_instance_default_delegate) #define _weakref_ddel _table(_sharedstate->_weakref_default_delegate) -#ifdef SQUNICODE //rsl REAL STRING LEN -#define rsl(l) ((l)<<1) -#else -#define rsl(l) (l) -#endif - extern SQObjectPtr _null_; extern SQObjectPtr _true_; extern SQObjectPtr _false_; diff --git a/src/3rdparty/squirrel/squirrel/sqstring.h b/src/3rdparty/squirrel/squirrel/sqstring.h index 14f09e1b0f..a5f298e1e2 100644 --- a/src/3rdparty/squirrel/squirrel/sqstring.h +++ b/src/3rdparty/squirrel/squirrel/sqstring.h @@ -13,7 +13,7 @@ inline SQHash _hashstr (const SQChar *s, size_t l) struct SQString : public SQRefCounted { - SQString(){} + SQString(const SQChar *news, SQInteger len); ~SQString(){} public: static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 ); diff --git a/src/3rdparty/squirrel/squirrel/sqtable.cpp b/src/3rdparty/squirrel/squirrel/sqtable.cpp index bb5feba3e7..60146fe738 100644 --- a/src/3rdparty/squirrel/squirrel/sqtable.cpp +++ b/src/3rdparty/squirrel/squirrel/sqtable.cpp @@ -1,12 +1,17 @@ /* -see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include "sqpcheader.h" #include "sqvm.h" #include "sqtable.h" #include "sqfuncproto.h" #include "sqclosure.h" +#include "../../../safeguards.h" + SQTable::SQTable(SQSharedState *ss,SQInteger nInitialSize) { SQInteger pow2size=MINPOWER2; diff --git a/src/3rdparty/squirrel/squirrel/sqtable.h b/src/3rdparty/squirrel/squirrel/sqtable.h index 2b4a3d4de4..52d9ba41ab 100644 --- a/src/3rdparty/squirrel/squirrel/sqtable.h +++ b/src/3rdparty/squirrel/squirrel/sqtable.h @@ -2,10 +2,10 @@ #ifndef _SQTABLE_H_ #define _SQTABLE_H_ /* -* The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) -* http://www.lua.org/copyright.html#4 -* http://www.lua.org/source/4.0.1/src_ltable.c.html -*/ + * The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) + * http://www.lua.org/copyright.html#4 + * http://www.lua.org/source/4.0.1/src_ltable.c.html + */ #include "sqstring.h" diff --git a/src/3rdparty/squirrel/squirrel/squirrel.dsp b/src/3rdparty/squirrel/squirrel/squirrel.dsp deleted file mode 100644 index eb8a0c1774..0000000000 --- a/src/3rdparty/squirrel/squirrel/squirrel.dsp +++ /dev/null @@ -1,302 +0,0 @@ -# Microsoft Developer Studio Project File - Name="squirrel" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=squirrel - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "squirrel.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "squirrel.mak" CFG="squirrel - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "squirrel - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "squirrel - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_LocalPath ".." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "squirrel - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "GARBAGE_COLLECTOR" /YX /FD /c -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x410 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib\squirrel.lib" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "GARBAGE_COLLECTOR" /YX /FD /GZ /c -# ADD BASE RSC /l 0x410 /d "_DEBUG" -# ADD RSC /l 0x410 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib\squirrel.lib" - -!ENDIF - -# Begin Target - -# Name "squirrel - Win32 Release" -# Name "squirrel - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\sqapi.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqbaselib.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqcompiler.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqdebug.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqfuncstate.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqlexer.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqmem.cpp -# End Source File -# Begin Source File - -SOURCE=.\sqobject.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqstate.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqtable.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqclass.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sqvm.cpp - -!IF "$(CFG)" == "squirrel - Win32 Release" - -!ELSEIF "$(CFG)" == "squirrel - Win32 Debug" - -# ADD CPP /YX"stdafx.h" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\sqarray.h -# End Source File -# Begin Source File - -SOURCE=.\sqclosure.h -# End Source File -# Begin Source File - -SOURCE=.\sqcompiler.h -# End Source File -# Begin Source File - -SOURCE=.\sqfuncproto.h -# End Source File -# Begin Source File - -SOURCE=.\sqfuncstate.h -# End Source File -# Begin Source File - -SOURCE=.\sqlexer.h -# End Source File -# Begin Source File - -SOURCE=.\sqobject.h -# End Source File -# Begin Source File - -SOURCE=.\sqopcodes.h -# End Source File -# Begin Source File - -SOURCE=.\sqpcheader.h -# End Source File -# Begin Source File - -SOURCE=.\sqstate.h -# End Source File -# Begin Source File - -SOURCE=.\sqstring.h -# End Source File -# Begin Source File - -SOURCE=.\sqtable.h -# End Source File -# Begin Source File - -SOURCE=.\squserdata.h -# End Source File -# Begin Source File - -SOURCE=.\squtils.h -# End Source File -# Begin Source File - -SOURCE=.\sqclass.h -# End Source File -# Begin Source File - -SOURCE=.\sqvm.h -# End Source File -# End Group -# End Target -# End Project diff --git a/src/3rdparty/squirrel/squirrel/squserdata.h b/src/3rdparty/squirrel/squirrel/squserdata.h index 8b6b431481..3bf1a9dbad 100644 --- a/src/3rdparty/squirrel/squirrel/squserdata.h +++ b/src/3rdparty/squirrel/squirrel/squserdata.h @@ -4,7 +4,8 @@ struct SQUserData : SQDelegable { - SQUserData(SQSharedState *ss){ _delegate = 0; _hook = NULL; INIT_CHAIN(); ADD_TO_CHAIN(&_ss(this)->_gc_chain, this); } + SQUserData(SQSharedState *ss, SQInteger size){ _delegate = 0; _hook = NULL; INIT_CHAIN(); ADD_TO_CHAIN(&_ss(this)->_gc_chain, this); _size = size; _typetag = 0; +} ~SQUserData() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain, this); @@ -13,9 +14,7 @@ struct SQUserData : SQDelegable static SQUserData* Create(SQSharedState *ss, SQInteger size) { SQUserData* ud = (SQUserData*)SQ_MALLOC(sizeof(SQUserData)+(size-1)); - new (ud) SQUserData(ss); - ud->_size = size; - ud->_typetag = 0; + new (ud) SQUserData(ss, size); return ud; } #ifndef NO_GARBAGE_COLLECTOR diff --git a/src/3rdparty/squirrel/squirrel/squtils.h b/src/3rdparty/squirrel/squirrel/squtils.h index 111a1c383a..28c6cbec2b 100644 --- a/src/3rdparty/squirrel/squirrel/squtils.h +++ b/src/3rdparty/squirrel/squirrel/squtils.h @@ -41,7 +41,7 @@ public: size_t allocated_size = _allocated * sizeof(T); _allocated = 0; - for(SQUnsignedInteger i = 0; i < _size; i++) + for(size_t i = 0; i < _size; i++) _vals[i].~T(); SQ_FREE(_vals, allocated_size); } @@ -61,7 +61,7 @@ public: for(SQUnsignedInteger i = newsize; i < _size; i++) { _vals[i].~T(); } - _size = newsize; + _size = (size_t)newsize; } } void shrinktofit() { if(_size > 4) { _realloc(_size); } } @@ -90,7 +90,7 @@ public: { _vals[idx].~T(); if(idx < (_size - 1)) { - memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); + memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - (size_t)idx - 1)); } _size--; } @@ -103,10 +103,10 @@ private: { newsize = (newsize > 0)?newsize:4; _vals = (T*)SQ_REALLOC(_vals, _allocated * sizeof(T), newsize * sizeof(T)); - _allocated = newsize; + _allocated = (size_t)newsize; } - SQUnsignedInteger _size; - SQUnsignedInteger _allocated; + size_t _size; + size_t _allocated; }; #endif //_SQUTILS_H_ diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp index c8f4db674a..973002b49d 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -1,10 +1,12 @@ /* - see copyright notice in squirrel.h -*/ + * see copyright notice in squirrel.h + */ + +#include "../../../stdafx.h" + #include #include "sqpcheader.h" #include -#include #include "sqopcodes.h" #include "sqfuncproto.h" #include "sqvm.h" @@ -15,6 +17,10 @@ #include "sqarray.h" #include "sqclass.h" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + #define TOP() (_stack._vals[_top-1]) #define CLEARSTACK(_last_top) { if((_last_top) >= _top) ClearStack(_last_top); } @@ -45,10 +51,10 @@ bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,con case BW_SHIFTL: res = i1 << i2; break; case BW_SHIFTR: res = i1 >> i2; break; case BW_USHIFTR:res = (SQInteger)(*((SQUnsignedInteger*)&i1) >> i2); break; - default: { Raise_Error(_SC("internal vm error bitwise op failed")); return false; } + default: { Raise_Error("internal vm error bitwise op failed"); return false; } } } - else { Raise_Error(_SC("bitwise op between '%s' and '%s'"),GetTypeName(o1),GetTypeName(o2)); return false;} + else { Raise_Error("bitwise op between '%s' and '%s'",GetTypeName(o1),GetTypeName(o2)); return false;} trg = res; return true; } @@ -61,11 +67,11 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1, switch(op) { case '+': res = i1 + i2; break; case '-': res = i1 - i2; break; - case '/': if(i2 == 0) { Raise_Error(_SC("division by zero")); return false; } + case '/': if(i2 == 0) { Raise_Error("division by zero"); return false; } res = i1 / i2; break; case '*': res = i1 * i2; break; - case '%': if(i2 == 0) { Raise_Error(_SC("modulo by zero")); return false; } + case '%': if(i2 == 0) { Raise_Error("modulo by zero"); return false; } res = i1 % i2; break; default: res = 0xDEADBEEF; @@ -88,7 +94,7 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1, if(!StringCat(o1, o2, trg)) return false; } else if(!ArithMetaMethod(op,o1,o2,trg)) { - Raise_Error(_SC("arith op %c on between '%s' and '%s'"),op,GetTypeName(o1),GetTypeName(o2)); return false; + Raise_Error("arith op %c on between '%s' and '%s'",op,GetTypeName(o1),GetTypeName(o2)); return false; } } return true; @@ -109,6 +115,11 @@ SQVM::SQVM(SQSharedState *ss) _can_suspend = false; _in_stackoverflow = false; _ops_till_suspend = 0; + _callsstack = NULL; + _callsstacksize = 0; + _alloccallsstacksize = 0; + _top = 0; + _stackbase = 0; ci = NULL; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); } @@ -137,11 +148,11 @@ bool SQVM::ArithMetaMethod(SQInteger op,const SQObjectPtr &o1,const SQObjectPtr { SQMetaMethod mm; switch(op){ - case _SC('+'): mm=MT_ADD; break; - case _SC('-'): mm=MT_SUB; break; - case _SC('/'): mm=MT_DIV; break; - case _SC('*'): mm=MT_MUL; break; - case _SC('%'): mm=MT_MODULO; break; + case '+': mm=MT_ADD; break; + case '-': mm=MT_SUB; break; + case '/': mm=MT_DIV; break; + case '*': mm=MT_MUL; break; + case '%': mm=MT_MODULO; break; default: mm = MT_ADD; assert(0); break; //shutup compiler } if(is_delegable(o1) && _delegable(o1)->_delegate) { @@ -173,7 +184,7 @@ bool SQVM::NEG_OP(SQObjectPtr &trg,const SQObjectPtr &o) } default:break; //shutup compiler } - Raise_Error(_SC("attempt to negate a %s"), GetTypeName(o)); + Raise_Error("attempt to negate a %s", GetTypeName(o)); return false; } @@ -185,7 +196,7 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result) SQObjectPtr res; switch(type(o1)){ case OT_STRING: - _RET_SUCCEED(scstrcmp(_stringval(o1),_stringval(o2))); + _RET_SUCCEED(strcmp(_stringval(o1),_stringval(o2))); case OT_INTEGER: /* FS#3954: wrong integer comparison */ _RET_SUCCEED((_integer(o1)<_integer(o2))?-1:(_integer(o1)==_integer(o2))?0:1); @@ -198,7 +209,7 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result) Push(o1);Push(o2); if(CallMetaMethod(_delegable(o1),MT_CMP,2,res)) { if(type(res) != OT_INTEGER) { - Raise_Error(_SC("_cmp must return an integer")); + Raise_Error("_cmp must return an integer"); return false; } _RET_SUCCEED(_integer(res)) @@ -251,22 +262,19 @@ bool SQVM::CMP_OP(CmpOP op, const SQObjectPtr &o1,const SQObjectPtr &o2,SQObject void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) { + char buf[64]; switch(type(o)) { case OT_STRING: res = o; return; case OT_FLOAT: - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%g"),_float(o)); + seprintf(buf, lastof(buf),"%g",_float(o)); break; case OT_INTEGER: -#if defined(_SQ64) - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%ld"),_integer(o)); -#else - scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%d"),_integer(o)); -#endif + seprintf(buf, lastof(buf),OTTD_PRINTF64,_integer(o)); break; case OT_BOOL: - scsprintf(_sp(rsl(6)),_integer(o)?_SC("true"):_SC("false")); + seprintf(buf, lastof(buf),_integer(o)?"true":"false"); break; case OT_TABLE: case OT_USERDATA: @@ -280,9 +288,9 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) } } default: - scsprintf(_sp(rsl(sizeof(void*)+20)),_SC("(%s : 0x%p)"),GetTypeName(o),(void*)_rawval(o)); + seprintf(buf, lastof(buf),"(%s : 0x%p)",GetTypeName(o),(void*)_rawval(o)); } - res = SQString::Create(_ss(this),_spval); + res = SQString::Create(_ss(this),buf); } @@ -292,9 +300,9 @@ bool SQVM::StringCat(const SQObjectPtr &str,const SQObjectPtr &obj,SQObjectPtr & ToString(str, a); ToString(obj, b); SQInteger l = _string(a)->_len , ol = _string(b)->_len; - SQChar *s = _sp(rsl(l + ol + 1)); - memcpy(s, _stringval(a), rsl(l)); - memcpy(s + l, _stringval(b), rsl(ol)); + SQChar *s = _sp(l + ol + 1); + memcpy(s, _stringval(a), (size_t)l); + memcpy(s + l, _stringval(b), (size_t)ol); dest = SQString::Create(_ss(this), _spval, l + ol); return true; } @@ -350,7 +358,7 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege else if(func->_varparams) { if (nargs < paramssize) { - Raise_Error(_SC("wrong number of parameters")); + Raise_Error("wrong number of parameters"); return false; } for(SQInteger n = 0; n < nargs - paramssize; n++) { @@ -359,7 +367,7 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege } } else { - Raise_Error(_SC("wrong number of parameters")); + Raise_Error("wrong number of parameters"); return false; } } @@ -396,7 +404,7 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege _top = newtop; _stackbase = stackbase; if (type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) - CallDebugHook(_SC('c')); + CallDebugHook('c'); return true; } @@ -404,7 +412,7 @@ bool SQVM::Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval) { if (type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) for(SQInteger i=0;i_ncalls;i++) - CallDebugHook(_SC('r')); + CallDebugHook('r'); SQBool broot = ci->_root; SQInteger last_top = _top; @@ -470,9 +478,9 @@ bool SQVM::DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjec SQRESULT SQVM::Suspend() { if (_suspended) - return sq_throwerror(this, _SC("cannot suspend an already suspended vm")); + return sq_throwerror(this, "cannot suspend an already suspended vm"); if (_nnativecalls!=2) - return sq_throwerror(this, _SC("cannot suspend through native calls/metamethods")); + return sq_throwerror(this, "cannot suspend through native calls/metamethods"); return SQ_SUSPEND_FLAG; } @@ -510,12 +518,12 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr o4 = o2 = itr; if(type(itr) == OT_NULL) _FINISH(exitpos); if(!Get(o1, itr, o3, false,false)) { - Raise_Error(_SC("_nexti returned an invalid idx")); + Raise_Error("_nexti returned an invalid idx"); return false; } _FINISH(1); } - Raise_Error(_SC("_nexti failed")); + Raise_Error("_nexti failed"); return false; } break; @@ -531,19 +539,20 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr _generator(o1)->Resume(this, arg_2+1); _FINISH(0); } + /* FALL THROUGH */ default: - Raise_Error(_SC("cannot iterate %s"), GetTypeName(o1)); + Raise_Error("cannot iterate %s", GetTypeName(o1)); } return false; //cannot be hit(just to avoid warnings) } bool SQVM::DELEGATE_OP(SQObjectPtr &trg,SQObjectPtr &o1,SQObjectPtr &o2) { - if(type(o1) != OT_TABLE) { Raise_Error(_SC("delegating a '%s'"), GetTypeName(o1)); return false; } + if(type(o1) != OT_TABLE) { Raise_Error("delegating a '%s'", GetTypeName(o1)); return false; } switch(type(o2)) { case OT_TABLE: if(!_table(o1)->SetDelegate(_table(o2))){ - Raise_Error(_SC("delegate cycle detected")); + Raise_Error("delegate cycle detected"); return false; } break; @@ -551,7 +560,7 @@ bool SQVM::DELEGATE_OP(SQObjectPtr &trg,SQObjectPtr &o1,SQObjectPtr &o2) _table(o1)->SetDelegate(NULL); break; default: - Raise_Error(_SC("using '%s' as delegate"), GetTypeName(o2)); + Raise_Error("using '%s' as delegate", GetTypeName(o2)); return false; break; } @@ -603,15 +612,15 @@ bool SQVM::CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func) bool SQVM::GETVARGV_OP(SQObjectPtr &target,SQObjectPtr &index,CallInfo *ci) { if(ci->_vargs.size == 0) { - Raise_Error(_SC("the function doesn't have var args")); + Raise_Error("the function doesn't have var args"); return false; } if(!sq_isnumeric(index)){ - Raise_Error(_SC("indexing 'vargv' with %s"),GetTypeName(index)); + Raise_Error("indexing 'vargv' with %s",GetTypeName(index)); return false; } SQInteger idx = tointeger(index); - if(idx < 0 || idx >= ci->_vargs.size){ Raise_Error(_SC("vargv index out of range")); return false; } + if(idx < 0 || idx >= ci->_vargs.size){ Raise_Error("vargv index out of range"); return false; } target = _vargsstack[ci->_vargs.base+idx]; return true; } @@ -621,7 +630,7 @@ bool SQVM::CLASS_OP(SQObjectPtr &target,SQInteger baseclass,SQInteger attributes SQClass *base = NULL; SQObjectPtr attrs; if(baseclass != -1) { - if(type(_stack._vals[_stackbase+baseclass]) != OT_CLASS) { Raise_Error(_SC("trying to inherit from a %s"),GetTypeName(_stack._vals[_stackbase+baseclass])); return false; } + if(type(_stack._vals[_stackbase+baseclass]) != OT_CLASS) { Raise_Error("trying to inherit from a %s",GetTypeName(_stack._vals[_stackbase+baseclass])); return false; } base = _class(_stack._vals[_stackbase + baseclass]); } if(attributes != MAX_FUNC_STACKSIZE) { @@ -676,7 +685,7 @@ bool SQVM::GETPARENT_OP(SQObjectPtr &o,SQObjectPtr &target) case OT_CLASS: target = _class(o)->_base?_class(o)->_base:_null_; break; default: - Raise_Error(_SC("the %s type doesn't have a parent slot"), GetTypeName(o)); + Raise_Error("the %s type doesn't have a parent slot", GetTypeName(o)); return false; } return true; @@ -684,7 +693,7 @@ bool SQVM::GETPARENT_OP(SQObjectPtr &o,SQObjectPtr &target) bool SQVM::Execute(SQObjectPtr &closure, SQInteger target, SQInteger nargs, SQInteger stackbase,SQObjectPtr &outres, SQBool raiseerror,ExecutionType et) { - if ((_nnativecalls + 1) > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); return false; } + if ((_nnativecalls + 1) > MAX_NATIVE_CALLS) { Raise_Error("Native stack overflow"); return false; } _nnativecalls++; AutoDec ad(&_nnativecalls); SQInteger traps = 0; @@ -739,12 +748,12 @@ exception_restore: const SQInstruction &_i_ = *ci->_ip++; //dumpstack(_stackbase); - //scprintf("%s %d %d %d %d\n",g_InstrDesc[_i_.op].name,arg0,arg1,arg2,arg3); + //printf("%s %d %d %d %d\n",g_InstrDesc[_i_.op].name,arg0,arg1,arg2,arg3); switch(_i_.op) { case _OP_LINE: if(type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) - CallDebugHook(_SC('l'),arg1); + CallDebugHook('l',arg1); continue; case _OP_LOAD: TARGET = ci->_literals[arg1]; continue; case _OP_LOADINT: TARGET = (SQInteger)arg1; continue; @@ -760,6 +769,7 @@ exception_restore: ct_stackbase = _stackbase; goto common_call; } + /* FALL THROUGH */ case _OP_CALL: { ct_tailcall = false; ct_target = arg0; @@ -829,11 +839,11 @@ common_call: STK(ct_target) = clo; break; } - Raise_Error(_SC("attempt to call '%s'"), GetTypeName(clo)); + Raise_Error("attempt to call '%s'", GetTypeName(clo)); SQ_THROW(); } default: - Raise_Error(_SC("attempt to call '%s'"), GetTypeName(clo)); + Raise_Error("attempt to call '%s'", GetTypeName(clo)); SQ_THROW(); } } @@ -935,7 +945,7 @@ common_call: case _OP_EXISTS: TARGET = Get(STK(arg1), STK(arg2), temp_reg, true,false)?_true_:_false_;continue; case _OP_INSTANCEOF: if(type(STK(arg1)) != OT_CLASS || type(STK(arg2)) != OT_INSTANCE) - {Raise_Error(_SC("cannot apply instanceof between a %s and a %s"),GetTypeName(STK(arg1)),GetTypeName(STK(arg2))); SQ_THROW();} + {Raise_Error("cannot apply instanceof between a %s and a %s",GetTypeName(STK(arg1)),GetTypeName(STK(arg2))); SQ_THROW();} TARGET = _instance(STK(arg2))->InstanceOf(_class(STK(arg1)))?_true_:_false_; continue; case _OP_AND: @@ -958,7 +968,7 @@ common_call: TARGET = SQInteger(~t); continue; } - Raise_Error(_SC("attempt to perform a bitwise op on a %s"), GetTypeName(STK(arg1))); + Raise_Error("attempt to perform a bitwise op on a %s", GetTypeName(STK(arg1))); SQ_THROW(); case _OP_CLOSURE: { SQClosure *c = ci->_closure._unVal.pClosure; @@ -973,7 +983,7 @@ common_call: traps -= ci->_etraps; if(sarg1 != MAX_FUNC_STACKSIZE) STK(arg1) = temp_reg; } - else { Raise_Error(_SC("trying to yield a '%s',only genenerator can be yielded"), GetTypeName(ci->_closure)); SQ_THROW();} + else { Raise_Error("trying to yield a '%s',only genenerator can be yielded", GetTypeName(ci->_closure)); SQ_THROW();} if(Return(arg0, arg1, temp_reg)){ assert(traps == 0); outres = temp_reg; @@ -983,7 +993,7 @@ common_call: } continue; case _OP_RESUME: - if(type(STK(arg1)) != OT_GENERATOR){ Raise_Error(_SC("trying to resume a '%s',only genenerator can be resumed"), GetTypeName(STK(arg1))); SQ_THROW();} + if(type(STK(arg1)) != OT_GENERATOR){ Raise_Error("trying to resume a '%s',only genenerator can be resumed", GetTypeName(STK(arg1))); SQ_THROW();} _GUARD(_generator(STK(arg1))->Resume(this, arg0)); traps += ci->_etraps; continue; @@ -999,7 +1009,7 @@ common_call: case _OP_DELEGATE: _GUARD(DELEGATE_OP(TARGET,STK(arg1),STK(arg2))); continue; case _OP_CLONE: if(!Clone(STK(arg1), TARGET)) - { Raise_Error(_SC("cloning a %s"), GetTypeName(STK(arg1))); SQ_THROW();} + { Raise_Error("cloning a %s", GetTypeName(STK(arg1))); SQ_THROW();} continue; case _OP_TYPEOF: TypeOf(STK(arg1), TARGET); continue; case _OP_PUSHTRAP:{ @@ -1015,7 +1025,7 @@ common_call: } } continue; - case _OP_THROW: Raise_Error(TARGET); SQ_THROW(); continue; + case _OP_THROW: Raise_Error(TARGET); SQ_THROW(); case _OP_CLASS: _GUARD(CLASS_OP(TARGET,arg1,arg2)); continue; case _OP_NEWSLOTA: bool bstatic = (arg0&NEW_SLOT_STATIC_FLAG)?true:false; @@ -1125,11 +1135,11 @@ void SQVM::CallDebugHook(SQInteger type,SQInteger forcedline) bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackbase,SQObjectPtr &retval,bool &suspend) { - if (_nnativecalls + 1 > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); return false; } + if (_nnativecalls + 1 > MAX_NATIVE_CALLS) { Raise_Error("Native stack overflow"); return false; } SQInteger nparamscheck = nclosure->_nparamscheck; if(((nparamscheck > 0) && (nparamscheck != nargs)) || ((nparamscheck < 0) && (nargs < (-nparamscheck)))) { - Raise_Error(_SC("wrong number of parameters")); + Raise_Error("wrong number of parameters"); return false; } @@ -1337,10 +1347,10 @@ bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr } break; case OT_ARRAY: - if(!sq_isnumeric(key)) {Raise_Error(_SC("indexing %s with %s"),GetTypeName(self),GetTypeName(key)); return false; } + if(!sq_isnumeric(key)) {Raise_Error("indexing %s with %s",GetTypeName(self),GetTypeName(key)); return false; } return _array(self)->Set(tointeger(key),val); default: - Raise_Error(_SC("trying to set '%s'"),GetTypeName(self)); + Raise_Error("trying to set '%s'",GetTypeName(self)); return false; } if(fetchroot) { @@ -1379,7 +1389,7 @@ cloned_mt: bool SQVM::NewSlot(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,bool bstatic) { - if(type(key) == OT_NULL) { Raise_Error(_SC("null cannot be used as index")); return false; } + if(type(key) == OT_NULL) { Raise_Error("null cannot be used as index"); return false; } switch(type(self)) { case OT_TABLE: { bool rawcall = true; @@ -1397,25 +1407,25 @@ bool SQVM::NewSlot(const SQObjectPtr &self,const SQObjectPtr &key,const SQObject SQObjectPtr res; Push(self);Push(key);Push(val); if(!CallMetaMethod(_instance(self),MT_NEWSLOT,3,res)) { - Raise_Error(_SC("class instances do not support the new slot operator")); + Raise_Error("class instances do not support the new slot operator"); return false; } break;} case OT_CLASS: if(!_class(self)->NewSlot(_ss(this),key,val,bstatic)) { if(_class(self)->_locked) { - Raise_Error(_SC("trying to modify a class that has already been instantiated")); + Raise_Error("trying to modify a class that has already been instantiated"); return false; } else { SQObjectPtr oval = PrintObjVal(key); - Raise_Error(_SC("the property '%s' already exists"),_stringval(oval)); + Raise_Error("the property '%s' already exists",_stringval(oval)); return false; } } break; default: - Raise_Error(_SC("indexing %s with %s"),GetTypeName(self),GetTypeName(key)); + Raise_Error("indexing %s with %s",GetTypeName(self),GetTypeName(key)); return false; break; } @@ -1446,7 +1456,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr } } else { - Raise_Error(_SC("cannot delete a slot from %s"),GetTypeName(self)); + Raise_Error("cannot delete a slot from %s",GetTypeName(self)); return false; } } @@ -1454,7 +1464,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr } break; default: - Raise_Error(_SC("attempt to delete a slot from a %s"),GetTypeName(self)); + Raise_Error("attempt to delete a slot from a %s",GetTypeName(self)); return false; } return true; @@ -1558,37 +1568,37 @@ void SQVM::dumpstack(SQInteger stackbase,bool dumpall) { SQInteger size=dumpall?_stack.size():_top; SQInteger n=0; - scprintf(_SC("\n>>>>stack dump<<<<\n")); + printf("\n>>>>stack dump<<<<\n"); CallInfo &ci=_callsstack[_callsstacksize-1]; - scprintf(_SC("IP: %p\n"),ci._ip); - scprintf(_SC("prev stack base: %d\n"),ci._prevstkbase); - scprintf(_SC("prev top: %d\n"),ci._prevtop); + printf("IP: %p\n",ci._ip); + printf("prev stack base: %d\n",ci._prevstkbase); + printf("prev top: %d\n",ci._prevtop); for(SQInteger i=0;i"));else scprintf(_SC(" ")); - scprintf(_SC("[%d]:"),n); + if(stackbase==i)printf(">");else printf(" "); + printf("[%d]:",n); switch(type(obj)){ - case OT_FLOAT: scprintf(_SC("FLOAT %.3f"),_float(obj));break; - case OT_INTEGER: scprintf(_SC("INTEGER %d"),_integer(obj));break; - case OT_BOOL: scprintf(_SC("BOOL %s"),_integer(obj)?"true":"false");break; - case OT_STRING: scprintf(_SC("STRING %s"),_stringval(obj));break; - case OT_NULL: scprintf(_SC("NULL")); break; - case OT_TABLE: scprintf(_SC("TABLE %p[%p]"),_table(obj),_table(obj)->_delegate);break; - case OT_ARRAY: scprintf(_SC("ARRAY %p"),_array(obj));break; - case OT_CLOSURE: scprintf(_SC("CLOSURE [%p]"),_closure(obj));break; - case OT_NATIVECLOSURE: scprintf(_SC("NATIVECLOSURE"));break; - case OT_USERDATA: scprintf(_SC("USERDATA %p[%p]"),_userdataval(obj),_userdata(obj)->_delegate);break; - case OT_GENERATOR: scprintf(_SC("GENERATOR %p"),_generator(obj));break; - case OT_THREAD: scprintf(_SC("THREAD [%p]"),_thread(obj));break; - case OT_USERPOINTER: scprintf(_SC("USERPOINTER %p"),_userpointer(obj));break; - case OT_CLASS: scprintf(_SC("CLASS %p"),_class(obj));break; - case OT_INSTANCE: scprintf(_SC("INSTANCE %p"),_instance(obj));break; - case OT_WEAKREF: scprintf(_SC("WEAKERF %p"),_weakref(obj));break; + case OT_FLOAT: printf("FLOAT %.3f",_float(obj));break; + case OT_INTEGER: printf("INTEGER %d",_integer(obj));break; + case OT_BOOL: printf("BOOL %s",_integer(obj)?"true":"false");break; + case OT_STRING: printf("STRING %s",_stringval(obj));break; + case OT_NULL: printf("NULL"); break; + case OT_TABLE: printf("TABLE %p[%p]",_table(obj),_table(obj)->_delegate);break; + case OT_ARRAY: printf("ARRAY %p",_array(obj));break; + case OT_CLOSURE: printf("CLOSURE [%p]",_closure(obj));break; + case OT_NATIVECLOSURE: printf("NATIVECLOSURE");break; + case OT_USERDATA: printf("USERDATA %p[%p]",_userdataval(obj),_userdata(obj)->_delegate);break; + case OT_GENERATOR: printf("GENERATOR %p",_generator(obj));break; + case OT_THREAD: printf("THREAD [%p]",_thread(obj));break; + case OT_USERPOINTER: printf("USERPOINTER %p",_userpointer(obj));break; + case OT_CLASS: printf("CLASS %p",_class(obj));break; + case OT_INSTANCE: printf("INSTANCE %p",_instance(obj));break; + case OT_WEAKREF: printf("WEAKERF %p",_weakref(obj));break; default: assert(0); break; }; - scprintf(_SC("\n")); + printf("\n"); ++n; } } diff --git a/src/3rdparty/squirrel/squirrel/sqvm.h b/src/3rdparty/squirrel/squirrel/sqvm.h index d272d152e7..89a592e136 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.h +++ b/src/3rdparty/squirrel/squirrel/sqvm.h @@ -203,7 +203,7 @@ inline SQObjectPtr &stack_get(HSQUIRRELVM v,SQInteger idx){return ((idx>=0)?(v-> if(v->_callsstacksize == v->_alloccallsstacksize) { \ if (v->_callsstacksize > 65535 && !v->_in_stackoverflow) {\ v->_in_stackoverflow = true; \ - v->Raise_Error(_SC("stack overflow"));\ + v->Raise_Error("stack overflow");\ v->CallErrorHandler(v->_lasterror);\ return false;\ }\ diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index 3b3c09a429..f920d31014 100644 --- a/src/ai/ai_config.cpp +++ b/src/ai/ai_config.cpp @@ -11,10 +11,13 @@ #include "../stdafx.h" #include "../settings_type.h" +#include "../string_func.h" #include "ai.hpp" #include "ai_config.hpp" #include "ai_info.hpp" +#include "../safeguards.h" + /** Configuration for AI start date, every AI has this setting. */ ScriptConfigItem _start_date_config = { "start_date", @@ -107,7 +110,7 @@ void AIConfig::SetSetting(const char *name, int value) if (it != this->settings.end()) { (*it).second = value; } else { - this->settings[strdup(name)] = value; + this->settings[stredup(name)] = value; } return; diff --git a/src/ai/ai_core.cpp b/src/ai/ai_core.cpp index 3f4381b0c5..d4ff233116 100644 --- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -22,6 +22,8 @@ #include "ai_info.hpp" #include "ai.hpp" +#include "../safeguards.h" + /* static */ uint AI::frame_counter = 0; /* static */ AIScannerInfo *AI::scanner_info = NULL; /* static */ AIScannerLibrary *AI::scanner_library = NULL; diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index 676774f152..0c557d790b 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -40,11 +40,12 @@ #include "../game/game_info.hpp" #include "../game/game_instance.hpp" - #include "table/strings.h" #include +#include "../safeguards.h" + static ScriptConfig *GetConfig(CompanyID slot) { if (slot == OWNER_DEITY) return GameConfig::GetConfig(); @@ -345,7 +346,7 @@ struct AISettingsWindow : public Window { virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget == WID_AIS_BACKGROUND) { - this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; + this->line_height = max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->width = 1; resize->height = this->line_height; @@ -370,6 +371,7 @@ struct AISettingsWindow : public Window { int y = r.top; int button_y_offset = (this->line_height - SETTING_BUTTON_HEIGHT) / 2; + int text_y_offset = (this->line_height - FONT_HEIGHT_NORMAL) / 2; for (; this->vscroll->IsVisible(i) && it != visible_settings.end(); i++, it++) { const ScriptConfigItem &config_item = **it; int current_value = config->GetSetting((config_item).name); @@ -411,7 +413,7 @@ struct AISettingsWindow : public Window { } } - DrawString(text_left, text_right, y + WD_MATRIX_TOP, str, colour); + DrawString(text_left, text_right, y + text_y_offset, str, colour); y += this->line_height; } } @@ -476,7 +478,7 @@ struct AISettingsWindow : public Window { DropDownList *list = new DropDownList(); for (int i = config_item.min_value; i <= config_item.max_value; i++) { - list->push_back(new DropDownListCharStringItem(config_item.labels->Find(i)->second, i, false)); + *list->Append() = new DropDownListCharStringItem(config_item.labels->Find(i)->second, i, false); } ShowDropDownListAt(this, list, old_val, -1, wi_rect, COLOUR_ORANGE, true); @@ -853,7 +855,7 @@ struct AIConfigWindow : public Window { case WID_AIC_GAMELIST: { this->selected_slot = OWNER_DEITY; this->InvalidateData(); - if (click_count > 1 && this->selected_slot != INVALID_COMPANY) ShowAIListWindow((CompanyID)this->selected_slot); + if (click_count > 1 && this->selected_slot != INVALID_COMPANY && _game_mode != GM_NORMAL) ShowAIListWindow((CompanyID)this->selected_slot); break; } @@ -968,7 +970,7 @@ struct AIDebugWindow : public Window { static const int top_offset; ///< Offset of the text at the top of the WID_AID_LOG_PANEL. static const int bottom_offset; ///< Offset of the text at the bottom of the WID_AID_LOG_PANEL. - static const unsigned int MAX_BREAK_STR_STRING_LENGTH = 256; ///< Maximum length of the break string. + static const uint MAX_BREAK_STR_STRING_LENGTH = 256; ///< Maximum length of the break string. static CompanyID ai_debug_company; ///< The AI that is (was last) being debugged. int redraw_timer; ///< Timer for redrawing the window, otherwise it'll happen every tick. diff --git a/src/ai/ai_info.cpp b/src/ai/ai_info.cpp index 7ea7e32612..ec7c896cee 100644 --- a/src/ai/ai_info.cpp +++ b/src/ai/ai_info.cpp @@ -15,15 +15,20 @@ #include "ai_info.hpp" #include "ai_scanner.hpp" #include "../debug.h" +#include "../string_func.h" #include "../rev.h" +#include "../safeguards.h" + /** * Check if the API version provided by the AI is supported. * @param api_version The API version as provided by the AI. */ 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; + 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; } #if defined(WIN32) @@ -60,15 +65,15 @@ template <> const char *GetClassName() { return "AIInfo"; } { /* Get the AIInfo */ SQUserPointer instance = NULL; - if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, _SC("Pass an instance of a child class of AIInfo to RegisterAI")); + if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, "Pass an instance of a child class of AIInfo to RegisterAI"); AIInfo *info = (AIInfo *)instance; SQInteger res = ScriptInfo::Constructor(vm, info); if (res != 0) return res; ScriptConfigItem config = _start_date_config; - config.name = strdup(config.name); - config.description = strdup(config.description); + config.name = stredup(config.name); + config.description = stredup(config.description); info->config_list.push_front(config); if (info->engine->MethodExists(*info->SQ_instance, "MinVersionToLoad")) { @@ -90,7 +95,7 @@ template <> const char *GetClassName() { return "AIInfo"; } return SQ_ERROR; } } else { - info->api_version = strdup("0.7"); + info->api_version = stredup("0.7"); } /* Remove the link to the real instance, else it might get deleted by RegisterAI() */ @@ -113,7 +118,7 @@ template <> const char *GetClassName() { return "AIInfo"; } char buf[8]; seprintf(buf, lastof(buf), "%d.%d", GB(_openttd_newgrf_version, 28, 4), GB(_openttd_newgrf_version, 24, 4)); - info->api_version = strdup(buf); + info->api_version = stredup(buf); /* Remove the link to the real instance, else it might get deleted by RegisterAI() */ sq_setinstanceup(vm, 2, NULL); diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp index f109a09260..c03e745992 100644 --- a/src/ai/ai_instance.cpp +++ b/src/ai/ai_instance.cpp @@ -82,6 +82,8 @@ #include "../company_base.h" #include "../company_func.h" +#include "../safeguards.h" + AIInstance::AIInstance() : ScriptInstance("AI") {} @@ -169,6 +171,17 @@ void AIInstance::RegisterAPI() SQAISignList_Register(this->engine); SQAIStation_Register(this->engine); SQAIStationList_Register(this->engine); + SQAIStationList_Cargo_Register(this->engine); + SQAIStationList_CargoPlanned_Register(this->engine); + SQAIStationList_CargoPlannedByFrom_Register(this->engine); + SQAIStationList_CargoPlannedByVia_Register(this->engine); + SQAIStationList_CargoPlannedFromByVia_Register(this->engine); + SQAIStationList_CargoPlannedViaByFrom_Register(this->engine); + SQAIStationList_CargoWaiting_Register(this->engine); + SQAIStationList_CargoWaitingByFrom_Register(this->engine); + SQAIStationList_CargoWaitingByVia_Register(this->engine); + SQAIStationList_CargoWaitingFromByVia_Register(this->engine); + SQAIStationList_CargoWaitingViaByFrom_Register(this->engine); SQAIStationList_Vehicle_Register(this->engine); SQAISubsidy_Register(this->engine); SQAISubsidyList_Register(this->engine); diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp index 64b877c6c8..4eb2071479 100644 --- a/src/ai/ai_scanner.cpp +++ b/src/ai/ai_scanner.cpp @@ -18,6 +18,8 @@ #include "ai_info.hpp" #include "ai_scanner.hpp" +#include "../safeguards.h" + AIScannerInfo::AIScannerInfo() : ScriptScanner(), @@ -31,7 +33,7 @@ void AIScannerInfo::Initialize() /* Create the dummy AI */ free(this->main_script); - this->main_script = strdup("%_dummy"); + this->main_script = stredup("%_dummy"); extern void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir); Script_CreateDummyInfo(this->engine->GetVM(), "AI", "ai"); } @@ -46,9 +48,9 @@ AIScannerInfo::~AIScannerInfo() delete this->info_dummy; } -void AIScannerInfo::GetScriptName(ScriptInfo *info, char *name, int len) +void AIScannerInfo::GetScriptName(ScriptInfo *info, char *name, const char *last) { - snprintf(name, len, "%s", info->GetName()); + seprintf(name, last, "%s", info->GetName()); } void AIScannerInfo::RegisterAPI(class Squirrel *engine) @@ -96,7 +98,7 @@ AIInfo *AIScannerInfo::FindInfo(const char *nameParam, int versionParam, bool fo if (nameParam == NULL) return NULL; char ai_name[1024]; - ttd_strlcpy(ai_name, nameParam, sizeof(ai_name)); + strecpy(ai_name, nameParam, lastof(ai_name)); strtolower(ai_name); AIInfo *info = NULL; @@ -118,7 +120,7 @@ AIInfo *AIScannerInfo::FindInfo(const char *nameParam, int versionParam, bool fo if (force_exact_match) { /* Try to find a direct 'name.version' match */ char ai_name_tmp[1024]; - snprintf(ai_name_tmp, sizeof(ai_name_tmp), "%s.%d", ai_name, versionParam); + seprintf(ai_name_tmp, lastof(ai_name_tmp), "%s.%d", ai_name, versionParam); strtolower(ai_name_tmp); if (this->info_list.find(ai_name_tmp) != this->info_list.end()) return static_cast(this->info_list[ai_name_tmp]); } @@ -143,10 +145,10 @@ void AIScannerLibrary::Initialize() ScriptScanner::Initialize("AIScanner"); } -void AIScannerLibrary::GetScriptName(ScriptInfo *info, char *name, int len) +void AIScannerLibrary::GetScriptName(ScriptInfo *info, char *name, const char *last) { AILibrary *library = static_cast(info); - snprintf(name, len, "%s.%s", library->GetCategory(), library->GetInstanceName()); + seprintf(name, last, "%s.%s", library->GetCategory(), library->GetInstanceName()); } void AIScannerLibrary::RegisterAPI(class Squirrel *engine) @@ -158,7 +160,7 @@ AILibrary *AIScannerLibrary::FindLibrary(const char *library, int version) { /* Internally we store libraries as 'library.version' */ char library_name[1024]; - snprintf(library_name, sizeof(library_name), "%s.%d", library, version); + seprintf(library_name, lastof(library_name), "%s.%d", library, version); strtolower(library_name); /* Check if the library + version exists */ diff --git a/src/ai/ai_scanner.hpp b/src/ai/ai_scanner.hpp index e09eca9d9c..d8e8a6993d 100644 --- a/src/ai/ai_scanner.hpp +++ b/src/ai/ai_scanner.hpp @@ -42,7 +42,7 @@ public: void SetDummyAI(class AIInfo *info); protected: - /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); + /* virtual */ void GetScriptName(ScriptInfo *info, char *name, const char *last); /* virtual */ const char *GetFileName() const { return PATHSEP "info.nut"; } /* virtual */ Subdirectory GetDirectory() const { return AI_DIR; } /* virtual */ const char *GetScannerName() const { return "AIs"; } @@ -65,7 +65,7 @@ public: class AILibrary *FindLibrary(const char *library, int version); protected: - /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); + /* virtual */ void GetScriptName(ScriptInfo *info, char *name, const char *last); /* virtual */ const char *GetFileName() const { return PATHSEP "library.nut"; } /* virtual */ Subdirectory GetDirectory() const { return AI_LIBRARY_DIR; } /* virtual */ const char *GetScannerName() const { return "AI Libraries"; } diff --git a/src/aircraft.h b/src/aircraft.h index d151f92a6b..0805ae8ec6 100644 --- a/src/aircraft.h +++ b/src/aircraft.h @@ -15,6 +15,17 @@ #include "station_map.h" #include "vehicle_base.h" +/** + * Base values for flight levels above ground level for 'normal' flight and holding patterns. + * Due to speed and direction, the actual flight level may be higher. + */ +enum AircraftFlyingAltitude { + AIRCRAFT_MIN_FLYING_ALTITUDE = 120, ///< Minimum flying altitude above tile. + AIRCRAFT_MAX_FLYING_ALTITUDE = 360, ///< Maximum flying altitude above tile. + PLANE_HOLD_MAX_FLYING_ALTITUDE = 150, ///< holding flying altitude above tile of planes. + HELICOPTER_HOLD_MAX_FLYING_ALTITUDE = 184 ///< holding flying altitude above tile of helicopters. +}; + struct Aircraft; /** An aircraft can be one of those types. */ @@ -25,11 +36,18 @@ enum AircraftSubType { AIR_ROTOR = 6, ///< rotor of an helicopter }; -/** Aircraft flags. */ -enum VehicleAirFlags { - VAF_DEST_TOO_FAR = 0, ///< Next destination is too far away. +/** Flags for air vehicles; shared with disaster vehicles. */ +enum AirVehicleFlags { + VAF_DEST_TOO_FAR = 0, ///< Next destination is too far away. + + /* The next two flags are to prevent stair climbing of the aircraft. The idea is that the aircraft + * will ascend or descend multiple flight levels at a time instead of following the contours of the + * landscape at a fixed altitude. This only has effect when there are more than 15 height levels. */ + VAF_IN_MAX_HEIGHT_CORRECTION = 1, ///< The vehicle is currently lowering its altitude because it hit the upper bound. + VAF_IN_MIN_HEIGHT_CORRECTION = 2, ///< The vehicle is currently raising its altitude because it hit the lower bound. }; +static const int ROTOR_Z_OFFSET = 5; ///< Z Offset between helicopter- and rotorsprite. void HandleAircraftEnterHangar(Aircraft *v); void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type); @@ -39,7 +57,10 @@ void UpdateAircraftCache(Aircraft *v, bool update_range = false); void AircraftLeaveHangar(Aircraft *v, Direction exit_dir); void AircraftNextAirportPos_and_Order(Aircraft *v); void SetAircraftPosition(Aircraft *v, int x, int y, int z); -int GetAircraftFlyingAltitude(const Aircraft *v); + +void GetAircraftFlightLevelBounds(const Vehicle *v, int *min, int *max); +template +int GetAircraftFlightLevel(T *v, bool takeoff = false); /** Variables that are cached to improve performance and such. */ struct AircraftCache { @@ -59,7 +80,7 @@ struct Aircraft FINAL : public SpecializedVehicle { DirectionByte last_direction; byte number_consecutive_turns; ///< Protection to prevent the aircraft of making a lot of turns in order to reach a specific point. byte turn_counter; ///< Ticks between each turn to prevent > 45 degree turns. - byte flags; ///< Aircraft flags. @see VehicleAirFlags + byte flags; ///< Aircraft flags. @see AirVehicleFlags AircraftCache acache; diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 8cc009d3d9..18dcbea27b 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -36,14 +36,11 @@ #include "core/random_func.hpp" #include "core/backup_type.hpp" #include "zoom_func.h" +#include "disaster_vehicle.h" #include "table/strings.h" -static const int ROTOR_Z_OFFSET = 5; ///< Z Offset between helicopter- and rotorsprite. - -static const int PLANE_HOLDING_ALTITUDE = 150; ///< Altitude of planes in holding pattern (= lowest flight altitude). -static const int HELI_FLIGHT_ALTITUDE = 184; ///< Normal flight altitude of helicopters. - +#include "safeguards.h" void Aircraft::UpdateDeltaXY(Direction direction) { @@ -99,6 +96,12 @@ static const SpriteID _aircraft_sprite[] = { 0x0EBD, 0x0EC5 }; +template <> +bool IsValidImageIndex(uint8 image_index) +{ + return image_index < lengthof(_aircraft_sprite); +} + /** Helicopter rotor animation states */ enum HelicopterRotorStates { HRS_ROTOR_STOPPED, @@ -160,6 +163,7 @@ SpriteID Aircraft::GetImage(Direction direction, EngineImageType image_type) con spritenum = this->GetEngine()->original_image_index; } + assert(IsValidImageIndex(spritenum)); return direction + _aircraft_sprite[spritenum]; } @@ -189,6 +193,7 @@ static SpriteID GetAircraftIcon(EngineID engine, EngineImageType image_type) spritenum = e->original_image_index; } + assert(IsValidImageIndex(spritenum)); return DIR_W + _aircraft_sprite[spritenum]; } @@ -196,13 +201,15 @@ void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID en { SpriteID sprite = GetAircraftIcon(engine, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - preferred_x = Clamp(preferred_x, left - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI), right - UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI) - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI)); + preferred_x = Clamp(preferred_x, + left - UnScaleGUI(real_sprite->x_offs), + right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs)); DrawSprite(sprite, pal, preferred_x, y); if (!(AircraftVehInfo(engine)->subtype & AIR_CTOL)) { SpriteID rotor_sprite = GetCustomRotorIcon(engine, image_type); if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED; - DrawSprite(rotor_sprite, PAL_NONE, preferred_x, y - 5); + DrawSprite(rotor_sprite, PAL_NONE, preferred_x, y - ScaleGUITrad(5)); } } @@ -219,10 +226,10 @@ void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoff { const Sprite *spr = GetSprite(GetAircraftIcon(engine, image_type), ST_NORMAL); - width = UnScaleByZoom(spr->width, ZOOM_LVL_GUI); - height = UnScaleByZoom(spr->height, ZOOM_LVL_GUI); - xoffs = UnScaleByZoom(spr->x_offs, ZOOM_LVL_GUI); - yoffs = UnScaleByZoom(spr->y_offs, ZOOM_LVL_GUI); + width = UnScaleGUI(spr->width); + height = UnScaleGUI(spr->height); + xoffs = UnScaleGUI(spr->x_offs); + yoffs = UnScaleGUI(spr->y_offs); } /** @@ -327,8 +334,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * UpdateAircraftCache(v, true); - VehicleUpdatePosition(v); - VehicleUpdatePosition(u); + v->UpdatePosition(); + u->UpdatePosition(); /* Aircraft with 3 vehicles (chopper)? */ if (v->subtype == AIR_HELICOPTER) { @@ -349,7 +356,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * w->UpdateDeltaXY(INVALID_DIR); u->SetNext(w); - VehicleUpdatePosition(w); + w->UpdatePosition(); } } @@ -477,7 +484,7 @@ static void HelicopterTickHandler(Aircraft *v) u->cur_image = img; - VehicleUpdatePositionAndViewport(u); + u->UpdatePositionAndViewport(); } /** @@ -493,7 +500,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z) v->y_pos = y; v->z_pos = z; - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateViewport(true, false); if (v->subtype == AIR_HELICOPTER) v->Next()->Next()->cur_image = GetRotorImage(v, EIT_ON_MAP); @@ -508,7 +515,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z) u->z_pos = GetSlopePixelZ(safe_x, safe_y); u->cur_image = v->cur_image; - VehicleUpdatePositionAndViewport(u); + u->UpdatePositionAndViewport(); u = u->Next(); if (u != NULL) { @@ -516,7 +523,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z) u->y_pos = y; u->z_pos = z + ROTOR_Z_OFFSET; - VehicleUpdatePositionAndViewport(u); + u->UpdatePositionAndViewport(); } } @@ -655,20 +662,35 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, } /** - * Gets the cruise altitude of an aircraft. - * The cruise altitude is determined by the velocity of the vehicle - * and the direction it is moving - * @param v The vehicle. Should be an aircraft - * @returns Altitude in pixel units + * Get the tile height below the aircraft. + * This function is needed because aircraft can leave the mapborders. + * + * @param v The vehicle to get the height for. + * @return The height in pixels from 'z_pos' 0. */ -int GetAircraftFlyingAltitude(const Aircraft *v) +int GetTileHeightBelowAircraft(const Vehicle *v) { - if (v->subtype == AIR_HELICOPTER) return HELI_FLIGHT_ALTITUDE; + int safe_x = Clamp(v->x_pos, 0, MapMaxX() * TILE_SIZE); + int safe_y = Clamp(v->y_pos, 0, MapMaxY() * TILE_SIZE); + return TileHeight(TileVirtXY(safe_x, safe_y)) * TILE_HEIGHT; +} - /* Make sure Aircraft fly no lower so that they don't conduct - * CFITs (controlled flight into terrain) - */ - int base_altitude = PLANE_HOLDING_ALTITUDE; +/** + * Get the 'flight level' bounds, in pixels from 'z_pos' 0 for a particular + * vehicle for normal flight situation. + * When the maximum is reached the vehicle should consider descending. + * When the minimum is reached the vehicle should consider ascending. + * + * @param v The vehicle to get the flight levels for. + * @param [out] min_level The minimum bounds for flight level. + * @param [out] max_level The maximum bounds for flight level. + */ +void GetAircraftFlightLevelBounds(const Vehicle *v, int *min_level, int *max_level) +{ + int base_altitude = GetTileHeightBelowAircraft(v); + if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->subtype == AIR_HELICOPTER) { + base_altitude += HELICOPTER_HOLD_MAX_FLYING_ALTITUDE - PLANE_HOLD_MAX_FLYING_ALTITUDE; + } /* Make sure eastbound and westbound planes do not "crash" into each * other by providing them with vertical separation @@ -685,11 +707,67 @@ int GetAircraftFlyingAltitude(const Aircraft *v) } /* Make faster planes fly higher so that they can overtake slower ones */ - base_altitude += min(20 * (v->vcache.cached_max_speed / 200), 90); + base_altitude += min(20 * (v->vcache.cached_max_speed / 200) - 90, 0); - return base_altitude; + if (min_level != NULL) *min_level = base_altitude + AIRCRAFT_MIN_FLYING_ALTITUDE; + if (max_level != NULL) *max_level = base_altitude + AIRCRAFT_MAX_FLYING_ALTITUDE; } +/** + * Gets the maximum 'flight level' for the holding pattern of the aircraft, + * in pixels 'z_pos' 0, depending on terrain below.. + * + * @param v The aircraft that may or may not need to decrease its altitude. + * @return Maximal aircraft holding altitude, while in normal flight, in pixels. + */ +int GetAircraftHoldMaxAltitude(const Aircraft *v) +{ + int tile_height = GetTileHeightBelowAircraft(v); + + return tile_height + ((v->subtype == AIR_HELICOPTER) ? HELICOPTER_HOLD_MAX_FLYING_ALTITUDE : PLANE_HOLD_MAX_FLYING_ALTITUDE); +} + +template +int GetAircraftFlightLevel(T *v, bool takeoff) +{ + /* Aircraft is in flight. We want to enforce it being somewhere + * between the minimum and the maximum allowed altitude. */ + int aircraft_min_altitude; + int aircraft_max_altitude; + GetAircraftFlightLevelBounds(v, &aircraft_min_altitude, &aircraft_max_altitude); + int aircraft_middle_altitude = (aircraft_min_altitude + aircraft_max_altitude) / 2; + + /* If those assumptions would be violated, aircrafts would behave fairly strange. */ + assert(aircraft_min_altitude < aircraft_middle_altitude); + assert(aircraft_middle_altitude < aircraft_max_altitude); + + int z = v->z_pos; + if (z < aircraft_min_altitude || + (HasBit(v->flags, VAF_IN_MIN_HEIGHT_CORRECTION) && z < aircraft_middle_altitude)) { + /* Ascend. And don't fly into that mountain right ahead. + * And avoid our aircraft become a stairclimber, so if we start + * correcting altitude, then we stop correction not too early. */ + SetBit(v->flags, VAF_IN_MIN_HEIGHT_CORRECTION); + z += takeoff ? 2 : 1; + } else if (!takeoff && (z > aircraft_max_altitude || + (HasBit(v->flags, VAF_IN_MAX_HEIGHT_CORRECTION) && z > aircraft_middle_altitude))) { + /* Descend lower. You are an aircraft, not an space ship. + * And again, don't stop correcting altitude too early. */ + SetBit(v->flags, VAF_IN_MAX_HEIGHT_CORRECTION); + z--; + } else if (HasBit(v->flags, VAF_IN_MIN_HEIGHT_CORRECTION) && z >= aircraft_middle_altitude) { + /* Now, we have corrected altitude enough. */ + ClrBit(v->flags, VAF_IN_MIN_HEIGHT_CORRECTION); + } else if (HasBit(v->flags, VAF_IN_MAX_HEIGHT_CORRECTION) && z <= aircraft_middle_altitude) { + /* Now, we have corrected altitude enough. */ + ClrBit(v->flags, VAF_IN_MAX_HEIGHT_CORRECTION); + } + + return z; +} + +template int GetAircraftFlightLevel(DisasterVehicle *v, bool takeoff); + /** * Find the entry point to an airport depending on direction which * the airport is being approached from. Each airport can have up to @@ -702,7 +780,7 @@ int GetAircraftFlyingAltitude(const Aircraft *v) * @param v The vehicle that is approaching the airport * @param apc The Airport Class being approached. * @param rotation The rotation of the airport. - * @returns The index of the entry point + * @return The index of the entry point */ static byte AircraftGetEntryPoint(const Aircraft *v, const AirportFTAClass *apc, Direction rotation) { @@ -779,7 +857,7 @@ static bool AircraftController(Aircraft *v) UpdateAircraftCache(v); AircraftNextAirportPos_and_Order(v); /* get aircraft back on running altitude */ - SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlyingAltitude(v)); + SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlightLevel(v)); return false; } } @@ -807,7 +885,9 @@ static bool AircraftController(Aircraft *v) count = UpdateAircraftSpeed(v); if (count > 0) { v->tile = 0; - int z_dest = GetAircraftFlyingAltitude(v); + + int z_dest; + GetAircraftFlightLevelBounds(v, &z_dest, NULL); /* Reached altitude? */ if (v->z_pos >= z_dest) { @@ -964,12 +1044,14 @@ static bool AircraftController(Aircraft *v) int z = v->z_pos; if (amd.flag & AMED_TAKEOFF) { - z = min(z + 2, GetAircraftFlyingAltitude(v)); + z = GetAircraftFlightLevel(v, true); + } else if (amd.flag & AMED_HOLD) { + /* Let the plane drop from normal flight altitude to holding pattern altitude */ + if (z > GetAircraftHoldMaxAltitude(v)) z--; + } else if ((amd.flag & AMED_SLOWTURN) && (amd.flag & AMED_NOSPDCLAMP)) { + z = GetAircraftFlightLevel(v); } - /* Let the plane drop from normal flight altitude to holding pattern altitude */ - if ((amd.flag & AMED_HOLD) && (z > PLANE_HOLDING_ALTITUDE)) z--; - if (amd.flag & AMED_LAND) { if (st->airport.tile == INVALID_TILE) { /* Airport has been removed, abort the landing procedure */ @@ -977,7 +1059,7 @@ static bool AircraftController(Aircraft *v) UpdateAircraftCache(v); AircraftNextAirportPos_and_Order(v); /* get aircraft back on running altitude */ - SetAircraftPosition(v, gp.x, gp.y, GetAircraftFlyingAltitude(v)); + SetAircraftPosition(v, gp.x, gp.y, GetAircraftFlightLevel(v)); continue; } @@ -1024,7 +1106,7 @@ static bool HandleCrashedAircraft(Aircraft *v) /* make aircraft crash down to the ground */ if (v->crashed_counter < 500 && st == NULL && ((v->crashed_counter % 3) == 0) ) { - int z = GetSlopePixelZ(v->x_pos, v->y_pos); + int z = GetSlopePixelZ(Clamp(v->x_pos, 0, MapMaxX() * TILE_SIZE), Clamp(v->y_pos, 0, MapMaxY() * TILE_SIZE)); v->z_pos -= 1; if (v->z_pos == z) { v->crashed_counter = 500; diff --git a/src/aircraft_gui.cpp b/src/aircraft_gui.cpp index 6db75d3af8..c3379d3951 100644 --- a/src/aircraft_gui.cpp +++ b/src/aircraft_gui.cpp @@ -21,6 +21,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Draw the details for the given vehicle at the given position * @@ -84,22 +86,26 @@ void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID s SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - int width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); - int x_offs = UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI); + int width = UnScaleGUI(real_sprite->width); + int x_offs = UnScaleGUI(real_sprite->x_offs); int x = rtl ? right - width - x_offs : left - x_offs; bool helicopter = v->subtype == AIR_HELICOPTER; + int y_offs = ScaleGUITrad(10); + int heli_offs = 0; + PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); - DrawSprite(sprite, pal, x, y + 10); + DrawSprite(sprite, pal, x, y + y_offs); if (helicopter) { const Aircraft *a = Aircraft::From(v); SpriteID rotor_sprite = GetCustomRotorSprite(a, true, image_type); if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED; - DrawSprite(rotor_sprite, PAL_NONE, x, y + 5); + heli_offs = ScaleGUITrad(5); + DrawSprite(rotor_sprite, PAL_NONE, x, y + y_offs - heli_offs); } if (v->index == selection) { x += x_offs; - y += UnScaleByZoom(real_sprite->y_offs, ZOOM_LVL_GUI) + 10 - (helicopter ? 5 : 0); - DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleByZoom(real_sprite->height, ZOOM_LVL_GUI) + (helicopter ? 5 : 0) + 1, COLOUR_WHITE, FR_BORDERONLY); + y += UnScaleGUI(real_sprite->y_offs) + y_offs - heli_offs; + DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleGUI(real_sprite->height) + heli_offs + 1, COLOUR_WHITE, FR_BORDERONLY); } } diff --git a/src/airport.cpp b/src/airport.cpp index c3c67effc5..a50c049c23 100644 --- a/src/airport.cpp +++ b/src/airport.cpp @@ -15,6 +15,8 @@ #include "table/airport_movement.h" #include "table/airporttile_ids.h" +#include "safeguards.h" + /** * Define a generic airport. diff --git a/src/airport.h b/src/airport.h index 7f0cac494b..31c68ef002 100644 --- a/src/airport.h +++ b/src/airport.h @@ -20,7 +20,9 @@ static const uint MAX_TERMINALS = 8; ///< maximum number static const uint MAX_HELIPADS = 3; ///< maximum number of helipads per airport static const uint MAX_ELEMENTS = 255; ///< maximum number of aircraft positions at airport -static const uint NUM_AIRPORTTILES = 256; ///< total number of airport tiles +static const uint NUM_AIRPORTTILES_PER_GRF = 255; ///< Number of airport tiles per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. + +static const uint NUM_AIRPORTTILES = 256; ///< Total number of airport tiles. static const uint NEW_AIRPORTTILE_OFFSET = 74; ///< offset of first newgrf airport tile static const uint INVALID_AIRPORTTILE = NUM_AIRPORTTILES; ///< id for an invalid airport tile @@ -37,7 +39,8 @@ enum AirportTypes { AT_HELISTATION = 8, ///< Heli station airport. AT_OILRIG = 9, ///< Oilrig airport. NEW_AIRPORT_OFFSET = 10, ///< Number of the first newgrf airport. - NUM_AIRPORTS = 128, ///< Maximal number of airports. + NUM_AIRPORTS_PER_GRF = 128, ///< Maximal number of airports per NewGRF. + NUM_AIRPORTS = 128, ///< Maximal number of airports in total. AT_INVALID = 254, ///< Invalid airport. AT_DUMMY = 255, ///< Dummy airport. }; diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index 29ca6b1537..6437f236cd 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -31,6 +31,8 @@ #include "widgets/airport_widget.h" +#include "safeguards.h" + static AirportClassID _selected_airport_class; ///< the currently visible airport class static int _selected_airport_index; ///< the index of the selected airport in the current class or -1 @@ -44,7 +46,7 @@ void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 { if (result.Failed()) return; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } @@ -80,6 +82,18 @@ struct BuildAirToolbarWindow : Window { if (_settings_client.gui.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0, false); } + /** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. + */ + virtual void OnInvalidateData(int data = 0, bool gui_scope = true) + { + if (!gui_scope) return; + + if (!CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) delete this; + } + virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { @@ -205,7 +219,7 @@ class BuildAirportWindow : public PickerWindowBase { DropDownList *list = new DropDownList(); for (uint i = 0; i < AirportClass::GetClassCount(); i++) { - list->push_back(new DropDownListStringItem(AirportClass::Get((AirportClassID)i)->name, i, false)); + *list->Append() = new DropDownListStringItem(AirportClass::Get((AirportClassID)i)->name, i, false); } return list; @@ -226,8 +240,27 @@ public: this->SetWidgetLoweredState(WID_AP_BTN_DOHILIGHT, _settings_client.gui.station_show_coverage); this->OnInvalidateData(); - this->vscroll->SetCount(AirportClass::Get(_selected_airport_class)->GetSpecCount()); - this->SelectFirstAvailableAirport(true); + /* Ensure airport class is valid (changing NewGRFs). */ + _selected_airport_class = Clamp(_selected_airport_class, APC_BEGIN, (AirportClassID)(AirportClass::GetClassCount() - 1)); + const AirportClass *ac = AirportClass::Get(_selected_airport_class); + this->vscroll->SetCount(ac->GetSpecCount()); + + /* Ensure the airport index is valid for this class (changing NewGRFs). */ + _selected_airport_index = Clamp(_selected_airport_index, -1, ac->GetSpecCount() - 1); + + /* Only when no valid airport was selected, we want to select the first airport. */ + bool selectFirstAirport = true; + if (_selected_airport_index != -1) { + const AirportSpec *as = ac->GetSpec(_selected_airport_index); + if (as->IsAvailable()) { + /* Ensure the airport layout is valid. */ + _selected_airport_layout = Clamp(_selected_airport_layout, 0, as->num_table - 1); + selectFirstAirport = false; + this->UpdateSelectSize(); + } + } + + if (selectFirstAirport) this->SelectFirstAvailableAirport(true); } virtual ~BuildAirportWindow() @@ -392,7 +425,7 @@ public: * Never make the window smaller to avoid oscillating if the size change affects the acceptance. * (This is the case, if making the window bigger moves the mouse into the window.) */ if (top > bottom) { - ResizeWindow(this, 0, top - bottom); + ResizeWindow(this, 0, top - bottom, false); } } @@ -524,6 +557,7 @@ static const NWidgetPart _nested_build_airport_widgets[] = { NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 0), SetPIP(2, 0, 2), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_AP_CLASS_DROPDOWN), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_STATION_BUILD_AIRPORT_TOOLTIP), + NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_AP_AIRPORT_LIST), SetFill(1, 0), SetMatrixDataTip(1, 5, STR_STATION_BUILD_AIRPORT_TOOLTIP), SetScrollbar(WID_AP_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AP_SCROLLBAR), @@ -533,7 +567,6 @@ static const NWidgetPart _nested_build_airport_widgets[] = { NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NULL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL), EndContainer(), - NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0), EndContainer(), /* Bottom panel. */ diff --git a/src/animated_tile.cpp b/src/animated_tile.cpp index 8995275e90..78dda8b3b6 100644 --- a/src/animated_tile.cpp +++ b/src/animated_tile.cpp @@ -14,6 +14,8 @@ #include "tile_cmd.h" #include "viewport_func.h" +#include "safeguards.h" + /** The table/list with animated tiles. */ TileIndex *_animated_tile_list = NULL; /** The number of animated tiles in the current state. */ diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index 501af719de..193c5ac4a8 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -19,6 +19,8 @@ #include "table/strings.h" +#include "safeguards.h" + static const uint MAX_ARTICULATED_PARTS = 100; ///< Maximum of articulated parts per vehicle, i.e. when to abort calling the articulated vehicle callback. /** @@ -160,6 +162,41 @@ CargoArray GetCapacityOfArticulatedParts(EngineID engine) return capacity; } +/** + * Get the default cargoes and refits of an articulated vehicle. + * The refits are linked to a cargo rather than an articulated part to prevent a long list of parts. + * @param engine Model to investigate. + * @param[out] cargoes Total amount of units that can be transported, summed by cargo. + * @param[out] refits Whether a (possibly partial) refit for each cargo is possible. + */ +void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, uint32 *refits) +{ + cargoes->Clear(); + *refits = 0; + + const Engine *e = Engine::Get(engine); + + CargoID cargo_type; + uint16 cargo_capacity = GetVehicleDefaultCapacity(engine, &cargo_type); + if (cargo_type < NUM_CARGO && cargo_capacity > 0) { + (*cargoes)[cargo_type] += cargo_capacity; + if (IsEngineRefittable(engine)) SetBit(*refits, cargo_type); + } + + if (!e->IsGroundVehicle() || !HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return; + + for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) { + EngineID artic_engine = GetNextArticulatedPart(i, engine); + if (artic_engine == INVALID_ENGINE) break; + + cargo_capacity = GetVehicleDefaultCapacity(artic_engine, &cargo_type); + if (cargo_type < NUM_CARGO && cargo_capacity > 0) { + (*cargoes)[cargo_type] += cargo_capacity; + if (IsEngineRefittable(artic_engine)) SetBit(*refits, cargo_type); + } + } +} + /** * Checks whether any of the articulated parts is refittable * @param engine the first part @@ -408,6 +445,6 @@ void AddArticulatedParts(Vehicle *first) if (flip_image) v->spritenum++; - VehicleUpdatePosition(v); + v->UpdatePosition(); } } diff --git a/src/autoreplace.cpp b/src/autoreplace.cpp index 0cb8d997f2..3b7f739726 100644 --- a/src/autoreplace.cpp +++ b/src/autoreplace.cpp @@ -15,6 +15,8 @@ #include "autoreplace_base.h" #include "core/pool_func.hpp" +#include "safeguards.h" + /** The pool of autoreplace "orders". */ EngineRenewPool _enginerenew_pool("EngineRenew"); INSTANTIATE_POOL_METHODS(EngineRenew) @@ -28,7 +30,7 @@ static EngineRenew *GetEngineReplacement(EngineRenewList erl, EngineID engine, G EngineRenew *er = (EngineRenew *)erl; while (er != NULL) { - if (er->from == engine && er->group_id == group) return er; + if (er->from == engine && GroupIsInGroup(group, er->group_id)) return er; er = er->next; } return NULL; diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 27d6fddcd3..e69ac66eb2 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -22,6 +22,8 @@ #include "table/strings.h" +#include "safeguards.h" + extern void ChangeVehicleViewports(VehicleID from_index, VehicleID to_index); extern void ChangeVehicleNews(VehicleID from_index, VehicleID to_index); extern void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index); @@ -160,7 +162,7 @@ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chai } /* Update train weight etc., the old vehicle will be sold anyway */ - if (part_of_chain && new_head->type == VEH_TRAIN) Train::From(new_head)->ConsistChanged(true); + if (part_of_chain && new_head->type == VEH_TRAIN) Train::From(new_head)->ConsistChanged(CCF_LOADUNLOAD); } /** diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index b159376a0e..691042a1d5 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -28,8 +28,8 @@ #include "widgets/autoreplace_widget.h" +#include "safeguards.h" -uint GetEngineListHeight(VehicleType type); void DrawEngineList(VehicleType type, int x, int r, int y, const GUIEngineList *eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count, GroupID selected_group); static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b) @@ -84,6 +84,9 @@ class ReplaceVehicleWindow : public Window { bool reset_sel_engine; ///< Also reset #sel_engine while updating left and/or right (#update_left and/or #update_right) and no valid engine selected. GroupID sel_group; ///< Group selected to replace. int details_height; ///< Minimal needed height of the details panels (found so far). + byte sort_criteria; ///< Criteria of sorting vehicles. + bool descending_sort_order; ///< Order of sorting vehicles. + bool show_hidden_engines; ///< Whether to show the hidden engines. RailType sel_railtype; ///< Type of rail tracks selected. Scrollbar *vscroll[2]; @@ -124,6 +127,7 @@ class ReplaceVehicleWindow : public Window { const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, type) { + if (!draw_left && !this->show_hidden_engines && e->IsHidden(_local_company)) continue; EngineID eid = e->index; if (type == VEH_TRAIN && !this->GenerateReplaceRailList(eid, draw_left, this->replace_engines)) continue; // special rules for trains @@ -140,7 +144,12 @@ class ReplaceVehicleWindow : public Window { if (eid == this->sel_engine[side]) selected_engine = eid; // The selected engine is still in the list } this->sel_engine[side] = selected_engine; // update which engine we selected (the same or none, if it's not in the list anymore) - EngList_Sort(list, &EngineNumberSorter); + if (draw_left) { + EngList_Sort(list, &EngineNumberSorter); + } else { + _engine_sort_direction = this->descending_sort_order; + EngList_Sort(list, _engine_sort_functions[this->window_number][this->sort_criteria]); + } } /** Generate the lists */ @@ -164,10 +173,21 @@ class ReplaceVehicleWindow : public Window { this->engines[1].Clear(); this->sel_engine[1] = INVALID_ENGINE; } else { + if (this->reset_sel_engine && this->sel_engine[0] != INVALID_ENGINE) { + /* Select the current replacement for sel_engine[0]. */ + const Company *c = Company::Get(_local_company); + this->sel_engine[1] = EngineReplacementForCompany(c, this->sel_engine[0], this->sel_group); + } + /* Regenerate the list on the right. Note: This resets sel_engine[1] to INVALID_ENGINE, if it is no longer available. */ this->GenerateReplaceVehList(false); this->vscroll[1]->SetCount(this->engines[1].Length()); - if (this->reset_sel_engine && this->sel_engine[1] == INVALID_ENGINE && this->engines[1].Length() != 0) { - this->sel_engine[1] = this->engines[1][0]; + if (this->reset_sel_engine && this->sel_engine[1] != INVALID_ENGINE) { + int position = 0; + for (EngineID *it = this->engines[1].Begin(); it != this->engines[1].End(); ++it) { + if (*it == this->sel_engine[1]) break; + ++position; + } + this->vscroll[1]->ScrollTowards(position); } } } @@ -216,12 +236,20 @@ public: this->details_height = ((vehicletype == VEH_TRAIN) ? 10 : 9) * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; this->sel_engine[0] = INVALID_ENGINE; this->sel_engine[1] = INVALID_ENGINE; + this->show_hidden_engines = _engine_sort_show_hidden_engines[vehicletype]; this->CreateNestedTree(); this->vscroll[0] = this->GetScrollbar(WID_RV_LEFT_SCROLLBAR); this->vscroll[1] = this->GetScrollbar(WID_RV_RIGHT_SCROLLBAR); + + NWidgetCore *widget = this->GetWidget(WID_RV_SHOW_HIDDEN_ENGINES); + widget->widget_data = STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN + vehicletype; + widget->tool_tip = STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP + vehicletype; + widget->SetLowered(this->show_hidden_engines); this->FinishInitNested(vehicletype); + this->sort_criteria = _engine_sort_last_criteria[vehicletype]; + this->descending_sort_order = _engine_sort_last_order[vehicletype]; this->owner = _local_company; this->sel_group = id_g; } @@ -229,6 +257,14 @@ public: virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { + case WID_RV_SORT_ASCENDING_DESCENDING: { + Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. + d.height += padding.height; + *size = maxdim(*size, d); + break; + } + case WID_RV_LEFT_MATRIX: case WID_RV_RIGHT_MATRIX: resize->height = GetEngineListHeight((VehicleType)this->window_number); @@ -265,10 +301,8 @@ public: } case WID_RV_INFO_TAB: { - SetDParam(0, STR_REPLACE_NOT_REPLACING); - Dimension d = GetStringBoundingBox(STR_BLACK_STRING); - SetDParam(0, STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED); - d = maxdim(d, GetStringBoundingBox(STR_BLACK_STRING)); + Dimension d = GetStringBoundingBox(STR_REPLACE_NOT_REPLACING); + d = maxdim(d, GetStringBoundingBox(STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED)); d.width += WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT; d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); @@ -323,6 +357,10 @@ public: } break; + case WID_RV_SORT_DROPDOWN: + SetDParam(0, _engine_sort_listing[this->window_number][this->sort_criteria]); + break; + case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: { const Company *c = Company::Get(_local_company); SetDParam(0, c->settings.renew_keep_length ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF); @@ -338,22 +376,27 @@ public: virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { + case WID_RV_SORT_ASCENDING_DESCENDING: + this->DrawSortButtonState(WID_RV_SORT_ASCENDING_DESCENDING, this->descending_sort_order ? SBS_DOWN : SBS_UP); + break; + case WID_RV_INFO_TAB: { const Company *c = Company::Get(_local_company); + StringID str; if (this->sel_engine[0] != INVALID_ENGINE) { if (!EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group)) { - SetDParam(0, STR_REPLACE_NOT_REPLACING); + str = STR_REPLACE_NOT_REPLACING; } else { bool when_old = false; EngineID e = EngineReplacementForCompany(c, this->sel_engine[0], this->sel_group, &when_old); - SetDParam(0, when_old ? STR_REPLACE_REPLACING_WHEN_OLD : STR_ENGINE_NAME); - SetDParam(1, e); + str = when_old ? STR_REPLACE_REPLACING_WHEN_OLD : STR_ENGINE_NAME; + SetDParam(0, e); } } else { - SetDParam(0, STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED); + str = STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED; } - DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_BLACK_STRING, TC_FROMSTRING, SA_HOR_CENTER); + DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_BLACK, SA_HOR_CENTER); break; } @@ -381,16 +424,12 @@ public: * Either engines list is empty * or The selected replacement engine has a replacement (to prevent loops). */ this->SetWidgetDisabledState(WID_RV_START_REPLACE, - this->sel_engine[0] == INVALID_ENGINE || - this->sel_engine[1] == INVALID_ENGINE || - EngineReplacementForCompany(c, this->sel_engine[1], this->sel_group) != INVALID_ENGINE); + this->sel_engine[0] == INVALID_ENGINE || this->sel_engine[1] == INVALID_ENGINE || EngineReplacementForCompany(c, this->sel_engine[1], this->sel_group) != INVALID_ENGINE); /* Disable the "Stop Replacing" button if: * The left engines list (existing vehicle) is empty * or The selected vehicle has no replacement set up */ - this->SetWidgetDisabledState(WID_RV_STOP_REPLACE, - this->sel_engine[0] == INVALID_ENGINE || - !EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group)); + this->SetWidgetDisabledState(WID_RV_STOP_REPLACE, this->sel_engine[0] == INVALID_ENGINE || !EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group)); if (this->window_number == VEH_TRAIN) { /* sets the colour of that art thing */ @@ -425,6 +464,25 @@ public: virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { + case WID_RV_SORT_ASCENDING_DESCENDING: + this->descending_sort_order ^= true; + _engine_sort_last_order[this->window_number] = this->descending_sort_order; + this->engines[1].ForceRebuild(); + this->SetDirty(); + break; + + case WID_RV_SHOW_HIDDEN_ENGINES: + this->show_hidden_engines ^= true; + _engine_sort_show_hidden_engines[this->window_number] = this->show_hidden_engines; + this->engines[1].ForceRebuild(); + this->SetWidgetLoweredState(widget, this->show_hidden_engines); + this->SetDirty(); + break; + + case WID_RV_SORT_DROPDOWN: + DisplayVehicleSortDropDown(this, static_cast(this->window_number), this->sort_criteria, WID_RV_SORT_DROPDOWN); + break; + case WID_RV_TRAIN_ENGINEWAGON_TOGGLE: this->replace_engines = !(this->replace_engines); this->engines[0].ForceRebuild(); @@ -484,6 +542,15 @@ public: virtual void OnDropdownSelect(int widget, int index) { switch (widget) { + case WID_RV_SORT_DROPDOWN: + if (this->sort_criteria != index) { + this->sort_criteria = index; + _engine_sort_last_criteria[this->window_number] = this->sort_criteria; + this->engines[1].ForceRebuild(); + this->SetDirty(); + } + break; + case WID_RV_TRAIN_RAILTYPE_DROPDOWN: { RailType temp = (RailType)index; if (temp == sel_railtype) return; // we didn't select a new one. No need to change anything @@ -535,6 +602,27 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_RV_SHOW_HIDDEN_ENGINES), SetDataTip(STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN, STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP), + NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), EndContainer(), + EndContainer(), + EndContainer(), + EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_LEFT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_LEFT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_LEFT_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_LEFT_SCROLLBAR), @@ -576,6 +664,27 @@ static const NWidgetPart _nested_replace_vehicle_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_RV_SHOW_HIDDEN_ENGINES), SetDataTip(STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN, STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP), + NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), EndContainer(), + EndContainer(), + EndContainer(), + EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_LEFT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_LEFT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_LEFT_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_LEFT_SCROLLBAR), diff --git a/src/base_consist.cpp b/src/base_consist.cpp index 005c886723..200512786c 100644 --- a/src/base_consist.cpp +++ b/src/base_consist.cpp @@ -12,6 +12,9 @@ #include "stdafx.h" #include "base_consist.h" #include "vehicle_base.h" +#include "string_func.h" + +#include "safeguards.h" BaseConsist::~BaseConsist() { @@ -27,7 +30,7 @@ void BaseConsist::CopyConsistPropertiesFrom(const BaseConsist *src) if (this == src) return; free(this->name); - this->name = src->name != NULL ? strdup(src->name) : NULL; + this->name = src->name != NULL ? stredup(src->name) : NULL; this->current_order_time = src->current_order_time; this->lateness_counter = src->lateness_counter; @@ -41,4 +44,8 @@ void BaseConsist::CopyConsistPropertiesFrom(const BaseConsist *src) if (HasBit(src->vehicle_flags, VF_TIMETABLE_STARTED)) SetBit(this->vehicle_flags, VF_TIMETABLE_STARTED); if (HasBit(src->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(this->vehicle_flags, VF_AUTOFILL_TIMETABLE); if (HasBit(src->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)) SetBit(this->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); + if (HasBit(src->vehicle_flags, VF_SERVINT_IS_PERCENT) != HasBit(this->vehicle_flags, VF_SERVINT_IS_PERCENT)) { + ToggleBit(this->vehicle_flags, VF_SERVINT_IS_PERCENT); + } + if (HasBit(src->vehicle_flags, VF_SERVINT_IS_CUSTOM)) SetBit(this->vehicle_flags, VF_SERVINT_IS_CUSTOM); } diff --git a/src/base_media_func.h b/src/base_media_func.h index 0dfc523e8c..e3678d5a15 100644 --- a/src/base_media_func.h +++ b/src/base_media_func.h @@ -51,16 +51,16 @@ bool BaseSet::FillSetDetails(IniFile *ini, const IniItem *item; fetch_metadata("name"); - this->name = strdup(item->value); + this->name = stredup(item->value); fetch_metadata("description"); - this->description[strdup("")] = strdup(item->value); + this->description[stredup("")] = stredup(item->value); /* Add the translations of the descriptions too. */ for (const IniItem *item = metadata->item; item != NULL; item = item->next) { if (strncmp("description.", item->name, 12) != 0) continue; - this->description[strdup(item->name + 12)] = strdup(item->value); + this->description[stredup(item->name + 12)] = stredup(item->value); } fetch_metadata("shortname"); @@ -100,7 +100,7 @@ bool BaseSet::FillSetDetails(IniFile *ini, const /* Then find the MD5 checksum */ item = md5s->GetItem(filename, false); - if (item == NULL) { + if (item == NULL || item->value == NULL) { DEBUG(grf, 0, "No MD5 checksum specified for: %s (in %s)", filename, full_filename); return false; } @@ -125,13 +125,13 @@ bool BaseSet::FillSetDetails(IniFile *ini, const } /* Then find the warning message when the file's missing */ - item = filename == NULL ? NULL : origin->GetItem(filename, false); + item = origin->GetItem(filename, false); if (item == NULL) item = origin->GetItem("default", false); if (item == NULL) { DEBUG(grf, 1, "No origin warning message specified for: %s", filename); - file->missing_warning = strdup(""); + file->missing_warning = stredup(""); } else { - file->missing_warning = strdup(item->value); + file->missing_warning = stredup(item->value); } switch (T::CheckMD5(file, BASESET_DIR)) { @@ -164,7 +164,7 @@ bool BaseMedia::AddFile(const char *filename, size_t basepath_length, IniFile *ini = new IniFile(); ini->LoadFromDisk(filename, BASESET_DIR); - char *path = strdup(filename + basepath_length); + char *path = stredup(filename + basepath_length); char *psep = strrchr(path, PATHSEPCHAR); if (psep != NULL) { psep[1] = '\0'; diff --git a/src/base_station_base.h b/src/base_station_base.h index 812692bb17..53e104a826 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -103,7 +103,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { * @param available will return false if ever the variable asked for does not exist * @return the value stored in the corresponding variable */ - virtual uint32 GetNewGRFVariable(const struct ResolverObject *object, byte variable, byte parameter, bool *available) const = 0; + virtual uint32 GetNewGRFVariable(const struct ResolverObject &object, byte variable, byte parameter, bool *available) const = 0; /** * Update the coordinated of the sign (as shown in the viewport). diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index 7681d25ed5..a3083e40b3 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -15,6 +15,8 @@ #include "../table/sprites.h" +#include "../safeguards.h" + /** Instantiation of the 32bpp with animation blitter factory. */ static FBlitter_32bppAnim iFBlitter_32bppAnim; @@ -133,6 +135,56 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel } break; + case BM_CRASH_REMAP: + if (src_px->a == 255) { + do { + uint m = *src_n; + if (m == 0) { + uint8 g = MakeDark(src_px->r, src_px->g, src_px->b); + *dst = ComposeColourRGBA(g, g, g, src_px->a, *dst); + *anim = 0; + } else { + uint r = remap[GB(m, 0, 8)]; + *anim = r | (m & 0xFF00); + if (r != 0) *dst = this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)); + } + anim++; + dst++; + src_px++; + src_n++; + } while (--n != 0); + } else { + do { + uint m = *src_n; + if (m == 0) { + if (src_px->a != 0) { + uint8 g = MakeDark(src_px->r, src_px->g, src_px->b); + *dst = ComposeColourRGBA(g, g, g, src_px->a, *dst); + *anim = 0; + } + } else { + uint r = remap[GB(m, 0, 8)]; + *anim = 0; + if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)), src_px->a, *dst); + } + anim++; + dst++; + src_px++; + src_n++; + } while (--n != 0); + } + break; + + + case BM_BLACK_REMAP: + do { + *dst++ = Colour(0, 0, 0); + *anim++ = 0; + src_px++; + src_n++; + } while (--n != 0); + break; + case BM_TRANSPARENT: /* TODO -- We make an assumption here that the remap in fact is transparency, not some colour. * This is never a problem with the code we produce, but newgrfs can make it fail... or at least: @@ -208,6 +260,8 @@ void Blitter_32bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomL case BM_NORMAL: Draw (bp, zoom); return; case BM_COLOUR_REMAP: Draw(bp, zoom); return; case BM_TRANSPARENT: Draw (bp, zoom); return; + case BM_CRASH_REMAP: Draw (bp, zoom); return; + case BM_BLACK_REMAP: Draw (bp, zoom); return; } } @@ -439,7 +493,7 @@ void Blitter_32bppAnim::PaletteAnimate(const Palette &palette) } /* Make sure the backend redraws the whole screen */ - _video_driver->MakeDirty(0, 0, _screen.width, _screen.height); + VideoDriver::GetInstance()->MakeDirty(0, 0, _screen.width, _screen.height); } Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation() diff --git a/src/blitter/32bpp_anim.hpp b/src/blitter/32bpp_anim.hpp index c03062dc2b..e707c4437d 100644 --- a/src/blitter/32bpp_anim.hpp +++ b/src/blitter/32bpp_anim.hpp @@ -15,8 +15,8 @@ #include "32bpp_optimized.hpp" /** The optimised 32 bpp blitter with palette animation. */ -class Blitter_32bppAnim FINAL : public Blitter_32bppOptimized { -private: +class Blitter_32bppAnim : public Blitter_32bppOptimized { +protected: uint16 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation int anim_buf_width; ///< The width of the animation buffer. int anim_buf_height; ///< The height of the animation buffer. @@ -56,10 +56,9 @@ public: }; /** Factory for the 32bpp blitter with animation. */ -class FBlitter_32bppAnim: public BlitterFactory { +class FBlitter_32bppAnim : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "32bpp-anim"; } - /* virtual */ const char *GetDescription() { return "32bpp Animation Blitter (palette animation)"; } + FBlitter_32bppAnim() : BlitterFactory("32bpp-anim", "32bpp Animation Blitter (palette animation)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppAnim(); } }; diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp new file mode 100644 index 0000000000..7d4b66fca6 --- /dev/null +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -0,0 +1,415 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse4_anim.cpp Implementation of the SSE4 32 bpp blitter with animation support. */ + +#ifdef WITH_SSE + +#include "../stdafx.h" +#include "../video/video_driver.hpp" +#include "../table/sprites.h" +#include "32bpp_anim_sse4.hpp" +#include "32bpp_sse_func.hpp" + +#include "../safeguards.h" + +/** Instantiation of the SSE4 32bpp blitter factory. */ +static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim; + +/** + * Draws a sprite to a (screen) buffer. It is templated to allow faster operation. + * + * @tparam mode blitter mode + * @param bp further blitting parameters + * @param zoom zoom level at which we are drawing + */ +IGNORE_UNINITIALIZED_WARNING_START +template +inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) +{ + const byte * const remap = bp->remap; + Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; + uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_width + bp->left; + int effective_width = bp->width; + + /* Find where to start reading in the source sprite. */ + const Blitter_32bppSSE_Base::SpriteData * const sd = (const Blitter_32bppSSE_Base::SpriteData *) bp->sprite; + const SpriteInfo * const si = &sd->infos[zoom]; + const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width; + const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); + + if (read_mode != RM_WITH_MARGIN) { + src_rgba_line += bp->skip_left; + src_mv_line += bp->skip_left; + } + const MapValue *src_mv = src_mv_line; + + /* Load these variables into register before loop. */ + const __m128i a_cm = ALPHA_CONTROL_MASK; + const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK; + const __m128i tr_nom_base = TRANSPARENT_NOM_BASE; + + for (int y = bp->height; y != 0; y--) { + Colour *dst = dst_line; + const Colour *src = src_rgba_line + META_LENGTH; + if (mode != BM_TRANSPARENT) src_mv = src_mv_line; + uint16 *anim = anim_line; + + if (read_mode == RM_WITH_MARGIN) { + assert(bt_last == BT_NONE); // or you must ensure block type is preserved + anim += src_rgba_line[0].data; + src += src_rgba_line[0].data; + dst += src_rgba_line[0].data; + if (mode != BM_TRANSPARENT) src_mv += src_rgba_line[0].data; + const int width_diff = si->sprite_width - bp->width; + effective_width = bp->width - (int) src_rgba_line[0].data; + const int delta_diff = (int) src_rgba_line[1].data - width_diff; + const int new_width = effective_width - delta_diff; + effective_width = delta_diff > 0 ? new_width : effective_width; + if (effective_width <= 0) goto next_line; + } + + switch (mode) { + default: + if (!translucent) { + for (uint x = (uint) effective_width; x > 0; x--) { + if (src->a) { + if (animated) { + *anim = *(const uint16*) src_mv; + *dst = (src_mv->m >= PALETTE_ANIM_START) ? AdjustBrightneSSE(this->LookupColourInPalette(src_mv->m), src_mv->v) : src->data; + } else { + *anim = 0; + *dst = *src; + } + } + if (animated) src_mv++; + anim++; + src++; + dst++; + } + break; + } + + for (uint x = (uint) effective_width/2; x != 0; x--) { + uint32 mvX2 = *((uint32 *) const_cast(src_mv)); + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + + if (animated) { + /* Remap colours. */ + const byte m0 = mvX2; + if (m0 >= PALETTE_ANIM_START) { + const Colour c0 = (this->LookupColourInPalette(m0).data & 0x00FFFFFF) | (src[0].data & 0xFF000000); + InsertFirstUint32(AdjustBrightneSSE(c0, (byte) (mvX2 >> 8)).data, srcABCD); + } + const byte m1 = mvX2 >> 16; + if (m1 >= PALETTE_ANIM_START) { + const Colour c1 = (this->LookupColourInPalette(m1).data & 0x00FFFFFF) | (src[1].data & 0xFF000000); + InsertSecondUint32(AdjustBrightneSSE(c1, (byte) (mvX2 >> 24)).data, srcABCD); + } + + /* Update anim buffer. */ + const byte a0 = src[0].a; + const byte a1 = src[1].a; + uint32 anim01 = 0; + if (a0 == 255) { + if (a1 == 255) { + *(uint32*) anim = mvX2; + goto bmno_full_opacity; + } + anim01 = (uint16) mvX2; + } else if (a0 == 0) { + if (a1 == 0) { + goto bmno_full_transparency; + } else { + if (a1 == 255) anim[1] = (uint16) (mvX2 >> 16); + goto bmno_alpha_blend; + } + } + if (a1 > 0) { + if (a1 == 255) anim01 |= mvX2 & 0xFFFF0000; + *(uint32*) anim = anim01; + } else { + anim[0] = (uint16) anim01; + } + } else { + if (src[0].a) anim[0] = 0; + if (src[1].a) anim[1] = 0; + } + + /* Blend colours. */ +bmno_alpha_blend: + srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm); +bmno_full_opacity: + _mm_storel_epi64((__m128i *) dst, srcABCD); +bmno_full_transparency: + src_mv += 2; + src += 2; + anim += 2; + dst += 2; + } + + if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) { + if (src->a == 0) { + } else if (src->a == 255) { + *anim = *(const uint16*) src_mv; + *dst = (src_mv->m >= PALETTE_ANIM_START) ? AdjustBrightneSSE(LookupColourInPalette(src_mv->m), src_mv->v) : *src; + } else { + *anim = 0; + __m128i srcABCD; + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + if (src_mv->m >= PALETTE_ANIM_START) { + Colour colour = AdjustBrightneSSE(LookupColourInPalette(src_mv->m), src_mv->v); + colour.a = src->a; + srcABCD = _mm_cvtsi32_si128(colour.data); + } else { + srcABCD = _mm_cvtsi32_si128(src->data); + } + dst->data = _mm_cvtsi128_si32(AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm)); + } + } + break; + + case BM_COLOUR_REMAP: + for (uint x = (uint) effective_width / 2; x != 0; x--) { + uint32 mvX2 = *((uint32 *) const_cast(src_mv)); + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + + /* Remap colours. */ + const uint m0 = (byte) mvX2; + const uint r0 = remap[m0]; + const uint m1 = (byte) (mvX2 >> 16); + const uint r1 = remap[m1]; + if (mvX2 & 0x00FF00FF) { + #define CMOV_REMAP(m_colour, m_colour_init, m_src, m_m) \ + /* Written so the compiler uses CMOV. */ \ + Colour m_colour = m_colour_init; \ + { \ + const Colour srcm = (Colour) (m_src); \ + const uint m = (byte) (m_m); \ + const uint r = remap[m]; \ + const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \ + m_colour = r == 0 ? m_colour : cmap; \ + m_colour = m != 0 ? m_colour : srcm; \ + } +#ifdef _SQ64 + uint64 srcs = _mm_cvtsi128_si64(srcABCD); + uint64 dsts; + if (animated) dsts = _mm_cvtsi128_si64(dstABCD); + uint64 remapped_src = 0; + CMOV_REMAP(c0, animated ? dsts : 0, srcs, mvX2); + remapped_src = c0.data; + CMOV_REMAP(c1, animated ? dsts >> 32 : 0, srcs >> 32, mvX2 >> 16); + remapped_src |= (uint64) c1.data << 32; + srcABCD = _mm_cvtsi64_si128(remapped_src); +#else + Colour remapped_src[2]; + CMOV_REMAP(c0, animated ? _mm_cvtsi128_si32(dstABCD) : 0, _mm_cvtsi128_si32(srcABCD), mvX2); + remapped_src[0] = c0.data; + CMOV_REMAP(c1, animated ? dst[1] : 0, src[1], mvX2 >> 16); + remapped_src[1] = c1.data; + srcABCD = _mm_loadl_epi64((__m128i*) &remapped_src); +#endif + + if ((mvX2 & 0xFF00FF00) != 0x80008000) srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, mvX2); + } + + /* Update anim buffer. */ + if (animated) { + const byte a0 = src[0].a; + const byte a1 = src[1].a; + uint32 anim01 = mvX2 & 0xFF00FF00; + if (a0 == 255) { + anim01 |= r0; + if (a1 == 255) { + *(uint32*) anim = anim01 | (r1 << 16); + goto bmcr_full_opacity; + } + } else if (a0 == 0) { + if (a1 == 0) { + goto bmcr_full_transparency; + } else { + if (a1 == 255) { + anim[1] = r1 | (anim01 >> 16); + } + goto bmcr_alpha_blend; + } + } + if (a1 > 0) { + if (a1 == 255) anim01 |= r1 << 16; + *(uint32*) anim = anim01; + } else { + anim[0] = (uint16) anim01; + } + } else { + if (src[0].a) anim[0] = 0; + if (src[1].a) anim[1] = 0; + } + + /* Blend colours. */ +bmcr_alpha_blend: + srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm); +bmcr_full_opacity: + _mm_storel_epi64((__m128i *) dst, srcABCD); +bmcr_full_transparency: + src_mv += 2; + dst += 2; + src += 2; + anim += 2; + } + + if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) { + /* In case the m-channel is zero, do not remap this pixel in any way. */ + __m128i srcABCD; + if (src->a == 0) break; + if (src_mv->m) { + const uint r = remap[src_mv->m]; + *anim = (animated && src->a == 255) ? r | ((uint16) src_mv->v << 8 ) : 0; + if (r != 0) { + Colour remapped_colour = AdjustBrightneSSE(this->LookupColourInPalette(r), src_mv->v); + if (src->a == 255) { + *dst = remapped_colour; + } else { + remapped_colour.a = src->a; + srcABCD = _mm_cvtsi32_si128(remapped_colour.data); + goto bmcr_alpha_blend_single; + } + } + } else { + *anim = 0; + srcABCD = _mm_cvtsi32_si128(src->data); + if (src->a < 255) { +bmcr_alpha_blend_single: + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm); + } + dst->data = _mm_cvtsi128_si32(srcABCD); + } + } + break; + + case BM_TRANSPARENT: + /* Make the current colour a bit more black, so it looks like this image is transparent. */ + for (uint x = (uint) bp->width / 2; x > 0; x--) { + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + _mm_storel_epi64((__m128i *) dst, DarkenTwoPixels(srcABCD, dstABCD, a_cm, tr_nom_base)); + src += 2; + dst += 2; + anim += 2; + if (src[-2].a) anim[-2] = 0; + if (src[-1].a) anim[-1] = 0; + } + + if ((bt_last == BT_NONE && bp->width & 1) || bt_last == BT_ODD) { + __m128i srcABCD = _mm_cvtsi32_si128(src->data); + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + dst->data = _mm_cvtsi128_si32(DarkenTwoPixels(srcABCD, dstABCD, a_cm, tr_nom_base)); + if (src[0].a) anim[0] = 0; + } + break; + + case BM_CRASH_REMAP: + for (uint x = (uint) bp->width; x > 0; x--) { + if (src_mv->m == 0) { + if (src->a != 0) { + uint8 g = MakeDark(src->r, src->g, src->b); + *dst = ComposeColourRGBA(g, g, g, src->a, *dst); + *anim = 0; + } + } else { + uint r = remap[src_mv->m]; + if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), src_mv->v), src->a, *dst); + } + src_mv++; + dst++; + src++; + anim++; + } + break; + + case BM_BLACK_REMAP: + for (uint x = (uint) bp->width; x > 0; x--) { + if (src->a != 0) { + *dst = Colour(0, 0, 0); + *anim = 0; + } + src_mv++; + dst++; + src++; + anim++; + } + break; + } + +next_line: + if (mode != BM_TRANSPARENT) src_mv_line += si->sprite_width; + src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size); + dst_line += bp->pitch; + anim_line += this->anim_buf_width; + } +} +IGNORE_UNINITIALIZED_WARNING_STOP + +/** + * Draws a sprite to a (screen) buffer. Calls adequate templated function. + * + * @param bp further blitting parameters + * @param mode blitter mode + * @param zoom zoom level at which we are drawing + */ +void Blitter_32bppSSE4_Anim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) +{ + const Blitter_32bppSSE_Base::SpriteFlags sprite_flags = ((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags; + switch (mode) { + default: { +bm_normal: + if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) { + const BlockType bt_last = (BlockType) (bp->width & 1); + if (bt_last == BT_EVEN) { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } else { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } + } else { +#ifdef _SQ64 + if (sprite_flags & SF_TRANSLUCENT) { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } else { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } +#else + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); +#endif + } + break; + } + case BM_COLOUR_REMAP: + if (sprite_flags & SF_NO_REMAP) goto bm_normal; + if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } else { + if (sprite_flags & SF_NO_ANIM) Draw(bp, zoom); + else Draw(bp, zoom); + } + break; + case BM_TRANSPARENT: Draw(bp, zoom); return; + case BM_CRASH_REMAP: Draw(bp, zoom); return; + case BM_BLACK_REMAP: Draw(bp, zoom); return; + } +} + +#endif /* WITH_SSE */ diff --git a/src/blitter/32bpp_anim_sse4.hpp b/src/blitter/32bpp_anim_sse4.hpp new file mode 100644 index 0000000000..e2d4cfc231 --- /dev/null +++ b/src/blitter/32bpp_anim_sse4.hpp @@ -0,0 +1,53 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse4_anim.hpp A SSE4 32 bpp blitter with animation support. */ + +#ifndef BLITTER_32BPP_SSE4_ANIM_HPP +#define BLITTER_32BPP_SSE4_ANIM_HPP + +#ifdef WITH_SSE + +#ifndef SSE_VERSION +#define SSE_VERSION 4 +#endif + +#ifndef FULL_ANIMATION +#define FULL_ANIMATION 1 +#endif + +#include "32bpp_anim.hpp" +#include "32bpp_sse4.hpp" + +#undef MARGIN_NORMAL_THRESHOLD +#define MARGIN_NORMAL_THRESHOLD 4 + +/** The SSE4 32 bpp blitter with palette animation. */ +class Blitter_32bppSSE4_Anim FINAL : public Blitter_32bppAnim, public Blitter_32bppSSE_Base { +private: + +public: + template + /* virtual */ void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); + /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { + return Blitter_32bppSSE_Base::Encode(sprite, allocator); + } + /* virtual */ const char *GetName() { return "32bpp-sse4-anim"; } +}; + +/** Factory for the SSE4 32 bpp blitter (with palette animation). */ +class FBlitter_32bppSSE4_Anim: public BlitterFactory { +public: + FBlitter_32bppSSE4_Anim() : BlitterFactory("32bpp-sse4-anim", "SSE4 Blitter (palette animation)", HasCPUIDFlag(1, 2, 19)) {} + /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE4_Anim(); } +}; + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSE4_ANIM_HPP */ diff --git a/src/blitter/32bpp_base.cpp b/src/blitter/32bpp_base.cpp index 3ea03327f6..26dd2f037e 100644 --- a/src/blitter/32bpp_base.cpp +++ b/src/blitter/32bpp_base.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "32bpp_base.hpp" +#include "../safeguards.h" + void *Blitter_32bppBase::MoveTo(void *video, int x, int y) { return (uint32 *)video + x + y * _screen.pitch; diff --git a/src/blitter/32bpp_base.hpp b/src/blitter/32bpp_base.hpp index ca58f0353f..26c3dee3fd 100644 --- a/src/blitter/32bpp_base.hpp +++ b/src/blitter/32bpp_base.hpp @@ -112,6 +112,19 @@ public: return Colour(r * nom / denom, g * nom / denom, b * nom / denom); } + /** + * Make a colour dark grey, for specialized 32bpp remapping. + * @param r red component + * @param g green component + * @param b blue component + * @return the brightness value of the new colour, now dark grey. + */ + static inline uint8 MakeDark(uint8 r, uint8 g, uint8 b) + { + /* Magic-numbers are ~66% of those used in MakeGrey() */ + return ((r * 13063) + (g * 25647) + (b * 4981)) / 65536; + } + /** * Make a colour grey - based. * @param colour the colour to make grey. diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index 1c1ac816d6..cc056f5b59 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -14,6 +14,8 @@ #include "../settings_type.h" #include "32bpp_optimized.hpp" +#include "../safeguards.h" + /** Instantiation of the optimized 32bpp blitter factory. */ static FBlitter_32bppOptimized iFBlitter_32bppOptimized; @@ -141,6 +143,49 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL } break; + case BM_CRASH_REMAP: + if (src_px->a == 255) { + do { + uint m = *src_n; + if (m == 0) { + uint8 g = MakeDark(src_px->r, src_px->g, src_px->b); + *dst = ComposeColourRGBA(g, g, g, src_px->a, *dst); + } else { + uint r = remap[GB(m, 0, 8)]; + if (r != 0) *dst = this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)); + } + dst++; + src_px++; + src_n++; + } while (--n != 0); + } else { + do { + uint m = *src_n; + if (m == 0) { + if (src_px->a != 0) { + uint8 g = MakeDark(src_px->r, src_px->g, src_px->b); + *dst = ComposeColourRGBA(g, g, g, src_px->a, *dst); + } + } else { + uint r = remap[GB(m, 0, 8)]; + if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)), src_px->a, *dst); + } + dst++; + src_px++; + src_n++; + } while (--n != 0); + } + break; + + case BM_BLACK_REMAP: + do { + *dst = Colour(0, 0, 0); + dst++; + src_px++; + src_n++; + } while (--n != 0); + break; + case BM_TRANSPARENT: /* TODO -- We make an assumption here that the remap in fact is transparency, not some colour. * This is never a problem with the code we produce, but newgrfs can make it fail... or at least: @@ -204,10 +249,12 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, case BM_NORMAL: Draw (bp, zoom); return; case BM_COLOUR_REMAP: Draw(bp, zoom); return; case BM_TRANSPARENT: Draw (bp, zoom); return; + case BM_CRASH_REMAP: Draw (bp, zoom); return; + case BM_BLACK_REMAP: Draw (bp, zoom); return; } } -Sprite *Blitter_32bppOptimized::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { /* streams of pixels (a, r, g, b channels) * diff --git a/src/blitter/32bpp_optimized.hpp b/src/blitter/32bpp_optimized.hpp index c8cfd91cf9..c261aa33d6 100644 --- a/src/blitter/32bpp_optimized.hpp +++ b/src/blitter/32bpp_optimized.hpp @@ -24,7 +24,7 @@ public: }; /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); - /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); /* virtual */ const char *GetName() { return "32bpp-optimized"; } @@ -32,10 +32,9 @@ public: }; /** Factory for the optimised 32 bpp blitter (without palette animation). */ -class FBlitter_32bppOptimized: public BlitterFactory { +class FBlitter_32bppOptimized : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "32bpp-optimized"; } - /* virtual */ const char *GetDescription() { return "32bpp Optimized Blitter (no palette animation)"; } + FBlitter_32bppOptimized() : BlitterFactory("32bpp-optimized", "32bpp Optimized Blitter (no palette animation)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppOptimized(); } }; diff --git a/src/blitter/32bpp_simple.cpp b/src/blitter/32bpp_simple.cpp index 73487e54cd..92375be165 100644 --- a/src/blitter/32bpp_simple.cpp +++ b/src/blitter/32bpp_simple.cpp @@ -15,6 +15,8 @@ #include "../table/sprites.h" +#include "../safeguards.h" + /** Instantiation of the simple 32bpp blitter factory. */ static FBlitter_32bppSimple iFBlitter_32bppSimple; @@ -45,6 +47,23 @@ void Blitter_32bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoo } break; + case BM_CRASH_REMAP: + if (src->m == 0) { + if (src->a != 0) { + uint8 g = MakeDark(src->r, src->g, src->b); + *dst = ComposeColourRGBA(g, g, g, src->a, *dst); + } + } else { + if (bp->remap[src->m] != 0) *dst = ComposeColourPA(this->AdjustBrightness(this->LookupColourInPalette(bp->remap[src->m]), src->v), src->a, *dst); + } + break; + + case BM_BLACK_REMAP: + if (src->a != 0) { + *dst = Colour(0, 0, 0); + } + break; + case BM_TRANSPARENT: /* TODO -- We make an assumption here that the remap in fact is transparency, not some colour. * This is never a problem with the code we produce, but newgrfs can make it fail... or at least: @@ -92,10 +111,10 @@ void Blitter_32bppSimple::DrawColourMappingRect(void *dst, int width, int height DEBUG(misc, 0, "32bpp blitter doesn't know how to draw this colour table ('%d')", pal); } -Sprite *Blitter_32bppSimple::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { Blitter_32bppSimple::Pixel *dst; - Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width * sizeof(*dst)); + Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite->height * (size_t)sprite->width * sizeof(*dst)); dest_sprite->height = sprite->height; dest_sprite->width = sprite->width; diff --git a/src/blitter/32bpp_simple.hpp b/src/blitter/32bpp_simple.hpp index f09920d0e9..0751f6f753 100644 --- a/src/blitter/32bpp_simple.hpp +++ b/src/blitter/32bpp_simple.hpp @@ -28,16 +28,15 @@ class Blitter_32bppSimple : public Blitter_32bppBase { public: /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); /* virtual */ void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal); - /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); /* virtual */ const char *GetName() { return "32bpp-simple"; } }; /** Factory for the simple 32 bpp blitter. */ -class FBlitter_32bppSimple: public BlitterFactory { +class FBlitter_32bppSimple : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "32bpp-simple"; } - /* virtual */ const char *GetDescription() { return "32bpp Simple Blitter (no palette animation)"; } + FBlitter_32bppSimple() : BlitterFactory("32bpp-simple", "32bpp Simple Blitter (no palette animation)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSimple(); } }; diff --git a/src/blitter/32bpp_sse2.cpp b/src/blitter/32bpp_sse2.cpp new file mode 100644 index 0000000000..ae2b3ccc52 --- /dev/null +++ b/src/blitter/32bpp_sse2.cpp @@ -0,0 +1,143 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse2.cpp Implementation of the SSE2 32 bpp blitter. */ + +#ifdef WITH_SSE + +#include "../stdafx.h" +#include "../zoom_func.h" +#include "../settings_type.h" +#include "32bpp_sse2.hpp" +#include "32bpp_sse_func.hpp" + +#include "../safeguards.h" + +/** Instantiation of the SSE2 32bpp blitter factory. */ +static FBlitter_32bppSSE2 iFBlitter_32bppSSE2; + +Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +{ + /* First uint32 of a line = the number of transparent pixels from the left. + * Second uint32 of a line = the number of transparent pixels from the right. + * Then all RGBA then all MV. + */ + ZoomLevel zoom_min = ZOOM_LVL_NORMAL; + ZoomLevel zoom_max = ZOOM_LVL_NORMAL; + if (sprite->type != ST_FONT) { + zoom_min = _settings_client.gui.zoom_min; + zoom_max = _settings_client.gui.zoom_max; + if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX; + } + + /* Calculate sizes and allocate. */ + SpriteData sd; + memset(&sd, 0, sizeof(sd)); + uint all_sprites_size = 0; + for (ZoomLevel z = zoom_min; z <= zoom_max; z++) { + const SpriteLoader::Sprite *src_sprite = &sprite[z]; + sd.infos[z].sprite_width = src_sprite->width; + sd.infos[z].sprite_offset = all_sprites_size; + sd.infos[z].sprite_line_size = sizeof(Colour) * src_sprite->width + sizeof(uint32) * META_LENGTH; + + const uint rgba_size = sd.infos[z].sprite_line_size * src_sprite->height; + sd.infos[z].mv_offset = all_sprites_size + rgba_size; + + const uint mv_size = sizeof(MapValue) * src_sprite->width * src_sprite->height; + all_sprites_size += rgba_size + mv_size; + } + + Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size); + dst_sprite->height = sprite->height; + dst_sprite->width = sprite->width; + dst_sprite->x_offs = sprite->x_offs; + dst_sprite->y_offs = sprite->y_offs; + memcpy(dst_sprite->data, &sd, sizeof(SpriteData)); + + /* Copy colours and determine flags. */ + bool has_remap = false; + bool has_anim = false; + bool has_translucency = false; + for (ZoomLevel z = zoom_min; z <= zoom_max; z++) { + const SpriteLoader::Sprite *src_sprite = &sprite[z]; + const SpriteLoader::CommonPixel *src = (const SpriteLoader::CommonPixel *) src_sprite->data; + Colour *dst_rgba_line = (Colour *) &dst_sprite->data[sizeof(SpriteData) + sd.infos[z].sprite_offset]; + MapValue *dst_mv = (MapValue *) &dst_sprite->data[sizeof(SpriteData) + sd.infos[z].mv_offset]; + for (uint y = src_sprite->height; y != 0; y--) { + Colour *dst_rgba = dst_rgba_line + META_LENGTH; + for (uint x = src_sprite->width; x != 0; x--) { + if (src->a != 0) { + dst_rgba->a = src->a; + if (src->a != 0 && src->a != 255) has_translucency = true; + dst_mv->m = src->m; + if (src->m != 0) { + /* Do some accounting for flags. */ + has_remap = true; + if (src->m >= PALETTE_ANIM_START) has_anim = true; + + /* Get brightest value (or default brightness if it's a black pixel). */ + const uint8 rgb_max = max(src->r, max(src->g, src->b)); + dst_mv->v = (rgb_max == 0) ? Blitter_32bppBase::DEFAULT_BRIGHTNESS : rgb_max; + + /* Pre-convert the mapping channel to a RGB value. */ + const Colour colour = AdjustBrightneSSE(Blitter_32bppBase::LookupColourInPalette(src->m), dst_mv->v); + dst_rgba->r = colour.r; + dst_rgba->g = colour.g; + dst_rgba->b = colour.b; + } else { + dst_rgba->r = src->r; + dst_rgba->g = src->g; + dst_rgba->b = src->b; + dst_mv->v = Blitter_32bppBase::DEFAULT_BRIGHTNESS; + } + } else { + dst_rgba->data = 0; + *(uint16*) dst_mv = 0; + } + dst_rgba++; + dst_mv++; + src++; + } + + /* Count the number of transparent pixels from the left. */ + dst_rgba = dst_rgba_line + META_LENGTH; + uint32 nb_pix_transp = 0; + for (uint x = src_sprite->width; x != 0; x--) { + if (dst_rgba->a == 0) nb_pix_transp++; + else break; + dst_rgba++; + } + (*dst_rgba_line).data = nb_pix_transp; + + Colour *nb_right = dst_rgba_line + 1; + dst_rgba_line = (Colour*) ((byte*) dst_rgba_line + sd.infos[z].sprite_line_size); + + /* Count the number of transparent pixels from the right. */ + dst_rgba = dst_rgba_line - 1; + nb_pix_transp = 0; + for (uint x = src_sprite->width; x != 0; x--) { + if (dst_rgba->a == 0) nb_pix_transp++; + else break; + dst_rgba--; + } + (*nb_right).data = nb_pix_transp; + } + } + + /* Store sprite flags. */ + sd.flags = SF_NONE; + if (has_translucency) sd.flags |= SF_TRANSLUCENT; + if (!has_remap) sd.flags |= SF_NO_REMAP; + if (!has_anim) sd.flags |= SF_NO_ANIM; + memcpy(dst_sprite->data, &sd, sizeof(SpriteData)); + + return dst_sprite; +} + +#endif /* WITH_SSE */ diff --git a/src/blitter/32bpp_sse2.hpp b/src/blitter/32bpp_sse2.hpp new file mode 100644 index 0000000000..d6b17f679c --- /dev/null +++ b/src/blitter/32bpp_sse2.hpp @@ -0,0 +1,104 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse2.hpp SSE2 32 bpp blitter. */ + +#ifndef BLITTER_32BPP_SSE2_HPP +#define BLITTER_32BPP_SSE2_HPP + +#ifdef WITH_SSE + +#ifndef SSE_VERSION +#define SSE_VERSION 2 +#endif + +#ifndef FULL_ANIMATION +#define FULL_ANIMATION 0 +#endif + +#include "32bpp_sse_type.h" + +/** Base methods for 32bpp SSE blitters. */ +class Blitter_32bppSSE_Base { +public: + virtual ~Blitter_32bppSSE_Base() {} + + struct MapValue { + uint8 m; + uint8 v; + }; + assert_compile(sizeof(MapValue) == 2); + + /** Helper for creating specialised functions for specific optimisations. */ + enum ReadMode { + RM_WITH_SKIP, ///< Use normal code for skipping empty pixels. + RM_WITH_MARGIN, ///< Use cached number of empty pixels at begin and end of line to reduce work. + RM_NONE, ///< No specialisation. + }; + + /** Helper for creating specialised functions for the case where the sprite width is odd or even. */ + enum BlockType { + BT_EVEN, ///< An even number of pixels in the width; no need for a special case for the last pixel. + BT_ODD, ///< An odd number of pixels in the width; special case for the last pixel. + BT_NONE, ///< No specialisation for either case. + }; + + /** Helper for using specialised functions designed to prevent whenever it's possible things like: + * - IO (reading video buffer), + * - calculations (alpha blending), + * - heavy branching (remap lookups and animation buffer handling). + */ + enum SpriteFlags { + SF_NONE = 0, + SF_TRANSLUCENT = 1 << 1, ///< The sprite has at least 1 translucent pixel. + SF_NO_REMAP = 1 << 2, ///< The sprite has no remappable colour pixel. + SF_NO_ANIM = 1 << 3, ///< The sprite has no palette animated pixel. + }; + + /** Data stored about a (single) sprite. */ + struct SpriteInfo { + uint32 sprite_offset; ///< The offset to the sprite data. + uint32 mv_offset; ///< The offset to the map value data. + uint16 sprite_line_size; ///< The size of a single line (pitch). + uint16 sprite_width; ///< The width of the sprite. + }; + struct SpriteData { + SpriteFlags flags; + SpriteInfo infos[ZOOM_LVL_COUNT]; + byte data[]; ///< Data, all zoomlevels. + }; + + Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); +}; + +DECLARE_ENUM_AS_BIT_SET(Blitter_32bppSSE_Base::SpriteFlags); + +/** The SSE2 32 bpp blitter (without palette animation). */ +class Blitter_32bppSSE2 : public Blitter_32bppSimple, public Blitter_32bppSSE_Base { +public: + /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); + template + void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); + + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { + return Blitter_32bppSSE_Base::Encode(sprite, allocator); + } + + /* virtual */ const char *GetName() { return "32bpp-sse2"; } +}; + +/** Factory for the SSE2 32 bpp blitter (without palette animation). */ +class FBlitter_32bppSSE2 : public BlitterFactory { +public: + FBlitter_32bppSSE2() : BlitterFactory("32bpp-sse2", "32bpp SSE2 Blitter (no palette animation)", HasCPUIDFlag(1, 3, 26)) {} + /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE2(); } +}; + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSE2_HPP */ diff --git a/src/blitter/32bpp_sse4.cpp b/src/blitter/32bpp_sse4.cpp new file mode 100644 index 0000000000..723264f03f --- /dev/null +++ b/src/blitter/32bpp_sse4.cpp @@ -0,0 +1,25 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse4.cpp Implementation of the SSE4 32 bpp blitter. */ + +#ifdef WITH_SSE + +#include "../stdafx.h" +#include "../zoom_func.h" +#include "../settings_type.h" +#include "32bpp_sse4.hpp" +#include "32bpp_sse_func.hpp" + +#include "../safeguards.h" + +/** Instantiation of the SSE4 32bpp blitter factory. */ +static FBlitter_32bppSSE4 iFBlitter_32bppSSE4; + +#endif /* WITH_SSE */ diff --git a/src/blitter/32bpp_sse4.hpp b/src/blitter/32bpp_sse4.hpp new file mode 100644 index 0000000000..9c59d253f5 --- /dev/null +++ b/src/blitter/32bpp_sse4.hpp @@ -0,0 +1,44 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse4.hpp SSE4 32 bpp blitter. */ + +#ifndef BLITTER_32BPP_SSE4_HPP +#define BLITTER_32BPP_SSE4_HPP + +#ifdef WITH_SSE + +#ifndef SSE_VERSION +#define SSE_VERSION 4 +#endif + +#ifndef FULL_ANIMATION +#define FULL_ANIMATION 0 +#endif + +#include "32bpp_ssse3.hpp" + +/** The SSE4 32 bpp blitter (without palette animation). */ +class Blitter_32bppSSE4 : public Blitter_32bppSSSE3 { +public: + /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); + template + void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); + /* virtual */ const char *GetName() { return "32bpp-sse4"; } +}; + +/** Factory for the SSE4 32 bpp blitter (without palette animation). */ +class FBlitter_32bppSSE4: public BlitterFactory { +public: + FBlitter_32bppSSE4() : BlitterFactory("32bpp-sse4", "32bpp SSE4 Blitter (no palette animation)", HasCPUIDFlag(1, 2, 19)) {} + /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE4(); } +}; + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSE4_HPP */ diff --git a/src/blitter/32bpp_sse_func.hpp b/src/blitter/32bpp_sse_func.hpp new file mode 100644 index 0000000000..fb0ce9eb6e --- /dev/null +++ b/src/blitter/32bpp_sse_func.hpp @@ -0,0 +1,467 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse_func.hpp Functions related to SSE 32 bpp blitter. */ + +#ifndef BLITTER_32BPP_SSE_FUNC_HPP +#define BLITTER_32BPP_SSE_FUNC_HPP + +#ifdef WITH_SSE + +static inline void InsertFirstUint32(const uint32 value, __m128i &into) +{ +#if (SSE_VERSION >= 4) + into = _mm_insert_epi32(into, value, 0); +#else + into = _mm_insert_epi16(into, value, 0); + into = _mm_insert_epi16(into, value >> 16, 1); +#endif +} + +static inline void InsertSecondUint32(const uint32 value, __m128i &into) +{ +#if (SSE_VERSION >= 4) + into = _mm_insert_epi32(into, value, 1); +#else + into = _mm_insert_epi16(into, value, 2); + into = _mm_insert_epi16(into, value >> 16, 3); +#endif +} + +static inline void LoadUint64(const uint64 value, __m128i &into) +{ +#ifdef _SQ64 + into = _mm_cvtsi64_si128(value); +#else + #if (SSE_VERSION >= 4) + into = _mm_cvtsi32_si128(value); + InsertSecondUint32(value >> 32, into); + #else + (*(um128i*) &into).m128i_u64[0] = value; + #endif +#endif +} + +static inline __m128i PackUnsaturated(__m128i from, const __m128i &mask) +{ +#if (SSE_VERSION == 2) + from = _mm_and_si128(from, mask); // PAND, wipe high bytes to keep low bytes when packing + return _mm_packus_epi16(from, from); // PACKUSWB, pack 2 colours (with saturation) +#else + return _mm_shuffle_epi8(from, mask); +#endif +} + +static inline __m128i DistributeAlpha(const __m128i from, const __m128i &mask) +{ +#if (SSE_VERSION == 2) + __m128i alphaAB = _mm_shufflelo_epi16(from, 0x3F); // PSHUFLW, put alpha1 in front of each rgb1 + return _mm_shufflehi_epi16(alphaAB, 0x3F); // PSHUFHW, put alpha2 in front of each rgb2 +#else + return _mm_shuffle_epi8(from, mask); +#endif +} + +static inline __m128i AlphaBlendTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &pack_mask) +{ + __m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128()); // PUNPCKLBW, expand each uint8 into uint16 + __m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128()); + + __m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); // PCMPGTW, if (alpha > 0) a++; + alphaAB = _mm_srli_epi16(alphaAB, 15); + alphaAB = _mm_add_epi16(alphaAB, srcAB); + alphaAB = DistributeAlpha(alphaAB, distribution_mask); + + srcAB = _mm_sub_epi16(srcAB, dstAB); // PSUBW, (r - Cr) + srcAB = _mm_mullo_epi16(srcAB, alphaAB); // PMULLW, a*(r - Cr) + srcAB = _mm_srli_epi16(srcAB, 8); // PSRLW, a*(r - Cr)/256 + srcAB = _mm_add_epi16(srcAB, dstAB); // PADDW, a*(r - Cr)/256 + Cr + return PackUnsaturated(srcAB, pack_mask); +} + +/* Darken 2 pixels. + * rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4) + */ +static inline __m128i DarkenTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &tr_nom_base) +{ + __m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128()); + __m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128()); + __m128i alphaAB = DistributeAlpha(srcAB, distribution_mask); + alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits. + __m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB); + dstAB = _mm_mullo_epi16(dstAB, nom); + dstAB = _mm_srli_epi16(dstAB, 8); + return _mm_packus_epi16(dstAB, dstAB); +} + +IGNORE_UNINITIALIZED_WARNING_START +static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness) +{ + uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32; + c16 *= brightness; + uint64 c16_ob = c16; // Helps out of order execution. + c16 /= Blitter_32bppBase::DEFAULT_BRIGHTNESS; + c16 &= 0x01FF01FF01FFULL; + + /* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */ + c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001ULL) * 0xFF) & c16; + const uint ob = ((uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32)) / 2; + + const uint32 alpha32 = colour.data & 0xFF000000; + __m128i ret; + LoadUint64(c16, ret); + if (ob != 0) { + __m128i ob128 = _mm_cvtsi32_si128(ob); + ob128 = _mm_shufflelo_epi16(ob128, 0xC0); + __m128i white = OVERBRIGHT_VALUE_MASK; + __m128i c128 = ret; + ret = _mm_subs_epu16(white, c128); // PSUBUSW, (255 - rgb) + ret = _mm_mullo_epi16(ret, ob128); // PMULLW, ob*(255 - rgb) + ret = _mm_srli_epi16(ret, 8); // PSRLW, ob*(255 - rgb)/256 + ret = _mm_add_epi16(ret, c128); // PADDW, ob*(255 - rgb)/256 + rgb + } + + ret = _mm_packus_epi16(ret, ret); // PACKUSWB, saturate and pack. + return alpha32 | _mm_cvtsi128_si32(ret); +} +IGNORE_UNINITIALIZED_WARNING_STOP + +/** ReallyAdjustBrightness() is not called that often. + * Inlining this function implies a far jump, which has a huge latency. + */ +static inline Colour AdjustBrightneSSE(Colour colour, uint8 brightness) +{ + /* Shortcut for normal brightness. */ + if (brightness == Blitter_32bppBase::DEFAULT_BRIGHTNESS) return colour; + + return ReallyAdjustBrightness(colour, brightness); +} + +static inline __m128i AdjustBrightnessOfTwoPixels(__m128i from, uint32 brightness) +{ +#if (SSE_VERSION < 3) + NOT_REACHED(); +#else + /* The following dataflow differs from the one of AdjustBrightness() only for alpha. + * In order to keep alpha in colAB, insert a 1 in a unused brightness byte (a*1->a). + * OK, not a 1 but DEFAULT_BRIGHTNESS to compensate the div. + */ + brightness &= 0xFF00FF00; + brightness += Blitter_32bppBase::DEFAULT_BRIGHTNESS; + + __m128i colAB = _mm_unpacklo_epi8(from, _mm_setzero_si128()); + __m128i briAB = _mm_cvtsi32_si128(brightness); + briAB = _mm_shuffle_epi8(briAB, BRIGHTNESS_LOW_CONTROL_MASK); // DEFAULT_BRIGHTNESS in 0, 0x00 in 2. + colAB = _mm_mullo_epi16(colAB, briAB); + __m128i colAB_ob = _mm_srli_epi16(colAB, 8 + 7); + colAB = _mm_srli_epi16(colAB, 7); + + /* Sum overbright. + * Maximum for each rgb is 508 => 9 bits. The highest bit tells if there is overbright. + * -255 is changed in -256 so we just have to take the 8 lower bits into account. + */ + colAB = _mm_and_si128(colAB, BRIGHTNESS_DIV_CLEANER); + colAB_ob = _mm_and_si128(colAB_ob, OVERBRIGHT_PRESENCE_MASK); + colAB_ob = _mm_mullo_epi16(colAB_ob, OVERBRIGHT_VALUE_MASK); + colAB_ob = _mm_and_si128(colAB_ob, colAB); + __m128i obAB = _mm_hadd_epi16(_mm_hadd_epi16(colAB_ob, _mm_setzero_si128()), _mm_setzero_si128()); + + obAB = _mm_srli_epi16(obAB, 1); // Reduce overbright strength. + obAB = _mm_shuffle_epi8(obAB, OVERBRIGHT_CONTROL_MASK); + __m128i retAB = OVERBRIGHT_VALUE_MASK; // ob_mask is equal to white. + retAB = _mm_subs_epu16(retAB, colAB); // (255 - rgb) + retAB = _mm_mullo_epi16(retAB, obAB); // ob*(255 - rgb) + retAB = _mm_srli_epi16(retAB, 8); // ob*(255 - rgb)/256 + retAB = _mm_add_epi16(retAB, colAB); // ob*(255 - rgb)/256 + rgb + + return _mm_packus_epi16(retAB, retAB); +#endif +} + +#if FULL_ANIMATION == 0 +/** + * Draws a sprite to a (screen) buffer. It is templated to allow faster operation. + * + * @tparam mode blitter mode + * @param bp further blitting parameters + * @param zoom zoom level at which we are drawing + */ +IGNORE_UNINITIALIZED_WARNING_START +template +#if (SSE_VERSION == 2) +inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) +#elif (SSE_VERSION == 3) +inline void Blitter_32bppSSSE3::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) +#elif (SSE_VERSION == 4) +inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) +#endif +{ + const byte * const remap = bp->remap; + Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; + int effective_width = bp->width; + + /* Find where to start reading in the source sprite. */ + const SpriteData * const sd = (const SpriteData *) bp->sprite; + const SpriteInfo * const si = &sd->infos[zoom]; + const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width; + const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); + + if (read_mode != RM_WITH_MARGIN) { + src_rgba_line += bp->skip_left; + src_mv_line += bp->skip_left; + } + const MapValue *src_mv = src_mv_line; + + /* Load these variables into register before loop. */ +#if (SSE_VERSION == 2) + const __m128i clear_hi = CLEAR_HIGH_BYTE_MASK; + #define ALPHA_BLEND_PARAM_1 clear_hi + #define ALPHA_BLEND_PARAM_2 clear_hi + #define DARKEN_PARAM_1 tr_nom_base + #define DARKEN_PARAM_2 tr_nom_base +#else + const __m128i a_cm = ALPHA_CONTROL_MASK; + const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK; + #define ALPHA_BLEND_PARAM_1 a_cm + #define ALPHA_BLEND_PARAM_2 pack_low_cm + #define DARKEN_PARAM_1 a_cm + #define DARKEN_PARAM_2 tr_nom_base +#endif + const __m128i tr_nom_base = TRANSPARENT_NOM_BASE; + + for (int y = bp->height; y != 0; y--) { + Colour *dst = dst_line; + const Colour *src = src_rgba_line + META_LENGTH; + if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv = src_mv_line; + + if (read_mode == RM_WITH_MARGIN) { + assert(bt_last == BT_NONE); // or you must ensure block type is preserved + src += src_rgba_line[0].data; + dst += src_rgba_line[0].data; + if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv += src_rgba_line[0].data; + const int width_diff = si->sprite_width - bp->width; + effective_width = bp->width - (int) src_rgba_line[0].data; + const int delta_diff = (int) src_rgba_line[1].data - width_diff; + const int new_width = effective_width - delta_diff; + effective_width = delta_diff > 0 ? new_width : effective_width; + if (effective_width <= 0) goto next_line; + } + + switch (mode) { + default: + if (!translucent) { + for (uint x = (uint) effective_width; x > 0; x--) { + if (src->a) *dst = *src; + src++; + dst++; + } + break; + } + + for (uint x = (uint) effective_width / 2; x > 0; x--) { + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + _mm_storel_epi64((__m128i*) dst, AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2)); + src += 2; + dst += 2; + } + + if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) { + __m128i srcABCD = _mm_cvtsi32_si128(src->data); + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + dst->data = _mm_cvtsi128_si32(AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2)); + } + break; + + case BM_COLOUR_REMAP: +#if (SSE_VERSION >= 3) + for (uint x = (uint) effective_width / 2; x > 0; x--) { + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + uint32 mvX2 = *((uint32 *) const_cast(src_mv)); + + /* Remap colours. */ + if (mvX2 & 0x00FF00FF) { + #define CMOV_REMAP(m_colour, m_colour_init, m_src, m_m) \ + /* Written so the compiler uses CMOV. */ \ + Colour m_colour = m_colour_init; \ + { \ + const Colour srcm = (Colour) (m_src); \ + const uint m = (byte) (m_m); \ + const uint r = remap[m]; \ + const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \ + m_colour = r == 0 ? m_colour : cmap; \ + m_colour = m != 0 ? m_colour : srcm; \ + } +#ifdef _SQ64 + uint64 srcs = _mm_cvtsi128_si64(srcABCD); + uint64 remapped_src = 0; + CMOV_REMAP(c0, 0, srcs, mvX2); + remapped_src = c0.data; + CMOV_REMAP(c1, 0, srcs >> 32, mvX2 >> 16); + remapped_src |= (uint64) c1.data << 32; + srcABCD = _mm_cvtsi64_si128(remapped_src); +#else + Colour remapped_src[2]; + CMOV_REMAP(c0, 0, _mm_cvtsi128_si32(srcABCD), mvX2); + remapped_src[0] = c0.data; + CMOV_REMAP(c1, 0, src[1], mvX2 >> 16); + remapped_src[1] = c1.data; + srcABCD = _mm_loadl_epi64((__m128i*) &remapped_src); +#endif + + if ((mvX2 & 0xFF00FF00) != 0x80008000) srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, mvX2); + } + + /* Blend colours. */ + _mm_storel_epi64((__m128i *) dst, AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2)); + dst += 2; + src += 2; + src_mv += 2; + } + + if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) { +#else + for (uint x = (uint) effective_width; x > 0; x--) { +#endif + /* In case the m-channel is zero, do not remap this pixel in any way. */ + __m128i srcABCD; + if (src_mv->m) { + const uint r = remap[src_mv->m]; + if (r != 0) { + Colour remapped_colour = AdjustBrightneSSE(this->LookupColourInPalette(r), src_mv->v); + if (src->a == 255) { + *dst = remapped_colour; + } else { + remapped_colour.a = src->a; + srcABCD = _mm_cvtsi32_si128(remapped_colour.data); + goto bmcr_alpha_blend_single; + } + } + } else { + srcABCD = _mm_cvtsi32_si128(src->data); + if (src->a < 255) { +bmcr_alpha_blend_single: + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2); + } + dst->data = _mm_cvtsi128_si32(srcABCD); + } +#if (SSE_VERSION == 2) + src_mv++; + dst++; + src++; +#endif + } + break; + + case BM_TRANSPARENT: + /* Make the current colour a bit more black, so it looks like this image is transparent. */ + for (uint x = (uint) bp->width / 2; x > 0; x--) { + __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); + __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); + _mm_storel_epi64((__m128i *) dst, DarkenTwoPixels(srcABCD, dstABCD, DARKEN_PARAM_1, DARKEN_PARAM_2)); + src += 2; + dst += 2; + } + + if ((bt_last == BT_NONE && bp->width & 1) || bt_last == BT_ODD) { + __m128i srcABCD = _mm_cvtsi32_si128(src->data); + __m128i dstABCD = _mm_cvtsi32_si128(dst->data); + dst->data = _mm_cvtsi128_si32(DarkenTwoPixels(srcABCD, dstABCD, DARKEN_PARAM_1, DARKEN_PARAM_2)); + } + break; + + case BM_CRASH_REMAP: + for (uint x = (uint) bp->width; x > 0; x--) { + if (src_mv->m == 0) { + if (src->a != 0) { + uint8 g = MakeDark(src->r, src->g, src->b); + *dst = ComposeColourRGBA(g, g, g, src->a, *dst); + } + } else { + uint r = remap[src_mv->m]; + if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), src_mv->v), src->a, *dst); + } + src_mv++; + dst++; + src++; + } + break; + + case BM_BLACK_REMAP: + for (uint x = (uint) bp->width; x > 0; x--) { + if (src->a != 0) { + *dst = Colour(0, 0, 0); + } + src_mv++; + dst++; + src++; + } + break; + } + +next_line: + if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv_line += si->sprite_width; + src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size); + dst_line += bp->pitch; + } +} +IGNORE_UNINITIALIZED_WARNING_STOP + +/** + * Draws a sprite to a (screen) buffer. Calls adequate templated function. + * + * @param bp further blitting parameters + * @param mode blitter mode + * @param zoom zoom level at which we are drawing + */ +#if (SSE_VERSION == 2) +void Blitter_32bppSSE2::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) +#elif (SSE_VERSION == 3) +void Blitter_32bppSSSE3::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) +#elif (SSE_VERSION == 4) +void Blitter_32bppSSE4::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) +#endif +{ + switch (mode) { + default: { + if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) { +bm_normal: + const BlockType bt_last = (BlockType) (bp->width & 1); + switch (bt_last) { + default: Draw(bp, zoom); return; + case BT_ODD: Draw(bp, zoom); return; + } + } else { + if (((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags & SF_TRANSLUCENT) { + Draw(bp, zoom); + } else { + Draw(bp, zoom); + } + return; + } + break; + } + case BM_COLOUR_REMAP: + if (((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags & SF_NO_REMAP) goto bm_normal; + if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) { + Draw(bp, zoom); return; + } else { + Draw(bp, zoom); return; + } + case BM_TRANSPARENT: Draw(bp, zoom); return; + case BM_CRASH_REMAP: Draw(bp, zoom); return; + case BM_BLACK_REMAP: Draw(bp, zoom); return; + } +} +#endif /* FULL_ANIMATION */ + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSE_FUNC_HPP */ diff --git a/src/blitter/32bpp_sse_type.h b/src/blitter/32bpp_sse_type.h new file mode 100644 index 0000000000..ac8da1be77 --- /dev/null +++ b/src/blitter/32bpp_sse_type.h @@ -0,0 +1,56 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_sse_type.hpp Types related to SSE 32 bpp blitter. */ + +#ifndef BLITTER_32BPP_SSE_TYPE_HPP +#define BLITTER_32BPP_SSE_TYPE_HPP + +#ifdef WITH_SSE + +#include "32bpp_simple.hpp" +#if (SSE_VERSION == 2) +#include +#elif (SSE_VERSION == 3) +#include +#elif (SSE_VERSION == 4) +#include +#endif + +#define META_LENGTH 2 ///< Number of uint32 inserted before each line of pixels in a sprite. +#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL. +#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP. + +#ifdef _MSC_VER + #define ALIGN(n) __declspec(align(n)) +#else + #define ALIGN(n) __attribute__ ((aligned (n))) +#endif + +typedef union ALIGN(16) um128i { + __m128i m128i; + uint8 m128i_u8[16]; + uint16 m128i_u16[8]; + uint32 m128i_u32[4]; + uint64 m128i_u64[2]; +} um128i; + +#define CLEAR_HIGH_BYTE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0) +#define ALPHA_CONTROL_MASK _mm_setr_epi8( 6, 7, 6, 7, 6, 7, -1, -1, 14, 15, 14, 15, 14, 15, -1, -1) +#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, -1, 8, 10, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1) +#define PACK_HIGH_CONTROL_MASK _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, -1, 8, 10, 12, -1) +#define BRIGHTNESS_LOW_CONTROL_MASK _mm_setr_epi8( 1, 2, 1, 2, 1, 2, 0, 2, 3, 2, 3, 2, 3, 2, 0, 2) +#define BRIGHTNESS_DIV_CLEANER _mm_setr_epi8(-1, 1, -1, 1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 0) +#define OVERBRIGHT_PRESENCE_MASK _mm_setr_epi8( 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0) +#define OVERBRIGHT_VALUE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0) +#define OVERBRIGHT_CONTROL_MASK _mm_setr_epi8( 0, 1, 0, 1, 0, 1, 7, 7, 2, 3, 2, 3, 2, 3, 7, 7) +#define TRANSPARENT_NOM_BASE _mm_setr_epi16(256, 256, 256, 256, 256, 256, 256, 256) + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSE_TYPE_HPP */ diff --git a/src/blitter/32bpp_ssse3.cpp b/src/blitter/32bpp_ssse3.cpp new file mode 100644 index 0000000000..ab6c9eba5d --- /dev/null +++ b/src/blitter/32bpp_ssse3.cpp @@ -0,0 +1,25 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_ssse3.cpp Implementation of the SSSE3 32 bpp blitter. */ + +#ifdef WITH_SSE + +#include "../stdafx.h" +#include "../zoom_func.h" +#include "../settings_type.h" +#include "32bpp_ssse3.hpp" +#include "32bpp_sse_func.hpp" + +#include "../safeguards.h" + +/** Instantiation of the SSSE3 32bpp blitter factory. */ +static FBlitter_32bppSSSE3 iFBlitter_32bppSSSE3; + +#endif /* WITH_SSE */ diff --git a/src/blitter/32bpp_ssse3.hpp b/src/blitter/32bpp_ssse3.hpp new file mode 100644 index 0000000000..e9cac8ff0b --- /dev/null +++ b/src/blitter/32bpp_ssse3.hpp @@ -0,0 +1,44 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file 32bpp_ssse3.hpp SSSE3 32 bpp blitter. */ + +#ifndef BLITTER_32BPP_SSSE3_HPP +#define BLITTER_32BPP_SSSE3_HPP + +#ifdef WITH_SSE + +#ifndef SSE_VERSION +#define SSE_VERSION 3 +#endif + +#ifndef FULL_ANIMATION +#define FULL_ANIMATION 0 +#endif + +#include "32bpp_sse2.hpp" + +/** The SSSE3 32 bpp blitter (without palette animation). */ +class Blitter_32bppSSSE3 : public Blitter_32bppSSE2 { +public: + /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); + template + void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); + /* virtual */ const char *GetName() { return "32bpp-ssse3"; } +}; + +/** Factory for the SSSE3 32 bpp blitter (without palette animation). */ +class FBlitter_32bppSSSE3: public BlitterFactory { +public: + FBlitter_32bppSSSE3() : BlitterFactory("32bpp-ssse3", "32bpp SSSE3 Blitter (no palette animation)", HasCPUIDFlag(1, 2, 9)) {} + /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSSE3(); } +}; + +#endif /* WITH_SSE */ +#endif /* BLITTER_32BPP_SSSE3_HPP */ diff --git a/src/blitter/8bpp_base.cpp b/src/blitter/8bpp_base.cpp index f2ba704054..eab6eaa0db 100644 --- a/src/blitter/8bpp_base.cpp +++ b/src/blitter/8bpp_base.cpp @@ -13,6 +13,8 @@ #include "../gfx_func.h" #include "8bpp_base.hpp" +#include "../safeguards.h" + void Blitter_8bppBase::DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) { const uint8 *ctab = GetNonSprite(pal, ST_RECOLOUR) + 1; diff --git a/src/blitter/8bpp_optimized.cpp b/src/blitter/8bpp_optimized.cpp index 77fc36576e..0f07e7c7bb 100644 --- a/src/blitter/8bpp_optimized.cpp +++ b/src/blitter/8bpp_optimized.cpp @@ -13,8 +13,11 @@ #include "../zoom_func.h" #include "../settings_type.h" #include "../core/math_func.hpp" +#include "../core/mem_func.hpp" #include "8bpp_optimized.hpp" +#include "../safeguards.h" + /** Instantiation of the 8bpp optimised blitter factory. */ static FBlitter_8bppOptimized iFBlitter_8bppOptimized; @@ -83,7 +86,8 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z width -= pixels; switch (mode) { - case BM_COLOUR_REMAP: { + case BM_COLOUR_REMAP: + case BM_CRASH_REMAP: { const uint8 *remap = bp->remap; do { uint m = remap[*src]; @@ -93,6 +97,11 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z break; } + case BM_BLACK_REMAP: + MemSetT(dst, 0, pixels); + dst += pixels; + break; + case BM_TRANSPARENT: { const uint8 *remap = bp->remap; src += pixels; @@ -104,7 +113,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z } default: - memcpy(dst, src, pixels); + MemCpyT(dst, src, pixels); dst += pixels; src += pixels; break; } @@ -112,7 +121,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z } } -Sprite *Blitter_8bppOptimized::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { /* Make memory for all zoom-levels */ uint memory = sizeof(SpriteData); diff --git a/src/blitter/8bpp_optimized.hpp b/src/blitter/8bpp_optimized.hpp index 66fbe4091f..b5b5324b91 100644 --- a/src/blitter/8bpp_optimized.hpp +++ b/src/blitter/8bpp_optimized.hpp @@ -25,16 +25,15 @@ public: }; /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); - /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); /* virtual */ const char *GetName() { return "8bpp-optimized"; } }; /** Factory for the 8bpp blitter optimised for speed. */ -class FBlitter_8bppOptimized: public BlitterFactory { +class FBlitter_8bppOptimized : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "8bpp-optimized"; } - /* virtual */ const char *GetDescription() { return "8bpp Optimized Blitter (compression + all-ZoomLevel cache)"; } + FBlitter_8bppOptimized() : BlitterFactory("8bpp-optimized", "8bpp Optimized Blitter (compression + all-ZoomLevel cache)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppOptimized(); } }; diff --git a/src/blitter/8bpp_simple.cpp b/src/blitter/8bpp_simple.cpp index f8a808186c..ed5dd3f7ae 100644 --- a/src/blitter/8bpp_simple.cpp +++ b/src/blitter/8bpp_simple.cpp @@ -13,6 +13,8 @@ #include "../zoom_func.h" #include "8bpp_simple.hpp" +#include "../safeguards.h" + /** Instantiation of the simple 8bpp blitter factory. */ static FBlitter_8bppSimple iFBlitter_8bppSimple; @@ -37,6 +39,7 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom switch (mode) { case BM_COLOUR_REMAP: + case BM_CRASH_REMAP: colour = bp->remap[*src]; break; @@ -44,6 +47,10 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom if (*src != 0) colour = bp->remap[*dst]; break; + case BM_BLACK_REMAP: + colour = 0; + break; + default: colour = *src; break; @@ -55,10 +62,10 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom } } -Sprite *Blitter_8bppSimple::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { Sprite *dest_sprite; - dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width); + dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite->height * (size_t)sprite->width); dest_sprite->height = sprite->height; dest_sprite->width = sprite->width; diff --git a/src/blitter/8bpp_simple.hpp b/src/blitter/8bpp_simple.hpp index 28102fcab0..c00c75ac04 100644 --- a/src/blitter/8bpp_simple.hpp +++ b/src/blitter/8bpp_simple.hpp @@ -19,16 +19,15 @@ class Blitter_8bppSimple FINAL : public Blitter_8bppBase { public: /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); - /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); /* virtual */ const char *GetName() { return "8bpp-simple"; } }; /** Factory for the most trivial 8bpp blitter. */ -class FBlitter_8bppSimple: public BlitterFactory { +class FBlitter_8bppSimple : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "8bpp-simple"; } - /* virtual */ const char *GetDescription() { return "8bpp Simple Blitter (relative slow, but never wrong)"; } + FBlitter_8bppSimple() : BlitterFactory("8bpp-simple", "8bpp Simple Blitter (relative slow, but never wrong)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppSimple(); } }; diff --git a/src/blitter/base.cpp b/src/blitter/base.cpp index bb8b9f234b..e83df2e714 100644 --- a/src/blitter/base.cpp +++ b/src/blitter/base.cpp @@ -13,7 +13,9 @@ #include "base.hpp" #include "../core/math_func.hpp" -void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width) +#include "../safeguards.h" + +void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash) { int dy; int dx; @@ -59,6 +61,9 @@ void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_wid } } + int gap = dash; + if (dash == 0) dash = 1; + int dash_count = 0; if (dx > dy) { int y_low = y; int y_high = y; @@ -76,7 +81,7 @@ void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_wid x2 += stepx; while (x != x2) { - if (x >= 0 && x < screen_width) { + if (dash_count < dash && x >= 0 && x < screen_width) { for (int y = y_low; y != y_high; y += stepy) { if (y >= 0 && y < screen_height) this->SetPixel(video, x, y, colour); } @@ -92,6 +97,7 @@ void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_wid x += stepx; frac_low += dy; frac_high += dy; + if (++dash_count >= dash + gap) dash_count = 0; } } else { int x_low = x; @@ -110,7 +116,7 @@ void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_wid y2 += stepy; while (y != y2) { - if (y >= 0 && y < screen_height) { + if (dash_count < dash && y >= 0 && y < screen_height) { for (int x = x_low; x != x_high; x += stepx) { if (x >= 0 && x < screen_width) this->SetPixel(video, x, y, colour); } @@ -126,6 +132,7 @@ void Blitter::DrawLine(void *video, int x, int y, int x2, int y2, int screen_wid y += stepy; frac_low += dx; frac_high += dx; + if (++dash_count >= dash + gap) dash_count = 0; } } } diff --git a/src/blitter/base.hpp b/src/blitter/base.hpp index 45aa19b7d9..a9403b339d 100644 --- a/src/blitter/base.hpp +++ b/src/blitter/base.hpp @@ -20,6 +20,8 @@ enum BlitterMode { BM_NORMAL, ///< Perform the simple blitting. BM_COLOUR_REMAP, ///< Perform a colour remapping. BM_TRANSPARENT, ///< Perform transparency colour remapping. + BM_CRASH_REMAP, ///< Perform a crash remapping. + BM_BLACK_REMAP, ///< Perform remapping to a completely blackened sprite }; /** @@ -77,7 +79,7 @@ public: /** * Convert a sprite from the loader to our own format. */ - virtual Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0; + virtual Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0; /** * Move the destination pointer the requested amount x and y, keeping in mind @@ -118,8 +120,9 @@ public: * @param screen_height The height of the screen you are drawing in (to avoid buffer-overflows). * @param colour A 8bpp mapping colour. * @param width Line width. + * @param dash Length of dashes for dashed lines. 0 means solid line. */ - virtual void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width); + virtual void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash = 0); /** * Copy from a buffer to the screen. diff --git a/src/blitter/factory.hpp b/src/blitter/factory.hpp index e480459cc7..01faca68fd 100644 --- a/src/blitter/factory.hpp +++ b/src/blitter/factory.hpp @@ -25,11 +25,12 @@ bool QZ_CanDisplay8bpp(); /** * The base factory, keeping track of all blitters. */ -class BlitterFactoryBase { +class BlitterFactory { private: - const char *name; ///< The name of the blitter factory. + const char *name; ///< The name of the blitter factory. + const char *description; ///< The description of the blitter. - typedef std::map Blitters; ///< Map of blitter factories. + typedef std::map Blitters; ///< Map of blitter factories. /** * Get the map with currently known blitters. @@ -53,32 +54,38 @@ private: protected: /** - * Register a blitter internally, based on his name. - * @param name the name of the blitter. - * @note an assert() will be trigger if 2 blitters with the same name try to register. + * Construct the blitter, and register it. + * @param name The name of the blitter. + * @param description A longer description for the blitter. + * @param usable Whether the blitter is usable (on the current computer). For example for disabling SSE blitters when the CPU can't handle them. + * @pre name != NULL. + * @pre description != NULL. + * @pre There is no blitter registered with this name. */ - void RegisterBlitter(const char *name) + BlitterFactory(const char *name, const char *description, bool usable = true) : + name(stredup(name)), description(stredup(description)) { - /* Don't register nameless Blitters */ - if (name == NULL) return; - - this->name = strdup(name); - - std::pair P = GetBlitters().insert(Blitters::value_type(name, this)); - assert(P.second); + if (usable) { + /* + * Only add when the blitter is usable. Do not bail out or + * do more special things since the blitters are always + * instantiated upon start anyhow and freed upon shutdown. + */ + std::pair P = GetBlitters().insert(Blitters::value_type(this->name, this)); + assert(P.second); + } else { + DEBUG(driver, 1, "Not registering blitter %s as it is not usable", name); + } } public: - BlitterFactoryBase() : - name(NULL) - {} - - virtual ~BlitterFactoryBase() + virtual ~BlitterFactory() { - if (this->name == NULL) return; GetBlitters().erase(this->name); if (GetBlitters().empty()) delete &GetBlitters(); + free(this->name); + free(this->description); } /** @@ -87,6 +94,24 @@ public: * @post Sets the blitter so GetCurrentBlitter() returns it too. */ static Blitter *SelectBlitter(const char *name) + { + BlitterFactory *b = GetBlitterFactory(name); + if (b == NULL) return NULL; + + Blitter *newb = b->CreateInstance(); + delete *GetActiveBlitter(); + *GetActiveBlitter() = newb; + + DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", newb->GetName()); + return newb; + } + + /** + * Get the blitter factory with the given name. + * @param name the blitter factory to select. + * @return The blitter factory, or NULL when there isn't one with the wanted name. + */ + static BlitterFactory *GetBlitterFactory(const char *name) { #if defined(DEDICATED) const char *default_blitter = "null"; @@ -108,14 +133,9 @@ public: Blitters::iterator it = GetBlitters().begin(); for (; it != GetBlitters().end(); it++) { - BlitterFactoryBase *b = (*it).second; + BlitterFactory *b = (*it).second; if (strcasecmp(bname, b->name) == 0) { - Blitter *newb = b->CreateInstance(); - delete *GetActiveBlitter(); - *GetActiveBlitter() = newb; - - DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", bname); - return newb; + return b; } } return NULL; @@ -140,7 +160,7 @@ public: p += seprintf(p, last, "List of blitters:\n"); Blitters::iterator it = GetBlitters().begin(); for (; it != GetBlitters().end(); it++) { - BlitterFactoryBase *b = (*it).second; + BlitterFactory *b = (*it).second; p += seprintf(p, last, "%18s: %s\n", b->name, b->GetDescription()); } p += seprintf(p, last, "\n"); @@ -149,28 +169,25 @@ public: } /** - * Get a nice description of the blitter-class. + * Get the long, human readable, name for the Blitter-class. */ - virtual const char *GetDescription() = 0; + const char *GetName() const + { + return this->name; + } /** - * Create an instance of this Blitter-class. + * Get a nice description of the blitter-class. */ - virtual Blitter *CreateInstance() = 0; -}; - -/** - * A template factory, so ->GetName() works correctly. This because else some compiler will complain. - */ -template -class BlitterFactory: public BlitterFactoryBase { -public: - BlitterFactory() { this->RegisterBlitter(((T *)this)->GetName()); } + const char *GetDescription() const + { + return this->description; + } /** - * Get the long, human readable, name for the Blitter-class. + * Create an instance of this Blitter-class. */ - const char *GetName(); + virtual Blitter *CreateInstance() = 0; }; extern char *_ini_blitter; diff --git a/src/blitter/null.cpp b/src/blitter/null.cpp index 470b88354f..e968abe13f 100644 --- a/src/blitter/null.cpp +++ b/src/blitter/null.cpp @@ -12,10 +12,12 @@ #include "../stdafx.h" #include "null.hpp" +#include "../safeguards.h" + /** Instantiation of the null blitter factory. */ static FBlitter_Null iFBlitter_Null; -Sprite *Blitter_Null::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +Sprite *Blitter_Null::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { Sprite *dest_sprite; dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite)); diff --git a/src/blitter/null.hpp b/src/blitter/null.hpp index 4ec5ff4763..a6fed2ebca 100644 --- a/src/blitter/null.hpp +++ b/src/blitter/null.hpp @@ -20,11 +20,11 @@ public: /* virtual */ uint8 GetScreenDepth() { return 0; } /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) {}; /* virtual */ void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) {}; - /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); /* virtual */ void *MoveTo(void *video, int x, int y) { return NULL; }; /* virtual */ void SetPixel(void *video, int x, int y, uint8 colour) {}; /* virtual */ void DrawRect(void *video, int width, int height, uint8 colour) {}; - /* virtual */ void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width) {}; + /* virtual */ void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash) {}; /* virtual */ void CopyFromBuffer(void *video, const void *src, int width, int height) {}; /* virtual */ void CopyToBuffer(const void *video, void *dst, int width, int height) {}; /* virtual */ void CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch) {}; @@ -38,10 +38,9 @@ public: }; /** Factory for the blitter that does nothing. */ -class FBlitter_Null: public BlitterFactory { +class FBlitter_Null : public BlitterFactory { public: - /* virtual */ const char *GetName() { return "null"; } - /* virtual */ const char *GetDescription() { return "Null Blitter (does nothing)"; } + FBlitter_Null() : BlitterFactory("null", "Null Blitter (does nothing)") {} /* virtual */ Blitter *CreateInstance() { return new Blitter_Null(); } }; diff --git a/src/bmp.cpp b/src/bmp.cpp index a93785d4f4..1033d89f11 100644 --- a/src/bmp.cpp +++ b/src/bmp.cpp @@ -15,6 +15,8 @@ #include "core/alloc_func.hpp" #include "core/mem_func.hpp" +#include "safeguards.h" + void BmpInitializeBuffer(BmpBuffer *buffer, FILE *file) { buffer->pos = -1; @@ -25,18 +27,24 @@ void BmpInitializeBuffer(BmpBuffer *buffer, FILE *file) static inline void AdvanceBuffer(BmpBuffer *buffer) { + if (buffer->read < 0) return; + buffer->read = (int)fread(buffer->data, 1, BMP_BUFFER_SIZE, buffer->file); buffer->pos = 0; } static inline bool EndOfBuffer(BmpBuffer *buffer) { + if (buffer->read < 0) return false; + if (buffer->pos == buffer->read || buffer->pos < 0) AdvanceBuffer(buffer); return buffer->pos == buffer->read; } static inline byte ReadByte(BmpBuffer *buffer) { + if (buffer->read < 0) return 0; + if (buffer->pos == buffer->read || buffer->pos < 0) AdvanceBuffer(buffer); buffer->real_pos++; return buffer->data[buffer->pos++]; @@ -62,7 +70,9 @@ static inline void SkipBytes(BmpBuffer *buffer, int bytes) static inline void SetStreamOffset(BmpBuffer *buffer, int offset) { - fseek(buffer->file, offset, SEEK_SET); + if (fseek(buffer->file, offset, SEEK_SET) < 0) { + buffer->read = -1; + } buffer->pos = -1; buffer->real_pos = offset; AdvanceBuffer(buffer); diff --git a/src/bootstrap_gui.cpp b/src/bootstrap_gui.cpp index 31b99730f2..7abc38563c 100644 --- a/src/bootstrap_gui.cpp +++ b/src/bootstrap_gui.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** Widgets for the background window to prevent smearing. */ static const struct NWidgetPart _background_widgets[] = { NWidget(WWT_PANEL, COLOUR_DARK_BLUE, WID_BB_BACKGROUND), SetResize(1, 1), @@ -215,7 +217,7 @@ bool HandleBootstrap() if (BaseGraphics::GetUsedSet() != NULL) return true; /* No user interface, bail out with an error. */ - if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) goto failure; + if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 0) goto failure; /* If there is no network or no freetype, then there is nothing we can do. Go straight to failure. */ #if defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) && (defined(WITH_FONTCONFIG) || defined(WIN32) || defined(__APPLE__)) @@ -244,7 +246,7 @@ bool HandleBootstrap() new BootstrapAskForDownloadWindow(); /* Process the user events. */ - _video_driver->MainLoop(); + VideoDriver::GetInstance()->MainLoop(); /* _exit_game is used to get out of the video driver's main loop. * In case GM_BOOTSTRAP is still set we did not exit it via the diff --git a/src/bridge_gui.cpp b/src/bridge_gui.cpp index 61c477aeac..797ead1f51 100644 --- a/src/bridge_gui.cpp +++ b/src/bridge_gui.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** The type of the last built rail bridge */ static BridgeType _last_railbridge_type = 0; /** The type of the last built road bridge */ @@ -166,7 +168,7 @@ public: switch (widget) { case WID_BBS_DROPDOWN_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; diff --git a/src/bridge_map.cpp b/src/bridge_map.cpp index 6ebf80424e..d1e0d6024a 100644 --- a/src/bridge_map.cpp +++ b/src/bridge_map.cpp @@ -13,6 +13,8 @@ #include "landscape.h" #include "tunnelbridge_map.h" +#include "safeguards.h" + /** * Finds the end of a bridge in the specified direction starting at a middle tile diff --git a/src/bridge_map.h b/src/bridge_map.h index 8ee658ce75..74c6974db2 100644 --- a/src/bridge_map.h +++ b/src/bridge_map.h @@ -37,28 +37,14 @@ static inline bool IsBridgeTile(TileIndex t) return IsTileType(t, MP_TUNNELBRIDGE) && IsBridge(t); } -/** - * checks for the possibility that a bridge may be on this tile - * These are in fact all the tile types on which a bridge can be found - * @param t The tile to analyze - * @return true if a bridge might be present - */ -static inline bool MayHaveBridgeAbove(TileIndex t) -{ - return IsTileType(t, MP_CLEAR) || IsTileType(t, MP_RAILWAY) || IsTileType(t, MP_ROAD) || - IsTileType(t, MP_WATER) || IsTileType(t, MP_TUNNELBRIDGE) || IsTileType(t, MP_OBJECT); -} - /** * checks if a bridge is set above the ground of this tile * @param t The tile to analyze - * @pre MayHaveBridgeAbove(t) * @return true if a bridge is detected above */ static inline bool IsBridgeAbove(TileIndex t) { - assert(MayHaveBridgeAbove(t)); - return GB(_m[t].m6, 6, 2) != 0; + return GB(_m[t].type, 2, 2) != 0; } /** @@ -70,7 +56,7 @@ static inline bool IsBridgeAbove(TileIndex t) static inline BridgeType GetBridgeType(TileIndex t) { assert(IsBridgeTile(t)); - return GB(_m[t].m6, 2, 4); + return GB(_me[t].m6, 2, 4); } /** @@ -82,7 +68,7 @@ static inline BridgeType GetBridgeType(TileIndex t) static inline Axis GetBridgeAxis(TileIndex t) { assert(IsBridgeAbove(t)); - return (Axis)(GB(_m[t].m6, 6, 2) - 1); + return (Axis)(GB(_m[t].type, 2, 2) - 1); } TileIndex GetNorthernBridgeEnd(TileIndex t); @@ -104,18 +90,15 @@ static inline int GetBridgePixelHeight(TileIndex tile) * Remove the bridge over the given axis. * @param t the tile to remove the bridge from * @param a the axis of the bridge to remove - * @pre MayHaveBridgeAbove(t) */ static inline void ClearSingleBridgeMiddle(TileIndex t, Axis a) { - assert(MayHaveBridgeAbove(t)); - ClrBit(_m[t].m6, 6 + a); + ClrBit(_m[t].type, 2 + a); } /** * Removes bridges from the given, that is bridges along the X and Y axis. * @param t the tile to remove the bridge from - * @pre MayHaveBridgeAbove(t) */ static inline void ClearBridgeMiddle(TileIndex t) { @@ -127,12 +110,10 @@ static inline void ClearBridgeMiddle(TileIndex t) * Set that there is a bridge over the given axis. * @param t the tile to add the bridge to * @param a the axis of the bridge to add - * @pre MayHaveBridgeAbove(t) */ static inline void SetBridgeMiddle(TileIndex t, Axis a) { - assert(MayHaveBridgeAbove(t)); - SetBit(_m[t].m6, 6 + a); + SetBit(_m[t].type, 2 + a); } /** @@ -153,7 +134,7 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D _m[t].m3 = rt; _m[t].m4 = 0; _m[t].m5 = 1 << 7 | tt << 2 | d; - SB(_m[t].m6, 2, 4, bridgetype); + SB(_me[t].m6, 2, 4, bridgetype); _me[t].m7 = 0; } diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 4e5a738178..bd4bf3b59b 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -37,6 +37,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Get the height of a single 'entry' in the engine lists. * @param type the vehicle type to get the height of @@ -56,13 +58,13 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = { NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_VERTICAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASSENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), - NWidget(NWID_SPACER), SetFill(1, 1), - EndContainer(), - NWidget(NWID_VERTICAL), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), EndContainer(), EndContainer(), @@ -79,6 +81,7 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BV_BUILD_SEL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_BUILD), SetResize(1, 0), SetFill(1, 0), EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDE), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_RENAME), SetResize(1, 0), SetFill(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), @@ -88,10 +91,11 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = { static const CargoID CF_ANY = CT_NO_REFIT; ///< Show all vehicles independent of carried cargo (i.e. no filtering) static const CargoID CF_NONE = CT_INVALID; ///< Show only vehicles which do not carry cargo (e.g. train engines) -static bool _internal_sort_order; ///< false = descending, true = ascending -static byte _last_sort_criteria[] = {0, 0, 0, 0}; -static bool _last_sort_order[] = {false, false, false, false}; -static CargoID _last_filter_criteria[] = {CF_ANY, CF_ANY, CF_ANY, CF_ANY}; +bool _engine_sort_direction; ///< \c false = descending, \c true = ascending. +byte _engine_sort_last_criteria[] = {0, 0, 0, 0}; ///< Last set sort criteria, for each vehicle type. +bool _engine_sort_last_order[] = {false, false, false, false}; ///< Last set direction of the sort order, for each vehicle type. +bool _engine_sort_show_hidden_engines[] = {false, false, false, false}; ///< Last set 'show hidden engines' setting for each vehicle type. +static CargoID _engine_sort_last_cargo_criteria[] = {CF_ANY, CF_ANY, CF_ANY, CF_ANY}; ///< Last set filter criteria, for each vehicle type. /** * Determines order of engines by engineID @@ -103,7 +107,7 @@ static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b) { int r = Engine::Get(*a)->list_position - Engine::Get(*b)->list_position; - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -120,7 +124,7 @@ static int CDECL EngineIntroDateSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -153,7 +157,7 @@ static int CDECL EngineNameSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -170,7 +174,7 @@ static int CDECL EngineReliabilitySorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -187,7 +191,7 @@ static int CDECL EngineCostSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -204,7 +208,7 @@ static int CDECL EngineSpeedSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -221,7 +225,7 @@ static int CDECL EnginePowerSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -238,7 +242,7 @@ static int CDECL EngineTractiveEffortSorter(const EngineID *a, const EngineID *b /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -255,7 +259,7 @@ static int CDECL EngineRunningCostSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -281,7 +285,7 @@ static int CDECL EnginePowerVsRunningCostSorter(const EngineID *a, const EngineI /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /* Train sorting functions */ @@ -303,7 +307,7 @@ static int CDECL TrainEngineCapacitySorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -320,7 +324,7 @@ static int CDECL TrainEnginesThenWagonsSorter(const EngineID *a, const EngineID /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /* Road vehicle sorting functions */ @@ -339,7 +343,7 @@ static int CDECL RoadVehEngineCapacitySorter(const EngineID *a, const EngineID * /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /* Ship vehicle sorting functions */ @@ -361,7 +365,7 @@ static int CDECL ShipEngineCapacitySorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /* Aircraft sorting functions */ @@ -391,7 +395,7 @@ static int CDECL AircraftEngineCargoSorter(const EngineID *a, const EngineID *b) return EngineNumberSorter(a, b); } } - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } /** @@ -409,10 +413,11 @@ static int CDECL AircraftRangeSorter(const EngineID *a, const EngineID *b) /* Use EngineID to sort instead since we want consistent sorting */ if (r == 0) return EngineNumberSorter(a, b); - return _internal_sort_order ? -r : r; + return _engine_sort_direction ? -r : r; } -static EngList_SortTypeFunction * const _sorter[][11] = {{ +/** Sort functions for the vehicle sort criteria, for each vehicle type. */ +EngList_SortTypeFunction * const _engine_sort_functions[][11] = {{ /* Trains */ &EngineNumberSorter, &EngineCostSorter, @@ -461,7 +466,8 @@ static EngList_SortTypeFunction * const _sorter[][11] = {{ &AircraftRangeSorter, }}; -static const StringID _sort_listing[][12] = {{ +/** Dropdown menu strings for the vehicle sort criteria. */ +const StringID _engine_sort_listing[][12] = {{ /* Trains */ STR_SORT_BY_ENGINE_ID, STR_SORT_BY_COST, @@ -526,21 +532,20 @@ static GUIEngineList::FilterFunction * const _filter_funcs[] = { &CargoFilter, }; -static int DrawCargoCapacityInfo(int left, int right, int y, EngineID engine, bool refittable) +static int DrawCargoCapacityInfo(int left, int right, int y, EngineID engine) { - CargoArray cap = GetCapacityOfArticulatedParts(engine); + CargoArray cap; + uint32 refits; + GetArticulatedVehicleCargoesAndRefits(engine, &cap, &refits); for (CargoID c = 0; c < NUM_CARGO; c++) { if (cap[c] == 0) continue; SetDParam(0, c); SetDParam(1, cap[c]); - SetDParam(2, refittable ? STR_PURCHASE_INFO_REFITTABLE : STR_EMPTY); + SetDParam(2, HasBit(refits, c) ? STR_PURCHASE_INFO_REFITTABLE : STR_EMPTY); DrawString(left, right, y, STR_PURCHASE_INFO_CAPACITY); y += FONT_HEIGHT_NORMAL; - - /* Only show as refittable once */ - refittable = false; } return y; @@ -772,13 +777,14 @@ static uint ShowAdditionalText(int left, int right, int y, EngineID engine) { uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL); if (callback == CALLBACK_FAILED || callback == 0x400) return y; + const GRFFile *grffile = Engine::Get(engine)->GetGRF(); if (callback > 0x400) { - ErrorUnknownCallbackResult(Engine::Get(engine)->GetGRFID(), CBID_VEHICLE_ADDITIONAL_TEXT, callback); + ErrorUnknownCallbackResult(grffile->grfid, CBID_VEHICLE_ADDITIONAL_TEXT, callback); return y; } - StartTextRefStackUsage(6); - uint result = DrawStringMultiLine(left, right, y, INT32_MAX, GetGRFStringID(Engine::Get(engine)->GetGRFID(), 0xD000 + callback), TC_BLACK); + StartTextRefStackUsage(grffile, 6); + uint result = DrawStringMultiLine(left, right, y, INT32_MAX, GetGRFStringID(grffile->grfid, 0xD000 + callback), TC_BLACK); StopTextRefStackUsage(); return result; } @@ -824,7 +830,7 @@ int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number) if (articulated_cargo) { /* Cargo type + capacity, or N/A */ - int new_y = DrawCargoCapacityInfo(left, right, y, engine_number, refittable); + int new_y = DrawCargoCapacityInfo(left, right, y, engine_number); if (new_y == y) { SetDParam(0, CT_INVALID); @@ -910,8 +916,13 @@ void DrawEngineList(VehicleType type, int l, int r, int y, const GUIEngineList * /* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_company here. */ const uint num_engines = GetGroupNumEngines(_local_company, selected_group, engine); + const Engine *e = Engine::Get(engine); + bool hidden = HasBit(e->company_hidden, _local_company); + StringID str = hidden ? STR_HIDDEN_ENGINE_NAME : STR_ENGINE_NAME; + TextColour tc = (engine == selected_id) ? TC_WHITE : (TC_NO_SHADE | (hidden ? TC_GREY : TC_BLACK)); + SetDParam(0, engine); - DrawString(text_left, text_right, y + normal_text_y_offset, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK); + DrawString(text_left, text_right, y + normal_text_y_offset, str, tc); DrawVehicleEngine(l, r, sprite_x, y + sprite_y_offset, engine, (show_count && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_company), EIT_PURCHASE); if (show_count) { SetDParam(0, num_engines); @@ -921,18 +932,42 @@ void DrawEngineList(VehicleType type, int l, int r, int y, const GUIEngineList * } } +/** + * Display the dropdown for the vehicle sort criteria. + * @param w Parent window (holds the dropdown button). + * @param vehicle_type %Vehicle type being sorted. + * @param selected Currently selected sort criterium. + * @param button Widget button. + */ +void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selected, int button) +{ + uint32 hidden_mask = 0; + /* Disable sorting by power or tractive effort when the original acceleration model for road vehicles is being used. */ + if (vehicle_type == VEH_ROAD && _settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) { + SetBit(hidden_mask, 3); // power + SetBit(hidden_mask, 4); // tractive effort + SetBit(hidden_mask, 8); // power by running costs + } + /* Disable sorting by tractive effort when the original acceleration model for trains is being used. */ + if (vehicle_type == VEH_TRAIN && _settings_game.vehicle.train_acceleration_model == AM_ORIGINAL) { + SetBit(hidden_mask, 4); // tractive effort + } + ShowDropDownMenu(w, _engine_sort_listing[vehicle_type], selected, button, 0, hidden_mask); +} +/** GUI for building vehicles. */ struct BuildVehicleWindow : Window { - VehicleType vehicle_type; + VehicleType vehicle_type; ///< Type of vehicles shown in the window. union { - RailTypeByte railtype; - RoadTypes roadtypes; - } filter; - bool descending_sort_order; - byte sort_criteria; - bool listview_mode; - EngineID sel_engine; - EngineID rename_engine; + RailTypeByte railtype; ///< Rail type to show, or #RAILTYPE_END. + RoadTypes roadtypes; ///< Road type to show, or #ROADTYPES_ALL. + } filter; ///< Filter to apply. + bool descending_sort_order; ///< Sort direction, @see _engine_sort_direction + byte sort_criteria; ///< Current sort criterium. + bool show_hidden_engines; ///< State of the 'show hidden engines' button. + bool listview_mode; ///< If set, only display the available vehicles and do not show a 'build' button. + EngineID sel_engine; ///< Currently selected engine, or #INVALID_ENGINE + EngineID rename_engine; ///< Engine being renamed. GUIEngineList eng_list; CargoID cargo_filter[NUM_CARGO + 2]; ///< Available cargo filters; CargoID or CF_ANY or CF_NONE StringID cargo_filter_texts[NUM_CARGO + 3]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID @@ -945,10 +980,11 @@ struct BuildVehicleWindow : Window { this->vehicle_type = type; this->window_number = tile == INVALID_TILE ? (int)type : tile; - this->sel_engine = INVALID_ENGINE; + this->sel_engine = INVALID_ENGINE; - this->sort_criteria = _last_sort_criteria[type]; - this->descending_sort_order = _last_sort_order[type]; + this->sort_criteria = _engine_sort_last_criteria[type]; + this->descending_sort_order = _engine_sort_last_order[type]; + this->show_hidden_engines = _engine_sort_show_hidden_engines[type]; switch (type) { default: NOT_REACHED(); @@ -978,6 +1014,9 @@ struct BuildVehicleWindow : Window { NWidgetCore *widget = this->GetWidget(WID_BV_LIST); widget->tool_tip = STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP + type; + widget = this->GetWidget(WID_BV_SHOW_HIDE); + widget->tool_tip = STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP + type; + widget = this->GetWidget(WID_BV_BUILD); widget->widget_data = STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + type; widget->tool_tip = STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP + type; @@ -986,6 +1025,11 @@ struct BuildVehicleWindow : Window { widget->widget_data = STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON + type; widget->tool_tip = STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP + type; + widget = this->GetWidget(WID_BV_SHOW_HIDDEN_ENGINES); + widget->widget_data = STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN + type; + widget->tool_tip = STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP + type; + widget->SetLowered(this->show_hidden_engines); + this->details_height = ((this->vehicle_type == VEH_TRAIN) ? 10 : 9) * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; this->FinishInitNested(tile == INVALID_TILE ? (int)type : tile); @@ -1032,7 +1076,7 @@ struct BuildVehicleWindow : Window { /* Find the last cargo filter criteria. */ for (uint i = 0; i < filter_items; i++) { - if (this->cargo_filter[i] == _last_filter_criteria[this->vehicle_type]) { + if (this->cargo_filter[i] == _engine_sort_last_cargo_criteria[this->vehicle_type]) { this->cargo_filter_criteria = i; break; } @@ -1082,6 +1126,7 @@ struct BuildVehicleWindow : Window { * when engines become obsolete and are removed */ const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { + if (!this->show_hidden_engines && e->IsHidden(_local_company)) continue; EngineID eid = e->index; const RailVehicleInfo *rvi = &e->u.rail; @@ -1105,15 +1150,15 @@ struct BuildVehicleWindow : Window { this->sel_engine = sel_id; /* make engines first, and then wagons, sorted by selected sort_criteria */ - _internal_sort_order = false; + _engine_sort_direction = false; EngList_Sort(&this->eng_list, TrainEnginesThenWagonsSorter); /* and then sort engines */ - _internal_sort_order = this->descending_sort_order; - EngList_SortPartial(&this->eng_list, _sorter[0][this->sort_criteria], 0, num_engines); + _engine_sort_direction = this->descending_sort_order; + EngList_SortPartial(&this->eng_list, _engine_sort_functions[0][this->sort_criteria], 0, num_engines); /* and finally sort wagons */ - EngList_SortPartial(&this->eng_list, _sorter[0][this->sort_criteria], num_engines, num_wagons); + EngList_SortPartial(&this->eng_list, _engine_sort_functions[0][this->sort_criteria], num_engines, num_wagons); } /* Figure out what road vehicle EngineIDs to put in the list */ @@ -1125,6 +1170,7 @@ struct BuildVehicleWindow : Window { const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_ROAD) { + if (!this->show_hidden_engines && e->IsHidden(_local_company)) continue; EngineID eid = e->index; if (!IsEngineBuildable(eid, VEH_ROAD, _local_company)) continue; if (!HasBit(this->filter.roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD)) continue; @@ -1143,6 +1189,7 @@ struct BuildVehicleWindow : Window { const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_SHIP) { + if (!this->show_hidden_engines && e->IsHidden(_local_company)) continue; EngineID eid = e->index; if (!IsEngineBuildable(eid, VEH_SHIP, _local_company)) continue; *this->eng_list.Append() = eid; @@ -1167,6 +1214,7 @@ struct BuildVehicleWindow : Window { * when planes become obsolete and are removed */ const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_AIRCRAFT) { + if (!this->show_hidden_engines && e->IsHidden(_local_company)) continue; EngineID eid = e->index; if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_company)) continue; /* First VEH_END window_numbers are fake to allow a window open for all different types at once */ @@ -1203,8 +1251,8 @@ struct BuildVehicleWindow : Window { this->FilterEngineList(); - _internal_sort_order = this->descending_sort_order; - EngList_Sort(&this->eng_list, _sorter[this->vehicle_type][this->sort_criteria]); + _engine_sort_direction = this->descending_sort_order; + EngList_Sort(&this->eng_list, _engine_sort_functions[this->vehicle_type][this->sort_criteria]); this->eng_list.Compact(); this->eng_list.RebuildDone(); @@ -1213,10 +1261,18 @@ struct BuildVehicleWindow : Window { void OnClick(Point pt, int widget, int click_count) { switch (widget) { - case WID_BV_SORT_ASSENDING_DESCENDING: + case WID_BV_SORT_ASCENDING_DESCENDING: this->descending_sort_order ^= true; - _last_sort_order[this->vehicle_type] = this->descending_sort_order; + _engine_sort_last_order[this->vehicle_type] = this->descending_sort_order; + this->eng_list.ForceRebuild(); + this->SetDirty(); + break; + + case WID_BV_SHOW_HIDDEN_ENGINES: + this->show_hidden_engines ^= true; + _engine_sort_show_hidden_engines[this->vehicle_type] = this->show_hidden_engines; this->eng_list.ForceRebuild(); + this->SetWidgetLoweredState(widget, this->show_hidden_engines); this->SetDirty(); break; @@ -1225,32 +1281,30 @@ struct BuildVehicleWindow : Window { size_t num_items = this->eng_list.Length(); this->sel_engine = (i < num_items) ? this->eng_list[i] : INVALID_ENGINE; this->SetDirty(); - if (click_count > 1 && !this->listview_mode) this->OnClick(pt, WID_BV_BUILD, 1); + if (_ctrl_pressed) { + this->OnClick(pt, WID_BV_SHOW_HIDE, 1); + } else if (click_count > 1 && !this->listview_mode) { + this->OnClick(pt, WID_BV_BUILD, 1); + } break; } - case WID_BV_SORT_DROPDOWN: { // Select sorting criteria dropdown menu - uint32 hidden_mask = 0; - /* Disable sorting by power or tractive effort when the original acceleration model for road vehicles is being used. */ - if (this->vehicle_type == VEH_ROAD && - _settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) { - SetBit(hidden_mask, 3); // power - SetBit(hidden_mask, 4); // tractive effort - SetBit(hidden_mask, 8); // power by running costs - } - /* Disable sorting by tractive effort when the original acceleration model for trains is being used. */ - if (this->vehicle_type == VEH_TRAIN && - _settings_game.vehicle.train_acceleration_model == AM_ORIGINAL) { - SetBit(hidden_mask, 4); // tractive effort - } - ShowDropDownMenu(this, _sort_listing[this->vehicle_type], this->sort_criteria, WID_BV_SORT_DROPDOWN, 0, hidden_mask); + case WID_BV_SORT_DROPDOWN: // Select sorting criteria dropdown menu + DisplayVehicleSortDropDown(this, this->vehicle_type, this->sort_criteria, WID_BV_SORT_DROPDOWN); break; - } case WID_BV_CARGO_FILTER_DROPDOWN: // Select cargo filtering criteria dropdown menu ShowDropDownMenu(this, this->cargo_filter_texts, this->cargo_filter_criteria, WID_BV_CARGO_FILTER_DROPDOWN, 0, 0); break; + case WID_BV_SHOW_HIDE: { + const Engine *e = (this->sel_engine == INVALID_ENGINE) ? NULL : Engine::Get(this->sel_engine); + if (e != NULL) { + DoCommandP(0, 0, this->sel_engine | (e->IsHidden(_current_company) ? 0 : (1u << 31)), CMD_SET_VEHICLE_VISIBILITY); + } + break; + } + case WID_BV_BUILD: { EngineID sel_eng = this->sel_engine; if (sel_eng != INVALID_ENGINE) { @@ -1285,7 +1339,7 @@ struct BuildVehicleWindow : Window { _settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL && this->sort_criteria > 7) { this->sort_criteria = 0; - _last_sort_criteria[VEH_ROAD] = 0; + _engine_sort_last_criteria[VEH_ROAD] = 0; } this->eng_list.ForceRebuild(); } @@ -1303,11 +1357,22 @@ struct BuildVehicleWindow : Window { break; case WID_BV_SORT_DROPDOWN: - SetDParam(0, _sort_listing[this->vehicle_type][this->sort_criteria]); + SetDParam(0, _engine_sort_listing[this->vehicle_type][this->sort_criteria]); break; case WID_BV_CARGO_FILTER_DROPDOWN: SetDParam(0, this->cargo_filter_texts[this->cargo_filter_criteria]); + break; + + case WID_BV_SHOW_HIDE: { + const Engine *e = (this->sel_engine == INVALID_ENGINE) ? NULL : Engine::Get(this->sel_engine); + if (e != NULL && e->IsHidden(_local_company)) { + SetDParam(0, STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type); + } else { + SetDParam(0, STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type); + } + break; + } } } @@ -1317,19 +1382,27 @@ struct BuildVehicleWindow : Window { case WID_BV_LIST: resize->height = GetEngineListHeight(this->vehicle_type); size->height = 3 * resize->height; + size->width = max(size->width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165); break; case WID_BV_PANEL: size->height = this->details_height; break; - case WID_BV_SORT_ASSENDING_DESCENDING: { + case WID_BV_SORT_ASCENDING_DESCENDING: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; } + + case WID_BV_SHOW_HIDE: + *size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type); + *size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type)); + size->width += padding.width; + size->height += padding.height; + break; } } @@ -1340,8 +1413,8 @@ struct BuildVehicleWindow : Window { DrawEngineList(this->vehicle_type, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, &this->eng_list, this->vscroll->GetPosition(), min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->eng_list.Length()), this->sel_engine, false, DEFAULT_GROUP); break; - case WID_BV_SORT_ASSENDING_DESCENDING: - this->DrawSortButtonState(WID_BV_SORT_ASSENDING_DESCENDING, this->descending_sort_order ? SBS_DOWN : SBS_UP); + case WID_BV_SORT_ASCENDING_DESCENDING: + this->DrawSortButtonState(WID_BV_SORT_ASCENDING_DESCENDING, this->descending_sort_order ? SBS_DOWN : SBS_UP); break; } } @@ -1351,6 +1424,8 @@ struct BuildVehicleWindow : Window { this->GenerateBuildList(); this->vscroll->SetCount(this->eng_list.Length()); + this->SetWidgetDisabledState(WID_BV_SHOW_HIDE, this->sel_engine == INVALID_ENGINE); + this->DrawWidgets(); if (!this->IsShaded()) { @@ -1384,7 +1459,7 @@ struct BuildVehicleWindow : Window { case WID_BV_SORT_DROPDOWN: if (this->sort_criteria != index) { this->sort_criteria = index; - _last_sort_criteria[this->vehicle_type] = this->sort_criteria; + _engine_sort_last_criteria[this->vehicle_type] = this->sort_criteria; this->eng_list.ForceRebuild(); } break; @@ -1392,7 +1467,7 @@ struct BuildVehicleWindow : Window { case WID_BV_CARGO_FILTER_DROPDOWN: // Select a cargo filter criteria if (this->cargo_filter_criteria != index) { this->cargo_filter_criteria = index; - _last_filter_criteria[this->vehicle_type] = this->cargo_filter[this->cargo_filter_criteria]; + _engine_sort_last_cargo_criteria[this->vehicle_type] = this->cargo_filter[this->cargo_filter_criteria]; /* deactivate filter if criteria is 'Show All', activate it otherwise */ this->eng_list.SetFilterState(this->cargo_filter[this->cargo_filter_criteria] != CF_ANY); this->eng_list.ForceRebuild(); diff --git a/src/cargoaction.cpp b/src/cargoaction.cpp index 929017506a..96ddc3708e 100644 --- a/src/cargoaction.cpp +++ b/src/cargoaction.cpp @@ -14,6 +14,8 @@ #include "cargoaction.h" #include "station_base.h" +#include "safeguards.h" + /** * Decides if a packet needs to be split. * @param cp Packet to be either split or moved in one piece. @@ -224,8 +226,7 @@ bool VehicleCargoReroute::operator()(CargoPacket *cp) } if (this->source != this->destination) { this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_TRANSFER, cp_new->Count()); - this->source->AddToMeta(cp_new, VehicleCargoList::MTA_TRANSFER); - this->destination->action_counts[VehicleCargoList::MTA_TRANSFER] += cp_new->Count(); + this->destination->AddToMeta(cp_new, VehicleCargoList::MTA_TRANSFER); } /* Legal, as front pushing doesn't invalidate iterators in std::list. */ diff --git a/src/cargoaction.h b/src/cargoaction.h index c305fcb29f..0311efcae1 100644 --- a/src/cargoaction.h +++ b/src/cargoaction.h @@ -88,7 +88,7 @@ public: }; /** Action of reserving cargo from a station to be loaded onto a vehicle. */ -class CargoReservation: public CargoLoad { +class CargoReservation : public CargoLoad { public: CargoReservation(StationCargoList *source, VehicleCargoList *destination, uint max_move, TileIndex load_place) : CargoLoad(source, destination, max_move, load_place) {} @@ -96,7 +96,7 @@ public: }; /** Action of returning previously reserved cargo from the vehicle to the station. */ -class CargoReturn: public CargoMovement { +class CargoReturn : public CargoMovement { StationID next; public: CargoReturn(VehicleCargoList *source, StationCargoList *destination, uint max_move, StationID next) : diff --git a/src/cargomonitor.cpp b/src/cargomonitor.cpp index 5120967854..b1d52d6b18 100644 --- a/src/cargomonitor.cpp +++ b/src/cargomonitor.cpp @@ -13,15 +13,17 @@ #include "cargomonitor.h" #include "station_base.h" +#include "safeguards.h" + CargoMonitorMap _cargo_pickups; ///< Map of monitored pick-ups to the amount since last query/activation. CargoMonitorMap _cargo_deliveries; ///< Map of monitored deliveries to the amount since last query/activation. /** - * Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring. - * Clears all monitors that belong to the specified company or all if INVALID_OWNER + * Helper method for #ClearCargoPickupMonitoring and #ClearCargoDeliveryMonitoring. + * Clears all monitors that belong to the specified company or all if #INVALID_OWNER * is specified as company. * @param cargo_monitor_map reference to the cargo monitor map to operate on. - * @param company company to clear cargo monitors for or INVALID_OWNER if all cargo monitors should be cleared. + * @param company company to clear cargo monitors for or #INVALID_OWNER if all cargo monitors should be cleared. */ static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID company = INVALID_OWNER) { @@ -42,7 +44,7 @@ static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID c /** * Clear all pick-up cargo monitors. - * @param company clear all pick-up monitors for this company or if INVALID_OWNER + * @param company clear all pick-up monitors for this company or if #INVALID_OWNER * is passed, all pick-up monitors are cleared regardless of company. */ void ClearCargoPickupMonitoring(CompanyID company) @@ -52,7 +54,7 @@ void ClearCargoPickupMonitoring(CompanyID company) /** * Clear all delivery cargo monitors. - * @param company clear all delivery monitors for this company or if INVALID_OWNER + * @param company clear all delivery monitors for this company or if #INVALID_OWNER * is passed, all delivery monitors are cleared regardless of company. */ void ClearCargoDeliveryMonitoring(CompanyID company) @@ -67,7 +69,7 @@ void ClearCargoDeliveryMonitoring(CompanyID company) * @param keep_monitoring After returning from this call, continue monitoring. * @return Amount collected since last query/activation for the monitored combination. */ -static uint32 GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, bool keep_monitoring) +static int32 GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, bool keep_monitoring) { CargoMonitorMap::iterator iter = monitor_map.find(monitor); if (iter == monitor_map.end()) { @@ -77,7 +79,7 @@ static uint32 GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, bo } return 0; } else { - uint32 result = iter->second; + int32 result = iter->second; iter->second = 0; if (!keep_monitoring) monitor_map.erase(iter); return result; @@ -90,7 +92,7 @@ static uint32 GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, bo * @param keep_monitoring After returning from this call, continue monitoring. * @return Amount of delivered cargo for the monitored combination. */ -uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring) +int32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring) { return GetAmount(_cargo_deliveries, monitor, keep_monitoring); } @@ -102,7 +104,7 @@ uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring) * @return Amount of picked up cargo for the monitored combination. * @note Cargo pick up is counted on final delivery, to prevent users getting credit for picking up cargo without delivering it. */ -uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring) +int32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring) { return GetAmount(_cargo_pickups, monitor, keep_monitoring); } diff --git a/src/cargomonitor.h b/src/cargomonitor.h index ce9a8e5d6d..061a1821a4 100644 --- a/src/cargomonitor.h +++ b/src/cargomonitor.h @@ -16,6 +16,7 @@ #include "company_func.h" #include "industry.h" #include "town.h" +#include "core/overflowsafe_type.hpp" #include struct Station; @@ -31,7 +32,7 @@ struct Station; typedef uint32 CargoMonitorID; ///< Type of the cargo monitor number. /** Map type for storing and updating active cargo monitor numbers and their amounts. */ -typedef std::map CargoMonitorMap; +typedef std::map CargoMonitorMap; extern CargoMonitorMap _cargo_pickups; extern CargoMonitorMap _cargo_deliveries; @@ -141,8 +142,8 @@ static inline TownID DecodeMonitorTown(CargoMonitorID num) void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER); void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER); -uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring); -uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring); +int32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring); +int32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring); void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st); #endif /* CARGOMONITOR_H */ diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index 6a37cb4887..9b96be62eb 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -17,6 +17,8 @@ #include "cargoaction.h" #include "order_type.h" +#include "safeguards.h" + /* Initialize the cargopacket-pool */ CargoPacketPool _cargopacket_pool("CargoPacket"); INSTANTIATE_POOL_METHODS(CargoPacket) @@ -357,6 +359,7 @@ void VehicleCargoList::AddToCache(const CargoPacket *cp) */ void VehicleCargoList::RemoveFromMeta(const CargoPacket *cp, MoveToAction action, uint count) { + assert(count <= this->action_counts[action]); this->AssertCountConsistency(); this->RemoveFromCache(cp, count); this->action_counts[action] -= count; @@ -408,6 +411,29 @@ void VehicleCargoList::SetTransferLoadPlace(TileIndex xy) } } +/** + * Choose action to be performed with the given cargo packet. + * @param cp The packet. + * @param cargo_next Next hop the cargo wants to pass. + * @param current_station Current station of the vehicle carrying the cargo. + * @param accepted If the cargo is accepted at the current station. + * @param next_station Next station(s) the vehicle may stop at. + * @return MoveToAction to be performed. + */ +/* static */ VehicleCargoList::MoveToAction VehicleCargoList::ChooseAction(const CargoPacket *cp, StationID cargo_next, + StationID current_station, bool accepted, StationIDStack next_station) +{ + if (cargo_next == INVALID_STATION) { + return (accepted && cp->source != current_station) ? MTA_DELIVER : MTA_KEEP; + } else if (cargo_next == current_station) { + return MTA_DELIVER; + } else if (next_station.Contains(cargo_next)) { + return MTA_KEEP; + } else { + return MTA_TRANSFER; + } +} + /** * Stages cargo for unloading. The cargo is sorted so that packets to be * transferred, delivered or kept are in consecutive chunks in the list. At the @@ -421,7 +447,7 @@ void VehicleCargoList::SetTransferLoadPlace(TileIndex xy) * @param payment Payment object for registering transfers. * return If any cargo will be unloaded. */ -bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID next_station, uint8 order_flags, const GoodsEntry *ge, CargoPayment *payment) +bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationIDStack next_station, uint8 order_flags, const GoodsEntry *ge, CargoPayment *payment) { this->AssertCountConsistency(); assert(this->action_counts[MTA_LOAD] == 0); @@ -446,24 +472,43 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID action = MTA_DELIVER; } else if (force_transfer) { action = MTA_TRANSFER; - cargo_next = ge->GetVia(cp->source, current_station, next_station); - assert((cargo_next != next_station || cargo_next == INVALID_STATION) && - cargo_next != current_station); + /* We cannot send the cargo to any of the possible next hops and + * also not to the current station. */ + FlowStatMap::const_iterator flow_it(ge->flows.find(cp->source)); + if (flow_it == ge->flows.end()) { + cargo_next = INVALID_STATION; + } else { + FlowStat new_shares = flow_it->second; + new_shares.ChangeShare(current_station, INT_MIN); + StationIDStack excluded = next_station; + while (!excluded.IsEmpty() && !new_shares.GetShares()->empty()) { + new_shares.ChangeShare(excluded.Pop(), INT_MIN); + } + if (new_shares.GetShares()->empty()) { + cargo_next = INVALID_STATION; + } else { + cargo_next = new_shares.GetVia(); + } + } } else { /* Rewrite an invalid source station to some random other one to * avoid keeping the cargo in the vehicle forever. */ if (cp->source == INVALID_STATION && !ge->flows.empty()) { cp->source = ge->flows.begin()->first; } - cargo_next = ge->GetVia(cp->source); - if (cargo_next == INVALID_STATION) { - action = (accepted && cp->source != current_station) ? MTA_DELIVER : MTA_KEEP; - } else if (cargo_next == current_station) { - action = MTA_DELIVER; - } else if (cargo_next == next_station) { - action = MTA_KEEP; + bool restricted = false; + FlowStatMap::const_iterator flow_it(ge->flows.find(cp->source)); + if (flow_it == ge->flows.end()) { + cargo_next = INVALID_STATION; } else { - action = MTA_TRANSFER; + cargo_next = flow_it->second.GetViaWithRestricted(restricted); + } + action = VehicleCargoList::ChooseAction(cp, cargo_next, current_station, accepted, next_station); + if (restricted && action == MTA_TRANSFER) { + /* If the flow is restricted we can't transfer to it. Choose an + * unrestricted one instead. */ + cargo_next = flow_it->second.GetVia(); + action = VehicleCargoList::ChooseAction(cp, cargo_next, current_station, accepted, next_station); } } Money share; @@ -502,17 +547,54 @@ void VehicleCargoList::InvalidateCache() /** * Moves some cargo from one designation to another. You can only move - * between adjacent designations. E.g. you can keep cargo that was - * previously reserved (MTA_LOAD) or you can mark cargo to be transferred - * that was previously marked as to be delivered, but you can't reserve - * cargo that's marked as to be delivered. + * between adjacent designations. E.g. you can keep cargo that was previously + * reserved (MTA_LOAD), but you can't reserve cargo that's marked as to be + * delivered. Furthermore, as this method doesn't change the actual packets, + * you cannot move cargo from or to MTA_TRANSFER. You need a specialized + * template method for that. + * @tparam from Previous designation of cargo. + * @tparam to New designation of cargo. + * @param max_move Maximum amount of cargo to reassign. + * @return Amount of cargo actually reassigned. + */ +template +uint VehicleCargoList::Reassign(uint max_move, TileOrStationID) +{ + assert_tcompile(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER); + assert_tcompile(Tfrom - Tto == 1 || Tto - Tfrom == 1); + max_move = min(this->action_counts[Tfrom], max_move); + this->action_counts[Tfrom] -= max_move; + this->action_counts[Tto] += max_move; + return max_move; +} + +/** + * Reassign cargo from MTA_DELIVER to MTA_TRANSFER and take care of the next + * station the cargo wants to visit. + * @param max_move Maximum amount of cargo to reassign. + * @param next_station Station to record as next hop in the reassigned packets. + * @return Amount of cargo actually reassigned. */ -uint VehicleCargoList::Reassign(uint max_move, MoveToAction from, MoveToAction to) +template<> +uint VehicleCargoList::Reassign(uint max_move, TileOrStationID next_station) { - max_move = min(this->action_counts[from], max_move); - assert(Delta((int)from, (int)to) == 1); - this->action_counts[from] -= max_move; - this->action_counts[to] += max_move; + max_move = min(this->action_counts[MTA_DELIVER], max_move); + + uint sum = 0; + for (Iterator it(this->packets.begin()); sum < this->action_counts[MTA_TRANSFER] + max_move;) { + CargoPacket *cp = *it++; + sum += cp->Count(); + if (sum <= this->action_counts[MTA_TRANSFER]) continue; + if (sum > this->action_counts[MTA_TRANSFER] + max_move) { + CargoPacket *cp_split = cp->Split(sum - this->action_counts[MTA_TRANSFER] + max_move); + sum -= cp_split->Count(); + this->packets.insert(it, cp_split); + } + cp->next_station = next_station; + } + + this->action_counts[MTA_DELIVER] -= max_move; + this->action_counts[MTA_TRANSFER] += max_move; return max_move; } @@ -667,10 +749,14 @@ bool StationCargoList::ShiftCargo(Taction &action, StationID next) * @return Amount of cargo actually moved. */ template -uint StationCargoList::ShiftCargo(Taction action, StationID next, bool include_invalid) +uint StationCargoList::ShiftCargo(Taction action, StationIDStack next, bool include_invalid) { uint max_move = action.MaxMove(); - if (this->ShiftCargo(action, next) && include_invalid && action.MaxMove() > 0) { + while (!next.IsEmpty()) { + this->ShiftCargo(action, next.Pop()); + if (action.MaxMove() == 0) break; + } + if (include_invalid && action.MaxMove() > 0) { this->ShiftCargo(action, INVALID_STATION); } return max_move - action.MaxMove(); @@ -735,10 +821,10 @@ uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_ * @param max_move Maximum amount of cargo to reserve. * @param dest VehicleCargoList to reserve for. * @param load_place Tile index of the current station. - * @param next_station Next station the loading vehicle will visit. + * @param next_station Next station(s) the loading vehicle will visit. * @return Amount of cargo actually reserved. */ -uint StationCargoList::Reserve(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationID next_station) +uint StationCargoList::Reserve(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationIDStack next_station) { return this->ShiftCargo(CargoReservation(this, dest, max_move, load_place), next_station, true); } @@ -749,18 +835,18 @@ uint StationCargoList::Reserve(uint max_move, VehicleCargoList *dest, TileIndex * @param max_move Amount of cargo to load. * @param dest Vehicle cargo list where the cargo resides. * @param load_place The new loaded_at_xy to be assigned to packets being moved. - * @param next_station Next station the loading vehicle will visit. + * @param next_station Next station(s) the loading vehicle will visit. * @return Amount of cargo actually loaded. * @note Vehicles may or may not reserve, depending on their orders. The two * modes of loading are exclusive, though. If cargo is reserved we don't * need to load unreserved cargo. */ -uint StationCargoList::Load(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationID next_station) +uint StationCargoList::Load(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationIDStack next_station) { uint move = min(dest->ActionCount(VehicleCargoList::MTA_LOAD), max_move); if (move > 0) { this->reserved_count -= move; - dest->Reassign(move, VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP); + dest->Reassign(move); return move; } else { return this->ShiftCargo(CargoLoad(this, dest, max_move, load_place), next_station, true); @@ -785,3 +871,4 @@ uint StationCargoList::Reroute(uint max_move, StationCargoList *dest, StationID */ template class CargoList; template class CargoList; +template uint VehicleCargoList::Reassign(uint, TileOrStationID); diff --git a/src/cargopacket.h b/src/cargopacket.h index c4ea9e144b..0ed4fd9bbc 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -157,7 +157,7 @@ public: * Gets the ID of the station where the cargo was loaded for the first time. * @return StationID. */ - inline SourceID SourceStation() const + inline StationID SourceStation() const { return this->source; } @@ -311,6 +311,9 @@ protected: void AddToMeta(const CargoPacket *cp, MoveToAction action); void RemoveFromMeta(const CargoPacket *cp, MoveToAction action, uint count); + static MoveToAction ChooseAction(const CargoPacket *cp, StationID cargo_next, + StationID current_station, bool accepted, StationIDStack next_station); + public: /** The station cargo list needs to control the unloading. */ friend class StationCargoList; @@ -409,7 +412,7 @@ public: void SetTransferLoadPlace(TileIndex xy); - bool Stage(bool accepted, StationID current_station, StationID next_station, uint8 order_flags, const GoodsEntry *ge, CargoPayment *payment); + bool Stage(bool accepted, StationID current_station, StationIDStack next_station, uint8 order_flags, const GoodsEntry *ge, CargoPayment *payment); /** * Marks all cargo in the vehicle as to be kept. This is mostly useful for @@ -426,7 +429,8 @@ public: * amount of cargo to be moved. Second parameter is destination (if * applicable), return value is amount of cargo actually moved. */ - uint Reassign(uint max_move, MoveToAction from, MoveToAction to); + template + uint Reassign(uint max_move, TileOrStationID update = INVALID_TILE); uint Return(uint max_move, StationCargoList *dest, StationID next_station); uint Unload(uint max_move, StationCargoList *dest, CargoPayment *payment); uint Shift(uint max_move, VehicleCargoList *dest); @@ -483,7 +487,7 @@ public: bool ShiftCargo(Taction &action, StationID next); template - uint ShiftCargo(Taction action, StationID next, bool include_invalid); + uint ShiftCargo(Taction action, StationIDStack next, bool include_invalid); void Append(CargoPacket *cp, StationID next); @@ -492,9 +496,13 @@ public: * @param next Station the cargo is headed for. * @return If there is any cargo for that station. */ - inline bool HasCargoFor(StationID next) const + inline bool HasCargoFor(StationIDStack next) const { - return this->packets.find(next) != this->packets.end(); + while (!next.IsEmpty()) { + if (this->packets.find(next.Pop()) != this->packets.end()) return true; + } + /* Packets for INVALID_STTION can go anywhere. */ + return this->packets.find(INVALID_STATION) != this->packets.end(); } /** @@ -539,8 +547,8 @@ public: * amount of cargo to be moved. Second parameter is destination (if * applicable), return value is amount of cargo actually moved. */ - uint Reserve(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationID next); - uint Load(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationID next); + uint Reserve(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationIDStack next); + uint Load(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationIDStack next); uint Truncate(uint max_move = UINT_MAX, StationCargoAmountMap *cargo_per_source = NULL); uint Reroute(uint max_move, StationCargoList *dest, StationID avoid, StationID avoid2, const GoodsEntry *ge); diff --git a/src/cargotype.cpp b/src/cargotype.cpp index 6d601e2558..863c585616 100644 --- a/src/cargotype.cpp +++ b/src/cargotype.cpp @@ -20,6 +20,8 @@ #include "table/strings.h" #include "table/cargo_const.h" +#include "safeguards.h" + CargoSpec CargoSpec::array[NUM_CARGO]; /** diff --git a/src/cheat.cpp b/src/cheat.cpp index f8dae235fa..8b300c9668 100644 --- a/src/cheat.cpp +++ b/src/cheat.cpp @@ -12,6 +12,8 @@ #include "stdafx.h" #include "cheat_type.h" +#include "safeguards.h" + /** All the cheats. */ Cheats _cheats; diff --git a/src/cheat_gui.cpp b/src/cheat_gui.cpp index c49eb429e3..fda2b246e4 100644 --- a/src/cheat_gui.cpp +++ b/src/cheat_gui.cpp @@ -24,12 +24,18 @@ #include "rail_gui.h" #include "settings_gui.h" #include "company_gui.h" -#include "linkgraph/linkgraph.h" +#include "linkgraph/linkgraphschedule.h" +#include "map_func.h" +#include "tile_map.h" +#include "newgrf.h" +#include "error.h" #include "widgets/cheat_widget.h" #include "table/sprites.h" +#include "safeguards.h" + /** * The 'amount' to cheat with. @@ -102,8 +108,7 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2) if (p1 == _cur_year) return _cur_year; Date new_date = ConvertYMDToDate(p1, ymd.month, ymd.day); - LinkGraph *lg; - FOR_ALL_LINK_GRAPHS(lg) lg->ShiftDates(new_date - _date); + LinkGraphSchedule::instance.ShiftDates(new_date - _date); SetDate(new_date, _date_fract); EnginesMonthlyLoop(); SetWindowDirty(WC_STATUS_BAR, 0); @@ -113,6 +118,37 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2) return _cur_year; } +/** + * Allow (or disallow) a change of the maximum allowed heightlevel. + * @param p1 new value + * @param p2 unused + * @return New value (or unchanged old value) of the maximum + * allowed heightlevel value. + */ +static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2) +{ + p1 = Clamp(p1, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL); + + /* Check if at least one mountain on the map is higher than the new value. + * If yes, disallow the change. */ + for (TileIndex t = 0; t < MapSize(); t++) { + if ((int32)TileHeight(t) > p1) { + ShowErrorMessage(STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN, INVALID_STRING_ID, WL_ERROR); + /* Return old, unchanged value */ + return _settings_game.construction.max_heightlevel; + } + } + + /* Execute the change and reload GRF Data */ + _settings_game.construction.max_heightlevel = p1; + ReloadNewGRFData(); + + /* The smallmap uses an index from heightlevels to colours. Trigger rebuilding it. */ + InvalidateWindowClassesData(WC_SMALLMAP, 2); + + return _settings_game.construction.max_heightlevel; +} + /** Available cheats. */ enum CheatNumbers { CHT_MONEY, ///< Change amount of money. @@ -121,6 +157,7 @@ enum CheatNumbers { CHT_CROSSINGTUNNELS, ///< Allow tunnels to cross each other. CHT_NO_JETCRASH, ///< Disable jet-airplane crashes. CHT_SETUP_PROD, ///< Allow manually editing of industry production. + CHT_EDIT_MAX_HL, ///< Edit maximum allowed heightlevel CHT_CHANGE_DATE, ///< Do time traveling. CHT_NUM_CHEATS, ///< Number of cheats. @@ -153,6 +190,7 @@ static const CheatEntry _cheats_ui[] = { {SLE_BOOL, STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, NULL }, {SLE_BOOL, STR_CHEAT_NO_JETCRASH, &_cheats.no_jetcrash.value, &_cheats.no_jetcrash.been_used, NULL }, {SLE_BOOL, STR_CHEAT_SETUP_PROD, &_cheats.setup_prod.value, &_cheats.setup_prod.been_used, &ClickSetProdCheat }, + {SLE_UINT8, STR_CHEAT_EDIT_MAX_HL, &_settings_game.construction.max_heightlevel, &_cheats.edit_max_hl.been_used, &ClickChangeMaxHlCheat }, {SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_year, &_cheats.change_date.been_used, &ClickChangeDateCheat }, }; @@ -173,9 +211,13 @@ static const NWidgetPart _nested_cheat_widgets[] = { struct CheatWindow : Window { int clicked; int header_height; + int clicked_widget; + uint line_height; + int box_width; CheatWindow(WindowDesc *desc) : Window(desc) { + this->box_width = GetSpriteSize(SPR_BOX_EMPTY).width; this->InitNested(); } @@ -187,21 +229,24 @@ struct CheatWindow : Window { DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, y, STR_CHEATS_WARNING, TC_FROMSTRING, SA_CENTER); bool rtl = _current_text_dir == TD_RTL; - uint box_left = rtl ? r.right - 12 : r.left + 5; - uint button_left = rtl ? r.right - 20 - SETTING_BUTTON_WIDTH : r.left + 20; - uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : 30 + SETTING_BUTTON_WIDTH); - uint text_right = r.right - (rtl ? 30 + SETTING_BUTTON_WIDTH : WD_FRAMERECT_RIGHT); + uint box_left = rtl ? r.right - this->box_width - 5 : r.left + 5; + uint button_left = rtl ? r.right - this->box_width - 10 - SETTING_BUTTON_WIDTH : r.left + this->box_width + 10; + uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : 20 + this->box_width + SETTING_BUTTON_WIDTH); + uint text_right = r.right - (rtl ? 20 + this->box_width + SETTING_BUTTON_WIDTH : WD_FRAMERECT_RIGHT); + + int text_y_offset = (this->line_height - FONT_HEIGHT_NORMAL) / 2; + int icon_y_offset = (this->line_height - SETTING_BUTTON_HEIGHT) / 2; for (int i = 0; i != lengthof(_cheats_ui); i++) { const CheatEntry *ce = &_cheats_ui[i]; - DrawSprite((*ce->been_used) ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, box_left, y + 2); + DrawSprite((*ce->been_used) ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, box_left, y + icon_y_offset + 2); switch (ce->type) { case SLE_BOOL: { bool on = (*(bool*)ce->variable); - DrawBoolButton(button_left, y, on, true); + DrawBoolButton(button_left, y + icon_y_offset, on, true); SetDParam(0, on ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF); break; } @@ -211,7 +256,7 @@ struct CheatWindow : Window { char buf[512]; /* Draw [<][>] boxes for settings of an integer-type */ - DrawArrowButtons(button_left, y, COLOUR_YELLOW, clicked - (i * 2), true, true); + DrawArrowButtons(button_left, y + icon_y_offset, COLOUR_YELLOW, clicked - (i * 2), true, true); switch (ce->str) { /* Display date for change date cheat */ @@ -222,7 +267,7 @@ struct CheatWindow : Window { SetDParam(0, val + 1); GetString(buf, STR_CHEAT_CHANGE_COMPANY, lastof(buf)); uint offset = 10 + GetStringBoundingBox(buf).width; - DrawCompanyIcon(_local_company, rtl ? text_right - offset - 10 : text_left + offset, y + 2); + DrawCompanyIcon(_local_company, rtl ? text_right - offset - 10 : text_left + offset, y + icon_y_offset + 2); break; } @@ -232,9 +277,9 @@ struct CheatWindow : Window { } } - DrawString(text_left, text_right, y + 1, ce->str); + DrawString(text_left, text_right, y + text_y_offset, ce->str); - y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; + y += this->line_height; } } @@ -276,16 +321,20 @@ struct CheatWindow : Window { } } - size->width = width + 50 /* stuff on the left */ + 10 /* extra spacing on right */; + this->line_height = max(GetSpriteSize(SPR_BOX_CHECKED).height, GetSpriteSize(SPR_BOX_EMPTY).height); + this->line_height = max(this->line_height, SETTING_BUTTON_HEIGHT); + this->line_height = max(this->line_height, FONT_HEIGHT_NORMAL) + WD_PAR_VSEP_NORMAL; + + size->width = width + 20 + this->box_width + SETTING_BUTTON_WIDTH /* stuff on the left */ + 10 /* extra spacing on right */; this->header_height = GetStringHeight(STR_CHEATS_WARNING, size->width - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT) + WD_PAR_VSEP_WIDE; - size->height = this->header_height + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + (FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL) * lengthof(_cheats_ui); + size->height = this->header_height + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + this->line_height * lengthof(_cheats_ui); } virtual void OnClick(Point pt, int widget, int click_count) { const NWidgetBase *wid = this->GetWidget(WID_C_PANEL); - uint btn = (pt.y - wid->pos_y - WD_FRAMERECT_TOP - this->header_height) / (FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL); - uint x = pt.x - wid->pos_x; + uint btn = (pt.y - wid->pos_y - WD_FRAMERECT_TOP - this->header_height) / this->line_height; + int x = pt.x - wid->pos_x; bool rtl = _current_text_dir == TD_RTL; if (rtl) x = wid->current_x - x; @@ -295,15 +344,21 @@ struct CheatWindow : Window { int value = (int32)ReadValue(ce->variable, ce->type); int oldvalue = value; - if (btn == CHT_CHANGE_DATE && x >= 20 + SETTING_BUTTON_WIDTH) { + if (btn == CHT_CHANGE_DATE && x >= 20 + this->box_width + SETTING_BUTTON_WIDTH) { /* Click at the date text directly. */ + clicked_widget = CHT_CHANGE_DATE; SetDParam(0, value); ShowQueryString(STR_JUST_INT, STR_CHEAT_CHANGE_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_ACCEPT_UNCHANGED); return; + } else if (btn == CHT_EDIT_MAX_HL && x >= 20 + this->box_width + SETTING_BUTTON_WIDTH) { + clicked_widget = CHT_EDIT_MAX_HL; + SetDParam(0, value); + ShowQueryString(STR_JUST_INT, STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_ACCEPT_UNCHANGED); + return; } /* Not clicking a button? */ - if (!IsInsideMM(x, 20, 20 + SETTING_BUTTON_WIDTH)) return; + if (!IsInsideMM(x, 10 + this->box_width, 10 + this->box_width + SETTING_BUTTON_WIDTH)) return; *ce->been_used = true; @@ -315,10 +370,10 @@ struct CheatWindow : Window { default: /* Take whatever the function returns */ - value = ce->proc(value + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1), (x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1); + value = ce->proc(value + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1), (x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) ? 1 : -1); /* The first cheat (money), doesn't return a different value. */ - if (value != oldvalue || btn == CHT_MONEY) this->clicked = btn * 2 + 1 + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) != rtl ? 1 : 0); + if (value != oldvalue || btn == CHT_MONEY) this->clicked = btn * 2 + 1 + ((x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) != rtl ? 1 : 0); break; } @@ -340,7 +395,7 @@ struct CheatWindow : Window { /* Was 'cancel' pressed or nothing entered? */ if (str == NULL || StrEmpty(str)) return; - const CheatEntry *ce = &_cheats_ui[CHT_CHANGE_DATE]; + const CheatEntry *ce = &_cheats_ui[clicked_widget]; int oldvalue = (int32)ReadValue(ce->variable, ce->type); int value = atoi(str); *ce->been_used = true; diff --git a/src/cheat_type.h b/src/cheat_type.h index a345cdd3bd..a75acf35e3 100644 --- a/src/cheat_type.h +++ b/src/cheat_type.h @@ -36,6 +36,7 @@ struct Cheats { Cheat change_date; ///< changes date ingame Cheat setup_prod; ///< setup raw-material production in game Cheat dummy3; ///< empty cheat (enable running el-engines on normal rail) + Cheat edit_max_hl; ///< edit the maximum heightlevel; this is a cheat because of the fact that it needs to reset NewGRF game state and doing so as a simple configuration breaks the expectation of many }; extern Cheats _cheats; diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp index 46598866fc..2e9589aee2 100644 --- a/src/clear_cmd.cpp +++ b/src/clear_cmd.cpp @@ -23,6 +23,8 @@ #include "table/sprites.h" #include "table/clear_land.h" +#include "safeguards.h" + static CommandCost ClearTile_Clear(TileIndex tile, DoCommandFlag flags) { static const Price clear_price_table[] = { @@ -65,33 +67,33 @@ static void DrawClearLandFence(const TileInfo *ti) int maxz = GetSlopeMaxPixelZ(ti->tileh); - bool fence_nw = GetFenceNW(ti->tile) != 0; - if (fence_nw) { + uint fence_nw = GetFence(ti->tile, DIAGDIR_NW); + if (fence_nw != 0) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_W); - SpriteID sprite = _clear_land_fence_sprites[GetFenceNW(ti->tile) - 1] + _fence_mod_by_tileh_nw[ti->tileh]; + SpriteID sprite = _clear_land_fence_sprites[fence_nw - 1] + _fence_mod_by_tileh_nw[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y - 15, 16, 31, maxz - z + 4, ti->z + z, false, 0, 15, -z); } - bool fence_ne = GetFenceNE(ti->tile) != 0; - if (fence_ne) { + uint fence_ne = GetFence(ti->tile, DIAGDIR_NE); + if (fence_ne != 0) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_E); - SpriteID sprite = _clear_land_fence_sprites[GetFenceNE(ti->tile) - 1] + _fence_mod_by_tileh_ne[ti->tileh]; + SpriteID sprite = _clear_land_fence_sprites[fence_ne - 1] + _fence_mod_by_tileh_ne[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x - 15, ti->y, 31, 16, maxz - z + 4, ti->z + z, false, 15, 0, -z); } - bool fence_sw = GetFenceSW(ti->tile) != 0; - bool fence_se = GetFenceSE(ti->tile) != 0; + uint fence_sw = GetFence(ti->tile, DIAGDIR_SW); + uint fence_se = GetFence(ti->tile, DIAGDIR_SE); - if (fence_sw || fence_se) { + if (fence_sw != 0 || fence_se != 0) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_S); - if (fence_sw) { - SpriteID sprite = _clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh]; + if (fence_sw != 0) { + SpriteID sprite = _clear_land_fence_sprites[fence_sw - 1] + _fence_mod_by_tileh_sw[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y, 16, 16, maxz - z + 4, ti->z + z, false, 0, 0, -z); } - if (fence_se) { - SpriteID sprite = _clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh]; + if (fence_se != 0) { + SpriteID sprite = _clear_land_fence_sprites[fence_se - 1] + _fence_mod_by_tileh_se[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y, 16, 16, maxz - z + 4, ti->z + z, false, 0, 0, -z); } } @@ -110,7 +112,7 @@ static void DrawTile_Clear(TileInfo *ti) break; case CLEAR_ROCKS: - DrawGroundSprite(SPR_FLAT_ROCKY_LAND_1 + SlopeToSpriteOffset(ti->tileh), PAL_NONE); + DrawGroundSprite((HasGrfMiscBit(GMB_SECOND_ROCKY_TILE_SET) && (TileHash(ti->x, ti->y) & 1) ? SPR_FLAT_ROCKY_LAND_2 : SPR_FLAT_ROCKY_LAND_1) + SlopeToSpriteOffset(ti->tileh), PAL_NONE); break; case CLEAR_FIELDS: @@ -146,26 +148,26 @@ static void UpdateFences(TileIndex tile) bool dirty = false; bool neighbour = (IsTileType(TILE_ADDXY(tile, 1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 1, 0), CLEAR_FIELDS)); - if (!neighbour && GetFenceSW(tile) == 0) { - SetFenceSW(tile, 3); + if (!neighbour && GetFence(tile, DIAGDIR_SW) == 0) { + SetFence(tile, DIAGDIR_SW, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, 0, 1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, 1), CLEAR_FIELDS)); - if (!neighbour && GetFenceSE(tile) == 0) { - SetFenceSE(tile, 3); + if (!neighbour && GetFence(tile, DIAGDIR_SE) == 0) { + SetFence(tile, DIAGDIR_SE, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, -1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, -1, 0), CLEAR_FIELDS)); - if (!neighbour && GetFenceNE(tile) == 0) { - SetFenceNE(tile, 3); + if (!neighbour && GetFence(tile, DIAGDIR_NE) == 0) { + SetFence(tile, DIAGDIR_NE, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, 0, -1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, -1), CLEAR_FIELDS)); - if (!neighbour && GetFenceNW(tile) == 0) { - SetFenceNW(tile, 3); + if (!neighbour && GetFence(tile, DIAGDIR_NW) == 0) { + SetFence(tile, DIAGDIR_NW, 3); dirty = true; } @@ -249,8 +251,7 @@ static void TileLoop_Clear(TileIndex tile) /* If the tile is at any edge flood it to prevent maps without water. */ if (_settings_game.construction.freeform_edges && DistanceFromEdge(tile) == 1) { int z; - Slope slope = GetTileSlope(tile, &z); - if (z == 0 && slope == SLOPE_FLAT) { + if (IsTileFlat(tile, &z) && z == 0) { DoFloodTile(tile); MarkTileDirtyByTile(tile); return; diff --git a/src/clear_map.h b/src/clear_map.h index 54c2eb1b20..76b1e82d04 100644 --- a/src/clear_map.h +++ b/src/clear_map.h @@ -214,103 +214,41 @@ static inline void SetIndustryIndexOfField(TileIndex t, IndustryID i) /** - * Is there a fence at the south eastern border? + * Is there a fence at the given border? * @param t the tile to check for fences + * @param side the border to check * @pre IsClearGround(t, CLEAR_FIELDS) * @return 0 if there is no fence, otherwise the fence type */ -static inline uint GetFenceSE(TileIndex t) +static inline uint GetFence(TileIndex t, DiagDirection side) { assert(IsClearGround(t, CLEAR_FIELDS)); - return GB(_m[t].m4, 2, 3); -} - -/** - * Sets the type of fence (and whether there is one) for the south - * eastern border. - * @param t the tile to check for fences - * @param h 0 if there is no fence, otherwise the fence type - * @pre IsClearGround(t, CLEAR_FIELDS) - */ -static inline void SetFenceSE(TileIndex t, uint h) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - SB(_m[t].m4, 2, 3, h); -} - -/** - * Is there a fence at the south western border? - * @param t the tile to check for fences - * @pre IsClearGround(t, CLEAR_FIELDS) - * @return 0 if there is no fence, otherwise the fence type - */ -static inline uint GetFenceSW(TileIndex t) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - return GB(_m[t].m4, 5, 3); -} - -/** - * Sets the type of fence (and whether there is one) for the south - * western border. - * @param t the tile to check for fences - * @param h 0 if there is no fence, otherwise the fence type - * @pre IsClearGround(t, CLEAR_FIELDS) - */ -static inline void SetFenceSW(TileIndex t, uint h) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - SB(_m[t].m4, 5, 3, h); -} - -/** - * Is there a fence at the north eastern border? - * @param t the tile to check for fences - * @pre IsClearGround(t, CLEAR_FIELDS) - * @return 0 if there is no fence, otherwise the fence type - */ -static inline uint GetFenceNE(TileIndex t) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - return GB(_m[t].m3, 5, 3); -} - -/** - * Sets the type of fence (and whether there is one) for the north - * eastern border. - * @param t the tile to check for fences - * @param h 0 if there is no fence, otherwise the fence type - * @pre IsClearGround(t, CLEAR_FIELDS) - */ -static inline void SetFenceNE(TileIndex t, uint h) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - SB(_m[t].m3, 5, 3, h); -} - -/** - * Is there a fence at the north western border? - * @param t the tile to check for fences - * @pre IsClearGround(t, CLEAR_FIELDS) - * @return 0 if there is no fence, otherwise the fence type - */ -static inline uint GetFenceNW(TileIndex t) -{ - assert(IsClearGround(t, CLEAR_FIELDS)); - return GB(_m[t].m6, 2, 3); + switch (side) { + default: NOT_REACHED(); + case DIAGDIR_SE: return GB(_m[t].m4, 2, 3); + case DIAGDIR_SW: return GB(_m[t].m4, 5, 3); + case DIAGDIR_NE: return GB(_m[t].m3, 5, 3); + case DIAGDIR_NW: return GB(_me[t].m6, 2, 3); + } } /** - * Sets the type of fence (and whether there is one) for the north - * western border. + * Sets the type of fence (and whether there is one) for the given border. * @param t the tile to check for fences + * @param side the border to check * @param h 0 if there is no fence, otherwise the fence type * @pre IsClearGround(t, CLEAR_FIELDS) */ -static inline void SetFenceNW(TileIndex t, uint h) +static inline void SetFence(TileIndex t, DiagDirection side, uint h) { assert(IsClearGround(t, CLEAR_FIELDS)); - SB(_m[t].m6, 2, 3, h); + switch (side) { + default: NOT_REACHED(); + case DIAGDIR_SE: SB(_m[t].m4, 2, 3, h); break; + case DIAGDIR_SW: SB(_m[t].m4, 5, 3, h); break; + case DIAGDIR_NE: SB(_m[t].m3, 5, 3, h); break; + case DIAGDIR_NW: SB(_me[t].m6, 2, 3, h); break; + } } @@ -322,10 +260,6 @@ static inline void SetFenceNW(TileIndex t, uint h) */ static inline void MakeClear(TileIndex t, ClearGround g, uint density) { - /* If this is a non-bridgeable tile, clear the bridge bits while the rest - * of the tile information is still here. */ - if (!MayHaveBridgeAbove(t)) SB(_m[t].m6, 6, 2, 0); - SetTileType(t, MP_CLEAR); _m[t].m1 = 0; SetTileOwner(t, OWNER_NONE); @@ -333,7 +267,7 @@ static inline void MakeClear(TileIndex t, ClearGround g, uint density) _m[t].m3 = 0; _m[t].m4 = 0 << 5 | 0 << 2; SetClearGroundDensity(t, g, density); // Sets m5 - SB(_m[t].m6, 2, 4, 0); // Other bits are "tropic zone" and "bridge above" + _me[t].m6 = 0; _me[t].m7 = 0; } @@ -353,7 +287,7 @@ static inline void MakeField(TileIndex t, uint field_type, IndustryID industry) _m[t].m3 = field_type; _m[t].m4 = 0 << 5 | 0 << 2; SetClearGroundDensity(t, CLEAR_FIELDS, 3); - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/command.cpp b/src/command.cpp index de0dbab600..959610cd28 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" +#include "safeguards.h" + CommandProc CmdBuildRailroadTrack; CommandProc CmdRemoveRailroadTrack; CommandProc CmdBuildSingleRail; @@ -82,6 +84,7 @@ CommandProc CmdBuildVehicle; CommandProc CmdSellVehicle; CommandProc CmdRefitVehicle; CommandProc CmdSendVehicleToDepot; +CommandProc CmdSetVehicleVisibility; CommandProc CmdForceTrainProceed; CommandProc CmdReverseTrainDirection; @@ -142,6 +145,7 @@ CommandProc CmdClearArea; CommandProc CmdGiveMoney; CommandProc CmdMoneyCheat; +CommandProc CmdChangeBankBalance; CommandProc CmdBuildCanal; CommandProc CmdBuildLock; @@ -159,8 +163,10 @@ CommandProc CmdCreateStoryPage; CommandProc CmdCreateStoryPageElement; CommandProc CmdUpdateStoryPageElement; CommandProc CmdSetStoryPageTitle; +CommandProc CmdSetStoryPageDate; CommandProc CmdShowStoryPage; CommandProc CmdRemoveStoryPage; +CommandProc CmdRemoveStoryPageElement; CommandProc CmdLevelLand; @@ -177,7 +183,7 @@ CommandProc CmdDepotSellAllVehicles; CommandProc CmdDepotMassAutoReplace; CommandProc CmdCreateGroup; -CommandProc CmdRenameGroup; +CommandProc CmdAlterGroup; CommandProc CmdDeleteGroup; CommandProc CmdAddVehicleGroup; CommandProc CmdAddSharedVehicleGroup; @@ -218,7 +224,7 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdRemoveFromRailStation, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_STATION DEF_CMD(CmdConvertRail, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_CONVERT_RAILD DEF_CMD(CmdBuildRailWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_RAIL_WAYPOINT - DEF_CMD(CmdRenameWaypoint, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_WAYPOINT + DEF_CMD(CmdRenameWaypoint, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_WAYPOINT DEF_CMD(CmdRemoveFromRailWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_WAYPOINT DEF_CMD(CmdBuildRoadStop, CMD_NO_WATER | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_ROAD_STOP @@ -238,12 +244,13 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdSellVehicle, CMD_CLIENT_ID, CMDT_VEHICLE_CONSTRUCTION ), // CMD_SELL_VEHICLE DEF_CMD(CmdRefitVehicle, 0, CMDT_VEHICLE_CONSTRUCTION ), // CMD_REFIT_VEHICLE DEF_CMD(CmdSendVehicleToDepot, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_SEND_VEHICLE_TO_DEPOT + DEF_CMD(CmdSetVehicleVisibility, 0, CMDT_COMPANY_SETTING ), // CMD_SET_VEHICLE_VISIBILITY DEF_CMD(CmdMoveRailVehicle, 0, CMDT_VEHICLE_CONSTRUCTION ), // CMD_MOVE_RAIL_VEHICLE DEF_CMD(CmdForceTrainProceed, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_FORCE_TRAIN_PROCEED DEF_CMD(CmdReverseTrainDirection, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_REVERSE_TRAIN_DIRECTION - DEF_CMD(CmdClearOrderBackup, CMD_CLIENT_ID, CMDT_ROUTE_MANAGEMENT ), // CMD_CLEAR_ORDER_BACKUP + DEF_CMD(CmdClearOrderBackup, CMD_CLIENT_ID, CMDT_SERVER_SETTING ), // CMD_CLEAR_ORDER_BACKUP DEF_CMD(CmdModifyOrder, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_MODIFY_ORDER DEF_CMD(CmdSkipToOrder, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SKIP_TO_ORDER DEF_CMD(CmdDeleteOrder, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_DELETE_ORDER @@ -280,8 +287,8 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdSellShareInCompany, 0, CMDT_MONEY_MANAGEMENT ), // CMD_SELL_SHARE_IN_COMPANY DEF_CMD(CmdBuyCompany, 0, CMDT_MONEY_MANAGEMENT ), // CMD_BUY_COMANY - DEF_CMD(CmdFoundTown, CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_FOUND_TOWN; founding random town can fail only in exec run - DEF_CMD(CmdRenameTown, CMD_SERVER, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_TOWN + DEF_CMD(CmdFoundTown, CMD_DEITY | CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_FOUND_TOWN; founding random town can fail only in exec run + DEF_CMD(CmdRenameTown, CMD_DEITY | CMD_SERVER, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_TOWN DEF_CMD(CmdDoTownAction, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_DO_TOWN_ACTION DEF_CMD(CmdTownCargoGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_TOWN_CARGO_GOAL DEF_CMD(CmdTownGrowthRate, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_TOWN_GROWTH_RATE @@ -295,6 +302,7 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdClearArea, CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_CLEAR_AREA; destroying multi-tile houses makes town rating differ between test and execution DEF_CMD(CmdMoneyCheat, CMD_OFFLINE, CMDT_CHEAT ), // CMD_MONEY_CHEAT + DEF_CMD(CmdChangeBankBalance, CMD_DEITY, CMDT_MONEY_MANAGEMENT ), // CMD_CHANGE_BANK_BALANCE DEF_CMD(CmdBuildCanal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_CANAL DEF_CMD(CmdCreateSubsidy, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_SUBSIDY DEF_CMD(CmdCompanyCtrl, CMD_SPECTATOR | CMD_CLIENT_ID, CMDT_SERVER_SETTING ), // CMD_COMPANY_CTRL @@ -310,8 +318,10 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdCreateStoryPageElement, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_STORY_PAGE_ELEMENT DEF_CMD(CmdUpdateStoryPageElement, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_UPDATE_STORY_PAGE_ELEMENT DEF_CMD(CmdSetStoryPageTitle, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_STORY_PAGE_TITLE + DEF_CMD(CmdSetStoryPageDate, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_STORY_PAGE_DATE DEF_CMD(CmdShowStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SHOW_STORY_PAGE - DEF_CMD(CmdRemoveStoryPage, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_PAGE + DEF_CMD(CmdRemoveStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_PAGE + DEF_CMD(CmdRemoveStoryPageElement, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_ELEMENT_PAGE DEF_CMD(CmdLevelLand, CMD_ALL_TILES | CMD_NO_TEST | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_LEVEL_LAND; test run might clear tiles multiple times, in execution that only happens once @@ -332,7 +342,7 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdDepotMassAutoReplace, 0, CMDT_VEHICLE_CONSTRUCTION ), // CMD_DEPOT_MASS_AUTOREPLACE DEF_CMD(CmdCreateGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_CREATE_GROUP DEF_CMD(CmdDeleteGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_DELETE_GROUP - DEF_CMD(CmdRenameGroup, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_GROUP + DEF_CMD(CmdAlterGroup, 0, CMDT_OTHER_MANAGEMENT ), // CMD_ALTER_GROUP DEF_CMD(CmdAddVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_VEHICLE_GROUP DEF_CMD(CmdAddSharedVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_SHARE_VEHICLE_GROUP DEF_CMD(CmdRemoveAllVehiclesGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_REMOVE_ALL_VEHICLES_GROUP @@ -569,7 +579,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac /* Only show the error when it's for us. */ StringID error_part1 = GB(cmd, 16, 16); if (estimate_only || (IsLocalCompany() && error_part1 != 0 && my_cmd)) { - ShowErrorMessage(error_part1, res.GetErrorMessage(), WL_INFO, x, y, res.GetTextRefStackSize(), res.GetTextRefStack()); + ShowErrorMessage(error_part1, res.GetErrorMessage(), WL_INFO, x, y, res.GetTextRefStackGRF(), res.GetTextRefStackSize(), res.GetTextRefStack()); } } else if (estimate_only) { ShowEstimatedCostOrIncome(res.GetCost(), x, y); @@ -595,7 +605,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac * @param cmd the command cost to return. * @param clear whether to keep the storage changes or not. */ -#define return_dcpi(cmd, clear) { _docommand_recursive = 0; ClearStorageChanges(clear); return cmd; } +#define return_dcpi(cmd) { _docommand_recursive = 0; return cmd; } /*! * Helper function for the toplevel network safe docommand function for the current company. @@ -639,7 +649,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, #endif /* Do not even think about executing out-of-bounds tile-commands */ - if (tile != 0 && (tile >= MapSize() || (!IsValidTile(tile) && (cmd_flags & CMD_ALL_TILES) == 0))) return_dcpi(CMD_ERROR, false); + if (tile != 0 && (tile >= MapSize() || (!IsValidTile(tile) && (cmd_flags & CMD_ALL_TILES) == 0))) return_dcpi(CMD_ERROR); /* Always execute server and spectator commands as spectator */ bool exec_as_spectator = (cmd_flags & (CMD_SPECTATOR | CMD_SERVER)) != 0; @@ -648,7 +658,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, * The server will ditch any server commands a client sends to it, so effectively * this guards the server from executing functions for an invalid company. */ if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company) && !(_current_company == OWNER_DEITY && (cmd_flags & CMD_DEITY) != 0)) { - return_dcpi(CMD_ERROR, false); + return_dcpi(CMD_ERROR); } Backup cur_company(_current_company, FILE_LINE); @@ -659,8 +669,9 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, /* Test the command. */ _cleared_object_areas.Clear(); SetTownRatingTestMode(true); - ClearStorageChanges(false); + BasePersistentStorageArray::SwitchMode(PSM_ENTER_TESTMODE); CommandCost res = proc(tile, flags, p1, p2, text); + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_TESTMODE); SetTownRatingTestMode(false); /* Make sure we're not messing things up here. */ @@ -679,7 +690,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, DEBUG(desync, 1, "cmdf: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text, GetCommandName(cmd)); } cur_company.Restore(); - return_dcpi(res, false); + return_dcpi(res); } #ifdef ENABLE_NETWORK @@ -695,7 +706,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, * This way it's not handled by DoCommand and only the * actual execution of the command causes messages. Also * reset the storages as we've not executed the command. */ - return_dcpi(CommandCost(), false); + return_dcpi(CommandCost()); } #endif /* ENABLE_NETWORK */ DEBUG(desync, 1, "cmd: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text, GetCommandName(cmd)); @@ -703,8 +714,9 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, /* Actually try and execute the command. If no cost-type is given * use the construction one */ _cleared_object_areas.Clear(); - ClearStorageChanges(false); + BasePersistentStorageArray::SwitchMode(PSM_ENTER_COMMAND); CommandCost res2 = proc(tile, flags | DC_EXEC, p1, p2, text); + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_COMMAND); if (cmd_id == CMD_COMPANY_CTRL) { cur_company.Trash(); @@ -725,7 +737,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, if (!test_and_exec_can_differ) { assert(res.GetCost() == res2.GetCost() && res.Failed() == res2.Failed()); // sanity check } else if (res2.Failed()) { - return_dcpi(res2, false); + return_dcpi(res2); } /* If we're needing more money and we haven't done @@ -735,7 +747,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, * So make sure the signal buffer is empty even in this case */ UpdateSignalsInBuffer(); SetDParam(0, _additional_cash_required); - return_dcpi(CommandCost(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY), false); + return_dcpi(CommandCost(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY)); } /* update last build coordinate of company. */ @@ -749,7 +761,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, /* update signals if needed */ UpdateSignalsInBuffer(); - return_dcpi(res2, true); + return_dcpi(res2); } #undef return_dcpi @@ -777,13 +789,15 @@ uint32 CommandCost::textref_stack[16]; /** * Activate usage of the NewGRF #TextRefStack for the error message. - * @param number of entries to copy from the temporary NewGRF registers + * @param grffile NewGRF that provides the #TextRefStack + * @param num_registers number of entries to copy from the temporary NewGRF registers */ -void CommandCost::UseTextRefStack(uint num_registers) +void CommandCost::UseTextRefStack(const GRFFile *grffile, uint num_registers) { extern TemporaryStorageArray _temp_store; assert(num_registers < lengthof(textref_stack)); + this->textref_stack_grffile = grffile; this->textref_stack_size = num_registers; for (uint i = 0; i < num_registers; i++) { textref_stack[i] = _temp_store.GetValue(0x100 + i); diff --git a/src/command_type.h b/src/command_type.h index f3236f261c..f318216acc 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -16,6 +16,8 @@ #include "strings_type.h" #include "tile_type.h" +struct GRFFile; + /** * Common return value for all commands. Wraps the cost and * a possible error message/state together. @@ -25,6 +27,7 @@ class CommandCost { Money cost; ///< The cost of this action StringID message; ///< Warning message for when success is unset bool success; ///< Whether the comment went fine up to this moment + const GRFFile *textref_stack_grffile; ///< NewGRF providing the #TextRefStack content. uint textref_stack_size; ///< Number of uint32 values to put on the #TextRefStack for the error message. static uint32 textref_stack[16]; @@ -33,25 +36,25 @@ public: /** * Creates a command cost return with no cost and no error */ - CommandCost() : expense_type(INVALID_EXPENSES), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {} + CommandCost() : expense_type(INVALID_EXPENSES), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {} /** * Creates a command return value the is failed with the given message */ - explicit CommandCost(StringID msg) : expense_type(INVALID_EXPENSES), cost(0), message(msg), success(false), textref_stack_size(0) {} + explicit CommandCost(StringID msg) : expense_type(INVALID_EXPENSES), cost(0), message(msg), success(false), textref_stack_grffile(NULL), textref_stack_size(0) {} /** * Creates a command cost with given expense type and start cost of 0 * @param ex_t the expense type */ - explicit CommandCost(ExpensesType ex_t) : expense_type(ex_t), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {} + explicit CommandCost(ExpensesType ex_t) : expense_type(ex_t), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {} /** * Creates a command return value with the given start cost and expense type * @param ex_t the expense type * @param cst the initial cost of this command */ - CommandCost(ExpensesType ex_t, const Money &cst) : expense_type(ex_t), cost(cst), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {} + CommandCost(ExpensesType ex_t, const Money &cst) : expense_type(ex_t), cost(cst), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {} /** @@ -103,7 +106,16 @@ public: this->message = message; } - void UseTextRefStack(uint num_registers); + void UseTextRefStack(const GRFFile *grffile, uint num_registers); + + /** + * Returns the NewGRF providing the #TextRefStack of the error message. + * @return the NewGRF. + */ + const GRFFile *GetTextRefStackGRF() const + { + return this->textref_stack_grffile; + } /** * Returns the number of uint32 values for the #TextRefStack of the error message. @@ -204,6 +216,7 @@ enum Commands { CMD_SELL_VEHICLE, ///< sell a vehicle CMD_REFIT_VEHICLE, ///< refit the cargo space of a vehicle CMD_SEND_VEHICLE_TO_DEPOT, ///< send a vehicle to a depot + CMD_SET_VEHICLE_VISIBILITY, ///< hide or unhide a vehicle in the build vehicle and autoreplace GUIs CMD_MOVE_RAIL_VEHICLE, ///< move a rail vehicle (in the depot) CMD_FORCE_TRAIN_PROCEED, ///< proceed a train to pass a red signal @@ -259,6 +272,7 @@ enum Commands { CMD_CLEAR_AREA, ///< clear an area CMD_MONEY_CHEAT, ///< do the money cheat + CMD_CHANGE_BANK_BALANCE, ///< change bank balance to charge costs or give money from a GS CMD_BUILD_CANAL, ///< build a canal CMD_CREATE_SUBSIDY, ///< create a new subsidy @@ -275,8 +289,10 @@ enum Commands { CMD_CREATE_STORY_PAGE_ELEMENT, ///< create a new story page element CMD_UPDATE_STORY_PAGE_ELEMENT, ///< update a story page element CMD_SET_STORY_PAGE_TITLE, ///< update title of a story page + CMD_SET_STORY_PAGE_DATE, ///< update date of a story page CMD_SHOW_STORY_PAGE, ///< show a story page CMD_REMOVE_STORY_PAGE, ///< remove a story page + CMD_REMOVE_STORY_PAGE_ELEMENT, ///< remove a story page element CMD_LEVEL_LAND, ///< level land CMD_BUILD_LOCK, ///< build a lock @@ -299,7 +315,7 @@ enum Commands { CMD_CREATE_GROUP, ///< create a new group CMD_DELETE_GROUP, ///< delete a group - CMD_RENAME_GROUP, ///< rename a group + CMD_ALTER_GROUP, ///< alter a group CMD_ADD_VEHICLE_GROUP, ///< add a vehicle to a group CMD_ADD_SHARED_VEHICLE_GROUP, ///< add all other shared vehicles to a group which are missing CMD_REMOVE_ALL_VEHICLES_GROUP, ///< remove all vehicles from a group diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 101248481b..577ea884d8 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -34,9 +34,15 @@ #include "vehicle_func.h" #include "smallmap_gui.h" #include "game/game.hpp" +#include "goal_base.h" +#include "story_base.h" #include "table/strings.h" +#include "safeguards.h" + +void ClearEnginesHiddenFlagOfCompany(CompanyID cid); + CompanyByte _local_company; ///< Company controlled by the human player at this client. Can also be #COMPANY_SPECTATOR. CompanyByte _current_company; ///< Company currently doing an action. Colours _company_colours[MAX_COMPANIES]; ///< NOSAVE: can be determined from company structs. @@ -554,6 +560,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY) RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, false); // create a random company manager face SetDefaultCompanySettings(c->index); + ClearEnginesHiddenFlagOfCompany(c->index); GeneratePresidentName(c); @@ -851,59 +858,21 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 MarkWholeScreenDirty(); } - if (_network_server) { - if (ci != NULL) { - /* ci is only NULL when replaying. - * When replaying no client is actually in need of an update. */ - ci->client_playas = c->index; - NetworkUpdateClientInfo(ci->client_id); - } - - if (Company::IsValidID(c->index)) { - _network_company_states[c->index].months_empty = 0; - _network_company_states[c->index].password[0] = '\0'; - NetworkServerUpdateCompanyPassworded(c->index, false); - - /* XXX - When a client joins, we automatically set its name to the - * client's name (for some reason). As it stands now only the server - * knows the client's name, so it needs to send out a "broadcast" to - * do this. To achieve this we send a network command. However, it - * uses _local_company to execute the command as. To prevent abuse - * (eg. only yourself can change your name/company), we 'cheat' by - * impersonation _local_company as the server. Not the best solution; - * but it works. - * TODO: Perhaps this could be improved by when the client is ready - * with joining to let it send itself the command, and not the server? - * For example in network_client.c:534? */ - if (ci != NULL) { - /* ci is only NULL when replaying. - * When replaying, the command to rename the president will - * automatically be ran, so this is not even needed to get - * the exact same state. */ - NetworkSendCommand(0, 0, 0, CMD_RENAME_PRESIDENT, NULL, ci->client_name, c->index); - } - } - - /* Announce new company on network. */ - NetworkAdminCompanyInfo(c, true); - - if (ci != NULL) { - /* ci is only NULL when replaying. - * When replaying, the message that someone started a new company - * is not interesting at all. */ - NetworkServerSendChat(NETWORK_ACTION_COMPANY_NEW, DESTTYPE_BROADCAST, 0, "", ci->client_id, c->index + 1); - } - } + NetworkServerNewCompany(c, ci); #endif /* ENABLE_NETWORK */ break; } - case 1: // Make a new AI company + case 1: { // Make a new AI company if (!(flags & DC_EXEC)) return CommandCost(); if (company_id != INVALID_COMPANY && (company_id >= MAX_COMPANIES || Company::IsValidID(company_id))) return CMD_ERROR; - DoStartupNewCompany(true, company_id); + Company *c = DoStartupNewCompany(true, company_id); +#ifdef ENABLE_NETWORK + if (c != NULL) NetworkServerNewCompany(c, NULL); +#endif /* ENABLE_NETWORK */ break; + } case 2: { // Delete a company CompanyRemoveReason reason = (CompanyRemoveReason)GB(p2, 0, 2); @@ -934,6 +903,8 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 AI::BroadcastNewEvent(new ScriptEventCompanyBankrupt(c_index)); Game::NewEvent(new ScriptEventCompanyBankrupt(c_index)); CompanyAdminRemove(c_index, (CompanyRemoveReason)reason); + + if (StoryPage::GetNumItems() == 0 || Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0); break; } @@ -1108,7 +1079,7 @@ CommandCost CmdRenameCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uin if (flags & DC_EXEC) { Company *c = Company::Get(_current_company); free(c->name); - c->name = reset ? NULL : strdup(text); + c->name = reset ? NULL : stredup(text); MarkWholeScreenDirty(); CompanyAdminUpdate(c); } @@ -1157,12 +1128,12 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u if (reset) { c->president_name = NULL; } else { - c->president_name = strdup(text); + c->president_name = stredup(text); if (c->name_1 == STR_SV_UNNAMED && c->name == NULL) { char buf[80]; - snprintf(buf, lengthof(buf), "%s Transport", text); + seprintf(buf, lastof(buf), "%s Transport", text); DoCommand(0, 0, 0, DC_EXEC, CMD_RENAME_COMPANY, buf); } } diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 6b9d067478..1343acb91b 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -35,9 +35,12 @@ #include "road_func.h" #include "water.h" #include "station_func.h" +#include "zoom_func.h" #include "widgets/company_widget.h" +#include "safeguards.h" + /** Company GUI constants. */ static const uint EXP_LINESPACE = 2; ///< Amount of vertical space for a horizontal (sub-)total line. @@ -526,7 +529,7 @@ public: uint Height(uint width) const { - return max(FONT_HEIGHT_NORMAL, 14); + return max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + 2); } bool Selectable() const @@ -537,8 +540,15 @@ public: void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const { bool rtl = _current_text_dir == TD_RTL; - DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOUR_START + this->result, rtl ? right - 16 : left + 16, top + 7); - DrawString(rtl ? left + 2 : left + 32, rtl ? right - 32 : right - 2, top + max(0, 13 - FONT_HEIGHT_NORMAL), this->String(), sel ? TC_WHITE : TC_BLACK); + int height = bottom - top; + int icon_y_offset = height / 2; + int text_y_offset = (height - FONT_HEIGHT_NORMAL) / 2 + 1; + DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOUR_START + this->result, + rtl ? right - 2 - ScaleGUITrad(14) : left + ScaleGUITrad(14) + 2, + top + icon_y_offset); + DrawString(rtl ? left + 2 : left + ScaleGUITrad(28) + 4, + rtl ? right - ScaleGUITrad(28) - 4 : right - 2, + top + text_y_offset, this->String(), sel ? TC_WHITE : TC_BLACK); } }; @@ -574,7 +584,7 @@ private: DropDownList *list = new DropDownList(); for (uint i = 0; i < lengthof(_colour_dropdown); i++) { - list->push_back(new DropDownListColourItem(i, HasBit(used_colours, i))); + *list->Append() = new DropDownListColourItem(i, HasBit(used_colours, i)); } ShowDropDownList(this, list, widget == WID_SCL_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget); @@ -1099,7 +1109,7 @@ public: this->GetWidget(WID_SCMF_SEL_LOADSAVE)->SetDisplayedPlane(advanced ? 0 : SZSP_NONE); this->GetWidget(WID_SCMF_SEL_PARTS)->SetDisplayedPlane(advanced ? 0 : SZSP_NONE); this->GetWidget(WID_SCMF_SEL_MALEFEMALE)->SetDisplayedPlane(advanced ? SZSP_NONE : 0); - this->GetWidget(WID_SCMF_RANDOM_NEW_FACE)->widget_data = advanced ? STR_MAPGEN_RANDOM : STR_FACE_NEW_FACE_BUTTON; + this->GetWidget(WID_SCMF_RANDOM_NEW_FACE)->widget_data = advanced ? STR_FACE_RANDOM : STR_FACE_NEW_FACE_BUTTON; NWidgetCore *wi = this->GetWidget(WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON); if (advanced) { @@ -1135,6 +1145,13 @@ public: virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { + case WID_SCMF_FACE: { + Dimension face_size = GetSpriteSize(SPR_GRADIENT); + size->width = max(size->width, face_size.width); + size->height = max(size->height, face_size.height); + break; + } + case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT: case WID_SCMF_TIE_EARRING_TEXT: { int offset = (widget - WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT) * 2; @@ -2013,7 +2030,7 @@ struct CompanyWindow : Window NWidgetStacked *wi = this->GetWidget(WID_C_SELECT_BUTTONS); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); - this->SetDirty(); + this->InvalidateData(); return; } @@ -2072,6 +2089,13 @@ struct CompanyWindow : Window virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { + case WID_C_FACE: { + Dimension face_size = GetSpriteSize(SPR_GRADIENT); + size->width = max(size->width, face_size.width); + size->height = max(size->height, face_size.height); + break; + } + case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: { Point offset; Dimension d = GetSpriteSize(SPR_VEH_BUS_SW_VIEW, &offset); diff --git a/src/console.cpp b/src/console.cpp index 72d01c2225..511019281a 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -20,8 +20,9 @@ #include +#include "safeguards.h" + static const uint ICON_TOKEN_COUNT = 20; ///< Maximum number of tokens in one command -static const uint ICON_MAX_ALIAS_LINES = 40; ///< Maximum number of commands executed by one alias /* console parser */ IConsoleCmd *_iconsole_cmds; ///< list of registered commands @@ -104,7 +105,7 @@ void IConsolePrint(TextColour colour_code, const char *string) /* Create a copy of the string, strip if of colours and invalid * characters and (when applicable) assign it to the console buffer */ - str = strdup(string); + str = stredup(string); str_strip_colours(str); str_validate(str, str + strlen(str)); @@ -136,7 +137,7 @@ void CDECL IConsolePrintF(TextColour colour_code, const char *format, ...) char buf[ICON_MAX_STREAMSIZE]; va_start(va, format); - vsnprintf(buf, sizeof(buf), format, va); + vseprintf(buf, lastof(buf), format, va); va_end(va); IConsolePrint(colour_code, buf); @@ -255,7 +256,7 @@ char *RemoveUnderscores(char *name) void IConsoleCmdRegister(const char *name, IConsoleCmdProc *proc, IConsoleHook *hook) { IConsoleCmd *item_new = MallocT(1); - item_new->name = RemoveUnderscores(strdup(name)); + item_new->name = RemoveUnderscores(stredup(name)); item_new->next = NULL; item_new->proc = proc; item_new->hook = hook; @@ -290,8 +291,8 @@ void IConsoleAliasRegister(const char *name, const char *cmd) return; } - char *new_alias = RemoveUnderscores(strdup(name)); - char *cmd_aliased = strdup(cmd); + char *new_alias = RemoveUnderscores(stredup(name)); + char *cmd_aliased = stredup(cmd); IConsoleAlias *item_new = MallocT(1); item_new->next = NULL; @@ -316,17 +317,6 @@ IConsoleAlias *IConsoleAliasGet(const char *name) return NULL; } - -/** copy in an argument into the aliasstream */ -static inline int IConsoleCopyInParams(char *dst, const char *src, uint bufpos) -{ - /* len is the amount of bytes to add excluding the '\0'-termination */ - int len = min(ICON_MAX_STREAMSIZE - bufpos - 1, (uint)strlen(src)); - strecpy(dst, src, dst + len); - - return len; -} - /** * An alias is just another name for a command, or for more commands * Execute it as well. @@ -336,28 +326,23 @@ static inline int IConsoleCopyInParams(char *dst, const char *src, uint bufpos) */ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char *tokens[ICON_TOKEN_COUNT]) { - const char *cmdptr; - char *aliases[ICON_MAX_ALIAS_LINES], aliasstream[ICON_MAX_STREAMSIZE]; - uint i; - uint a_index, astream_i; - - memset(&aliases, 0, sizeof(aliases)); - memset(&aliasstream, 0, sizeof(aliasstream)); + char alias_buffer[ICON_MAX_STREAMSIZE] = { '\0' }; + char *alias_stream = alias_buffer; DEBUG(console, 6, "Requested command is an alias; parsing..."); - aliases[0] = aliasstream; - for (cmdptr = alias->cmdline, a_index = 0, astream_i = 0; *cmdptr != '\0'; cmdptr++) { - if (a_index >= lengthof(aliases) || astream_i >= lengthof(aliasstream)) break; - + for (const char *cmdptr = alias->cmdline; *cmdptr != '\0'; cmdptr++) { switch (*cmdptr) { case '\'': // ' will double for "" - aliasstream[astream_i++] = '"'; + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); break; - case ';': // Cmd separator, start new command - aliasstream[astream_i] = '\0'; - aliases[++a_index] = &aliasstream[++astream_i]; + case ';': // Cmd separator; execute previous and start new command + IConsoleCmdExec(alias_buffer); + + alias_stream = alias_buffer; + *alias_stream = '\0'; // Make sure the new command is terminated. + cmdptr++; break; @@ -365,22 +350,22 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char cmdptr++; switch (*cmdptr) { case '+': { // All parameters separated: "[param 1]" "[param 2]" - for (i = 0; i != tokencount; i++) { - aliasstream[astream_i++] = '"'; - astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i); - aliasstream[astream_i++] = '"'; - aliasstream[astream_i++] = ' '; + for (uint i = 0; i != tokencount; i++) { + if (i != 0) alias_stream = strecpy(alias_stream, " ", lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, tokens[i], lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); } break; } case '!': { // Merge the parameters to one: "[param 1] [param 2] [param 3...]" - aliasstream[astream_i++] = '"'; - for (i = 0; i != tokencount; i++) { - astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i); - aliasstream[astream_i++] = ' '; + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); + for (uint i = 0; i != tokencount; i++) { + if (i != 0) alias_stream = strecpy(alias_stream, " ", lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, tokens[i], lastof(alias_buffer)); } - aliasstream[astream_i++] = '"'; + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); break; } @@ -393,21 +378,27 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char return; } - aliasstream[astream_i++] = '"'; - astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[param], astream_i); - aliasstream[astream_i++] = '"'; + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, tokens[param], lastof(alias_buffer)); + alias_stream = strecpy(alias_stream, "\"", lastof(alias_buffer)); break; } } break; default: - aliasstream[astream_i++] = *cmdptr; + *alias_stream++ = *cmdptr; + *alias_stream = '\0'; break; } + + if (alias_stream >= lastof(alias_buffer) - 1) { + IConsoleError("Requested alias execution would overflow execution buffer"); + return; + } } - for (i = 0; i <= a_index; i++) IConsoleCmdExec(aliases[i]); // execute each alias in turn + IConsoleCmdExec(alias_buffer); } /** @@ -486,7 +477,7 @@ void IConsoleCmdExec(const char *cmdstr) DEBUG(console, 8, "Token %d is: '%s'", i, tokens[i]); } - if (tokens[0] == '\0') return; // don't execute empty commands + if (StrEmpty(tokens[0])) return; // don't execute empty commands /* 2. Determine type of command (cmd or alias) and execute * First try commands, then aliases. Execute * the found action taking into account its hooking code diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 4f42109235..8d9e04113d 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -40,6 +40,8 @@ #include "game/game.hpp" #include "table/strings.h" +#include "safeguards.h" + /* scriptfile handling */ static bool _script_running; ///< Script is running (used to abort execution when #ConReturn is encountered). @@ -1342,7 +1344,7 @@ DEF_CONSOLE_CMD(ConAlias) IConsoleAliasRegister(argv[1], argv[2]); } else { free(alias->cmdline); - alias->cmdline = strdup(argv[2]); + alias->cmdline = stredup(argv[2]); } return true; } @@ -1716,6 +1718,22 @@ struct ConsoleContentCallback : public ContentCallback { } }; +/** + * Outputs content state information to console + * @param ci the content info + */ +static void OutputContentState(const ContentInfo *const ci) +{ + static const char * const types[] = { "Base graphics", "NewGRF", "AI", "AI library", "Scenario", "Heightmap", "Base sound", "Base music", "Game script", "GS library" }; + assert_compile(lengthof(types) == CONTENT_TYPE_END - CONTENT_TYPE_BEGIN); + static const char * const states[] = { "Not selected", "Selected", "Dep Selected", "Installed", "Unknown" }; + static const TextColour state_to_colour[] = { CC_COMMAND, CC_INFO, CC_INFO, CC_WHITE, CC_ERROR }; + + char buf[sizeof(ci->md5sum) * 2 + 1]; + md5sumToString(buf, lastof(buf), ci->md5sum); + IConsolePrintF(state_to_colour[ci->state], "%d, %s, %s, %s, %08X, %s", ci->id, types[ci->type - 1], states[ci->state], ci->name, ci->unique_id, buf); +} + DEF_CONSOLE_CMD(ConContent) { static ContentCallback *cb = NULL; @@ -1725,12 +1743,12 @@ DEF_CONSOLE_CMD(ConContent) } if (argc <= 1) { - IConsoleHelp("Query, select and download content. Usage: 'content update|upgrade|select [all|id]|unselect [all|id]|state|download'"); + IConsoleHelp("Query, select and download content. Usage: 'content update|upgrade|select [all|id]|unselect [all|id]|state [filter]|download'"); IConsoleHelp(" update: get a new list of downloadable content; must be run first"); IConsoleHelp(" upgrade: select all items that are upgrades"); - IConsoleHelp(" select: select a specific item given by its id or 'all' to select all"); + IConsoleHelp(" select: select a specific item given by its id or 'all' to select all. If no parameter is given, all selected content will be listed"); IConsoleHelp(" unselect: unselect a specific item given by its id or 'all' to unselect all"); - IConsoleHelp(" state: show the download/select state of all downloadable content"); + IConsoleHelp(" state: show the download/select state of all downloadable content. Optionally give a filter string"); IConsoleHelp(" download: download all content you've selected"); return true; } @@ -1747,10 +1765,13 @@ DEF_CONSOLE_CMD(ConContent) if (strcasecmp(argv[1], "select") == 0) { if (argc <= 2) { - IConsoleError("You must enter the id."); - return false; - } - if (strcasecmp(argv[2], "all") == 0) { + /* List selected content */ + IConsolePrintF(CC_WHITE, "id, type, state, name"); + for (ConstContentIterator iter = _network_content_client.Begin(); iter != _network_content_client.End(); iter++) { + if ((*iter)->state != ContentInfo::SELECTED && (*iter)->state != ContentInfo::AUTOSELECTED) continue; + OutputContentState(*iter); + } + } else if (strcasecmp(argv[2], "all") == 0) { _network_content_client.SelectAll(); } else { _network_content_client.Select((ContentID)atoi(argv[2])); @@ -1774,15 +1795,8 @@ DEF_CONSOLE_CMD(ConContent) if (strcasecmp(argv[1], "state") == 0) { IConsolePrintF(CC_WHITE, "id, type, state, name"); for (ConstContentIterator iter = _network_content_client.Begin(); iter != _network_content_client.End(); iter++) { - static const char * const types[] = { "Base graphics", "NewGRF", "AI", "AI library", "Scenario", "Heightmap", "Base sound", "Base music", "Game script", "GS library" }; - assert_compile(lengthof(types) == CONTENT_TYPE_END - CONTENT_TYPE_BEGIN); - static const char * const states[] = { "Not selected", "Selected", "Dep Selected", "Installed", "Unknown" }; - static const TextColour state_to_colour[] = { CC_COMMAND, CC_INFO, CC_INFO, CC_WHITE, CC_ERROR }; - - const ContentInfo *ci = *iter; - char buf[sizeof(ci->md5sum) * 2 + 1]; - md5sumToString(buf, lastof(buf), ci->md5sum); - IConsolePrintF(state_to_colour[ci->state], "%d, %s, %s, %s, %08X, %s", ci->id, types[ci->type - 1], states[ci->state], ci->name, ci->unique_id, buf); + if (argc > 2 && strcasestr((*iter)->name, argv[2]) == NULL) continue; + OutputContentState(*iter); } return true; } diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 887dfda60c..ed46938cd5 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -27,6 +27,8 @@ #include "table/strings.h" +#include "safeguards.h" + static const uint ICON_HISTORY_SIZE = 20; static const uint ICON_LINE_SPACING = 2; static const uint ICON_RIGHT_BORDERWIDTH = 10; @@ -185,6 +187,7 @@ struct IConsoleWindow : Window ~IConsoleWindow() { _iconsole_mode = ICONSOLE_CLOSED; + VideoDriver::GetInstance()->EditBoxLostFocus(); } /** @@ -373,7 +376,7 @@ struct IConsoleWindow : Window virtual void OnFocusLost() { - _video_driver->EditBoxLostFocus(); + VideoDriver::GetInstance()->EditBoxLostFocus(); } }; @@ -462,7 +465,7 @@ static const char *IConsoleHistoryAdd(const char *cmd) if (_iconsole_history[0] == NULL || strcmp(_iconsole_history[0], cmd) != 0) { free(_iconsole_history[ICON_HISTORY_SIZE - 1]); memmove(&_iconsole_history[1], &_iconsole_history[0], sizeof(_iconsole_history[0]) * (ICON_HISTORY_SIZE - 1)); - _iconsole_history[0] = strdup(cmd); + _iconsole_history[0] = stredup(cmd); } /* Reset the history position */ diff --git a/src/core/alloc_func.cpp b/src/core/alloc_func.cpp index d2b3a4b6c5..b78023f4d6 100644 --- a/src/core/alloc_func.cpp +++ b/src/core/alloc_func.cpp @@ -11,6 +11,8 @@ #include "../stdafx.h" +#include "../safeguards.h" + /** * Function to exit with an error message after malloc() or calloc() have failed * @param size number of bytes we tried to allocate diff --git a/src/core/bitmath_func.cpp b/src/core/bitmath_func.cpp index af0200bcb8..7763227315 100644 --- a/src/core/bitmath_func.cpp +++ b/src/core/bitmath_func.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "bitmath_func.hpp" +#include "../safeguards.h" + const uint8 _ffb_64[64] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, diff --git a/src/core/geometry_func.cpp b/src/core/geometry_func.cpp index 1a15887380..86f317a372 100644 --- a/src/core/geometry_func.cpp +++ b/src/core/geometry_func.cpp @@ -13,6 +13,8 @@ #include "geometry_func.hpp" #include "math_func.hpp" +#include "../safeguards.h" + /** * Compute bounding box of both dimensions. * @param d1 First dimension. diff --git a/src/core/math_func.cpp b/src/core/math_func.cpp index 8c136c0bb6..d927702083 100644 --- a/src/core/math_func.cpp +++ b/src/core/math_func.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "math_func.hpp" +#include "../safeguards.h" + /** * Compute least common multiple (lcm) of arguments \a a and \a b, the smallest * integer value that is a multiple of both \a a and \a b. diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp index fd41102317..df9142462b 100644 --- a/src/core/math_func.hpp +++ b/src/core/math_func.hpp @@ -12,18 +12,6 @@ #ifndef MATH_FUNC_HPP #define MATH_FUNC_HPP -#ifdef min -#undef min -#endif - -#ifdef max -#undef max -#endif - -#ifdef abs -#undef abs -#endif - /** * Returns the maximum of two values. * diff --git a/src/core/overflowsafe_type.hpp b/src/core/overflowsafe_type.hpp index cfc245c6cf..edc25d2755 100644 --- a/src/core/overflowsafe_type.hpp +++ b/src/core/overflowsafe_type.hpp @@ -12,6 +12,7 @@ #ifndef OVERFLOWSAFE_TYPE_HPP #define OVERFLOWSAFE_TYPE_HPP +#include "math_func.hpp" /** * Overflow safe template for integers, i.e. integers that will never overflow @@ -151,5 +152,6 @@ template inline OverflowSafeInt inline OverflowSafeInt operator / (byte a, OverflowSafeInt b) { return (OverflowSafeInt)a / (int)b; } typedef OverflowSafeInt OverflowSafeInt64; +typedef OverflowSafeInt OverflowSafeInt32; #endif /* OVERFLOWSAFE_TYPE_HPP */ diff --git a/src/core/pool_func.cpp b/src/core/pool_func.cpp index fa410850f1..f8ff93cecc 100644 --- a/src/core/pool_func.cpp +++ b/src/core/pool_func.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "pool_type.hpp" +#include "../safeguards.h" + /** * Destructor removes this object from the pool vector and * deletes the vector itself if this was the last item removed. diff --git a/src/core/pool_func.hpp b/src/core/pool_func.hpp index eafd057ee3..4648f50d18 100644 --- a/src/core/pool_func.hpp +++ b/src/core/pool_func.hpp @@ -35,6 +35,9 @@ DEFINE_POOL_METHOD(inline)::Pool(const char *name) : first_free(0), first_unused(0), items(0), +#ifdef OTTD_ASSERT + checked(0), +#endif /* OTTD_ASSERT */ cleaning(false), data(NULL), alloc_cache(NULL) diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp index c703b7cdc4..4d20ed1abb 100644 --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -81,6 +81,9 @@ private: */ template struct Pool : PoolBase { + /* Ensure Tmax_size is within the bounds of Tindex. */ + assert_compile((uint64)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0); + static const size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside const char * const name; ///< Name of this pool @@ -161,6 +164,7 @@ struct Pool : PoolBase { */ inline void operator delete(void *p) { + if (p == NULL) return; Titem *pn = (Titem *)p; assert(pn == Tpool->Get(pn->index)); Tpool->FreeItem(pn->index); diff --git a/src/core/random_func.cpp b/src/core/random_func.cpp index 7800591e60..e4593c4076 100644 --- a/src/core/random_func.cpp +++ b/src/core/random_func.cpp @@ -13,6 +13,17 @@ #include "random_func.hpp" #include "bitmath_func.hpp" +#ifdef RANDOM_DEBUG +#include "../network/network.h" +#include "../network/network_server.h" +#include "../network/network_internal.h" +#include "../company_func.h" +#include "../fileio_func.h" +#include "../date_func.h" +#endif /* RANDOM_DEBUG */ + +#include "../safeguards.h" + Randomizer _random, _interactive_random; /** @@ -29,13 +40,14 @@ uint32 Randomizer::Next() } /** - * Generate the next pseudo random number scaled to max - * @param max the maximum value of the returned random number - * @return the random number + * Generate the next pseudo random number scaled to \a limit, excluding \a limit + * itself. + * @param limit Limit of the range to be generated from. + * @return Random number in [0,\a limit) */ -uint32 Randomizer::Next(uint32 max) +uint32 Randomizer::Next(uint32 limit) { - return ((uint64)this->Next() * (uint64)max) >> 32; + return ((uint64)this->Next() * (uint64)limit) >> 32; } /** @@ -59,13 +71,6 @@ void SetRandomSeed(uint32 seed) } #ifdef RANDOM_DEBUG -#include "../network/network.h" -#include "../network/network_server.h" -#include "../network/network_internal.h" -#include "../company_func.h" -#include "../fileio_func.h" -#include "../date_func.h" - uint32 DoRandom(int line, const char *file) { if (_networking && (!_network_server || (NetworkClientSocket::IsValidID(0) && NetworkClientSocket::Get(0)->status != NetworkClientSocket::STATUS_INACTIVE))) { @@ -75,8 +80,8 @@ uint32 DoRandom(int line, const char *file) return _random.Next(); } -uint32 DoRandomRange(uint32 max, int line, const char *file) +uint32 DoRandomRange(uint32 limit, int line, const char *file) { - return ((uint64)DoRandom(line, file) * (uint64)max) >> 32; + return ((uint64)DoRandom(line, file) * (uint64)limit) >> 32; } #endif /* RANDOM_DEBUG */ diff --git a/src/core/random_func.hpp b/src/core/random_func.hpp index e91413de2f..0c6b8f1ca7 100644 --- a/src/core/random_func.hpp +++ b/src/core/random_func.hpp @@ -25,7 +25,7 @@ struct Randomizer { uint32 state[2]; uint32 Next(); - uint32 Next(uint32 max); + uint32 Next(uint32 limit); void SetSeed(uint32 seed); }; extern Randomizer _random; ///< Random used in the game state calculations @@ -65,17 +65,24 @@ void SetRandomSeed(uint32 seed); #define Random() DoRandom(__LINE__, __FILE__) #endif uint32 DoRandom(int line, const char *file); - #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__) - uint32 DoRandomRange(uint32 max, int line, const char *file); + #define RandomRange(limit) DoRandomRange(limit, __LINE__, __FILE__) + uint32 DoRandomRange(uint32 limit, int line, const char *file); #else static inline uint32 Random() { return _random.Next(); } - static inline uint32 RandomRange(uint32 max) + /** + * Pick a random number between 0 and \a limit - 1, inclusive. That means 0 + * can be returned and \a limit - 1 can be returned, but \a limit can not be + * returned. + * @param limit Limit for the range to be picked from. + * @return A random number in [0,\a limit). + */ + static inline uint32 RandomRange(uint32 limit) { - return _random.Next(max); + return _random.Next(limit); } #endif @@ -84,9 +91,9 @@ static inline uint32 InteractiveRandom() return _interactive_random.Next(); } -static inline uint32 InteractiveRandomRange(uint32 max) +static inline uint32 InteractiveRandomRange(uint32 limit) { - return _interactive_random.Next(max); + return _interactive_random.Next(limit); } /** diff --git a/src/core/smallstack_type.hpp b/src/core/smallstack_type.hpp new file mode 100644 index 0000000000..31edba0817 --- /dev/null +++ b/src/core/smallstack_type.hpp @@ -0,0 +1,286 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file smallstack_type.hpp Minimal stack that uses a pool to avoid pointers and doesn't allocate any heap memory if there is only one valid item. */ + +#ifndef SMALLSTACK_TYPE_HPP +#define SMALLSTACK_TYPE_HPP + +#include "smallvec_type.hpp" +#include "../thread/thread.h" + +/** + * A simplified pool which stores values instead of pointers and doesn't + * redefine operator new/delete. It also never zeroes memory and always reuses + * it. + */ +template +class SimplePool { +public: + inline SimplePool() : first_unused(0), first_free(0), mutex(ThreadMutex::New()) {} + inline ~SimplePool() { delete this->mutex; } + + /** + * Get the mutex. We don't lock the mutex in the pool methods as the + * SmallStack isn't necessarily in a consistent state after each method. + * @return Mutex. + */ + inline ThreadMutex *GetMutex() { return this->mutex; } + + /** + * Get the item at position index. + * @return Item at index. + */ + inline Titem &Get(Tindex index) { return this->data[index]; } + + /** + * Create a new item and return its index. + * @return Index of new item. + */ + inline Tindex Create() + { + Tindex index = this->FindFirstFree(); + if (index < Tmax_size) { + this->data[index].valid = true; + this->first_free = index + 1; + this->first_unused = max(this->first_unused, this->first_free); + } + return index; + } + + /** + * Destroy (or rather invalidate) the item at the given index. + * @param index Index of item to be destroyed. + */ + inline void Destroy(Tindex index) + { + this->data[index].valid = false; + this->first_free = min(this->first_free, index); + } + +private: + + inline Tindex FindFirstFree() + { + Tindex index = this->first_free; + for (; index < this->first_unused; index++) { + if (!this->data[index].valid) return index; + } + + if (index >= this->data.Length() && index < Tmax_size) { + this->data.Resize(index + 1); + } + return index; + } + + struct SimplePoolPoolItem : public Titem { + bool valid; + }; + + Tindex first_unused; + Tindex first_free; + + ThreadMutex *mutex; + SmallVector data; +}; + +/** + * Base class for SmallStack. We cannot add this into SmallStack itself as + * certain compilers don't like it. + */ +template +struct SmallStackItem { + Tindex next; ///< Pool index of next item. + Titem value; ///< Value of current item. + + /** + * Create a new item. + * @param value Value of the item. + * @param next Next item in the stack. + */ + inline SmallStackItem(const Titem &value, Tindex next) : + next(next), value(value) {} +}; + +/** + * Minimal stack that uses a pool to avoid pointers. It has some peculiar + * properties that make it useful for passing around lists of IDs but not much + * else: + * 1. It always includes an invalid item as bottom. + * 2. It doesn't have a deep copy operation but uses smart pointers instead. + * Every copy is thus implicitly shared. + * 3. Its items are immutable. + * 4. Due to 2. and 3. memory management can be done by "branch counting". + * Whenever you copy a smallstack, the first item on the heap increases its + * branch_count, signifying that there are multiple items "in front" of it. + * When deleting a stack items are deleted up to the point where + * branch_count > 0. + * 5. You can choose your own index type, so that you can align it with your + * value type. E.G. value types of 16 bits length like to be combined with + * index types of the same length. + * 6. All accesses to the underlying pool are guarded by a mutex and atomic in + * the sense that the mutex stays locked until the pool has reacquired a + * consistent state. This means that even though a common data structure is + * used the SmallStack is still reentrant. + * @tparam Titem Value type to be used. + * @tparam Tindex Index type to use for the pool. + * @tparam Tinvalid Invalid item to keep at the bottom of each stack. + * @tparam Tgrowth_step Growth step for pool. + * @tparam Tmax_size Maximum size for pool. + */ +template +class SmallStack : public SmallStackItem { +public: + + typedef SmallStackItem Item; + + /** + * SmallStack item that can be kept in a pool. + */ + struct PooledSmallStack : public Item { + Tindex branch_count; ///< Number of branches in the tree structure this item is parent of + }; + + typedef SimplePool SmallStackPool; + + /** + * Constructor for a stack with one or two items in it. + * @param value Initial item. If not missing or Tinvalid there will be Tinvalid below it. + */ + inline SmallStack(const Titem &value = Tinvalid) : Item(value, Tmax_size) {} + + /** + * Remove the head of stack and all other items members that are unique to it. + */ + inline ~SmallStack() + { + /* Pop() locks the mutex and after each pop the pool is consistent.*/ + while (this->next != Tmax_size) this->Pop(); + } + + /** + * Shallow copy the stack, marking the first item as branched. + * @param other Stack to copy from + */ + inline SmallStack(const SmallStack &other) : Item(other) { this->Branch(); } + + /** + * Shallow copy the stack, marking the first item as branched. + * @param other Stack to copy from + * @return This smallstack. + */ + inline SmallStack &operator=(const SmallStack &other) + { + if (this == &other) return *this; + while (this->next != Tmax_size) this->Pop(); + this->next = other.next; + this->value = other.value; + /* Deleting and branching are independent operations, so it's fine to + * acquire separate locks for them. */ + this->Branch(); + return *this; + } + + /** + * Pushes a new item onto the stack if there is still space in the + * underlying pool. Otherwise the topmost item's value gets overwritten. + * @param item Item to be pushed. + */ + inline void Push(const Titem &item) + { + if (this->value != Tinvalid) { + ThreadMutexLocker lock(_pool.GetMutex()); + Tindex new_item = _pool.Create(); + if (new_item != Tmax_size) { + PooledSmallStack &pushed = _pool.Get(new_item); + pushed.value = this->value; + pushed.next = this->next; + pushed.branch_count = 0; + this->next = new_item; + } + } + this->value = item; + } + + /** + * Pop an item from the stack. + * @return Current top of stack. + */ + inline Titem Pop() + { + Titem ret = this->value; + if (this->next == Tmax_size) { + this->value = Tinvalid; + } else { + ThreadMutexLocker lock(_pool.GetMutex()); + PooledSmallStack &popped = _pool.Get(this->next); + this->value = popped.value; + if (popped.branch_count == 0) { + _pool.Destroy(this->next); + } else { + --popped.branch_count; + /* We can't use Branch() here as we already have the mutex.*/ + if (popped.next != Tmax_size) { + ++(_pool.Get(popped.next).branch_count); + } + } + /* Accessing popped here is no problem as the pool will only set + * the validity flag, not actually delete the item, on Destroy(). + * It's impossible for another thread to acquire the same item in + * the mean time because of the mutex. */ + this->next = popped.next; + } + return ret; + } + + /** + * Check if the stack is empty. + * @return If the stack is empty. + */ + inline bool IsEmpty() const + { + return this->value == Tinvalid && this->next == Tmax_size; + } + + /** + * Check if the given item is contained in the stack. + * @param item Item to look for. + * @return If the item is in the stack. + */ + inline bool Contains(const Titem &item) const + { + if (item == Tinvalid || item == this->value) return true; + if (this->next != Tmax_size) { + ThreadMutexLocker lock(_pool.GetMutex()); + const SmallStack *in_list = this; + do { + in_list = static_cast( + static_cast(&_pool.Get(in_list->next))); + if (in_list->value == item) return true; + } while (in_list->next != Tmax_size); + } + return false; + } + +protected: + static SmallStackPool _pool; + + /** + * Create a branch in the pool if necessary. + */ + inline void Branch() + { + if (this->next != Tmax_size) { + ThreadMutexLocker lock(_pool.GetMutex()); + ++(_pool.Get(this->next).branch_count); + } + } +}; + +#endif diff --git a/src/os_timer.cpp b/src/cpu.cpp similarity index 57% rename from src/os_timer.cpp rename to src/cpu.cpp index 47cc1afd5d..c48b8cbd4d 100644 --- a/src/os_timer.cpp +++ b/src/cpu.cpp @@ -7,9 +7,12 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -/** @file os_timer.cpp OS/compiler dependant real time tick sampling. */ +/** @file cpu.cpp OS/CPU/compiler dependent CPU specific calls. */ #include "stdafx.h" +#include "core/bitmath_func.hpp" + +#include "safeguards.h" #undef RDTSC_AVAILABLE @@ -74,3 +77,66 @@ uint64 ottd_rdtsc() # endif uint64 ottd_rdtsc() {return 0;} #endif + + +/** + * Definitions for CPU detection: + * + * MSVC offers cpu information while gcc only implements in gcc 4.8 + * __builtin_cpu_supports and friends + * http://msdn.microsoft.com/library/vstudio/hskdteyh%28v=vs.100%29.aspx + * http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html + * + * Other platforms/architectures don't have CPUID, so zero the info and then + * most (if not all) of the features are set as if they do not exist. + */ +#if defined(_MSC_VER) +void ottd_cpuid(int info[4], int type) +{ + __cpuid(info, type); +} +#elif defined(__x86_64__) || defined(__i386) +void ottd_cpuid(int info[4], int type) +{ +#if defined(__i386) && defined(__PIC__) + /* The easy variant would be just cpuid, however... ebx is being used by the GOT (Global Offset Table) + * in case of PIC; + * clobbering ebx is no alternative: some compiler versions don't like this + * and will issue an error message like + * "can't find a register in class 'BREG' while reloading 'asm'" + */ + __asm__ __volatile__ ( + "xchgl %%ebx, %1 \n\t" + "cpuid \n\t" + "xchgl %%ebx, %1 \n\t" + : "=a" (info[0]), "=r" (info[1]), "=c" (info[2]), "=d" (info[3]) + /* It is safe to write "=r" for (info[1]) as in case that PIC is enabled for i386, + * the compiler will not choose EBX as target register (but something else). + */ + : "a" (type) + ); +#else + __asm__ __volatile__ ( + "cpuid \n\t" + : "=a" (info[0]), "=b" (info[1]), "=c" (info[2]), "=d" (info[3]) + : "a" (type) + ); +#endif /* i386 PIC */ +} +#else +void ottd_cpuid(int info[4], int type) +{ + info[0] = info[1] = info[2] = info[3] = 0; +} +#endif + +bool HasCPUIDFlag(uint type, uint index, uint bit) +{ + int cpu_info[4] = {-1}; + ottd_cpuid(cpu_info, 0); + uint max_info_type = cpu_info[0]; + if (max_info_type < type) return false; + + ottd_cpuid(cpu_info, type); + return HasBit(cpu_info[index], bit); +} diff --git a/src/cpu.h b/src/cpu.h new file mode 100644 index 0000000000..08495dfc14 --- /dev/null +++ b/src/cpu.h @@ -0,0 +1,37 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file cpu.h Functions related to CPU specific instructions. */ + +#ifndef CPU_H +#define CPU_H + +/** + * Get the tick counter from the CPU (high precision timing). + * @return The count. + */ +uint64 ottd_rdtsc(); + +/** + * Get the CPUID information from the CPU. + * @param info The retrieved info. All zeros on architectures without CPUID. + * @param type The information this instruction should retrieve. + */ +void ottd_cpuid(int info[4], int type); + +/** + * Check whether the current CPU has the given flag. + * @param type The type to be passing to cpuid (usually 1). + * @param index The index in the returned info array. + * @param bit The bit index that needs to be set. + * @return The value of the bit, or false when there is no CPUID or the type is not available. + */ +bool HasCPUIDFlag(uint type, uint index, uint bit); + +#endif /* CPU_H */ diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 6881ff31f6..e8290a7c3f 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -26,6 +26,7 @@ #include "gfx_func.h" #include "network/network.h" #include "language.h" +#include "fontcache.h" #include "ai/ai_info.hpp" #include "game/game.hpp" @@ -35,6 +36,8 @@ #include +#include "safeguards.h" + /* static */ const char *CrashLog::message = NULL; /* static */ char *CrashLog::gamelog_buffer = NULL; /* static */ const char *CrashLog::gamelog_last = NULL; @@ -133,18 +136,30 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const " Sound driver: %s\n" " Sound set: %s (%u)\n" " Video driver: %s\n\n", - BlitterFactoryBase::GetCurrentBlitter() == NULL ? "none" : BlitterFactoryBase::GetCurrentBlitter()->GetName(), + BlitterFactory::GetCurrentBlitter() == NULL ? "none" : BlitterFactory::GetCurrentBlitter()->GetName(), BaseGraphics::GetUsedSet() == NULL ? "none" : BaseGraphics::GetUsedSet()->name, BaseGraphics::GetUsedSet() == NULL ? UINT32_MAX : BaseGraphics::GetUsedSet()->version, _current_language == NULL ? "none" : _current_language->file, - _music_driver == NULL ? "none" : _music_driver->GetName(), + MusicDriver::GetInstance() == NULL ? "none" : MusicDriver::GetInstance()->GetName(), BaseMusic::GetUsedSet() == NULL ? "none" : BaseMusic::GetUsedSet()->name, BaseMusic::GetUsedSet() == NULL ? UINT32_MAX : BaseMusic::GetUsedSet()->version, _networking ? (_network_server ? "server" : "client") : "no", - _sound_driver == NULL ? "none" : _sound_driver->GetName(), + SoundDriver::GetInstance() == NULL ? "none" : SoundDriver::GetInstance()->GetName(), BaseSounds::GetUsedSet() == NULL ? "none" : BaseSounds::GetUsedSet()->name, BaseSounds::GetUsedSet() == NULL ? UINT32_MAX : BaseSounds::GetUsedSet()->version, - _video_driver == NULL ? "none" : _video_driver->GetName() + VideoDriver::GetInstance() == NULL ? "none" : VideoDriver::GetInstance()->GetName() + ); + + buffer += seprintf(buffer, last, + "Fonts:\n" + " Small: %s\n" + " Medium: %s\n" + " Large: %s\n" + " Mono: %s\n\n", + FontCache::Get(FS_SMALL)->GetFontName(), + FontCache::Get(FS_NORMAL)->GetFontName(), + FontCache::Get(FS_LARGE)->GetFontName(), + FontCache::Get(FS_MONO)->GetFontName() ); buffer += seprintf(buffer, last, "AI Configuration (local: %i):\n", (int)_local_company); @@ -469,7 +484,7 @@ bool CrashLog::MakeCrashLog() const */ /* static */ void CrashLog::AfterCrashLogCleanup() { - if (_music_driver != NULL) _music_driver->Stop(); - if (_sound_driver != NULL) _sound_driver->Stop(); - if (_video_driver != NULL) _video_driver->Stop(); + if (MusicDriver::GetInstance() != NULL) MusicDriver::GetInstance()->Stop(); + if (SoundDriver::GetInstance() != NULL) SoundDriver::GetInstance()->Stop(); + if (VideoDriver::GetInstance() != NULL) VideoDriver::GetInstance()->Stop(); } diff --git a/src/currency.cpp b/src/currency.cpp index 4da6a87f7a..8cc385fc04 100644 --- a/src/currency.cpp +++ b/src/currency.cpp @@ -20,6 +20,8 @@ #include "table/strings.h" +#include "safeguards.h" + /* exchange rate prefix symbol_pos * | separator | postfix | * | | Euro year | | | name @@ -54,7 +56,7 @@ static const CurrencySpec origin_currency_specs[CURRENCY_END] = { { 60, "", 2009, "", NBSP "Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna { 4, "", CF_NOEURO, "R$" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real { 31, "", 2011, "", NBSP "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni - { 4, "", 2014, "", NBSP "Lt", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas + { 4, "", 2015, "", NBSP "Lt", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas { 1850, "", CF_NOEURO, "\xE2\x82\xA9", "", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won { 13, "", CF_NOEURO, "R" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand { 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below) @@ -144,14 +146,14 @@ void CheckSwitchToEuro() * Will fill _currency_specs array with * default values from origin_currency_specs * Called only from newgrf.cpp and settings.cpp. - * @param preserve_custom will not reset custom currency (the latest one on the list) - * if ever it is flagged to true. In which case, the total size of the memory to move - * will be one currency spec less, thus preserving the custom currency from been - * overwritten. + * @param preserve_custom will not reset custom currency */ void ResetCurrencies(bool preserve_custom) { - memcpy(&_currency_specs, &origin_currency_specs, sizeof(origin_currency_specs) - (preserve_custom ? sizeof(_custom_currency) : 0)); + for (uint i = 0; i < CURRENCY_END; i++) { + if (preserve_custom && i == CURRENCY_CUSTOM) continue; + _currency_specs[i] = origin_currency_specs[i]; + } } /** diff --git a/src/date.cpp b/src/date.cpp index 800e4faeaf..9c25af40ee 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -21,6 +21,8 @@ #include "linkgraph/linkgraph.h" #include "saveload/saveload.h" +#include "safeguards.h" + Year _cur_year; ///< Current year, starting at 0 Month _cur_month; ///< Current month (0..11) Date _date; ///< Current date in days (day counter) diff --git a/src/date_gui.cpp b/src/date_gui.cpp index 2866d175ec..468a74db99 100644 --- a/src/date_gui.cpp +++ b/src/date_gui.cpp @@ -20,6 +20,8 @@ #include "widgets/dropdown_type.h" #include "widgets/date_widget.h" +#include "safeguards.h" + /** Window to select a date graphically by using dropdowns */ struct SetDateWindow : Window { @@ -73,14 +75,14 @@ struct SetDateWindow : Window { case WID_SD_DAY: for (uint i = 0; i < 31; i++) { - list->push_back(new DropDownListStringItem(STR_ORDINAL_NUMBER_1ST + i, i + 1, false)); + *list->Append() = new DropDownListStringItem(STR_DAY_NUMBER_1ST + i, i + 1, false); } selected = this->date.day; break; case WID_SD_MONTH: for (uint i = 0; i < 12; i++) { - list->push_back(new DropDownListStringItem(STR_MONTH_JAN + i, i, false)); + *list->Append() = new DropDownListStringItem(STR_MONTH_JAN + i, i, false); } selected = this->date.month; break; @@ -89,7 +91,7 @@ struct SetDateWindow : Window { for (Year i = this->min_year; i <= this->max_year; i++) { DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); item->SetParam(0, i); - list->push_back(item); + *list->Append() = item; } selected = this->date.year; break; @@ -106,7 +108,7 @@ struct SetDateWindow : Window { case WID_SD_DAY: for (uint i = 0; i < 31; i++) { - d = maxdim(d, GetStringBoundingBox(STR_ORDINAL_NUMBER_1ST + i)); + d = maxdim(d, GetStringBoundingBox(STR_DAY_NUMBER_1ST + i)); } break; @@ -130,7 +132,7 @@ struct SetDateWindow : Window { virtual void SetStringParameters(int widget) const { switch (widget) { - case WID_SD_DAY: SetDParam(0, this->date.day - 1 + STR_ORDINAL_NUMBER_1ST); break; + case WID_SD_DAY: SetDParam(0, this->date.day - 1 + STR_DAY_NUMBER_1ST); break; case WID_SD_MONTH: SetDParam(0, this->date.month + STR_MONTH_JAN); break; case WID_SD_YEAR: SetDParam(0, this->date.year); break; } diff --git a/src/debug.cpp b/src/debug.cpp index d173ff14c4..16eecadad0 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -24,6 +24,8 @@ SOCKET _debug_socket = INVALID_SOCKET; #endif /* ENABLE_NETWORK */ +#include "safeguards.h" + int _debug_driver_level; int _debug_grf_level; int _debug_map_level; @@ -111,7 +113,9 @@ static void debug_print(const char *dbg, const char *buf) if (_debug_socket != INVALID_SOCKET) { char buf2[1024 + 32]; - snprintf(buf2, lengthof(buf2), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); + seprintf(buf2, lastof(buf2), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); + /* Sending out an error when this fails would be nice, however... the error + * would have to be send over this failing socket which won't work. */ send(_debug_socket, buf2, (int)strlen(buf2), 0); return; } @@ -159,7 +163,7 @@ void CDECL debug(const char *dbg, const char *format, ...) va_list va; va_start(va, format); - vsnprintf(buf, lengthof(buf), format, va); + vseprintf(buf, lastof(buf), format, va); va_end(va); debug_print(dbg, buf); @@ -234,10 +238,10 @@ const char *GetDebugString() memset(dbgstr, 0, sizeof(dbgstr)); i = debug_level; - snprintf(dbgstr, sizeof(dbgstr), "%s=%d", i->name, *i->level); + seprintf(dbgstr, lastof(dbgstr), "%s=%d", i->name, *i->level); for (i++; i != endof(debug_level); i++) { - snprintf(dbgval, sizeof(dbgval), ", %s=%d", i->name, *i->level); + seprintf(dbgval, lastof(dbgval), ", %s=%d", i->name, *i->level); strecat(dbgstr, dbgval, lastof(dbgstr)); } diff --git a/src/debug.h b/src/debug.h index f7e7717199..7da72da1d3 100644 --- a/src/debug.h +++ b/src/debug.h @@ -12,6 +12,8 @@ #ifndef DEBUG_H #define DEBUG_H +#include "cpu.h" + /* Debugging messages policy: * These should be the severities used for direct DEBUG() calls * maximum debugging level should be 10 if really deep, deep @@ -65,12 +67,6 @@ const char *GetDebugString(); /* Shorter form for passing filename and linenumber */ #define FILE_LINE __FILE__, __LINE__ -/** - * Get the tick counter from the CPU (high precision timing). - * @return The count. - */ -uint64 ottd_rdtsc(); - /* Used for profiling * * Usage: diff --git a/src/dedicated.cpp b/src/dedicated.cpp index 83c6c1d217..ce383ee4a5 100644 --- a/src/dedicated.cpp +++ b/src/dedicated.cpp @@ -13,12 +13,15 @@ #ifdef ENABLE_NETWORK -char *_log_file; ///< File to reroute output of a forked OpenTTD to +char *_log_file = NULL; ///< File to reroute output of a forked OpenTTD to +FILE *_log_fd = NULL; ///< File to reroute output of a forked OpenTTD to #if defined(UNIX) && !defined(__MORPHOS__) #include +#include "safeguards.h" + #if (defined(SUNOS) && !defined(_LP64) && !defined(_I32LPx)) || defined(__HAIKU__) /* Solaris has, in certain situation, pid_t defined as long, while in other * cases it has it defined as int... this handles all cases nicely. @@ -39,20 +42,18 @@ void DedicatedFork() exit(1); case 0: { // We're the child - FILE *f; - /* Open the log-file to log all stuff too */ - f = fopen(_log_file, "a"); - if (f == NULL) { + _log_fd = fopen(_log_file, "a"); + if (_log_fd == NULL) { perror("Unable to open logfile"); exit(1); } /* Redirect stdout and stderr to log-file */ - if (dup2(fileno(f), fileno(stdout)) == -1) { + if (dup2(fileno(_log_fd), fileno(stdout)) == -1) { perror("Rerouting stdout"); exit(1); } - if (dup2(fileno(f), fileno(stderr)) == -1) { + if (dup2(fileno(_log_fd), fileno(stderr)) == -1) { perror("Rerouting stderr"); exit(1); } diff --git a/src/depend/depend.cpp b/src/depend/depend.cpp index 1d375aed6d..d4b102ddcf 100644 --- a/src/depend/depend.cpp +++ b/src/depend/depend.cpp @@ -29,6 +29,83 @@ #include #include #include +#include + +/** + * Return the length of an fixed size array. + * Unlike sizeof this function returns the number of elements + * of the given type. + * + * @param x The pointer to the first element of the array + * @return The number of elements + */ +#define lengthof(x) (sizeof(x) / sizeof(x[0])) + +/** + * Get the last element of an fixed size array. + * + * @param x The pointer to the first element of the array + * @return The pointer to the last element of the array + */ +#define lastof(x) (&x[lengthof(x) - 1]) + +/** + * Copies characters from one buffer to another. + * + * Copies the source string to the destination buffer with respect of the + * terminating null-character and the last pointer to the last element in + * the destination buffer. If the last pointer is set to NULL no boundary + * check is performed. + * + * @note usage: strecpy(dst, src, lastof(dst)); + * @note lastof() applies only to fixed size arrays + * + * @param dst The destination buffer + * @param src The buffer containing the string to copy + * @param last The pointer to the last element of the destination buffer + * @return The pointer to the terminating null-character in the destination buffer + */ +char *strecpy(char *dst, const char *src, const char *last) +{ + assert(dst <= last); + while (dst != last && *src != '\0') { + *dst++ = *src++; + } + *dst = '\0'; + + if (dst == last && *src != '\0') { + fprintf(stderr, "String too long for destination buffer\n"); + exit(-3); + } + return dst; +} + +/** + * Appends characters from one string to another. + * + * Appends the source string to the destination string with respect of the + * terminating null-character and and the last pointer to the last element + * in the destination buffer. If the last pointer is set to NULL no + * boundary check is performed. + * + * @note usage: strecat(dst, src, lastof(dst)); + * @note lastof() applies only to fixed size arrays + * + * @param dst The buffer containing the target string + * @param src The buffer containing the string to append + * @param last The pointer to the last element of the destination buffer + * @return The pointer to the terminating null-character in the destination buffer + */ +static char *strecat(char *dst, const char *src, const char *last) +{ + assert(dst <= last); + while (*dst != '\0') { + if (dst == last) return dst; + dst++; + } + + return strecpy(dst, src, last); +} /** * Version of the standard free that accepts const pointers. @@ -434,7 +511,7 @@ const char *GeneratePath(const char *dirname, const char *filename, bool local) if (access(filename, R_OK) == 0) return strdup(filename); char path[PATH_MAX]; - strcpy(path, dirname); + strecpy(path, dirname, lastof(path)); const char *p = filename; /* Remove '..' from the begin of the filename. */ while (*p == '.') { @@ -444,15 +521,15 @@ const char *GeneratePath(const char *dirname, const char *filename, bool local) p += 2; } } - strcat(path, "/"); - strcat(path, p); + strecat(path, "/", lastof(path)); + strecat(path, p, lastof(path)); if (access(path, R_OK) == 0) return strdup(path); } for (StringSet::iterator it = _include_dirs.begin(); it != _include_dirs.end(); it++) { char path[PATH_MAX]; - strcpy(path, *it); + strecpy(path, *it, lastof(path)); const char *p = filename; /* Remove '..' from the begin of the filename. */ while (*p == '.') { @@ -462,8 +539,8 @@ const char *GeneratePath(const char *dirname, const char *filename, bool local) p += 2; } } - strcat(path, "/"); - strcat(path, p); + strecat(path, "/", lastof(path)); + strecat(path, p, lastof(path)); if (access(path, R_OK) == 0) return strdup(path); } @@ -666,9 +743,9 @@ void ScanFile(const char *filename, const char *ext, bool header, bool verbose) } else { /* Replace the extension with the provided extension of '.o'. */ char path[PATH_MAX]; - strcpy(path, filename); + strecpy(path, filename, lastof(path)); *(strrchr(path, '.')) = '\0'; - strcat(path, ext != NULL ? ext : ".o"); + strecat(path, ext != NULL ? ext : ".o", lastof(path)); curfile = _files.find(path); if (curfile == _files.end()) { curfile = (_files.insert(StringMapItem(strdup(path), new StringSet()))).first; @@ -895,8 +972,8 @@ int main(int argc, char *argv[]) if (delimiter == NULL) delimiter = strdup("# DO NOT DELETE"); char backup[PATH_MAX]; - strcpy(backup, filename); - strcat(backup, ".bak"); + strecpy(backup, filename, lastof(backup)); + strecat(backup, ".bak", lastof(backup)); char *content = NULL; long size = 0; @@ -906,7 +983,10 @@ int main(int argc, char *argv[]) FILE *src = fopen(filename, "rb"); if (src != NULL) { fseek(src, 0, SEEK_END); - size = ftell(src); + if ((size = ftell(src)) < 0) { + fprintf(stderr, "Could not read %s\n", filename); + exit(-2); + } rewind(src); content = (char*)malloc(size * sizeof(*content)); if (fread(content, 1, size, src) != (size_t)size) { diff --git a/src/depot.cpp b/src/depot.cpp index 4fb69c8e3f..821399fd2b 100644 --- a/src/depot.cpp +++ b/src/depot.cpp @@ -18,6 +18,8 @@ #include "vehicle_gui.h" #include "vehiclelist.h" +#include "safeguards.h" + /** All our depots tucked away in a pool. */ DepotPool _depot_pool("Depot"); INSTANTIATE_POOL_METHODS(Depot) @@ -44,12 +46,6 @@ Depot::~Depot() DeleteWindowById(WC_VEHICLE_DEPOT, this->xy); /* Delete the depot list */ - VehicleType vt; - switch (GetTileType(this->xy)) { - default: NOT_REACHED(); - case MP_RAILWAY: vt = VEH_TRAIN; break; - case MP_ROAD: vt = VEH_ROAD; break; - case MP_WATER: vt = VEH_SHIP; break; - } + VehicleType vt = GetDepotVehicleType(this->xy); DeleteWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_DEPOT_LIST, vt, GetTileOwner(this->xy), this->index).Pack()); } diff --git a/src/depot_cmd.cpp b/src/depot_cmd.cpp index 7027554bd0..5101b7c2ca 100644 --- a/src/depot_cmd.cpp +++ b/src/depot_cmd.cpp @@ -21,6 +21,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Check whether the given name is globally unique amongst depots. * @param name The name to check. @@ -68,7 +70,7 @@ CommandCost CmdRenameDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 d->name = NULL; MakeDefaultName(d); } else { - d->name = strdup(text); + d->name = stredup(text); } /* Update the orders and depot */ @@ -76,13 +78,7 @@ CommandCost CmdRenameDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 SetWindowDirty(WC_VEHICLE_DEPOT, d->xy); /* Update the depot list */ - VehicleType vt; - switch (GetTileType(d->xy)) { - default: NOT_REACHED(); - case MP_RAILWAY: vt = VEH_TRAIN; break; - case MP_ROAD: vt = VEH_ROAD; break; - case MP_WATER: vt = VEH_SHIP; break; - } + VehicleType vt = GetDepotVehicleType(d->xy); SetWindowDirty(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_DEPOT_LIST, vt, GetTileOwner(d->xy), d->index).Pack()); } return CommandCost(); diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 10de2bece1..fe75708ddf 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -33,6 +33,8 @@ #include "table/strings.h" +#include "safeguards.h" + /* * Since all depot window sizes aren't the same, we need to modify sizes a little. * It's done with the following arrays of widget indexes. Each of them tells if a widget side should be moved and in what direction. @@ -188,16 +190,19 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ if ((int)x + x_offs > max_extend_right) max_extend_right = x + x_offs; } + int min_extend = ScaleGUITrad(16); + int max_extend = ScaleGUITrad(98); + switch (image_type) { case EIT_IN_DEPOT: - _base_block_sizes_depot[type].height = max(GetVehicleHeight(type), max_height); - _base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, 16, 98); - _base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, 16, 98); + _base_block_sizes_depot[type].height = max(ScaleGUITrad(GetVehicleHeight(type)), max_height); + _base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, min_extend, max_extend); + _base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, min_extend, max_extend); break; case EIT_PURCHASE: - _base_block_sizes_purchase[type].height = max(GetVehicleHeight(type), max_height); - _base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, 16, 98); - _base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, 16, 98); + _base_block_sizes_purchase[type].height = max(ScaleGUITrad(GetVehicleHeight(type)), max_height); + _base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, min_extend, max_extend); + _base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, min_extend, max_extend); break; default: NOT_REACHED(); @@ -226,6 +231,7 @@ struct DepotWindow : Window { bool generate_list; VehicleList vehicle_list; VehicleList wagon_list; + uint unitnumber_digits; uint num_columns; ///< Number of columns. Scrollbar *hscroll; ///< Only for trains. Scrollbar *vscroll; @@ -239,6 +245,7 @@ struct DepotWindow : Window { this->generate_list = true; this->type = type; this->num_columns = 1; // for non-trains this gets set in FinishInitNested() + this->unitnumber_digits = 2; this->CreateNestedTree(); this->hscroll = (this->type == VEH_TRAIN ? this->GetScrollbar(WID_D_H_SCROLL) : NULL); @@ -272,7 +279,7 @@ struct DepotWindow : Window { void DrawVehicleInDepot(const Vehicle *v, int left, int right, int y) const { bool free_wagon = false; - int sprite_y = y + (this->resize.step_height - GetVehicleHeight(v->type)) / 2; + int sprite_y = y + (this->resize.step_height - ScaleGUITrad(GetVehicleHeight(v->type))) / 2; bool rtl = _current_text_dir == TD_RTL; int image_left = rtl ? left + this->count_width : left + this->header_width; @@ -283,7 +290,7 @@ struct DepotWindow : Window { const Train *u = Train::From(v); free_wagon = u->IsFreeWagon(); - uint x_space = free_wagon ? TRAININFO_DEFAULT_VEHICLE_WIDTH : 0; + uint x_space = free_wagon ? ScaleGUITrad(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); @@ -296,13 +303,7 @@ struct DepotWindow : Window { case VEH_ROAD: DrawRoadVehImage( v, image_left, image_right, sprite_y, this->sel, EIT_IN_DEPOT); break; case VEH_SHIP: DrawShipImage( v, image_left, image_right, sprite_y, this->sel, EIT_IN_DEPOT); break; - case VEH_AIRCRAFT: { - const Sprite *spr = GetSprite(v->GetImage(DIR_W, EIT_IN_DEPOT), ST_NORMAL); - DrawAircraftImage(v, image_left, image_right, - y + max(UnScaleByZoom(spr->height, ZOOM_LVL_GUI) + UnScaleByZoom(spr->y_offs, ZOOM_LVL_GUI) - 14, 0), // tall sprites needs an y offset - this->sel, EIT_IN_DEPOT); - break; - } + case VEH_AIRCRAFT: DrawAircraftImage(v, image_left, image_right, sprite_y, this->sel, EIT_IN_DEPOT); break; default: NOT_REACHED(); } @@ -428,7 +429,7 @@ struct DepotWindow : Window { pos -= this->vehicle_list.Length(); *veh = this->wagon_list[pos]; /* free wagons don't have an initial loco. */ - x -= VEHICLEINFO_FULL_VEHICLE_WIDTH; + x -= ScaleGUITrad(VEHICLEINFO_FULL_VEHICLE_WIDTH); wagon = true; } @@ -442,6 +443,7 @@ struct DepotWindow : Window { switch (this->type) { case VEH_TRAIN: if (wagon) return MODE_ERROR; + /* FALL THROUGH */ case VEH_ROAD: if (xm <= this->flag_width) return MODE_START_STOP; break; @@ -607,16 +609,17 @@ struct DepotWindow : Window { this->count_width = 0; } - Dimension unumber = { GetDigitWidth() * 4, FONT_HEIGHT_NORMAL }; + SetDParamMaxDigits(0, this->unitnumber_digits); + Dimension unumber = GetStringBoundingBox(STR_BLACK_COMMA); const Sprite *spr = GetSprite(SPR_FLAG_VEH_STOPPED, ST_NORMAL); - this->flag_width = UnScaleByZoom(spr->width, ZOOM_LVL_GUI) + WD_FRAMERECT_RIGHT; - this->flag_height = UnScaleByZoom(spr->height, ZOOM_LVL_GUI); + this->flag_width = UnScaleGUI(spr->width) + WD_FRAMERECT_RIGHT; + this->flag_height = UnScaleGUI(spr->height); if (this->type == VEH_TRAIN || this->type == VEH_ROAD) { - min_height = max(unumber.height + WD_MATRIX_TOP, UnScaleByZoom(spr->height, ZOOM_LVL_GUI)); + min_height = max(unumber.height + WD_MATRIX_TOP, UnScaleGUI(spr->height)); this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT; } else { - min_height = unumber.height + UnScaleByZoom(spr->height, ZOOM_LVL_GUI) + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM; + min_height = unumber.height + UnScaleGUI(spr->height) + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM; this->header_width = max(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT; } int base_width = this->count_width + this->header_width; @@ -624,7 +627,7 @@ struct DepotWindow : Window { resize->height = max(GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).height, min_height); if (this->type == VEH_TRAIN) { resize->width = 1; - size->width = base_width + 2 * 29; // about 2 parts + size->width = base_width + 2 * ScaleGUITrad(29); // about 2 parts size->height = resize->height * 6; } else { resize->width = base_width + GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).extend_left + GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).extend_right; @@ -656,11 +659,17 @@ struct DepotWindow : Window { BuildDepotVehicleList(this->type, this->window_number, &this->vehicle_list, &this->wagon_list); this->generate_list = false; DepotSortList(&this->vehicle_list); + + uint new_unitnumber_digits = GetUnitNumberDigits(this->vehicle_list); + if (this->unitnumber_digits != new_unitnumber_digits) { + this->unitnumber_digits = new_unitnumber_digits; + this->ReInit(); + } } /* determine amount of items for scroller */ if (this->type == VEH_TRAIN) { - uint max_width = VEHICLEINFO_FULL_VEHICLE_WIDTH; + uint max_width = ScaleGUITrad(VEHICLEINFO_FULL_VEHICLE_WIDTH); for (uint num = 0; num < this->vehicle_list.Length(); num++) { uint width = 0; for (const Train *v = Train::From(this->vehicle_list[num]); v != NULL; v = v->Next()) { diff --git a/src/depot_map.h b/src/depot_map.h index b4f7a11ecf..c304790f8a 100644 --- a/src/depot_map.h +++ b/src/depot_map.h @@ -29,6 +29,9 @@ static inline bool IsDepotTypeTile(TileIndex tile, TransportType type) case TRANSPORT_WATER: return IsShipDepotTile(tile); + + case TRANSPORT_AIR: + return IsHangarTile(tile); } } @@ -55,4 +58,21 @@ static inline DepotID GetDepotIndex(TileIndex t) return _m[t].m2; } +/** + * Get the type of vehicles that can use a depot + * @param t The tile + * @pre IsDepotTile(t) + * @return the type of vehicles that can use the depot + */ +static inline VehicleType GetDepotVehicleType(TileIndex t) +{ + switch (GetTileType(t)) { + default: NOT_REACHED(); + case MP_RAILWAY: return VEH_TRAIN; + case MP_ROAD: return VEH_ROAD; + case MP_WATER: return VEH_SHIP; + case MP_STATION: return VEH_AIRCRAFT; + } +} + #endif /* DEPOT_MAP_H */ diff --git a/src/direction_func.h b/src/direction_func.h index 657645e283..8889485842 100644 --- a/src/direction_func.h +++ b/src/direction_func.h @@ -14,6 +14,39 @@ #include "direction_type.h" +/** + * Checks if an integer value is a valid DiagDirection + * + * @param d The value to check + * @return True if the value belongs to a DiagDirection, else false + */ +static inline bool IsValidDiagDirection(DiagDirection d) +{ + return d < DIAGDIR_END; +} + +/** + * Checks if an integer value is a valid Direction + * + * @param d The value to check + * @return True if the value belongs to a Direction, else false + */ +static inline bool IsValidDirection(Direction d) +{ + return d < DIR_END; +} + +/** + * Checks if an integer value is a valid Axis + * + * @param d The value to check + * @return True if the value belongs to an Axis, else false + */ +static inline bool IsValidAxis(Axis d) +{ + return d < AXIS_END; +} + /** * Return the reverse of a direction * @@ -22,6 +55,7 @@ */ static inline Direction ReverseDir(Direction d) { + assert(IsValidDirection(d)); return (Direction)(4 ^ d); } @@ -35,6 +69,8 @@ static inline Direction ReverseDir(Direction d) */ static inline DirDiff DirDifference(Direction d0, Direction d1) { + assert(IsValidDirection(d0)); + assert(IsValidDirection(d1)); /* Cast to uint so compiler can use bitmask. If the difference is negative * and we used int instead of uint, further "+ 8" would have to be added. */ return (DirDiff)((uint)(d0 - d1) % 8); @@ -69,6 +105,7 @@ static inline DirDiff ChangeDirDiff(DirDiff d, DirDiff delta) */ static inline Direction ChangeDir(Direction d, DirDiff delta) { + assert(IsValidDirection(d)); /* Cast to uint so compiler can use bitmask. Result can never be negative. */ return (Direction)((uint)(d + delta) % 8); } @@ -82,6 +119,7 @@ static inline Direction ChangeDir(Direction d, DirDiff delta) */ static inline DiagDirection ReverseDiagDir(DiagDirection d) { + assert(IsValidDiagDirection(d)); return (DiagDirection)(2 ^ d); } @@ -98,6 +136,7 @@ static inline DiagDirection ReverseDiagDir(DiagDirection d) */ static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta) { + assert(IsValidDiagDirection(d)); /* Cast to uint so compiler can use bitmask. Result can never be negative. */ return (DiagDirection)((uint)(d + delta) % 4); } @@ -114,6 +153,7 @@ static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta) */ static inline DiagDirection DirToDiagDir(Direction dir) { + assert(IsValidDirection(dir)); return (DiagDirection)(dir >> 1); } @@ -129,6 +169,7 @@ static inline DiagDirection DirToDiagDir(Direction dir) */ static inline Direction DiagDirToDir(DiagDirection dir) { + assert(IsValidDiagDirection(dir)); return (Direction)(dir * 2 + 1); } @@ -143,6 +184,7 @@ static inline Direction DiagDirToDir(DiagDirection dir) */ static inline Axis OtherAxis(Axis a) { + assert(IsValidAxis(a)); return (Axis)(a ^ 1); } @@ -159,6 +201,7 @@ static inline Axis OtherAxis(Axis a) */ static inline Axis DiagDirToAxis(DiagDirection d) { + assert(IsValidDiagDirection(d)); return (Axis)(d & 1); } @@ -176,6 +219,7 @@ static inline Axis DiagDirToAxis(DiagDirection d) */ static inline DiagDirection AxisToDiagDir(Axis a) { + assert(IsValidAxis(a)); return (DiagDirection)(2 - a); } @@ -192,6 +236,7 @@ static inline DiagDirection AxisToDiagDir(Axis a) */ static inline Direction AxisToDirection(Axis a) { + assert(IsValidAxis(a)); return (Direction)(5 - 2 * a); } @@ -203,42 +248,10 @@ static inline Direction AxisToDirection(Axis a) */ static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns) { + assert(IsValidAxis(xy)); return (DiagDirection)(xy * 3 ^ ns * 2); } -/** - * Checks if an integer value is a valid DiagDirection - * - * @param d The value to check - * @return True if the value belongs to a DiagDirection, else false - */ -static inline bool IsValidDiagDirection(DiagDirection d) -{ - return d < DIAGDIR_END; -} - -/** - * Checks if an integer value is a valid Direction - * - * @param d The value to check - * @return True if the value belongs to a Direction, else false - */ -static inline bool IsValidDirection(Direction d) -{ - return d < DIR_END; -} - -/** - * Checks if an integer value is a valid Axis - * - * @param d The value to check - * @return True if the value belongs to an Axis, else false - */ -static inline bool IsValidAxis(Axis d) -{ - return d < AXIS_END; -} - /** * Checks if a given Direction is diagonal. * @@ -247,6 +260,7 @@ static inline bool IsValidAxis(Axis d) */ static inline bool IsDiagonalDirection(Direction dir) { + assert(IsValidDirection(dir)); return (dir & 1) != 0; } diff --git a/src/disaster_cmd.cpp b/src/disaster_vehicle.cpp similarity index 85% rename from src/disaster_cmd.cpp rename to src/disaster_vehicle.cpp index a027dd0484..d75e2d460e 100644 --- a/src/disaster_cmd.cpp +++ b/src/disaster_vehicle.cpp @@ -8,7 +8,8 @@ */ /** - * @file disaster_cmd.cpp + * @file disaster_vehicle.cpp + * * All disaster/easter egg vehicles are handled here. * The general flow of control for the disaster vehicles is as follows: *
      @@ -26,6 +27,8 @@ #include "stdafx.h" +#include "aircraft.h" +#include "disaster_vehicle.h" #include "industry.h" #include "station_base.h" #include "command_func.h" @@ -47,29 +50,11 @@ #include "table/strings.h" +#include "safeguards.h" + /** Delay counter for considering the next disaster. */ uint16 _disaster_delay; -enum DisasterSubType { - ST_ZEPPELINER, - ST_ZEPPELINER_SHADOW, - ST_SMALL_UFO, - ST_SMALL_UFO_SHADOW, - ST_AIRPLANE, - ST_AIRPLANE_SHADOW, - ST_HELICOPTER, - ST_HELICOPTER_SHADOW, - ST_HELICOPTER_ROTORS, - ST_BIG_UFO, - ST_BIG_UFO_SHADOW, - ST_BIG_UFO_DESTROYER, - ST_BIG_UFO_DESTROYER_SHADOW, - ST_SMALL_SUBMARINE, - ST_BIG_SUBMARINE, -}; - -static const uint INITIAL_DISASTER_VEHICLE_ZPOS = 135; ///< Initial Z position of flying disaster vehicles. - static void DisasterClearSquare(TileIndex tile) { if (EnsureNoVehicleOnGround(tile).Failed()) return; @@ -123,46 +108,88 @@ static const SpriteID * const _disaster_images[] = { _disaster_images_4, _disaster_images_5, ///< small and big submarine sprites }; -static void DisasterVehicleUpdateImage(DisasterVehicle *v) +void DisasterVehicle::UpdateImage() { - SpriteID img = v->image_override; - if (img == 0) img = _disaster_images[v->subtype][v->direction]; - v->cur_image = img; + SpriteID img = this->image_override; + if (img == 0) img = _disaster_images[this->subtype][this->direction]; + this->cur_image = img; } /** - * Initialize a disaster vehicle. These vehicles are of type VEH_DISASTER, are unclickable - * and owned by nobody + * Construct the disaster vehicle. + * @param x The X coordinate. + * @param y The Y coordinate. + * @param direction The direction the vehicle is facing. + * @param subtype The sub type of vehicle. + * @param big_ufo_destroyer_target The target for the UFO destroyer. */ -static void InitializeDisasterVehicle(DisasterVehicle *v, int x, int y, int z, Direction direction, byte subtype) -{ - v->x_pos = x; - v->y_pos = y; - v->z_pos = z; - v->tile = TileVirtXY(x, y); - v->direction = direction; - v->subtype = subtype; - v->UpdateDeltaXY(INVALID_DIR); - v->owner = OWNER_NONE; - v->vehstatus = VS_UNCLICKABLE; - v->image_override = 0; - v->current_order.Free(); +DisasterVehicle::DisasterVehicle(int x, int y, Direction direction, DisasterSubType subtype, VehicleID big_ufo_destroyer_target) : + SpecializedVehicleBase(), big_ufo_destroyer_target(big_ufo_destroyer_target) +{ + this->vehstatus = VS_UNCLICKABLE; + + this->x_pos = x; + this->y_pos = y; + switch (subtype) { + case ST_ZEPPELINER: + case ST_SMALL_UFO: + case ST_AIRPLANE: + case ST_HELICOPTER: + case ST_BIG_UFO: + case ST_BIG_UFO_DESTROYER: + GetAircraftFlightLevelBounds(this, &this->z_pos, NULL); + break; + + case ST_HELICOPTER_ROTORS: + GetAircraftFlightLevelBounds(this, &this->z_pos, NULL); + this->z_pos += ROTOR_Z_OFFSET; + break; + + case ST_SMALL_SUBMARINE: + case ST_BIG_SUBMARINE: + this->z_pos = 0; + break; + + case ST_ZEPPELINER_SHADOW: + case ST_SMALL_UFO_SHADOW: + case ST_AIRPLANE_SHADOW: + case ST_HELICOPTER_SHADOW: + case ST_BIG_UFO_SHADOW: + case ST_BIG_UFO_DESTROYER_SHADOW: + this->z_pos = 0; + this->vehstatus |= VS_SHADOW; + break; + } - DisasterVehicleUpdateImage(v); - VehicleUpdatePositionAndViewport(v); + this->direction = direction; + this->tile = TileVirtXY(x, y); + this->subtype = subtype; + this->UpdateDeltaXY(INVALID_DIR); + this->owner = OWNER_NONE; + this->image_override = 0; + this->current_order.Free(); + + this->UpdateImage(); + this->UpdatePositionAndViewport(); } -static void SetDisasterVehiclePos(DisasterVehicle *v, int x, int y, int z) +/** + * Update the position of the vehicle. + * @param x The new X-coordinate. + * @param y The new Y-coordinate. + * @param z The new Z-coordinate. + */ +void DisasterVehicle::UpdatePosition(int x, int y, int z) { - v->x_pos = x; - v->y_pos = y; - v->z_pos = z; - v->tile = TileVirtXY(x, y); + this->x_pos = x; + this->y_pos = y; + this->z_pos = z; + this->tile = TileVirtXY(x, y); - DisasterVehicleUpdateImage(v); - VehicleUpdatePositionAndViewport(v); + this->UpdateImage(); + this->UpdatePositionAndViewport(); - DisasterVehicle *u = v->Next(); + DisasterVehicle *u = this->Next(); if (u != NULL) { int safe_x = Clamp(x, 0, MapMaxX() * TILE_SIZE); int safe_y = Clamp(y - 1, 0, MapMaxY() * TILE_SIZE); @@ -171,16 +198,16 @@ static void SetDisasterVehiclePos(DisasterVehicle *v, int x, int y, int z) u->y_pos = y - 1 - (max(z - GetSlopePixelZ(safe_x, safe_y), 0) >> 3); safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE); u->z_pos = GetSlopePixelZ(safe_x, safe_y); - u->direction = v->direction; + u->direction = this->direction; - DisasterVehicleUpdateImage(u); - VehicleUpdatePositionAndViewport(u); + u->UpdateImage(); + u->UpdatePositionAndViewport(); if ((u = u->Next()) != NULL) { u->x_pos = x; u->y_pos = y; - u->z_pos = z + 5; - VehicleUpdatePositionAndViewport(u); + u->z_pos = z + ROTOR_Z_OFFSET; + u->UpdatePositionAndViewport(); } } } @@ -202,7 +229,7 @@ static bool DisasterTick_Zeppeliner(DisasterVehicle *v) GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); if (v->current_order.GetDestination() == 1) { if (++v->age == 38) { @@ -240,7 +267,7 @@ static bool DisasterTick_Zeppeliner(DisasterVehicle *v) AI::NewEvent(GetTileOwner(v->tile), new ScriptEventDisasterZeppelinerCleared(st->index)); } - SetDisasterVehiclePos(v, v->x_pos, v->y_pos, v->z_pos); + v->UpdatePosition(v->x_pos, v->y_pos, GetAircraftFlightLevel(v)); delete v; return false; } @@ -249,7 +276,7 @@ static bool DisasterTick_Zeppeliner(DisasterVehicle *v) int y = v->y_pos; int z = GetSlopePixelZ(x, y); if (z < v->z_pos) z = v->z_pos - 1; - SetDisasterVehiclePos(v, x, y, z); + v->UpdatePosition(x, y, z); if (++v->age == 1) { CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE); @@ -296,7 +323,7 @@ static bool DisasterTick_Ufo(DisasterVehicle *v) if (Delta(x, v->x_pos) + Delta(y, v->y_pos) >= (int)TILE_SIZE) { v->direction = GetDirectionTowards(v, x, y); GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); return true; } if (++v->age < 6) { @@ -344,7 +371,7 @@ static bool DisasterTick_Ufo(DisasterVehicle *v) int z = v->z_pos; if (dist <= TILE_SIZE && z > u->z_pos) z--; - SetDisasterVehiclePos(v, gp.x, gp.y, z); + v->UpdatePosition(gp.x, gp.y, z); if (z <= u->z_pos && (u->vehstatus & VS_HIDDEN) == 0) { v->age++; @@ -399,7 +426,7 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo v->image_override = (v->current_order.GetDestination() == 1 && HasBit(v->tick_counter, 2)) ? image_override : 0; GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); if ((leave_at_top && gp.x < (-10 * (int)TILE_SIZE)) || (!leave_at_top && gp.x > (int)(MapSizeX() * TILE_SIZE + 9 * TILE_SIZE) - 1)) { delete v; @@ -474,7 +501,7 @@ static bool DisasterTick_Helicopter_Rotors(DisasterVehicle *v) if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); return true; } @@ -496,7 +523,7 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) v->direction = GetDirectionTowards(v, x, y); GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); return true; } @@ -508,7 +535,7 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) int z = GetSlopePixelZ(v->x_pos, v->y_pos); if (z < v->z_pos) { - SetDisasterVehiclePos(v, v->x_pos, v->y_pos, v->z_pos - 1); + v->UpdatePosition(v->x_pos, v->y_pos, v->z_pos - 1); return true; } @@ -532,23 +559,16 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) delete v; return false; } - DisasterVehicle *u = new DisasterVehicle(); - - InitializeDisasterVehicle(u, -6 * (int)TILE_SIZE, v->y_pos, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_SW, ST_BIG_UFO_DESTROYER); - u->big_ufo_destroyer_target = v->index; - - DisasterVehicle *w = new DisasterVehicle(); - + DisasterVehicle *u = new DisasterVehicle(-6 * (int)TILE_SIZE, v->y_pos, DIR_SW, ST_BIG_UFO_DESTROYER, v->index); + DisasterVehicle *w = new DisasterVehicle(-6 * (int)TILE_SIZE, v->y_pos, DIR_SW, ST_BIG_UFO_DESTROYER_SHADOW); u->SetNext(w); - InitializeDisasterVehicle(w, -6 * (int)TILE_SIZE, v->y_pos, 0, DIR_SW, ST_BIG_UFO_DESTROYER_SHADOW); - w->vehstatus |= VS_SHADOW; } else if (v->current_order.GetDestination() == 0) { int x = TileX(v->dest_tile) * TILE_SIZE; int y = TileY(v->dest_tile) * TILE_SIZE; if (Delta(x, v->x_pos) + Delta(y, v->y_pos) >= (int)TILE_SIZE) { v->direction = GetDirectionTowards(v, x, y); GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); return true; } @@ -583,7 +603,7 @@ static bool DisasterTick_Big_Ufo_Destroyer(DisasterVehicle *v) v->tick_counter++; GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); if (gp.x > (int)(MapSizeX() * TILE_SIZE + 9 * TILE_SIZE) - 1) { delete v; @@ -640,7 +660,7 @@ static bool DisasterTick_Submarine(DisasterVehicle *v) TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0)); if (trackbits == TRACK_BIT_ALL && !Chance16(1, 90)) { GetNewVehiclePosResult gp = GetNewVehiclePos(v); - SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); + v->UpdatePosition(gp.x, gp.y, v->z_pos); return true; } } @@ -697,14 +717,10 @@ static void Disaster_Zeppeliner_Init() } } - DisasterVehicle *v = new DisasterVehicle(); - InitializeDisasterVehicle(v, x, 0, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_SE, ST_ZEPPELINER); - + DisasterVehicle *v = new DisasterVehicle(x, 0, DIR_SE, ST_ZEPPELINER); /* Allocate shadow */ - DisasterVehicle *u = new DisasterVehicle(); + DisasterVehicle *u = new DisasterVehicle(x, 0, DIR_SE, ST_ZEPPELINER_SHADOW); v->SetNext(u); - InitializeDisasterVehicle(u, x, 0, 0, DIR_SE, ST_ZEPPELINER_SHADOW); - u->vehstatus |= VS_SHADOW; } @@ -716,18 +732,13 @@ static void Disaster_Small_Ufo_Init() { if (!Vehicle::CanAllocateItem(2)) return; - DisasterVehicle *v = new DisasterVehicle(); int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; - - InitializeDisasterVehicle(v, x, 0, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_SE, ST_SMALL_UFO); + DisasterVehicle *v = new DisasterVehicle(x, 0, DIR_SE, ST_SMALL_UFO); v->dest_tile = TileXY(MapSizeX() / 2, MapSizeY() / 2); - v->age = 0; /* Allocate shadow */ - DisasterVehicle *u = new DisasterVehicle(); + DisasterVehicle *u = new DisasterVehicle(x, 0, DIR_SE, ST_SMALL_UFO_SHADOW); v->SetNext(u); - InitializeDisasterVehicle(u, x, 0, 0, DIR_SE, ST_SMALL_UFO_SHADOW); - u->vehstatus |= VS_SHADOW; } @@ -747,18 +758,13 @@ static void Disaster_Airplane_Init() if (found == NULL) return; - DisasterVehicle *v = new DisasterVehicle(); - /* Start from the bottom (south side) of the map */ int x = (MapSizeX() + 9) * TILE_SIZE - 1; int y = TileY(found->location.tile) * TILE_SIZE + 37; - InitializeDisasterVehicle(v, x, y, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_NE, ST_AIRPLANE); - - DisasterVehicle *u = new DisasterVehicle(); + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_NE, ST_AIRPLANE); + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_NE, ST_AIRPLANE_SHADOW); v->SetNext(u); - InitializeDisasterVehicle(u, x, y, 0, DIR_SE, ST_AIRPLANE_SHADOW); - u->vehstatus |= VS_SHADOW; } @@ -778,21 +784,15 @@ static void Disaster_Helicopter_Init() if (found == NULL) return; - DisasterVehicle *v = new DisasterVehicle(); - int x = -16 * (int)TILE_SIZE; int y = TileY(found->location.tile) * TILE_SIZE + 37; - InitializeDisasterVehicle(v, x, y, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_SW, ST_HELICOPTER); - - DisasterVehicle *u = new DisasterVehicle(); + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER); + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER_SHADOW); v->SetNext(u); - InitializeDisasterVehicle(u, x, y, 0, DIR_SW, ST_HELICOPTER_SHADOW); - u->vehstatus |= VS_SHADOW; - DisasterVehicle *w = new DisasterVehicle(); + DisasterVehicle *w = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER_ROTORS); u->SetNext(w); - InitializeDisasterVehicle(w, x, y, 140, DIR_SW, ST_HELICOPTER_ROTORS); } @@ -802,19 +802,15 @@ static void Disaster_Big_Ufo_Init() { if (!Vehicle::CanAllocateItem(2)) return; - DisasterVehicle *v = new DisasterVehicle(); int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; int y = MapMaxX() * TILE_SIZE - 1; - InitializeDisasterVehicle(v, x, y, INITIAL_DISASTER_VEHICLE_ZPOS, DIR_NW, ST_BIG_UFO); + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_NW, ST_BIG_UFO); v->dest_tile = TileXY(MapSizeX() / 2, MapSizeY() / 2); - v->age = 0; /* Allocate shadow */ - DisasterVehicle *u = new DisasterVehicle(); + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_NW, ST_BIG_UFO_SHADOW); v->SetNext(u); - InitializeDisasterVehicle(u, x, y, 0, DIR_NW, ST_BIG_UFO_SHADOW); - u->vehstatus |= VS_SHADOW; } @@ -837,9 +833,7 @@ static void Disaster_Submarine_Init(DisasterSubType subtype) } if (!IsWaterTile(TileVirtXY(x, y))) return; - DisasterVehicle *v = new DisasterVehicle(); - InitializeDisasterVehicle(v, x, y, 0, dir, subtype); - v->age = 0; + new DisasterVehicle(x, y, dir, subtype); } /* Curious submarine #1, just floats around */ @@ -971,7 +965,7 @@ void ReleaseDisastersTargetingVehicle(VehicleID vehicle) /* Revert to target-searching */ v->current_order.SetDestination(0); v->dest_tile = RandomTile(); - v->z_pos = INITIAL_DISASTER_VEHICLE_ZPOS; + GetAircraftFlightLevelBounds(v, &v->z_pos, NULL); v->age = 0; } } diff --git a/src/disaster_vehicle.h b/src/disaster_vehicle.h new file mode 100644 index 0000000000..06fb36c1e3 --- /dev/null +++ b/src/disaster_vehicle.h @@ -0,0 +1,62 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file disaster_vehicle.h All disaster vehicles. */ + +#ifndef DISASTER_VEHICLE_H +#define DISASTER_VEHICLE_H + +#include "vehicle_base.h" + +/** Different sub types of disaster vehicles. */ +enum DisasterSubType { + ST_ZEPPELINER, ///< Zeppelin, crashes at airports. + ST_ZEPPELINER_SHADOW, ///< Shadow of the zeppelin. + ST_SMALL_UFO, ///< Small UFO, tries to find a road vehicle to destroy. + ST_SMALL_UFO_SHADOW, ///< Shadow of small UFO + ST_AIRPLANE, ///< Airplane destroying an oil refinery + ST_AIRPLANE_SHADOW, ///< Shadow of airplane + ST_HELICOPTER, ///< Helicopter destroying a factory. + ST_HELICOPTER_SHADOW, ///< Shadow of helicopter. + ST_HELICOPTER_ROTORS, ///< Rotors of helicopter. + ST_BIG_UFO, ///< Big UFO, finds a piece of railroad to "park" on + ST_BIG_UFO_SHADOW, ///< Shadow of the big UFO + ST_BIG_UFO_DESTROYER, ///< Aircraft the will bomb the big UFO + ST_BIG_UFO_DESTROYER_SHADOW, ///< Shadow of the aircraft. + ST_SMALL_SUBMARINE, ///< Small submarine, pops up in the oceans but doesn't do anything + ST_BIG_SUBMARINE, ///< Big submarine, pops up in the oceans but doesn't do anything +}; + +/** + * Disasters, like submarines, skyrangers and their shadows, belong to this class. + */ +struct DisasterVehicle FINAL : public SpecializedVehicle { + SpriteID image_override; ///< Override for the default disaster vehicle sprite. + VehicleID big_ufo_destroyer_target; ///< The big UFO that this destroyer is supposed to bomb. + byte flags; ///< Flags about the state of the vehicle, @see AirVehicleFlags + + /** For use by saveload. */ + DisasterVehicle() : SpecializedVehicleBase() {} + DisasterVehicle(int x, int y, Direction direction, DisasterSubType subtype, VehicleID big_ufo_destroyer_target = VEH_INVALID); + /** We want to 'destruct' the right class. */ + virtual ~DisasterVehicle() {} + + void UpdatePosition(int x, int y, int z); + void UpdateDeltaXY(Direction direction); + void UpdateImage(); + bool Tick(); +}; + +/** + * Iterate over disaster vehicles. + * @param var The variable used to iterate over. + */ +#define FOR_ALL_DISASTERVEHICLES(var) FOR_ALL_VEHICLES_OF_TYPE(DisasterVehicle, var) + +#endif /* DISASTER_VEHICLE_H */ diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 03c661dd0b..f6699daeff 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -26,12 +26,15 @@ #include "company_base.h" #include "hotkeys.h" #include "gui.h" +#include "zoom_func.h" #include "widgets/dock_widget.h" #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + static void ShowBuildDockStationPicker(Window *parent); static void ShowBuildDocksDepotPicker(Window *parent); @@ -41,13 +44,13 @@ void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p { if (result.Failed()) return; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { - if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile); + if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile); } @@ -113,11 +116,17 @@ struct BuildDocksToolbarWindow : Window { virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; - this->SetWidgetsDisabledState(!CanBuildVehicleInfrastructure(VEH_SHIP), + + bool can_build = CanBuildVehicleInfrastructure(VEH_SHIP); + this->SetWidgetsDisabledState(!can_build, WID_DT_DEPOT, WID_DT_STATION, WID_DT_BUOY, WIDGET_LIST_END); + if (!can_build) { + DeleteWindowById(WC_BUILD_STATION, TRANSPORT_WATER); + DeleteWindowById(WC_BUILD_DEPOT, TRANSPORT_WATER); + } } virtual void OnClick(Point pt, int widget, int click_count) @@ -496,14 +505,30 @@ public: UpdateDocksDirection(); } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + switch (widget) { + case WID_BDD_X: + case WID_BDD_Y: + size->width = ScaleGUITrad(96) + 2; + size->height = ScaleGUITrad(64) + 2; + break; + } + } + virtual void OnPaint() { this->DrawWidgets(); - DrawShipDepotSprite(this->GetWidget(WID_BDD_X)->pos_x + 64, this->GetWidget(WID_BDD_X)->pos_y + 18, AXIS_X, DEPOT_PART_NORTH); - DrawShipDepotSprite(this->GetWidget(WID_BDD_X)->pos_x + 32, this->GetWidget(WID_BDD_X)->pos_y + 34, AXIS_X, DEPOT_PART_SOUTH); - DrawShipDepotSprite(this->GetWidget(WID_BDD_Y)->pos_x + 32, this->GetWidget(WID_BDD_Y)->pos_y + 18, AXIS_Y, DEPOT_PART_NORTH); - DrawShipDepotSprite(this->GetWidget(WID_BDD_Y)->pos_x + 64, this->GetWidget(WID_BDD_Y)->pos_y + 34, AXIS_Y, DEPOT_PART_SOUTH); + int x1 = ScaleGUITrad(63) + 1; + int x2 = ScaleGUITrad(31) + 1; + int y1 = ScaleGUITrad(17) + 1; + int y2 = ScaleGUITrad(33) + 1; + + DrawShipDepotSprite(this->GetWidget(WID_BDD_X)->pos_x + x1, this->GetWidget(WID_BDD_X)->pos_y + y1, AXIS_X, DEPOT_PART_NORTH); + DrawShipDepotSprite(this->GetWidget(WID_BDD_X)->pos_x + x2, this->GetWidget(WID_BDD_X)->pos_y + y2, AXIS_X, DEPOT_PART_SOUTH); + DrawShipDepotSprite(this->GetWidget(WID_BDD_Y)->pos_x + x2, this->GetWidget(WID_BDD_Y)->pos_y + y1, AXIS_Y, DEPOT_PART_NORTH); + DrawShipDepotSprite(this->GetWidget(WID_BDD_Y)->pos_x + x1, this->GetWidget(WID_BDD_Y)->pos_y + y2, AXIS_Y, DEPOT_PART_SOUTH); } virtual void OnClick(Point pt, int widget, int click_count) diff --git a/src/driver.cpp b/src/driver.cpp index 6419cdd4c3..825c489b97 100644 --- a/src/driver.cpp +++ b/src/driver.cpp @@ -16,17 +16,16 @@ #include "video/video_driver.hpp" #include "string_func.h" -VideoDriver *_video_driver; ///< The currently active video driver. +#include "safeguards.h" + char *_ini_videodriver; ///< The video driver a stored in the configuration file. int _num_resolutions; ///< The number of resolutions. Dimension _resolutions[32]; ///< List of resolutions. Dimension _cur_resolution; ///< The current resolution. bool _rightclick_emulate; ///< Whether right clicking is emulated. -SoundDriver *_sound_driver; ///< The currently active sound driver. char *_ini_sounddriver; ///< The sound driver a stored in the configuration file. -MusicDriver *_music_driver; ///< The currently active music driver. char *_ini_musicdriver; ///< The music driver a stored in the configuration file. char *_ini_blitter; ///< The blitter as stored in the configuration file. @@ -86,9 +85,25 @@ int GetDriverParamInt(const char * const *parm, const char *name, int def) * @param type the type of driver to select * @post Sets the driver so GetCurrentDriver() returns it too. */ -Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type) +void DriverFactoryBase::SelectDriver(const char *name, Driver::Type type) +{ + if (!DriverFactoryBase::SelectDriverImpl(name, type)) { + StrEmpty(name) ? + usererror("Failed to autoprobe %s driver", GetDriverTypeName(type)) : + usererror("Failed to select requested %s driver '%s'", GetDriverTypeName(type), name); + } +} + +/** + * Find the requested driver and return its class. + * @param name the driver to select. + * @param type the type of driver to select + * @post Sets the driver so GetCurrentDriver() returns it too. + * @return True upon success, otherwise false. + */ +bool DriverFactoryBase::SelectDriverImpl(const char *name, Driver::Type type) { - if (GetDrivers().size() == 0) return NULL; + if (GetDrivers().size() == 0) return false; if (StrEmpty(name)) { /* Probe for this driver, but do not fall back to dedicated/null! */ @@ -101,15 +116,18 @@ Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type) if (d->type != type) continue; if (d->priority != priority) continue; + Driver *oldd = *GetActiveDriver(type); Driver *newd = d->CreateInstance(); + *GetActiveDriver(type) = newd; + const char *err = newd->Start(NULL); if (err == NULL) { DEBUG(driver, 1, "Successfully probed %s driver '%s'", GetDriverTypeName(type), d->name); - delete *GetActiveDriver(type); - *GetActiveDriver(type) = newd; - return newd; + delete oldd; + return true; } + *GetActiveDriver(type) = oldd; DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err); delete newd; } @@ -158,39 +176,12 @@ Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type) DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name); delete *GetActiveDriver(type); *GetActiveDriver(type) = newd; - return newd; + return true; } usererror("No such %s driver: %s\n", GetDriverTypeName(type), buffer); } } -/** - * Register a driver internally, based on its name. - * @param name the name of the driver. - * @param type the type of driver to register - * @param priority the priority; how badly do we want this as default? - * @note an assert() will be trigger if 2 driver with the same name try to register. - */ -void DriverFactoryBase::RegisterDriver(const char *name, Driver::Type type, int priority) -{ - /* Don't register nameless Drivers */ - if (name == NULL) return; - - this->name = strdup(name); - this->type = type; - this->priority = priority; - - /* Prefix the name with driver type to make it unique */ - char buf[32]; - strecpy(buf, GetDriverTypeName(type), lastof(buf)); - strecpy(buf + 5, name, lastof(buf)); - - const char *longname = strdup(buf); - - std::pair P = GetDrivers().insert(Drivers::value_type(longname, this)); - assert(P.second); -} - /** * Build a human readable list of available drivers, grouped by type. * @param p The buffer to write to. @@ -218,13 +209,32 @@ char *DriverFactoryBase::GetDriversInfo(char *p, const char *last) return p; } +/** + * Construct a new DriverFactory. + * @param type The type of driver. + * @param priority The priority within the driver class. + * @param name The name of the driver. + * @param description A long-ish description of the driver. + */ +DriverFactoryBase::DriverFactoryBase(Driver::Type type, int priority, const char *name, const char *description) : + type(type), priority(priority), name(name), description(description) +{ + /* Prefix the name with driver type to make it unique */ + char buf[32]; + strecpy(buf, GetDriverTypeName(type), lastof(buf)); + strecpy(buf + 5, name, lastof(buf)); + + const char *longname = stredup(buf); + + std::pair P = GetDrivers().insert(Drivers::value_type(longname, this)); + assert(P.second); +} + /** * Frees memory used for this->name */ DriverFactoryBase::~DriverFactoryBase() { - if (this->name == NULL) return; - /* Prefix the name with driver type to make it unique */ char buf[32]; strecpy(buf, GetDriverTypeName(type), lastof(buf)); @@ -239,5 +249,4 @@ DriverFactoryBase::~DriverFactoryBase() free(longname); if (GetDrivers().empty()) delete &GetDrivers(); - free(this->name); } diff --git a/src/driver.h b/src/driver.h index 10a6863bc2..12ca4474d4 100644 --- a/src/driver.h +++ b/src/driver.h @@ -59,9 +59,14 @@ DECLARE_POSTFIX_INCREMENT(Driver::Type) /** Base for all driver factories. */ class DriverFactoryBase { private: - Driver::Type type; ///< The type of driver. - const char *name; ///< The name of the drivers of this factory. - int priority; ///< The priority of this factory. + friend class MusicDriver; + friend class SoundDriver; + friend class VideoDriver; + + Driver::Type type; ///< The type of driver. + int priority; ///< The priority of this factory. + const char *name; ///< The name of the drivers of this factory. + const char *description; ///< The description of this driver. typedef std::map Drivers; ///< Type for a map of drivers. @@ -96,16 +101,14 @@ private: return driver_type_name[type]; } -protected: - void RegisterDriver(const char *name, Driver::Type type, int priority); + static bool SelectDriverImpl(const char *name, Driver::Type type); -public: - DriverFactoryBase() : - name(NULL) - {} +protected: + DriverFactoryBase(Driver::Type type, int priority, const char *name, const char *description); virtual ~DriverFactoryBase(); +public: /** * Shuts down all active drivers */ @@ -117,20 +120,23 @@ public: } } - static Driver *SelectDriver(const char *name, Driver::Type type); + static void SelectDriver(const char *name, Driver::Type type); static char *GetDriversInfo(char *p, const char *last); /** * Get a nice description of the driver-class. * @return The description. */ - virtual const char *GetDescription() = 0; + const char *GetDescription() const + { + return this->description; + } /** * Create an instance of this driver-class. * @return The instance. */ - virtual Driver *CreateInstance() = 0; + virtual Driver *CreateInstance() const = 0; }; #endif /* DRIVER_H */ diff --git a/src/economy.cpp b/src/economy.cpp index e936b5678a..d78d2cccec 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -19,6 +19,7 @@ #include "network/network_func.h" #include "ai/ai.hpp" #include "aircraft.h" +#include "train.h" #include "newgrf_engine.h" #include "engine_base.h" #include "ground_vehicle.hpp" @@ -48,10 +49,13 @@ #include "cargomonitor.h" #include "goal_base.h" #include "story_base.h" +#include "linkgraph/refresh.h" #include "table/strings.h" #include "table/pricebase.h" +#include "safeguards.h" + /* Initialize the cargo payment-pool */ CargoPaymentPool _cargo_payment_pool("CargoPayment"); @@ -296,7 +300,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) /* Single player cheated to AI company. * There are no spectators in single player, so we must pick some other company. */ assert(!_networking); - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company2(_current_company, FILE_LINE); Company *c; FOR_ALL_COMPANIES(c) { if (c->index != old_owner) { @@ -304,7 +308,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) break; } } - cur_company.Restore(); + cur_company2.Restore(); assert(old_owner != _local_company); } @@ -427,11 +431,38 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) FreeUnitIDGenerator(VEH_SHIP, new_owner), FreeUnitIDGenerator(VEH_AIRCRAFT, new_owner) }; + /* Override company settings to new company defaults in case we need to convert them. + * This is required as the CmdChangeServiceInt doesn't copy the supplied value when it is non-custom + */ + if (new_owner != INVALID_OWNER) { + Company *old_company = Company::Get(old_owner); + Company *new_company = Company::Get(new_owner); + + old_company->settings.vehicle.servint_aircraft = new_company->settings.vehicle.servint_aircraft; + old_company->settings.vehicle.servint_trains = new_company->settings.vehicle.servint_trains; + old_company->settings.vehicle.servint_roadveh = new_company->settings.vehicle.servint_roadveh; + old_company->settings.vehicle.servint_ships = new_company->settings.vehicle.servint_ships; + old_company->settings.vehicle.servint_ispercent = new_company->settings.vehicle.servint_ispercent; + } + Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) { assert(new_owner != INVALID_OWNER); + /* Correct default values of interval settings while maintaining custom set ones. + * This prevents invalid values on mismatching company defaults being accepted. + */ + if (!v->ServiceIntervalIsCustom()) { + Company *new_company = Company::Get(new_owner); + + /* Technically, passing the interval is not needed as the command will query the default value itself. + * However, do not rely on that behaviour. + */ + int interval = CompanyServiceInterval(new_company, v->type); + DoCommand(v->tile, v->index, interval | (new_company->settings.vehicle.servint_ispercent << 17), DC_EXEC | DC_BANKRUPT, CMD_CHANGE_SERVICE_INT); + } + v->owner = new_owner; /* Owner changes, clear cache */ @@ -1065,9 +1096,9 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti /* Update station statistics */ if (accepted > 0) { - SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED); - SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH); - SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK); + SetBit(st->goods[cargo_type].status, GoodsEntry::GES_EVER_ACCEPTED); + SetBit(st->goods[cargo_type].status, GoodsEntry::GES_CURRENT_MONTH); + SetBit(st->goods[cargo_type].status, GoodsEntry::GES_ACCEPTED_BIGTICK); } /* Update company statistics */ @@ -1232,14 +1263,14 @@ void PrepareUnload(Vehicle *front_v) assert(CargoPayment::CanAllocateItem()); front_v->cargo_payment = new CargoPayment(front_v); - StationID next_station = front_v->GetNextStoppingStation(); + StationIDStack next_station = front_v->GetNextStoppingStation(); if (front_v->orders.list == NULL || (front_v->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { Station *st = Station::Get(front_v->last_station_visited); for (Vehicle *v = front_v; v != NULL; v = v->Next()) { const GoodsEntry *ge = &st->goods[v->cargo_type]; if (v->cargo_cap > 0 && v->cargo.TotalCount() > 0) { v->cargo.Stage( - HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE), + HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE), front_v->last_station_visited, next_station, front_v->current_order.GetUnloadType(), ge, front_v->cargo_payment); @@ -1290,66 +1321,271 @@ static uint GetLoadAmount(Vehicle *v) } /** - * Reserves cargo if the full load order and improved_load is set or if the - * current order allows autorefit. - * @param st Station where the consist is loading at the moment. - * @param u Front of the loading vehicle consist. - * @param consist_capleft If given, save free capacities after reserving there. - * @param next_station Station the vehicle will stop at next. + * Iterate the articulated parts of a vehicle, also considering the special cases of "normal" + * aircraft and double headed trains. Apply an action to each vehicle and immediately return false + * if that action does so. Otherwise return true. + * @tparam Taction Class of action to be applied. Must implement bool operator()([const] Vehicle *). + * @param v First articulated part. + * @param action Instance of Taction. + * @return false if any of the action invocations returned false, true otherwise. */ -static void ReserveConsist(Station *st, Vehicle *u, CargoArray *consist_capleft, StationID next_station) +template +bool IterateVehicleParts(Vehicle *v, Taction action) { - Vehicle *next_cargo = u; - uint32 seen_cargos = 0; - - while (next_cargo != NULL) { - if (next_cargo->cargo_cap == 0) { - /* No need to reserve for vehicles without capacity. */ - next_cargo = next_cargo->Next(); - continue; + for (Vehicle *w = v; w != NULL; + w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL) { + if (!action(w)) return false; + if (w->type == VEH_TRAIN) { + Train *train = Train::From(w); + if (train->IsMultiheaded() && !action(train->other_multiheaded_part)) return false; } + } + if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->IsNormalAircraft()) return action(v->Next()); + return true; +} - CargoID current_cargo = next_cargo->cargo_type; +/** + * Action to check if a vehicle has no stored cargo. + */ +struct IsEmptyAction +{ + /** + * Checks if the vehicle has stored cargo. + * @param v Vehicle to be checked. + * @return true if v is either empty or has only reserved cargo, false otherwise. + */ + bool operator()(const Vehicle *v) + { + return v->cargo.StoredCount() == 0; + } +}; - Vehicle *v = next_cargo; - SetBit(seen_cargos, current_cargo); - next_cargo = NULL; - for (; v != NULL; v = v->Next()) { - if (v->cargo_type != current_cargo) { - /* Save start point for next cargo type. */ - if (next_cargo == NULL && !HasBit(seen_cargos, v->cargo_type)) next_cargo = v; - continue; - } +/** + * Refit preparation action. + */ +struct PrepareRefitAction +{ + CargoArray &consist_capleft; ///< Capacities left in the consist. + uint32 &refit_mask; ///< Bitmask of possible refit cargoes. - assert(v->cargo_cap >= v->cargo.RemainingCount()); - uint cap = v->cargo_cap - v->cargo.RemainingCount(); + /** + * Create a refit preparation action. + * @param consist_capleft Capacities left in consist, to be updated here. + * @param refit_mask Refit mask to be constructed from refit information of vehicles. + */ + PrepareRefitAction(CargoArray &consist_capleft, uint32 &refit_mask) : + consist_capleft(consist_capleft), refit_mask(refit_mask) {} + + /** + * Prepares for refitting of a vehicle, subtracting its free capacity from consist_capleft and + * adding the cargoes it can refit to to the refit mask. + * @param v The vehicle to be refitted. + * @return true. + */ + bool operator()(const Vehicle *v) + { + this->consist_capleft[v->cargo_type] -= v->cargo_cap - v->cargo.ReservedCount(); + this->refit_mask |= EngInfo(v->engine_type)->refit_mask; + return true; + } +}; - /* Nothing to do if the vehicle is full */ - if (cap > 0) { - cap -= st->goods[v->cargo_type].cargo.Reserve(cap, &v->cargo, st->xy, next_station); - } +/** + * Action for returning reserved cargo. + */ +struct ReturnCargoAction +{ + Station *st; ///< Station to give the returned cargo to. + StationID next_hop; ///< Next hop the cargo should be assigned to. + + /** + * Construct a cargo return action. + * @param st Station to give the returned cargo to. + * @param next_one Next hop the cargo should be assigned to. + */ + ReturnCargoAction(Station *st, StationID next_one) : st(st), next_hop(next_one) {} + + /** + * Return all reserved cargo from a vehicle. + * @param v Vehicle to return cargo from. + * @return true. + */ + bool operator()(Vehicle *v) + { + v->cargo.Return(UINT_MAX, &this->st->goods[v->cargo_type].cargo, this->next_hop); + return true; + } +}; - if (consist_capleft != NULL) { - (*consist_capleft)[current_cargo] += cap; +/** + * Action for finalizing a refit. + */ +struct FinalizeRefitAction +{ + CargoArray &consist_capleft; ///< Capacities left in the consist. + Station *st; ///< Station to reserve cargo from. + StationIDStack &next_station; ///< Next hops to reserve cargo for. + bool do_reserve; ///< If the vehicle should reserve. + + /** + * Create a finalizing action. + * @param consist_capleft Capacities left in the consist. + * @param st Station to reserve cargo from. + * @param next_station Next hops to reserve cargo for. + * @param do_reserve If we should reserve cargo or just add up the capacities. + */ + FinalizeRefitAction(CargoArray &consist_capleft, Station *st, StationIDStack &next_station, bool do_reserve) : + consist_capleft(consist_capleft), st(st), next_station(next_station), do_reserve(do_reserve) {} + + /** + * Reserve cargo from the station and update the remaining consist capacities with the + * vehicle's remaining free capacity. + * @param v Vehicle to be finalized. + * @return true. + */ + bool operator()(Vehicle *v) + { + if (this->do_reserve) { + this->st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(), + &v->cargo, st->xy, this->next_station); + } + this->consist_capleft[v->cargo_type] += v->cargo_cap - v->cargo.RemainingCount(); + return true; + } +}; + +/** + * Refit a vehicle in a station. + * @param v Vehicle to be refitted. + * @param consist_capleft Added cargo capacities in the consist. + * @param st Station the vehicle is loading at. + * @param next_station Possible next stations the vehicle can travel to. + * @param new_cid Target cargo for refit. + */ +static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station *st, StationIDStack next_station, CargoID new_cid) +{ + Vehicle *v_start = v->GetFirstEnginePart(); + if (!IterateVehicleParts(v_start, IsEmptyAction())) return; + + Backup cur_company(_current_company, v->owner, FILE_LINE); + + uint32 refit_mask = v->GetEngine()->info.refit_mask; + + /* Remove old capacity from consist capacity and collect refit mask. */ + IterateVehicleParts(v_start, PrepareRefitAction(consist_capleft, refit_mask)); + + bool is_auto_refit = new_cid == CT_AUTO_REFIT; + if (is_auto_refit) { + /* Get a refittable cargo type with waiting cargo for next_station or INVALID_STATION. */ + CargoID cid; + new_cid = v_start->cargo_type; + FOR_EACH_SET_CARGO_ID(cid, refit_mask) { + if (st->goods[cid].cargo.HasCargoFor(next_station)) { + /* Try to find out if auto-refitting would succeed. In case the refit is allowed, + * the returned refit capacity will be greater than zero. */ + DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. + /* Try to balance different loadable cargoes between parts of the consist, so that + * all of them can be loaded. Avoid a situation where all vehicles suddenly switch + * to the first loadable cargo for which there is only one packet. If the capacities + * are equal refit to the cargo of which most is available. This is important for + * consists of only a single vehicle as those will generally have a consist_capleft + * of 0 for all cargoes. */ + if (_returned_refit_capacity > 0 && (consist_capleft[cid] < consist_capleft[new_cid] || + (consist_capleft[cid] == consist_capleft[new_cid] && + st->goods[cid].cargo.AvailableCount() > st->goods[new_cid].cargo.AvailableCount()))) { + new_cid = cid; + } } } } + + /* Refit if given a valid cargo. */ + if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) { + /* INVALID_STATION because in the DT_MANUAL case that's correct and in the DT_(A)SYMMETRIC + * cases the next hop of the vehicle doesn't really tell us anything if the cargo had been + * "via any station" before reserving. We rather produce some more "any station" cargo than + * misrouting it. */ + IterateVehicleParts(v_start, ReturnCargoAction(st, INVALID_STATION)); + CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. + if (cost.Succeeded()) v->First()->profit_this_year -= cost.GetCost() << 8; + } + + /* Add new capacity to consist capacity and reserve cargo */ + IterateVehicleParts(v_start, FinalizeRefitAction(consist_capleft, st, next_station, + is_auto_refit || (v->First()->current_order.GetLoadType() & OLFB_FULL_LOAD) != 0)); + + cur_company.Restore(); } +struct ReserveCargoAction { + Station *st; + StationIDStack *next_station; + + ReserveCargoAction(Station *st, StationIDStack *next_station) : + st(st), next_station(next_station) {} + + bool operator()(Vehicle *v) + { + if (v->cargo_cap > v->cargo.RemainingCount()) { + st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(), + &v->cargo, st->xy, *next_station); + } + + return true; + } + +}; + /** - * Checks whether an articulated vehicle is empty. - * @param v Vehicle - * @return true if all parts are empty. + * Reserves cargo if the full load order and improved_load is set or if the + * current order allows autorefit. + * @param st Station where the consist is loading at the moment. + * @param u Front of the loading vehicle consist. + * @param consist_capleft If given, save free capacities after reserving there. + * @param next_station Station(s) the vehicle will stop at next. */ -static bool IsArticulatedVehicleEmpty(Vehicle *v) +static void ReserveConsist(Station *st, Vehicle *u, CargoArray *consist_capleft, StationIDStack *next_station) { - v = v->GetFirstEnginePart(); - - for (; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) { - if (v->cargo.TotalCount() != 0) return false; + /* If there is a cargo payment not all vehicles of the consist have tried to do the refit. + * In that case, only reserve if it's a fixed refit and the equivalent of "articulated chain" + * a vehicle belongs to already has the right cargo. */ + bool must_reserve = !u->current_order.IsRefit() || u->cargo_payment == NULL; + for (Vehicle *v = u; v != NULL; v = v->Next()) { + assert(v->cargo_cap >= v->cargo.RemainingCount()); + + /* Exclude various ways in which the vehicle might not be the head of an equivalent of + * "articulated chain". Also don't do the reservation if the vehicle is going to refit + * to a different cargo and hasn't tried to do so, yet. */ + if (!v->IsArticulatedPart() && + (v->type != VEH_TRAIN || !Train::From(v)->IsRearDualheaded()) && + (v->type != VEH_AIRCRAFT || Aircraft::From(v)->IsNormalAircraft()) && + (must_reserve || u->current_order.GetRefitCargo() == v->cargo_type)) { + IterateVehicleParts(v, ReserveCargoAction(st, next_station)); + } + if (consist_capleft == NULL || v->cargo_cap == 0) continue; + (*consist_capleft)[v->cargo_type] += v->cargo_cap - v->cargo.RemainingCount(); } +} - return true; +/** + * Update the vehicle's load_unload_ticks, the time it will wait until it tries to load or unload + * again. Adjust for overhang of trains and set it at least to 1. + * @param front The vehicle to be updated. + * @param st The station the vehicle is loading at. + * @param ticks The time it would normally wait, based on cargo loaded and unloaded. + */ +static void UpdateLoadUnloadTicks(Vehicle *front, const Station *st, int ticks) +{ + if (front->type == VEH_TRAIN) { + /* Each platform tile is worth 2 rail vehicles. */ + int overhang = front->GetGroundVehicleCache()->cached_total_length - st->GetPlatformLength(front->tile) * TILE_SIZE; + if (overhang > 0) { + ticks <<= 1; + ticks += (overhang * ticks) / 8; + } + } + /* Always wait at least 1, otherwise we'll wait 'infinitively' long. */ + front->load_unload_ticks = max(1, ticks); } /** @@ -1363,14 +1599,14 @@ static void LoadUnloadVehicle(Vehicle *front) StationID last_visited = front->last_station_visited; Station *st = Station::Get(last_visited); - StationID next_station = front->GetNextStoppingStation(); + StationIDStack next_station = front->GetNextStoppingStation(); bool use_autorefit = front->current_order.IsRefit() && front->current_order.GetRefitCargo() == CT_AUTO_REFIT; CargoArray consist_capleft; - if (_settings_game.order.improved_load && - ((front->current_order.GetLoadType() & OLFB_FULL_LOAD) != 0 || use_autorefit)) { + if (_settings_game.order.improved_load && use_autorefit ? + front->cargo_payment == NULL : (front->current_order.GetLoadType() & OLFB_FULL_LOAD) != 0) { ReserveConsist(st, front, (use_autorefit && front->load_unload_ticks != 0) ? &consist_capleft : NULL, - next_station); + &next_station); } /* We have not waited enough time till the next round of loading/unloading */ @@ -1384,7 +1620,7 @@ static void LoadUnloadVehicle(Vehicle *front) return; } - int unloading_time = 0; + int new_load_unload_ticks = 0; bool dirty_vehicle = false; bool dirty_station = false; @@ -1417,12 +1653,12 @@ static void LoadUnloadVehicle(Vehicle *front) payment->SetCargo(v->cargo_type); - if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) { + if (!HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) { /* The station does not accept our goods anymore. */ if (front->current_order.GetUnloadType() & (OUFB_TRANSFER | OUFB_UNLOAD)) { /* Transfer instead of delivering. */ - v->cargo.Reassign(v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER), - VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER); + v->cargo.Reassign( + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER), INVALID_STATION); } else { uint new_remaining = v->cargo.RemainingCount() + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER); if (v->cargo_cap < new_remaining) { @@ -1431,8 +1667,8 @@ static void LoadUnloadVehicle(Vehicle *front) } /* Keep instead of delivering. This may lead to no cargo being unloaded, so ...*/ - v->cargo.Reassign(v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER), - VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_KEEP); + v->cargo.Reassign( + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER)); /* ... say we unloaded something, otherwise we'll think we didn't unload * something and we didn't load something, so we must be finished @@ -1442,14 +1678,24 @@ static void LoadUnloadVehicle(Vehicle *front) } } - /* Mark the station dirty if we transfer, but not if we only deliver. */ - dirty_station = v->cargo.ActionCount(VehicleCargoList::MTA_TRANSFER) > 0; + if (v->cargo.ActionCount(VehicleCargoList::MTA_TRANSFER) > 0) { + /* Mark the station dirty if we transfer, but not if we only deliver. */ + dirty_station = true; + + if (!ge->HasRating()) { + /* Upon transfering cargo, make sure the station has a rating. Fake a pickup for the + * first unload to prevent the cargo from quickly decaying after the initial drop. */ + ge->time_since_pickup = 0; + SetBit(ge->status, GoodsEntry::GES_RATING); + } + } + amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment); remaining = v->cargo.UnloadCount() > 0; if (amount_unloaded > 0) { dirty_vehicle = true; anything_unloaded = true; - unloading_time += amount_unloaded; + new_load_unload_ticks += amount_unloaded; /* Deliver goods to the station */ st->time_since_unload = 0; @@ -1469,65 +1715,9 @@ static void LoadUnloadVehicle(Vehicle *front) if (front->current_order.GetLoadType() & OLFB_NO_LOAD || HasBit(front->vehicle_flags, VF_STOP_LOADING)) continue; /* This order has a refit, if this is the first vehicle part carrying cargo and the whole vehicle is empty, try refitting. */ - if (front->current_order.IsRefit() && artic_part == 1 && IsArticulatedVehicleEmpty(v) && - (v->type != VEH_AIRCRAFT || (Aircraft::From(v)->IsNormalAircraft() && v->Next()->cargo.TotalCount() == 0))) { - Vehicle *v_start = v->GetFirstEnginePart(); - CargoID new_cid = front->current_order.GetRefitCargo(); - - /* Remove old capacity from consist capacity */ - consist_capleft[v_start->cargo_type] -= v_start->cargo_cap; - for (Vehicle *w = v_start; w->HasArticulatedPart(); ) { - w = w->GetNextArticulatedPart(); - consist_capleft[w->cargo_type] -= w->cargo_cap; - } - - Backup cur_company(_current_company, front->owner, FILE_LINE); - - /* Check if all articulated parts are empty and collect refit mask. */ - uint32 refit_mask = v->GetEngine()->info.refit_mask; - Vehicle *w = v_start; - while (w->HasArticulatedPart()) { - w = w->GetNextArticulatedPart(); - if (w->cargo.TotalCount() > 0) new_cid = CT_NO_REFIT; - refit_mask |= EngInfo(w->engine_type)->refit_mask; - } - - if (new_cid == CT_AUTO_REFIT) { - /* Get a refittable cargo type with waiting cargo for next_station or INVALID_STATION. */ - CargoID cid; - new_cid = v_start->cargo_type; - FOR_EACH_SET_CARGO_ID(cid, refit_mask) { - if (st->goods[cid].cargo.HasCargoFor(next_station) || - st->goods[cid].cargo.HasCargoFor(INVALID_STATION)) { - /* Try to find out if auto-refitting would succeed. In case the refit is allowed, - * the returned refit capacity will be greater than zero. */ - DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. - /* Try to balance different loadable cargoes between parts of the consist, so that - * all of them can be loaded. Avoid a situation where all vehicles suddenly switch - * to the first loadable cargo for which there is only one packet. */ - if (_returned_refit_capacity > 0 && consist_capleft[cid] < consist_capleft[new_cid]) { - new_cid = cid; - } - } - } - } - - /* Refit if given a valid cargo. */ - if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) { - CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. - if (cost.Succeeded()) front->profit_this_year -= cost.GetCost() << 8; - ge = &st->goods[v->cargo_type]; - } - - /* Add new capacity to consist capacity and reserve cargo */ - w = v_start; - do { - st->goods[w->cargo_type].cargo.Reserve(w->cargo_cap, &w->cargo, st->xy, next_station); - consist_capleft[w->cargo_type] += w->cargo_cap - w->cargo.RemainingCount(); - w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL; - } while (w != NULL); - - cur_company.Restore(); + if (front->current_order.IsRefit() && artic_part == 1) { + HandleStationRefit(v, consist_capleft, st, next_station, front->current_order.GetRefitCargo()); + ge = &st->goods[v->cargo_type]; } /* As we're loading here the following link can carry the full capacity of the vehicle. */ @@ -1599,7 +1789,7 @@ static void LoadUnloadVehicle(Vehicle *front) AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type); } - unloading_time += loaded; + new_load_unload_ticks += loaded; dirty_vehicle = dirty_station = true; } @@ -1631,15 +1821,18 @@ static void LoadUnloadVehicle(Vehicle *front) * on the vehicle type - the values here are those found in TTDPatch */ const uint gradual_loading_wait_time[] = { 40, 20, 10, 20 }; - unloading_time = gradual_loading_wait_time[front->type]; + new_load_unload_ticks = gradual_loading_wait_time[front->type]; } /* We loaded less cargo than possible for all cargo types and it's not full * load and we're not supposed to wait any longer: stop loading. */ if (!anything_unloaded && full_load_amount == 0 && reservation_left == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) && - front->current_order_time >= (uint)max(front->current_order.wait_time - front->lateness_counter, 0)) { + front->current_order_time >= (uint)max(front->current_order.GetTimetabledWait() - front->lateness_counter, 0)) { SetBit(front->vehicle_flags, VF_STOP_LOADING); } + + UpdateLoadUnloadTicks(front, st, new_load_unload_ticks); } else { + UpdateLoadUnloadTicks(front, st, 20); // We need the ticks for link refreshing. bool finished_loading = true; if (front->current_order.GetLoadType() & OLFB_FULL_LOAD) { if (front->current_order.GetLoadType() == OLF_FULL_LOAD_ANY) { @@ -1658,22 +1851,12 @@ static void LoadUnloadVehicle(Vehicle *front) * along them. Otherwise the vehicle could wait for cargo * indefinitely if it hasn't visited the other links yet, or if the * links die while it's loading. */ - if (!finished_loading) front->RefreshNextHopsStats(); + if (!finished_loading) LinkRefresher::Run(front, true, true); } - unloading_time = 20; SB(front->vehicle_flags, VF_LOADING_FINISHED, 1, finished_loading); } - if (front->type == VEH_TRAIN) { - /* Each platform tile is worth 2 rail vehicles. */ - int overhang = front->GetGroundVehicleCache()->cached_total_length - st->GetPlatformLength(front->tile) * TILE_SIZE; - if (overhang > 0) { - unloading_time <<= 1; - unloading_time += (overhang * unloading_time) / 8; - } - } - /* Calculate the loading indicator fill percent and display * In the Game Menu do not display indicators * If _settings_client.gui.loading_indicators == 2, show indicators (bool can be promoted to int as 0 or 1 - results in 2 > 0,1 ) @@ -1690,9 +1873,6 @@ static void LoadUnloadVehicle(Vehicle *front) } } - /* Always wait at least 1, otherwise we'll wait 'infinitively' long. */ - front->load_unload_ticks = max(1, unloading_time); - if (completely_emptied) { /* Make sure the vehicle is marked dirty, since we need to update the NewGRF * properties such as weight, power and TE whenever the trigger runs. */ @@ -1708,6 +1888,7 @@ static void LoadUnloadVehicle(Vehicle *front) if (dirty_station) { st->MarkTilesDirty(true); SetWindowDirty(WC_STATION_VIEW, last_visited); + InvalidateWindowData(WC_STATION_LIST, last_visited); } } diff --git a/src/economy_type.h b/src/economy_type.h index a15f4b5e3a..7e7a572413 100644 --- a/src/economy_type.h +++ b/src/economy_type.h @@ -165,6 +165,10 @@ enum ExpensesType { INVALID_EXPENSES = 0xFF, ///< Invalid expense type. }; +/** Define basic enum properties for ExpensesType */ +template <> struct EnumPropsT : MakeEnumPropsT {}; +typedef TinyEnumT ExpensesTypeByte; ///< typedefing-enumification of ExpensesType + /** * Categories of a price bases. */ diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp index a196c52d64..209b78d2e9 100644 --- a/src/effectvehicle.cpp +++ b/src/effectvehicle.cpp @@ -19,6 +19,8 @@ #include "effectvehicle_func.h" #include "effectvehicle_base.h" +#include "safeguards.h" + static void ChimneySmokeInit(EffectVehicle *v) { @@ -44,7 +46,7 @@ static bool ChimneySmokeTick(EffectVehicle *v) v->cur_image = SPR_CHIMNEY_SMOKE_0; } v->progress = 7; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } return true; @@ -77,7 +79,7 @@ static bool SteamSmokeTick(EffectVehicle *v) moved = true; } - if (moved) VehicleUpdatePositionAndViewport(v); + if (moved) v->UpdatePositionAndViewport(); return true; } @@ -94,11 +96,11 @@ static bool DieselSmokeTick(EffectVehicle *v) if ((v->progress & 3) == 0) { v->z_pos++; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } else if ((v->progress & 7) == 1) { if (v->cur_image != SPR_DIESEL_SMOKE_5) { v->cur_image++; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } else { delete v; return false; @@ -122,7 +124,7 @@ static bool ElectricSparkTick(EffectVehicle *v) v->progress = 0; if (v->cur_image != SPR_ELECTRIC_SPARK_5) { v->cur_image++; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } else { delete v; return false; @@ -159,7 +161,7 @@ static bool SmokeTick(EffectVehicle *v) moved = true; } - if (moved) VehicleUpdatePositionAndViewport(v); + if (moved) v->UpdatePositionAndViewport(); return true; } @@ -176,7 +178,7 @@ static bool ExplosionLargeTick(EffectVehicle *v) if ((v->progress & 3) == 0) { if (v->cur_image != SPR_EXPLOSION_LARGE_F) { v->cur_image++; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } else { delete v; return false; @@ -201,7 +203,7 @@ static bool BreakdownSmokeTick(EffectVehicle *v) } else { v->cur_image = SPR_BREAKDOWN_SMOKE_0; } - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } v->animation_state--; @@ -225,7 +227,7 @@ static bool ExplosionSmallTick(EffectVehicle *v) if ((v->progress & 3) == 0) { if (v->cur_image != SPR_EXPLOSION_SMALL_B) { v->cur_image++; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } else { delete v; return false; @@ -302,7 +304,7 @@ static bool BulldozerTick(EffectVehicle *v) return false; } } - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); } return true; @@ -475,7 +477,7 @@ static bool BubbleTick(EffectVehicle *v) if (v->spritenum == 0) { v->cur_image++; if (v->cur_image < SPR_BUBBLE_GENERATE_3) { - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); return true; } if (v->animation_substate != 0) { @@ -521,7 +523,7 @@ static bool BubbleTick(EffectVehicle *v) v->z_pos += b->z; v->cur_image = SPR_BUBBLE_0 + b->image; - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); return true; } @@ -605,7 +607,7 @@ EffectVehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicleType type) _effect_init_procs[type](v); - VehicleUpdatePositionAndViewport(v); + v->UpdatePositionAndViewport(); return v; } diff --git a/src/elrail.cpp b/src/elrail.cpp index 80f095d809..1927be03e5 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -67,6 +67,8 @@ #include "table/elrail_data.h" +#include "safeguards.h" + /** * Get the tile location group of a tile. * @param t The tile to get the tile location group of. @@ -405,7 +407,7 @@ static void DrawCatenaryRailway(const TileInfo *ti) * Remove those (simply by ANDing with allowed, since these markers are never allowed) */ if ((PPPallowed[i] & PPPpreferred[i]) != 0) PPPallowed[i] &= PPPpreferred[i]; - if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile)) { + if (IsBridgeAbove(ti->tile)) { Track bridgetrack = GetBridgeAxis(ti->tile) == AXIS_X ? TRACK_X : TRACK_Y; int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); @@ -444,7 +446,7 @@ static void DrawCatenaryRailway(const TileInfo *ti) if (IsTunnelTile(ti->tile)) return; /* Don't draw a wire under a low bridge */ - if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_BRIDGES)) { + if (IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_BRIDGES)) { int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); if (height <= GetTileMaxZ(ti->tile) + 1) return; @@ -627,7 +629,7 @@ bool SettingsDisableElrail(int32 p1) FOR_ALL_TRAINS(t) { /* power and acceleration is cached only for front engines */ if (t->IsFrontEngine()) { - t->ConsistChanged(true); + t->ConsistChanged(CCF_TRACK); } } diff --git a/src/engine.cpp b/src/engine.cpp index 700475c1b4..f8fc0ee6aa 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -35,6 +35,8 @@ #include "table/strings.h" #include "table/engines.h" +#include "safeguards.h" + EnginePool _engine_pool("Engine"); INSTANTIATE_POOL_METHODS(Engine) @@ -653,6 +655,7 @@ void StartupOneEngine(Engine *e, Date aging_date) e->age = 0; e->flags = 0; e->company_avail = 0; + e->company_hidden = 0; /* Don't randomise the start-date in the first two years after gamestart to ensure availability * of engines in early starting games. @@ -851,6 +854,41 @@ void EnginesDailyLoop() } } +/** + * Clear the 'hidden' flag for all engines of a new company. + * @param cid Company being created. + */ +void ClearEnginesHiddenFlagOfCompany(CompanyID cid) +{ + Engine *e; + FOR_ALL_ENGINES(e) { + SB(e->company_hidden, cid, 1, 0); + } +} + +/** + * Set the visibility of an engine. + * @param tile Unused. + * @param flags Operation to perform. + * @param p1 Unused. + * @param p2 Bit 31: 0=visible, 1=hidden, other bits for the #EngineID. + * @param text Unused. + * @return The cost of this operation or an error. + */ +CommandCost CmdSetVehicleVisibility(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + Engine *e = Engine::GetIfValid(GB(p2, 0, 31)); + if (e == NULL || _current_company >= MAX_COMPANIES) return CMD_ERROR; + if ((e->flags & ENGINE_AVAILABLE) == 0 || !HasBit(e->company_avail, _current_company)) return CMD_ERROR; + + if ((flags & DC_EXEC) != 0) { + SB(e->company_hidden, _current_company, 1, GB(p2, 31, 1)); + AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type); + } + + return CommandCost(); +} + /** * Accept an engine prototype. XXX - it is possible that the top-company * changes while you are waiting to accept the offer? Then it becomes invalid @@ -1025,7 +1063,7 @@ CommandCost CmdRenameEngine(TileIndex tile, DoCommandFlag flags, uint32 p1, uint if (reset) { e->name = NULL; } else { - e->name = strdup(text); + e->name = stredup(text); } MarkWholeScreenDirty(); diff --git a/src/engine_base.h b/src/engine_base.h index 99a15aaea0..6a2e6816c3 100644 --- a/src/engine_base.h +++ b/src/engine_base.h @@ -37,6 +37,7 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { CompanyByte preview_company;///< Company which is currently being offered a preview \c INVALID_COMPANY means no company. byte preview_wait; ///< Daily countdown timer for timeout of offering the engine to the #preview_company company. CompanyMask company_avail; ///< Bit for each company whether the engine is available for that company. + CompanyMask company_hidden; ///< Bit for each company whether the engine is normally hidden in the build gui for that company. uint8 original_image_index; ///< Original vehicle image index, thus the image index of the overridden vehicle VehicleType type; ///< %Vehicle type, ie #VEH_ROAD, #VEH_TRAIN, etc. @@ -111,6 +112,16 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { Date GetLifeLengthInDays() const; uint16 GetRange() const; + /** + * Check whether the engine is hidden in the GUI for the given company. + * @param c Company to check. + * @return \c true iff the engine is hidden in the GUI for the given company. + */ + inline bool IsHidden(CompanyByte c) const + { + return c < MAX_COMPANIES && HasBit(this->company_hidden, c); + } + /** * Check if the engine is a ground vehicle. * @return True iff the engine is a train or a road vehicle. diff --git a/src/engine_func.h b/src/engine_func.h index faa8e8e024..6c3fb14ff2 100644 --- a/src/engine_func.h +++ b/src/engine_func.h @@ -26,6 +26,7 @@ extern const uint8 _engine_offsets[4]; bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company); bool IsEngineRefittable(EngineID engine); +void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, uint32 *refits); void SetYearEngineAgingStops(); void StartupOneEngine(Engine *e, Date aging_date); diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index 6ee47692d4..899543c189 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -20,11 +20,17 @@ #include "company_func.h" #include "rail.h" #include "settings_type.h" +#include "train.h" +#include "roadveh.h" +#include "ship.h" +#include "aircraft.h" #include "widgets/engine_widget.h" #include "table/strings.h" +#include "safeguards.h" + /** * Return the category of an engine. * @param engine Engine to examine. @@ -59,7 +65,7 @@ static const NWidgetPart _nested_engine_preview_widgets[] = { }; struct EnginePreviewWindow : Window { - static const int VEHICLE_SPACE = 40; // The space to show the vehicle image + int vehicle_space; // The space to show the vehicle image EnginePreviewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { @@ -73,9 +79,25 @@ struct EnginePreviewWindow : Window { { if (widget != WID_EP_QUESTION) return; + /* Get size of engine sprite, on loan from depot_gui.cpp */ EngineID engine = this->window_number; + EngineImageType image_type = EIT_PURCHASE; + uint x, y; + int x_offs, y_offs; + + const Engine *e = Engine::Get(engine); + switch (e->type) { + default: NOT_REACHED(); + case VEH_TRAIN: GetTrainSpriteSize( engine, x, y, x_offs, y_offs, image_type); break; + case VEH_ROAD: GetRoadVehSpriteSize( engine, x, y, x_offs, y_offs, image_type); break; + case VEH_SHIP: GetShipSpriteSize( engine, x, y, x_offs, y_offs, image_type); break; + case VEH_AIRCRAFT: GetAircraftSpriteSize(engine, x, y, x_offs, y_offs, image_type); break; + } + this->vehicle_space = max(40, y - y_offs); + + size->width = max(size->width, x - x_offs); SetDParam(0, GetEngineCategoryName(engine)); - size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WD_PAR_VSEP_WIDE + FONT_HEIGHT_NORMAL + VEHICLE_SPACE; + size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WD_PAR_VSEP_WIDE + FONT_HEIGHT_NORMAL + this->vehicle_space; SetDParam(0, engine); size->height += GetStringHeight(GetEngineInfoString(engine), size->width); } @@ -93,9 +115,9 @@ struct EnginePreviewWindow : Window { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_ENGINE_NAME, TC_BLACK, SA_HOR_CENTER); y += FONT_HEIGHT_NORMAL; - DrawVehicleEngine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, this->width >> 1, y + VEHICLE_SPACE / 2, engine, GetEnginePalette(engine, _local_company), EIT_PREVIEW); + DrawVehicleEngine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, this->width >> 1, y + this->vehicle_space / 2, engine, GetEnginePalette(engine, _local_company), EIT_PREVIEW); - y += VEHICLE_SPACE; + y += this->vehicle_space; DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, r.bottom, GetEngineInfoString(engine), TC_FROMSTRING, SA_CENTER); } @@ -140,14 +162,8 @@ void ShowEnginePreviewWindow(EngineID engine) */ uint GetTotalCapacityOfArticulatedParts(EngineID engine) { - uint total = 0; - CargoArray cap = GetCapacityOfArticulatedParts(engine); - for (CargoID c = 0; c < NUM_CARGO; c++) { - total += cap[c]; - } - - return total; + return cap.GetSum(); } static StringID GetTrainEngineInfoString(const Engine *e) diff --git a/src/engine_gui.h b/src/engine_gui.h index f426413d9c..fc0b7ad7d9 100644 --- a/src/engine_gui.h +++ b/src/engine_gui.h @@ -32,4 +32,14 @@ void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID eng void DrawShipEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type); void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type); +extern bool _engine_sort_direction; +extern byte _engine_sort_last_criteria[]; +extern bool _engine_sort_last_order[]; +extern bool _engine_sort_show_hidden_engines[]; +extern const StringID _engine_sort_listing[][12]; +extern EngList_SortTypeFunction * const _engine_sort_functions[][11]; + +uint GetEngineListHeight(VehicleType type); +void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selected, int button); + #endif /* ENGINE_GUI_H */ diff --git a/src/error.h b/src/error.h index 4a78a07aab..597b62efbe 100644 --- a/src/error.h +++ b/src/error.h @@ -16,6 +16,8 @@ #include "company_type.h" #include "core/geometry_type.hpp" +struct GRFFile; + /** Message severity/type */ enum WarningLevel { WL_INFO, ///< Used for DoCommand-like (and some non-fatal AI GUI) errors/information @@ -30,6 +32,7 @@ protected: uint duration; ///< Length of display of the message. 0 means forever, uint64 decode_params[20]; ///< Parameters of the message strings. const char *strings[20]; ///< Copies of raw strings that were used. + const GRFFile *textref_stack_grffile; ///< NewGRF that filled the #TextRefStack for the error message. uint textref_stack_size; ///< Number of uint32 values to put on the #TextRefStack for the error message. uint32 textref_stack[16]; ///< Values to put on the #TextRefStack for the error message. StringID summary_msg; ///< General error message showed in first line. Must be valid. @@ -40,7 +43,7 @@ protected: public: ErrorMessageData(const ErrorMessageData &data); ~ErrorMessageData(); - ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration = 0, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); + ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration = 0, int x = 0, int y = 0, const GRFFile *textref_stack_grffile = NULL, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); /** Check whether error window shall display a company manager face */ bool HasFace() const { return face != INVALID_COMPANY; } @@ -53,7 +56,7 @@ public: void ScheduleErrorMessage(const ErrorMessageData &data); -void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); +void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, const GRFFile *textref_stack_grffile = NULL, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); void ClearErrorMessages(); void ShowFirstError(); void UnshowCriticalError(); diff --git a/src/error_gui.cpp b/src/error_gui.cpp index b498cff63e..c8c603afb3 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" #include +#include "safeguards.h" + static const NWidgetPart _nested_errmsg_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED), @@ -75,7 +77,7 @@ ErrorMessageData::ErrorMessageData(const ErrorMessageData &data) *this = data; for (size_t i = 0; i < lengthof(this->strings); i++) { if (this->strings[i] != NULL) { - this->strings[i] = strdup(this->strings[i]); + this->strings[i] = stredup(this->strings[i]); this->decode_params[i] = (size_t)this->strings[i]; } } @@ -94,11 +96,13 @@ ErrorMessageData::~ErrorMessageData() * @param duration The amount of time to show this error message. * @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. + * @param textref_stack_grffile NewGRF that provides the #TextRefStack for the error message. * @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used. * @param textref_stack Values to put on the #TextRefStack. */ -ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, uint textref_stack_size, const uint32 *textref_stack) : +ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, const GRFFile *textref_stack_grffile, uint textref_stack_size, const uint32 *textref_stack) : duration(duration), + textref_stack_grffile(textref_stack_grffile), textref_stack_size(textref_stack_size), summary_msg(summary_msg), detailed_msg(detailed_msg), @@ -126,7 +130,7 @@ void ErrorMessageData::CopyOutDParams() memset(this->strings, 0, sizeof(this->strings)); /* Get parameters using type information */ - if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); + if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); CopyOutDParam(this->decode_params, this->strings, this->detailed_msg == INVALID_STRING_ID ? this->summary_msg : this->detailed_msg, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StopTextRefStackUsage(); @@ -154,7 +158,7 @@ void ErrorMessageData::SetDParam(uint n, uint64 v) void ErrorMessageData::SetDParamStr(uint n, const char *str) { free(this->strings[n]); - this->strings[n] = strdup(str); + this->strings[n] = stredup(str); } /** Define a queue with errors. */ @@ -178,21 +182,30 @@ public: virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { - if (widget != WID_EM_MESSAGE) return; - - CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); - if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); + switch (widget) { + case WID_EM_MESSAGE: { + CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); + if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); - int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT); - this->height_summary = GetStringHeight(this->summary_msg, text_width); - this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, text_width); + int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT); + this->height_summary = GetStringHeight(this->summary_msg, text_width); + this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, text_width); - if (this->textref_stack_size > 0) StopTextRefStackUsage(); + if (this->textref_stack_size > 0) StopTextRefStackUsage(); - uint panel_height = WD_FRAMERECT_TOP + this->height_summary + WD_FRAMERECT_BOTTOM; - if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WD_PAR_VSEP_WIDE; + uint panel_height = WD_FRAMERECT_TOP + this->height_summary + WD_FRAMERECT_BOTTOM; + if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WD_PAR_VSEP_WIDE; - size->height = max(size->height, panel_height); + size->height = max(size->height, panel_height); + break; + } + case WID_EM_FACE: { + Dimension face_size = GetSpriteSize(SPR_GRADIENT); + size->width = max(size->width, face_size.width); + size->height = max(size->height, face_size.height); + break; + } + } } virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) @@ -253,7 +266,7 @@ public: case WID_EM_MESSAGE: CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); - if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); + if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); if (this->detailed_msg == INVALID_STRING_ID) { DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, @@ -358,19 +371,20 @@ void UnshowCriticalError() * @param wl Message severity. * @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. + * @param textref_stack_grffile NewGRF providing the #TextRefStack for the error message. * @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used. * @param textref_stack Values to put on the #TextRefStack. */ -void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x, int y, uint textref_stack_size, const uint32 *textref_stack) +void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x, int y, const GRFFile *textref_stack_grffile, uint textref_stack_size, const uint32 *textref_stack) { - assert(textref_stack_size == 0 || textref_stack != NULL); + assert(textref_stack_size == 0 || (textref_stack_grffile != NULL && textref_stack != NULL)); if (summary_msg == STR_NULL) summary_msg = STR_EMPTY; if (wl != WL_INFO) { /* Print message to console */ char buf[DRAW_STRING_BUFFER]; - if (textref_stack_size > 0) StartTextRefStackUsage(textref_stack_size, textref_stack); + if (textref_stack_size > 0) StartTextRefStackUsage(textref_stack_grffile, textref_stack_size, textref_stack); char *b = GetString(buf, summary_msg, lastof(buf)); if (detailed_msg != INVALID_STRING_ID) { @@ -390,7 +404,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel if (_settings_client.gui.errmsg_duration == 0 && !no_timeout) return; - ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_size, textref_stack); + ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_grffile, textref_stack_size, textref_stack); data.CopyOutDParams(); ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); diff --git a/src/fileio.cpp b/src/fileio.cpp index 8105e4ad0c..a72950bc73 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -28,6 +28,12 @@ #include #include +#ifdef WITH_XDG_BASEDIR +#include "basedir.h" +#endif + +#include "safeguards.h" + /** Size of the #Fio data buffer. */ #define FIO_BUFFER_SIZE 512 @@ -84,7 +90,9 @@ void FioSeekTo(size_t pos, int mode) if (mode == SEEK_CUR) pos += FioGetPos(); _fio.buffer = _fio.buffer_end = _fio.buffer_start + FIO_BUFFER_SIZE; _fio.pos = pos; - fseek(_fio.cur_fh, _fio.pos, SEEK_SET); + if (fseek(_fio.cur_fh, _fio.pos, SEEK_SET) < 0) { + DEBUG(misc, 0, "Seeking in %s failed", _fio.filename); + } } #if defined(LIMITED_FDS) @@ -248,7 +256,8 @@ void FioOpenFile(int slot, const char *filename, Subdirectory subdir) #endif /* LIMITED_FDS */ f = FioFOpenFile(filename, "rb", subdir); if (f == NULL) usererror("Cannot open file '%s'", filename); - uint32 pos = ftell(f); + long pos = ftell(f); + if (pos < 0) usererror("Cannot read file '%s'", filename); FioCloseFile(slot); // if file was opened before, close it _fio.handles[slot] = f; @@ -256,7 +265,7 @@ void FioOpenFile(int slot, const char *filename, Subdirectory subdir) /* Store the filename without path and extension */ const char *t = strrchr(filename, PATHSEPCHAR); - _fio.shortnames[slot] = strdup(t == NULL ? filename : t); + _fio.shortnames[slot] = stredup(t == NULL ? filename : t); char *t2 = strrchr(_fio.shortnames[slot], '.'); if (t2 != NULL) *t2 = '\0'; strtolower(_fio.shortnames[slot]); @@ -265,7 +274,7 @@ void FioOpenFile(int slot, const char *filename, Subdirectory subdir) _fio.usage_count[slot] = 0; _fio.open_handles++; #endif /* LIMITED_FDS */ - FioSeekToFile(slot, pos); + FioSeekToFile(slot, (uint32)pos); } static const char * const _subdirs[] = { @@ -335,30 +344,30 @@ void FioFCloseFile(FILE *f) fclose(f); } -char *FioGetFullPath(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir, const char *filename) +char *FioGetFullPath(char *buf, const char *last, Searchpath sp, Subdirectory subdir, const char *filename) { assert(subdir < NUM_SUBDIRS); assert(sp < NUM_SEARCHPATHS); - snprintf(buf, buflen, "%s%s%s", _searchpaths[sp], _subdirs[subdir], filename); + seprintf(buf, last, "%s%s%s", _searchpaths[sp], _subdirs[subdir], filename); return buf; } /** * Find a path to the filename in one of the search directories. * @param buf [out] Destination buffer for the path. - * @param buflen Length of the destination buffer. + * @param last End of the destination buffer. * @param subdir Subdirectory to try. * @param filename Filename to look for. * @return \a buf containing the path if the path was found, else \c NULL. */ -char *FioFindFullPath(char *buf, size_t buflen, Subdirectory subdir, const char *filename) +char *FioFindFullPath(char *buf, const char *last, Subdirectory subdir, const char *filename) { Searchpath sp; assert(subdir < NUM_SUBDIRS); FOR_ALL_SEARCHPATHS(sp) { - FioGetFullPath(buf, buflen, sp, subdir, filename); + FioGetFullPath(buf, last, sp, subdir, filename); if (FileExists(buf)) return buf; #if !defined(WIN32) /* Be, as opening files, aware that sometimes the filename @@ -371,27 +380,27 @@ char *FioFindFullPath(char *buf, size_t buflen, Subdirectory subdir, const char return NULL; } -char *FioAppendDirectory(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir) +char *FioAppendDirectory(char *buf, const char *last, Searchpath sp, Subdirectory subdir) { assert(subdir < NUM_SUBDIRS); assert(sp < NUM_SEARCHPATHS); - snprintf(buf, buflen, "%s%s", _searchpaths[sp], _subdirs[subdir]); + seprintf(buf, last, "%s%s", _searchpaths[sp], _subdirs[subdir]); return buf; } -char *FioGetDirectory(char *buf, size_t buflen, Subdirectory subdir) +char *FioGetDirectory(char *buf, const char *last, Subdirectory subdir) { Searchpath sp; /* Find and return the first valid directory */ FOR_ALL_SEARCHPATHS(sp) { - char *ret = FioAppendDirectory(buf, buflen, sp, subdir); + char *ret = FioAppendDirectory(buf, last, sp, subdir); if (FileExists(buf)) return ret; } /* Could not find the directory, fall back to a base path */ - ttd_strlcpy(buf, _personal_dir, buflen); + strecpy(buf, _personal_dir, last); return buf; } @@ -412,7 +421,7 @@ static FILE *FioFOpenFileSp(const char *filename, const char *mode, Searchpath s if (subdir == NO_DIRECTORY) { strecpy(buf, filename, lastof(buf)); } else { - snprintf(buf, lengthof(buf), "%s%s%s", _searchpaths[sp], _subdirs[subdir], filename); + seprintf(buf, lastof(buf), "%s%s%s", _searchpaths[sp], _subdirs[subdir], filename); } #if defined(WIN32) @@ -446,7 +455,11 @@ FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize) FILE *f = fopen(entry->tar_filename, "rb"); if (f == NULL) return f; - fseek(f, entry->position, SEEK_SET); + if (fseek(f, entry->position, SEEK_SET) < 0) { + fclose(f); + return NULL; + } + if (filesize != NULL) *filesize = entry->size; return f; } @@ -529,13 +542,15 @@ FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir, */ static void FioCreateDirectory(const char *name) { + /* Ignore directory creation errors; they'll surface later on, and most + * of the time they are 'directory already exists' errors anyhow. */ #if defined(WIN32) || defined(WINCE) CreateDirectory(OTTD2FS(name), NULL); #elif defined(OS2) && !defined(__INNOTEK_LIBC__) mkdir(OTTD2FS(name)); #elif defined(__MORPHOS__) || defined(__AMIGAOS__) char buf[MAX_PATH]; - ttd_strlcpy(buf, name, MAX_PATH); + strecpy(buf, name, lastof(buf)); size_t len = strlen(name) - 1; if (buf[len] == '/') { @@ -551,20 +566,19 @@ static void FioCreateDirectory(const char *name) /** * Appends, if necessary, the path separator character to the end of the string. * It does not add the path separator to zero-sized strings. - * @param buf string to append the separator to - * @param buflen the length of \a buf. + * @param buf string to append the separator to + * @param last the last element of \a buf. * @return true iff the operation succeeded */ -bool AppendPathSeparator(char *buf, size_t buflen) +bool AppendPathSeparator(char *buf, const char *last) { size_t s = strlen(buf); /* Length of string + path separator + '\0' */ if (s != 0 && buf[s - 1] != PATHSEPCHAR) { - if (s + 2 >= buflen) return false; + if (&buf[s] >= last) return false; - buf[s] = PATHSEPCHAR; - buf[s + 1] = '\0'; + seprintf(buf + s, last, "%c", PATHSEPCHAR); } return true; @@ -579,7 +593,8 @@ bool AppendPathSeparator(char *buf, size_t buflen) char *BuildWithFullPath(const char *dir) { char *dest = MallocT(MAX_PATH); - ttd_strlcpy(dest, dir, MAX_PATH); + char *last = dest + MAX_PATH - 1; + strecpy(dest, dir, last); /* Check if absolute or relative path */ const char *s = strchr(dest, PATHSEPCHAR); @@ -587,10 +602,10 @@ char *BuildWithFullPath(const char *dir) /* Add absolute path */ if (s == NULL || dest != s) { if (getcwd(dest, MAX_PATH) == NULL) *dest = '\0'; - AppendPathSeparator(dest, MAX_PATH); - ttd_strlcat(dest, dir, MAX_PATH); + AppendPathSeparator(dest, last); + strecat(dest, dir, last); } - AppendPathSeparator(dest, MAX_PATH); + AppendPathSeparator(dest, last); return dest; } @@ -708,7 +723,7 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha assert(tar_filename == NULL); /* The TAR-header, repeated for every file */ - typedef struct TarHeader { + struct TarHeader { char name[100]; ///< Name of the file char mode[8]; char uid[8]; @@ -727,7 +742,7 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha char prefix[155]; ///< Path of the file char unused[12]; - } TarHeader; + }; /* Check if we already seen this file */ TarList::iterator it = _tar_list[this->subdir].find(filename); @@ -740,7 +755,7 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha * been given read access. */ if (f == NULL) return false; - const char *dupped_filename = strdup(filename); + const char *dupped_filename = stredup(filename); _tar_list[this->subdir][filename].filename = dupped_filename; _tar_list[this->subdir][filename].dirname = NULL; @@ -768,28 +783,23 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha if (memcmp(&th, &empty[0], 512) == 0) continue; DEBUG(misc, 0, "The file '%s' isn't a valid tar-file", filename); + fclose(f); return false; } name[0] = '\0'; - size_t len = 0; /* The prefix contains the directory-name */ if (th.prefix[0] != '\0') { - memcpy(name, th.prefix, sizeof(th.prefix)); - name[sizeof(th.prefix)] = '\0'; - len = strlen(name); - name[len] = PATHSEPCHAR; - len++; + strecpy(name, th.prefix, lastof(name)); + strecat(name, PATHSEP, lastof(name)); } /* Copy the name of the file in a safe way at the end of 'name' */ - memcpy(&name[len], th.name, sizeof(th.name)); - name[len + sizeof(th.name)] = '\0'; + strecat(name, th.name, lastof(name)); /* Calculate the size of the file.. for some strange reason this is stored as a string */ - memcpy(buf, th.size, sizeof(th.size)); - buf[sizeof(th.size)] = '\0'; + strecpy(buf, th.size, lastof(buf)); size_t skip = strtoul(buf, &end, 8); switch (th.typeflag) { @@ -818,8 +828,7 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha case '1': // hard links case '2': { // symbolic links /* Copy the destination of the link in a safe way at the end of 'linkname' */ - memcpy(link, th.linkname, sizeof(th.linkname)); - link[sizeof(th.linkname)] = '\0'; + strecpy(link, th.linkname, lastof(link)); if (strlen(name) == 0 || strlen(link) == 0) break; @@ -842,29 +851,38 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha char *pos = link; while (*pos != '\0') { - char *next = strchr(link, PATHSEPCHAR); - if (next == NULL) next = pos + strlen(pos); - - /* Skip '.' (current dir) */ - if (next != pos + 1 || pos[0] != '.') { - if (next == pos + 2 && pos[0] == '.' && pos[1] == '.') { - /* level up */ - if (dest[0] == '\0') { - DEBUG(misc, 1, "Ignoring link pointing outside of data directory: %s -> %s", name, link); - break; - } - - /* Truncate 'dest' after last PATHSEPCHAR. - * This assumes that the truncated part is a real directory and not a link. */ - destpos = strrchr(dest, PATHSEPCHAR); - if (destpos == NULL) destpos = dest; - } else { - /* Append at end of 'dest' */ - if (destpos != dest) *(destpos++) = PATHSEPCHAR; - strncpy(destpos, pos, next - pos); // Safe as we do '\0'-termination ourselves - destpos += next - pos; + char *next = strchr(pos, PATHSEPCHAR); + if (next == NULL) { + next = pos + strlen(pos); + } else { + /* Terminate the substring up to the path separator character. */ + *next++= '\0'; + } + + if (strcmp(pos, ".") == 0) { + /* Skip '.' (current dir) */ + } else if (strcmp(pos, "..") == 0) { + /* level up */ + if (dest[0] == '\0') { + DEBUG(misc, 1, "Ignoring link pointing outside of data directory: %s -> %s", name, link); + break; } + + /* Truncate 'dest' after last PATHSEPCHAR. + * This assumes that the truncated part is a real directory and not a link. */ + destpos = strrchr(dest, PATHSEPCHAR); + if (destpos == NULL) destpos = dest; *destpos = '\0'; + } else { + /* Append at end of 'dest' */ + if (destpos != dest) destpos = strecpy(destpos, PATHSEP, lastof(dest)); + destpos = strecpy(destpos, pos, lastof(dest)); + } + + if (destpos >= lastof(dest)) { + DEBUG(misc, 0, "The length of a link in tar-file '%s' is too large (malformed?)", filename); + fclose(f); + return false; } pos = next; @@ -883,7 +901,7 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha /* Store the first directory name we detect */ DEBUG(misc, 6, "Found dir in tar: %s", name); - if (_tar_list[this->subdir][filename].dirname == NULL) _tar_list[this->subdir][filename].dirname = strdup(name); + if (_tar_list[this->subdir][filename].dirname == NULL) _tar_list[this->subdir][filename].dirname = stredup(name); break; default: @@ -893,7 +911,11 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha /* Skip to the next block.. */ skip = Align(skip, 512); - fseek(f, skip, SEEK_CUR); + if (fseek(f, skip, SEEK_CUR) < 0) { + DEBUG(misc, 0, "The file '%s' can't be read as a valid tar-file", filename); + fclose(f); + return false; + } pos += skip; } @@ -1059,8 +1081,8 @@ bool DoScanWorkingDirectory() if (_searchpaths[SP_PERSONAL_DIR] == NULL) return true; char tmp[MAX_PATH]; - snprintf(tmp, lengthof(tmp), "%s%s", _searchpaths[SP_WORKING_DIR], PERSONAL_DIR); - AppendPathSeparator(tmp, MAX_PATH); + seprintf(tmp, lastof(tmp), "%s%s", _searchpaths[SP_WORKING_DIR], PERSONAL_DIR); + AppendPathSeparator(tmp, lastof(tmp)); return strcmp(tmp, _searchpaths[SP_PERSONAL_DIR]) != 0; } @@ -1071,32 +1093,54 @@ bool DoScanWorkingDirectory() void DetermineBasePaths(const char *exe) { char tmp[MAX_PATH]; +#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR) + const char *xdg_data_home = xdgDataHome(NULL); + seprintf(tmp, lastof(tmp), "%s" PATHSEP "%s", xdg_data_home, + PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR); + free(xdg_data_home); + + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_PERSONAL_DIR_XDG] = stredup(tmp); +#endif #if defined(__MORPHOS__) || defined(__AMIGA__) || defined(DOS) || defined(OS2) || !defined(WITH_PERSONAL_DIR) _searchpaths[SP_PERSONAL_DIR] = NULL; #else #ifdef __HAIKU__ BPath path; find_directory(B_USER_SETTINGS_DIRECTORY, &path); - const char *homedir = path.Path(); + const char *homedir = stredup(path.Path()); #else + /* getenv is highly unsafe; duplicate it as soon as possible, + * or at least before something else touches the environment + * variables in any way. It can also contain all kinds of + * unvalidated data we rather not want internally. */ const char *homedir = getenv("HOME"); + if (homedir != NULL) { + homedir = stredup(homedir); + } if (homedir == NULL) { const struct passwd *pw = getpwuid(getuid()); - homedir = (pw == NULL) ? "" : pw->pw_dir; + homedir = (pw == NULL) ? NULL : stredup(pw->pw_dir); } #endif - snprintf(tmp, MAX_PATH, "%s" PATHSEP "%s", homedir, PERSONAL_DIR); - AppendPathSeparator(tmp, MAX_PATH); + if (homedir != NULL) { + ValidateString(homedir); + seprintf(tmp, lastof(tmp), "%s" PATHSEP "%s", homedir, PERSONAL_DIR); + AppendPathSeparator(tmp, lastof(tmp)); - _searchpaths[SP_PERSONAL_DIR] = strdup(tmp); + _searchpaths[SP_PERSONAL_DIR] = stredup(tmp); + free(homedir); + } else { + _searchpaths[SP_PERSONAL_DIR] = NULL; + } #endif #if defined(WITH_SHARED_DIR) - snprintf(tmp, MAX_PATH, "%s", SHARED_DIR); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_SHARED_DIR] = strdup(tmp); + seprintf(tmp, lastof(tmp), "%s", SHARED_DIR); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_SHARED_DIR] = stredup(tmp); #else _searchpaths[SP_SHARED_DIR] = NULL; #endif @@ -1105,8 +1149,8 @@ void DetermineBasePaths(const char *exe) _searchpaths[SP_WORKING_DIR] = NULL; #else if (getcwd(tmp, MAX_PATH) == NULL) *tmp = '\0'; - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_WORKING_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_WORKING_DIR] = stredup(tmp); #endif _do_scan_working_directory = DoScanWorkingDirectory(); @@ -1114,8 +1158,8 @@ void DetermineBasePaths(const char *exe) /* Change the working directory to that one of the executable */ if (ChangeWorkingDirectoryToExecutable(exe)) { if (getcwd(tmp, MAX_PATH) == NULL) *tmp = '\0'; - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_BINARY_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_BINARY_DIR] = stredup(tmp); } else { _searchpaths[SP_BINARY_DIR] = NULL; } @@ -1130,9 +1174,9 @@ void DetermineBasePaths(const char *exe) #if defined(__MORPHOS__) || defined(__AMIGA__) || defined(DOS) || defined(OS2) _searchpaths[SP_INSTALLATION_DIR] = NULL; #else - snprintf(tmp, MAX_PATH, "%s", GLOBAL_DATA_DIR); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_INSTALLATION_DIR] = strdup(tmp); + seprintf(tmp, lastof(tmp), "%s", GLOBAL_DATA_DIR); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_INSTALLATION_DIR] = stredup(tmp); #endif #ifdef WITH_COCOA extern void cocoaSetApplicationBundleDir(); @@ -1143,7 +1187,7 @@ extern void cocoaSetApplicationBundleDir(); } #endif /* defined(WIN32) || defined(WINCE) */ -char *_personal_dir; +const char *_personal_dir; /** * Acquire the base paths (personal dir and game data dir), @@ -1155,55 +1199,89 @@ void DeterminePaths(const char *exe) { DetermineBasePaths(exe); +#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR) + char config_home[MAX_PATH]; + + const char *xdg_config_home = xdgConfigHome(NULL); + seprintf(config_home, lastof(config_home), "%s" PATHSEP "%s", xdg_config_home, + PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR); + free(xdg_config_home); + + AppendPathSeparator(config_home, lastof(config_home)); +#endif + Searchpath sp; FOR_ALL_SEARCHPATHS(sp) { if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue; DEBUG(misc, 4, "%s added as search path", _searchpaths[sp]); } + char *config_dir; if (_config_file != NULL) { - _personal_dir = strdup(_config_file); - char *end = strrchr(_personal_dir, PATHSEPCHAR); + config_dir = stredup(_config_file); + char *end = strrchr(config_dir, PATHSEPCHAR); if (end == NULL) { - _personal_dir[0] = '\0'; + config_dir[0] = '\0'; } else { end[1] = '\0'; } } else { char personal_dir[MAX_PATH]; - if (FioFindFullPath(personal_dir, lengthof(personal_dir), BASE_DIR, "openttd.cfg") != NULL) { + if (FioFindFullPath(personal_dir, lastof(personal_dir), BASE_DIR, "openttd.cfg") != NULL) { char *end = strrchr(personal_dir, PATHSEPCHAR); if (end != NULL) end[1] = '\0'; - _personal_dir = strdup(personal_dir); - _config_file = str_fmt("%sopenttd.cfg", _personal_dir); + config_dir = stredup(personal_dir); + _config_file = str_fmt("%sopenttd.cfg", config_dir); } else { +#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR) + /* No previous configuration file found. Use the configuration folder from XDG. */ + config_dir = config_home; +#else static const Searchpath new_openttd_cfg_order[] = { SP_PERSONAL_DIR, SP_BINARY_DIR, SP_WORKING_DIR, SP_SHARED_DIR, SP_INSTALLATION_DIR }; + config_dir = NULL; for (uint i = 0; i < lengthof(new_openttd_cfg_order); i++) { if (IsValidSearchPath(new_openttd_cfg_order[i])) { - _personal_dir = strdup(_searchpaths[new_openttd_cfg_order[i]]); - _config_file = str_fmt("%sopenttd.cfg", _personal_dir); + config_dir = stredup(_searchpaths[new_openttd_cfg_order[i]]); break; } } + assert(config_dir != NULL); +#endif + _config_file = str_fmt("%sopenttd.cfg", config_dir); } } - DEBUG(misc, 3, "%s found as personal directory", _personal_dir); + DEBUG(misc, 3, "%s found as config directory", config_dir); - _highscore_file = str_fmt("%shs.dat", _personal_dir); + _highscore_file = str_fmt("%shs.dat", config_dir); extern char *_hotkeys_file; - _hotkeys_file = str_fmt("%shotkeys.cfg", _personal_dir); + _hotkeys_file = str_fmt("%shotkeys.cfg", config_dir); extern char *_windows_file; - _windows_file = str_fmt("%swindows.cfg", _personal_dir); + _windows_file = str_fmt("%swindows.cfg", config_dir); + +#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR) + if (config_dir == config_home) { + /* We are using the XDG configuration home for the config file, + * then store the rest in the XDG data home folder. */ + _personal_dir = _searchpaths[SP_PERSONAL_DIR_XDG]; + FioCreateDirectory(_personal_dir); + } else +#endif + { + _personal_dir = config_dir; + } /* Make the necessary folders */ #if !defined(__MORPHOS__) && !defined(__AMIGA__) && defined(WITH_PERSONAL_DIR) - FioCreateDirectory(_personal_dir); + FioCreateDirectory(config_dir); + if (config_dir != _personal_dir) FioCreateDirectory(_personal_dir); #endif + DEBUG(misc, 3, "%s found as personal directory", _personal_dir); + static const Subdirectory default_subdirs[] = { SAVE_DIR, AUTOSAVE_DIR, SCENARIO_DIR, HEIGHTMAP_DIR, BASESET_DIR, NEWGRF_DIR, AI_DIR, AI_LIBRARY_DIR, GAME_DIR, GAME_LIBRARY_DIR, SCREENSHOT_DIR }; @@ -1330,13 +1408,13 @@ static uint ScanPath(FileScanner *fs, const char *extension, const char *path, s if (!FiosIsValidFile(path, dirent, &sb)) continue; - snprintf(filename, lengthof(filename), "%s%s", path, d_name); + seprintf(filename, lastof(filename), "%s%s", path, d_name); if (S_ISDIR(sb.st_mode)) { /* Directory */ if (!recursive) continue; if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue; - if (!AppendPathSeparator(filename, lengthof(filename))) continue; + if (!AppendPathSeparator(filename, lastof(filename))) continue; num += ScanPath(fs, extension, filename, basepath_length, recursive); } else if (S_ISREG(sb.st_mode)) { /* File */ @@ -1387,7 +1465,7 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r /* Don't search in the working directory */ if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue; - FioAppendDirectory(path, MAX_PATH, sp, sd); + FioAppendDirectory(path, lastof(path), sp, sd); num += ScanPath(this, extension, path, strlen(path), recursive); } @@ -1423,6 +1501,6 @@ uint FileScanner::Scan(const char *extension, const char *directory, bool recurs { char path[MAX_PATH]; strecpy(path, directory, lastof(path)); - if (!AppendPathSeparator(path, lengthof(path))) return 0; + if (!AppendPathSeparator(path, lastof(path))) return 0; return ScanPath(this, extension, path, strlen(path), recursive); } diff --git a/src/fileio_func.h b/src/fileio_func.h index d85c8630c7..443460b2d3 100644 --- a/src/fileio_func.h +++ b/src/fileio_func.h @@ -51,15 +51,15 @@ static inline bool IsValidSearchPath(Searchpath sp) void FioFCloseFile(FILE *f); FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir, size_t *filesize = NULL); bool FioCheckFileExists(const char *filename, Subdirectory subdir); -char *FioGetFullPath(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir, const char *filename); -char *FioFindFullPath(char *buf, size_t buflen, Subdirectory subdir, const char *filename); -char *FioAppendDirectory(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir); -char *FioGetDirectory(char *buf, size_t buflen, Subdirectory subdir); +char *FioGetFullPath(char *buf, const char *last, Searchpath sp, Subdirectory subdir, const char *filename); +char *FioFindFullPath(char *buf, const char *last, Subdirectory subdir, const char *filename); +char *FioAppendDirectory(char *buf, const char *last, Searchpath sp, Subdirectory subdir); +char *FioGetDirectory(char *buf, const char *last, Subdirectory subdir); const char *FiosGetScreenshotDir(); void SanitizeFilename(char *filename); -bool AppendPathSeparator(char *buf, size_t buflen); +bool AppendPathSeparator(char *buf, const char *last); void DeterminePaths(const char *exe); void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize); bool FileExists(const char *filename); @@ -67,7 +67,7 @@ const char *FioTarFirstDir(const char *tarname, Subdirectory subdir); void FioTarAddLink(const char *src, const char *dest, Subdirectory subdir); bool ExtractTar(const char *tar_filename, Subdirectory subdir); -extern char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc. +extern const char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc. /** Helper for scanning for files with a given name */ class FileScanner { diff --git a/src/fileio_type.h b/src/fileio_type.h index 3f21be6dd9..87cb2d1a82 100644 --- a/src/fileio_type.h +++ b/src/fileio_type.h @@ -43,6 +43,9 @@ enum Subdirectory { enum Searchpath { SP_FIRST_DIR, SP_WORKING_DIR = SP_FIRST_DIR, ///< Search in the working directory +#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR) + SP_PERSONAL_DIR_XDG, ///< Search in the personal directory from the XDG specification +#endif SP_PERSONAL_DIR, ///< Search in the personal directory SP_SHARED_DIR, ///< Search in the shared directory, like 'Shared Files' under Windows SP_BINARY_DIR, ///< Search in the directory where the binary resides diff --git a/src/fios.cpp b/src/fios.cpp index b2ed1ec50e..00ed5a484c 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -26,9 +26,12 @@ #include "table/strings.h" +#include "safeguards.h" + /* Variables to display file lists */ SmallVector _fios_items; static char *_fios_path; +static const char *_fios_path_last; SmallFiosItem _file_to_saveload; SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; @@ -89,14 +92,12 @@ StringID FiosGetDescText(const char **path, uint64 *total_free) */ const char *FiosBrowseTo(const FiosItem *item) { - char *path = _fios_path; - switch (item->type) { case FIOS_TYPE_DRIVE: #if defined(WINCE) - snprintf(path, MAX_PATH, PATHSEP ""); + seprintf(_fios_path, _fios_path_last, PATHSEP ""); #elif defined(WIN32) || defined(__OS2__) - snprintf(path, MAX_PATH, "%c:" PATHSEP, item->title[0]); + seprintf(_fios_path, _fios_path_last, "%c:" PATHSEP, item->title[0]); #endif /* FALL THROUGH */ case FIOS_TYPE_INVALID: @@ -104,16 +105,16 @@ const char *FiosBrowseTo(const FiosItem *item) case FIOS_TYPE_PARENT: { /* Check for possible NULL ptr (not required for UNIXes, but AmigaOS-alikes) */ - char *s = strrchr(path, PATHSEPCHAR); - if (s != NULL && s != path) { + char *s = strrchr(_fios_path, PATHSEPCHAR); + if (s != NULL && s != _fios_path) { s[0] = '\0'; // Remove last path separator character, so we can go up one level. } - s = strrchr(path, PATHSEPCHAR); + s = strrchr(_fios_path, PATHSEPCHAR); if (s != NULL) { s[1] = '\0'; // go up a directory #if defined(__MORPHOS__) || defined(__AMIGAOS__) /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ - } else if ((s = strrchr(path, ':')) != NULL) { + } else if ((s = strrchr(_fios_path, ':')) != NULL) { s[1] = '\0'; #endif } @@ -121,12 +122,12 @@ const char *FiosBrowseTo(const FiosItem *item) } case FIOS_TYPE_DIR: - strcat(path, item->name); - strcat(path, PATHSEP); + strecat(_fios_path, item->name, _fios_path_last); + strecat(_fios_path, PATHSEP, _fios_path_last); break; case FIOS_TYPE_DIRECT: - snprintf(path, MAX_PATH, "%s", item->name); + seprintf(_fios_path, _fios_path_last, "%s", item->name); break; case FIOS_TYPE_FILE: @@ -147,9 +148,9 @@ const char *FiosBrowseTo(const FiosItem *item) * @param path Directory path, may be \c NULL. * @param name Filename. * @param ext Filename extension (use \c "" for no extension). - * @param size Size of \a buf. + * @param last Last element of buffer \a buf. */ -static void FiosMakeFilename(char *buf, const char *path, const char *name, const char *ext, size_t size) +static void FiosMakeFilename(char *buf, const char *path, const char *name, const char *ext, const char *last) { const char *period; @@ -161,15 +162,15 @@ static void FiosMakeFilename(char *buf, const char *path, const char *name, cons unsigned char sepchar = path[(strlen(path) - 1)]; if (sepchar != ':' && sepchar != '/') { - snprintf(buf, size, "%s" PATHSEP "%s%s", path, name, ext); + seprintf(buf, last, "%s" PATHSEP "%s%s", path, name, ext); } else { - snprintf(buf, size, "%s%s%s", path, name, ext); + seprintf(buf, last, "%s%s%s", path, name, ext); } } else { - snprintf(buf, size, "%s%s", name, ext); + seprintf(buf, last, "%s%s", name, ext); } #else - snprintf(buf, size, "%s" PATHSEP "%s%s", path, name, ext); + seprintf(buf, last, "%s" PATHSEP "%s%s", path, name, ext); #endif } @@ -177,39 +178,40 @@ static void FiosMakeFilename(char *buf, const char *path, const char *name, cons * Make a save game or scenario filename from a name. * @param buf Destination buffer for saving the filename. * @param name Name of the file. - * @param size Length of buffer \a buf. + * @param last Last element of buffer \a buf. */ -void FiosMakeSavegameName(char *buf, const char *name, size_t size) +void FiosMakeSavegameName(char *buf, const char *name, const char *last) { const char *extension = (_game_mode == GM_EDITOR) ? ".scn" : ".sav"; - FiosMakeFilename(buf, _fios_path, name, extension, size); + FiosMakeFilename(buf, _fios_path, name, extension, last); } /** * Construct a filename for a height map. * @param buf Destination buffer. * @param name Filename. - * @param size Size of \a buf. + * @param last Last element of buffer \a buf. */ -void FiosMakeHeightmapName(char *buf, const char *name, size_t size) +void FiosMakeHeightmapName(char *buf, const char *name, const char *last) { char ext[5]; ext[0] = '.'; strecpy(ext + 1, GetCurrentScreenshotExtension(), lastof(ext)); - FiosMakeFilename(buf, _fios_path, name, ext, size); + FiosMakeFilename(buf, _fios_path, name, ext, last); } /** * Delete a file. * @param name Filename to delete. + * @return Whether the file deletion was successful. */ bool FiosDelete(const char *name) { char filename[512]; - FiosMakeSavegameName(filename, name, lengthof(filename)); + FiosMakeSavegameName(filename, name, lastof(filename)); return unlink(filename) == 0; } @@ -324,7 +326,7 @@ static void FiosGetFileList(SaveLoadDialogMode mode, fios_getlist_callback_proc fios->type = FIOS_TYPE_DIR; fios->mtime = 0; strecpy(fios->name, d_name, lastof(fios->name)); - snprintf(fios->title, lengthof(fios->title), "%s" PATHSEP " (Directory)", d_name); + seprintf(fios->title, lastof(fios->title), "%s" PATHSEP " (Directory)", d_name); str_validate(fios->title, lastof(fios->title)); } } @@ -400,6 +402,10 @@ FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, * .SS1 Transport Tycoon Deluxe preset game * .SV1 Transport Tycoon Deluxe (Patch) saved game * .SV2 Transport Tycoon Deluxe (Patch) saved 2-player game */ + + /* Don't crash if we supply no extension */ + if (ext == NULL) return FIOS_TYPE_INVALID; + if (strcasecmp(ext, ".sav") == 0) { GetFileTitle(file, title, last, SAVE_DIR); return FIOS_TYPE_FILE; @@ -424,13 +430,16 @@ FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, void FiosGetSavegameList(SaveLoadDialogMode mode) { static char *fios_save_path = NULL; + static char *fios_save_path_last = NULL; if (fios_save_path == NULL) { fios_save_path = MallocT(MAX_PATH); - FioGetDirectory(fios_save_path, MAX_PATH, SAVE_DIR); + fios_save_path_last = fios_save_path + MAX_PATH - 1; + FioGetDirectory(fios_save_path, fios_save_path_last, SAVE_DIR); } _fios_path = fios_save_path; + _fios_path_last = fios_save_path_last; FiosGetFileList(mode, &FiosGetSavegameListCallback, NO_DIRECTORY); } @@ -475,17 +484,20 @@ static FiosType FiosGetScenarioListCallback(SaveLoadDialogMode mode, const char void FiosGetScenarioList(SaveLoadDialogMode mode) { static char *fios_scn_path = NULL; + static char *fios_scn_path_last = NULL; /* Copy the default path on first run or on 'New Game' */ if (fios_scn_path == NULL) { fios_scn_path = MallocT(MAX_PATH); - FioGetDirectory(fios_scn_path, MAX_PATH, SCENARIO_DIR); + fios_scn_path_last = fios_scn_path + MAX_PATH - 1; + FioGetDirectory(fios_scn_path, fios_scn_path_last, SCENARIO_DIR); } _fios_path = fios_scn_path; + _fios_path_last = fios_scn_path_last; char base_path[MAX_PATH]; - FioGetDirectory(base_path, sizeof(base_path), SCENARIO_DIR); + FioGetDirectory(base_path, lastof(base_path), SCENARIO_DIR); FiosGetFileList(mode, &FiosGetScenarioListCallback, (mode == SLD_LOAD_SCENARIO && strcmp(base_path, _fios_path) == 0) ? SCENARIO_DIR : NO_DIRECTORY); } @@ -518,7 +530,7 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadDialogMode mode, const char Searchpath sp; FOR_ALL_SEARCHPATHS(sp) { char buf[MAX_PATH]; - FioAppendDirectory(buf, sizeof(buf), sp, HEIGHTMAP_DIR); + FioAppendDirectory(buf, lastof(buf), sp, HEIGHTMAP_DIR); if (strncmp(buf, it->second.tar_filename, strlen(buf)) == 0) { match = true; @@ -541,16 +553,19 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadDialogMode mode, const char void FiosGetHeightmapList(SaveLoadDialogMode mode) { static char *fios_hmap_path = NULL; + static char *fios_hmap_path_last = NULL; if (fios_hmap_path == NULL) { fios_hmap_path = MallocT(MAX_PATH); - FioGetDirectory(fios_hmap_path, MAX_PATH, HEIGHTMAP_DIR); + fios_hmap_path_last = fios_hmap_path + MAX_PATH - 1; + FioGetDirectory(fios_hmap_path, fios_hmap_path_last, HEIGHTMAP_DIR); } _fios_path = fios_hmap_path; + _fios_path_last = fios_hmap_path_last; char base_path[MAX_PATH]; - FioGetDirectory(base_path, sizeof(base_path), HEIGHTMAP_DIR); + FioGetDirectory(base_path, lastof(base_path), HEIGHTMAP_DIR); FiosGetFileList(mode, &FiosGetHeightmapListCallback, strcmp(base_path, _fios_path) == 0 ? HEIGHTMAP_DIR : NO_DIRECTORY); } @@ -565,7 +580,7 @@ const char *FiosGetScreenshotDir() if (fios_screenshot_path == NULL) { fios_screenshot_path = MallocT(MAX_PATH); - FioGetDirectory(fios_screenshot_path, MAX_PATH, SCREENSHOT_DIR); + FioGetDirectory(fios_screenshot_path, fios_screenshot_path + MAX_PATH - 1, SCREENSHOT_DIR); } return fios_screenshot_path; diff --git a/src/fios.h b/src/fios.h index 38067d348d..b26fe00925 100644 --- a/src/fios.h +++ b/src/fios.h @@ -41,7 +41,8 @@ struct LoadCheckData { struct LoggedAction *gamelog_action; ///< Gamelog actions uint gamelog_actions; ///< Number of gamelog actions - LoadCheckData() : error_data(NULL), grfconfig(NULL), gamelog_action(NULL) + LoadCheckData() : error_data(NULL), grfconfig(NULL), + grf_compatibility(GLC_NOT_FOUND), gamelog_action(NULL), gamelog_actions(0) { this->Clear(); } @@ -169,8 +170,8 @@ const char *FiosBrowseTo(const FiosItem *item); StringID FiosGetDescText(const char **path, uint64 *total_free); bool FiosDelete(const char *name); -void FiosMakeHeightmapName(char *buf, const char *name, size_t size); -void FiosMakeSavegameName(char *buf, const char *name, size_t size); +void FiosMakeHeightmapName(char *buf, const char *name, const char *last); +void FiosMakeSavegameName(char *buf, const char *name, const char *last); FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last); diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index 9551bb843e..9316deb658 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -34,6 +34,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + SaveLoadDialogMode _saveload_mode; LoadCheckData _load_check_data; ///< Data loaded from save during SL_LOAD_CHECK. @@ -133,9 +135,11 @@ static const NWidgetPart _nested_load_heightmap_dialog_widgets[] = { SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_LOAD_BUTTON), SetResize(1, 0), SetFill(1, 0), + SetDataTip(STR_SAVELOAD_LOAD_BUTTON, STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), @@ -294,17 +298,17 @@ public: switch (_saveload_mode) { case SLD_SAVE_GAME: case SLD_LOAD_GAME: - FioGetDirectory(o_dir.name, lengthof(o_dir.name), SAVE_DIR); + FioGetDirectory(o_dir.name, lastof(o_dir.name), SAVE_DIR); break; case SLD_SAVE_SCENARIO: case SLD_LOAD_SCENARIO: - FioGetDirectory(o_dir.name, lengthof(o_dir.name), SCENARIO_DIR); + FioGetDirectory(o_dir.name, lastof(o_dir.name), SCENARIO_DIR); break; case SLD_SAVE_HEIGHTMAP: case SLD_LOAD_HEIGHTMAP: - FioGetDirectory(o_dir.name, lengthof(o_dir.name), HEIGHTMAP_DIR); + FioGetDirectory(o_dir.name, lastof(o_dir.name), HEIGHTMAP_DIR); break; default: @@ -479,7 +483,7 @@ public: case WID_SL_SORT_BYNAME: case WID_SL_SORT_BYDATE: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -521,16 +525,21 @@ public: break; case WID_SL_LOAD_BUTTON: - if (this->selected != NULL && !_load_check_data.HasErrors() && (_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())) { - _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME; - + if (this->selected != NULL && !_load_check_data.HasErrors()) { const char *name = FiosBrowseTo(this->selected); SetFiosType(this->selected->type); strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name)); strecpy(_file_to_saveload.title, this->selected->title, lastof(_file_to_saveload.title)); - ClearErrorMessages(); - delete this; + + if (_saveload_mode == SLD_LOAD_HEIGHTMAP) { + delete this; + ShowHeightmapLoad(); + } else if (!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) { + _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME; + ClearErrorMessages(); + delete this; + } } break; @@ -543,7 +552,7 @@ public: case WID_SL_MISSING_NEWGRFS: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); - } else { + } else if (_load_check_data.HasNewGrfs()) { #if defined(ENABLE_NETWORK) ShowMissingContentWindow(_load_check_data.grfconfig); #endif @@ -645,10 +654,10 @@ public: } else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) { _switch_mode = SM_SAVE_GAME; - FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, sizeof(_file_to_saveload.name)); + FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name)); } else { _switch_mode = SM_SAVE_HEIGHTMAP; - FiosMakeHeightmapName(_file_to_saveload.name, this->filename_editbox.text.buf, sizeof(_file_to_saveload.name)); + FiosMakeHeightmapName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name)); } /* In the editor set up the vehicle engines correctly (date might have changed) */ @@ -679,9 +688,12 @@ public: case 1: /* Selection changes */ if (!gui_scope) break; + if (_saveload_mode == SLD_LOAD_HEIGHTMAP) { + this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, this->selected == NULL || _load_check_data.HasErrors()); + } if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) { this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, - this->selected == NULL || _load_check_data.HasErrors() || !(_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())); + this->selected == NULL || _load_check_data.HasErrors() || !(!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())); this->SetWidgetDisabledState(WID_SL_NEWGRF_INFO, !_load_check_data.HasNewGrfs()); this->SetWidgetDisabledState(WID_SL_MISSING_NEWGRFS, diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 9e0fd1e166..6bea59c103 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -18,11 +18,14 @@ #include "strings_func.h" #include "zoom_type.h" #include "gfx_layout.h" +#include "zoom_func.h" #include "table/sprites.h" #include "table/control_codes.h" #include "table/unicode.h" +#include "safeguards.h" + static const int ASCII_LETTERSTART = 32; ///< First printable ASCII letter. static const int MAX_FONT_SIZE = 72; ///< Maximum font size. @@ -75,12 +78,14 @@ public: virtual SpriteID GetUnicodeGlyph(WChar key); virtual void SetUnicodeGlyph(WChar key, SpriteID sprite); virtual void InitializeUnicodeGlyphMap(); - virtual void ClearFontCache() {} + virtual void ClearFontCache(); virtual const Sprite *GetGlyph(GlyphID key); virtual uint GetGlyphWidth(GlyphID key); + virtual int GetHeight() const; virtual bool GetDrawGlyphShadow(); virtual GlyphID MapCharToGlyph(WChar key) { assert(IsPrintable(key)); return SPRITE_GLYPH | key; } virtual const void *GetFontTable(uint32 tag, size_t &length) { length = 0; return NULL; } + virtual const char *GetFontName() { return "sprite"; } }; /** @@ -138,8 +143,8 @@ void SpriteFontCache::InitializeUnicodeGlyphMap() byte key = _default_unicode_map[i].key; if (key == CLRA) { /* Clear the glyph. This happens if the glyph at this code point - * is non-standard and should be accessed by an SCC_xxx enum - * entry only. */ + * is non-standard and should be accessed by an SCC_xxx enum + * entry only. */ this->SetUnicodeGlyph(_default_unicode_map[i].code, 0); } else { SpriteID sprite = base + key - ASCII_LETTERSTART; @@ -162,6 +167,11 @@ void SpriteFontCache::ClearGlyphToSpriteMap() this->glyph_to_spriteid_map = NULL; } +void SpriteFontCache::ClearFontCache() +{ + Layouter::ResetFontCache(this->fs); +} + const Sprite *SpriteFontCache::GetGlyph(GlyphID key) { SpriteID sprite = this->GetUnicodeGlyph(key); @@ -173,7 +183,12 @@ uint SpriteFontCache::GetGlyphWidth(GlyphID key) { SpriteID sprite = this->GetUnicodeGlyph(key); if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); - return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (this->fs != FS_NORMAL) : 0; + return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + ScaleGUITrad(this->fs != FS_NORMAL ? 1 : 0) : 0; +} + +int SpriteFontCache::GetHeight() const +{ + return ScaleGUITrad(this->height); } bool SpriteFontCache::GetDrawGlyphShadow() @@ -181,7 +196,7 @@ bool SpriteFontCache::GetDrawGlyphShadow() return false; } -/*static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) }; +/* static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) }; #ifdef WITH_FREETYPE #include @@ -234,6 +249,7 @@ public: virtual bool GetDrawGlyphShadow(); virtual GlyphID MapCharToGlyph(WChar key); virtual const void *GetFontTable(uint32 tag, size_t &length); + virtual const char *GetFontName() { return face->family_name; } }; FT_Library _library = NULL; @@ -267,23 +283,35 @@ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : Fo } FT_Error err = FT_Set_Pixel_Sizes(this->face, 0, pixels); - if (err == FT_Err_Invalid_Pixel_Size) { + if (err != FT_Err_Ok) { /* Find nearest size to that requested */ FT_Bitmap_Size *bs = this->face->available_sizes; int i = this->face->num_fixed_sizes; - int n = bs->height; - for (; --i; bs++) { - if (abs(pixels - bs->height) < abs(pixels - n)) n = bs->height; - } + if (i > 0) { // In pathetic cases one might get no fixed sizes at all. + int n = bs->height; + FT_Int chosen = 0; + for (; --i; bs++) { + if (abs(pixels - bs->height) >= abs(pixels - n)) continue; + n = bs->height; + chosen = this->face->num_fixed_sizes - i; + } - FT_Set_Pixel_Sizes(this->face, 0, n); + /* Don't use FT_Set_Pixel_Sizes here - it might give us another + * error, even though the size is available (FS#5885). */ + err = FT_Select_Size(this->face, chosen); + } } - this->units_per_em = this->face->units_per_EM; - this->ascender = this->face->size->metrics.ascender >> 6; - this->descender = this->face->size->metrics.descender >> 6; - this->height = this->ascender - this->descender; + if (err == FT_Err_Ok) { + this->units_per_em = this->face->units_per_EM; + this->ascender = this->face->size->metrics.ascender >> 6; + this->descender = this->face->size->metrics.descender >> 6; + this->height = this->ascender - this->descender; + } else { + /* Both FT_Set_Pixel_Sizes and FT_Select_Size failed. */ + DEBUG(freetype, 0, "Font size selection failed. Using FontCache defaults."); + } } /** @@ -392,6 +420,8 @@ void FreeTypeFontCache::ClearFontCache() free(this->glyph_to_sprite); this->glyph_to_sprite = NULL; + + Layouter::ResetFontCache(this->fs); } FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key) @@ -430,7 +460,7 @@ static void *AllocateFont(size_t size) static bool GetFontAAState(FontSize size) { /* AA is only supported for 32 bpp */ - if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 32) return false; + if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false; switch (size) { default: NOT_REACHED(); @@ -458,9 +488,34 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) if (key == 0) { GlyphID question_glyph = this->MapCharToGlyph('?'); if (question_glyph == 0) { - /* The font misses the '?' character. Use sprite font. */ - SpriteID sprite = this->GetUnicodeGlyph(key); - Sprite *spr = (Sprite*)GetRawSprite(sprite, ST_FONT, AllocateFont); + /* The font misses the '?' character. Use built-in sprite. + * Note: We cannot use the baseset as this also has to work in the bootstrap GUI. */ +#define CPSET { 0, 0, 0, 0, 1 } +#define CP___ { 0, 0, 0, 0, 0 } + static SpriteLoader::CommonPixel builtin_questionmark_data[10 * 8] = { + CP___, CP___, CPSET, CPSET, CPSET, CPSET, CP___, CP___, + CP___, CPSET, CPSET, CP___, CP___, CPSET, CPSET, CP___, + CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, + CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, + CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, + CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, + CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, + CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, + CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, + CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, + }; +#undef CPSET +#undef CP___ + static const SpriteLoader::Sprite builtin_questionmark = { + 10, // height + 8, // width + 0, // x_offs + 0, // y_offs + ST_FONT, + builtin_questionmark_data + }; + + Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont); assert(spr != NULL); new_glyph.sprite = spr; new_glyph.width = spr->width + (this->fs != FS_NORMAL); @@ -481,8 +536,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY); /* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */ - int width = max(1, slot->bitmap.width + (this->fs == FS_NORMAL)); - int height = max(1, slot->bitmap.rows + (this->fs == FS_NORMAL)); + uint width = max(1U, (uint)slot->bitmap.width + (this->fs == FS_NORMAL)); + uint height = max(1U, (uint)slot->bitmap.rows + (this->fs == FS_NORMAL)); /* Limit glyph size to prevent overflows later on. */ if (width > 256 || height > 256) usererror("Font glyph is too large"); @@ -498,8 +553,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) /* Draw shadow for medium size */ if (this->fs == FS_NORMAL && !aa) { - for (int y = 0; y < slot->bitmap.rows; y++) { - for (int x = 0; x < slot->bitmap.width; x++) { + for (uint y = 0; y < (uint)slot->bitmap.rows; y++) { + for (uint x = 0; x < (uint)slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR; sprite.data[1 + x + (1 + y) * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; @@ -508,8 +563,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) } } - for (int y = 0; y < slot->bitmap.rows; y++) { - for (int x = 0; x < slot->bitmap.width; x++) { + for (uint y = 0; y < (uint)slot->bitmap.rows; y++) { + for (uint x = 0; x < (uint)slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[x + y * sprite.width].m = FACE_COLOUR; sprite.data[x + y * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; @@ -517,7 +572,7 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) } } - new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont); + new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont); new_glyph.width = slot->advance.x >> 6; this->SetGlyphPtr(key, &new_glyph); diff --git a/src/fontcache.h b/src/fontcache.h index 1f52ddcdc4..8caf4f1bd3 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -44,7 +44,7 @@ public: * Get the height of the font. * @return The height of the font. */ - inline int GetHeight() const { return this->height; } + virtual int GetHeight() const { return this->height; } /** * Get the ascender value of the font. @@ -119,6 +119,12 @@ public: */ virtual const void *GetFontTable(uint32 tag, size_t &length) = 0; + /** + * Get the name of this font. + * @return The name of the font. + */ + virtual const char *GetFontName() = 0; + /** * Get the font cache of a given font size. * @param fs The font size to look up. @@ -159,7 +165,8 @@ static inline void InitializeUnicodeGlyphMap() } } -static inline void ClearFontCache() { +static inline void ClearFontCache() +{ for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { FontCache::Get(fs)->ClearFontCache(); } diff --git a/src/fontdetection.cpp b/src/fontdetection.cpp index 82c4f354f6..6df45cf6a1 100644 --- a/src/fontdetection.cpp +++ b/src/fontdetection.cpp @@ -35,6 +35,8 @@ extern FT_Library _library; #include /* SHGetFolderPath */ #include "os/windows/win32.h" +#include "safeguards.h" + /** * Get the short DOS 8.3 format for paths. * FreeType doesn't support Unicode filenames and Windows' fopen (as used @@ -373,6 +375,8 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i #include "os/macosx/macos.h" +#include "safeguards.h" + FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) { FT_Error err = FT_Err_Cannot_Open_Resource; @@ -392,7 +396,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) } else #endif { -#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__LP64__ +#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !defined(__LP64__) /* This type was introduced with the 10.5 SDK. */ #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5) #define ATSFSSpec FSSpec @@ -542,6 +546,8 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i #include +#include "safeguards.h" + /* ======================================================================================== * FontConfig (unix) support * ======================================================================================== */ @@ -560,7 +566,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) char *font_family; /* Split & strip the font's style */ - font_family = strdup(font_name); + font_family = stredup(font_name); font_style = strchr(font_family, ','); if (font_style != NULL) { font_style[0] = '\0'; diff --git a/src/game/game_config.cpp b/src/game/game_config.cpp index a85c2f467e..50cd5da4e0 100644 --- a/src/game/game_config.cpp +++ b/src/game/game_config.cpp @@ -15,6 +15,8 @@ #include "game_config.hpp" #include "game_info.hpp" +#include "../safeguards.h" + /* static */ GameConfig *GameConfig::GetConfig(ScriptSettingSource source) { GameConfig **config; diff --git a/src/game/game_core.cpp b/src/game/game_core.cpp index 9fd47a4c8b..2f95e26224 100644 --- a/src/game/game_core.cpp +++ b/src/game/game_core.cpp @@ -21,6 +21,8 @@ #include "game_instance.hpp" #include "game_info.hpp" +#include "../safeguards.h" + /* static */ uint Game::frame_counter = 0; /* static */ GameInfo *Game::info = NULL; /* static */ GameInstance *Game::instance = NULL; diff --git a/src/game/game_info.cpp b/src/game/game_info.cpp index 974665ee78..9bb36d1aa5 100644 --- a/src/game/game_info.cpp +++ b/src/game/game_info.cpp @@ -16,13 +16,16 @@ #include "game_scanner.hpp" #include "../debug.h" +#include "../safeguards.h" + /** * Check if the API version provided by the Game is supported. * @param api_version The API version as provided by the Game. */ 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; + 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; } #if defined(WIN32) @@ -52,7 +55,7 @@ template <> const char *GetClassName() { return "GSInfo"; } { /* Get the GameInfo */ SQUserPointer instance = NULL; - if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, _SC("Pass an instance of a child class of GameInfo to RegisterGame")); + if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, "Pass an instance of a child class of GameInfo to RegisterGame"); GameInfo *info = (GameInfo *)instance; SQInteger res = ScriptInfo::Constructor(vm, info); diff --git a/src/game/game_instance.cpp b/src/game/game_instance.cpp index bd588e0392..c5e5c7f05a 100644 --- a/src/game/game_instance.cpp +++ b/src/game/game_instance.cpp @@ -67,6 +67,8 @@ #include "../script/api/game/game_station.hpp.sq" #include "../script/api/game/game_stationlist.hpp.sq" #include "../script/api/game/game_story_page.hpp.sq" +#include "../script/api/game/game_storypageelementlist.hpp.sq" +#include "../script/api/game/game_storypagelist.hpp.sq" #include "../script/api/game/game_subsidy.hpp.sq" #include "../script/api/game/game_subsidylist.hpp.sq" #include "../script/api/game/game_testmode.hpp.sq" @@ -83,6 +85,8 @@ #include "../script/api/game/game_waypointlist.hpp.sq" #include "../script/api/game/game_window.hpp.sq" +#include "../safeguards.h" + GameInstance::GameInstance() : ScriptInstance("GS") @@ -169,8 +173,21 @@ void GameInstance::RegisterAPI() SQGSSignList_Register(this->engine); SQGSStation_Register(this->engine); SQGSStationList_Register(this->engine); + SQGSStationList_Cargo_Register(this->engine); + SQGSStationList_CargoPlanned_Register(this->engine); + SQGSStationList_CargoPlannedByFrom_Register(this->engine); + SQGSStationList_CargoPlannedByVia_Register(this->engine); + SQGSStationList_CargoPlannedFromByVia_Register(this->engine); + SQGSStationList_CargoPlannedViaByFrom_Register(this->engine); + SQGSStationList_CargoWaiting_Register(this->engine); + SQGSStationList_CargoWaitingByFrom_Register(this->engine); + SQGSStationList_CargoWaitingByVia_Register(this->engine); + SQGSStationList_CargoWaitingFromByVia_Register(this->engine); + SQGSStationList_CargoWaitingViaByFrom_Register(this->engine); SQGSStationList_Vehicle_Register(this->engine); SQGSStoryPage_Register(this->engine); + SQGSStoryPageElementList_Register(this->engine); + SQGSStoryPageList_Register(this->engine); SQGSSubsidy_Register(this->engine); SQGSSubsidyList_Register(this->engine); SQGSTestMode_Register(this->engine); diff --git a/src/game/game_scanner.cpp b/src/game/game_scanner.cpp index f8c2b4f22e..bc02f6afd2 100644 --- a/src/game/game_scanner.cpp +++ b/src/game/game_scanner.cpp @@ -15,15 +15,17 @@ #include "game_info.hpp" #include "game_scanner.hpp" +#include "../safeguards.h" + void GameScannerInfo::Initialize() { ScriptScanner::Initialize("GSScanner"); } -void GameScannerInfo::GetScriptName(ScriptInfo *info, char *name, int len) +void GameScannerInfo::GetScriptName(ScriptInfo *info, char *name, const char *last) { - snprintf(name, len, "%s", info->GetName()); + seprintf(name, last, "%s", info->GetName()); } void GameScannerInfo::RegisterAPI(class Squirrel *engine) @@ -37,7 +39,7 @@ GameInfo *GameScannerInfo::FindInfo(const char *nameParam, int versionParam, boo if (nameParam == NULL) return NULL; char game_name[1024]; - ttd_strlcpy(game_name, nameParam, sizeof(game_name)); + strecpy(game_name, nameParam, lastof(game_name)); strtolower(game_name); GameInfo *info = NULL; @@ -59,7 +61,7 @@ GameInfo *GameScannerInfo::FindInfo(const char *nameParam, int versionParam, boo if (force_exact_match) { /* Try to find a direct 'name.version' match */ char game_name_tmp[1024]; - snprintf(game_name_tmp, sizeof(game_name_tmp), "%s.%d", game_name, versionParam); + seprintf(game_name_tmp, lastof(game_name_tmp), "%s.%d", game_name, versionParam); strtolower(game_name_tmp); if (this->info_list.find(game_name_tmp) != this->info_list.end()) return static_cast(this->info_list[game_name_tmp]); } @@ -84,10 +86,10 @@ void GameScannerLibrary::Initialize() ScriptScanner::Initialize("GSScanner"); } -void GameScannerLibrary::GetScriptName(ScriptInfo *info, char *name, int len) +void GameScannerLibrary::GetScriptName(ScriptInfo *info, char *name, const char *last) { GameLibrary *library = static_cast(info); - snprintf(name, len, "%s.%s", library->GetCategory(), library->GetInstanceName()); + seprintf(name, last, "%s.%s", library->GetCategory(), library->GetInstanceName()); } void GameScannerLibrary::RegisterAPI(class Squirrel *engine) @@ -99,7 +101,7 @@ GameLibrary *GameScannerLibrary::FindLibrary(const char *library, int version) { /* Internally we store libraries as 'library.version' */ char library_name[1024]; - snprintf(library_name, sizeof(library_name), "%s.%d", library, version); + seprintf(library_name, lastof(library_name), "%s.%d", library, version); strtolower(library_name); /* Check if the library + version exists */ diff --git a/src/game/game_scanner.hpp b/src/game/game_scanner.hpp index f1d334f0fc..071d19d38d 100644 --- a/src/game/game_scanner.hpp +++ b/src/game/game_scanner.hpp @@ -28,7 +28,7 @@ public: class GameInfo *FindInfo(const char *nameParam, int versionParam, bool force_exact_match); protected: - /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); + /* virtual */ void GetScriptName(ScriptInfo *info, char *name, const char *last); /* virtual */ const char *GetFileName() const { return PATHSEP "info.nut"; } /* virtual */ Subdirectory GetDirectory() const { return GAME_DIR; } /* virtual */ const char *GetScannerName() const { return "Game Scripts"; } @@ -49,7 +49,7 @@ public: class GameLibrary *FindLibrary(const char *library, int version); protected: - /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); + /* virtual */ void GetScriptName(ScriptInfo *info, char *name, const char *last); /* virtual */ const char *GetFileName() const { return PATHSEP "library.nut"; } /* virtual */ Subdirectory GetDirectory() const { return GAME_LIBRARY_DIR; } /* virtual */ const char *GetScannerName() const { return "GS Libraries"; } diff --git a/src/game/game_text.cpp b/src/game/game_text.cpp index 27e379077d..42ced20083 100644 --- a/src/game/game_text.cpp +++ b/src/game/game_text.cpp @@ -24,12 +24,14 @@ #include +#include "../safeguards.h" + void CDECL strgen_warning(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: warning: %s", _file, _cur_line, buf); _warnings++; @@ -40,7 +42,7 @@ void CDECL strgen_error(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: error: %s", _file, _cur_line, buf); _errors++; @@ -51,7 +53,7 @@ void NORETURN CDECL strgen_fatal(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: FATAL: %s", _file, _cur_line, buf); throw std::exception(); @@ -60,18 +62,11 @@ void NORETURN CDECL strgen_fatal(const char *s, ...) /** * Create a new container for language strings. * @param language The language name. + * @param end If not NULL, terminate \a language at this position. */ -LanguageStrings::LanguageStrings(const char *language) +LanguageStrings::LanguageStrings(const char *language, const char *end) { - const char *p = strrchr(language, PATHSEPCHAR); - if (p == NULL) { - p = language; - } else { - p++; - } - - const char *e = strchr(p, '.'); - this->language = e == NULL ? strdup(p) : strndup(p, e - p); + this->language = stredup(language, end != NULL ? end - 1 : NULL); } /** Free everything. */ @@ -88,14 +83,28 @@ LanguageStrings::~LanguageStrings() LanguageStrings *ReadRawLanguageStrings(const char *file) { LanguageStrings *ret = NULL; + FILE *fh = NULL; try { size_t to_read; - FILE *fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read); + fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read); if (fh == NULL) { return NULL; } - ret = new LanguageStrings(file); + const char *langname = strrchr(file, PATHSEPCHAR); + if (langname == NULL) { + langname = file; + } else { + langname++; + } + + /* Check for invalid empty filename */ + if (*langname == '.' || *langname == 0) { + fclose(fh); + return NULL; + } + + ret = new LanguageStrings(langname, strchr(langname, '.')); char buffer[2048]; while (to_read != 0 && fgets(buffer, sizeof(buffer), fh) != NULL) { @@ -106,7 +115,7 @@ LanguageStrings *ReadRawLanguageStrings(const char *file) while (i > 0 && (buffer[i - 1] == '\r' || buffer[i - 1] == '\n' || buffer[i - 1] == ' ')) i--; buffer[i] = '\0'; - *ret->lines.Append() = strndup(buffer, to_read); + *ret->lines.Append() = stredup(buffer, buffer + to_read - 1); if (len > to_read) { to_read = 0; @@ -115,8 +124,10 @@ LanguageStrings *ReadRawLanguageStrings(const char *file) } } + fclose(fh); return ret; } catch (...) { + if (fh != NULL) fclose(fh); delete ret; return NULL; } @@ -140,11 +151,11 @@ struct StringListReader : StringReader { { } - /* virtual */ char *ReadLine(char *buffer, size_t size) + /* virtual */ char *ReadLine(char *buffer, const char *last) { if (this->p == this->end) return NULL; - strncpy(buffer, *this->p, size); + strecpy(buffer, *this->p, last); this->p++; return buffer; @@ -201,7 +212,7 @@ struct StringNameWriter : HeaderWriter { void WriteStringID(const char *name, int stringid) { - if (stringid == (int)this->strings->Length()) *this->strings->Append() = strdup(name); + if (stringid == (int)this->strings->Length()) *this->strings->Append() = stredup(name); } void Finalise(const StringData &data) @@ -220,7 +231,7 @@ private: public: /** Initialise */ - LanguageScanner(GameStrings *gs, const char *exclude) : gs(gs), exclude(strdup(exclude)) {} + LanguageScanner(GameStrings *gs, const char *exclude) : gs(gs), exclude(stredup(exclude)) {} ~LanguageScanner() { free(exclude); } /** @@ -345,12 +356,12 @@ void RegisterGameTranslation(Squirrel *engine) HSQUIRRELVM vm = engine->GetVM(); sq_pushroottable(vm); - sq_pushstring(vm, _SC("GSText"), -1); + sq_pushstring(vm, "GSText", -1); if (SQ_FAILED(sq_get(vm, -2))) return; int idx = 0; for (const char * const *p = _current_data->string_names.Begin(); p != _current_data->string_names.End(); p++, idx++) { - sq_pushstring(vm, OTTD2SQ(*p), -1); + sq_pushstring(vm, *p, -1); sq_pushinteger(vm, idx); sq_rawset(vm, -3); } @@ -368,7 +379,7 @@ void ReconsiderGameScriptLanguage() if (_current_data == NULL) return; char temp[MAX_PATH]; - strecpy(temp, _current_language->file, temp + sizeof(temp)); + strecpy(temp, _current_language->file, lastof(temp)); /* Remove the extension */ char *l = strrchr(temp, '.'); diff --git a/src/game/game_text.hpp b/src/game/game_text.hpp index b367e63f9e..19a31049ec 100644 --- a/src/game/game_text.hpp +++ b/src/game/game_text.hpp @@ -26,7 +26,7 @@ struct LanguageStrings { const char *language; ///< Name of the language (base filename). StringList lines; ///< The lines of the file to pass into the parser/encoder. - LanguageStrings(const char *language); + LanguageStrings(const char *language, const char *end = NULL); ~LanguageStrings(); }; diff --git a/src/gamelog.cpp b/src/gamelog.cpp index b4b9fd7a62..400c0d22fb 100644 --- a/src/gamelog.cpp +++ b/src/gamelog.cpp @@ -21,6 +21,8 @@ #include +#include "safeguards.h" + extern const uint16 SAVEGAME_VERSION; ///< current savegame version extern SavegameType _savegame_type; ///< type of savegame we are loading @@ -93,53 +95,37 @@ void GamelogReset() _current_action = NULL; } -static const uint GAMELOG_BUF_LEN = 1024; ///< length of buffer for one line of text - -static uint _dbgofs = 0; ///< offset in current output buffer - -static void AddDebugText(char *buf, const char *s, ...) WARN_FORMAT(2, 3); - -static void AddDebugText(char *buf, const char *s, ...) -{ - if (GAMELOG_BUF_LEN <= _dbgofs) return; - - va_list va; - - va_start(va, s); - _dbgofs += vsnprintf(buf + _dbgofs, GAMELOG_BUF_LEN - _dbgofs, s, va); - va_end(va); -} - - /** * Prints GRF ID, checksum and filename if found - * @param buf The location in the _dbgofs buffer to draw + * @param buf The location in the buffer to draw + * @param last The end of the buffer * @param grfid GRF ID * @param md5sum array of md5sum to print, if known * @param gc GrfConfig, if known + * @return The buffer location. */ -static void PrintGrfInfo(char *buf, uint grfid, const uint8 *md5sum, const GRFConfig *gc) +static char *PrintGrfInfo(char *buf, const char *last, uint grfid, const uint8 *md5sum, const GRFConfig *gc) { char txt[40]; if (md5sum != NULL) { md5sumToString(txt, lastof(txt), md5sum); - AddDebugText(buf, "GRF ID %08X, checksum %s", BSWAP32(grfid), txt); + buf += seprintf(buf, last, "GRF ID %08X, checksum %s", BSWAP32(grfid), txt); } else { - AddDebugText(buf, "GRF ID %08X", BSWAP32(grfid)); + buf += seprintf(buf, last, "GRF ID %08X", BSWAP32(grfid)); } if (gc != NULL) { - AddDebugText(buf, ", filename: %s (md5sum matches)", gc->filename); + buf += seprintf(buf, last, ", filename: %s (md5sum matches)", gc->filename); } else { gc = FindGRFConfig(grfid, FGCM_ANY); if (gc != NULL) { - AddDebugText(buf, ", filename: %s (matches GRFID only)", gc->filename); + buf += seprintf(buf, last, ", filename: %s (matches GRFID only)", gc->filename); } else { - AddDebugText(buf, ", unknown GRF"); + buf += seprintf(buf, last, ", unknown GRF"); } } - return; + return buf; } @@ -177,7 +163,7 @@ typedef SmallMap GrfIDMapping; */ void GamelogPrint(GamelogPrintProc *proc) { - char buf[GAMELOG_BUF_LEN]; + char buffer[1024]; GrfIDMapping grf_names; proc("---- gamelog start ----"); @@ -187,58 +173,57 @@ void GamelogPrint(GamelogPrintProc *proc) for (const LoggedAction *la = _gamelog_action; la != laend; la++) { assert((uint)la->at < GLAT_END); - snprintf(buf, GAMELOG_BUF_LEN, "Tick %u: %s", (uint)la->tick, la_text[(uint)la->at]); - proc(buf); + seprintf(buffer, lastof(buffer), "Tick %u: %s", (uint)la->tick, la_text[(uint)la->at]); + proc(buffer); const LoggedChange *lcend = &la->change[la->changes]; for (const LoggedChange *lc = la->change; lc != lcend; lc++) { - _dbgofs = 0; - AddDebugText(buf, " "); + char *buf = buffer; switch (lc->ct) { default: NOT_REACHED(); case GLCT_MODE: - AddDebugText(buf, "New game mode: %u landscape: %u", + buf += seprintf(buf, lastof(buffer), "New game mode: %u landscape: %u", (uint)lc->mode.mode, (uint)lc->mode.landscape); break; case GLCT_REVISION: - AddDebugText(buf, "Revision text changed to %s, savegame version %u, ", + buf += seprintf(buf, lastof(buffer), "Revision text changed to %s, savegame version %u, ", lc->revision.text, lc->revision.slver); switch (lc->revision.modified) { - case 0: AddDebugText(buf, "not "); break; - case 1: AddDebugText(buf, "maybe "); break; + case 0: buf += seprintf(buf, lastof(buffer), "not "); break; + case 1: buf += seprintf(buf, lastof(buffer), "maybe "); break; default: break; } - AddDebugText(buf, "modified, _openttd_newgrf_version = 0x%08x", lc->revision.newgrf); + buf += seprintf(buf, lastof(buffer), "modified, _openttd_newgrf_version = 0x%08x", lc->revision.newgrf); break; case GLCT_OLDVER: - AddDebugText(buf, "Conversion from "); + buf += seprintf(buf, lastof(buffer), "Conversion from "); switch (lc->oldver.type) { default: NOT_REACHED(); case SGT_OTTD: - AddDebugText(buf, "OTTD savegame without gamelog: version %u, %u", + buf += seprintf(buf, lastof(buffer), "OTTD savegame without gamelog: version %u, %u", GB(lc->oldver.version, 8, 16), GB(lc->oldver.version, 0, 8)); break; case SGT_TTO: - AddDebugText(buf, "TTO savegame"); + buf += seprintf(buf, lastof(buffer), "TTO savegame"); break; case SGT_TTD: - AddDebugText(buf, "TTD savegame"); + buf += seprintf(buf, lastof(buffer), "TTD savegame"); break; case SGT_TTDP1: case SGT_TTDP2: - AddDebugText(buf, "TTDP savegame, %s format", + buf += seprintf(buf, lastof(buffer), "TTDP savegame, %s format", lc->oldver.type == SGT_TTDP1 ? "old" : "new"); if (lc->oldver.version != 0) { - AddDebugText(buf, ", TTDP version %u.%u.%u.%u", + buf += seprintf(buf, lastof(buffer), ", TTDP version %u.%u.%u.%u", GB(lc->oldver.version, 24, 8), GB(lc->oldver.version, 20, 4), GB(lc->oldver.version, 16, 4), GB(lc->oldver.version, 0, 16)); } @@ -247,25 +232,25 @@ void GamelogPrint(GamelogPrintProc *proc) break; case GLCT_SETTING: - AddDebugText(buf, "Setting changed: %s : %d -> %d", lc->setting.name, lc->setting.oldval, lc->setting.newval); + buf += seprintf(buf, lastof(buffer), "Setting changed: %s : %d -> %d", lc->setting.name, lc->setting.oldval, lc->setting.newval); break; case GLCT_GRFADD: { const GRFConfig *gc = FindGRFConfig(lc->grfadd.grfid, FGCM_EXACT, lc->grfadd.md5sum); - AddDebugText(buf, "Added NewGRF: "); - PrintGrfInfo(buf, lc->grfadd.grfid, lc->grfadd.md5sum, gc); + buf += seprintf(buf, lastof(buffer), "Added NewGRF: "); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfadd.grfid, lc->grfadd.md5sum, gc); GrfIDMapping::Pair *gm = grf_names.Find(lc->grfrem.grfid); - if (gm != grf_names.End() && !gm->second.was_missing) AddDebugText(buf, ". Gamelog inconsistency: GrfID was already added!"); + if (gm != grf_names.End() && !gm->second.was_missing) buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was already added!"); grf_names[lc->grfadd.grfid] = gc; break; } case GLCT_GRFREM: { GrfIDMapping::Pair *gm = grf_names.Find(lc->grfrem.grfid); - AddDebugText(buf, la->at == GLAT_LOAD ? "Missing NewGRF: " : "Removed NewGRF: "); - PrintGrfInfo(buf, lc->grfrem.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); + buf += seprintf(buf, lastof(buffer), la->at == GLAT_LOAD ? "Missing NewGRF: " : "Removed NewGRF: "); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfrem.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); if (gm == grf_names.End()) { - AddDebugText(buf, ". Gamelog inconsistency: GrfID was never added!"); + buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was never added!"); } else { if (la->at == GLAT_LOAD) { /* Missing grfs on load are not removed from the configuration */ @@ -279,27 +264,27 @@ void GamelogPrint(GamelogPrintProc *proc) case GLCT_GRFCOMPAT: { const GRFConfig *gc = FindGRFConfig(lc->grfadd.grfid, FGCM_EXACT, lc->grfadd.md5sum); - AddDebugText(buf, "Compatible NewGRF loaded: "); - PrintGrfInfo(buf, lc->grfcompat.grfid, lc->grfcompat.md5sum, gc); - if (!grf_names.Contains(lc->grfcompat.grfid)) AddDebugText(buf, ". Gamelog inconsistency: GrfID was never added!"); + buf += seprintf(buf, lastof(buffer), "Compatible NewGRF loaded: "); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfcompat.grfid, lc->grfcompat.md5sum, gc); + if (!grf_names.Contains(lc->grfcompat.grfid)) buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was never added!"); grf_names[lc->grfcompat.grfid] = gc; break; } case GLCT_GRFPARAM: { GrfIDMapping::Pair *gm = grf_names.Find(lc->grfrem.grfid); - AddDebugText(buf, "GRF parameter changed: "); - PrintGrfInfo(buf, lc->grfparam.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); - if (gm == grf_names.End()) AddDebugText(buf, ". Gamelog inconsistency: GrfID was never added!"); + buf += seprintf(buf, lastof(buffer), "GRF parameter changed: "); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfparam.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); + if (gm == grf_names.End()) buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was never added!"); break; } case GLCT_GRFMOVE: { GrfIDMapping::Pair *gm = grf_names.Find(lc->grfrem.grfid); - AddDebugText(buf, "GRF order changed: %08X moved %d places %s", + buf += seprintf(buf, lastof(buffer), "GRF order changed: %08X moved %d places %s", BSWAP32(lc->grfmove.grfid), abs(lc->grfmove.offset), lc->grfmove.offset >= 0 ? "down" : "up" ); - PrintGrfInfo(buf, lc->grfmove.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); - if (gm == grf_names.End()) AddDebugText(buf, ". Gamelog inconsistency: GrfID was never added!"); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfmove.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); + if (gm == grf_names.End()) buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was never added!"); break; } @@ -308,11 +293,11 @@ void GamelogPrint(GamelogPrintProc *proc) switch (lc->grfbug.bug) { default: NOT_REACHED(); case GBUG_VEH_LENGTH: - AddDebugText(buf, "Rail vehicle changes length outside a depot: GRF ID %08X, internal ID 0x%X", BSWAP32(lc->grfbug.grfid), (uint)lc->grfbug.data); + buf += seprintf(buf, lastof(buffer), "Rail vehicle changes length outside a depot: GRF ID %08X, internal ID 0x%X", BSWAP32(lc->grfbug.grfid), (uint)lc->grfbug.data); break; } - PrintGrfInfo(buf, lc->grfbug.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); - if (gm == grf_names.End()) AddDebugText(buf, ". Gamelog inconsistency: GrfID was never added!"); + buf = PrintGrfInfo(buf, lastof(buffer), lc->grfbug.grfid, NULL, gm != grf_names.End() ? gm->second.gc : NULL); + if (gm == grf_names.End()) buf += seprintf(buf, lastof(buffer), ". Gamelog inconsistency: GrfID was never added!"); break; } @@ -320,7 +305,7 @@ void GamelogPrint(GamelogPrintProc *proc) break; } - proc(buf); + proc(buffer); } } @@ -477,7 +462,7 @@ void GamelogSetting(const char *name, int32 oldval, int32 newval) LoggedChange *lc = GamelogChange(GLCT_SETTING); if (lc == NULL) return; - lc->setting.name = strdup(name); + lc->setting.name = stredup(name); lc->setting.oldval = oldval; lc->setting.newval = newval; } diff --git a/src/genworld.cpp b/src/genworld.cpp index 78fa6e3e7e..88e1b84a51 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -33,6 +33,9 @@ #include "error.h" #include "game/game.hpp" #include "game/game_instance.hpp" +#include "string_func.h" + +#include "safeguards.h" void GenerateClearTile(); @@ -98,13 +101,15 @@ static void _GenerateWorld(void *) try { _generating_world = true; _modal_progress_work_mutex->BeginCritical(); - if (_network_dedicated) DEBUG(net, 0, "Generating map, please wait..."); + if (_network_dedicated) DEBUG(net, 1, "Generating map, please wait..."); /* Set the Random() seed to generation_seed so we produce the same map with the same seed */ if (_settings_game.game_creation.generation_seed == GENERATE_NEW_SEED) _settings_game.game_creation.generation_seed = _settings_newgame.game_creation.generation_seed = InteractiveRandom(); _random.SetSeed(_settings_game.game_creation.generation_seed); SetGeneratingWorldProgress(GWP_MAP_INIT, 2); SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0); + BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP); + IncreaseGeneratingWorldProgress(GWP_MAP_INIT); /* Must start economy early because of the costs. */ StartupEconomy(); @@ -141,8 +146,6 @@ static void _GenerateWorld(void *) } } - ClearStorageChanges(true); - /* These are probably pointless when inside the scenario editor. */ SetGeneratingWorldProgress(GWP_GAME_INIT, 3); StartupCompanies(); @@ -179,6 +182,8 @@ static void _GenerateWorld(void *) } } + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP); + ResetObjectToPlace(); _cur_company.Trash(); _current_company = _local_company = _gw.lc; @@ -193,15 +198,16 @@ static void _GenerateWorld(void *) ShowNewGRFError(); - if (_network_dedicated) DEBUG(net, 0, "Map generated, starting game"); + if (_network_dedicated) DEBUG(net, 1, "Map generated, starting game"); DEBUG(desync, 1, "new_map: %08x", _settings_game.game_creation.generation_seed); if (_debug_desync_level > 0) { char name[MAX_PATH]; - snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); + seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false); } } catch (...) { + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP, true); if (_cur_company.IsValid()) _cur_company.Restore(); _generating_world = false; _modal_progress_work_mutex->EndCritical(); @@ -325,7 +331,7 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti _gw.thread = NULL; } - if (!_video_driver->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread)) { + if (!VideoDriver::GetInstance()->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread)) { DEBUG(misc, 1, "Cannot create genworld thread, reverting to single-threaded mode"); _gw.threaded = false; _modal_progress_work_mutex->EndCritical(); diff --git a/src/genworld.h b/src/genworld.h index 2673354234..ea3faa15fc 100644 --- a/src/genworld.h +++ b/src/genworld.h @@ -32,6 +32,17 @@ enum GenWorldMode { GWM_HEIGHTMAP = 3, ///< Generate a newgame from a heightmap }; +/** Smoothness presets. */ +enum TgenSmoothness { + TGEN_SMOOTHNESS_BEGIN, ///< First smoothness value. + TGEN_SMOOTHNESS_VERY_SMOOTH = TGEN_SMOOTHNESS_BEGIN, ///< Smoothness preset 'very smooth'. + TGEN_SMOOTHNESS_SMOOTH, ///< Smoothness preset 'smooth'. + TGEN_SMOOTHNESS_ROUGH, ///< Smoothness preset 'rough'. + TGEN_SMOOTHNESS_VERY_ROUGH, ///< Smoothness preset 'very rough'. + + TGEN_SMOOTHNESS_END, ///< Used to iterate. +}; + static const uint CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY = 4; ///< Value for custom sea level in difficulty settings. static const uint CUSTOM_SEA_LEVEL_MIN_PERCENTAGE = 1; ///< Minimum percentage a user can specify for custom sea level. static const uint CUSTOM_SEA_LEVEL_MAX_PERCENTAGE = 90; ///< Maximum percentage a user can specify for custom sea level. diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index b1ecc68eee..ad64ae802f 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -24,7 +24,6 @@ #include "widgets/dropdown_func.h" #include "querystring_gui.h" #include "town.h" -#include "settings_func.h" #include "core/geometry_func.hpp" #include "core/random_func.hpp" #include "progress.h" @@ -32,11 +31,13 @@ #include "widgets/genworld_widget.h" +#include "safeguards.h" + extern void MakeNewgameSettingsLive(); /** Enum for the modes we can generate in. */ -enum GenenerateLandscapeWindowMode { +enum GenerateLandscapeWindowMode { GLWM_GENERATE, ///< Generate new game. GLWM_HEIGHTMAP, ///< Load from heightmap. GLWM_SCENARIO, ///< Generate flat land. @@ -82,10 +83,9 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_LAND_GENERATOR, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_SEA_LAKES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1), EndContainer(), /* Widgets at the right of the labels. */ @@ -99,45 +99,47 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_LANDSCAPE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_EDITBOX, COLOUR_ORANGE, WID_GL_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAX_HEIGHTLEVEL, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - /* Starting date. */ + /* Max. heightlevel. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_MAX_HEIGHTLEVEL_UP), SetFill(0, 1), EndContainer(), /* Snow line. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), EndContainer(), + /* Starting date. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), + EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 4), @@ -197,12 +199,11 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), EndContainer(), /* Widgets at the right of the labels. */ NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), @@ -215,37 +216,40 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_EDITBOX, COLOUR_ORANGE, WID_GL_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAX_HEIGHTLEVEL, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_MAX_HEIGHTLEVEL_UP), SetFill(0, 1), + EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), - EndContainer(), EndContainer(), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1), EndContainer(), EndContainer(), EndContainer(), @@ -254,7 +258,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { EndContainer(), }; -static void StartGeneratingLandscape(GenenerateLandscapeWindowMode mode) +static void StartGeneratingLandscape(GenerateLandscapeWindowMode mode) { DeleteAllNonVitalWindows(); ClearErrorMessages(); @@ -274,7 +278,7 @@ static void StartGeneratingLandscape(GenenerateLandscapeWindowMode mode) static void LandscapeGenerationCallback(Window *w, bool confirmed) { - if (confirmed) StartGeneratingLandscape((GenenerateLandscapeWindowMode)w->window_number); + if (confirmed) StartGeneratingLandscape((GenerateLandscapeWindowMode)w->window_number); } static DropDownList *BuildMapsizeDropDown() @@ -284,13 +288,13 @@ static DropDownList *BuildMapsizeDropDown() for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) { DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); item->SetParam(0, 1 << i); - list->push_back(item); + *list->Append() = item; } return list; } -static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, INVALID_STRING_ID}; +static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, INVALID_STRING_ID}; static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM, INVALID_STRING_ID}; static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT, INVALID_STRING_ID}; static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; @@ -308,21 +312,15 @@ struct GenerateLandscapeWindow : public Window { uint x; uint y; char name[64]; - GenenerateLandscapeWindowMode mode; - QueryString seed_editbox; + GenerateLandscapeWindowMode mode; - GenerateLandscapeWindow(WindowDesc *desc, WindowNumber number = 0) : Window(desc), seed_editbox(11) + GenerateLandscapeWindow(WindowDesc *desc, WindowNumber number = 0) : Window(desc) { this->InitNested(number); this->LowerWidget(_settings_newgame.game_creation.landscape + WID_GL_TEMPERATE); - this->querystrings[WID_GL_RANDOM_EDITBOX] = &this->seed_editbox; - this->seed_editbox.text.Print("%u", _settings_newgame.game_creation.generation_seed); - this->seed_editbox.caption = STR_NULL; - this->seed_editbox.text.afilter = CS_NUMERAL; - - this->mode = (GenenerateLandscapeWindowMode)this->window_number; + this->mode = (GenerateLandscapeWindowMode)this->window_number; /* Disable town, industry and trees in SE */ this->SetWidgetDisabledState(WID_GL_TOWN_PULLDOWN, _game_mode == GM_EDITOR); @@ -336,10 +334,11 @@ struct GenerateLandscapeWindow : public Window { virtual void SetStringParameters(int widget) const { switch (widget) { - case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break; - case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break; - case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break; - case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break; + case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break; + case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break; + case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break; + case WID_GL_MAX_HEIGHTLEVEL_TEXT: SetDParam(0, _settings_newgame.construction.max_heightlevel); break; + case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break; case WID_GL_TOWN_PULLDOWN: if (_game_mode == GM_EDITOR) { @@ -404,10 +403,10 @@ struct GenerateLandscapeWindow : public Window { /* You can't select smoothness / non-water borders if not terragenesis */ if (mode == GLWM_GENERATE) { - this->SetWidgetDisabledState(WID_GL_SMOOTHNESS_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); - this->SetWidgetDisabledState(WID_GL_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); - this->SetWidgetDisabledState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges); - this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM, + this->SetWidgetDisabledState(WID_GL_SMOOTHNESS_PULLDOWN, _settings_newgame.game_creation.land_generator == LG_ORIGINAL); + this->SetWidgetDisabledState(WID_GL_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == LG_ORIGINAL); + this->SetWidgetDisabledState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges); + this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM, WID_GL_WATER_NW, WID_GL_WATER_NE, WID_GL_WATER_SE, WID_GL_WATER_SW, WIDGET_LIST_END); this->SetWidgetLoweredState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.water_borders == BORDERS_RANDOM); @@ -417,7 +416,7 @@ struct GenerateLandscapeWindow : public Window { this->SetWidgetLoweredState(WID_GL_WATER_SE, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SE)); this->SetWidgetLoweredState(WID_GL_WATER_SW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SW)); - this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC), + this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == LG_ORIGINAL && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC), WID_GL_TERRAIN_PULLDOWN, WID_GL_WATER_PULLDOWN, WIDGET_LIST_END); } @@ -425,13 +424,15 @@ struct GenerateLandscapeWindow : public Window { this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC); /* Update availability of decreasing / increasing start date and snow level */ + this->SetWidgetDisabledState(WID_GL_MAX_HEIGHTLEVEL_DOWN, _settings_newgame.construction.max_heightlevel <= MIN_MAX_HEIGHTLEVEL); + this->SetWidgetDisabledState(WID_GL_MAX_HEIGHTLEVEL_UP, _settings_newgame.construction.max_heightlevel >= MAX_MAX_HEIGHTLEVEL); this->SetWidgetDisabledState(WID_GL_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= MIN_YEAR); this->SetWidgetDisabledState(WID_GL_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR); this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); /* Do not allow a custom sea level with the original land generator. */ - if (_settings_newgame.game_creation.land_generator == 0 && + if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL && _settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { _settings_newgame.difficulty.quantity_sea_lakes = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; } @@ -442,32 +443,37 @@ struct GenerateLandscapeWindow : public Window { { const StringID *strs = NULL; switch (widget) { + case WID_GL_MAX_HEIGHTLEVEL_TEXT: + SetDParam(0, MAX_TILE_HEIGHT); + *size = GetStringBoundingBox(STR_JUST_INT); + break; + case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(MAX_YEAR, 0, 1)); - *size = GetStringBoundingBox(STR_BLACK_DATE_LONG); + *size = maxdim(*size, GetStringBoundingBox(STR_BLACK_DATE_LONG)); break; case WID_GL_MAPSIZE_X_PULLDOWN: case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParamMaxValue(0, MAX_MAP_SIZE); - *size = GetStringBoundingBox(STR_JUST_INT); + *size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT)); break; case WID_GL_SNOW_LEVEL_TEXT: SetDParamMaxValue(0, MAX_TILE_HEIGHT); - *size = GetStringBoundingBox(STR_JUST_INT); + *size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT)); break; case WID_GL_HEIGHTMAP_SIZE_TEXT: SetDParam(0, this->x); SetDParam(1, this->y); - *size = GetStringBoundingBox(STR_MAPGEN_HEIGHTMAP_SIZE); + *size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_HEIGHTMAP_SIZE)); break; case WID_GL_TOWN_PULLDOWN: strs = _num_towns; SetDParamMaxValue(0, CUSTOM_TOWN_MAX_NUMBER); - *size = GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER); + *size = maxdim(*size, GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER)); break; case WID_GL_INDUSTRY_PULLDOWN: strs = _num_inds; break; @@ -477,7 +483,7 @@ struct GenerateLandscapeWindow : public Window { case WID_GL_WATER_PULLDOWN: strs = _sea_lakes; SetDParamMaxValue(0, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE); - *size = GetStringBoundingBox(STR_SEA_LEVEL_CUSTOM_PERCENTAGE); + *size = maxdim(*size, GetStringBoundingBox(STR_SEA_LEVEL_CUSTOM_PERCENTAGE)); break; case WID_GL_RIVER_PULLDOWN: strs = _rivers; break; @@ -508,7 +514,7 @@ struct GenerateLandscapeWindow : public Window { } } size->width += padding.width; - size->height = FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; + size->height = max(size->height, (uint)(FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM)); } virtual void DrawWidget(const Rect &r, int widget) const @@ -547,12 +553,6 @@ struct GenerateLandscapeWindow : public Window { ShowDropDownMenu(this, _num_inds, _settings_newgame.difficulty.industry_density, WID_GL_INDUSTRY_PULLDOWN, 0, 0); break; - case WID_GL_RANDOM_BUTTON: // Random seed - _settings_newgame.game_creation.generation_seed = InteractiveRandom(); - this->seed_editbox.text.Print("%u", _settings_newgame.game_creation.generation_seed); - this->SetDirty(); - break; - case WID_GL_GENERATE_BUTTON: { // Generate /* Get rotated map size. */ uint map_x; @@ -580,6 +580,25 @@ struct GenerateLandscapeWindow : public Window { break; } + case WID_GL_MAX_HEIGHTLEVEL_DOWN: + case WID_GL_MAX_HEIGHTLEVEL_UP: // Height level buttons + /* Don't allow too fast scrolling */ + if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) { + this->HandleButtonClick(widget); + + _settings_newgame.construction.max_heightlevel = Clamp(_settings_newgame.construction.max_heightlevel + widget - WID_GL_MAX_HEIGHTLEVEL_TEXT, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL); + this->InvalidateData(); + } + _left_button_clicked = false; + break; + + case WID_GL_MAX_HEIGHTLEVEL_TEXT: // Height level text + this->widget_id = WID_GL_MAX_HEIGHTLEVEL_TEXT; + SetDParam(0, _settings_newgame.construction.max_heightlevel); + ShowQueryString(STR_JUST_INT, STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT); + break; + + case WID_GL_START_DATE_DOWN: case WID_GL_START_DATE_UP: // Year buttons /* Don't allow too fast scrolling */ @@ -613,7 +632,7 @@ struct GenerateLandscapeWindow : public Window { case WID_GL_SNOW_LEVEL_TEXT: // Snow line text this->widget_id = WID_GL_SNOW_LEVEL_TEXT; SetDParam(0, _settings_newgame.game_creation.snow_line_height); - ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_LINE_QUERY_CAPT, 3, this, CS_NUMERAL, QSF_ENABLE_DEFAULT); + ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_LINE_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT); break; case WID_GL_TREE_PULLDOWN: // Tree placer @@ -629,13 +648,14 @@ struct GenerateLandscapeWindow : public Window { break; case WID_GL_TERRAIN_PULLDOWN: // Terrain type - ShowDropDownMenu(this, _elevations, _settings_newgame.difficulty.terrain_type, WID_GL_TERRAIN_PULLDOWN, 0, 0); + /* For the original map generation only the first four are valid. */ + ShowDropDownMenu(this, _elevations, _settings_newgame.difficulty.terrain_type, WID_GL_TERRAIN_PULLDOWN, 0, _settings_newgame.game_creation.land_generator == LG_ORIGINAL ? ~0xF : 0); break; case WID_GL_WATER_PULLDOWN: { // Water quantity uint32 hidden_mask = 0; /* Disable custom water level when the original map generator is active. */ - if (_settings_newgame.game_creation.land_generator == 0) { + if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL) { SetBit(hidden_mask, CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY); } ShowDropDownMenu(this, _sea_lakes, _settings_newgame.difficulty.quantity_sea_lakes, WID_GL_WATER_PULLDOWN, 0, hidden_mask); @@ -684,7 +704,7 @@ struct GenerateLandscapeWindow : public Window { virtual void OnTimeout() { - static const int raise_widgets[] = {WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WIDGET_LIST_END}; + static const int raise_widgets[] = {WID_GL_MAX_HEIGHTLEVEL_DOWN, WID_GL_MAX_HEIGHTLEVEL_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WIDGET_LIST_END}; for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) { if (this->IsWidgetLowered(*widget)) { this->RaiseWidget(*widget); @@ -693,17 +713,6 @@ struct GenerateLandscapeWindow : public Window { } } - virtual void OnEditboxChanged(int wid) - { - if (wid == WID_GL_RANDOM_EDITBOX) { - /* the seed is unsigned, therefore atoi cannot be used. - * As UINT32_MAX is a 'magic' value (use random seed) it - * should not be possible to be entered into the input - * field; the generate seed button can be used instead. */ - _settings_newgame.game_creation.generation_seed = minu(strtoul(this->seed_editbox.text.buf, NULL, 10), UINT32_MAX - 1); - } - } - virtual void OnDropdownSelect(int widget, int index) { switch (widget) { @@ -713,7 +722,14 @@ struct GenerateLandscapeWindow : public Window { case WID_GL_RIVER_PULLDOWN: _settings_newgame.game_creation.amount_of_rivers = index; break; case WID_GL_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break; case WID_GL_VARIETY_PULLDOWN: _settings_newgame.game_creation.variety = index; break; - case WID_GL_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; break; + + case WID_GL_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; + /* If original landgenerator is selected and alpinist terrain_type was selected, revert to mountainous. */ + if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL) { + _settings_newgame.difficulty.terrain_type = Clamp(_settings_newgame.difficulty.terrain_type, 0, 3); + } + break; + case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break; case WID_GL_TOWN_PULLDOWN: @@ -722,20 +738,11 @@ struct GenerateLandscapeWindow : public Window { SetDParam(0, _settings_newgame.game_creation.custom_town_number); ShowQueryString(STR_JUST_INT, STR_MAPGEN_NUMBER_OF_TOWNS, 5, this, CS_NUMERAL, QSF_NONE); } - IConsoleSetSetting("difficulty.number_towns", index); - break; - - case WID_GL_INDUSTRY_PULLDOWN: - IConsoleSetSetting("difficulty.industry_density", index); + _settings_newgame.difficulty.number_towns = index; break; - case WID_GL_TERRAIN_PULLDOWN: { - GameMode old_gm = _game_mode; - _game_mode = GM_MENU; - IConsoleSetSetting("difficulty.terrain_type", index); - _game_mode = old_gm; - break; - } + case WID_GL_INDUSTRY_PULLDOWN: _settings_newgame.difficulty.industry_density = index; break; + case WID_GL_TERRAIN_PULLDOWN: _settings_newgame.difficulty.terrain_type = index; break; case WID_GL_WATER_PULLDOWN: { if ((uint)index == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { @@ -743,10 +750,7 @@ struct GenerateLandscapeWindow : public Window { SetDParam(0, _settings_newgame.game_creation.custom_sea_level); ShowQueryString(STR_JUST_INT, STR_MAPGEN_QUANTITY_OF_SEA_LAKES, 3, this, CS_NUMERAL, QSF_NONE); } - GameMode old_gm = _game_mode; - _game_mode = GM_MENU; - IConsoleSetSetting("difficulty.quantity_sea_lakes", index); - _game_mode = old_gm; + _settings_newgame.difficulty.quantity_sea_lakes = index; break; } } @@ -764,6 +768,7 @@ struct GenerateLandscapeWindow : public Window { } else { /* An empty string means revert to the default */ switch (this->widget_id) { + case WID_GL_MAX_HEIGHTLEVEL_TEXT: value = DEF_MAX_HEIGHTLEVEL; break; case WID_GL_START_DATE_TEXT: value = DEF_START_YEAR; break; case WID_GL_SNOW_LEVEL_TEXT: value = DEF_SNOWLINE_HEIGHT; break; case WID_GL_TOWN_PULLDOWN: value = 1; break; @@ -773,6 +778,11 @@ struct GenerateLandscapeWindow : public Window { } switch (this->widget_id) { + case WID_GL_MAX_HEIGHTLEVEL_TEXT: + this->SetWidgetDirty(WID_GL_MAX_HEIGHTLEVEL_TEXT); + _settings_newgame.construction.max_heightlevel = Clamp(value, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL); + break; + case WID_GL_START_DATE_TEXT: this->SetWidgetDirty(WID_GL_START_DATE_TEXT); _settings_newgame.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR); @@ -810,22 +820,23 @@ static WindowDesc _heightmap_load_desc( _nested_heightmap_load_widgets, lengthof(_nested_heightmap_load_widgets) ); -static void _ShowGenerateLandscape(GenenerateLandscapeWindowMode mode) +static void _ShowGenerateLandscape(GenerateLandscapeWindowMode mode) { uint x = 0; uint y = 0; DeleteWindowByClass(WC_GENERATE_LANDSCAPE); - /* Always give a new seed if not editor */ - if (_game_mode != GM_EDITOR) _settings_newgame.game_creation.generation_seed = InteractiveRandom(); + /* Generate a new seed when opening the window */ + _settings_newgame.game_creation.generation_seed = InteractiveRandom(); if (mode == GLWM_HEIGHTMAP) { /* If the function returns negative, it means there was a problem loading the heightmap */ if (!GetHeightmapDimensions(_file_to_saveload.name, &x, &y)) return; } - GenerateLandscapeWindow *w = AllocateWindowDescFront((mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode); + WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc; + GenerateLandscapeWindow *w = AllocateWindowDescFront(desc, mode, true); if (mode == GLWM_HEIGHTMAP) { w->x = x; @@ -933,7 +944,7 @@ struct CreateScenarioWindow : public Window default: return; } - *size = GetStringBoundingBox(str); + *size = maxdim(*size, GetStringBoundingBox(str)); size->width += padding.width; size->height += padding.height; } @@ -990,7 +1001,7 @@ struct CreateScenarioWindow : public Window this->HandleButtonClick(widget); this->SetDirty(); - _settings_newgame.game_creation.se_flat_world_height = Clamp(_settings_newgame.game_creation.se_flat_world_height + widget - WID_CS_FLAT_LAND_HEIGHT_TEXT, 0, MAX_TILE_HEIGHT); + _settings_newgame.game_creation.se_flat_world_height = Clamp(_settings_newgame.game_creation.se_flat_world_height + widget - WID_CS_FLAT_LAND_HEIGHT_TEXT, 0, _settings_game.construction.max_heightlevel); } _left_button_clicked = false; break; @@ -998,7 +1009,7 @@ struct CreateScenarioWindow : public Window case WID_CS_FLAT_LAND_HEIGHT_TEXT: // Height level text this->widget_id = WID_CS_FLAT_LAND_HEIGHT_TEXT; SetDParam(0, _settings_newgame.game_creation.se_flat_world_height); - ShowQueryString(STR_JUST_INT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, this, CS_NUMERAL, QSF_NONE); + ShowQueryString(STR_JUST_INT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_NONE); break; } } @@ -1036,7 +1047,7 @@ struct CreateScenarioWindow : public Window case WID_CS_FLAT_LAND_HEIGHT_TEXT: this->SetWidgetDirty(WID_CS_FLAT_LAND_HEIGHT_TEXT); - _settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, MAX_TILE_HEIGHT); + _settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, _settings_game.construction.max_heightlevel); break; } diff --git a/src/gfx.cpp b/src/gfx.cpp index 3fabf0b091..bc7f932441 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -23,11 +23,15 @@ #include "newgrf_debug.h" #include "table/palettes.h" +#include "table/string_colours.h" #include "table/sprites.h" #include "table/control_codes.h" +#include "safeguards.h" + byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down bool _fullscreen; +byte _support8bpp; CursorVars _cursor; bool _ctrl_pressed; ///< Is Ctrl pressed? bool _shift_pressed; ///< Is Shift pressed? @@ -53,6 +57,8 @@ static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, static ReusableBuffer _cursor_backup; +ZoomLevelByte _gui_zoom; ///< GUI Zoom level + /** * The rect for repaint. * @@ -73,7 +79,7 @@ extern uint _dirty_block_colour; void GfxScroll(int left, int top, int width, int height, int xo, int yo) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); if (xo == 0 && yo == 0) return; @@ -85,7 +91,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) blitter->ScrollBuffer(_screen.dst_ptr, left, top, width, height, xo, yo); /* This part of the screen is now dirty. */ - _video_driver->MakeDirty(left, top, width, height); + VideoDriver::GetInstance()->MakeDirty(left, top, width, height); } @@ -105,7 +111,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) */ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectMode mode) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const DrawPixelInfo *dpi = _cur_dpi; void *dst; const int otop = top; @@ -162,47 +168,43 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM * @param screen_height Height of the screen to check clipping against. * @param colour Colour of the line. * @param width Width of the line. + * @param dash Length of dashes for dashed lines. 0 means solid line. */ -static inline void GfxDoDrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width) +static inline void GfxDoDrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash = 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); assert(width > 0); - if (y2 == y) { - /* Special case: horizontal line. */ - blitter->DrawLine(video, - Clamp(x, 0, screen_width), y, - Clamp(x2, 0, screen_width), y2, - screen_width, screen_height, colour, width); - return; - } - if (x2 == x) { - /* Special case: vertical line. */ - blitter->DrawLine(video, - x, Clamp(y, 0, screen_height), - x2, Clamp(y2, 0, screen_height), - screen_width, screen_height, colour, width); + if (y2 == y || x2 == x) { + /* Special case: horizontal/vertical line. All checks already done in GfxPreprocessLine. */ + blitter->DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width, dash); return; } int grade_y = y2 - y; int grade_x = x2 - x; + /* Clipping rectangle. Slightly extended so we can ignore the width of the line. */ + uint extra = CeilDiv(3 * width, 4); // not less then "width * sqrt(2) / 2" + Rect clip = { -extra, -extra, screen_width - 1 + extra, screen_height - 1 + extra }; + /* prevent integer overflows. */ int margin = 1; - while (INT_MAX / abs(grade_y) < max(abs(x), abs(screen_width - x))) { + while (INT_MAX / abs(grade_y) < max(abs(clip.left - x), abs(clip.right - x))) { grade_y /= 2; grade_x /= 2; margin *= 2; // account for rounding errors } - /* If the line is outside the screen on the same side at X positions 0 - * and screen_width, we don't need to draw anything. */ - int offset_0 = y - x * grade_y / grade_x; - int offset_width = y + (screen_width - x) * grade_y / grade_x; - if ((offset_0 > screen_height + width / 2 + margin && offset_width > screen_height + width / 2 + margin) || - (offset_0 < -width / 2 - margin && offset_width < -width / 2 - margin)) { + /* Imagine that the line is infinitely long and it intersects with + * infinitely long left and right edges of the clipping rectangle. + * If both intersection points are outside the clipping rectangle + * and both on the same side of it, we don't need to draw anything. */ + int left_isec_y = y + (clip.left - x) * grade_y / grade_x; + int right_isec_y = y + (clip.right - x) * grade_y / grade_x; + if ((left_isec_y > clip.bottom + margin && right_isec_y > clip.bottom + margin) || + (left_isec_y < clip.top - margin && right_isec_y < clip.top - margin)) { return; } @@ -212,7 +214,7 @@ static inline void GfxDoDrawLine(void *video, int x, int y, int x2, int y2, int * of rounding errors so much additional code has to be run here that in * the general case the effect is not noticable. */ - blitter->DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width); + blitter->DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width, dash); } /** @@ -241,11 +243,11 @@ static inline bool GfxPreprocessLine(DrawPixelInfo *dpi, int &x, int &y, int &x2 return true; } -void GfxDrawLine(int x, int y, int x2, int y2, int colour, int width) +void GfxDrawLine(int x, int y, int x2, int y2, int colour, int width, int dash) { DrawPixelInfo *dpi = _cur_dpi; if (GfxPreprocessLine(dpi, x, y, x2, y2, width)) { - GfxDoDrawLine(dpi->dst_ptr, x, y, x2, y2, dpi->width, dpi->height, colour, width); + GfxDoDrawLine(dpi->dst_ptr, x, y, x2, y2, dpi->width, dpi->height, colour, width, dash); } } @@ -338,12 +340,12 @@ static void SetColourRemap(TextColour colour) * @return In case of left or center alignment the right most pixel we have drawn to. * In case of right alignment the left most pixel we have drawn to. */ -static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) +static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) { - if (line->countRuns() == 0) return 0; + if (line->CountRuns() == 0) return 0; - int w = line->getWidth(); - int h = line->getLeading(); + int w = line->GetWidth(); + int h = line->GetLeading(); /* * The following is needed for truncation. @@ -374,7 +376,7 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ * another size would be chosen it won't have truncated too little for * the truncation dots. */ - FontCache *fc = ((const Font*)line->getVisualRun(0)->getFont())->fc; + FontCache *fc = ((const Font*)line->GetVisualRun(0)->GetFont())->fc; GlyphID dot_glyph = fc->MapCharToGlyph('.'); dot_width = fc->GetGlyphWidth(dot_glyph); dot_sprite = fc->GetGlyph(dot_glyph); @@ -417,29 +419,31 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ NOT_REACHED(); } - for (int run_index = 0; run_index < line->countRuns(); run_index++) { - const ParagraphLayout::VisualRun *run = line->getVisualRun(run_index); - const Font *f = (const Font*)run->getFont(); + TextColour colour = TC_BLACK; + bool draw_shadow = false; + for (int run_index = 0; run_index < line->CountRuns(); run_index++) { + const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); + const Font *f = (const Font*)run->GetFont(); FontCache *fc = f->fc; - TextColour colour = f->colour; + colour = f->colour; SetColourRemap(colour); DrawPixelInfo *dpi = _cur_dpi; int dpi_left = dpi->left; int dpi_right = dpi->left + dpi->width - 1; - bool draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK; + draw_shadow = fc->GetDrawGlyphShadow() && (colour & TC_NO_SHADE) == 0 && colour != TC_BLACK; - for (int i = 0; i < run->getGlyphCount(); i++) { - GlyphID glyph = run->getGlyphs()[i]; + for (int i = 0; i < run->GetGlyphCount(); i++) { + GlyphID glyph = run->GetGlyphs()[i]; /* Not a valid glyph (empty) */ if (glyph == 0xFFFF) continue; - int begin_x = (int)run->getPositions()[i * 2] + left - offset_x; - int end_x = (int)run->getPositions()[i * 2 + 2] + left - offset_x - 1; - int top = (int)run->getPositions()[i * 2 + 1] + y; + int begin_x = (int)run->GetPositions()[i * 2] + left - offset_x; + int end_x = (int)run->GetPositions()[i * 2 + 2] + left - offset_x - 1; + int top = (int)run->GetPositions()[i * 2 + 1] + y; /* Truncated away. */ if (truncation && (begin_x < min_x || end_x > max_x)) continue; @@ -460,6 +464,11 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ if (truncation) { int x = (_current_text_dir == TD_RTL) ? left : (right - 3 * dot_width); for (int i = 0; i < 3; i++, x += dot_width) { + if (draw_shadow) { + SetColourRemap(TC_BLACK); + GfxMainBlitter(dot_sprite, x + 1, y + 1, BM_COLOUR_REMAP); + SetColourRemap(colour); + } GfxMainBlitter(dot_sprite, x, y, BM_COLOUR_REMAP); } } @@ -535,9 +544,9 @@ int DrawString(int left, int right, int top, StringID str, TextColour colour, St * @param maxw maximum string width * @return height of pixels of string when it is drawn */ -static int GetStringHeight(const char *str, int maxw) +int GetStringHeight(const char *str, int maxw, FontSize fontsize) { - Layouter layout(str, maxw); + Layouter layout(str, maxw, TC_FROMSTRING, fontsize); return layout.GetBounds().height; } @@ -639,10 +648,10 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, const char *st int last_line = top; int first_line = bottom; - for (ParagraphLayout::Line **iter = layout.Begin(); iter != layout.End(); iter++) { - ParagraphLayout::Line *line = *iter; + for (const ParagraphLayouter::Line **iter = layout.Begin(); iter != layout.End(); iter++) { + const ParagraphLayouter::Line *line = *iter; - int line_height = line->getLeading(); + int line_height = line->GetLeading(); if (y >= top && y < bottom) { last_line = y + line_height; if (first_line > y) first_line = y; @@ -771,6 +780,21 @@ Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom) return d; } +/** + * Helper function to get the blitter mode for different types of palettes. + * @param pal The palette to get the blitter mode for. + * @return The blitter mode associated with the palette. + */ +static BlitterMode GetBlitterMode(PaletteID pal) +{ + switch (pal) { + case PAL_NONE: return BM_NORMAL; + case PALETTE_CRASH: return BM_CRASH_REMAP; + case PALETTE_ALL_BLACK: return BM_BLACK_REMAP; + default: return BM_COLOUR_REMAP; + } +} + /** * Draw a sprite in a viewport. * @param img Image number to draw @@ -786,8 +810,12 @@ void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSpri _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite); } else if (pal != PAL_NONE) { - _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; - GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite); + if (HasBit(pal, PALETTE_TEXT_RECOLOUR)) { + SetColourRemap((TextColour)GB(pal, 0, PALETTE_WIDTH)); + } else { + _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; + } + GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, GetBlitterMode(pal), sub, real_sprite); } else { GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite); } @@ -809,148 +837,75 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite, zoom); } else if (pal != PAL_NONE) { - _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; - GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite, zoom); + if (HasBit(pal, PALETTE_TEXT_RECOLOUR)) { + SetColourRemap((TextColour)GB(pal, 0, PALETTE_WIDTH)); + } else { + _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; + } + GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, GetBlitterMode(pal), sub, real_sprite, zoom); } else { GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite, zoom); } } -static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id) +/** + * The code for setting up the blitter mode and sprite information before finally drawing the sprite. + * @param sprite The sprite to draw. + * @param x The X location to draw. + * @param y The Y location to draw. + * @param mode The settings for the blitter to pass. + * @param sub Whether to only draw a sub set of the sprite. + * @param zoom The zoom level at which to draw the sprites. + * @tparam ZOOM_BASE The factor required to get the sub sprite information into the right size. + * @tparam SCALED_XY Whether the X and Y are scaled or unscaled. + */ +template +static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mode, const SubSprite * const sub, SpriteID sprite_id, ZoomLevel zoom) { const DrawPixelInfo *dpi = _cur_dpi; Blitter::BlitterParams bp; - /* Amount of pixels to clip from the source sprite */ - int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left * ZOOM_LVL_BASE ) : 0); - int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top * ZOOM_LVL_BASE ) : 0); - int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_LVL_BASE)) : 0); - int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_LVL_BASE)) : 0); - - if (clip_left + clip_right >= sprite->width) return; - if (clip_top + clip_bottom >= sprite->height) return; + if (SCALED_XY) { + /* Scale it */ + x = ScaleByZoom(x, zoom); + y = ScaleByZoom(y, zoom); + } /* Move to the correct offset */ x += sprite->x_offs; y += sprite->y_offs; - /* Copy the main data directly from the sprite */ - bp.sprite = sprite->data; - bp.sprite_width = sprite->width; - bp.sprite_height = sprite->height; - bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, dpi->zoom); - bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, dpi->zoom); - bp.top = 0; - bp.left = 0; - bp.skip_left = UnScaleByZoomLower(clip_left, dpi->zoom); - bp.skip_top = UnScaleByZoomLower(clip_top, dpi->zoom); - - x += ScaleByZoom(bp.skip_left, dpi->zoom); - y += ScaleByZoom(bp.skip_top, dpi->zoom); - - bp.dst = dpi->dst_ptr; - bp.pitch = dpi->pitch; - bp.remap = _colour_remap_ptr; - - assert(sprite->width > 0); - assert(sprite->height > 0); - - if (bp.width <= 0) return; - if (bp.height <= 0) return; - - y -= dpi->top; - /* Check for top overflow */ - if (y < 0) { - bp.height -= -UnScaleByZoom(y, dpi->zoom); - if (bp.height <= 0) return; - bp.skip_top += -UnScaleByZoom(y, dpi->zoom); - y = 0; + if (sub == NULL) { + /* No clipping. */ + bp.skip_left = 0; + bp.skip_top = 0; + bp.width = UnScaleByZoom(sprite->width, zoom); + bp.height = UnScaleByZoom(sprite->height, zoom); } else { - bp.top = UnScaleByZoom(y, dpi->zoom); - } - - /* Check for bottom overflow */ - y += ScaleByZoom(bp.height, dpi->zoom) - dpi->height; - if (y > 0) { - bp.height -= UnScaleByZoom(y, dpi->zoom); - if (bp.height <= 0) return; + /* Amount of pixels to clip from the source sprite */ + int clip_left = max(0, -sprite->x_offs + sub->left * ZOOM_BASE ); + int clip_top = max(0, -sprite->y_offs + sub->top * ZOOM_BASE ); + int clip_right = max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_BASE)); + int clip_bottom = max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_BASE)); + + if (clip_left + clip_right >= sprite->width) return; + if (clip_top + clip_bottom >= sprite->height) return; + + bp.skip_left = UnScaleByZoomLower(clip_left, zoom); + bp.skip_top = UnScaleByZoomLower(clip_top, zoom); + bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, zoom); + bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, zoom); + + x += ScaleByZoom(bp.skip_left, zoom); + y += ScaleByZoom(bp.skip_top, zoom); } - x -= dpi->left; - /* Check for left overflow */ - if (x < 0) { - bp.width -= -UnScaleByZoom(x, dpi->zoom); - if (bp.width <= 0) return; - bp.skip_left += -UnScaleByZoom(x, dpi->zoom); - x = 0; - } else { - bp.left = UnScaleByZoom(x, dpi->zoom); - } - - /* Check for right overflow */ - x += ScaleByZoom(bp.width, dpi->zoom) - dpi->width; - if (x > 0) { - bp.width -= UnScaleByZoom(x, dpi->zoom); - if (bp.width <= 0) return; - } - - assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, dpi->zoom)); - assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, dpi->zoom)); - - /* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */ - if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); - void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top); - void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1); - - void *clicked = _newgrf_debug_sprite_picker.clicked_pixel; - - if (topleft <= clicked && clicked <= bottomright) { - uint offset = (((size_t)clicked - (size_t)topleft) / (blitter->GetScreenDepth() / 8)) % bp.pitch; - if (offset < (uint)bp.width) { - _newgrf_debug_sprite_picker.sprites.Include(sprite_id); - } - } - } - - BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom); -} - -static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom) -{ - const DrawPixelInfo *dpi = _cur_dpi; - Blitter::BlitterParams bp; - - /* Amount of pixels to clip from the source sprite */ - int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left ) : 0); - int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top ) : 0); - int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + sub->right + 1)) : 0); - int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + sub->bottom + 1)) : 0); - - if (clip_left + clip_right >= sprite->width) return; - if (clip_top + clip_bottom >= sprite->height) return; - - /* Scale it */ - x = ScaleByZoom(x, zoom); - y = ScaleByZoom(y, zoom); - - /* Move to the correct offset */ - x += sprite->x_offs; - y += sprite->y_offs; - /* Copy the main data directly from the sprite */ bp.sprite = sprite->data; bp.sprite_width = sprite->width; bp.sprite_height = sprite->height; - bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, zoom); - bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, zoom); bp.top = 0; bp.left = 0; - bp.skip_left = UnScaleByZoomLower(clip_left, zoom); - bp.skip_top = UnScaleByZoomLower(clip_top, zoom); - - x += ScaleByZoom(bp.skip_left, zoom); - y += ScaleByZoom(bp.skip_top, zoom); bp.dst = dpi->dst_ptr; bp.pitch = dpi->pitch; @@ -962,37 +917,39 @@ static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, if (bp.width <= 0) return; if (bp.height <= 0) return; - y -= ScaleByZoom(dpi->top, zoom); + y -= SCALED_XY ? ScaleByZoom(dpi->top, zoom) : dpi->top; + int y_unscaled = UnScaleByZoom(y, zoom); /* Check for top overflow */ if (y < 0) { - bp.height -= -UnScaleByZoom(y, zoom); + bp.height -= -y_unscaled; if (bp.height <= 0) return; - bp.skip_top += -UnScaleByZoom(y, zoom); + bp.skip_top += -y_unscaled; y = 0; } else { - bp.top = UnScaleByZoom(y, zoom); + bp.top = y_unscaled; } /* Check for bottom overflow */ - y += ScaleByZoom(bp.height - dpi->height, zoom); + y += SCALED_XY ? ScaleByZoom(bp.height - dpi->height, zoom) : ScaleByZoom(bp.height, zoom) - dpi->height; if (y > 0) { bp.height -= UnScaleByZoom(y, zoom); if (bp.height <= 0) return; } - x -= ScaleByZoom(dpi->left, zoom); + x -= SCALED_XY ? ScaleByZoom(dpi->left, zoom) : dpi->left; + int x_unscaled = UnScaleByZoom(x, zoom); /* Check for left overflow */ if (x < 0) { - bp.width -= -UnScaleByZoom(x, zoom); + bp.width -= -x_unscaled; if (bp.width <= 0) return; - bp.skip_left += -UnScaleByZoom(x, zoom); + bp.skip_left += -x_unscaled; x = 0; } else { - bp.left = UnScaleByZoom(x, zoom); + bp.left = x_unscaled; } /* Check for right overflow */ - x += ScaleByZoom(bp.width - dpi->width, zoom); + x += SCALED_XY ? ScaleByZoom(bp.width - dpi->width, zoom) : ScaleByZoom(bp.width, zoom) - dpi->width; if (x > 0) { bp.width -= UnScaleByZoom(x, zoom); if (bp.width <= 0) return; @@ -1003,7 +960,7 @@ static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, /* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */ if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top); void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1); @@ -1017,7 +974,17 @@ static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, } } - BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, zoom); + BlitterFactory::GetCurrentBlitter()->Draw(&bp, mode, zoom); +} + +static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id) +{ + GfxBlitter(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom); +} + +static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom) +{ + GfxBlitter<1, true>(sprite, x, y, mode, sub, sprite_id, zoom); } void DoPaletteAnimations(); @@ -1037,7 +1004,7 @@ void DoPaletteAnimations() static int palette_animation_counter = 0; palette_animation_counter += 8; - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const Colour *s; const ExtraPaletteValues *ev = &_extra_palette_values; Colour old_val[PALETTE_ANIM_SIZE]; @@ -1168,6 +1135,7 @@ void LoadStringWidthTable(bool monospace) } } + ClearFontCache(); ReInitAllWindows(); } @@ -1237,10 +1205,10 @@ void UndrawMouseCursor() if (_screen.dst_ptr == NULL) return; if (_cursor.visible) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); _cursor.visible = false; blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), _cursor_backup.GetBuffer(), _cursor.draw_size.x, _cursor.draw_size.y); - _video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); + VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); } } @@ -1254,7 +1222,7 @@ void DrawMouseCursor() /* Don't draw the mouse cursor if the screen is not ready */ if (_screen.dst_ptr == NULL) return; - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); int x; int y; int w; @@ -1300,7 +1268,7 @@ void DrawMouseCursor() _cur_dpi = &_screen; DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y); - _video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); + VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); _cursor.visible = true; _cursor.dirty = false; @@ -1324,7 +1292,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom) DrawOverlappedWindowForAll(left, top, right, bottom); - _video_driver->MakeDirty(left, top, right - left, bottom - top); + VideoDriver::GetInstance()->MakeDirty(left, top, right - left, bottom - top); } /** @@ -1507,7 +1475,7 @@ void MarkWholeScreenDirty() */ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const DrawPixelInfo *o = _cur_dpi; n->zoom = ZOOM_LVL_NORMAL; @@ -1560,10 +1528,10 @@ void UpdateCursorSize() CursorVars *cv = &_cursor; const Sprite *p = GetSprite(GB(cv->sprite, 0, SPRITE_WIDTH), ST_NORMAL); - cv->size.y = UnScaleByZoom(p->height, ZOOM_LVL_GUI); - cv->size.x = UnScaleByZoom(p->width, ZOOM_LVL_GUI); - cv->offs.x = UnScaleByZoom(p->x_offs, ZOOM_LVL_GUI); - cv->offs.y = UnScaleByZoom(p->y_offs, ZOOM_LVL_GUI); + cv->size.y = UnScaleGUI(p->height); + cv->size.x = UnScaleGUI(p->width); + cv->offs.x = UnScaleGUI(p->x_offs); + cv->offs.y = UnScaleGUI(p->y_offs); cv->dirty = true; } @@ -1631,14 +1599,64 @@ void SetAnimatedMouseCursor(const AnimCursor *table) SwitchAnimatedCursor(); } +/** + * Update cursor position on mouse movement. + * @param x New X position. + * @param y New Y position. + * @param queued True, if the OS queues mouse warps after pending mouse movement events. + * False, if the warp applies instantaneous. + * @return true, if the OS cursor position should be warped back to this->pos. + */ +bool CursorVars::UpdateCursorPosition(int x, int y, bool queued_warp) +{ + /* Detecting relative mouse movement is somewhat tricky. + * - There may be multiple mouse move events in the video driver queue (esp. when OpenTTD lags a bit). + * - When we request warping the mouse position (return true), a mouse move event is appended at the end of the queue. + * + * So, when this->fix_at is active, we use the following strategy: + * - The first movement triggers the warp to reset the mouse position. + * - Subsequent events have to compute movement relative to the previous event. + * - The relative movement is finished, when we receive the event matching the warp. + */ + + if (x == this->pos.x && y == this->pos.y) { + /* Warp finished. */ + this->queued_warp = false; + } + + this->delta.x = x - (this->queued_warp ? this->last_position.x : this->pos.x); + this->delta.y = y - (this->queued_warp ? this->last_position.y : this->pos.y); + + this->last_position.x = x; + this->last_position.y = y; + + bool need_warp = false; + if (this->fix_at) { + if (this->delta.x != 0 || this->delta.y != 0) { + /* Trigger warp. + * Note: We also trigger warping again, if there is already a pending warp. + * This makes it more tolerant about the OS or other software inbetween + * botchering the warp. */ + this->queued_warp = queued_warp; + need_warp = true; + } + } else if (this->pos.x != x || this->pos.y != y) { + this->queued_warp = false; // Cancel warping, we are no longer confining the position. + this->dirty = true; + this->pos.x = x; + this->pos.y = y; + } + return need_warp; +} + bool ChangeResInGame(int width, int height) { - return (_screen.width == width && _screen.height == height) || _video_driver->ChangeResolution(width, height); + return (_screen.width == width && _screen.height == height) || VideoDriver::GetInstance()->ChangeResolution(width, height); } bool ToggleFullScreen(bool fs) { - bool result = _video_driver->ToggleFullscreen(fs); + bool result = VideoDriver::GetInstance()->ToggleFullscreen(fs); if (_fullscreen != fs && _num_resolutions == 0) { DEBUG(driver, 0, "Could not find a suitable fullscreen resolution"); } diff --git a/src/gfx_func.h b/src/gfx_func.h index aa18f3f707..6576dee4fb 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -52,6 +52,7 @@ void CreateConsole(); extern byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down extern bool _fullscreen; +extern byte _support8bpp; extern CursorVars _cursor; extern bool _ctrl_pressed; ///< Is Ctrl pressed? extern bool _shift_pressed; ///< Is Shift pressed? @@ -118,11 +119,12 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, StringID str, void DrawCharCentered(uint32 c, int x, int y, TextColour colour); void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectMode mode = FILLRECT_OPAQUE); -void GfxDrawLine(int left, int top, int right, int bottom, int colour, int width = 1); +void GfxDrawLine(int left, int top, int right, int bottom, int colour, int width = 1, int dash = 0); void DrawBox(int x, int y, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3); Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize = FS_NORMAL); Dimension GetStringBoundingBox(StringID strid); +int GetStringHeight(const char *str, int maxw, FontSize fontsize = FS_NORMAL); int GetStringHeight(StringID str, int maxw); int GetStringLineCount(StringID str, int maxw); Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion); @@ -136,6 +138,7 @@ void SetDirtyBlocks(int left, int top, int right, int bottom); void MarkWholeScreenDirty(); void GfxInitPalettes(); +void CheckBlitter(); bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height); diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp index eca2d4ba45..2dba6a2046 100644 --- a/src/gfx_layout.cpp +++ b/src/gfx_layout.cpp @@ -13,6 +13,7 @@ #include "gfx_layout.h" #include "string_func.h" #include "strings_func.h" +#include "debug.h" #include "table/control_codes.h" @@ -20,6 +21,8 @@ #include #endif /* WITH_ICU */ +#include "safeguards.h" + /** Cache of ParagraphLayout lines. */ Layouter::LineCache *Layouter::linecache; @@ -110,7 +113,7 @@ le_bool Font::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &poin return FALSE; } -size_t Layouter::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c) +static size_t AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c) { /* Transform from UTF-32 to internal ICU format of UTF-16. */ int32 length = 0; @@ -119,7 +122,69 @@ size_t Layouter::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c) return length; } -ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping) +/** + * Wrapper for doing layouts with ICU. + */ +class ICUParagraphLayout : public AutoDeleteSmallVector, public ParagraphLayouter { + ParagraphLayout *p; ///< The actual ICU paragraph layout. +public: + /** Helper for GetLayouter, to get the right type. */ + typedef UChar CharType; + /** Helper for GetLayouter, to get whether the layouter supports RTL. */ + static const bool SUPPORTS_RTL = true; + + /** Visual run contains data about the bit of text with the same font. */ + class ICUVisualRun : public ParagraphLayouter::VisualRun { + const ParagraphLayout::VisualRun *vr; ///< The actual ICU vr. + + public: + ICUVisualRun(const ParagraphLayout::VisualRun *vr) : vr(vr) { } + + const Font *GetFont() const { return (const Font*)vr->getFont(); } + int GetGlyphCount() const { return vr->getGlyphCount(); } + const GlyphID *GetGlyphs() const { return vr->getGlyphs(); } + const float *GetPositions() const { return vr->getPositions(); } + int GetLeading() const { return vr->getLeading(); } + const int *GetGlyphToCharMap() const { return vr->getGlyphToCharMap(); } + }; + + /** A single line worth of VisualRuns. */ + class ICULine : public AutoDeleteSmallVector, public ParagraphLayouter::Line { + ParagraphLayout::Line *l; ///< The actual ICU line. + + public: + ICULine(ParagraphLayout::Line *l) : l(l) + { + for (int i = 0; i < l->countRuns(); i++) { + *this->Append() = new ICUVisualRun(l->getVisualRun(i)); + } + } + ~ICULine() { delete l; } + + int GetLeading() const { return l->getLeading(); } + int GetWidth() const { return l->getWidth(); } + int CountRuns() const { return l->countRuns(); } + const ParagraphLayouter::VisualRun *GetVisualRun(int run) const { return *this->Get(run); } + + int GetInternalCharLength(WChar c) const + { + /* ICU uses UTF-16 internally which means we need to account for surrogate pairs. */ + return Utf8CharLen(c) < 4 ? 1 : 2; + } + }; + + ICUParagraphLayout(ParagraphLayout *p) : p(p) { } + ~ICUParagraphLayout() { delete p; } + void Reflow() { p->reflow(); } + + ParagraphLayouter::Line *NextLine(int max_width) + { + ParagraphLayout::Line *l = p->nextLine(max_width); + return l == NULL ? NULL : new ICULine(l); + } +}; + +static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping) { int32 length = buff_end - buff; @@ -139,12 +204,81 @@ ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, Font LEErrorCode status = LE_NO_ERROR; /* ParagraphLayout does not copy "buff", so it must stay valid. * "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */ - return new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status); + ParagraphLayout *p = new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status); + if (status != LE_NO_ERROR) { + delete p; + return NULL; + } + + return new ICUParagraphLayout(p); } -#else /* WITH_ICU */ +#endif /* WITH_ICU */ /*** Paragraph layout ***/ +/** + * Class handling the splitting of a paragraph of text into lines and + * visual runs. + * + * One constructs this class with the text that needs to be split into + * lines. Then nextLine is called with the maximum width until NULL is + * returned. Each nextLine call creates VisualRuns which contain the + * length of text that are to be drawn with the same font. In other + * words, the result of this class is a list of sub strings with their + * font. The sub strings are then already fully laid out, and only + * need actual drawing. + * + * The positions in a visual run are sequential pairs of X,Y of the + * begin of each of the glyphs plus an extra pair to mark the end. + * + * @note This variant does not handle left-to-right properly. This + * is supported in the one ParagraphLayout coming from ICU. + */ +class FallbackParagraphLayout : public ParagraphLayouter { +public: + /** Helper for GetLayouter, to get the right type. */ + typedef WChar CharType; + /** Helper for GetLayouter, to get whether the layouter supports RTL. */ + static const bool SUPPORTS_RTL = false; + + /** Visual run contains data about the bit of text with the same font. */ + class FallbackVisualRun : public ParagraphLayouter::VisualRun { + Font *font; ///< The font used to layout these. + GlyphID *glyphs; ///< The glyphs we're drawing. + float *positions; ///< The positions of the glyphs. + int *glyph_to_char; ///< The char index of the glyphs. + int glyph_count; ///< The number of glyphs. + + public: + FallbackVisualRun(Font *font, const WChar *chars, int glyph_count, int x); + ~FallbackVisualRun(); + const Font *GetFont() const; + int GetGlyphCount() const; + const GlyphID *GetGlyphs() const; + const float *GetPositions() const; + int GetLeading() const; + const int *GetGlyphToCharMap() const; + }; + + /** A single line worth of VisualRuns. */ + class FallbackLine : public AutoDeleteSmallVector, public ParagraphLayouter::Line { + public: + int GetLeading() const; + int GetWidth() const; + int CountRuns() const; + const ParagraphLayouter::VisualRun *GetVisualRun(int run) const; + + int GetInternalCharLength(WChar c) const { return 1; } + }; + + const WChar *buffer_begin; ///< Begin of the buffer. + const WChar *buffer; ///< The current location in the buffer. + FontMap &runs; ///< The fonts we have to use for this paragraph. + + FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs); + void Reflow(); + const ParagraphLayouter::Line *NextLine(int max_width); +}; /** * Create the visual run. @@ -153,7 +287,7 @@ ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, Font * @param char_count The number of characters in this run. * @param x The initial x position for this run. */ -ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_count, int x) : +FallbackParagraphLayout::FallbackVisualRun::FallbackVisualRun(Font *font, const WChar *chars, int char_count, int x) : font(font), glyph_count(char_count) { this->glyphs = MallocT(this->glyph_count); @@ -173,7 +307,7 @@ ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_c } /** Free all data. */ -ParagraphLayout::VisualRun::~VisualRun() +FallbackParagraphLayout::FallbackVisualRun::~FallbackVisualRun() { free(this->positions); free(this->glyph_to_char); @@ -184,7 +318,7 @@ ParagraphLayout::VisualRun::~VisualRun() * Get the font associated with this run. * @return The font. */ -Font *ParagraphLayout::VisualRun::getFont() const +const Font *FallbackParagraphLayout::FallbackVisualRun::GetFont() const { return this->font; } @@ -193,7 +327,7 @@ Font *ParagraphLayout::VisualRun::getFont() const * Get the number of glyphs in this run. * @return The number of glyphs. */ -int ParagraphLayout::VisualRun::getGlyphCount() const +int FallbackParagraphLayout::FallbackVisualRun::GetGlyphCount() const { return this->glyph_count; } @@ -202,7 +336,7 @@ int ParagraphLayout::VisualRun::getGlyphCount() const * Get the glyphs of this run. * @return The glyphs. */ -const GlyphID *ParagraphLayout::VisualRun::getGlyphs() const +const GlyphID *FallbackParagraphLayout::FallbackVisualRun::GetGlyphs() const { return this->glyphs; } @@ -211,7 +345,7 @@ const GlyphID *ParagraphLayout::VisualRun::getGlyphs() const * Get the positions of this run. * @return The positions. */ -float *ParagraphLayout::VisualRun::getPositions() const +const float *FallbackParagraphLayout::FallbackVisualRun::GetPositions() const { return this->positions; } @@ -220,7 +354,7 @@ float *ParagraphLayout::VisualRun::getPositions() const * Get the glyph-to-character map for this visual run. * @return The glyph-to-character map. */ -const int *ParagraphLayout::VisualRun::getGlyphToCharMap() const +const int *FallbackParagraphLayout::FallbackVisualRun::GetGlyphToCharMap() const { return this->glyph_to_char; } @@ -229,20 +363,20 @@ const int *ParagraphLayout::VisualRun::getGlyphToCharMap() const * Get the height of this font. * @return The height of the font. */ -int ParagraphLayout::VisualRun::getLeading() const +int FallbackParagraphLayout::FallbackVisualRun::GetLeading() const { - return this->getFont()->fc->GetHeight(); + return this->GetFont()->fc->GetHeight(); } /** * Get the height of the line. * @return The maximum height of the line. */ -int ParagraphLayout::Line::getLeading() const +int FallbackParagraphLayout::FallbackLine::GetLeading() const { int leading = 0; - for (const VisualRun * const *run = this->Begin(); run != this->End(); run++) { - leading = max(leading, (*run)->getLeading()); + for (const FallbackVisualRun * const *run = this->Begin(); run != this->End(); run++) { + leading = max(leading, (*run)->GetLeading()); } return leading; @@ -252,7 +386,7 @@ int ParagraphLayout::Line::getLeading() const * Get the width of this line. * @return The width of the line. */ -int ParagraphLayout::Line::getWidth() const +int FallbackParagraphLayout::FallbackLine::GetWidth() const { if (this->Length() == 0) return 0; @@ -261,15 +395,15 @@ int ParagraphLayout::Line::getWidth() const * Since there is no left-to-right support, taking this value of * the last run gives us the end of the line and thus the width. */ - const VisualRun *run = this->getVisualRun(this->countRuns() - 1); - return (int)run->getPositions()[run->getGlyphCount() * 2]; + const ParagraphLayouter::VisualRun *run = this->GetVisualRun(this->CountRuns() - 1); + return (int)run->GetPositions()[run->GetGlyphCount() * 2]; } /** * Get the number of runs in this line. * @return The number of runs. */ -int ParagraphLayout::Line::countRuns() const +int FallbackParagraphLayout::FallbackLine::CountRuns() const { return this->Length(); } @@ -278,7 +412,7 @@ int ParagraphLayout::Line::countRuns() const * Get a specific visual run. * @return The visual run. */ -ParagraphLayout::VisualRun *ParagraphLayout::Line::getVisualRun(int run) const +const ParagraphLayouter::VisualRun *FallbackParagraphLayout::FallbackLine::GetVisualRun(int run) const { return *this->Get(run); } @@ -289,7 +423,7 @@ ParagraphLayout::VisualRun *ParagraphLayout::Line::getVisualRun(int run) const * @param length The length of the paragraph. * @param runs The font mapping of this paragraph. */ -ParagraphLayout::ParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs) +FallbackParagraphLayout::FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs) { assert(runs.End()[-1].first == length); } @@ -297,7 +431,7 @@ ParagraphLayout::ParagraphLayout(WChar *buffer, int length, FontMap &runs) : buf /** * Reset the position to the start of the paragraph. */ -void ParagraphLayout::reflow() +void FallbackParagraphLayout::Reflow() { this->buffer = this->buffer_begin; } @@ -307,7 +441,7 @@ void ParagraphLayout::reflow() * @param max_width The maximum width of the string. * @return A Line, or NULL when at the end of the paragraph. */ -ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width) +const ParagraphLayouter::Line *FallbackParagraphLayout::NextLine(int max_width) { /* Simple idea: * - split a line at a newline character, or at a space where we can break a line. @@ -315,12 +449,12 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width) */ if (this->buffer == NULL) return NULL; - Line *l = new Line(); + FallbackLine *l = new FallbackLine(); if (*this->buffer == '\0') { /* Only a newline. */ this->buffer = NULL; - *l->Append() = new VisualRun(this->runs.Begin()->second, this->buffer, 0, 0); + *l->Append() = new FallbackVisualRun(this->runs.Begin()->second, this->buffer, 0, 0); return l; } @@ -349,8 +483,8 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width) } if (this->buffer == next_run) { - int w = l->getWidth(); - *l->Append() = new VisualRun(iter->second, begin, this->buffer - begin, w); + int w = l->GetWidth(); + *l->Append() = new FallbackVisualRun(iter->second, begin, this->buffer - begin, w); iter++; assert(iter != this->runs.End()); @@ -396,8 +530,8 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width) } if (l->Length() == 0 || last_char - begin != 0) { - int w = l->getWidth(); - *l->Append() = new VisualRun(iter->second, begin, last_char - begin, w); + int w = l->GetWidth(); + *l->Append() = new FallbackVisualRun(iter->second, begin, last_char - begin, w); } return l; } @@ -409,7 +543,7 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width) * @param c The character to add. * @return The number of buffer spaces that were used. */ -size_t Layouter::AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c) +static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c) { *buff = c; return 1; @@ -422,11 +556,74 @@ size_t Layouter::AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c) * @param fontMapping THe mapping of the fonts. * @return The ParagraphLayout instance. */ -ParagraphLayout *Layouter::GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping) +static FallbackParagraphLayout *GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping) +{ + return new FallbackParagraphLayout(buff, buff_end - buff, fontMapping); +} + +/** + * Helper for getting a ParagraphLayouter of the given type. + * + * @note In case no ParagraphLayouter could be constructed, line.layout will be NULL. + * @param line The cache item to store our layouter in. + * @param str The string to create a layouter for. + * @param state The state of the font and color. + * @tparam T The type of layouter we want. + */ +template +static inline void GetLayouter(Layouter::LineCacheItem &line, const char *&str, FontState &state) { - return new ParagraphLayout(buff, buff_end - buff, fontMapping); + if (line.buffer != NULL) free(line.buffer); + + typename T::CharType *buff_begin = MallocT(DRAW_STRING_BUFFER); + const typename T::CharType *buffer_last = buff_begin + DRAW_STRING_BUFFER; + typename T::CharType *buff = buff_begin; + FontMap &fontMapping = line.runs; + Font *f = Layouter::GetFont(state.fontsize, state.cur_colour); + + line.buffer = buff_begin; + + /* + * Go through the whole string while adding Font instances to the font map + * whenever the font changes, and convert the wide characters into a format + * usable by ParagraphLayout. + */ + for (; buff < buffer_last;) { + WChar c = Utf8Consume(const_cast(&str)); + if (c == '\0' || c == '\n') { + break; + } else if (c >= SCC_BLUE && c <= SCC_BLACK) { + state.SetColour((TextColour)(c - SCC_BLUE)); + } else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour. + state.SetPreviousColour(); + } else if (c == SCC_TINYFONT) { + state.SetFontSize(FS_SMALL); + } else if (c == SCC_BIGFONT) { + state.SetFontSize(FS_LARGE); + } else { + /* Filter out text direction characters that shouldn't be drawn, and + * will not be handled in the fallback non ICU case because they are + * mostly needed for RTL languages which need more ICU support. */ + if (!T::SUPPORTS_RTL && IsTextDirectionChar(c)) continue; + buff += AppendToBuffer(buff, buffer_last, c); + continue; + } + + if (!fontMapping.Contains(buff - buff_begin)) { + fontMapping.Insert(buff - buff_begin, f); + } + f = Layouter::GetFont(state.fontsize, state.cur_colour); + } + + /* Better safe than sorry. */ + *buff = '\0'; + + if (!fontMapping.Contains(buff - buff_begin)) { + fontMapping.Insert(buff - buff_begin, f); + } + line.layout = GetParagraphLayout(buff_begin, buff, fontMapping); + line.state_after = state; } -#endif /* !WITH_ICU */ /** * Create a new layouter. @@ -454,56 +651,33 @@ Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsi /* Line is in cache */ str = lineend + 1; state = line.state_after; - line.layout->reflow(); + line.layout->Reflow(); } else { /* Line is new, layout it */ - const CharType *buffer_last = lastof(line.buffer); - CharType *buff_begin = line.buffer; - CharType *buff = buff_begin; - FontMap &fontMapping = line.runs; - Font *f = GetFont(state.fontsize, state.cur_colour); - - /* - * Go through the whole string while adding Font instances to the font map - * whenever the font changes, and convert the wide characters into a format - * usable by ParagraphLayout. - */ - for (; buff < buffer_last;) { - c = Utf8Consume(const_cast(&str)); - if (c == '\0' || c == '\n') { - break; - } else if (c >= SCC_BLUE && c <= SCC_BLACK) { - state.SetColour((TextColour)(c - SCC_BLUE)); - } else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour. - state.SetPreviousColour(); - } else if (c == SCC_TINYFONT) { - state.SetFontSize(FS_SMALL); - } else if (c == SCC_BIGFONT) { - state.SetFontSize(FS_LARGE); - } else { - buff += AppendToBuffer(buff, buffer_last, c); - continue; - } - - if (!fontMapping.Contains(buff - buff_begin)) { - fontMapping.Insert(buff - buff_begin, f); +#ifdef WITH_ICU + FontState old_state = state; + const char *old_str = str; + + GetLayouter(line, str, state); + if (line.layout == NULL) { + static bool warned = false; + if (!warned) { + DEBUG(misc, 0, "ICU layouter bailed on the font. Falling back to the fallback layouter"); + warned = true; } - f = GetFont(state.fontsize, state.cur_colour); - } - /* Better safe than sorry. */ - *buff = '\0'; - - if (!fontMapping.Contains(buff - buff_begin)) { - fontMapping.Insert(buff - buff_begin, f); + state = old_state; + str = old_str; + GetLayouter(line, str, state); } - line.layout = GetParagraphLayout(buff_begin, buff, fontMapping); - line.state_after = state; +#else + GetLayouter(line, str, state); +#endif } /* Copy all lines into a local cache so we can reuse them later on more easily. */ - ParagraphLayout::Line *l; - while ((l = line.layout->nextLine(maxw)) != NULL) { + const ParagraphLayouter::Line *l; + while ((l = line.layout->NextLine(maxw)) != NULL) { *this->Append() = l; } @@ -517,9 +691,9 @@ Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsi Dimension Layouter::GetBounds() { Dimension d = { 0, 0 }; - for (ParagraphLayout::Line **l = this->Begin(); l != this->End(); l++) { - d.width = max(d.width, (*l)->getWidth()); - d.height += (*l)->getLeading(); + for (const ParagraphLayouter::Line **l = this->Begin(); l != this->End(); l++) { + d.width = max(d.width, (*l)->GetWidth()); + d.height += (*l)->GetLeading(); } return d; } @@ -541,32 +715,27 @@ Point Layouter::GetCharPosition(const char *ch) const size_t len = Utf8Decode(&c, str); if (c == '\0' || c == '\n') break; str += len; -#ifdef WITH_ICU - /* ICU uses UTF-16 internally which means we need to account for surrogate pairs. */ - index += len < 4 ? 1 : 2; -#else - index++; -#endif + index += (*this->Begin())->GetInternalCharLength(c); } if (str == ch) { /* Valid character. */ - const ParagraphLayout::Line *line = *this->Begin(); + const ParagraphLayouter::Line *line = *this->Begin(); /* Pointer to the end-of-string/line marker? Return total line width. */ if (*ch == '\0' || *ch == '\n') { - Point p = { line->getWidth(), 0 }; + Point p = { line->GetWidth(), 0 }; return p; } /* Scan all runs until we've found our code point index. */ - for (int run_index = 0; run_index < line->countRuns(); run_index++) { - const ParagraphLayout::VisualRun *run = line->getVisualRun(run_index); + for (int run_index = 0; run_index < line->CountRuns(); run_index++) { + const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); - for (int i = 0; i < run->getGlyphCount(); i++) { + for (int i = 0; i < run->GetGlyphCount(); i++) { /* Matching glyph? Return position. */ - if ((size_t)run->getGlyphToCharMap()[i] == index) { - Point p = { (int)run->getPositions()[i * 2], (int)run->getPositions()[i * 2 + 1] }; + if ((size_t)run->GetGlyphToCharMap()[i] == index) { + Point p = { (int)run->GetPositions()[i * 2], (int)run->GetPositions()[i * 2 + 1] }; return p; } } @@ -584,35 +753,28 @@ Point Layouter::GetCharPosition(const char *ch) const */ const char *Layouter::GetCharAtPosition(int x) const { - const ParagraphLayout::Line *line = *this->Begin();; + const ParagraphLayouter::Line *line = *this->Begin(); - for (int run_index = 0; run_index < line->countRuns(); run_index++) { - const ParagraphLayout::VisualRun *run = line->getVisualRun(run_index); + for (int run_index = 0; run_index < line->CountRuns(); run_index++) { + const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); - for (int i = 0; i < run->getGlyphCount(); i++) { + for (int i = 0; i < run->GetGlyphCount(); i++) { /* Not a valid glyph (empty). */ - if (run->getGlyphs()[i] == 0xFFFF) continue; + if (run->GetGlyphs()[i] == 0xFFFF) continue; - int begin_x = (int)run->getPositions()[i * 2]; - int end_x = (int)run->getPositions()[i * 2 + 2]; + int begin_x = (int)run->GetPositions()[i * 2]; + int end_x = (int)run->GetPositions()[i * 2 + 2]; if (IsInsideMM(x, begin_x, end_x)) { /* Found our glyph, now convert to UTF-8 string index. */ - size_t index = run->getGlyphToCharMap()[i]; + size_t index = run->GetGlyphToCharMap()[i]; size_t cur_idx = 0; for (const char *str = this->string; *str != '\0'; ) { if (cur_idx == index) return str; - WChar c; - size_t len = Utf8Decode(&c, str); -#ifdef WITH_ICU - /* ICU uses UTF-16 internally which means we need to account for surrogate pairs. */ - cur_idx += len < 4 ? 1 : 2; -#else - cur_idx++; -#endif - str += len; + WChar c = Utf8Consume(&str); + cur_idx += line->GetInternalCharLength(c); } } } diff --git a/src/gfx_layout.h b/src/gfx_layout.h index fb8866cc89..7cd70ce280 100644 --- a/src/gfx_layout.h +++ b/src/gfx_layout.h @@ -97,84 +97,48 @@ public: /** Mapping from index to font. */ typedef SmallMap FontMap; -#ifndef WITH_ICU /** - * Class handling the splitting of a paragraph of text into lines and - * visual runs. - * - * One constructs this class with the text that needs to be split into - * lines. Then nextLine is called with the maximum width until NULL is - * returned. Each nextLine call creates VisualRuns which contain the - * length of text that are to be drawn with the same font. In other - * words, the result of this class is a list of sub strings with their - * font. The sub strings are then already fully laid out, and only - * need actual drawing. - * - * The positions in a visual run are sequential pairs of X,Y of the - * begin of each of the glyphs plus an extra pair to mark the end. - * - * @note This variant does not handle left-to-right properly. This - * is supported in the one ParagraphLayout coming from ICU. - * @note Does not conform to function naming style as it provides a - * fallback for the ICU class. + * Interface to glue fallback and normal layouter into one. */ -class ParagraphLayout { +class ParagraphLayouter { public: + virtual ~ParagraphLayouter() {} + /** Visual run contains data about the bit of text with the same font. */ class VisualRun { - Font *font; ///< The font used to layout these. - GlyphID *glyphs; ///< The glyphs we're drawing. - float *positions; ///< The positions of the glyphs. - int *glyph_to_char; ///< The char index of the glyphs. - int glyph_count; ///< The number of glyphs. - public: - VisualRun(Font *font, const WChar *chars, int glyph_count, int x); - ~VisualRun(); - Font *getFont() const; - int getGlyphCount() const; - const GlyphID *getGlyphs() const; - float *getPositions() const; - int getLeading() const; - const int *getGlyphToCharMap() const; + virtual ~VisualRun() {} + virtual const Font *GetFont() const = 0; + virtual int GetGlyphCount() const = 0; + virtual const GlyphID *GetGlyphs() const = 0; + virtual const float *GetPositions() const = 0; + virtual int GetLeading() const = 0; + virtual const int *GetGlyphToCharMap() const = 0; }; /** A single line worth of VisualRuns. */ - class Line : public AutoDeleteSmallVector { + class Line { public: - int getLeading() const; - int getWidth() const; - int countRuns() const; - VisualRun *getVisualRun(int run) const; + virtual ~Line() {} + virtual int GetLeading() const = 0; + virtual int GetWidth() const = 0; + virtual int CountRuns() const = 0; + virtual const VisualRun *GetVisualRun(int run) const = 0; + virtual int GetInternalCharLength(WChar c) const = 0; }; - const WChar *buffer_begin; ///< Begin of the buffer. - const WChar *buffer; ///< The current location in the buffer. - FontMap &runs; ///< The fonts we have to use for this paragraph. - - ParagraphLayout(WChar *buffer, int length, FontMap &runs); - void reflow(); - Line *nextLine(int max_width); + virtual void Reflow() = 0; + virtual const Line *NextLine(int max_width) = 0; }; -#endif /* !WITH_ICU */ /** * The layouter performs all the layout work. * * It also accounts for the memory allocations and frees. */ -class Layouter : public AutoDeleteSmallVector { -#ifdef WITH_ICU - typedef UChar CharType; ///< The type of character used within the layouter. -#else /* WITH_ICU */ - typedef WChar CharType; ///< The type of character used within the layouter. -#endif /* WITH_ICU */ - +class Layouter : public AutoDeleteSmallVector { const char *string; ///< Pointer to the original string. - size_t AppendToBuffer(CharType *buff, const CharType *buffer_last, WChar c); - ParagraphLayout *GetParagraphLayout(CharType *buff, CharType *buff_end, FontMap &fontMapping); - /** Key into the linecache */ struct LineCacheKey { FontState state_before; ///< Font state at the beginning of the line. @@ -189,18 +153,20 @@ class Layouter : public AutoDeleteSmallVector { return this->str < other.str; } }; +public: /** Item in the linecache */ struct LineCacheItem { /* Stuff that cannot be freed until the ParagraphLayout is freed */ - CharType buffer[DRAW_STRING_BUFFER]; ///< Accessed by both ICU's and our ParagraphLayout::nextLine. - FontMap runs; ///< Accessed by our ParagraphLayout::nextLine. + void *buffer; ///< Accessed by both ICU's and our ParagraphLayout::nextLine. + FontMap runs; ///< Accessed by our ParagraphLayout::nextLine. - FontState state_after; ///< Font state after the line. - ParagraphLayout *layout; ///< Layout of the line. + FontState state_after; ///< Font state after the line. + ParagraphLayouter *layout; ///< Layout of the line. - LineCacheItem() : layout(NULL) {} - ~LineCacheItem() { delete layout; } + LineCacheItem() : buffer(NULL), layout(NULL) {} + ~LineCacheItem() { delete layout; free(buffer); } }; +private: typedef std::map LineCache; static LineCache *linecache; @@ -208,9 +174,9 @@ class Layouter : public AutoDeleteSmallVector { typedef SmallMap FontColourMap; static FontColourMap fonts[FS_END]; +public: static Font *GetFont(FontSize size, TextColour colour); -public: Layouter(const char *str, int maxw = INT32_MAX, TextColour colour = TC_FROMSTRING, FontSize fontsize = FS_NORMAL); Dimension GetBounds(); Point GetCharPosition(const char *ch) const; diff --git a/src/gfx_type.h b/src/gfx_type.h index 2b792d0904..d25abff218 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -138,6 +138,12 @@ struct CursorVars { bool in_window; ///< mouse inside this window, determines drawing logic bool vehchain; ///< vehicle chain is dragged + + bool UpdateCursorPosition(int x, int y, bool queued_warp); + +private: + bool queued_warp; + Point last_position; }; /** Data about how and where to blit pixels. */ @@ -231,7 +237,7 @@ enum Colours { }; template <> struct EnumPropsT : MakeEnumPropsT {}; -/** Colour of the strings, see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png */ +/** Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palette.png */ enum TextColour { TC_BEGIN = 0x00, TC_FROMSTRING = 0x00, @@ -300,4 +306,11 @@ struct Palette { int count_dirty; ///< The number of dirty elements. }; +/** Modes for 8bpp support */ +enum Support8bpp { + S8BPP_NONE = 0, ///< No support for 8bpp by OS or hardware, force 32bpp blitters. + S8BPP_SYSTEM, ///< No 8bpp support by hardware, do not try to use 8bpp video modes or hardware palettes. + S8BPP_HARDWARE, ///< Full 8bpp support by OS and hardware. +}; + #endif /* GFX_TYPE_H */ diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index 0ee82d05ee..10bc0afa17 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -15,8 +15,10 @@ #include "3rdparty/md5/md5.h" #include "fontcache.h" #include "gfx_func.h" +#include "transparency.h" #include "blitter/factory.hpp" #include "video/video_driver.hpp" +#include "window_func.h" /* The type of set we're replacing */ #define SET_TYPE "graphics" @@ -24,6 +26,8 @@ #include "table/sprites.h" +#include "safeguards.h" + /** Whether the given NewGRFs must get a palette remap from windows to DOS or not. */ bool _palette_remap_grf[MAX_FILE_SLOTS]; @@ -225,29 +229,83 @@ static void LoadSpriteTables() /** * Check blitter needed by NewGRF config and switch if needed. + * @return False when nothing changed, true otherwise. */ -static void SwitchNewGRFBlitter() +static bool SwitchNewGRFBlitter() { - /* Get blitter of base set. */ - bool is_32bpp = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP; + /* Never switch if the blitter was specified by the user. */ + if (!_blitter_autodetected) return false; + + /* Null driver => dedicated server => do nothing. */ + if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 0) return false; - /* Get combined blitter mode of all NewGRFs. */ + /* Get preferred depth. + * - depth_wanted_by_base: Depth required by the baseset, i.e. the majority of the sprites. + * - depth_wanted_by_grf: Depth required by some NewGRF. + * Both can force using a 32bpp blitter. depth_wanted_by_base is used to select + * between multiple 32bpp blitters, which perform differently with 8bpp sprites. + */ + uint depth_wanted_by_base = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP ? 32 : 8; + uint depth_wanted_by_grf = _support8bpp == S8BPP_NONE ? 32 : 8; for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) { if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue; + if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32; + } - if (c->palette & GRFP_BLT_32BPP) is_32bpp = true; + /* Search the best blitter. */ + static const struct { + const char *name; + uint animation; ///< 0: no support, 1: do support, 2: both + uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth; + } replacement_blitters[] = { +#ifdef WITH_SSE + { "32bpp-sse4", 0, 32, 32, 8, 32 }, + { "32bpp-ssse3", 0, 32, 32, 8, 32 }, + { "32bpp-sse2", 0, 32, 32, 8, 32 }, + { "32bpp-sse4-anim", 1, 32, 32, 8, 32 }, +#endif + { "8bpp-optimized", 2, 8, 8, 8, 8 }, + { "32bpp-optimized", 0, 8, 32, 8, 32 }, + { "32bpp-anim", 1, 8, 32, 8, 32 }, + }; + + const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION); + const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); + + for (uint i = 0; i < lengthof(replacement_blitters); i++) { + if (animation_wanted && (replacement_blitters[i].animation == 0)) continue; + if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue; + + if (!IsInsideMM(depth_wanted_by_base, replacement_blitters[i].min_base_depth, replacement_blitters[i].max_base_depth + 1)) continue; + if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue; + const char *repl_blitter = replacement_blitters[i].name; + + if (strcmp(repl_blitter, cur_blitter) == 0) return false; + if (BlitterFactory::GetBlitterFactory(repl_blitter) == NULL) continue; + + DEBUG(misc, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter); + Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter); + if (new_blitter == NULL) NOT_REACHED(); + DEBUG(misc, 1, "Successfully switched to %s.", repl_blitter); + break; } - /* A GRF would like a 32 bpp blitter, switch blitter if needed. Never switch if the blitter was specified by the user. */ - if (_blitter_autodetected && is_32bpp && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 0 && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() < 16) { - const char *cur_blitter = BlitterFactoryBase::GetCurrentBlitter()->GetName(); - if (BlitterFactoryBase::SelectBlitter("32bpp-anim") != NULL) { - if (!_video_driver->AfterBlitterChange()) { - /* Failed to switch blitter, let's hope we can return to the old one. */ - if (BlitterFactoryBase::SelectBlitter(cur_blitter) == NULL || !_video_driver->AfterBlitterChange()) usererror("Failed to reinitialize video driver for 32 bpp blitter. Specify a fixed blitter in the config"); - } - } + if (!VideoDriver::GetInstance()->AfterBlitterChange()) { + /* Failed to switch blitter, let's hope we can return to the old one. */ + if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config"); } + + return true; +} + +/** Check whether we still use the right blitter, or use another (better) one. */ +void CheckBlitter() +{ + if (!SwitchNewGRFBlitter()) return; + + ClearFontCache(); + GfxClearSpriteCache(); + ReInitAllWindows(); } /** Initialise and load all the sprites. */ diff --git a/src/goal.cpp b/src/goal.cpp index 2f55be5de2..2f6ca242a9 100644 --- a/src/goal.cpp +++ b/src/goal.cpp @@ -19,10 +19,13 @@ #include "game/game.hpp" #include "command_func.h" #include "company_base.h" +#include "story_base.h" #include "string_func.h" #include "gui.h" #include "network/network.h" +#include "safeguards.h" + GoalID _new_goal_id; @@ -72,6 +75,13 @@ CommandCost CmdCreateGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (!Company::IsValidID(p2)) return CMD_ERROR; break; + case GT_STORY_PAGE: { + if (!StoryPage::IsValidID(p2)) return CMD_ERROR; + CompanyByte story_company = StoryPage::Get(p2)->company; + if (company == INVALID_COMPANY ? story_company != INVALID_COMPANY : story_company != INVALID_COMPANY && story_company != company) return CMD_ERROR; + break; + } + default: return CMD_ERROR; } @@ -80,11 +90,16 @@ CommandCost CmdCreateGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 g->type = type; g->dst = p2; g->company = company; - g->text = strdup(text); + g->text = stredup(text); g->progress = NULL; g->completed = false; - InvalidateWindowData(WC_GOALS_LIST, 0); + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } + if (Goal::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0); _new_goal_id = g->index; } @@ -108,9 +123,15 @@ CommandCost CmdRemoveGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (flags & DC_EXEC) { Goal *g = Goal::Get(p1); + CompanyID c = g->company; delete g; - InvalidateWindowData(WC_GOALS_LIST, 0); + if (c == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, c); + } + if (Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0); } return CommandCost(); @@ -134,9 +155,13 @@ CommandCost CmdSetGoalText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 if (flags & DC_EXEC) { Goal *g = Goal::Get(p1); free(g->text); - g->text = strdup(text); + g->text = stredup(text); - InvalidateWindowData(WC_GOALS_LIST, 0); + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } } return CommandCost(); @@ -162,10 +187,14 @@ CommandCost CmdSetGoalProgress(TileIndex tile, DoCommandFlag flags, uint32 p1, u if (StrEmpty(text)) { g->progress = NULL; } else { - g->progress = strdup(text); + g->progress = stredup(text); } - InvalidateWindowData(WC_GOALS_LIST, 0); + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } } return CommandCost(); @@ -189,7 +218,11 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1, Goal *g = Goal::Get(p1); g->completed = p2 == 1; - InvalidateWindowData(WC_GOALS_LIST, 0); + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } } return CommandCost(); diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp index f401b6dc1e..f98189d183 100644 --- a/src/goal_gui.cpp +++ b/src/goal_gui.cpp @@ -21,12 +21,16 @@ #include "core/geometry_func.hpp" #include "company_func.h" #include "company_base.h" +#include "story_base.h" #include "command_func.h" +#include "string_func.h" #include "widgets/goal_widget.h" #include "table/strings.h" +#include "safeguards.h" + /** Goal list columns. */ enum GoalColumn { GC_GOAL = 0, ///< Goal text column. @@ -42,6 +46,7 @@ struct GoalListWindow : public Window { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_GOAL_SCROLLBAR); this->FinishInitNested(window_number); + this->owner = (Owner)this->window_number; this->OnInvalidateData(0); } @@ -121,6 +126,21 @@ struct GoalListWindow : public Window { xy = Town::Get(s->dst)->xy; break; + case GT_STORY_PAGE: { + if (!StoryPage::IsValidID(s->dst)) return; + + /* Verify that: + * - if global goal: story page must be global. + * - if company goal: story page must be global or of the same company. + */ + CompanyID goal_company = s->company; + CompanyID story_company = StoryPage::Get(s->dst)->company; + if (goal_company == INVALID_COMPANY ? story_company != INVALID_COMPANY : story_company != INVALID_COMPANY && story_company != goal_company) return; + + ShowStoryBook((CompanyID)this->window_number, s->dst); + return; + } + default: NOT_REACHED(); } @@ -218,8 +238,8 @@ struct GoalListWindow : public Window { } } - if (column == GC_GOAL && num == 0) { - if (IsInsideMM(pos, 0, cap)) { + if (num == 0) { + if (column == GC_GOAL && IsInsideMM(pos, 0, cap)) { StringID str = !global_section && this->window_number == INVALID_COMPANY ? STR_GOALS_SPECTATOR_NONE : STR_GOALS_NONE; DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, str); } @@ -256,6 +276,8 @@ struct GoalListWindow : public Window { { this->DrawWidgets(); + if (this->IsShaded()) return; // Don't draw anything when the window is shaded. + /* Calculate progress column width. */ uint max_width = 0; Goal *s; @@ -343,7 +365,7 @@ struct GoalQuestionWindow : public Window { GoalQuestionWindow(WindowDesc *desc, WindowNumber window_number, byte type, uint32 button_mask, const char *question) : Window(desc), type(type) { assert(type < GOAL_QUESTION_TYPE_COUNT); - this->question = strdup(question); + this->question = stredup(question); /* Figure out which buttons we have to enable. */ uint bit; diff --git a/src/goal_type.h b/src/goal_type.h index 75b4c13f65..aa9dee349d 100644 --- a/src/goal_type.h +++ b/src/goal_type.h @@ -24,6 +24,7 @@ enum GoalType { GT_INDUSTRY, ///< Destination is an industry GT_TOWN, ///< Destination is a town GT_COMPANY, ///< Destination is a company + GT_STORY_PAGE, ///< Destination is a story page }; typedef SimpleTinyEnumT GoalTypeByte; ///< The GoalType packed into a byte for savegame purposes. diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index f63c57127e..c12c6ace4d 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -30,6 +30,8 @@ #include "table/sprites.h" #include +#include "safeguards.h" + /* Bitmasks of company and cargo indices that shouldn't be drawn. */ static uint _legend_excluded_companies; static uint _legend_excluded_cargo; @@ -200,6 +202,8 @@ protected: */ ValuesInterval GetValuesInterval(int num_hori_lines) const { + assert(num_hori_lines > 0); + ValuesInterval current_interval; current_interval.highest = INT64_MIN; current_interval.lowest = INT64_MAX; diff --git a/src/ground_vehicle.cpp b/src/ground_vehicle.cpp index 5712b28f96..fcdab77b03 100644 --- a/src/ground_vehicle.cpp +++ b/src/ground_vehicle.cpp @@ -14,6 +14,8 @@ #include "roadveh.h" #include "depot_map.h" +#include "safeguards.h" + /** * Recalculates the cached total power of a vehicle. Should be called when the consist is changed. */ @@ -106,15 +108,30 @@ int GroundVehicle::GetAcceleration() const { /* Templated class used for function calls for performance reasons. */ const T *v = T::From(this); - int32 speed = v->GetCurrentSpeed(); // [km/h-ish] + /* Speed is used squared later on, so U16 * U16, and then multiplied by other values. */ + int64 speed = v->GetCurrentSpeed(); // [km/h-ish] /* Weight is stored in tonnes. */ int32 mass = this->gcache.cached_weight; - /* Power is stored in HP, we need it in watts. */ - int32 power = this->gcache.cached_power * 746; - - int32 resistance = 0; + /* Power is stored in HP, we need it in watts. + * Each vehicle can have U16 power, 128 vehicles, HP -> watt + * and km/h to m/s conversion below result in a maxium of + * about 1.1E11, way more than 4.3E9 of int32. */ + int64 power = this->gcache.cached_power * 746ll; + + /* This is constructed from: + * - axle resistance: U16 power * 10 for 128 vehicles. + * * 8.3E7 + * - rolling friction: U16 power * 144 for 128 vehicles. + * * 1.2E9 + * - slope resistance: U16 weight * 100 * 10 (steepness) for 128 vehicles. + * * 8.4E9 + * - air drag: 28 * (U8 drag + 3 * U8 drag * 128 vehicles / 20) * U16 speed * U16 speed + * * 6.2E14 before dividing by 1000 + * Sum is 6.3E11, more than 4.3E9 of int32, so int64 is needed. + */ + int64 resistance = 0; bool maglev = v->GetAccelerationType() == 2; @@ -134,7 +151,9 @@ int GroundVehicle::GetAcceleration() const AccelStatus mode = v->GetAccelerationStatus(); const int max_te = this->gcache.cached_max_te; // [N] - int force; + /* Constructued from power, with need to multiply by 18 and assuming + * low speed, it needs to be a 64 bit integer too. */ + int64 force; if (speed > 0) { if (!maglev) { /* Conversion factor from km/h to m/s is 5/18 to get [N] in the end. */ @@ -158,10 +177,10 @@ int GroundVehicle::GetAcceleration() const * down hill will never slow down enough, and a vehicle that came up * a hill will never speed up enough to (eventually) get back to the * same (maximum) speed. */ - int accel = (force - resistance) / (mass * 4); + int accel = ClampToI32((force - resistance) / (mass * 4)); return force < resistance ? min(-1, accel) : max(1, accel); } else { - return min(-force - resistance, -10000) / mass; + return ClampToI32(min(-force - resistance, -10000) / mass); } } diff --git a/src/ground_vehicle.hpp b/src/ground_vehicle.hpp index 80a88b705f..56b97875fc 100644 --- a/src/ground_vehicle.hpp +++ b/src/ground_vehicle.hpp @@ -113,9 +113,9 @@ struct GroundVehicle : public SpecializedVehicle { * Calculates the total slope resistance for this vehicle. * @return Slope resistance. */ - inline int32 GetSlopeResistance() const + inline int64 GetSlopeResistance() const { - int32 incl = 0; + int64 incl = 0; for (const T *u = T::From(this); u != NULL; u = u->Next()) { if (HasBit(u->gv_flags, GVF_GOINGUP_BIT)) { @@ -231,9 +231,9 @@ struct GroundVehicle : public SpecializedVehicle { * @param update_delta Indicates to also update the delta. * @return Old height of the vehicle. */ - inline byte UpdateInclination(bool new_tile, bool update_delta) + inline int UpdateInclination(bool new_tile, bool update_delta) { - byte old_z = this->z_pos; + int old_z = this->z_pos; if (new_tile) { this->UpdateZPositionAndInclination(); diff --git a/src/group.h b/src/group.h index d8680c294d..91ee77e601 100644 --- a/src/group.h +++ b/src/group.h @@ -71,6 +71,8 @@ struct Group : GroupPool::PoolItem<&_group_pool> { bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group GroupStatistics statistics; ///< NOSAVE: Statistics and caches on the vehicles in the group. + GroupID parent; ///< Parent group + Group(CompanyID owner = INVALID_COMPANY); ~Group(); }; @@ -101,6 +103,7 @@ void SetTrainGroupID(Train *v, GroupID grp); void UpdateTrainGroupID(Train *v); void RemoveVehicleFromGroup(const Vehicle *v); void RemoveAllGroupsForCompany(const CompanyID company); +bool GroupIsInGroup(GroupID search, GroupID group); extern GroupID _new_group_id; diff --git a/src/group_cmd.cpp b/src/group_cmd.cpp index e86b9de283..12cce41f74 100644 --- a/src/group_cmd.cpp +++ b/src/group_cmd.cpp @@ -24,6 +24,8 @@ #include "table/strings.h" +#include "safeguards.h" + GroupID _new_group_id; GroupPool _group_pool("Group"); @@ -285,6 +287,7 @@ CommandCost CmdCreateGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 Group *g = new Group(_current_company); g->replace_protection = false; g->vehicle_type = vt; + g->parent = INVALID_GROUP; _new_group_id = g->index; @@ -313,6 +316,14 @@ CommandCost CmdDeleteGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 /* Remove all vehicles from the group */ DoCommand(0, p1, 0, flags, CMD_REMOVE_ALL_VEHICLES_GROUP); + /* Delete sub-groups */ + Group *gp; + FOR_ALL_GROUPS(gp) { + if (gp->parent == g->index) { + DoCommand(0, gp->index, 0, flags, CMD_DELETE_GROUP); + } + } + if (flags & DC_EXEC) { /* Update backupped orders if needed */ OrderBackup::ClearGroup(g->index); @@ -352,33 +363,56 @@ static bool IsUniqueGroupNameForVehicleType(const char *name, VehicleType type) } /** - * Rename a group + * Alter a group * @param tile unused * @param flags type of operation * @param p1 index of array group * - p1 bit 0-15 : GroupID - * @param p2 unused + * - p1 bit 16: 0 - Rename grouop + * 1 - Set group parent + * @param p2 parent group index * @param text the new name or an empty string when resetting to the default * @return the cost of this operation or an error */ -CommandCost CmdRenameGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +CommandCost CmdAlterGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { - Group *g = Group::GetIfValid(p1); + Group *g = Group::GetIfValid(GB(p1, 0, 16)); if (g == NULL || g->owner != _current_company) return CMD_ERROR; - bool reset = StrEmpty(text); + if (!HasBit(p1, 16)) { + /* Rename group */ + bool reset = StrEmpty(text); + + if (!reset) { + if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR; + if (!IsUniqueGroupNameForVehicleType(text, g->vehicle_type)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE); + } - if (!reset) { - if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR; - if (!IsUniqueGroupNameForVehicleType(text, g->vehicle_type)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE); + if (flags & DC_EXEC) { + /* Delete the old name */ + free(g->name); + /* Assign the new one */ + g->name = reset ? NULL : stredup(text); + } + } else { + /* Set group parent */ + const Group *pg = Group::GetIfValid(GB(p2, 0, 16)); + + if (pg != NULL) { + if (pg->owner != _current_company) return CMD_ERROR; + if (pg->vehicle_type != g->vehicle_type) return CMD_ERROR; + + /* Ensure request parent isn't child of group. + * This is the only place that infinite loops are prevented. */ + if (GroupIsInGroup(pg->index, g->index)) return CMD_ERROR; + } + + if (flags & DC_EXEC) { + g->parent = (pg == NULL) ? INVALID_GROUP : pg->index; + } } if (flags & DC_EXEC) { - /* Delete the old name */ - free(g->name); - /* Assign the new one */ - g->name = reset ? NULL : strdup(text); - SetWindowDirty(WC_REPLACE_VEHICLE, g->vehicle_type); InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); } @@ -542,6 +576,20 @@ CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, DoCommandFlag flags, uint3 return CommandCost(); } +/** + * Set replace protection for a group and its sub-groups. + * @param g initial group. + * @param protect 1 to set or 0 to clear protection. + */ +static void SetGroupReplaceProtection(Group *g, bool protect) +{ + g->replace_protection = protect; + + Group *pg; + FOR_ALL_GROUPS(pg) { + if (pg->parent == g->index) SetGroupReplaceProtection(pg, protect); + } +} /** * (Un)set global replace protection from a group @@ -551,6 +599,7 @@ CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, DoCommandFlag flags, uint3 * - p1 bit 0-15 : GroupID * @param p2 * - p2 bit 0 : 1 to set or 0 to clear protection. + * - p2 bit 1 : 1 to apply to sub-groups. * @param text unused * @return the cost of this operation or an error */ @@ -560,7 +609,11 @@ CommandCost CmdSetGroupReplaceProtection(TileIndex tile, DoCommandFlag flags, ui if (g == NULL || g->owner != _current_company) return CMD_ERROR; if (flags & DC_EXEC) { - g->replace_protection = HasBit(p2, 0); + if (HasBit(p2, 1)) { + SetGroupReplaceProtection(g, HasBit(p2, 0)); + } else { + g->replace_protection = HasBit(p2, 0); + } SetWindowDirty(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); InvalidateWindowData(WC_REPLACE_VEHICLE, g->vehicle_type); @@ -631,7 +684,7 @@ void UpdateTrainGroupID(Train *v) /** * Get the number of engines with EngineID id_e in the group with GroupID - * id_g + * id_g and its sub-groups. * @param company The company the group belongs to * @param id_g The GroupID of the group used * @param id_e The EngineID of the engine to count @@ -639,8 +692,13 @@ void UpdateTrainGroupID(Train *v) */ uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e) { + uint count = 0; const Engine *e = Engine::Get(id_e); - return GroupStatistics::Get(company, id_g, e->type).num_engines[id_e]; + const Group *g; + FOR_ALL_GROUPS(g) { + if (g->parent == id_g) count += GetGroupNumEngines(company, g->index, id_e); + } + return count + GroupStatistics::Get(company, id_g, e->type).num_engines[id_e]; } void RemoveAllGroupsForCompany(const CompanyID company) @@ -651,3 +709,22 @@ void RemoveAllGroupsForCompany(const CompanyID company) if (company == g->owner) delete g; } } + + +/** + * Test if GroupID group is a descendant of (or is) GroupID search + * @param search The GroupID to search in + * @param group The GroupID to search for + * @return True iff group is search or a descendant of search + */ +bool GroupIsInGroup(GroupID search, GroupID group) +{ + if (!Group::IsValidID(search)) return search == group; + + do { + if (search == group) return true; + search = Group::Get(search)->parent; + } while (search != INVALID_GROUP); + + return false; +} diff --git a/src/group_gui.cpp b/src/group_gui.cpp index ed3176e270..81fb1202e4 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -30,6 +30,10 @@ #include "table/sprites.h" +#include "safeguards.h" + +static const int LEVEL_WIDTH = 10; ///< Indenting width of a sub-group in pixels + typedef GUIList GUIGroupList; static const NWidgetPart _nested_group_widgets[] = { @@ -105,34 +109,27 @@ private: }; VehicleID vehicle_sel; ///< Selected vehicle + GroupID group_sel; ///< Selected group (for drag/drop) GroupID group_rename; ///< Group being renamed, INVALID_GROUP if none GroupID group_over; ///< Group over which a vehicle is dragged, INVALID_GROUP if none + GroupID group_confirm; ///< Group awaiting delete confirmation GUIGroupList groups; ///< List of groups uint tiny_step_height; ///< Step height for the group list Scrollbar *group_sb; + SmallVector indents; ///< Indentation levels + Dimension column_size[VGC_END]; ///< Size of the columns in the group list. - /** - * (Re)Build the group list. - * - * @param owner The owner of the window - */ - void BuildGroupList(Owner owner) + void AddParents(GUIGroupList *source, GroupID parent, int indent) { - if (!this->groups.NeedRebuild()) return; - - this->groups.Clear(); - - const Group *g; - FOR_ALL_GROUPS(g) { - if (g->owner == owner && g->vehicle_type == this->vli.vtype) { - *this->groups.Append() = g; + for (const Group **g = source->Begin(); g != source->End(); g++) { + if ((*g)->parent == parent) { + *this->groups.Append() = *g; + *this->indents.Append() = indent; + AddParents(source, (*g)->index, indent + 1); } } - - this->groups.Compact(); - this->groups.RebuildDone(); } /** Sort the groups by their name */ @@ -158,6 +155,36 @@ private: return r; } + /** + * (Re)Build the group list. + * + * @param owner The owner of the window + */ + void BuildGroupList(Owner owner) + { + if (!this->groups.NeedRebuild()) return; + + this->groups.Clear(); + this->indents.Clear(); + + GUIGroupList list; + + const Group *g; + FOR_ALL_GROUPS(g) { + if (g->owner == owner && g->vehicle_type == this->vli.vtype) { + *list.Append() = g; + } + } + + list.ForceResort(); + list.Sort(&GroupNameSorter); + + AddParents(&list, INVALID_GROUP, 0); + + this->groups.Compact(); + this->groups.RebuildDone(); + } + /** * Compute tiny_step_height and column_size * @return Total width required for the group list. @@ -204,9 +231,10 @@ private: * @param left Left of the row. * @param right Right of the row. * @param g_id Group to list. + * @param indent Indentation level. * @param protection Whether autoreplace protection is set. */ - void DrawGroupInfo(int y, int left, int right, GroupID g_id, bool protection = false) const + void DrawGroupInfo(int y, int left, int right, GroupID g_id, int indent = 0, bool protection = false) const { /* Highlight the group if a vehicle is dragged over it */ if (g_id == this->group_over) { @@ -231,7 +259,7 @@ private: str = STR_GROUP_NAME; } int x = rtl ? right - WD_FRAMERECT_RIGHT - 8 - this->column_size[VGC_NAME].width + 1 : left + WD_FRAMERECT_LEFT + 8; - DrawString(x, x + this->column_size[VGC_NAME].width - 1, y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour); + DrawString(x + indent * LEVEL_WIDTH, x + this->column_size[VGC_NAME].width - 1, y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour); /* draw autoreplace protection */ x = rtl ? x - 8 - this->column_size[VGC_PROTECT].width : x + 8 + this->column_size[VGC_NAME].width; @@ -295,6 +323,7 @@ public: this->vli.index = ALL_GROUP; this->vehicle_sel = INVALID_VEHICLE; + this->group_sel = INVALID_GROUP; this->group_rename = INVALID_GROUP; this->group_over = INVALID_GROUP; @@ -308,7 +337,6 @@ public: this->groups.ForceRebuild(); this->groups.NeedResort(); this->BuildGroupList(vli.company); - this->groups.Sort(&GroupNameSorter); this->GetWidget(WID_GL_CAPTION)->widget_data = STR_VEHICLE_LIST_TRAIN_CAPTION + this->vli.vtype; this->GetWidget(WID_GL_LIST_VEHICLE)->tool_tip = STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP + this->vli.vtype; @@ -356,7 +384,7 @@ public: case WID_GL_SORT_BY_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -442,7 +470,6 @@ public: this->SortVehicleList(); this->BuildGroupList(this->owner); - this->groups.Sort(&GroupNameSorter); this->group_sb->SetCount(this->groups.Length()); this->vscroll->SetCount(this->vehicles.Length()); @@ -508,7 +535,7 @@ public: assert(g->owner == this->owner); - DrawGroupInfo(y1, r.left, r.right, g->index, g->replace_protection); + DrawGroupInfo(y1, r.left, r.right, g->index, this->indents[i], g->replace_protection); y1 += this->tiny_step_height; } @@ -523,11 +550,33 @@ public: break; case WID_GL_LIST_VEHICLE: + if (this->vli.index != ALL_GROUP) { + /* Mark vehicles which are in sub-groups */ + int y = r.top; + uint max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->vehicles.Length()); + for (uint i = this->vscroll->GetPosition(); i < max; ++i) { + const Vehicle *v = this->vehicles[i]; + if (v->group_id != this->vli.index) { + GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->resize.step_height - 2, _colour_gradient[COLOUR_GREY][3], FILLRECT_CHECKER); + } + y += this->resize.step_height; + } + } + this->DrawVehicleListItems(this->vehicle_sel, this->resize.step_height, r); break; } } + static void DeleteGroupCallback(Window *win, bool confirmed) + { + if (confirmed) { + VehicleGroupWindow *w = (VehicleGroupWindow*)win; + w->vli.index = ALL_GROUP; + DoCommandP(0, w->group_confirm, 0, CMD_DELETE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_DELETE)); + } + } + virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { @@ -560,7 +609,9 @@ public: uint id_g = this->group_sb->GetScrolledRowFromWidget(pt.y, this, WID_GL_LIST_GROUP, 0, this->tiny_step_height); if (id_g >= this->groups.Length()) return; - this->vli.index = this->groups[id_g]->index; + this->group_sel = this->vli.index = this->groups[id_g]->index; + + SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); this->vehicles.ForceRebuild(); this->SetDirty(); @@ -590,10 +641,8 @@ public: } case WID_GL_DELETE_GROUP: { // Delete the selected group - GroupID group = this->vli.index; - this->vli.index = ALL_GROUP; - - DoCommandP(0, group, 0, CMD_DELETE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_DELETE)); + this->group_confirm = this->vli.index; + ShowQuery(STR_QUERY_GROUP_DELETE_CAPTION, STR_GROUP_DELETE_QUERY_TEXT, this, DeleteGroupCallback); break; } @@ -620,14 +669,46 @@ public: case WID_GL_REPLACE_PROTECTION: { const Group *g = Group::GetIfValid(this->vli.index); if (g != NULL) { - DoCommandP(0, this->vli.index, !g->replace_protection, CMD_SET_GROUP_REPLACE_PROTECTION); + DoCommandP(0, this->vli.index, (g->replace_protection ? 0 : 1) | (_ctrl_pressed << 1), CMD_SET_GROUP_REPLACE_PROTECTION); } break; } } } - virtual void OnDragDrop(Point pt, int widget) + void OnDragDrop_Group(Point pt, int widget) + { + const Group *g = Group::Get(this->group_sel); + + switch (widget) { + case WID_GL_ALL_VEHICLES: // All vehicles + case WID_GL_DEFAULT_VEHICLES: // Ungroupd vehicles + if (g->parent != INVALID_GROUP) { + DoCommandP(0, this->group_sel | (1 << 16), INVALID_GROUP, CMD_ALTER_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_SET_PARENT)); + } + + this->group_sel = INVALID_GROUP; + this->group_over = INVALID_GROUP; + this->SetDirty(); + break; + + case WID_GL_LIST_GROUP: { // Matrix group + uint id_g = this->group_sb->GetScrolledRowFromWidget(pt.y, this, WID_GL_LIST_GROUP, 0, this->tiny_step_height); + GroupID new_g = id_g >= this->groups.Length() ? INVALID_GROUP : this->groups[id_g]->index; + + if (this->group_sel != new_g && g->parent != new_g) { + DoCommandP(0, this->group_sel | (1 << 16), new_g, CMD_ALTER_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_SET_PARENT)); + } + + this->group_sel = INVALID_GROUP; + this->group_over = INVALID_GROUP; + this->SetDirty(); + break; + } + } + } + + void OnDragDrop_Vehicle(Point pt, int widget) { switch (widget) { case WID_GL_DEFAULT_VEHICLES: // Ungrouped vehicles @@ -668,12 +749,19 @@ public: break; } } + } + + virtual void OnDragDrop(Point pt, int widget) + { + if (this->vehicle_sel != INVALID_VEHICLE) OnDragDrop_Vehicle(pt, widget); + if (this->group_sel != INVALID_GROUP) OnDragDrop_Group(pt, widget); + _cursor.vehchain = false; } virtual void OnQueryTextFinished(char *str) { - if (str != NULL) DoCommandP(0, this->group_rename, 0, CMD_RENAME_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_RENAME), NULL, str); + if (str != NULL) DoCommandP(0, this->group_rename, 0, CMD_ALTER_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_RENAME), NULL, str); this->group_rename = INVALID_GROUP; } @@ -742,7 +830,7 @@ public: virtual void OnMouseDrag(Point pt, int widget) { - if (this->vehicle_sel == INVALID_VEHICLE) return; + if (this->vehicle_sel == INVALID_VEHICLE && this->group_sel == INVALID_GROUP) return; /* A vehicle is dragged over... */ GroupID new_group_over = INVALID_GROUP; @@ -759,7 +847,11 @@ public: } /* Do not highlight when dragging over the current group */ - if (Vehicle::Get(vehicle_sel)->group_id == new_group_over) new_group_over = INVALID_GROUP; + if (this->vehicle_sel != INVALID_VEHICLE) { + if (Vehicle::Get(vehicle_sel)->group_id == new_group_over) new_group_over = INVALID_GROUP; + } else if (this->group_sel != INVALID_GROUP) { + if (this->group_sel == new_group_over || Group::Get(this->group_sel)->parent == new_group_over) new_group_over = INVALID_GROUP; + } /* Mark widgets as dirty if the group changed. */ if (new_group_over != this->group_over) { diff --git a/src/heightmap.cpp b/src/heightmap.cpp index 8f0fac6adb..ec31257287 100644 --- a/src/heightmap.cpp +++ b/src/heightmap.cpp @@ -22,6 +22,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Convert RGB colours to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue * (average luminosity formula, NTSC Colour Space) @@ -46,9 +48,11 @@ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop uint x, y; byte gray_palette[256]; png_bytep *row_pointers = NULL; + bool has_palette = png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE; + uint channels = png_get_channels(png_ptr, info_ptr); /* Get palette and convert it to grayscale */ - if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) { + if (has_palette) { int i; int palette_size; png_color *palette; @@ -79,11 +83,11 @@ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop for (x = 0; x < png_get_image_width(png_ptr, info_ptr); x++) { for (y = 0; y < png_get_image_height(png_ptr, info_ptr); y++) { byte *pixel = &map[y * png_get_image_width(png_ptr, info_ptr) + x]; - uint x_offset = x * png_get_channels(png_ptr, info_ptr); + uint x_offset = x * channels; - if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) { + if (has_palette) { *pixel = gray_palette[row_pointers[y][x_offset]]; - } else if (png_get_channels(png_ptr, info_ptr) == 3) { + } else if (channels == 3) { *pixel = RGBToGrayscale(row_pointers[y][x_offset + 0], row_pointers[y][x_offset + 1], row_pointers[y][x_offset + 2]); } else { @@ -360,12 +364,19 @@ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map) assert(img_row < img_height); assert(img_col < img_width); - /* Colour scales from 0 to 255, OpenTTD height scales from 0 to 15 */ - SetTileHeight(tile, map[img_row * img_width + img_col] / 16); + uint heightmap_height = map[img_row * img_width + img_col]; + + if (heightmap_height > 0) { + /* 0 is sea level. + * Other grey scales are scaled evenly to the available height levels > 0. + * (The coastline is independent from the number of height levels) */ + heightmap_height = 1 + (heightmap_height - 1) * _settings_game.construction.max_heightlevel / 255; + } + + SetTileHeight(tile, heightmap_height); } /* Only clear the tiles within the map area. */ - if (TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY() && - (!_settings_game.construction.freeform_edges || (TileX(tile) != 0 && TileY(tile) != 0))) { + if (IsInnerTile(tile)) { MakeClear(tile, CLEAR_GRASS, 3); } } diff --git a/src/highscore.cpp b/src/highscore.cpp index 2ce2d9bdad..86e4f5ae88 100644 --- a/src/highscore.cpp +++ b/src/highscore.cpp @@ -20,6 +20,8 @@ #include "core/sort_func.hpp" #include "debug.h" +#include "safeguards.h" + HighScore _highscore_table[SP_HIGHSCORE_END][5]; ///< various difficulty-settings; top 5 char *_highscore_file; ///< The file to store the highscore data in. @@ -164,10 +166,10 @@ void LoadFromHighScore() for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) { for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) { byte length; - if (fread(&length, sizeof(length), 1, fp) != 1 || - fread(hs->company, length, 1, fp) > 1 || // Yes... could be 0 bytes too - fread(&hs->score, sizeof(hs->score), 1, fp) != 1 || - fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility + if (fread(&length, sizeof(length), 1, fp) != 1 || + fread(hs->company, min(lengthof(hs->company), length), 1, fp) > 1 || // Yes... could be 0 bytes too + fread(&hs->score, sizeof(hs->score), 1, fp) != 1 || + fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility DEBUG(misc, 1, "Highscore corrupted"); i = SP_SAVED_HIGHSCORE_END; break; diff --git a/src/highscore_gui.cpp b/src/highscore_gui.cpp index d79afe4ebd..c67aaa170b 100644 --- a/src/highscore_gui.cpp +++ b/src/highscore_gui.cpp @@ -25,6 +25,8 @@ #include "widgets/highscore_widget.h" +#include "safeguards.h" + struct EndGameHighScoreBaseWindow : Window { uint32 background_img; int8 rank; @@ -44,17 +46,20 @@ struct EndGameHighScoreBaseWindow : Window { this->DrawWidgets(); - Point pt = this->GetTopLeft640x480(); + /* Standard background slices are 50 pixels high, but it's designed + * for 480 pixels total. 96% of 500 is 480. */ + Dimension dim = GetSpriteSize(this->background_img); + Point pt = this->GetTopLeft(dim.width, dim.height * 96 / 10); /* Center Highscore/Endscreen background */ for (uint i = 0; i < 10; i++) { // the image is split into 10 50px high parts - DrawSprite(this->background_img + i, PAL_NONE, pt.x, pt.y + (i * 50)); + DrawSprite(this->background_img + i, PAL_NONE, pt.x, pt.y + (i * dim.height)); } } /** Return the coordinate of the screen such that a window of 640x480 is centered at the screen. */ - Point GetTopLeft640x480() + Point GetTopLeft(int x, int y) { - Point pt = {max(0, (_screen.width / 2) - (640 / 2)), max(0, (_screen.height / 2) - (480 / 2))}; + Point pt = {max(0, (_screen.width / 2) - (x / 2)), max(0, (_screen.height / 2) - (y / 2))}; return pt; } @@ -127,7 +132,7 @@ struct EndGameWindow : EndGameHighScoreBaseWindow { virtual void OnPaint() { this->SetupHighScoreEndWindow(); - Point pt = this->GetTopLeft640x480(); + Point pt = this->GetTopLeft(640, 480); const Company *c = Company::GetIfValid(_local_company); if (c == NULL) return; @@ -177,7 +182,7 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow { const HighScore *hs = _highscore_table[this->window_number]; this->SetupHighScoreEndWindow(); - Point pt = this->GetTopLeft640x480(); + Point pt = this->GetTopLeft(640, 480); SetDParam(0, ORIGINAL_END_YEAR); DrawStringMultiLine(pt.x + 70, pt.x + 570, pt.y, pt.y + 140, !_networking ? STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED : STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME, TC_FROMSTRING, SA_CENTER); diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 34b8fe4d76..84288a0e81 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -16,6 +16,8 @@ #include "string_func.h" #include "window_gui.h" +#include "safeguards.h" + char *_hotkeys_file; /** @@ -54,8 +56,7 @@ static const KeycodeNames _keycode_to_name[] = { {"F11", WKC_F11}, {"F12", WKC_F12}, {"PAUSE", WKC_PAUSE}, - {"PLUS", (WindowKeyCodes)'+'}, - {"COMMA", (WindowKeyCodes)','}, + {"COMMA", WKC_COMMA}, {"NUM_PLUS", WKC_NUM_PLUS}, {"NUM_MINUS", WKC_NUM_MINUS}, {"=", WKC_EQUALS}, @@ -140,7 +141,7 @@ static void ParseHotkeys(Hotkey *hotkey, const char *value) * by a '+'. * @param keycode The keycode to convert to a string. * @return A string representation of this keycode. - * @note The return value is a static buffer, strdup the result before calling + * @note The return value is a static buffer, stredup the result before calling * this function again. */ static const char *KeycodeToString(uint16 keycode) @@ -194,7 +195,7 @@ static const char *KeycodeToString(uint16 keycode) * keycodes are attached to the hotkey they are split by a comma. * @param hotkey The keycodes of this hotkey need to be converted to a string. * @return A string representation of all keycodes. - * @note The return value is a static buffer, strdup the result before calling + * @note The return value is a static buffer, stredup the result before calling * this function again. */ const char *SaveKeycodes(const Hotkey *hotkey) diff --git a/src/house.h b/src/house.h index 9d5d5529d8..ddc2a448c6 100644 --- a/src/house.h +++ b/src/house.h @@ -24,16 +24,18 @@ */ static const byte TOWN_HOUSE_COMPLETED = 3; +static const HouseID NUM_HOUSES_PER_GRF = 255; ///< Number of supported houses per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. + static const uint HOUSE_NO_CLASS = 0; -static const HouseID NEW_HOUSE_OFFSET = 110; -static const HouseID HOUSE_MAX = 512; +static const HouseID NEW_HOUSE_OFFSET = 110; ///< Offset for new houses. +static const HouseID NUM_HOUSES = 512; ///< Total number of houses. static const HouseID INVALID_HOUSE_ID = 0xFFFF; /** * There can only be as many classes as there are new houses, plus one for * NO_CLASS, as the original houses don't have classes. */ -static const uint HOUSE_CLASS_MAX = HOUSE_MAX - NEW_HOUSE_OFFSET + 1; +static const uint HOUSE_CLASS_MAX = NUM_HOUSES - NEW_HOUSE_OFFSET + 1; enum BuildingFlags { TILE_NO_FLAG = 0, @@ -124,7 +126,7 @@ struct HouseSpec { static inline HouseSpec *Get(size_t house_id) { - assert(house_id < HOUSE_MAX); + assert(house_id < NUM_HOUSES); extern HouseSpec _house_specs[]; return &_house_specs[house_id]; } diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index c29a008209..5971964fd7 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -40,11 +40,14 @@ #include "core/backup_type.hpp" #include "object_base.h" #include "game/game.hpp" +#include "error.h" #include "table/strings.h" #include "table/industry_land.h" #include "table/build_industry.h" +#include "safeguards.h" + IndustryPool _industry_pool("Industry"); INSTANTIATE_POOL_METHODS(Industry) @@ -518,7 +521,7 @@ static void TransportIndustryGoods(TileIndex tile) if (newgfx != INDUSTRYTILE_NOANIM) { ResetIndustryConstructionStage(tile); - SetIndustryCompleted(tile, true); + SetIndustryCompleted(tile); SetIndustryGfx(tile, newgfx); MarkTileDirtyByTile(tile); } @@ -718,7 +721,7 @@ static void MakeIndustryTileBigger(TileIndex tile) SetIndustryConstructionCounter(tile, 0); SetIndustryConstructionStage(tile, stage); StartStopIndustryTileAnimation(tile, IAT_CONSTRUCTION_STATE_CHANGE); - if (stage == INDUSTRY_COMPLETED) SetIndustryCompleted(tile, true); + if (stage == INDUSTRY_COMPLETED) SetIndustryCompleted(tile); MarkTileDirtyByTile(tile); @@ -854,7 +857,7 @@ static void TileLoop_Industry(TileIndex tile) case GFX_GOLD_MINE_TOWER_ANIMATED: gfx = GFX_GOLD_MINE_TOWER_NOT_ANIMATED; break; } SetIndustryGfx(tile, gfx); - SetIndustryCompleted(tile, true); + SetIndustryCompleted(tile); SetIndustryConstructionStage(tile, 3); DeleteAnimatedTile(tile); } @@ -940,26 +943,33 @@ bool IsTileForestIndustry(TileIndex tile) static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6}; -static bool IsBadFarmFieldTile(TileIndex tile) +/** + * Check whether the tile can be replaced by a farm field. + * @param tile the tile to investigate. + * @param allow_fields if true, the method will return true even if + * the tile is a farm tile, otherwise the tile may not be a farm tile + * @return true if the tile can become a farm field + */ +static bool IsSuitableForFarmField(TileIndex tile, bool allow_fields) { switch (GetTileType(tile)) { - case MP_CLEAR: return IsClearGround(tile, CLEAR_FIELDS) || IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT); - case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE); - default: return true; + case MP_CLEAR: return !IsClearGround(tile, CLEAR_SNOW) && !IsClearGround(tile, CLEAR_DESERT) && (allow_fields || !IsClearGround(tile, CLEAR_FIELDS)); + case MP_TREES: return GetTreeGround(tile) != TREE_GROUND_SHORE; + default: return false; } } -static bool IsBadFarmFieldTile2(TileIndex tile) +/** + * Build farm field fence + * @param tile the tile to position the fence on + * @param size the size of the field being planted in tiles + * @param type type of fence to set + * @param side the side of the tile to attempt placement + */ +static void SetupFarmFieldFence(TileIndex tile, int size, byte type, DiagDirection side) { - switch (GetTileType(tile)) { - case MP_CLEAR: return IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT); - case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE); - default: return true; - } -} + TileIndexDiff diff = (DiagDirToAxis(side) == AXIS_Y ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); -static void SetupFarmFieldFence(TileIndex tile, int size, byte type, Axis direction, bool north) -{ do { tile = TILE_MASK(tile); @@ -968,22 +978,10 @@ static void SetupFarmFieldFence(TileIndex tile, int size, byte type, Axis direct if (or_ == 1 && Chance16(1, 7)) or_ = 2; - if (direction == AXIS_X) { - if (north) { - SetFenceNW(tile, or_); - } else { - SetFenceSE(tile, or_); - } - } else { - if (north) { - SetFenceNE(tile, or_); - } else { - SetFenceSW(tile, or_); - } - } + SetFence(tile, side, or_); } - tile += (direction == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); + tile += diff; } while (--size); } @@ -1008,9 +1006,9 @@ static void PlantFarmField(TileIndex tile, IndustryID industry) int count = 0; TILE_AREA_LOOP(cur_tile, ta) { assert(cur_tile < MapSize()); - count += IsBadFarmFieldTile(cur_tile); + count += IsSuitableForFarmField(cur_tile, false); } - if (count * 2 >= ta.w * ta.h) return; + if (count * 2 < ta.w * ta.h) return; /* determine type of field */ r = Random(); @@ -1020,7 +1018,7 @@ static void PlantFarmField(TileIndex tile, IndustryID industry) /* make field */ TILE_AREA_LOOP(cur_tile, ta) { assert(cur_tile < MapSize()); - if (!IsBadFarmFieldTile2(cur_tile)) { + if (IsSuitableForFarmField(cur_tile, true)) { MakeField(cur_tile, field_type, industry); SetClearCounter(cur_tile, counter); MarkTileDirtyByTile(cur_tile); @@ -1032,10 +1030,10 @@ static void PlantFarmField(TileIndex tile, IndustryID industry) type = _plantfarmfield_type[Random() & 0xF]; } - SetupFarmFieldFence(ta.tile, ta.h, type, AXIS_Y, true); - SetupFarmFieldFence(ta.tile, ta.w, type, AXIS_X, true); - SetupFarmFieldFence(ta.tile + TileDiffXY(ta.w - 1, 0), ta.h, type, AXIS_Y, false); - SetupFarmFieldFence(ta.tile + TileDiffXY(0, ta.h - 1), ta.w, type, AXIS_X, false); + SetupFarmFieldFence(ta.tile, ta.h, type, DIAGDIR_NE); + SetupFarmFieldFence(ta.tile, ta.w, type, DIAGDIR_NW); + SetupFarmFieldFence(ta.tile + TileDiffXY(ta.w - 1, 0), ta.h, type, DIAGDIR_SW); + SetupFarmFieldFence(ta.tile + TileDiffXY(0, ta.h - 1), ta.w, type, DIAGDIR_SE); } void PlantRandomFarmField(const Industry *i) @@ -1386,13 +1384,13 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil if (gfx == GFX_WATERTILE_SPECIALCHECK) { if (!IsTileType(cur_tile, MP_WATER) || - GetTileSlope(cur_tile) != SLOPE_FLAT) { + !IsTileFlat(cur_tile)) { return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } } else { CommandCost ret = EnsureNoVehicleOnGround(cur_tile); if (ret.Failed()) return ret; - if (MayHaveBridgeAbove(cur_tile) && IsBridgeAbove(cur_tile)) return_cmd_error(STR_ERROR_SITE_UNSUITABLE); + if (IsBridgeAbove(cur_tile)) return_cmd_error(STR_ERROR_SITE_UNSUITABLE); const IndustryTileSpec *its = GetIndustryTileSpec(gfx); @@ -1568,7 +1566,30 @@ static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, DoCommandFlag flags, static CommandCost CheckIfFarEnoughFromConflictingIndustry(TileIndex tile, int type) { const IndustrySpec *indspec = GetIndustrySpec(type); - const Industry *i; + const Industry *i = NULL; + + /* On a large map with many industries, it may be faster to check an area. */ + static const int dmax = 14; + if (Industry::GetNumItems() > (size_t) (dmax * dmax * 2)) { + const int tx = TileX(tile); + const int ty = TileY(tile); + TileArea tile_area = TileArea(TileXY(max(0, tx - dmax), max(0, ty - dmax)), TileXY(min(MapMaxX(), tx + dmax), min(MapMaxY(), ty + dmax))); + TILE_AREA_LOOP(atile, tile_area) { + if (GetTileType(atile) == MP_INDUSTRY) { + const Industry *i2 = Industry::GetByTile(atile); + if (i == i2) continue; + i = i2; + if (DistanceMax(tile, i->location.tile) > (uint)dmax) continue; + if (i->type == indspec->conflicting[0] || + i->type == indspec->conflicting[1] || + i->type == indspec->conflicting[2]) { + return_cmd_error(STR_ERROR_INDUSTRY_TOO_CLOSE); + } + } + } + return CommandCost(); + } + FOR_ALL_INDUSTRIES(i) { /* Within 14 tiles from another industry is considered close */ if (DistanceMax(tile, i->location.tile) > 14) continue; @@ -2000,7 +2021,7 @@ static uint GetNumberOfIndustries() assert(lengthof(numof_industry_table) == ID_END); uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW; - return ScaleByMapSize(numof_industry_table[difficulty]); + return min(IndustryPool::MAX_SIZE, ScaleByMapSize(numof_industry_table[difficulty])); } /** @@ -2721,6 +2742,26 @@ void InitializeIndustries() _industry_builder.Reset(); } +/** Verify whether the generated industries are complete, and warn the user if not. */ +void CheckIndustries() +{ + int count = 0; + for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { + if (Industry::GetIndustryTypeCount(it) > 0) continue; // Types of existing industries can be skipped. + + bool force_at_least_one; + uint32 chance = GetScaledIndustryGenerationProbability(it, &force_at_least_one); + if (chance == 0 || !force_at_least_one) continue; // Types that are not available can be skipped. + + const IndustrySpec *is = GetIndustrySpec(it); + SetDParam(0, is->name); + ShowErrorMessage(STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES, STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION, WL_WARNING); + + count++; + if (count >= 3) break; // Don't swamp the user with errors. + } +} + /** * Is an industry with the spec a raw industry? * @return true if it should be handled as a raw industry diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 49f71e909a..c160142249 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -24,6 +24,7 @@ #include "newgrf_industries.h" #include "newgrf_text.h" #include "newgrf_debug.h" +#include "network/network.h" #include "strings_func.h" #include "company_func.h" #include "tilehighlight_func.h" @@ -41,10 +42,12 @@ #include "table/strings.h" -bool _ignore_restrictions; -uint64 _displayed_industries; ///< Communication from the industry chain window to the smallmap window about what industries to display. +#include + +#include "safeguards.h" -assert_compile(NUM_INDUSTRYTYPES <= 64); // Make sure all industry types fit in _displayed_industries. +bool _ignore_restrictions; +std::bitset _displayed_industries; ///< Communication from the industry chain window to the smallmap window about what industries to display. /** Cargo suffix type (for which window is it requested) */ enum CargoSuffixType { @@ -79,7 +82,7 @@ static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind, if (callback > 0x400) { ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_CARGO_SUFFIX, callback); } else if (indspec->grf_prop.grffile->grf_version >= 8 || GB(callback, 0, 8) != 0xFF) { - StartTextRefStackUsage(6); + StartTextRefStackUsage(indspec->grf_prop.grffile, 6); GetString(suffix, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), suffix_last); StopTextRefStackUsage(); } @@ -117,12 +120,10 @@ static int CDECL IndustryTypeNameSorter(const IndustryType *a, const IndustryTyp static char industry_name[2][64]; const IndustrySpec *indsp1 = GetIndustrySpec(*a); - SetDParam(0, indsp1->name); - GetString(industry_name[0], STR_JUST_STRING, lastof(industry_name[0])); + GetString(industry_name[0], indsp1->name, lastof(industry_name[0])); const IndustrySpec *indsp2 = GetIndustrySpec(*b); - SetDParam(0, indsp2->name); - GetString(industry_name[1], STR_JUST_STRING, lastof(industry_name[1])); + GetString(industry_name[1], indsp2->name, lastof(industry_name[1])); int r = strnatcmp(industry_name[0], industry_name[1]); // Sort by name (natural sorting). @@ -228,7 +229,7 @@ class BuildIndustryWindow : public Window { * The tests performed after the enabled allow to load the industries * In the same way they are inserted by grf (if any) */ - for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) { IndustryType ind = _sorted_industry_types[i]; const IndustrySpec *indsp = GetIndustrySpec(ind); if (indsp->enabled) { @@ -471,7 +472,7 @@ public: } else { str = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res); // No. here's the new string if (str != STR_UNDEFINED) { - StartTextRefStackUsage(6); + StartTextRefStackUsage(indsp->grf_prop.grffile, 6); DrawStringMultiLine(left, right, y, bottom, str, TC_YELLOW); StopTextRefStackUsage(); } @@ -639,7 +640,8 @@ static inline bool IsProductionAlterable(const Industry *i) { const IndustrySpec *is = GetIndustrySpec(i->type); return ((_game_mode == GM_EDITOR || _cheats.setup_prod.value) && - (is->production_rate[0] != 0 || is->production_rate[1] != 0 || is->IsRawIndustry())); + (is->production_rate[0] != 0 || is->production_rate[1] != 0 || is->IsRawIndustry()) && + !_networking); } class IndustryViewWindow : public Window @@ -800,7 +802,7 @@ public: if (message != STR_NULL && message != STR_UNDEFINED) { y += WD_PAR_VSEP_WIDE; - StartTextRefStackUsage(6); + StartTextRefStackUsage(ind->grf_prop.grffile, 6); /* Use all the available space left from where we stand up to the * end of the window. We ALSO enlarge the window if needed, so we * can 'go' wild with the bottom of the window. */ @@ -1281,7 +1283,7 @@ public: switch (widget) { case WID_ID_DROPDOWN_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -1669,8 +1671,7 @@ struct CargoesField { ypos += (normal_height - FONT_HEIGHT_NORMAL) / 2; if (this->u.industry.ind_type < NUM_INDUSTRYTYPES) { const IndustrySpec *indsp = GetIndustrySpec(this->u.industry.ind_type); - SetDParam(0, indsp->name); - DrawString(xpos, xpos2, ypos, STR_JUST_STRING, TC_WHITE, SA_HOR_CENTER); + DrawString(xpos, xpos2, ypos, indsp->name, TC_WHITE, SA_HOR_CENTER); /* Draw the industry legend. */ int blob_left, blob_right; @@ -1961,7 +1962,7 @@ struct CargoesRow { assert(cargo_fld->type == CFT_CARGO && label_fld->type == CFT_EMPTY); for (uint i = 0; i < cargo_fld->u.cargo.num_cargoes; i++) { int col = cargo_fld->ConnectCargo(cargo_fld->u.cargo.vertical_cargoes[i], !accepting); - cargoes[col] = cargo_fld->u.cargo.vertical_cargoes[i]; + if (col >= 0) cargoes[col] = cargo_fld->u.cargo.vertical_cargoes[i]; } label_fld->MakeCargoLabel(cargoes, lengthof(cargoes), accepting); } @@ -1996,12 +1997,12 @@ struct CargoesRow { } else { /* Houses only display what is demanded. */ for (uint i = 0; i < cargo_fld->u.cargo.num_cargoes; i++) { - for (uint h = 0; h < HOUSE_MAX; h++) { + for (uint h = 0; h < NUM_HOUSES; h++) { HouseSpec *hs = HouseSpec::Get(h); if (!hs->enabled) continue; for (uint j = 0; j < lengthof(hs->accepts_cargo); j++) { - if (cargo_fld->u.cargo.vertical_cargoes[i] == hs->accepts_cargo[j]) { + if (hs->cargo_acceptance[j] > 0 && cargo_fld->u.cargo.vertical_cargoes[i] == hs->accepts_cargo[j]) { cargo_fld->ConnectCargo(cargo_fld->u.cargo.vertical_cargoes[i], false); goto next_cargo; } @@ -2188,12 +2189,12 @@ struct IndustryCargoesWindow : public Window { for (uint i = 0; i < length; i++) { if (cargoes[i] == INVALID_CARGO) continue; - for (uint h = 0; h < HOUSE_MAX; h++) { + for (uint h = 0; h < NUM_HOUSES; h++) { HouseSpec *hs = HouseSpec::Get(h); if (!hs->enabled || !(hs->building_availability & climate_mask)) continue; for (uint j = 0; j < lengthof(hs->accepts_cargo); j++) { - if (cargoes[i] == hs->accepts_cargo[j]) return true; + if (hs->cargo_acceptance[j] > 0 && cargoes[i] == hs->accepts_cargo[j]) return true; } } } @@ -2294,7 +2295,8 @@ struct IndustryCargoesWindow : public Window { { this->GetWidget(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION; this->ind_cargo = it; - _displayed_industries = 1ULL << it; + _displayed_industries.reset(); + _displayed_industries.set(it); this->fields.Clear(); CargoesRow *row = this->fields.Append(); @@ -2338,12 +2340,12 @@ struct IndustryCargoesWindow : public Window { if (HasCommonValidCargo(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo), indsp->produced_cargo, lengthof(indsp->produced_cargo))) { this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it); - SetBit(_displayed_industries, it); + _displayed_industries.set(it); supp_count++; } if (HasCommonValidCargo(central_sp->produced_cargo, lengthof(central_sp->produced_cargo), indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) { this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 4, it); - SetBit(_displayed_industries, it); + _displayed_industries.set(it); cust_count++; } } @@ -2372,7 +2374,7 @@ struct IndustryCargoesWindow : public Window { { this->GetWidget(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_CARGO_CAPTION; this->ind_cargo = cid + NUM_INDUSTRYTYPES; - _displayed_industries = 0; + _displayed_industries.reset(); this->fields.Clear(); CargoesRow *row = this->fields.Append(); @@ -2407,12 +2409,12 @@ struct IndustryCargoesWindow : public Window { if (HasCommonValidCargo(&cid, 1, indsp->produced_cargo, lengthof(indsp->produced_cargo))) { this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it); - SetBit(_displayed_industries, it); + _displayed_industries.set(it); supp_count++; } if (HasCommonValidCargo(&cid, 1, indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) { this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 2, it); - SetBit(_displayed_industries, it); + _displayed_industries.set(it); cust_count++; } } @@ -2590,9 +2592,9 @@ struct IndustryCargoesWindow : public Window { DropDownList *lst = new DropDownList; const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { - lst->push_back(new DropDownListStringItem(cs->name, cs->Index(), false)); + *lst->Append() = new DropDownListStringItem(cs->name, cs->Index(), false); } - if (lst->size() == 0) { + if (lst->Length() == 0) { delete lst; break; } @@ -2603,13 +2605,13 @@ struct IndustryCargoesWindow : public Window { case WID_IC_IND_DROPDOWN: { DropDownList *lst = new DropDownList; - for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) { IndustryType ind = _sorted_industry_types[i]; const IndustrySpec *indsp = GetIndustrySpec(ind); if (!indsp->enabled) continue; - lst->push_back(new DropDownListStringItem(indsp->name, ind, false)); + *lst->Append() = new DropDownListStringItem(indsp->name, ind, false); } - if (lst->size() == 0) { + if (lst->Length() == 0) { delete lst; break; } @@ -2690,7 +2692,7 @@ const int IndustryCargoesWindow::VERT_TEXT_PADDING = 5; ///< Vertical padding ar static void ShowIndustryCargoesWindow(IndustryType id) { if (id >= NUM_INDUSTRYTYPES) { - for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) { const IndustrySpec *indsp = GetIndustrySpec(_sorted_industry_types[i]); if (indsp->enabled) { id = _sorted_industry_types[i]; diff --git a/src/industry_map.h b/src/industry_map.h index 14fb990187..9d2e3de211 100644 --- a/src/industry_map.h +++ b/src/industry_map.h @@ -85,13 +85,12 @@ IndustryType GetIndustryType(TileIndex tile); /** * Set if the industry that owns the tile as under construction or not * @param tile the tile to query - * @param isCompleted whether it is completed or not * @pre IsTileType(tile, MP_INDUSTRY) */ -static inline void SetIndustryCompleted(TileIndex tile, bool isCompleted) +static inline void SetIndustryCompleted(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); - SB(_m[tile].m1, 7, 1, isCompleted ? 1 :0); + SB(_m[tile].m1, 7, 1, 1); } /** @@ -128,7 +127,7 @@ static inline void SetIndustryConstructionStage(TileIndex tile, byte value) static inline IndustryGfx GetCleanIndustryGfx(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); - return _m[t].m5 | (GB(_m[t].m6, 2, 1) << 8); + return _m[t].m5 | (GB(_me[t].m6, 2, 1) << 8); } /** @@ -153,7 +152,7 @@ static inline void SetIndustryGfx(TileIndex t, IndustryGfx gfx) { assert(IsTileType(t, MP_INDUSTRY)); _m[t].m5 = GB(gfx, 0, 8); - SB(_m[t].m6, 2, 1, GB(gfx, 8, 1)); + SB(_me[t].m6, 2, 1, GB(gfx, 8, 1)); } /** @@ -253,7 +252,7 @@ static inline void SetIndustryRandomBits(TileIndex tile, byte bits) static inline byte GetIndustryTriggers(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); - return GB(_m[tile].m6, 3, 3); + return GB(_me[tile].m6, 3, 3); } @@ -267,7 +266,7 @@ static inline byte GetIndustryTriggers(TileIndex tile) static inline void SetIndustryTriggers(TileIndex tile, byte triggers) { assert(IsTileType(tile, MP_INDUSTRY)); - SB(_m[tile].m6, 3, 3, triggers); + SB(_me[tile].m6, 3, 3, triggers); } /** diff --git a/src/industry_type.h b/src/industry_type.h index 34650d785c..6234f7b114 100644 --- a/src/industry_type.h +++ b/src/industry_type.h @@ -22,10 +22,14 @@ struct IndustryTileSpec; static const IndustryID INVALID_INDUSTRY = 0xFFFF; -static const IndustryType NEW_INDUSTRYOFFSET = 37; ///< original number of industries -static const IndustryType NUM_INDUSTRYTYPES = 64; ///< total number of industries, new and old +static const IndustryType NUM_INDUSTRYTYPES_PER_GRF = 128; ///< maximum number of industry types per NewGRF; limited to 128 because bit 7 has a special meaning in some variables/callbacks (see MapNewGRFIndustryType). + +static const IndustryType NEW_INDUSTRYOFFSET = 37; ///< original number of industry types +static const IndustryType NUM_INDUSTRYTYPES = 240; ///< total number of industry types, new and old; limited to 240 because we need some special ids like INVALID_INDUSTRYTYPE, IT_AI_UNKNOWN, IT_AI_TOWN, ... static const IndustryType INVALID_INDUSTRYTYPE = NUM_INDUSTRYTYPES; ///< one above amount is considered invalid +static const IndustryGfx NUM_INDUSTRYTILES_PER_GRF = 255; ///< Maximum number of industry tiles per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. + static const IndustryGfx INDUSTRYTILE_NOANIM = 0xFF; ///< flag to mark industry tiles as having no animation static const IndustryGfx NEW_INDUSTRYTILEOFFSET = 175; ///< original number of tiles static const IndustryGfx NUM_INDUSTRYTILES = 512; ///< total number of industry tiles, new and old @@ -33,4 +37,6 @@ static const IndustryGfx INVALID_INDUSTRYTILE = NUM_INDUSTRYTILES; ///< one a static const int INDUSTRY_COMPLETED = 3; ///< final stage of industry construction. +void CheckIndustries(); + #endif /* INDUSTRY_TYPE_H */ diff --git a/src/ini.cpp b/src/ini.cpp index e82daaceb0..ccce192393 100644 --- a/src/ini.cpp +++ b/src/ini.cpp @@ -26,6 +26,8 @@ # include "core/mem_func.hpp" #endif +#include "safeguards.h" + /** * Create a new ini file with given group names. * @param list_group_names A \c NULL terminated list with group names that should be loaded as lists instead of variables. @see IGT_LIST @@ -87,6 +89,8 @@ bool IniFile::SaveToDisk(const char *filename) #endif #if defined(WIN32) || defined(WIN64) + /* _tcsncpy = strcpy is TCHAR is char, but isn't when TCHAR is wchar. */ + #undef strncpy /* Allocate space for one more \0 character. */ TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1]; _tcsncpy(tfilename, OTTD2FS(filename), MAX_PATH); @@ -106,7 +110,9 @@ bool IniFile::SaveToDisk(const char *filename) shfopt.pTo = tfilename; SHFileOperation(&shfopt); #else - rename(file_new, filename); + if (rename(file_new, filename) < 0) { + DEBUG(misc, 0, "Renaming %s to %s failed; configuration not saved", file_new, filename); + } #endif return true; diff --git a/src/ini_load.cpp b/src/ini_load.cpp index 6a20873038..389dcab031 100644 --- a/src/ini_load.cpp +++ b/src/ini_load.cpp @@ -15,17 +15,19 @@ #include "ini_type.h" #include "string_func.h" +#include "safeguards.h" + /** * Construct a new in-memory item of an Ini file. * @param parent the group we belong to * @param name the name of the item - * @param len the length of the name of the item + * @param last the last element of the name of the item */ -IniItem::IniItem(IniGroup *parent, const char *name, size_t len) : next(NULL), value(NULL), comment(NULL) +IniItem::IniItem(IniGroup *parent, const char *name, const char *last) : next(NULL), value(NULL), comment(NULL) { - if (len == 0) len = strlen(name); + this->name = stredup(name, last); + str_validate(this->name, this->name + strlen(this->name)); - this->name = strndup(name, len); *parent->last_item = this; parent->last_item = &this->next; } @@ -47,20 +49,20 @@ IniItem::~IniItem() void IniItem::SetValue(const char *value) { free(this->value); - this->value = strdup(value); + this->value = stredup(value); } /** * Construct a new in-memory group of an Ini file. * @param parent the file we belong to * @param name the name of the group - * @param len the length of the name of the group + * @param last the last element of the name of the group */ -IniGroup::IniGroup(IniLoadFile *parent, const char *name, size_t len) : next(NULL), type(IGT_VARIABLES), item(NULL), comment(NULL) +IniGroup::IniGroup(IniLoadFile *parent, const char *name, const char *last) : next(NULL), type(IGT_VARIABLES), item(NULL), comment(NULL) { - if (len == 0) len = strlen(name); + this->name = stredup(name, last); + str_validate(this->name, this->name + strlen(this->name)); - this->name = strndup(name, len); this->last_item = &this->item; *parent->last_group = this; parent->last_group = &this->next; @@ -109,7 +111,7 @@ IniItem *IniGroup::GetItem(const char *name, bool create) if (!create) return NULL; /* otherwise make a new one */ - return new IniItem(this, name, strlen(name)); + return new IniItem(this, name, NULL); } /** @@ -165,8 +167,8 @@ IniGroup *IniLoadFile::GetGroup(const char *name, size_t len, bool create_new) if (!create_new) return NULL; /* otherwise make a new one */ - IniGroup *group = new IniGroup(this, name, len); - group->comment = strdup("\n"); + IniGroup *group = new IniGroup(this, name, name + len - 1); + group->comment = stredup("\n"); return group; } @@ -260,17 +262,17 @@ void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir) e--; } s++; // skip [ - group = new IniGroup(this, s, e - s); + group = new IniGroup(this, s, e - 1); if (comment_size != 0) { - group->comment = strndup(comment, comment_size); + group->comment = stredup(comment, comment + comment_size - 1); comment_size = 0; } } else if (group != NULL) { if (group->type == IGT_SEQUENCE) { /* A sequence group, use the line as item name without further interpretation. */ - IniItem *item = new IniItem(group, buffer, e - buffer); + IniItem *item = new IniItem(group, buffer, e - 1); if (comment_size) { - item->comment = strndup(comment, comment_size); + item->comment = stredup(comment, comment + comment_size - 1); comment_size = 0; } continue; @@ -286,9 +288,9 @@ void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir) } /* it's an item in an existing group */ - IniItem *item = new IniItem(group, s, t - s); + IniItem *item = new IniItem(group, s, t - 1); if (comment_size != 0) { - item->comment = strndup(comment, comment_size); + item->comment = stredup(comment, comment + comment_size - 1); comment_size = 0; } @@ -304,7 +306,8 @@ void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir) *e = '\0'; /* If the value was not quoted and empty, it must be NULL */ - item->value = (!quoted && e == t) ? NULL : strndup(t, e - t); + item->value = (!quoted && e == t) ? NULL : stredup(t); + if (item->value != NULL) str_validate(item->value, item->value + strlen(item->value)); } else { /* it's an orphan item */ this->ReportFileError("ini: '", buffer, "' outside of group"); @@ -312,7 +315,7 @@ void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir) } if (comment_size > 0) { - this->comment = strndup(comment, comment_size); + this->comment = stredup(comment, comment + comment_size - 1); comment_size = 0; } diff --git a/src/ini_type.h b/src/ini_type.h index 05133c77f0..ce383b959c 100644 --- a/src/ini_type.h +++ b/src/ini_type.h @@ -28,7 +28,7 @@ struct IniItem { char *value; ///< The value of this item char *comment; ///< The comment associated with this item - IniItem(struct IniGroup *parent, const char *name, size_t len = 0); + IniItem(struct IniGroup *parent, const char *name, const char *last = NULL); ~IniItem(); void SetValue(const char *value); @@ -43,7 +43,7 @@ struct IniGroup { char *name; ///< name of group char *comment; ///< comment for group - IniGroup(struct IniLoadFile *parent, const char *name, size_t len = 0); + IniGroup(struct IniLoadFile *parent, const char *name, const char *last = NULL); ~IniGroup(); IniItem *GetItem(const char *name, bool create); diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index 5d13058944..de8b379392 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -33,6 +33,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + struct SelectGameWindow : public Window { SelectGameWindow(WindowDesc *desc) : Window(desc) @@ -208,7 +210,7 @@ static const NWidgetPart _nested_select_game_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_OPTIONS), SetMinimalSize(158, 12), SetDataTip(STR_INTRO_GAME_OPTIONS, STR_INTRO_TOOLTIP_GAME_OPTIONS), SetPadding(0, 0, 0, 10), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_SETTINGS_OPTIONS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_ADVANCED_SETTINGS, STR_INTRO_TOOLTIP_ADVANCED_SETTINGS), SetPadding(0, 10, 0, 0), SetFill(1, 0), + SetDataTip(STR_INTRO_CONFIG_SETTINGS_TREE, STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE), SetPadding(0, 10, 0, 0), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 6), diff --git a/src/landscape.cpp b/src/landscape.cpp index 0d8abf9bf1..d1c73fd42b 100644 --- a/src/landscape.cpp +++ b/src/landscape.cpp @@ -32,10 +32,13 @@ #include "company_func.h" #include "pathfinder/npf/aystar.h" #include +#include #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + extern const TileTypeProcs _tile_type_clear_procs, _tile_type_rail_procs, @@ -329,7 +332,7 @@ void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2) /** * Get slope of a tile on top of a (possible) foundation - * If a tile does not have a foundation, the function returns the same as GetTilePixelSlope. + * If a tile does not have a foundation, the function returns the same as GetTileSlope. * * @param tile The tile of interest. * @param z returns the z of the foundation slope. (Can be NULL, if not needed) @@ -667,8 +670,7 @@ CommandCost CmdClearArea(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 const Company *c = (flags & (DC_AUTO | DC_BANKRUPT)) ? NULL : Company::GetIfValid(_current_company); int limit = (c == NULL ? INT32_MAX : GB(c->clear_limit, 16, 16)); - TileArea ta(tile, p1); - TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta); + TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(tile, p1); for (; *iter != INVALID_TILE; ++(*iter)) { TileIndex t = *iter; CommandCost ret = DoCommand(t, 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR); @@ -692,11 +694,10 @@ CommandCost CmdClearArea(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* draw explosion animation... * Disable explosions when game is paused. Looks silly and blocks the view. */ - TileIndex off = t - ta.tile; - if ((TileX(off) == 0 || TileX(off) == ta.w - 1U) && (TileY(off) == 0 || TileY(off) == ta.h - 1U) && _pause_mode == PM_UNPAUSED) { - /* big explosion in each corner, or small explosion for single tiles */ + if ((t == tile || t == p1) && _pause_mode == PM_UNPAUSED) { + /* big explosion in two corners, or small explosion for single tiles */ CreateEffectVehicleAbove(TileX(t) * TILE_SIZE + TILE_SIZE / 2, TileY(t) * TILE_SIZE + TILE_SIZE / 2, 2, - ta.w == 1 && ta.h == 1 ? EV_EXPLOSION_SMALL : EV_EXPLOSION_LARGE + TileX(tile) == TileX(p1) && TileY(tile) == TileY(p1) ? EV_EXPLOSION_SMALL : EV_EXPLOSION_LARGE ); } } else { @@ -722,12 +723,13 @@ void RunTileLoop() * shift register (LFSR). This allows a deterministic pseudorandom ordering, but * still with minimal state and fast iteration. */ - /* Maximal length LFSR feedback terms, from 12-bit (for 64x64 maps) to 22-bit (for 2048x2048 maps). + /* Maximal length LFSR feedback terms, from 12-bit (for 64x64 maps) to 24-bit (for 4096x4096 maps). * Extracted from http://www.ece.cmu.edu/~koopman/lfsr/ */ static const uint32 feedbacks[] = { - 0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8 + 0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8, 0x4004B2, 0x800B87 }; - const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 12]; + assert_compile(lengthof(feedbacks) == 2 * MAX_MAP_SIZE_BITS - 2 * MIN_MAP_SIZE_BITS + 1); + const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 2 * MIN_MAP_SIZE_BITS]; /* We update every tile every 256 ticks, so divide the map size by 2^8 = 256 */ uint count = 1 << (MapLogX() + MapLogY() - 8); @@ -890,6 +892,7 @@ static void CreateDesertOrRainForest() { TileIndex update_freq = MapSize() / 4; const TileIndexDiffC *data; + uint max_desert_height = CeilDiv(_settings_game.construction.max_heightlevel, 4); for (TileIndex tile = 0; tile != MapSize(); ++tile) { if ((tile % update_freq) == 0) IncreaseGeneratingWorldProgress(GWP_LANDSCAPE); @@ -899,7 +902,7 @@ static void CreateDesertOrRainForest() for (data = _make_desert_or_rainforest_data; data != endof(_make_desert_or_rainforest_data); ++data) { TileIndex t = AddTileIndexDiffCWrap(tile, *data); - if (t != INVALID_TILE && (TileHeight(t) >= 4 || IsTileType(t, MP_WATER))) break; + if (t != INVALID_TILE && (TileHeight(t) >= max_desert_height || IsTileType(t, MP_WATER))) break; } if (data == endof(_make_desert_or_rainforest_data)) { SetTropicZone(tile, TROPICZONE_DESERT); @@ -937,8 +940,7 @@ static void CreateDesertOrRainForest() static bool FindSpring(TileIndex tile, void *user_data) { int referenceHeight; - Slope s = GetTileSlope(tile, &referenceHeight); - if (s != SLOPE_FLAT || IsWaterTile(tile)) return false; + if (!IsTileFlat(tile, &referenceHeight) || IsWaterTile(tile)) return false; /* In the tropics rivers start in the rainforest. */ if (_settings_game.game_creation.landscape == LT_TROPIC && GetTropicZone(tile) != TROPICZONE_RAINFOREST) return false; @@ -974,7 +976,7 @@ static bool FindSpring(TileIndex tile, void *user_data) static bool MakeLake(TileIndex tile, void *user_data) { uint height = *(uint*)user_data; - if (!IsValidTile(tile) || TileHeight(tile) != height || GetTileSlope(tile) != SLOPE_FLAT) return false; + if (!IsValidTile(tile) || TileHeight(tile) != height || !IsTileFlat(tile)) return false; if (_settings_game.game_creation.landscape == LT_TROPIC && GetTropicZone(tile) == TROPICZONE_DESERT) return false; for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) { @@ -1098,18 +1100,20 @@ static void BuildRiver(TileIndex begin, TileIndex end) /** * Try to flow the river down from a given begin. - * @param marks Array for temporary of iterated tiles. * @param spring The springing point of the river. * @param begin The begin point we are looking from; somewhere down hill from the spring. * @return True iff a river could/has been built, otherwise false. */ -static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin) +static bool FlowRiver(TileIndex spring, TileIndex begin) { + #define SET_MARK(x) marks.insert(x) + #define IS_MARKED(x) (marks.find(x) != marks.end()) + uint height = TileHeight(begin); if (IsWaterTile(begin)) return DistanceManhattan(spring, begin) > _settings_game.game_creation.min_river_length; - MemSetT(marks, 0, MapSize()); - marks[begin] = true; + std::set marks; + SET_MARK(begin); /* Breadth first search for the closest tile we can flow down to. */ std::list queue; @@ -1123,15 +1127,15 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin) queue.pop_front(); uint height2 = TileHeight(end); - if (GetTileSlope(end) == SLOPE_FLAT && (height2 < height || (height2 == height && IsWaterTile(end)))) { + if (IsTileFlat(end) && (height2 < height || (height2 == height && IsWaterTile(end)))) { found = true; break; } for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) { TileIndex t2 = end + TileOffsByDiagDir(d); - if (IsValidTile(t2) && !marks[t2] && FlowsDown(end, t2)) { - marks[t2] = true; + if (IsValidTile(t2) && !IS_MARKED(t2) && FlowsDown(end, t2)) { + SET_MARK(t2); count++; queue.push_back(t2); } @@ -1140,17 +1144,18 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin) if (found) { /* Flow further down hill. */ - found = FlowRiver(marks, spring, end); + found = FlowRiver(spring, end); } else if (count > 32) { /* Maybe we can make a lake. Find the Nth of the considered tiles. */ TileIndex lakeCenter = 0; - for (int i = RandomRange(count - 1); i != 0; lakeCenter++) { - if (marks[lakeCenter]) i--; - } + int i = RandomRange(count - 1) + 1; + std::set::const_iterator cit = marks.begin(); + while (--i) cit++; + lakeCenter = *cit; if (IsValidTile(lakeCenter) && /* A river, or lake, can only be built on flat slopes. */ - GetTileSlope(lakeCenter) == SLOPE_FLAT && + IsTileFlat(lakeCenter) && /* We want the lake to be built at the height of the river. */ TileHeight(begin) == TileHeight(lakeCenter) && /* We don't want the lake at the entry of the valley. */ @@ -1170,6 +1175,7 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin) } } + marks.clear(); if (found) BuildRiver(begin, end); return found; } @@ -1184,19 +1190,16 @@ static void CreateRivers() uint wells = ScaleByMapSize(4 << _settings_game.game_creation.amount_of_rivers); SetGeneratingWorldProgress(GWP_RIVER, wells + 256 / 64); // Include the tile loop calls below. - bool *marks = CallocT(MapSize()); for (; wells != 0; wells--) { IncreaseGeneratingWorldProgress(GWP_RIVER); for (int tries = 0; tries < 128; tries++) { TileIndex t = RandomTile(); if (!CircularTileSearch(&t, 8, FindSpring, NULL)) continue; - if (FlowRiver(marks, t, t)) break; + if (FlowRiver(t, t)) break; } } - free(marks); - /* Run tile loop to update the ground density. */ for (uint i = 0; i != 256; i++) { if (i % 64 == 0) IncreaseGeneratingWorldProgress(GWP_RIVER); @@ -1270,7 +1273,8 @@ void GenerateLandscape(byte mode) assert(_settings_game.difficulty.quantity_sea_lakes != CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY); uint i = ScaleByMapSize(GB(r, 0, 7) + (3 - _settings_game.difficulty.quantity_sea_lakes) * 256 + 100); for (; i != 0; --i) { - GenerateTerrain(_settings_game.difficulty.terrain_type, 0); + /* Make sure we do not overflow. */ + GenerateTerrain(Clamp(_settings_game.difficulty.terrain_type, 0, 3), 0); } break; } diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 077b46c77b..7ed60a9f15 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -32,11 +32,11 @@ STR_CARGO_PLURAL_PASSENGERS :Passasiers STR_CARGO_PLURAL_COAL :Steenkool STR_CARGO_PLURAL_MAIL :Pos STR_CARGO_PLURAL_OIL :Olie -STR_CARGO_PLURAL_LIVESTOCK :Lewende Hawe +STR_CARGO_PLURAL_LIVESTOCK :Lewendehawe STR_CARGO_PLURAL_GOODS :Goedere STR_CARGO_PLURAL_GRAIN :Graan STR_CARGO_PLURAL_WOOD :Hout -STR_CARGO_PLURAL_IRON_ORE :Yster Erts +STR_CARGO_PLURAL_IRON_ORE :Ystererts STR_CARGO_PLURAL_STEEL :Staal STR_CARGO_PLURAL_VALUABLES :Edelmetale STR_CARGO_PLURAL_COPPER_ORE :Koper Erts @@ -96,38 +96,38 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Gaskoeldrank # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passasier{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passasier{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} steenkool -STR_QUANTITY_MAIL :{COMMA} sak{P "" ke} pos +STR_QUANTITY_MAIL :{COMMA}{NBSP}sak{P "" ke} pos STR_QUANTITY_OIL :{VOLUME_LONG} olie -STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} lewende hawe -STR_QUANTITY_GOODS :{COMMA} krat{P "" te} goedere +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}item{P "" s} lewendehawe +STR_QUANTITY_GOODS :{COMMA}{NBSP}krat{P "" te} goedere STR_QUANTITY_GRAIN :{WEIGHT_LONG} graan STR_QUANTITY_WOOD :{WEIGHT_LONG} hout -STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} yster erts +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} ystererts STR_QUANTITY_STEEL :{WEIGHT_LONG} staal -STR_QUANTITY_VALUABLES :{COMMA} sak{P "" ke} waardevolle artikels -STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} koper erts -STR_QUANTITY_MAIZE :{WEIGHT_LONG} graan +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}sak{P "" ke} edelmetale +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kopererts +STR_QUANTITY_MAIZE :{WEIGHT_LONG} mielies STR_QUANTITY_FRUIT :{WEIGHT_LONG} vrugte -STR_QUANTITY_DIAMONDS :{COMMA} sak{P "" ke} diamante +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sak{P "" ke} diamante STR_QUANTITY_FOOD :{WEIGHT_LONG} kos STR_QUANTITY_PAPER :{WEIGHT_LONG} papier -STR_QUANTITY_GOLD :{COMMA} sak{P "" ke} goud +STR_QUANTITY_GOLD :{COMMA}{NBSP}sak{P "" ke} goud STR_QUANTITY_WATER :{VOLUME_LONG} water STR_QUANTITY_WHEAT :{WEIGHT_LONG} koring STR_QUANTITY_RUBBER :{VOLUME_LONG} rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} suiker -STR_QUANTITY_TOYS :{COMMA} ton speel{P ding goed} -STR_QUANTITY_SWEETS :{COMMA} sak{P "" ke} lekkers -STR_QUANTITY_COLA :{VOLUME_LONG} Kola +STR_QUANTITY_TOYS :{COMMA}{NBSP}ton speelgoed +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sak{P "" ke} lekkers +STR_QUANTITY_COLA :{VOLUME_LONG} kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} spookasem STR_QUANTITY_BUBBLES :{COMMA} borrel{P "" s} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} toffie {P "" s} STR_QUANTITY_BATTERIES :{COMMA} batter{P y ye} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastiek STR_QUANTITY_FIZZY_DRINKS :{COMMA} koeldran{P k ke} -STR_QUANTITY_N_A :N/A +STR_QUANTITY_N_A :n.v.t. # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : @@ -141,7 +141,7 @@ STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}HT STR_ABBREV_IRON_ORE :{TINY_FONT}YE STR_ABBREV_STEEL :{TINY_FONT}ST -STR_ABBREV_VALUABLES :{TINY_FONT}WA +STR_ABBREV_VALUABLES :{TINY_FONT}EM STR_ABBREV_COPPER_ORE :{TINY_FONT}KE STR_ABBREV_MAIZE :{TINY_FONT}ML STR_ABBREV_FRUIT :{TINY_FONT}VR @@ -166,22 +166,22 @@ STR_ABBREV_NONE :{TINY_FONT}NS STR_ABBREV_ALL :{TINY_FONT}ALMAL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passasier{P "" s} -STR_BAGS :{COMMA} sak{P "" ke} -STR_TONS :{COMMA} ton{P "" ""} -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} item{P "" s} -STR_CRATES :{COMMA} krat{P "" te} +STR_PASSENGERS :{COMMA}{NBSP}passasier{P "" s} +STR_BAGS :{COMMA}{NBSP}sak{P "" ke} +STR_TONS :{COMMA}{NBSP}ton +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}item{P "" s} +STR_CRATES :{COMMA}{NBSP}krat{P "" te} # Colours, do not shuffle -STR_COLOUR_DARK_BLUE :Donker Blou -STR_COLOUR_PALE_GREEN :Vaal Groen +STR_COLOUR_DARK_BLUE :Donkerblou +STR_COLOUR_PALE_GREEN :Vaalgroen STR_COLOUR_PINK :Pienk STR_COLOUR_YELLOW :Geel STR_COLOUR_RED :Rooi STR_COLOUR_LIGHT_BLUE :Ligblou STR_COLOUR_GREEN :Groen -STR_COLOUR_DARK_GREEN :Donker Groen +STR_COLOUR_DARK_GREEN :Donkergroen STR_COLOUR_BLUE :Blou STR_COLOUR_CREAM :Room STR_COLOUR_MAUVE :Ligpers @@ -192,37 +192,37 @@ STR_COLOUR_GREY :Grys STR_COLOUR_WHITE :Wit # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mpu -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mpu +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}pk -STR_UNITS_POWER_METRIC :{COMMA}pk -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}pk +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}pk +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gelling -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gelling +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gelling{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gelling{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} vt -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}vt +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter string: @@ -241,14 +241,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Maak ven STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Venster titel - sleep om venster te beweeg STR_TOOLTIP_SHADE :{BLACK}Versteek venster - wys slegs titel staaf STR_TOOLTIP_DEBUG :{BLACK}Vertoon NewGRF ontfout inligting -STR_TOOLTIP_DEFSIZE :{BLACK}Verander venstergrootte na verstek grootte. Ctrl+Kliek om die huidge skermgrootte as verstek te stoor. -STR_TOOLTIP_STICKY :{BLACK}Merk die venster as ontoemaakbaar met die"Sluit Alle Vensters" sleutel. Ctrl+Kliek om te stoor as verstek -STR_TOOLTIP_RESIZE :{BLACK}Kliek en sleep om venster te vergroot +STR_TOOLTIP_DEFSIZE :{BLACK}Verander venstergrootte na verstek grootte. Ctrl+klik om die huidge skermgrootte as verstek te stoor. +STR_TOOLTIP_STICKY :{BLACK}Merk die venster as ontoemaakbaar met die"Sluit Alle Vensters" sleutel. Ctrl+klik om te stoor as verstek +STR_TOOLTIP_RESIZE :{BLACK}Klik en sleep om venster te vergroot STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skakel groot/klein venster groote STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys op/af STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys links/regs STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Vernietig geboue ens. op 'n vierkant van land +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Wys versteekte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Wys weggesteekde +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Wys weggesteekde +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Wys weggesteekde + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Deur hierdie opsie te aktiveer, sal die weggesteekde treine ook vertoon word +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Deur hierdie opsie te aktiveer, sal die weggesteekde voertuie ook vertoon word +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Deur hierdie opsie te aktiveer, sal die weggesteekde skepe ook vertoon word +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Deur hierdie opsie te aktiveer, sal die weggesteekde vliegtuie ook vertoon word + # Query window STR_BUTTON_DEFAULT :{BLACK}Gewone STR_BUTTON_CANCEL :{BLACK}Kanselleer @@ -288,8 +299,8 @@ STR_SORT_BY_TIMETABLE_DELAY :Rooster vertrag STR_SORT_BY_FACILITY :Stasie tipe STR_SORT_BY_WAITING_TOTAL :Totale wagtende vrag STR_SORT_BY_WAITING_AVAILABLE :Beskikbare wagtende vrag -STR_SORT_BY_RATING_MAX :Hoogste vragwaardering -STR_SORT_BY_RATING_MIN :Laagte vrag gradering +STR_SORT_BY_RATING_MAX :Hoogste vraggradering +STR_SORT_BY_RATING_MIN :Laagste vraggradering STR_SORT_BY_ENGINE_ID :EngineID (klassieke sorteer) STR_SORT_BY_COST :Koste STR_SORT_BY_POWER :Krag @@ -303,7 +314,7 @@ STR_SORT_BY_POPULATION :Bevolking STR_SORT_BY_RATING :Waardering # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pouseer spel +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Onderbreek spel STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Vinnig vooruit die spel STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsies STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Stoor spel, verlaat spel, verlaat @@ -318,17 +329,17 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Toon doe STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vertoon grafieke STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vertoon maatskappy liga tabel STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Konsolideer konstruksie van nuwe nywerheid -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vertoon lys van maatskappy se treine. Ctrl+Kliek tokkel die opening van die groep/voertuig lys -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vertoon lys van maatskappy se pad voertuie. Ctrl+Kliek tokkel die opening van die groep/voertuig lys -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vertoon lys van maatskappy se skepe. Ctrl+Kliek tokkel die opening van die groep/voertuig lys -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon lys van maatskappy se vliegtuie. Ctrl+Kliek tokkel die opening van die groep/voertuig lys +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vertoon maatskappy se treinlys. Ctrl+klik wissel die vertoning van die groep/voertuiglys +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vertoon maatskappy se padvoertuiglys. Ctrl+klik wissel die vertoning van die groep/voertuiglys +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vertoon maatskappy se skiplys. Ctrl+klik wissel die vertoning van die groep/voertuiglys +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon maatskappy se vliegtuiglys. Ctrl+klik wissel die vertoning van die groep/voertuiglys STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Vergroot die skerm STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Verklein die skerm STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoorweg spoor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bou paaie STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bou skip hawe STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bou lughawens -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Maak die landargitekteur nutsbalk oop om, land te verhoog/verlaag, boome beplant, ens. +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Maak die landargitektuur nutsbalk oop om, land te verhoog/verlaag, boome beplant, ens. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vertoon klank/musiek venster STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vertoon laaste boodskap/nuus verslag, vertoon boodskap opsies STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Land gebied informasie, konsole, skrip ontfouting, skermkiekie, omtrent OpenTTD @@ -340,7 +351,7 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenario Redigeerder STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Beweeg die begin datum 1 jaar terug STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Beweeg die begin datum 1 jaar voorentoe -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Kliek om die begin jaar in te sleutel +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klik om die beginjaar in te voer STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon kaart, dorp gids STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskap generasie STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Dorp generasie @@ -353,8 +364,8 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Plaas vo ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Stoor scenario STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Laai scenario -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Stoor hoogtekaart -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Laai Hoogtekaart +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Stoor reliëfkaart +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Laai reliëfkaart STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Verlaat redigeerder STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Verlaat @@ -362,13 +373,13 @@ STR_SCENEDIT_FILE_MENU_QUIT :Verlaat ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spel opsies -STR_SETTINGS_MENU_CONFIG_SETTINGS :Gevorderde stellings +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Stellings STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spel skript instellings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stellings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Deursigtigheid opsies STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Dorp name vertoon STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stasie name vertoon -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegwyser name vertoon +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Vertoon roetebakens se name STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekens vertoon STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Vertoon mededinger tekens en name STR_SETTINGS_MENU_FULL_ANIMATION :Volle animasie @@ -422,8 +433,8 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Konsolideer nuw ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Spoorweg konstruksie -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrifiseerde spoorweg konstruksie +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Spoorwegkonstruksie +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elekriese spoorwegkonstruksie STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monospoor konstruksie STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magneetsweeftrein konstruksie ############ range ends here @@ -442,7 +453,7 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Lughawe konstru ############ range ends here ############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :Landargitekteur +STR_LANDSCAPING_MENU_LANDSCAPING :Landargitektuur STR_LANDSCAPING_MENU_PLANT_TREES :Plant bome STR_LANDSCAPING_MENU_PLACE_SIGN :Plaas teken ############ range ends here @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :skakel beperkte STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Skakel inkleur van vuil blokke ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1ste STR_ORDINAL_NUMBER_2ND :2de STR_ORDINAL_NUMBER_3RD :3de @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12de STR_ORDINAL_NUMBER_13TH :13de STR_ORDINAL_NUMBER_14TH :14de STR_ORDINAL_NUMBER_15TH :15de -STR_ORDINAL_NUMBER_16TH :16de -STR_ORDINAL_NUMBER_17TH :17de -STR_ORDINAL_NUMBER_18TH :18de -STR_ORDINAL_NUMBER_19TH :19de -STR_ORDINAL_NUMBER_20TH :20ste -STR_ORDINAL_NUMBER_21ST :21ste -STR_ORDINAL_NUMBER_22ND :22ste -STR_ORDINAL_NUMBER_23RD :23ste -STR_ORDINAL_NUMBER_24TH :24ste -STR_ORDINAL_NUMBER_25TH :25ste -STR_ORDINAL_NUMBER_26TH :26ste -STR_ORDINAL_NUMBER_27TH :27ste -STR_ORDINAL_NUMBER_28TH :28ste -STR_ORDINAL_NUMBER_29TH :29ste -STR_ORDINAL_NUMBER_30TH :30ste -STR_ORDINAL_NUMBER_31ST :31ste +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1ste +STR_DAY_NUMBER_2ND :2de +STR_DAY_NUMBER_3RD :3de +STR_DAY_NUMBER_4TH :4de +STR_DAY_NUMBER_5TH :5de +STR_DAY_NUMBER_6TH :6de +STR_DAY_NUMBER_7TH :7de +STR_DAY_NUMBER_8TH :8ste +STR_DAY_NUMBER_9TH :9de +STR_DAY_NUMBER_10TH :10de +STR_DAY_NUMBER_11TH :11de +STR_DAY_NUMBER_12TH :12de +STR_DAY_NUMBER_13TH :13de +STR_DAY_NUMBER_14TH :14de +STR_DAY_NUMBER_15TH :15de +STR_DAY_NUMBER_16TH :16de +STR_DAY_NUMBER_17TH :17de +STR_DAY_NUMBER_18TH :18de +STR_DAY_NUMBER_19TH :19de +STR_DAY_NUMBER_20TH :20ste +STR_DAY_NUMBER_21ST :21ste +STR_DAY_NUMBER_22ND :22ste +STR_DAY_NUMBER_23RD :23ste +STR_DAY_NUMBER_24TH :24ste +STR_DAY_NUMBER_25TH :25ste +STR_DAY_NUMBER_26TH :26ste +STR_DAY_NUMBER_27TH :27ste +STR_DAY_NUMBER_28TH :28ste +STR_DAY_NUMBER_29TH :29ste +STR_DAY_NUMBER_30TH :30ste +STR_DAY_NUMBER_31ST :31ste ############ range for days ends ############ range for months starts @@ -561,7 +590,7 @@ STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vertoon # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Sleutel vir maatskappy grafieke -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliek hier om maatskappy se intrede op grafiek aan/af te skakel +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klik hier om maatskappy se intrede op grafiek aan/af te skakel # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Maatskappy Liga Tabel @@ -574,7 +603,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direkteur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Hoofbestuursleier STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Voorsitter STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnaat # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Aanwysend prestasie gradering @@ -641,7 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Kies 'Be STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skakel musiek lys skommel aan/af STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon musiek snit keuse venster -STR_ERROR_NO_SONGS :{WHITE}'n Musiek stel was gekies wat nie liedere bevat nie. Niks liedere sal gespel word nie +STR_ERROR_NO_SONGS :{WHITE}'n Musiek stel is gekies wat geen liedere bevat nie. Geen liedere sal gespeel word nie # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiek Program Keuse @@ -650,11 +679,11 @@ STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLA STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Maak skoon STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Maak huidige musiek keuse skoon (slegs Bestelling1 of Bestelling2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Kliek op 'n liedjie om by huidige musiek lys by te sit (slegs Bestelling1 of Bestelling2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliek op musiek lied om te verwyder van huidige program (Slegs Gewoonte1 of Gewoonte2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op 'n liedjie om by huidige musieklys by te sit (slegs Bestelling1 of Bestelling2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op musiek lied om te verwyder van huidige program (Slegs Gewoonte1 of Gewoonte2) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Beste maatskappye wat {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top maatskappye wat {NUM} bereik het STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Maatskappy Liga Tafel in {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Sakeman @@ -686,9 +715,9 @@ STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vertoon STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Wys vervoer roetes op kaart STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Wys plantegroei op kaart STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Wys land eienaars op kaart -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kliek op 'n Bedryf tipe om dit te vertoon. Ctrl+kliek deaktiveer alle tipes die geselekteerde een. Ctrl+Kliek dit weer om alle bedryf tipes te aktiveer -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kliek op 'n maatskappy om sy eiendomme te vertoon. Ctrl+Kliek deaktiveer alle maatskappye behalwe die geselekteerde een. Ctrl+Kliek op dit weer om alle maatskappye te aktiveer -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kliek op 'n vrag om eienskappe te vertoon of te versteek. Ctrl+Kliek versteek alle vrag behalwe die een wat op die oomblik gekies is. Ctrl+Kliek weer om alle vrag te vertoon. +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik op 'n nywerheidstipe om dit te vertoon. Ctrl+klik deaktiveer alle tipes behalwe die gekose een. Ctrl+klik dit weer om alle nywerheidstipes te aktiveer +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik op 'n maatskappy om sy eiendomme te vertoon. Ctrl+klik deaktiveer alle maatskappye behalwe die gekose een. Ctrl+klik op dit weer om alle maatskappye te aktiveer +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klik op 'n vrag om eienskappe te vertoon of te versteek. Ctrl+klik versteek alle vrag behalwe die een wat op die oomblik gekies is. Ctrl+klik weer om alle vrag te vertoon. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Paaie STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Spoorweë @@ -696,12 +725,12 @@ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Geboue/Nywerhede STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Voertuie STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Treine -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Pad Voertuie +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Padvoertuie STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skepe STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Vliegtuie STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Vervoer Roetes STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Woud -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Spoorweg Stasie +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Treinstasie STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Vragmotor Laai Area STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Bus Stasie STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Lughawe/Helihawe @@ -730,7 +759,7 @@ STR_SMALLMAP_ENABLE_ALL :{BLACK}Aktiveer STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Vertoon hoogte STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Moet nie enige nywerheide op die kaart vertoon STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vertoon alle nywerheide op die kaart -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Skakel vertooning van hoogtekaart +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Skakel vertoning van reliëfkaart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Vertoon geen maatskappy eiendom op die kaart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vertoon alle maatskappy eiendom op die kaart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Vertoon geen vrag op die kaart @@ -739,7 +768,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vertoon # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Wys laaste boodskap of nuus verslag STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * STIL * * +STR_STATUSBAR_PAUSED :{YELLOW}* * GEONDERBREEK * * STR_STATUSBAR_AUTOSAVE :{RED}OUTOSTOOR STR_STATUSBAR_SAVING_GAME :{RED}* * STOOR SPELETJIE * * @@ -770,15 +799,15 @@ STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLAC STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Olie raffinadery het ontplof naby {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}fabriek vernietig in agterdogtig omstandighede naby {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'VVV' beland naby {TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Kool myn bedaaring los spoor van vernietiging naby {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Steenkool myn ongeluk los spoor van vernietiging naby {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Oorstroom!{}Te minste {COMMA} vermis, aangeneem dood na beduidende oorstroom! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Vervoer maatsappy in moelikheid! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sal binnekort afverkoop of bankrospeler verklaar word tensy prestasie verbeter! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sal binnekort verkoop of bankrot verklaar word tensy prestasie verbeter! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Vervoer maatskappy samesmelting! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is na {STRING} vir {CURRENCY_LONG} verkoop! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrotspeler! -STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is deur skuldeisers toegemaak en alle bates is afverkoop! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is deur skuldeisers toegemaak en alle bates is verkoop! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nuwe vervoer maatskappy geloods! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} begin konstruksie naby {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} is deur {STRING} oorgevat! @@ -798,12 +827,12 @@ STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLAC STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Insinking Oor!{}{}Oplewing in sake gee vertroue na nywerhede as ekonomie versterk! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} vermeerder produksie! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nuwe kool laag gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nuwe steenkool laag gevind by {INDUSTRY}!{}Produksie word voorspel dat dit sal verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nuwe olie reserwes gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Verbeterde boerdery metodes by {INDUSTRY} sal produksie verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksie by {INDUSTRY} vermeerder {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} produksie verminder 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insek vervuiling oorsaak verwoesting by {INDUSTRY}!{}Produksie verminder 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insek plaag veroorsaak verwoesting by {INDUSTRY}!{}Produksie verminder 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksie by {INDUSTRY} verminder {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} wag in depot @@ -811,20 +840,19 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wag in depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wag in die vliegtuig hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} het te min bevele in skedule STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} het 'n leë bevel STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} het duplikaat bevele STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} het onwettige stasie in sy bevele -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} het 'n bevel om by 'n lughawe te land waar die aanloopbaan te kort is STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} raak oud. STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} raak baie oud. STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} raak baie oud en benodig dringende vervanging. STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kan nie 'n roete vind om aan te gaan nie. -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} is verlore. -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} se wins was verlede jaar {CURRENCY_LONG} +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} het verdwaal. +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} se wins verlede jaar was {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kan nie die volgende bestemmingpunt bereik nie want dis te ver STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} het gestop omdat 'n herbou opdrag gefaal het @@ -839,8 +867,8 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} aanvaar nou {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} aanvaar nou {STRING} en {STRING} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Aanbod van subsidie verval:{}{}{STRING} van {STRING} tot {STRING} sal nou nie 'n subsidie aantrek nie. -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie terugtrek:{}{}{STRING} diens van {STRING} tot {STRING} is nie meer gesubsideieer nie. +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsidie-aanbod het verval:{}{}{STRING} van {STRING} tot {STRING} sal nou nie 'n subsidie aantrek nie. +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie onttrek:{}{}{STRING} diens van {STRING} tot {STRING} is nie meer gesubsideieer nie. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Diens subsidie aanbod:{}{}Eerste {STRING} diens van {STRING} tot {STRING} sal 'n jaar se subsidie van die plaaslike raad kry! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Diens subsidie toeken aan {STRING}!{}{}{STRING} Diens van {STRING} tot {STRING} sal nou 50% extra vir die volgende jaar betaal! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Diens subsidie toeken aan {STRING}!{}{}{STRING} diens van {STRING} tot {STRING} sal nou dubbel pryse vir die volgende jaar betaal! @@ -860,39 +888,39 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Plak die # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spel Opsies -STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geld eenhede +STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geldeenheid STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanse Dollar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK) +STR_GAME_OPTIONS_CURRENCY_JPY :Japannese Jen (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Oostenrykse Schilling (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiese Frank (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Switserse Frank (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjeggiese Kroon (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Duitse Mark (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Deense Krone (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spaanse Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM) +STR_GAME_OPTIONS_CURRENCY_FIM :Finse Markka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franse Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polish Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauen Litas (LTL) +STR_GAME_OPTIONS_CURRENCY_GRD :Griekse Dragma (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Yslandse Kroon (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Italiaanse Lire (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandse Gulde (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Noorweegse Kroon (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Poolse Zloty (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Roemeense Leu (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Russiese Roebel (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Sloweense Tolar (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Sweedse Kroon (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lire (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakse Kroon (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliaanse Real (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Estniese Kroon (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litause Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Suid Koreanse Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Suid Afrikaanse Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Pasmaak... @@ -900,10 +928,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgiaanse Lar STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Pad voertuie STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Kies kant van pad waarop voertuie ry STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Bestuur aan linkerkant @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Outostoor STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies interval tussen outomatiese store +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Af STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Elke maand STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Elke 3 maande STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Elke 6 maande STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Elke 12 maande +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Kies die koppelvlak taal om te gebruik @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm re STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Kies die skerm resolusie om te gebruik STR_GAME_OPTIONS_RESOLUTION_OTHER :ander -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermkiekie formaat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kies die skermkiekie formaat om te gebruik +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK} Koppelvlak groote +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK} Kies die koppelvlak element groote om te gebruik + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normaal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dubbel groote +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quad grootte STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafikastel STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis-grafikastel stel om te gebruik @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kies die STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupte lêer{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis musiek stel +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kon nie 'n lys van beskikbare skermresolusies bepaal nie STR_ERROR_FULLSCREEN_FAILED :{WHITE}Volskerm metode gedop # Custom currency window @@ -1013,11 +1044,11 @@ STR_NUM_CUSTOM :Pasmaak STR_NUM_CUSTOM_NUMBER :Pasmaak ({NUM}) STR_VARIETY_NONE :Geen -STR_VARIETY_VERY_LOW :Baaie Laag +STR_VARIETY_VERY_LOW :Baie Laag STR_VARIETY_LOW :Laag STR_VARIETY_MEDIUM :Middelmatig STR_VARIETY_HIGH :Hoog -STR_VARIETY_VERY_HIGH :Baaie Hoog +STR_VARIETY_VERY_HIGH :Baie Hoog STR_AI_SPEED_VERY_SLOW :Baie Stadig STR_AI_SPEED_SLOW :Stadig @@ -1050,6 +1081,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Baie Plat STR_TERRAIN_TYPE_FLAT :Plat STR_TERRAIN_TYPE_HILLY :Koppierig STR_TERRAIN_TYPE_MOUNTAINOUS :Bergagtig +STR_TERRAIN_TYPE_ALPINIST :Alpinis STR_CITY_APPROVAL_PERMISSIVE :Permissief STR_CITY_APPROVAL_TOLERANT :Toelaatbaar @@ -1057,8 +1089,8 @@ STR_CITY_APPROVAL_HOSTILE :Vyandelik STR_WARNING_NO_SUITABLE_AI :{WHITE}Geen geskikte KI beskikbaar...{}Jy kan verskeie KI's aflaai deur middel van die 'Aanlyn Inhoud' stelsel -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Gevorderde stellings +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Stellings STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Brei alles uit STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Krimp alles in @@ -1071,21 +1103,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Maatskappy inst STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Maatskappy instelling (word gestoor in Spaarspeletjies; raak net nuwe speletjies) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Maatskappy instelling (word gestoor in spaarspeletjie; raak net die huidige maatskappy) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vertoon: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beperk die lys hier onder tot slegs veranderde verstellings -STR_CONFIG_SETTING_RESTRICT_BASIC :Basiese verstellings -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gevorderde verstellings -STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert verstellings / alle verstellings +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipe: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beperk die lys hier onder deur voorafgestelde "filters" te gebruik slegs veranderde verstellings +STR_CONFIG_SETTING_RESTRICT_BASIC :Basiese (wys net belangrik verstellings) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gevorderde (wys meeste verstellings) +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert (wys alle verstellings, insluitend vreemde verstellings) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Verstellings met 'n waarde anders as die verstek waarde STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Verstellings met 'n waarde anders as die nuwe spel verstellings STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Beperk die lys hieronder tot net sekere instelling tiepes STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instellings -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliënt instelling (word nie in spaarspeletjies gestoor nie; raak alle speletjies) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spel instelling (word gestoor in spaarspeletjies; raak net nuwe speletjies) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spel instelling (word gestoor in spaarspeletjie; raak net die huidige speletjie) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Maatskappy instelling (word gestoor in spaarspeletjies; raak slegs nuwe speletjies) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Maatskappy instelling (word gestoor in spaarspeletjie; raak net die huidige maatskappy) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliënt-instellings (word nie in spaarspeletjies gestoor nie; raak alle speletjies) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spel-instellings (word gestoor in spaarspeletjies; raak net nuwe speletjies) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spel-instellings (word gestoor in spaarspeletjie; raak net die huidige speletjie) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Maatskappy-instellings (word gestoor in spaarspeletjies; raak slegs nuwe speletjies) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Maatskappy-instellings (word gestoor in spaarspeletjie; raak net die huidige maatskappy) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Kategorie {BLACK}tot {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Tik {BLACK}tot {WHITE}Alle opstel tipes +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Kategorie {BLACK}tot {WHITE}{STRING} {BLACK}en {SILVER}Tik {BLACK}tot {WHITE}Alle opstel tipes +STR_CONFIG_SETTINGS_NONE :{WHITE}- Geen - STR_CONFIG_SETTING_OFF :Af STR_CONFIG_SETTING_ON :Aan @@ -1126,11 +1163,12 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skakel rampe aa STR_CONFIG_SETTING_CITY_APPROVAL :Stadsraad se gesindheid teenoor omgewings-konstruksie: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoeveel invloed klank en skade aan die omgewing deur maatskappye aan die stadswaardering het en verderde bouwerk in die stad. -STR_CONFIG_SETTING_BUILDONSLOPES :Laat bou op skuinstes en kuslyn toe: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :As geaktiveer, kan spore en stasies op meeste hellings gebou word. Indien gedeaktiveer, kan hulle net gebou work op hellings wat die rigting van die spoor volg, en dus geen fondasies verg nie -STR_CONFIG_SETTING_AUTOSLOPE :Laat landargitektuur toe onder geboue, spore, ens. (outohelling): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimum kaarthoogte: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Stel die maksimum toegelate berghoogte +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kan nie die berghoogte verander nie - daar is hoër berge as hierdie op die kaart +STR_CONFIG_SETTING_AUTOSLOPE :Laat landargitektuur toe onder geboue, spore, ens.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Laat Landargitektuur onder geboue en spore sonder om dit te verwyder -STR_CONFIG_SETTING_CATCHMENT :Laat meer realisties grootte opvangsgebied toe: {STRING} +STR_CONFIG_SETTING_CATCHMENT :Laat meer realisties groote opvangsgebied toe: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Laat verskillende groote opvang gebiede toe vir verskillende tipes stasies en lughawens STR_CONFIG_SETTING_EXTRADYNAMITE :Laat verwydering van meer stad-besite paaie, bruge, ens toe: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Maak dit makliker om dorps eiendom en infrastruktuur te verwyder @@ -1151,20 +1189,16 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Die steilte van STR_CONFIG_SETTING_FORBID_90_DEG :Verbied triene en skepe om 90 graad draaie te maak: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 grade draaie kom voor wanneer 'n horisontale spoor direk gevolg deur 'n vertikale spoor op die aangrensende teël, dus waardeur die trein 'n 90 grade draai maak deur die teël rand in plaas van die gewone 45 grade vir 'n ander spoor kombinasies. Dit geld ook vir die draai radius van skepe STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Laat toe dat stasies lanks mekaar gebind kan word: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Laat die toevoeging van dele van 'n stasie sonder om direk aan die bestaande dele te raak. het Ctrl+Kliek nodig terwyl die plasing van die nuwe dele -STR_CONFIG_SETTING_IMPROVEDLOAD :Gebruik verebeterde laai algoritme: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Indien geaktiveer, verskeie voertuie wat by 'n stasie wag sal opeenvolgend gelaai word. Die laai van die volgende voertuig begin eers wanneer daar is genoeg vrag is wat wag om die eerste voertuig te vul -STR_CONFIG_SETTING_GRADUAL_LOADING :Laai voertuie geleidelik: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Geleidelik laai vanvoertuie deur die gebruik van die voertuig se spesifieke laai tydsduur, in plaas van om alles op eenslag te laai met 'n vaste tydduur, afhangende van diehoeveelheid vrag gelaai +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Laat die toevoeging van dele van 'n stasie sonder om direk aan die bestaande dele te raak toe. Ctrl+klik om die nuwe dele te plaas STR_CONFIG_SETTING_INFLATION :Inflasie: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktiveer inflasie in die ekonomie, waar die kostes vinniger styg as betalings -STR_CONFIG_SETTING_SELECTGOODS :Aflewer vrag na 'n stasie slegs as daar 'n aanvrag is:: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Lewer slegs 'n vrag af by 'n stasie wat die vrag van die voertuig versoek het. Dit verhoed dat slegte graderings vir ladings wat nie benodig word by 'n stasie nie STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum brug lengte: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum lengte vir die bou van bruë +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimum brughoogte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimum hoogte om brûe te bou STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tonnel lengte: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum lengte vir die bou van tonnels -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manual primêre nywerheid konstruksie metode: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Handmatige primêre nywerheid konstruksie metode: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode van befondsing van 'n primêre bedryf."Niks" beteken dit nie moontlik is om enige bedryf te finansier, "prospekteer" beteken befondsing is moontlik, maar konstruksie vind plaas in 'n toevallige plek op die kaart en dit kan ook misluk, "ander nywerhede" beteken rou bedrywe kan opgerig word deur ander maatskappye soos verwerking nywerhede. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Geen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :As ander nywerhede @@ -1187,8 +1221,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plek waar 'n tr STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :naby einde STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middel STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ver einde -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Pad voertuig toustaan (met kwantum effekte): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Maak 'n pad voertuig wag by besette padstoppe totdat hulle leeg is STR_CONFIG_SETTING_AUTOSCROLL :Rol skerm as muis by die kant is: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :As dit geaktiveer is, sal subventers begin skuif wanneer die muis naby die kante van die venster is STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Gedeaktiveer @@ -1219,10 +1251,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Laat deur-ry pa STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Laat Bouery van deur-ry pad stasies op dorp beheerde paaie STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Laat deur-ry padhalte toe op paaie wat deur ander deelnemers besit word: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Laat die konstruksie van die ry-deur pad stasies op paaie toe wat deur ander maatskappye besit word -STR_CONFIG_SETTING_ADJACENT_STATIONS :Laat die bou van aangrensende stasies toe: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Laat verskeie stasies toe om mekaar te raak -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktiveer veeltallige NewGRF enjin stelle: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :versoenbaarheid opsie vir ou NewGRFs. Moenie deaktiveer, behalwe as jy weet wat jy doen! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Verandering van die stelling is nie moontlik wanneer daar voertuie is nie STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktuur onderhoud: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :As dit geaktiveer is sal dit veroorsaak dat infrastruktuur onderhoudskoste verhoog. Die koste groei oor-proporsioneel met die netwerk grootte, wat groter maatskappye meer as kleiner maatskappye benadeel @@ -1243,7 +1271,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Voertuie verval STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :As dit geaktiveer is, sal voertuig modelle altyd beskikbaar bly, na die bekendstelling daarvan STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Outohernuwe voertuig as hy oud raak: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :As dit geaktiveer is, word 'n voertuig wat naby die einde van sy werkslewe kom outomaties vervang, wanneer die hernu voorwaardes vervul is. -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Outoherbou wanneer voertuig is {STRING} max ouderdom +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Vervang voertuig outomaties na {STRING} maksimum leeftyd STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relatiewe ouderdom waneer voertuie herweeg moet word ver outo-vervanging STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} maand{P 0 "" e} voor STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} maand{P 0 "" e} later @@ -1253,39 +1281,53 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Tyd wat fout bo STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tydsduur vir die vertoning van foutboodskappe. Kritiese foutboodskappe word nie outomaties toegemaak nie. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekonde{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :wys sleutel-leidraad: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tydsduur voor nutswenke vertoon words as die muis oor koppelvlakelemente gehou word. Nutswenke kan ook aan die regter-muisknoppie verbind word. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tydsduur voor nutswenke vertoon words as die muis oor koppelvlakelemente gehou word. Alternatiewelik kan die nutswenke ook aan die regter-muisknoppie verbind word indien die stelling na 0 gestel word. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Sweef vir {COMMA} sekonde{P 0 "" s} -STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Regs kliek +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Regsklik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Toon stadsbevolking in die naametiket: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vertoon die bevolking van 'n stad in die naametiket op die kaart STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Dikte van lyn in grafieke: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Wydte van kaartlyne. A dun lyn is meer akkuraat om te lees, maar 'n dikker lyn is makliker om te sien en te onderskei van ander lyne. +STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Die landskap beheer die basies spelopsies vir verskillende vrag en hoe dorpe groei. NewGRF en spelskrips gee meer opsies. STR_CONFIG_SETTING_LAND_GENERATOR :Land genereerder: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Hoe die land geskep word, hang af van die grafika stel en skep vaste landskap vorms. TerraGenesis is 'n Perlin-geraas gebasseerde skepper met meer beheerinstellings. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Oorspronklik STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max afstand van kaart einde vir Olieraffinaderye : {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipe terrein: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Slegs TerraGenesis) Bergagtigheid van die land +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Nywerheidsdigtheid: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Kies hoeveel nywerhede geskep gaan word en hoeveel gedurende die spel te handhaaf +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimum afstand vanaf rand vir olieraffinaderye: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderye word net naby die kaart kant gebou, dit is, teen die kus vir eiland kaarte STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeu lyn hoogte: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grofheif van terrein (slegs TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Beheer die hoogte van die sneeuvlak. Die sneeuvlak bepaal ook hoeveel nywerhede geskep word en hoe vinnig dorpe groei. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grofheid van terrein: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Slegs TerraGenesis) Kies die heuwelagtigheid: 'n Vlak land het 'n paar heuwel wat wyd versprei is. 'n Rowwe landskap het baie heuwels wat herhaaldelik voorkom. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Baie Glad STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glad STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rof STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Baie Rof +STR_CONFIG_SETTING_VARIETY :Verskeidenheid verspreiding: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Slegs TerraGenesis) Kies of die land berge en vlaktes het. Hierdie instelling maak die landskap vlakker, so ander instellings moet bergagtig wees. +STR_CONFIG_SETTING_RIVER_AMOUNT :Aantal riviere: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Kies hoeveel riviere geskep gaan word STR_CONFIG_SETTING_TREE_PLACER :Boom plaas algoritme: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Kies vir verspreiding van bome: 'Oorspronklik' versprei bome eweredig, 'Verbeterde' versprei bome in woude STR_CONFIG_SETTING_TREE_PLACER_NONE :Geen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Oorspronklik STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Verbeter -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Hoogtekaart rotasie: {STRING} -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Teller vooruit -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Vooruit +STR_CONFIG_SETTING_ROAD_SIDE :Padvoertuie: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Kies die bestuurskant +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Reliëfkaart orientasie: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Anti-kloksgewys +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Kloksgewys STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Die hoogte vlak wat 'n plat scenario kaart kry: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Aktiveer terra vorming van teëls op die kaart rant: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :wanneer gedeaktiveer, die kaart se kante sal altyd see wees STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Een of meer teëls op die Noordelike grens is nie leeg nie STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Een of meer teëls by een van die kante is nie water nie -STR_CONFIG_SETTING_STATION_SPREAD :Max stasie sprei: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Maksimum stasiegrootte: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Hoe groot 'n area 'n stasie mag opneem. Groter waardes kan die spel stadig maak. STR_CONFIG_SETTING_SERVICEATHELIPAD :Diens helikopters by helihawes outomaties: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Diens helikopters na elke landing, selfs al is daar nie 'n diensstasie by die lughawe nie @@ -1302,7 +1344,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Maak kykpoort b STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Beheer hoe die hoofvertoonvenster skuif na 'n spesifieke posisie - as dit geaktiveer is, dan skuif die venster glad na die posisie toe, andersins skuif die venster direk na die posisie toe. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Toon 'n meting wanneer jy verskeie bou-gereedskap gebruik: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vertoon teëlafstand en hoogteverskil gedurende bouwerk. -STR_CONFIG_SETTING_LIVERIES :Toon maatskappy lewerye: {STRING} +STR_CONFIG_SETTING_LIVERIES :Toon voertuigspesifieke kleure: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Beheer die gebruik van voertuig-gebasseerde kleurskemas (teenoor maatskappy-gebasseerde kleurskemas) STR_CONFIG_SETTING_LIVERIES_NONE :Geen STR_CONFIG_SETTING_LIVERIES_OWN :Eie maatskappy @@ -1319,39 +1361,37 @@ STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroleer die STR_CONFIG_SETTING_OSK_ACTIVATION :Skerm-sleutelbord: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Kies hoe om die skerm-sleutelbord te vertoon. Hierdie opsie is vir toestelle wat nie 'n fisiese sleutelbord het nie soos tabletrekenaars. STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Gedeaktiveer -STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dubbel-kliek -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkel kliek (indien geselekteerd) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkel kliek (dadelik) - -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Regs-kliek emulasie: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :selekteer die metode om the regter muis-knoppie kliek te emuleer -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-kliek -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-kliek +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dubbel-klik +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkel klik (met fokus) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkel klik (dadelik) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Regs-klik emulasie: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Kies die manier om regs-klik na te maak +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-klik +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl-klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af -STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Links-kliek kykpoort beweegings: {STRING} +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Links-klik vir skermrol: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Maak dit moontlik om die kaart te skuif deur met die die linker-muisknoppie te sleep. Hier opsie werk baie goed vir toestelle met raakskerms. +STR_CONFIG_SETTING_AUTOSAVE :Outostoor: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tyd tussen outomatiese spelstore + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gebruik die {STRING} datum formaat vir gestoorde spel name. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formaat van datum van spaar-speletjie naam STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lank (31ste Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standaard palet word aangeneem vir NewGRFs geen palet gespesifiseer: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Verstek kleurskema om te gebruik vir NewGRFs wat nie spesifeer watter kleurskema benodig word nie -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palet -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palet - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Outomaties pouse wanneer om te begin 'n nuwe speletjie: {STRING} -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :As hierdie opsie geaktiveer is, sal die spel gepousseer wees wanneer die spel begin. -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Wanneer gepouseer laat toe: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :As hierdie opsie geaktiveer is, sal die spel geonderbreek wees wanneer die spel begin. +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Wanneer geonderbreek laat die toe: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selekteer watter aksies mag gedoen word terwyl die speletjie onderbreek word STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Geen aksies STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle nie-konstruksie aksies STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alles behalwe landskap-veranderende aksies STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle aksies -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik die voorloopende voertuiglys: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik groepe in die voertuiglys: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiveer die gebruik van die gevorderde voertuig lys vir groepering van voertuie STR_CONFIG_SETTING_LOADING_INDICATORS :Gebruik laai aanwysers: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Kies of die ladingswaardes vertoon word wanneer voertuie vrag op- en aflaai @@ -1360,13 +1400,13 @@ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Wys die rystye STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Toon aankoms en vertrek in tydroosters: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vertoon verwagte aankoms en vertrek tye in tydroosters STR_CONFIG_SETTING_QUICKGOTO :Vinnige skepping van voertuig opdragte: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-selekteer die "gaan na wyser" wanneer didie bevele venster oop gemaak word +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-selekteer die "gaan na wyser" wanneer die bevele venster oop gemaak word STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Verstek spoor tipe (na nuwe spel/spel laai): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Spoortipe om te kies wanneer 'n nuwe spel begin. 'Eers beskikbaar' kies die oudste tipe spoor, 'Laas beskikbaar' kies die nuutste tipe spoor, 'Meeste gebruik' kies die spoor wat die meeste in gebruik is. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Eers beskikbaar STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Laas beskikbaar STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meeste gebruik -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Wys gereserveerde spore: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Wys spoorreserverings: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Wys gereserveerde spore in 'n ander kleur om te help wanneer treine nie die regte roetes kies nie STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hou bou gereedskap aktief na gebruik: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hou die bougereedskap vir brûe, tonnels ens. aktief na gebruik @@ -1381,8 +1421,8 @@ STR_CONFIG_SETTING_SOUND_NEW_YEAR :Einde van jaar: STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Speel klankeffek aan die einde van 'n jaar wanneer die maatskappy se jaarresultate vertoon word STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksie: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel 'n klank wanneer 'n konstruksie of ander aksie suksesvol voltooi is -STR_CONFIG_SETTING_SOUND_CLICK :Kliek van knoppie: {STRING} -STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Biep wanneer 'n knoppie gekliek word +STR_CONFIG_SETTING_SOUND_CLICK :Knoppieklik: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Biep wanneer 'n knoppie geklik word STR_CONFIG_SETTING_SOUND_DISASTER :Rampe/ongelukke: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Speel klanke vir ongelukke en rampe STR_CONFIG_SETTING_SOUND_VEHICLE :Voertuie: {STRING} @@ -1392,13 +1432,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgewings STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Deaktiveer infrastruktuur bouery as geen geskikte voertuie beskikbaar is nie: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :As dit geaktiveer is, is infrastruktuur net beskikbaar as daar ook voertuie beskikbaar is om daardie infrastruktuur te gebruik. Dit is om tyd- en geldmors op onbruikbare infrastruktuur te voorkom. -STR_CONFIG_SETTING_MAX_TRAINS :Max treine per speler: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maksimum aantal treine per speler: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimum hoeveelheid treine was 'n besigheid kan hê -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max pad voertuie per speler: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimum aantal padvoertuie per maatskappy: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimum hoeveelheid pad voertuie was 'n besigheid kan hê -STR_CONFIG_SETTING_MAX_AIRCRAFT :Max vliegtuie per speler: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimum aantal vliegtuie per speler: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimum hoeveelheid vliegtuie was 'n besigheid kan hê -STR_CONFIG_SETTING_MAX_SHIPS :Max skepe per speler: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maksimum aantal skepe per speler: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimum hoeveelheid bote was 'n besigheid kan hê STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Sper treine vir rekenaar: {STRING} @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Diens pouse is STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kies of voertuie gediens word gebasseer op tydsduur vanaf vorige diens of as die voertuig se betroubaarheid met 'n sekere persentasie geval het van die maksimum STR_CONFIG_SETTING_SERVINT_TRAINS :Standaard diens interval vir treine: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Kies die standaard diensskedule vir nuwe treine as geen diensskedule aangedui is nie -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} da{P g e}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}da{P g e}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Gedeaktiveer STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standaard diens interval vir pad voertuie: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Kies die standaard diensskedule vir nuwe padvoertuie as geen diensskedule aangedui is nie @@ -1492,14 +1532,14 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Bepaal wat gebe STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Outomaties bou semaphores voor: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Stel die jaar wanneer elektriese seine gebruik word vir spore. Voor hierdie jaar word seinpale gebruik (die manier waarop hulle werk is presies dieselfde). STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktiveer die sein GUI: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vertoon 'n venster om sein-tipes te kies eerder as om Ctrl+Kliek te gebruik om te bepaal watter sein-tipes geplaas word +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vertoon 'n venster om te kies watter sein-tipes te bou, eerder as vensterlose sein-tipe met Ctrl+klik te gebruik om te sein-tipes gebou word STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Sein tipe om te bou by verstek: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standaard sein tipe om te gebruik STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok seine STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Pad seine STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Een-rigting seine STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Wissel deur tiepe seine: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selekteer watter sinjaaltipes om deur te roteer, wanneer Ctrl+kliek gebruik word om 'n sinjaal te bou met die sinjaal gereedskap +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selekteer watter sinjaaltipes om deur te wissel, wanneer Ctrl+klik gebruik word om 'n sinjaal te bou met die sinjaal gereedskap STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Blok seine aleenlik STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Pad seinligte alleenlik STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle @@ -1564,12 +1604,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Geen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Aanvanklike stad grootte multiplier: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Normale stede groote relatief na normale dorpe aan die begin van speletjie -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Verwyder absurde pad-elemente gedurende die pad konstruksie: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Verwyder doodloop strate, wanner befondse pad konstruksie plaasvind -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Herreken die verspreingskaart elke {STRING} da{P 0:2 g e} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Herreken die verspreingskaart elke {STRING}{NBSP}da{P 0:2 g e} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tyd tussen daaropvolgende herrekeninge van die verspreidingskaart. Elke herrekening is vir een komponent van die hele kaart, so net 'n gedeelte is dan op datum, nie die hele kaart nie. Hoe korter hierdie stelling is, hoe meer verwerkingskrag word benodig, hoe langer hierdie stelling is, hoe langer vat dit vir die vrag om op nuwe roetes te versprei. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Neem {STRING} da{P 0:2 g e} om verspreidingskaart te herreken +STR_CONFIG_SETTING_LINKGRAPH_TIME :Neem {STRING}{NBSP}da{P 0:2 g e} om verspreidingskaart te herreken STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tyd benodig vir die herrekening van elke komponent van die verspreidingskaart. Elke berekening kan vir hierdie aantal dae hardloop, as hierdie stelling te kort is en die berekening is nie klaar nie, dan kan die spel stop tot die berekening klaar gedoen is. Hoe meer tyd toegelaat word vir hierdie berekeninge, hoe langer vat dit vir die verspreidingskaart om te verander as roetes verander. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :handmatig STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimmetries @@ -1581,7 +1619,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simmetries" be STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Verspreidingsmodel vir pantservoertuie: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pantservoertuie word gebruik vir edelmetale in die matige klimaat, diamante in die sub-tropiese klimaat en goud in die sub-arktiese klimaat. NewGRFs kan dit verander. "simmetries" beteken dat ongeveer dieselfde hoeveelheid vrag tussen twee stasies gestuur word. "asimmetries" beteken dat vrag tussen twee stasies na willekeur gestuur word. "handmatig" beteken dat geen vrag nie outomaties versprei word nie. Dit word voorstel om "asimmetries" of "handmatig" te kies in die sub-arktiese klimaat omdat banke nie goud kan terugstuur na 'n myn toe nie. In die matige en sub-tropiese klimaat kan jy ook simmetries kies sodat banke edelmetale kan terugstuur na die bank van oorsprong. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Verspreidingsmodel vir ander vragkategorieë: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simmetries" beteken dat ongeveer dieselfde hoeveelheid vrag tussen twee stasies gestuur word. "asimmetries" beteken dat vrag tussen twee stasies na willekeur gestuur word. "handmatig" beteken dat geen vrag nie outomaties versprei word nie. Die voorkeur is vir "asimmetries" of "handmatig". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asimmetries" beteken dat vrag tussen twee stasies na willekeur gestuur word. "handmatig" beteken dat geen vrag nie outomaties versprei word nie. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Verspreidingsakkuraatheid: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Hoe hoër hierdie waarde is, hoe meer rekenkrag word benodig om die verspreidingskaart te bereken. As die waarde te hoog is, kan dit die spel stadig maak en as die waarde te laag is, kan die verspreidingskaart onakkuraat maak en veroorsaak dat vrag na onverwagte bestemmings gestuur word. STR_CONFIG_SETTING_DEMAND_DISTANCE :Afstandeffek op vragaanvraag: {STRING} @@ -1610,44 +1648,46 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metries (t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volume eenheid: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wys volume in die eenheid wat gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wanneer 'n volume gewys word in die gebruikerskoppelvlak, wys dit in die geselekteerde eenhede STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Empiries (gelling) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metries (I) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Trekkrag eenhede: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Wys trekkrag in die eenheid was gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Wanneer 'n trekkrag gewys word in die gebruikerskoppelvlak, wys dit in die geselekteerde eenhede STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Empiries (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metries (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Hoogte eenheid: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wys hoogte in die eenheid wat gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wanneer 'n hoogte word in die gebruikerskoppelvlak, wys dit in die geselekteerde eenhede STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Empiries (vt) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metries (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}koppelvlak -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisasie -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksie +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Eenhede +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Klank +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Koppelvlak +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemeen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vertoonvensters +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksie +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuus / Raad +STR_CONFIG_SETTING_COMPANY :{ORANGE}Maatskappy +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Rekeningkunde STR_CONFIG_SETTING_VEHICLES :{ORANGE}Voertuie -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasies -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomie -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Vrag Verspreiding +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Roete +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beperkings +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Ongelukke & rampe +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Land skepping +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omgewing +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Stadsrade +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Dorpe +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Nywerhede +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Vragverspreiding STR_CONFIG_SETTING_AI :{ORANGE}Mededingers -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Skerm opsies -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaksie -STR_CONFIG_SETTING_SOUND :{ORANGE}Klankeffekte -STR_CONFIG_SETTING_NEWS :{ORANGE}Nuus en booskappe -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seine -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Goedere hantering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Rekenaar spelers -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Outo hernu -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Diens -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Roete -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Treine -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Dorpe -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Nywerhede STR_CONFIG_SETTING_PATHFINDER_OPF :Oorspronklik STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1690,21 +1730,21 @@ STR_INTRO_CAPTION :{WHITE}OpenTTD STR_INTRO_NEW_GAME :{BLACK}Nuwe Spel STR_INTRO_LOAD_GAME :{BLACK}Laai Spel STR_INTRO_PLAY_SCENARIO :{BLACK}Speel Scenario -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Speel Hoogtekaart +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Speel reliëfkaart STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenario Redakteur STR_INTRO_MULTIPLAYER :{BLACK}Multispeler STR_INTRO_GAME_OPTIONS :{BLACK}Spel Opsies STR_INTRO_HIGHSCORE :{BLACK}Hoogste Tellings Tafel -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Gevorderde stellings +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Stellings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Stellings -STR_INTRO_ONLINE_CONTENT :{BLACK}Kyk Na Aanlyn Inhoud +STR_INTRO_ONLINE_CONTENT :{BLACK}Soek aanlyn STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spel Skript Instellings STR_INTRO_QUIT :{BLACK}Verlaat -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begin nuwe spel. Ctrl+Kliek ignoreer kaart konfigurasie +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begin nuwe spel. Ctrl+klik ignoreer kaart konfigurasie STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laai 'n gestoorde spel -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}begin 'n nuwe speletjie, gebruikend 'n hoogtekaart as 'n landskap +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Begin 'n nuwe spel en gebruik 'n reliëfkaart om die land te skep STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Begin 'n nuwe speletjie, met 'n doelgeboude scenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Skep 'n doelgeboude spel wêreld/scenario STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Begin 'n multispeler spel @@ -1716,7 +1756,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Kies 'sp STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vertoon speletjie opsies STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vertoon hoogste tellings tafel -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Toon gevorderde stellings +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Vertoon instellings STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Wys NewGRF stellings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kyk vir nuwe of bygewerkde inhoud om af te laai STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vertoon AI/Spel skript konfigurasie @@ -1756,6 +1796,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speel a STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tower stootskraper (verwyder nywerhede, onbeweegbare voorwerpe): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tonnels mag vir mekaar kruis: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Straalvliegtuie sal nie (dikwels) op klein lughawe bots nie: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Verander die maksimum kaarthoogte: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Verander die maksimum berghoogte STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Matige klimaat STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-artiese landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropiese landskap @@ -1767,36 +1809,36 @@ STR_CHEAT_SETUP_PROD :{LTBLUE}Aktivee # Livery window STR_LIVERY_CAPTION :{WHITE}Nuwe Kleur Skema -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Toon algemene kleur skemas +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Toon algemene kleurskemas STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Wys trein kleur skemas STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Toon pad voertuig kleur skemas STR_LIVERY_SHIP_TOOLTIP :{BLACK}Toon skip kleur skemas STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Toon vliegtuig kleurskemas STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Kies die primêre kleur vir die gekose skema. Ctrl+Click sal hierdie kleur kies vir elke skema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Kies die sekondêre kleur vir die gekose skema. Ctrl+Click sal hierdie kleur kies vir elke skema -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Kies 'n kleur skema te verander, of veelvoud skemas met CTRL+kliek. Kliek op die boks te skakel gebruik van skema +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Kies 'n kleurskema om te verander, of veelvoud skemas met Ctrl+klik op die boks om die gebruik van skema te wissel -STR_LIVERY_DEFAULT :Standaard Lewery +STR_LIVERY_DEFAULT :Standaard kleure STR_LIVERY_STEAM :Stoomlokomotief STR_LIVERY_DIESEL :Diesellokomotief STR_LIVERY_ELECTRIC :Elektriese lokomotief STR_LIVERY_MONORAIL :Monospoorlokomotief STR_LIVERY_MAGLEV :Maglev lokomotief -STR_LIVERY_DMU :DMU -STR_LIVERY_EMU :EMU -STR_LIVERY_PASSENGER_WAGON_STEAM :Passasier Rytuig (Stoom) -STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasier Rytuig (Diesel) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasier Rytuig (Elektries) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passasierkoets (Monospoor) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passasier koets (Maglev) -STR_LIVERY_FREIGHT_WAGON :Vraag Wa +STR_LIVERY_DMU :Dieseltreinstel +STR_LIVERY_EMU :Elektriese treinstel +STR_LIVERY_PASSENGER_WAGON_STEAM :Passasierswa (Stoom) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasierswa (Diesel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasierswa (Elektries) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passasierswa (Monospoor) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passasierswa (Maglev) +STR_LIVERY_FREIGHT_WAGON :Vragwa STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Vragmotor -STR_LIVERY_PASSENGER_SHIP :Passasier Veer -STR_LIVERY_FREIGHT_SHIP :Vraag Skip +STR_LIVERY_PASSENGER_SHIP :Passasierskip +STR_LIVERY_FREIGHT_SHIP :Vragskip STR_LIVERY_HELICOPTER :Helikopter -STR_LIVERY_SMALL_PLANE :Klein Vliegtuig -STR_LIVERY_LARGE_PLANE :Groot Vliegtuig +STR_LIVERY_SMALL_PLANE :Klein vliegtuig +STR_LIVERY_LARGE_PLANE :Groot vliegtuig STR_LIVERY_PASSENGER_TRAM :Passasier Trem STR_LIVERY_FREIGHT_TRAM :Vrag Trem @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Vrag Trem STR_FACE_CAPTION :{WHITE}Gesig Keuse STR_FACE_CANCEL_TOOLTIP :{BLACK}Kanselleer nuwe gesig keuse STR_FACE_OK_TOOLTIP :{BLACK}Aanvar nuwe gesig keuse +STR_FACE_RANDOM :{BLACK}Lukraake STR_FACE_MALE_BUTTON :{BLACK}Manlik STR_FACE_MALE_TOOLTIP :{BLACK}Kies manlik gesigte @@ -1869,18 +1912,18 @@ STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Die is d STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Naam STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Naam van die speletjie STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliente -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliente oplyn / Kliente maks{}Maatskappye oplyn / Maatskappye maks +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliënte +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliënte aanlyn / maks kliënte{}Maatskappye aanlyn / maks maatskappye STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaart groote -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaart groote van die speeletjie{}Kliek om volgens area te sorteer +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaartgrootte van die speeletjie{}Klik om volgens area te sorteer STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Huidigge datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Jare STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Hoeveelheid jaar{}wat die speeletjie hardloop STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Taal, bediender verwerking, ens. -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kliek 'n speletjie van die lys om dit te selekteer +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klik 'n speletjie in die lys om dit te kies STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Die bedienaar wat jy laaste aan deelgeneem het STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Die bedienaar wat jy laaste op gespeel het @@ -1924,13 +1967,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskerm STR_NETWORK_START_SERVER_UNADVERTISED :Nee STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Klient{P "" e} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks kliente: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Kies die maksimum aantal kliente. Alle posisies hoef nie om vol te wees nie +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimum aantal kliënte: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Kies die maksimum aantal kliënte. Alle posisies hoef nie vol te wees nie STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} Maatskap{P py pye} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks maatskappye: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksimum aantal maatskappye: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Beperk die verskaffer na 'n sekere bedrag van maatskappye STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} aanskouer{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks aanskouers: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimum aantal toekouers: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk die verskaffer na 'n sekere bedrag van aanskouers STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Taal gepraat: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Ander spelers sal weet watter taal op die verskaffer gepraat is @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Aanskouers STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sleutel die bedrag geld in wat u wil gee +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Toeskouer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Moenie die ingesleutelde wagwoord bewaar nie @@ -2124,14 +2168,14 @@ STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Die laas # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! -STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spel stilgehou ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spel nog steeds stilgehou ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds stilgehou ({STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds stilgehou ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spel geonderbreek ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spel nog steeds geonderbreek ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds geonderbreek ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds geonderbreek ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spel steeds onderbreek ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spel gaan weer aan ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :hoeveelheid spelers -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Verbind kliente +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :besig om kliënte te verbind STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :met die hand STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :speletjie skrif ############ End of leave-in-this-order @@ -2140,7 +2184,7 @@ STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} he STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} het die spel aangesluit (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} het by maatskappy #{2:NUM} aangesluit STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} het aangesluit by die spektators -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} begin 'n nuwe maatskappy (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} het 'n nuwe maatskappy gestig (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} het die spel verlaat ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} het sy/haar naam verander na {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} het jou besigheid {2:CURRENCY_LONG} gegee @@ -2154,7 +2198,7 @@ STR_CONTENT_TYPE_CAPTION :{BLACK}Tipe STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipe inhoud STR_CONTENT_NAME_CAPTION :{BLACK}Naam STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Naam van die inhoud -STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kliek op 'n ry om besonderhede te sien{}Kliek op die merkblokkie om dit te kies vir aflaai +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klik op 'n ry om besonderhede te sien{}Klik op die merkblokkie om dit te kies vir aflaai STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Selekteer alles STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk al die inhoud wat afgelaai moet word STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selekteer opgraderings @@ -2168,7 +2212,7 @@ STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Die voor STR_CONTENT_FILTER_TITLE :{BLACK}Merker/naam filter: STR_CONTENT_OPEN_URL :{BLACK}Besoek webblad STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besoek die webwerf vir hierdie inhoud -STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laai Af +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laai af STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Begin om die geselekteerde inligting af te laai STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Totale aflaai groote: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INHOUD INFORMASIE @@ -2196,7 +2240,7 @@ STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI biblioteek STR_CONTENT_TYPE_SCENARIO :Scenario -STR_CONTENT_TYPE_HEIGHTMAP :Hoogte kaart +STR_CONTENT_TYPE_HEIGHTMAP :Reliëfkaart STR_CONTENT_TYPE_BASE_SOUNDS :Basis klanke STR_CONTENT_TYPE_BASE_MUSIC :Basis musiek STR_CONTENT_TYPE_GAME_SCRIPT :Speletjie Skrif @@ -2205,7 +2249,7 @@ STR_CONTENT_TYPE_GS_LIBRARY :GS biblioteek # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Laai inhoud af... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Versoek lêer... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Nou besig om {STRING} aftelaai ({NUM} of {NUM}) +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Nou besig om {STRING} af te laai ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Aflaai voltooi STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} van {BYTES} afgelaai ({NUM} %) @@ -2223,15 +2267,15 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nee, ver # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Deursigtigheid Opsies -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Skakel deursigtigheid vir stasie tekens. Ctrl+Kliek om te sluit -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Skakel deursigtigheid vir boome. Ctrl+Kliek om te sluit -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Skakel deursigtigheid vir huise. Ctrl+Kliek om te sluit -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Skakel deursigtigheid van nywerhede. Ctrl+Kliek om te sluit -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Skakel deursigtigheid vir boubaardes soos stasies, depots, weypunte en catenary. Ctrl+Kliek om te sluit -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Skakel deursigtigheid vir brue. Ctrl+Kliek om te sluit -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Skakel deursigtigheid vir strukture soos vuurtorings en senders, miskien in toekoms vir ooglekkers. Ctrl+Kliek om te sluit -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Skakel deursigtigheid van kettinglyn. Ctrl+Kliek om te sluit. -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Skakel deursigtigheid vir laai aanwysers. Ctrl+Kliek om te sluit +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Wissel deursigtigheid vir stasietekens. Ctrl+klik om te sluit +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Wissel deursigtigheid vir bome. Ctrl+klik om te sluit +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Wissel deursigtigheid vir huise. Ctrl+klik om te sluit +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Wissel deursigtigheid van nywerhede. Ctrl+klik om te sluit +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Skakel deursigtigheid vir items soos stasies, diensstasie, roetebakens en kraglyne. Ctrl+klik om te sluit +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Wissel deursigtigheid vir brûe. Ctrl+klik om te sluit +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Wissel deursigtigheid vir strukture soos vuurtorings en seintorings. Ctrl+klik om te sluit +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Wissel deursigtigheid van kraglyne. Ctrl+klik om te sluit. +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Wissel deursigtigheid vir laai aanwysers. Ctrl+klik om te sluit STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Stel voorwerpe onsigbaar inplaas van deursigtig # Linkgraph legend window @@ -2252,18 +2296,18 @@ STR_STATION_BUILD_COVERAGE_ON :{BLACK}Aan STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Moenie die dekking area van die voorgestelde bouterrein verlig nie STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Verlig dekking area van die voorgestelde bouterrein STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Aanvaar: {GOLD}{CARGO_LIST} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Voorraad: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Verskaf: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Sluit by stasie aan STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bou 'n aparte stasie -STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbind wegwyser -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'm aparte wegwyser +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbind roetebaken +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'n aparte roetebaken # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegkonstruksie -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrifiseerde Spoorweg Konstruksie +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriese spoorwegkonstruksie STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monospoor Konstruksie STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magneetsweeftrein Konstruksie @@ -2271,15 +2315,15 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spor STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Gebruik Outo-bou om spoorweg te bou. Ctrl kies tussen bou/verwyder. Shift kies tussen bou/kwotasie STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou trein diensstasie (om treine te koop en te diens). Shift kies tussen bou/kwotasie STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Verander treinspoor na baken. Druk Ctrl om bakens saam te voeg. Shift kies tussen bou/kwotasie -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bou spoorweg stasie. Ctrl voeg stasies saam. Shift skakel Bou/wys koste beraming -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bou treinspoor aanwysers. Ctrl kies tussen seinpaal/robot{} Kliek en trek om aanwysers al langs 'n reguit treinspoor te bou. Druk Ctrl om aanwysers tot by die volgende aansluiting te bou{}Ctrl+Kliek maak die aanwyser stelling boks oop. Shift kies tussen bou/kwotasie +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bou treinstasie. Ctrl voeg stasies saam. Shift vir kwotasie +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bou treinspoor aanwysers. Ctrl kies tussen seinpaal/robot{} Klik en sleep om aanwysers al langs 'n reguit treinspoor te bou. Druk Ctrl om aanwysers tot by die volgende aansluiting te bou{}Ctrl+klik maak die aanwyserstellingvenster oop. Shift kies tussen bou/kwotasie STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bou spoorweg brug. Shift skakel Bou/wys koste beraming STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bou spoorweg tonnel. Shift skakel Bou/wys koste beraming -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skakel bou/verwyder vir spore en seinligte +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Wissel bou/verwyder vir spore roetebakens en seinligte STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Verander die treinspoor tipe. Shift kies tussen bou/kwotasie STR_RAIL_NAME_RAILROAD :Spoorweg -STR_RAIL_NAME_ELRAIL :Elektrifiseerde spoorweg +STR_RAIL_NAME_ELRAIL :Elektriese spoor STR_RAIL_NAME_MONORAIL :Monospoor STR_RAIL_NAME_MAGLEV :Maglev @@ -2288,17 +2332,17 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Trein De STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg depot orientasie # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}Wegpunt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Kies wegpunt tipe +STR_WAYPOINT_CAPTION :{WHITE}Roetebaken +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Kies tipe roetebaken # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Spoor Stasie Keuse STR_STATION_BUILD_ORIENTATION :{BLACK}Orientasie -STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg stasie orientasie +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Kies treinstasie orientasie STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Aantal spore -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Kies die aantal spore wat in die stasie gebou gaan word -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Verhoog lengte -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Kies lengte van spoorweg stasie +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Kies die aantal peronne wat in die stasie gebou gaan word +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Perron lengte +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Kies treinstasie lengte STR_STATION_BUILD_DRAG_DROP :{BLACK}Sleep & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bou 'n stasie gebruikend sleep & drop @@ -2306,7 +2350,7 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Kies 'n STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Kies die stasie tipe om te bou STR_STATION_CLASS_DFLT :Verstek stasie -STR_STATION_CLASS_WAYP :Wegpunte +STR_STATION_CLASS_WAYP :Roetebakens # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Sein seleksie @@ -2322,7 +2366,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Uitgang STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasie Sinjaal (elektries){}Dien as 'n ingang sinjaal sowel as 'n uitgang sinjaal. Groot uitbreidings van pre-sinjale kan hiermee gebou word. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Pad aanwyser (robot){}Laat meer as een trein per blok toe solank die trein 'n bestemming veilig kan bereik. Gewone pad aanwysers word geïgnoreer as 'n trein in die teenoorgestelde rigting ry STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad aanwyser (robot){}Laat meer as een trein per blok toe solank die trein 'n bestemming veilig kan bereik. 'n Een-rigting pad aanwysers laat verkeer slegs in een rigting toe -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Verander Sinjaal{}Kliek op 'n bestaande sinjaal om dit na die verkose tipe te verander, Ctrl+Kliek om na die bestaande tipe te verander. Shift+Kliek vir kwotasie +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Verander Sinjaal{}Klik op 'n bestaande sinjaal om dit na die verkose tipe te verander, Ctrl+klik om na die bestaande tipe te verander. Shift+klik vir kwotasie STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Sein sleep digtheid STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Verminder sein sleep digtheid STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Verhoog sein sleep digtheid @@ -2330,17 +2374,17 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Verhoog # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Kies Spoor Brug STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selekteer Pad Brug -STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brug seleksie - kliek op jou verkose brug om dit te bou +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brugkeuring - klik op jou verkose brug om dit te bou STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} -STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspensie, Staal +STR_BRIDGE_NAME_SUSPENSION_STEEL :Kabelstut, Staal STR_BRIDGE_NAME_GIRDER_STEEL :Balk, Staal STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrydraer, Staal -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Suspensie, Beton +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Kabelstut, Beton STR_BRIDGE_NAME_WOODEN :Houterig STR_BRIDGE_NAME_CONCRETE :Beton STR_BRIDGE_NAME_TUBULAR_STEEL :Buisvormige, Staal -STR_BRIDGE_TUBULAR_SILICON :Buis, Silicon +STR_BRIDGE_TUBULAR_SILICON :Buis, Silikon # Road construction toolbar @@ -2427,10 +2471,10 @@ STR_AIRPORT_CLASS_HELIPORTS :Helikopter lugh STR_STATION_BUILD_NOISE :{BLACK}Geraas gegenereer: {GOLD}{COMMA} # Landscaping toolbar -STR_LANDSCAPING_TOOLBAR :{WHITE}Landargitekteur -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag 'n gedeelte. Kliek en trek om die gekose punt tot die gewenste vlak te verlaag. Druk Ctrl om 'n diagonale gedeelte te kies, Shift kies tussen bou/kwotasie -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n gedeelte. Kliek en trek om die gekose punt tot die gewenste vlak te vehoog. Druk Ctrl om 'n diagonale gedeelte te kies, Shift kies tussen bou/kwotasie -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Kliek op 'n area en trek om die omliggende gedeelte tot dieselfde vlak te bring. Druk Ctrl om 'n diagonale gedeelte te kies, Shift kies tussen bou/kwotasie +STR_LANDSCAPING_TOOLBAR :{WHITE}Landargitektuur +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag 'n gedeelte. Klik en sleep om die gekose punt tot die gewenste vlak te verlaag. Druk Ctrl om 'n diagonale gedeelte te kies, Shift gee net 'n kwotasie +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n gedeelte. Klik en sleep om die gekose punt tot die gewenste vlak te vehoog. Druk Ctrl om 'n diagonale gedeelte te kies, Shift gee net 'n kwotasie +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Klik op 'n area en sleep om die omliggende gedeelte tot dieselfde vlak te bring. Druk Ctrl om 'n diagonale gedeelte te kies, Shift gee net 'n kwotasie STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Koop grond. Shift kies tussen koop/kwotasie # Object construction window @@ -2468,7 +2512,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Is jy se # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Dorp Generasie STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nuwe Dorp -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stig nuwe dorp. Shift+Kliek om kwotasie te wys +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stig nuwe dorp. Shift+klik om kwotasie te wys STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Lukraak Dorp STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Bou dorp op 'n lukraak ligging STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Baie lukraak dorpe @@ -2476,7 +2520,7 @@ STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Maak die STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Dorp naam: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Tik in dorp naam -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Kliek om dorp naam in te voeg +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klik om dorpsnaam in te voer STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Lukraak naam STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Genereer nuwe lukrake naam @@ -2513,8 +2557,8 @@ STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Nywerhei STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Vervaardiging van nywerhede STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Aanvaar nywerhede STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Huise -STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Kliek op die industrie om sy verskaffers en kliente te sien -STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Kliek op die vrag om sy verskaffers en kliente te sien +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klik op die nywerheid om sy verskaffers en kliënte te sien +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klik op die vrag om verskaffers en kliënte te sien STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Vertoon Ketting STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Vertoon vrag voorsiening en aanvaar nywerhede STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Verbinding na kleinkaart @@ -2547,6 +2591,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NuweGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vrag aangeneem: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoorlyn spoed limiet: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Pad spoedgrens: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotse @@ -2595,18 +2640,18 @@ STR_LAI_TREE_NAME_TREES :Boome STR_LAI_TREE_NAME_RAINFOREST :Reenwoud STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktus Plante -STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Spoorweg stasie +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Treinstasie STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Vliegtuig hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Lughawe STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Vragmotor laai area STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bus stasie STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Skip werf STR_LAI_STATION_DESCRIPTION_BUOY :Baken -STR_LAI_STATION_DESCRIPTION_WAYPOINT :Wegpunt +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Roetebaken STR_LAI_WATER_DESCRIPTION_WATER :Water STR_LAI_WATER_DESCRIPTION_CANAL :Kanaal -STR_LAI_WATER_DESCRIPTION_LOCK :Sluit +STR_LAI_WATER_DESCRIPTION_LOCK :Sluis STR_LAI_WATER_DESCRIPTION_RIVER :Rivier STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Kus of oewer STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Skip depot @@ -2619,7 +2664,7 @@ STR_LAI_TUNNEL_DESCRIPTION_ROAD :Pad tonnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Staal stuspensie spoor brug STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Staal balk spoor brug STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Staal vrydraer spoor brug -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Versterk beton suspensie spoor brug +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Beton kabelstut spoorwegbrug STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Houterig spoor brug STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Beton spoor brug STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Buis spoor brug @@ -2643,16 +2688,16 @@ 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-2013 Die OpenTTD span +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Die OpenTTD span # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Spel STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Stoor Scenario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laai Scenario -STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laai Hoogtekaart -STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Stoor Hoogtekaart -STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliek hier om na die huidige spaar/laai lêer te spring +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laai reliëfkaart +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Stoor reliëfkaart +STR_SAVELOAD_HOME_BUTTON :{BLACK}Klik hier om na die huidige spaar/laai lêer te gaan STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} vry STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lys van skywe, gidse en spaar-speletjie lêers STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Huidige naam vir spaar-speletjie @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Spaar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Spaar die huidige speletjie, met die verkieste naame STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laai STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laai die geselekteerde spel +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Laai die gekose reliëfkaart STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spel Besonderhede STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Geen inligting beskikbaar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2677,20 +2723,19 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. dorpe: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. nywerhede: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimum kaarthoogte +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog berge met een teël +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verminder berghoogte met een teël STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sneeu lyn hoogte: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweeg die sneeu lyn een op STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweeg die sneeu lyn een af -STR_MAPGEN_RANDOM_SEED :{BLACK}Lukraak Saad: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliek om 'n lukraak saad in te voeg -STR_MAPGEN_RANDOM :{BLACK}Lukraake -STR_MAPGEN_RANDOM_HELP :{BLACK}Verander die lukraak saad gebruik vir Terrein Generasie STR_MAPGEN_LAND_GENERATOR :{BLACK}Land genereerder: STR_MAPGEN_TREE_PLACER :{BLACK}Boom algoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrein tipe: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Seevlak: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Riviere: STR_MAPGEN_SMOOTHNESS :{BLACK}Gladheid: -STR_MAPGEN_VARIETY :{BLACK}Verskeidenheid distribusie: +STR_MAPGEN_VARIETY :{BLACK}Verskeidenheid verspreiding: STR_MAPGEN_GENERATE :{WHITE}Genereer # Strings for map borders at game generation @@ -2703,40 +2748,40 @@ STR_MAPGEN_BORDER_FREEFORM :{BLACK}Vryeform STR_MAPGEN_BORDER_WATER :{BLACK}Water STR_MAPGEN_BORDER_RANDOM :{BLACK}Lukraak STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Lukraak -STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual +STR_MAPGEN_BORDER_MANUAL :{BLACK}Handmatig -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Hoogtekaart rotasie: -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Hoogtekaart name: -STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Groote: +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Reliëfkaart orientasie: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Reliëfkaart naam: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grootte: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Sleutel 'n lukraak saad in +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Verander maksimum kaarthoogte STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Verander sneeu lyn hoogte STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander begin jaar # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenario tipe -STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Plat land +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Plat terrein STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Genereer 'n plat terrein STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Lukraake land -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte daal: -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte daal een af -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte daal bo een +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van plat terrein: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van plat terrein een af +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van plat terrein een op -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander die hoogte van platte daal +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander die hoogte van plat terrein # Map generation progress STR_GENERATION_WORLD :{WHITE}Wêreld word gevorm... -STR_GENERATION_ABORT :{BLACK}Verlaat +STR_GENERATION_ABORT :{BLACK}Staak STR_GENERATION_ABORT_CAPTION :{WHITE}Verlaat Wêreld Generasie -STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wil jy rerig die generasie verlaat? +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wil jy rêrig die landskepping verlaat? STR_GENERATION_PROGRESS :{WHITE}{NUM}% klaar STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Wêreld generasie STR_GENERATION_RIVER_GENERATION :{BLACK}Rivier generasie STR_GENERATION_TREE_GENERATION :{BLACK}Boom generasie STR_GENERATION_OBJECT_GENERATION :{BLACK}Onbeweegbaar generasie -STR_GENERATION_CLEARING_TILES :{BLACK}Ru en rotserig area ontwikkeling +STR_GENERATION_CLEARING_TILES :{BLACK}Ru en rotserig area generasie STR_GENERATION_SETTINGUP_GAME :{BLACK}Stel speletjie op STR_GENERATION_PREPARING_TILELOOP :{BLACK}Hardloop teël-herhaling STR_GENERATION_PREPARING_SCRIPT :{BLACK}Lopende skrif @@ -2765,13 +2810,15 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Beweeg O STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Beweeg die gekose NewGRF op in die lys STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Beweeg Af STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Beweeg die gekose NewGRF af in die lys +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Opgradeer +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Gradeer NewGRF lêers op STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}'n Lys van die NewGRF lêers wat geïnstaleer is STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Stel parameters STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Vertoon parameters STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Skakel palet STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Skakel die palet van die geselekteurde NewGRF.{}Doen dit wanneer die grafika van hierdie NewGRF pink lyk in die speletjie. -STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Wend aan veranderings +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Wend veranderings aan STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Vind vermisde inhoud aanlyn STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Kyk of die vermisde inhoud aanlyn kan gevind word @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Gelyke lê STR_NEWGRF_SETTINGS_DISABLED :{RED}Gedeaktiveer STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Onversoenbaar met hierdie weergawe van OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Stoor voorafinstellings +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Beskikbare voorafinstellings, kies een om te gebruik as eksemplaar vir 'n nuwe een +STR_SAVE_PRESET_TITLE :{BLACK}Kies 'n naam vir die voorafinstellings +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Gekose naam om voorafstellings te stoor +STR_SAVE_PRESET_CANCEL :{BLACK}Kanselleer +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Moenie voorafinstellings verander nie +STR_SAVE_PRESET_SAVE :{BLACK}Stoor +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Stoor die voorafinstellings na gekose naam + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Verander NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Maak Toe @@ -2816,10 +2873,13 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gaan na STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gaan na sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gaan na gegewe sprite. As die sprite nie 'n normale sprite is nie, gaan na die volgende normale sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorige sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gaan na vorige normale sprite. ignoreer enige pseudo/her-kleur/font sprite en spring terug na die einde +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gaan na vorige normale sprite, en ignoreer enige pseudo/her-kleur/font sprite en spring terug na die einde STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Voorstelling van geselekteerde sprite. Die belyning word geignoreer waneer sprite geteken word STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Beweeg die sprite rond, verander die X en Y afwyking -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X afwyking: {NUM}, Y afwyking: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Relatiewe herstel +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Herstel die huidige relatiewe verplasing +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X verplasing: {NUM}, Y verplasing: {NUM} (Werklik) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X verplasing: {NUM}, Y verplasing: {NUM} (Relatief) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Kies 'n sprite van enige plek op die skerm @@ -2876,6 +2936,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Vermiste l STR_NEWGRF_BROKEN :{WHITE}Die gedrag van NewGRF '{0:STRING}' kan moontlik sinkroniesasie probleme of program ongelukke veroorsaak STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Dit het die aangedrewe-wa staat vir '{1:ENGINE}' wanneer nie in 'n depot verander STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Het lengte van voertuig verander '{1:ENGINE}' wanneer dit nie in 'n diensstasie is nie +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Dit verander voertuig kapasiteit vir '{1:ENGINE}' wanneer nie binne 'n diensstasie is nie of herstelwerk word gedoen STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trein '{VEHICLE}' wat aan '{COMPANY}' behoort se lengte is ongeldig. Dit is waarskynlik veroorsaak deur 'n NewGRF. Spel kan verongeluk of sinchronisasie verloor STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' verskaf foutiewe inligting. @@ -2890,6 +2951,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} van STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skandeer NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skandeer NewGRFs. Na mate van die hoeveelheid, kan dit 'n tydtjie neem @@ -2912,7 +2976,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Tik 'n n STR_TOWN_DIRECTORY_CAPTION :{WHITE}Dorpe STR_TOWN_DIRECTORY_NONE :{ORANGE}- Geen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Dorp name - Kliek op 'naam om skerm daarna te skuif. Ctrl+Click om 'n nuwe venster oor die drop oop te maak +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Dorpname - klik op 'n naam om skerm daarna te skuif. Ctrl+klik om 'n nuwe venster vir die dorp oop te maak STR_TOWN_POPULATION :{BLACK}Wêreldbevolking: {COMMA} # Town view window @@ -2927,11 +2991,11 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} afgelewer STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (steeds benodig) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (afgelewer) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Dorp groei elke {ORANGE}{COMMA}{BLACK} da{P g e} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Dorp groei elke {ORANGE}{COMMA}{BLACK} da{P g e} (befonds) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Dorp groei elke {ORANGE}{COMMA}{BLACK}{NBSP}da{P g e} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Dorp groei elke {ORANGE}{COMMA}{BLACK}{NBSP}da{P g e} (befonds) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Dorp groei {RED}nie{BLACK} -STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Geraaas limit in dorp: {ORANGE}{COMMA}{BLACK} Maks: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Skuif skerm na dorp toe. Ctrl+Kliek maak 'n nuwe venster oor die dorp oop +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Geraas limiet in dorp: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Skuif skerm na dorp toe. Ctrl+klik maak 'n nuwe venster vir die dorp oop STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Plaaslike raad STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vertoon informasie oor plaaslike raad STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Verander dorp naam @@ -2948,21 +3012,21 @@ STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} p STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vervoer maatskappy graderings: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Aksies beskikbaar: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lys van dinge om te doen by hierdie dorp - kliek op item vir meer besonderhede +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lys van dinge om te doen by hierdie dorp - klik op item vir meer besonderhede STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Doen dit STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Voeg die verlig aksie in die lys bo uit -STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Klein adverteer kampeer -STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Medium adverteer kampeer -STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Groot adverteer kampeer +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Klein reklame veldtog +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Medium reklame veldtog +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Groot reklame veldtog STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Befonds plaaslike pad heropbou STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bou standbeeld van maatskappy eienaar STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Befonds nuwe geboue -STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Koop eksklusief vervoer regte -STR_LOCAL_AUTHORITY_ACTION_BRIBE :Omkoop die plaaslike raad +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Koop eksklusiewe vervoerregte +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Koop die plaaslike raad om STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Begin 'n klein plaaslik advertensie veldtog, om meer passasiers en vragte tot jou vervoer dienste te lok.{}Prys: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begin 'n middlematige plaaslik advertensie veldtog, om meer passasiers en vragte tot jou vervoer dienste te lok.{}Prys: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begin 'n middelmatige plaaslik advertensie veldtog, om meer passasiers en vrag te lok om jou diens te gebruik.{}Prys: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Begin 'n groot plaaslik advertensie veldtog, om meer passasiers en vragte tot jou vervoer dienste te lok.{}Prys: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finansier herstel van stedelike paaie wat aansienlike verkeersprobleme sal veroorsaak.{}Koste: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} Bou 'n standbeeld in eer van u maatskappy.{} Prys: {CURRENCY_LONG} @@ -2980,7 +3044,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nie v STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Maatskappy doelwitte: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}kliek op doel om kern oorsig van industrie/stad/teël te middel. Ctrl+Kliek open 'n nuwe siens poort by industrie/stad/teël lokasie +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op doel om skerm oor die industrie/stad/teël te sentreer. Ctrl+klik maak 'n nuwe venster vir die industrie/stad/teël oop # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Vraag @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Inligting STR_GOAL_QUESTION_CAPTION_WARNING :Waarskuwing STR_GOAL_QUESTION_CAPTION_ERROR :Fout -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Kanselleer STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nee @@ -3007,15 +3071,16 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Begin weer STR_GOAL_QUESTION_BUTTON_POSTPONE :Stel uit STR_GOAL_QUESTION_BUTTON_SURRENDER :Gee oor STR_GOAL_QUESTION_BUTTON_CLOSE :Maak toe +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidies op aanbod vir diens opneming: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} van {STRING} tot {STRING}{YELLOW} (voor {DATE_SHORT}) +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} van {STRING} na {STRING}{YELLOW} (voor {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Geen - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Dienste reeds gesubsidieer: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} van {STRING} tot {STRING}{YELLOW} ({COMPANY}{YELLOW}, tot {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliek op aanbieding om skerm na nywerheid/dorp te skuif. Ctrl+Kliek maak 'n nuwe venster oop oor die nywerheid/dorp +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op aanbieding om skerm na nywerheid/dorp te skuif. Ctrl+klik maak 'n nuwe venster vir die nywerheid/dorp oop # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Storieboek @@ -3027,9 +3092,10 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Vorige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Vorige bladsy STR_STORY_BOOK_NEXT_PAGE :{BLACK}Volgende STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Volgende bladsy +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ongeldige doelwit verwysing # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Stasie name - kliek op 'n naam om skerm na stasie te skuif. Ctrl+Kliek maak 'n nuwe venster oor die stastie oop +STR_STATION_LIST_TOOLTIP :{BLACK}Stasiename - klik op 'n naam om skerm na stasie te skuif. Ctrl+klik maak 'n nuwe venster vir die stastie oop STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hou in Ctrl om meer as een item te selekteer STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stasie{P "" s} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Geen vra # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Wagtend: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} vanaf {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} gereserveer vir oplaai) @@ -3083,16 +3148,16 @@ STR_STATION_VIEW_GROUP_D_V_S :Bestemming-via- ############ range for rating starts STR_CARGO_RATING_APPALLING :Haglik -STR_CARGO_RATING_VERY_POOR :Baie Swak +STR_CARGO_RATING_VERY_POOR :Baie swak STR_CARGO_RATING_POOR :Swak STR_CARGO_RATING_MEDIOCRE :Middelmagtig STR_CARGO_RATING_GOOD :Goed -STR_CARGO_RATING_VERY_GOOD :Baie Goed +STR_CARGO_RATING_VERY_GOOD :Baie goed STR_CARGO_RATING_EXCELLENT :Uitstekend STR_CARGO_RATING_OUTSTANDING :Treffend ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Skuif skerm na stasie. Ctrl+Kliek maak 'n nuwe venster oop oor die stasie +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Skuif skerm na stasie. Ctrl+klik maak 'n nuwe venster oop vir die stasie STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Verander naam van stasie STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Toon alle treine wat hierdie stasie op hul skedule het @@ -3107,16 +3172,16 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Verhoed # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Senter skerm op wegwyser. Ctrl+Kliek maak 'n nuwe venster oop op die wegwyser se lokasie -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Verander wegpunt name -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Sentreer hoof uitsig op bouy lokasie. Ctrl+Kliek maak 'n nuwe uitsig oop op die lokasie van die buoy +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Senter skerm op roetebaken. Ctrl+klik maak 'n nuwe venster oop vir die roetebaken +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Verander roetebaken se naam +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Sentreer hoofuitsig op boei. Ctrl+klik maak 'n nuwe venster oop vir die boei STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Verander baken naam -STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer wegwyser naam +STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer roetebaken se naam # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finansies {BLACK}{COMPANY_NUM} -STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Onkoste/Inkome +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Uitgawe/Inkomste STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruksie STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nuwe Voertuie @@ -3141,7 +3206,7 @@ STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENC STR_FINANCES_BORROW_BUTTON :{BLACK}Leen {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Vermeerder groote van lening. Ctrl+Klick leen so veel as moontlik STR_FINANCES_REPAY_BUTTON :{BLACK}Betaal {CURRENCY_LONG} terug -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betaal gedeelte van lening terug. Ctrl+Kliek betaal so veel moontlik terug +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betaal gedeelte van lening terug. Ctrl+klik betaal so veel as moontlik terug STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktuur # Company view @@ -3170,15 +3235,15 @@ STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bou HK STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bou maatskappy hoofkantore STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Wys HK STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Vertoon maatskappy hoofkantore -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Beweeg HQ -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bou hoofkwartier elders teen 'n koste gelykstaande aan 1% van maatskappy se waarde. Shift+Kliek vir kwotasie +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Beweeg HK +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bou hoofkwartier elders teen 'n koste gelykstaande aan 1% van maatskappy se waarde. Shift+klik vir kwotasie STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Besonderhede STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Sien gedetaileerde infrastruktuur telling STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nuwe Gesig STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Kies nuwe gesig vir bestuurder STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Kleur Skema -STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Verander die maatskappy voertuig lewery +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Verander die maatskappy kleure STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Maatskappy Naam STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Verander die maatskappy se naam STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Bestuurder Naam @@ -3186,8 +3251,8 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Verander STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Koop 25% aandeel in maatskappy STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Verkoop 25% aandeel in maatskappy -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Koop 'n 25% aandeel in maatskappy. Shift+Kliek vir kwotasie -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkoop 'n 25% aandeel in maatskappy. Shift+Kliek vir beraamde inkomste +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Koop 'n 25% aandeel in maatskappy. Shift+klik vir kwotasie +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkoop 'n 25% aandeel in maatskappy. Shift+klik vir beraamde inkomste STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Maatskappy Naam STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Bestuurder se Naam @@ -3211,16 +3276,16 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Nywerhede STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Geen - -STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% uitgevoer) -STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% uitgevoer) +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% vervoer) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% vervoer) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nywerheid name - Kliek op 'n naam om skerm na nywerheid te skuif. Ctrl+Kliek maak 'n nuwe venster oop oor die nywerheid +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nywerheidsname - klik op 'n naam om skerm na nywerheid te skuif. Ctrl+klik maak 'n nuwe venster vir die nywerheid oop # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksie verlede maand: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% vervoer) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Skuif skerm na nywerheid. Ctrl+Kliek maak 'n nuwe venster oor die nywerheid oop +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Skuif skerm na nywerheid. Ctrl+klik maak 'n nuwe venster vir die nywerheid oop STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksie vlak: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Die nywerheid het aangekondig dat dit binnekort gaan sluit! @@ -3246,31 +3311,31 @@ STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Skeep{P "" e} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Vliegtuie -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treine - kliek op trein vir informasie -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Pad voertuie - kliek op voertuig vir inligting -STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skepe - kliek op skip vir informasie -STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Vliegtuie - kliek op vliegtuig vir informasie +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treine - klik op trein vir inligting +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Padvoertuie - klik op voertuig vir inligting +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skepe - klik op skip vir inligting +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Vliegtuie - klik op vliegtuig vir inligting STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Wins die jaar: {CURRENCY_LONG} (verlede jaar: {CURRENCY_LONG}) -STR_VEHICLE_LIST_AVAILABLE_TRAINS :Beskikbaar Treine -STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Beskikbaar Voertuie -STR_VEHICLE_LIST_AVAILABLE_SHIPS :Beskikbaar Skepe -STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Beskikbaar Vliegtuie +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Beskikbare treine +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Beskikbare Voertuie +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Beskikbare Skepe +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Beskikbare Vliegtuie STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vertoon 'n lys van beskikbare enjins vir hierdie voertiug. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Bestuur lys STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Stuur instruksies na alle voertuie in die lys STR_VEHICLE_LIST_REPLACE_VEHICLES :Vervang voertuie -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Stuur vir Diens +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Stuur vir diens STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Stuur na Depot STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Stuur na Depot STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Stuur na Depot STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Stuur na Hangar -STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Kliek om alle voertuie in die lys te stop -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Kliek om aller voertuie in die lys te aanskakel +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klik om alle voertuie in die lys te stop +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klik om alle voertuie in die lys aan te skakel STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Gedeel opdrae van {COMMA} Voertui{P g e} @@ -3285,11 +3350,14 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ongegroepeerde STR_GROUP_DEFAULT_SHIPS :Ongegroepeerde skepe STR_GROUP_DEFAULT_AIRCRAFTS :Ongegroepeerde vliegtuig -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepe - Kliek op 'n groep om te lys alle voertuie van hierdie groep -STR_GROUP_CREATE_TOOLTIP :{BLACK}kliek om groep te skep +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepe - klik op 'n groep om alle voertuie in hierdie groep te lys. Sleep en los om te rangskik volgens hiërargie. +STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik om groep te skep STR_GROUP_DELETE_TOOLTIP :{BLACK}Vee uit die gekose groep STR_GROUP_RENAME_TOOLTIP :{BLACK}Hernoem die gekose groep -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Kliek om te beskerm hierdie groep van wêreldwyd outovervang +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik om hierdie groep teen outovervanging te beskerm + +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Wis groep uit +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Is jy seker jy wil hierdie groep en enige subgroepe uitwis? STR_GROUP_ADD_SHARED_VEHICLE :Voeg gedeelde voertuie STR_GROUP_REMOVE_ALL_VEHICLES :Verwyder alle voertuie @@ -3307,7 +3375,7 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nuwe Pad Voertu STR_BUY_VEHICLE_SHIP_CAPTION :Nuwe Skepe STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nuwe Vliegtuig -STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kos: {GOLD}{CURRENCY_LONG}{BLACK} Gewig: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Koste: {GOLD}{CURRENCY_LONG}{BLACK} Gewig: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Spoed: {GOLD}{VELOCITY}{BLACK} Krag: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Spoed: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Spoed op oseaan: {GOLD}{VELOCITY} @@ -3315,8 +3383,8 @@ STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Spoed op STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Loopkoste: {GOLD}{CURRENCY_LONG}/jr STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasiteit: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(herboubaar) -STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Ontwerp: {GOLD}{NUM}{BLACK} Lewe: {GOLD}{COMMA} ja{P ar re} -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. Betroubaarheid: {GOLD}{COMMA}% +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Ontwerp: {GOLD}{NUM}{BLACK} Leeftyd: {GOLD}{COMMA} jaar +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. betroubaarheid: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Kos: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Massa: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kos: {GOLD}{CURRENCY_LONG}{BLACK} Spoed: {GOLD}{VELOCITY} @@ -3328,20 +3396,20 @@ STR_PURCHASE_INFO_ALL_BUT :Alles behalwe { STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. Traktiewe Poging: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Afstand: {GOLD}{COMMA} teëls -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Trein voertuig keuse lys - kliek op voertuig vir inligting -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Pad voertuig keuse lys - kliek op voertuig vir inligting -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skip keuse lys - kliek op skip vir inligting -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuig keuse lys - kliek op vliegtuig vir inligting +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Trein kieslys - klik op voertuig vir inligting. CTRL+kliek vir wegsteek van die voertuig tipe +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Pad voertuig kieslys - klik op voertuig vir inligting. CTRL+kliek vir wegsteek van die voertuig tipe +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK} Skip keuse lys. Klik op die skip vir inligting. CTRL+klik vir die wegsteek van die skip tipe +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuig kieslys - klik op vliegtuig vir inligting. CTRL+kliek vir wegsteek van die vliegtuig tipe STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Koop Voertuig STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Koop Voertuig STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Bou skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Koop vliegtuig -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose lokomtief/trok. Shift+Kliek vir kwotasie -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose voertuig. Shift+Kliek vir kwotasie -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose skip. Shift+Kliek vir kwotasie -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose vliegtuig. Shift+Kliek vir kwotasie +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose lokomotief/wa. Shift+klik vir kwotasie +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose voertuig. Shift+klik vir kwotasie +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose skip. Shift+klik vir kwotasie +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Koop die gekose vliegtuig. Shift+klik vir kwotasie STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Hernoem STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Hernoem @@ -3353,6 +3421,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Hernoem STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Hernoem skip tipe STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Hernoem vliegtuig tipe +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Vertoon + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Vertoon +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Vertoon + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Skakel die wegsteek/vetrooning van die trein tipe +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Skakel die wegsteek/vetrooning van die voertuig tipe +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Skakel die wegsteek/vetrooning van die skip tipe +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Skakel die wegsteek/vetrooning van die vliegtuig tipe + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Hernoem trein voertuig tipe STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Hernoem pad voertuig tipe STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Hernoem skip tipe @@ -3369,10 +3452,10 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} voertuig{P "" s}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Treine - sleep voertuig met links-kliek om did by die trein te voeg/wegvat, regs-kliek op trein vir info. Hou Ctrl om altwee funksies op die volgende ketting toe te pas -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Voertuie - regs-kliek op voertuig vir inligting -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skepe - regs-kliek op skip vir inligting -STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuie - regs-kliek op vliegtuig vir informasie +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Treine - sleep wa met linkerknoppie om dit by die trein te voeg/wegvat, regs-klik op trein vir inligting. Hou Ctrl om altwee funksies op die volgende ketting toe te pas +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Voertuie - regs-klik op voertuig vir inligting +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skepe - regs-klik op skip vir inligting +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuie - regs-klik op vliegtuig vir inligting STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Sleep trein voertuig hier om dit te verkoop STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Sleep pad voertuig hier om dit te verkoop @@ -3406,30 +3489,30 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloon Vo STR_DEPOT_CLONE_SHIP :{BLACK}Kloon Skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloon Vliegtuig -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Kliek hier en dan op 'n bestaande trein om 'n kopie van die bestaande trein te koop. Shift+Kliek vir kwotasie -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Kliek hier en dan op 'n bestaande voertuig om 'n kopie van die bestaande voertuig te koop. Shift+Kliek vir kwotasie -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Kliek hier en dan op 'n bestaande skip om 'n kopie van die bestaande skip te koop. Shift+Kliek vir kwotasie -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Kliek hier en dan op 'n bestaande vliegtuig om 'n kopie van die bestaande vliegtuig te koop. Shift+Kliek vir kwotasie +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Klik hier en dan op 'n bestaande trein om 'n spieëlbeeld van die bestaande trein te koop. Ctrl+Klik om die opdragte tel deel. Shift+klik vir kwotasie +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Klik hier en dan op 'n bestaande voertuig om 'n spieëlbeeld van die bestaande voertuig te koop. Shift+klik vir kwotasie +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Klik hier en dan op 'n bestaande skip om 'n spieëlbeeld van die bestaande skip te koop. Shift+klik vir kwotasie +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Klik hier en dan op 'n bestaande vliegtuig om 'n spieëlbeeld van die bestaande vliegtuig te koop. Shift+klik vir kwotasie -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Skuif skerm na trein diensstasie. Ctrl+Kliek om 'n nuwe venster oor die trein diensstasie oop te maak -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Skuif skerm na voertuig diensstasie. Ctrl+Kliek om 'n nuwe venster oor die voertuig diensstasie oop te maak -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Skuif skerm na skeepswerf. Ctrl+Kliek om 'n nuwe venster oor die skeepswerf oop te maak -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Skuif skerm na loods. Ctrl+Kliek om 'n nuwe venster oor die loods oop te maak +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Skuif skerm na trein diensstasie. Ctrl+klik om 'n nuwe venster vir die trein diensstasie oop te maak +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Skuif skerm na voertuigdiensstasie. Ctrl+klik om 'n nuwe venster vir die voertuigdiensstasie oop te maak +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Skuif skerm na skeepswerf. Ctrl+klik om 'n nuwe venster vir die skeepswerf oop te maak +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Skuif skerm na loods. Ctrl+klik om 'n nuwe venster vir die loods oop te maak STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Kry 'n lys van alle treine met die huidige depot in sy opdrae STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Kry 'n lys van alle pad voertuie met die huidige depot in sy opdrae STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Kry 'n lys van alle skepe met die huidige depot in sy opdrae STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Kry 'n lys van alle vliegtuie wat enige hangar by die lughawe in sy opdrae het -STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliek om alle treine in die depot te stop -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliek om alle pad voertuie in die depot te stop -STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kliek om alle skepe in die depot te stop -STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kliek om alle vlietuie in die hangar te stop +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klik om alle treine in die treindepot te stop +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klik om alle voertuie in die diensstasie te stop +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klik om alle skepe in die skeepswerf te stop +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klik om alle vlietuie in die loods te stop -STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliek om alle treine in die depot te aanskakel -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliek om alle pad voertuie in die depot te aanskakel -STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Kliek om alle skepe in die depot te aanskakel -STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Kliek om alle vliegtuie in die hangar te aanskakel +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klik om alle treine in die treindepot aan te skakel +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klik om alle padvoertuie in die diensstasie aan te skakel +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klik om alle skepe in die skeepswerf aan te skakel +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klik om alle vliegtuie in die loods aan te skakel STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}U staan op die punt om al die voertuie in die depot te verkoop. Is jy seker? @@ -3437,7 +3520,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}U staan STR_ENGINE_PREVIEW_CAPTION :{WHITE}Boodskap van voertuig fabrikant STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Ons het sopas 'n nuwe {STRING} ontwerp, sal jy belangstel om hierdie voertuig eksklusief vir 'n jaar te gebruik. Hierdie word gedoen om te kyk hoe die voertuig doen voordat hy wereld wyd in produksie gesit word? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :spoorweg lokomotief -STR_ENGINE_PREVIEW_ROAD_VEHICLE :pad voertuig +STR_ENGINE_PREVIEW_ROAD_VEHICLE :padvoertuig STR_ENGINE_PREVIEW_AIRCRAFT :vliegtuig STR_ENGINE_PREVIEW_SHIP :skip STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monospoor lokomotief @@ -3457,17 +3540,22 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Pad voertuig STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Vliegtuig +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Voertuie in gebruik +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolom met voertuie wat jy besit +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Beskikbare voertuie +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolom met voertuie wat beskikbaar is vir vervanging + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Kies die enjin tipe om te vervang STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Kies die nuwe enjin tipe wat jy wil gebruik in plaas van die linker gekose enjin tipe -STR_REPLACE_VEHICLES_START :{BLACK}Begin Voertuie Vervanging +STR_REPLACE_VEHICLES_START :{BLACK}Vervang voertuie STR_REPLACE_VEHICLES_NOW :Vervand alle voertuie nou STR_REPLACE_VEHICLES_WHEN_OLD :Vervang net ou voertuie STR_REPLACE_HELP_START_BUTTON :{BLACK}Druk om vervanging van die linker gekose enjin tipe met die regter gekose enjin tipe te begin STR_REPLACE_NOT_REPLACING :{BLACK}Word nie vervang nie STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Geen voertuig gekies STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} waneer oud -STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Voertuie Vervanging +STR_REPLACE_VEHICLES_STOP :{BLACK}Staak vervanging STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Druk om die vervanging van die linker gekose enjin tipe te stop STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Vervang: {ORANGE}{STRING} @@ -3477,8 +3565,8 @@ STR_REPLACE_WAGONS :Waens STR_REPLACE_HELP_RAILTYPE :{BLACK}Kies die soort spoor waarvoor lokomotiewe vervang moet word STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Toon aan watter enjin die linker gekose enjin mee vervang moet word , indien enige -STR_REPLACE_RAIL_VEHICLES :Spoort voertuie -STR_REPLACE_ELRAIL_VEHICLES :Elektrifiseerde Spoor Voertuie +STR_REPLACE_RAIL_VEHICLES :Treine +STR_REPLACE_ELRAIL_VEHICLES :Elektriese treine STR_REPLACE_MONORAIL_VEHICLES :Monospoor voertuie STR_REPLACE_MAGLEV_VEHICLES :Maglev Voertuie @@ -3488,20 +3576,20 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Maak aut # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Skuif skerm na trein. Ctrl+Kliek om die skerm die trein te laat volg -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Skuif skerm na voertuig. Ctrl+Kliek om die skerm die voertuig te laat volg -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Skuif skerm na skip. Ctrl+Kliek om die skerm die skip te laat volg -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Skuif skerm na vliegtuig. Ctrl+Kliek om die skerm die vliegtuig te laat volg +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Skuif skerm na trein. Ctrl+klik om die skerm die trein te laat volg +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Skuif skerm na voertuig. Ctrl+klik om die skerm die voertuig te laat volg +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Skuif skerm na skip. Ctrl+klik om die skerm die skip te laat volg +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Skuif skerm na vliegtuig. Ctrl+klik om die skerm die vliegtuig te laat volg -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur trein na depot. CTRL+kliek sal net diens -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur voertuig na depot. CTRL+kliek sal net diens -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur skip na depot -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur vliegtuig na hangar. CTRL+kliek sal net diens +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur trein na diensstasie. Ctrl+klik om net te diens +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur voertuig na diensstasie. Ctrl+klik om net te diens +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur skip na skeepswerf. Ctrl+klik om net te diens +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stuur vliegtuig na loods. Ctrl+klik om net te diens -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Die sal 'n kopie van die trein koop. Shift+Kliek vir kwotasie -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Die sal 'n kopie van die voertuig koop. Shift+Kliek vir kwotasie -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Die sal 'n kopie van die skip koop. Shift+Kliek vir kwotasie -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Die sal 'n kopie van die voertuig koop. Shift+Kliek vir kwotasie +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dit sal 'n spieëlbeeld van die trein koop. Shift+klik vir kwotasie +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dit sal 'n spieëlbeeld van die voertuig koop. Shift+klik vir kwotasie +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Dit sal 'n spieëlbeeld van die skip koop. Shift+klik vir kwotasie +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dit sal 'n spieëlbeeld van die voertuig koop. Ctrl-klik om opdrae te deel. Shift+klik vir kwotasie STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forseer trein om voort te gaan sonder om vir sien die uit te klaar @@ -3513,20 +3601,20 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Herbou v STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Agteruit rigting van trein STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forseer voertuig om te draai om -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Vertoon trein se opdrae. Ctrl+Kliek om die trein se rooster te wys -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Vertoon voertuig se opdrae. Ctrl+Kliek om die voertuig se rooster te wys -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Vertoon skip se opdrae. Ctrl+Kliek om die skip se rooster te wys -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Vertoon vliegtuig se opdrae. Ctrl+Kliek om die vliegtuig se rooster te wys +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Vertoon trein se opdrae. Ctrl+klik om die trein se rooster te wys +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Vertoon voertuig se opdrae. Ctrl+klik om die voertuig se rooster te wys +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Vertoon skip se opdrae. Ctrl+klik om die skip se rooster te wys +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Vertoon vliegtuig se opdrae. Ctrl+klik om die vliegtuig se rooster te wys STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Toon trein besonderhede STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Wys pad voertuig aanwyse STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Wys skip se aanwyse STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Toon vliegtuig aanwyse -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Huidige trein aksie - kliek hier om trein te stop/aanskakel. Ctrl+kliek om na destinasie te skuif. -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Huidige voertuig aksie - kliek hier om voertuig to stop/aanskakel. Ctrl+kliek om na destinasie te skuif. -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Huidige skip aksie - kliek hier om skip te stop/aanskakel. Ctrl+kliek om na destinasie te skuif. -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Huidige vliegtuig aksie - kliek hier on vliegtuig te stop/aanskakel. Ctrl+kliek om na destinasie te skuif. +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Huidige treinaksie - klik hier om trein te stop/aanskakel. Ctrl+klik om na bestemming te skuif. +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Huidige voertuigaksie - klik hier om voertuig to stop/aanskakel. Ctrl+klik om na bestemming te skuif. +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Huidige skipaksie - klik hier om skip te stop/aanskakel. Ctrl+klik om na bestemming te skuif. +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Huidige vliegtuigaksie - klik hier om vliegtuig te stop/aanskakel. Ctrl+klik om na bestemming te skuif. # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laai / Aflaai @@ -3581,10 +3669,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Oordragkrediet: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Diens tussentyd: {LTBLUE}{COMMA}dae{BLACK} Laaste diens: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Diens tussentyd: {LTBLUE}{COMMA}{NBSP}dae{BLACK} Laaste diens: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Diens tussentyd: {LTBLUE}{COMMA}%{BLACK} Laaste diens: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Maak diens interval met 10 dae meer. Ctrl+Kliek om interval met 5 dae meer te maak -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Maak diens interval met 10 dae minder. Ctrl+Kliek om interval met 5 dae minder te maak +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vermeeder diensinterval met 10 dae. Ctrl+klik om interval met 5 dae te vermeerder +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Verminder diensinterval met 10. Ctrl+klik om interval met 5 dae te verminder STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Verander instandhoudings-interval tipe STR_VEHICLE_DETAILS_DEFAULT :Verstek @@ -3626,7 +3714,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nuwe kap STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nuwe kapasiteit: {GOLD}{CARGO_LONG}{}{BLACK}Inkomste vanaf herinrig: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nuwe Kapasiteit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Koste om te herbou: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nuwe kapasiteit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Inkomste van herinrig: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selekteer die voertuig vir herbou. Trek met die muis om meer as een voertuig te selekteer. Kliek op 'n leë spasie sal die hele voertuig selekteer. Ctrl+Kliek sal 'n voertuig en daarop volgende ketting selekteer +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Kies die voertuig om te omskep. Sleep die muis om meer as een voertuig te selekteer. Klik op 'n leë spasie om die hele voertuig te kies. Ctrl+klik sal 'n voertuig en die daaropvolgende ketting kies STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Kies vrag tipe vir trein te ontvoer STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Kies vrag tipe vir pad voertuig om te vervoer @@ -3648,7 +3736,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Rooster STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Skakel na die rooster uitsig -STR_ORDERS_LIST_TOOLTIP :{BLACK}Roete lys - Kliek op 'n bestemming om dit te kies. Ctrl+Kliek skuif die skerm na die bestemming +STR_ORDERS_LIST_TOOLTIP :{BLACK}Roetelys - klik op 'n bestemming om dit te kies. Ctrl+klik skuif die skerm na die bestemming STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3678,14 +3766,14 @@ STR_ORDER_DROP_NO_UNLOADING :Geen aflaai STR_ORDER_TOOLTIP_UNLOAD :{BLACK}verander die aflaai gedrag ven die geselekteerde bevel STR_ORDER_REFIT :{BLACK}Herbou -STR_ORDER_REFIT_TOOLTIP :{BLACK}Kies watter vrag tipe te herbou na in die opdraag. CTRL-kliek om herbou instruksie te verwyder -STR_ORDER_REFIT_AUTO :{BLACK}Outo-herbou -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selekteer watter tipe vrag om hierdie bevel te outo-herbou. Ctrl-Kliek om hertbou instruksies te stop. Outo-herbou sal net toegelaat word as die voertuig die toelaat +STR_ORDER_REFIT_TOOLTIP :{BLACK}Kies na watter vragtipe toe die voegtuig omskep sal word. Ctrl-klik om omskeppingsinstruksie te verwyder +STR_ORDER_REFIT_AUTO :{BLACK}Outo-herpas +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Kies watter tipe vrag na herpas moet word vir hierdie opdrag. Ctrl-klik om herpassingsinstruksies te stop. Outo-omskepping sal net toegelaat word as die voertuig dit toelaat STR_ORDER_DROP_REFIT_AUTO :Vaste vrag STR_ORDER_DROP_REFIT_AUTO_ANY :Beskikbare vrag STR_ORDER_SERVICE :{BLACK}Diens -STR_ORDER_DROP_GO_ALWAYS_DEPOT :Beweeg altyd +STR_ORDER_DROP_GO_ALWAYS_DEPOT :gaan altyd STR_ORDER_DROP_SERVICE_DEPOT :Diens indien nodig STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Ignoreer die opdraag tensy 'n diens nodig is @@ -3715,13 +3803,13 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Die waar STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Tik in die waarde om teen te vergelyk STR_ORDERS_SKIP_BUTTON :{BLACK}Slaan oor -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignoreer die huidige opdrag, en begin die volgende. CTRL + kliek spring na verkieste opdrag +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignoreer die huidige opdrag, en begin die volgende. Ctrl+klik spring na verkieste opdrag STR_ORDERS_DELETE_BUTTON :{BLACK}Uitvee STR_ORDERS_DELETE_TOOLTIP :{BLACK}Vee die verlig opdrag uit STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Verwyder alle opdragte STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stop deeling -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stop die deel van die bevel. Ctrl+kliek vee alle bevelle vir die voertuig uit +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Hou op om opdraglys te deel. Ctrl+klik vee alle opdrae vir die voertuig uit STR_ORDERS_GO_TO_BUTTON :{BLACK}Gaan Na STR_ORDER_GO_TO_NEAREST_DEPOT :Gaan na naaste diensstasie @@ -3740,10 +3828,10 @@ STR_ORDER_SERVICE_AT :Diens by STR_ORDER_SERVICE_NON_STOP_AT :Diens geen-stop by STR_ORDER_NEAREST_DEPOT :die naaste -STR_ORDER_NEAREST_HANGAR :die naaste Vliegtuigloods -STR_ORDER_TRAIN_DEPOT :Trein Diensstasie +STR_ORDER_NEAREST_HANGAR :die naaste vliegtuigloods +STR_ORDER_TRAIN_DEPOT :Treindepot STR_ORDER_ROAD_VEHICLE_DEPOT :Pad Voertuig Diensstasie -STR_ORDER_SHIP_DEPOT :Skip Diensstasie +STR_ORDER_SHIP_DEPOT :Skeepswerf STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} @@ -3771,23 +3859,23 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Geen aflaai en STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Geen aflaai en wag vir enige vol vrag) STR_ORDER_NO_UNLOAD_NO_LOAD :(Geen aflaai en geen laai) -STR_ORDER_AUTO_REFIT :(Outo-herbou na {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Vollas met outo-herbou na {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Vollas enige vrago met outo-herbou na {STRING}) -STR_ORDER_UNLOAD_REFIT :(Laai af en laai vrag met outo-herbou na {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Laai af en wag vir 'n vol vrag met outo-herbo na {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Laai af en wag vir enige vol vrag met outo-herbo na {STRING}) -STR_ORDER_TRANSFER_REFIT :(Verplaas en vat vrag met outo-herbou na{STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Verplaas en wag vir 'n vol vrag met outo-herbou na{STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Verplaas en wag vir enige vol vrag met outo-herbou na{STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Geen aflaai en vat vrag met outo-herbou na{STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Geen aflaai en wag vir 'n vol vrag met outo-herbou na{STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Geen aflaai en wag vir enige vol vrag met outo-herbou na{STRING}) +STR_ORDER_AUTO_REFIT :(Herpas vir {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Vollas met herpas vir {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Vollas enige vrag met herpas vir {STRING}) +STR_ORDER_UNLOAD_REFIT :(Laai af en laai vrag op met herpas vir {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Laai af en wag vir 'n vol vrag met herpas vir {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Laai af en wag vir enige vol vrag met herpas vir {STRING}) +STR_ORDER_TRANSFER_REFIT :(Plaas oor en laai vrag met herpas vir {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Plaas oor en wag vir 'n vollas met herpas vir {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Plaas oor en wag vir enige vollas met herpas vir {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Geen aflaai en vat vrag met herpas vir {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Geen aflaai en wag vir 'n vol vrag met herpas vir {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Geen aflaai en wag vir enige vol vrag met herpas vir {STRING}) STR_ORDER_AUTO_REFIT_ANY :beskikbare vrag STR_ORDER_STOP_LOCATION_NEAR_END :[naby einde] -STR_ORDER_STOP_LOCATION_MIDDLE :[middle] +STR_ORDER_STOP_LOCATION_MIDDLE :[middel] STR_ORDER_STOP_LOCATION_FAR_END :[ver einde] STR_ORDER_OUT_OF_RANGE :{RED} (Volgende bestemming val buite die limiet) @@ -3796,25 +3884,29 @@ STR_ORDER_CONDITIONAL_UNCONDITIONAL :Spring oor na b STR_ORDER_CONDITIONAL_NUM :Spring oor na bevel {COMMA} wanneer {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Spring oor na bevel {COMMA} wanneer {STRING} {STRING} -STR_INVALID_ORDER :{RED} (Ongeldig Opdrag) +STR_INVALID_ORDER :{RED} (Ongeldige opdrag) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Rooster) STR_TIMETABLE_ORDER_VIEW :{BLACK}Bevele STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Verander na die bevel lys -STR_TIMETABLE_TOOLTIP :{BLACK}Rooster - Kliek op 'n bestemming om dit te kies +STR_TIMETABLE_TOOLTIP :{BLACK}Rooster - Klik op 'n bestemming om dit te kies STR_TIMETABLE_NO_TRAVEL :Geen reis STR_TIMETABLE_NOT_TIMETABLEABLE :Reis (outomaties; getabuleer volgens eiehandige bevel) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reis (Nie op rooster nie) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis op die meeste {2:VELOCITY} (nie gerooster) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis nie meer as {2:VELOCITY} nie (nie volgens tydrooster nie) STR_TIMETABLE_TRAVEL_FOR :Reis vir {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis vir {STRING} met die meeste {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reis (vir {STRING}, nie volgens tydrooster nie) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reis (vir {STRING}, nie volgens tydrooster nie) teen nie meer as {VELOCITY} nie +STR_TIMETABLE_STAY_FOR_ESTIMATED :(wag vir {STRING}, nie volgens tydrooster nie) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis vir {STRING}, nie volgens tydrooster nie) STR_TIMETABLE_STAY_FOR :en bly vir {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :en reis vir {STRING} -STR_TIMETABLE_DAYS :{COMMA} da{P g e} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" e} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}da{P g e} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ke} STR_TIMETABLE_TOTAL_TIME :{BLACK}Die rooster sal {STRING} neem om te voltooi STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Die rooster sal te minste {STRING} vat om te voltooi (nie alles gerooster nie) @@ -3826,7 +3918,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Hierdie STR_TIMETABLE_STATUS_START_AT :{BLACK}Hierdie tydrooster sal begin by {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Begin datum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Kies 'n datum as 'n beginpunt vir hierdie rooster. Ctrl+Kliek stel die begindatum van hierdie rooster en versprei al die voertuie wat hierdie rooster deel eweredig as die rooster volledig is. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Kies 'n datum as 'n beginpunt vir hierdie rooster. Ctrl+klik stel die begindatum van hierdie rooster en versprei al die voertuie wat hierdie rooster deel eweredig vir 'n volledige rooster. STR_TIMETABLE_CHANGE_TIME :{BLACK}Verander Tyd STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander die bedrag van tyd die verlig opdrag moes vat @@ -3844,7 +3936,7 @@ STR_TIMETABLE_RESET_LATENESS :{BLACK}Herstel STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Herstel die laat teller, so dat die voertuig op tyd is STR_TIMETABLE_AUTOFILL :{BLACK}Outovul -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vul die rooster outomaties in met die waardes van die volgende reis (CTRL-Kliek om die wagtyd te probeer hou) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vul die rooster outomaties in met die waardes van die volgende reis (Ctrl-klik om die wagtyd te probeer hou) STR_TIMETABLE_EXPECTED :{BLACK}Word vervag STR_TIMETABLE_SCHEDULED :{BLACK}Geskeduleer @@ -3912,10 +4004,10 @@ STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigur STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigureer die parameters van skrif # Available AIs window -STR_AI_LIST_CAPTION :{WHITE}Beskikbaar {STRING} +STR_AI_LIST_CAPTION :{WHITE}Beskikbare {STRING} STR_AI_LIST_CAPTION_AI :AIs STR_AI_LIST_CAPTION_GAMESCRIPT :Speletjie Skrifte -STR_AI_LIST_TOOLTIP :{BLACK}Kliek om 'n skrif te kies +STR_AI_LIST_TOOLTIP :{BLACK}Klik om 'n skrip te kies STR_AI_LIST_AUTHOR :{LTBLUE}Skrywer: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Weergawe: {ORANGE}{NUM} @@ -3940,6 +4032,8 @@ STR_AI_SETTINGS_START_DELAY :Aantal Dae om d STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme van {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} veranderinge-log van {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisensie van {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Teksomvouing +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Omvou die teks in die venster sodat alles pas en dit nie nodig is om te rol nie STR_TEXTFILE_VIEW_README :{BLACK}Besigtig readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Veranderinge-log STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisensie @@ -3970,7 +4064,7 @@ STR_MESSAGE_ESTIMATED_COST :{WHITE}Beraamde STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Beraamde Inkomste: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spaar nog in vorder, {}wag asb tot dit klaar is! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Stoor van speletjie is nog besig, {}wag asb tot dit klaar is! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Outostoor het misluk STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie STR_ERROR_GAME_SAVE_FAILED :{WHITE}Speletjie Spaar Misluk{}{STRING} @@ -4029,7 +4123,7 @@ STR_ERROR_SITE_UNSUITABLE :{WHITE}... ligg STR_ERROR_ALREADY_BUILT :{WHITE}... alreeds gebou STR_ERROR_OWNED_BY :{WHITE}... besit deur {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... gebied is besit deur 'n ander maatskappy -STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... Landargitekteur beperking beryk +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... landargitektuur beperking beryk STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... teël skoonmaak limiet bereik STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... bome se plant beperking bereik STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Naam moet unike wees @@ -4050,6 +4144,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Uitgrawi STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... reeds op seevlak STR_ERROR_TOO_HIGH :{WHITE}... te hoog STR_ERROR_ALREADY_LEVELLED :{WHITE}... klaar gelyk +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Die brug bo hierdie een gaan te hoog wees as jy voortgaan # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Maatskappy naam kan nie verander word nie... @@ -4076,7 +4171,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... te n STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... te naby aan 'n ander dorp STR_ERROR_TOO_MANY_TOWNS :{WHITE}... te veel dorpe STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... daar is nie meer spasie oor op die kaart nie -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Die dorp gaan nie paaie bou nie. Gaan na Gevorderde Verstellings->Ekonomie->Dorpe om dit te verander +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE} Die dorp sal nie paaie bou nie. Jy kan dit verander deur die bou van paaie via Stellings-> Omgewings-> Dorpe te aktiveer STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Pad werke in verloop STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan nie die dorp verwyder nie... {}'n Stasie of depot verwys na die dorp of die blok wat deur die dorp besit word kan nie verwyder word nie. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... daar is geen plek vir 'n standbeeld in die middel van die dorp @@ -4100,8 +4195,11 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... woud STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan slegs bo sneeu-lyn gebou word STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan slegs onder sneeu-lyn gebou word +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Daar was geen geskikte plek vir '{STRING}' nywerhede +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Verander die kaart generasie parameter om 'n beter kaart te kry + # Station construction related errors -STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan nie spoorweg stasie hier bou nie... +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan nie treinstasie hier bou nie... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan nie bus stasie hier bou nie... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan nie vragmotor stasie bou nie... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan nie passasier trem stasie bou nie... @@ -4121,12 +4219,12 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Te naby STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Stasie kan nie hernoem word nie... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... hierdie is 'n dorp besit pad STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... pad teenoor in die verkeerde rigting -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... deurry stops kan nie hoeke hê nie -STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... deurry stops kan nie aansluitings hê nie +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... deurry haltes kan nie hoeke hê nie +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... deurry haltes kan nie aansluitings hê nie # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan nie deel van stasie verwyder nie... -STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Moet eers spoorweg stasie verwyder +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Breek eers die treinstasie af STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan nie bus stasie verwyder nie... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan nie vragmotor stasie verwyder stasie... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan nie passasier stasie verwyder nie... @@ -4134,7 +4232,7 @@ STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan nie STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Moet eers pad stop verwyder STR_ERROR_THERE_IS_NO_STATION :{WHITE}... daar is geen stasie hier nie -STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Moet eers spoorweg stasie afbreek +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Breek eers die treinstasie af STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Moet eers bus stasie afbreek STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Moet eers vragmotor stasie afbreek STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Moet eers passasier trem stasie afbreek @@ -4143,15 +4241,15 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Moet eer STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Moet eers lughawe afbreek # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grens aan meer as een bestande wegwyser -STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te naby aan 'n ander wegwyser +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grens aan meer as een bestaande roetebaken +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te naby aan 'n ander roetebaken -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan nie trein wegpunt hier bou nie... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan nie roetebaken hier bou nie... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan nie baken hier plaas nie... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan nie wegpunt naam verander nie... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan nie die roetebaken se naam verander nie... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan nie trein wegpunt van hier werwyder nie... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Moet eers die spoor wegwyser verwyder +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Verwyder eers die roetebaken STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... baken in die pad STR_ERROR_BUOY_IS_IN_USE :{WHITE}... baken is in gebruik deur ander maatskappy! @@ -4216,7 +4314,7 @@ STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... daar # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kan nie kanaale hier bou nie... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kan nie sluite hier bou nie... -STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Can nie riviere hier plaas nie... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kan nie riviere hier plaas nie... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... moet op water gebou word STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Kan nie op water bou nie STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kan nie op oop see bou nie @@ -4235,7 +4333,8 @@ STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Brug kan STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Moet eers brug afbreek STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan nie in die selfde plek begin en eindig nie STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brug hoofde is nie op die selfde vlak nie -STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is te laag vie die daal +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is te laag vir die terrein +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Die brug is te hoog STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Begin en einde moet in lyn wees STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... albei brug eindes moet op land wees STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brug te lank @@ -4247,7 +4346,7 @@ STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plek ong STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Moet eers tonnel afbreek STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Ander tonnel in die pad STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tonnel so op die einde van die kaart eindig -STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan nie daal vir ander einde van tonnel te uitgrawe nie +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan nie die terrein aan die anderkant van die tonnel uitgrawe nie STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tonnel te lank # Object related errors @@ -4262,12 +4361,13 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... jy b STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan nie groep skep nie... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan nie groep uitvee nie... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan nie groep hernoem nie... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan nie die huidige groep instel nie STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan nie alle voertuie van groep verwyder nie... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan nie die voertuig tot hierdie groep voeg nie... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan nie gedeelde voertuie by groep voeg nie... # Generic vehicle errors -STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Trein in die weg +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Trein in die pad STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Pad voertuig in die pad STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip in die pad STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Vliegtuig in die pad @@ -4460,34 +4560,34 @@ STR_SV_ROAD_VEHICLE_NAME :Pad Voertuig {C STR_SV_SHIP_NAME :Skip {COMMA} STR_SV_AIRCRAFT_NAME :Vliegtuig {COMMA} -STR_SV_STNAME :{STRING} -STR_SV_STNAME_NORTH :{STRING} Noord -STR_SV_STNAME_SOUTH :{STRING} Suid -STR_SV_STNAME_EAST :{STRING} Oos -STR_SV_STNAME_WEST :{STRING} Wes -STR_SV_STNAME_CENTRAL :{STRING} Sentraal -STR_SV_STNAME_TRANSFER :{STRING} Oorplaas -STR_SV_STNAME_HALT :{STRING} Halte -STR_SV_STNAME_VALLEY :{STRING} Vallei -STR_SV_STNAME_HEIGHTS :{STRING} Hoogtes -STR_SV_STNAME_WOODS :{STRING} Woude -STR_SV_STNAME_LAKESIDE :{STRING} Meerkant -STR_SV_STNAME_EXCHANGE :{STRING} Wissel -STR_SV_STNAME_AIRPORT :{STRING} Lughawe -STR_SV_STNAME_OILFIELD :{STRING} Olieveld -STR_SV_STNAME_MINES :{STRING} Myne -STR_SV_STNAME_DOCKS :{STRING} Hawe +STR_SV_STNAME :{STRING}-stasie +STR_SV_STNAME_NORTH :{STRING}-Noord +STR_SV_STNAME_SOUTH :{STRING}-Suid +STR_SV_STNAME_EAST :{STRING}-Oos +STR_SV_STNAME_WEST :{STRING}-Wes +STR_SV_STNAME_CENTRAL :{STRING}-Sentraal +STR_SV_STNAME_TRANSFER :{STRING}-oorstap +STR_SV_STNAME_HALT :{STRING}-halte +STR_SV_STNAME_VALLEY :{STRING}-vallei +STR_SV_STNAME_HEIGHTS :{STRING}-hoogte +STR_SV_STNAME_WOODS :{STRING}-woud +STR_SV_STNAME_LAKESIDE :{STRING}-meer +STR_SV_STNAME_EXCHANGE :{STRING}-wisselaar +STR_SV_STNAME_AIRPORT :{STRING}-lughawe +STR_SV_STNAME_OILFIELD :{STRING}-olieveld +STR_SV_STNAME_MINES :{STRING}-myn +STR_SV_STNAME_DOCKS :{STRING}-hawe STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 -STR_SV_STNAME_ANNEXE :{STRING} Anneks -STR_SV_STNAME_SIDINGS :{STRING} Syspoor -STR_SV_STNAME_BRANCH :{STRING} Tak -STR_SV_STNAME_UPPER :Bo {STRING} -STR_SV_STNAME_LOWER :Laer {STRING} -STR_SV_STNAME_HELIPORT :{STRING} Helihawe -STR_SV_STNAME_FOREST :{STRING} Woud -STR_SV_STNAME_FALLBACK :{STRING} Stasie #{NUM} +STR_SV_STNAME_ANNEXE :{STRING}-anneks +STR_SV_STNAME_SIDINGS :{STRING}-syspoor +STR_SV_STNAME_BRANCH :{STRING}-tak +STR_SV_STNAME_UPPER :Bo-{STRING} +STR_SV_STNAME_LOWER :Onder-{STRING} +STR_SV_STNAME_HELIPORT :{STRING}-helihawe +STR_SV_STNAME_FOREST :{STRING}-bos +STR_SV_STNAME_FALLBACK :{STRING}-stasie #{NUM} ############ end of savegame specific region! ##id 0x8000 @@ -4496,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Stoom) @@ -4519,9 +4619,9 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektr STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektries) -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passasier Rytuig +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passasierswa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Pos Wa -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kool Wa +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Steenkool Wa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olie Tenkwa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Lewende Hawe Wa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goedere Wa @@ -4529,7 +4629,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Graan Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Hout Trok STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Yster Erts Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Staal Trok -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Gepantserde Wa +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :pantserwa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Kos Wa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papier Trok STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Koper Erts Laai Bak @@ -4549,7 +4649,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastiek Trok STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passasier Rytuig +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passasierswa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Pos Wa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Steenkoolwa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olie Tenkwa @@ -4559,7 +4659,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Graan Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Hout Trok STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Yster Erts Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Staal Trok -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Gepantserde Wa +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :pantserwa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Kos Wa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papier Trok STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Coper Erts Laai Bak @@ -4581,9 +4681,9 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektries) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passasier Rytuig +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passasierswa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Pos Wa -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kool Trok +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Steenkool Trok STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olie Tenkwa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Lewende Hawe Wa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goedere Wa @@ -4591,7 +4691,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Graan Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Hout Trok STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Yster Erts Laai Bak STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Staal Trok -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Gepantserde Wa +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :pantserwa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Kos Wa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papier Trok STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Koper Erts Laai Bak @@ -4615,7 +4715,7 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Sup STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kool Trok +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Steenkool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Pos Trok @@ -4645,9 +4745,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Yster Er STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Staal Trok STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Staal Trok STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Staal Trok -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Gepantserde Trok -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Gepantserde Trok -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Gepantserde Trok +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh pantsertrok +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl pantsertrok +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster pantsertrok STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Kos Wa STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Kos Wa STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Kos Wa @@ -4705,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passasier Veerboot STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate vragskip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell vragskip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover vragskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover vragskip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut vragskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4761,8 +4861,8 @@ STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Baken #{ STR_FORMAT_COMPANY_NUM :(Company {COMMA}) STR_FORMAT_GROUP_NAME :Groep {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} -STR_FORMAT_WAYPOINT_NAME :Wegpunt {TOWN} -STR_FORMAT_WAYPOINT_NAME_SERIAL :Wegpunt {TOWN} #{COMMA} +STR_FORMAT_WAYPOINT_NAME :{TOWN}-roetebaken +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN}-roetebaken #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Trein Depot STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Trein Depot #{COMMA} @@ -4799,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (weggesteek) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 4439cdf91d..5c55c860ee 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -22,7 +22,7 @@ STR_NULL : STR_EMPTY : STR_UNDEFINED :وصلة غير معرفة -STR_JUST_NOTHING :فارغ +STR_JUST_NOTHING :لا شيئ # Cargo related strings # Plural cargo name @@ -31,13 +31,13 @@ STR_CARGO_PLURAL_PASSENGERS :ركاب STR_CARGO_PLURAL_COAL :فحم STR_CARGO_PLURAL_MAIL :بريد STR_CARGO_PLURAL_OIL :نفط -STR_CARGO_PLURAL_LIVESTOCK :مواشي +STR_CARGO_PLURAL_LIVESTOCK :ماشيه STR_CARGO_PLURAL_GOODS :بضائع STR_CARGO_PLURAL_GRAIN :حبوب STR_CARGO_PLURAL_WOOD :خشب STR_CARGO_PLURAL_IRON_ORE :خام حديد -STR_CARGO_PLURAL_STEEL :حديد -STR_CARGO_PLURAL_VALUABLES :مدخرات +STR_CARGO_PLURAL_STEEL :صلب +STR_CARGO_PLURAL_VALUABLES :مقتنيات ثمينه STR_CARGO_PLURAL_COPPER_ORE :منجم نحاس STR_CARGO_PLURAL_MAIZE :ذرة STR_CARGO_PLURAL_FRUIT :فواكة @@ -49,53 +49,53 @@ STR_CARGO_PLURAL_WATER :ماء STR_CARGO_PLURAL_WHEAT :قمح STR_CARGO_PLURAL_RUBBER :مطاط STR_CARGO_PLURAL_SUGAR :سكر -STR_CARGO_PLURAL_TOYS :العاب +STR_CARGO_PLURAL_TOYS :دُمَي STR_CARGO_PLURAL_CANDY :حلويات STR_CARGO_PLURAL_COLA :كولا -STR_CARGO_PLURAL_COTTON_CANDY :الحلاوة القطنية +STR_CARGO_PLURAL_COTTON_CANDY :سكر نبات STR_CARGO_PLURAL_BUBBLES :فقاعات STR_CARGO_PLURAL_TOFFEE :توفي STR_CARGO_PLURAL_BATTERIES :بطاريات STR_CARGO_PLURAL_PLASTIC :بلاستيك -STR_CARGO_PLURAL_FIZZY_DRINKS :شراب مخفوق +STR_CARGO_PLURAL_FIZZY_DRINKS :مشروبات غازيه # Singular cargo name STR_CARGO_SINGULAR_NOTHING : -STR_CARGO_SINGULAR_PASSENGER :ركاب +STR_CARGO_SINGULAR_PASSENGER :راكب STR_CARGO_SINGULAR_COAL :فحم STR_CARGO_SINGULAR_MAIL :بريد STR_CARGO_SINGULAR_OIL :نفط -STR_CARGO_SINGULAR_LIVESTOCK :ماشية +STR_CARGO_SINGULAR_LIVESTOCK :ماشيه STR_CARGO_SINGULAR_GOODS :بضائع STR_CARGO_SINGULAR_GRAIN :حبوب STR_CARGO_SINGULAR_WOOD :خشب STR_CARGO_SINGULAR_IRON_ORE :خام الحديد -STR_CARGO_SINGULAR_STEEL :حديد +STR_CARGO_SINGULAR_STEEL :صلب STR_CARGO_SINGULAR_VALUABLES :مقتنيات ثمينة STR_CARGO_SINGULAR_COPPER_ORE :خام نحاس STR_CARGO_SINGULAR_MAIZE :ذرة STR_CARGO_SINGULAR_FRUIT :فواكة STR_CARGO_SINGULAR_DIAMOND :جواهر STR_CARGO_SINGULAR_FOOD :طعام -STR_CARGO_SINGULAR_PAPER :اوراق +STR_CARGO_SINGULAR_PAPER :ورق STR_CARGO_SINGULAR_GOLD :ذهب STR_CARGO_SINGULAR_WATER :ماء STR_CARGO_SINGULAR_WHEAT :قمح STR_CARGO_SINGULAR_RUBBER :مطاط STR_CARGO_SINGULAR_SUGAR :سكر -STR_CARGO_SINGULAR_TOY :لعبة +STR_CARGO_SINGULAR_TOY :دُمِيه STR_CARGO_SINGULAR_CANDY :حلويات STR_CARGO_SINGULAR_COLA :كولا -STR_CARGO_SINGULAR_COTTON_CANDY :حلاوة قطنية +STR_CARGO_SINGULAR_COTTON_CANDY :سكر نبات STR_CARGO_SINGULAR_BUBBLE :فقاعات STR_CARGO_SINGULAR_TOFFEE :توفي STR_CARGO_SINGULAR_BATTERY :بطاريات STR_CARGO_SINGULAR_PLASTIC :بلاستيك -STR_CARGO_SINGULAR_FIZZY_DRINK :مشروب مخفوق +STR_CARGO_SINGULAR_FIZZY_DRINK :مشروب غازى # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA}راكب +STR_QUANTITY_PASSENGERS :{COMMA} راكب STR_QUANTITY_COAL :{WEIGHT_LONG} من الفحم STR_QUANTITY_MAIL :{COMMA} صندوق من البريد STR_QUANTITY_OIL :{VOLUME_LONG} من النفط @@ -199,12 +199,14 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}حصان STR_UNITS_POWER_METRIC :{COMMA}حصان STR_UNITS_POWER_SI :{COMMA}ك واط +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}ت STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}طن STR_UNITS_WEIGHT_SHORT_SI :{COMMA}كجم STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} طن STR_UNITS_WEIGHT_LONG_SI :{COMMA}كجم +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}غال STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}ل STR_UNITS_VOLUME_SHORT_SI :{COMMA}م3 @@ -222,7 +224,7 @@ STR_LIST_FILTER_TOOLTIP :{BLACK} اخت STR_TOOLTIP_SORT_ORDER :{BLACK} اختر طريقة الترتيب - تنازلي / تصاعدي STR_TOOLTIP_SORT_CRITERIA :{BLACK} اختر نوع الترتيب -STR_TOOLTIP_FILTER_CRITERIA :{BLACK} اختر معايير الفلترة +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد معايير المُرَشِح STR_BUTTON_SORT_BY :{BLACK} رتب بـ STR_BUTTON_LOCATION :{BLACK}الموقع STR_BUTTON_RENAME :{BLACK}اعادة تسمية @@ -231,13 +233,16 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلا STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان الاطار- اسحب لتحريك الاطار STR_TOOLTIP_SHADE :{BLACK}نافذة الظل - تعرض العنوان فقط STR_TOOLTIP_DEBUG :{BLACK}اظهر معلومات صائد اخطاء الاضافات الجديدة. -STR_TOOLTIP_STICKY :{BLACK}خصص هذا الاطار بان يبقى مفتوح عند اغلاق كافة الاطارات +STR_TOOLTIP_STICKY :{BLACK}علم هذه النافذة كغير قابلة للإقفال باستخدام زر إغلاق كل النوافذ, اضغط مع Ctrl لجعل الأمر إفتراضيا STR_TOOLTIP_RESIZE :{BLACK}اضغط واسحب لتعديل حجم الاطار STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}تبديل حجم الاطار كبير / صغير STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}شريط العرض- فوق /تحت STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}عمود التحريك - يمين/يسار STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}هدم المباني و غيرها في مربع من الأرض. +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}افتراضي STR_BUTTON_CANCEL :{BLACK}الغاء @@ -345,10 +350,9 @@ STR_SCENEDIT_FILE_MENU_QUIT :انهاء ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :خيارات اللعبة -STR_SETTINGS_MENU_CONFIG_SETTINGS :اعدادات متقدمة +STR_SETTINGS_MENU_GAME_OPTIONS :إعدادات اللعبه STR_SETTINGS_MENU_SCRIPT_SETTINGS :الذكاء الصناعي/ اعدادات اللعبة -STR_SETTINGS_MENU_NEWGRF_SETTINGS :إعدادات جرافيك جديده +STR_SETTINGS_MENU_NEWGRF_SETTINGS :إعدادات اﻹضافات STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :خيارات الشفافية STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :عرض اسماء المدن STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :عرض اسماء المحطات @@ -451,7 +455,7 @@ STR_ABOUT_MENU_SPRITE_ALIGNER :موائم ال STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :اضهار /اخفاء مربح الحوارات/الخيارات ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -467,22 +471,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -621,7 +643,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}اختي STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}تشغيل / ايقاف العشوائي STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}اظهار اطار اختيار الموسيقى -STR_ERROR_NO_SONGS :{WHITE}لا تحتوي مجموعة الموسيقى المختارة على اغاني. لن تعزف اي موسيقى. +STR_ERROR_NO_SONGS :{WHITE}لا تحتوى قاعده الموسيقى المُختاره على اى اغانى. لن تُعزَف اى اغانى # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}برنامج اختيار الموسيقى @@ -733,7 +755,7 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}المواطنون يحتفلون ... {}بوصول اول سفينة الى {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}الأهالي يحتفلون . . . {}بوصول أول طائرة الى {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تحطم قطار! {}{COMMA} مات في حريق بعد الحادث +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تحطم قطاراً!{}{COMMA} مات فى الحريق بعد الحادث STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}العربة تحطمت !{}السائق توفي في شعلة الحريق بعد الاصطدام بقطار STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}العربة تحطمت !{}{COMMA} توفي في شعلة الحريق بعد الاصطدام بقطار STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}تحطم طائرة !{}{COMMA}ماتوا في الحريق بمطار {STATION} @@ -785,13 +807,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} تنتظر في حوض السفن STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} تنتظر في الحظيرة -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} لديها اوامر قليلة جدا في جدولها STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} لديها امر غير صالح STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} لديها امر مكرر STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} لديها محطة غير صالحة في القائمة -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} لدبها ضمن الطلبات مطارا قصير المدرج STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} اصبحت قديمة STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} اصبحت قديمة جدا @@ -831,7 +852,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}لصق STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}لصق شاشة العرض هذة للشاشة الرئيسية # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}خيارات +STR_GAME_OPTIONS_CAPTION :{WHITE}إعدادات اللعبه STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}وحدة العملة STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدة العملة @@ -867,10 +888,6 @@ STR_GAME_OPTIONS_CURRENCY_EEK :كرونا اس STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ... ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}العربات البرية STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}اختار الجانب الذي تسير فيه المركبات STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :القيادة على اليسار @@ -906,11 +923,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :كتالوني STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}حفظ آلي STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}اختار مدة الحفظ الآلي +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بدون STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :كل شهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :كل 3 اشهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :كل 6 اشهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :كل سنة +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}لغة STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}اختر لغة الواجهه @@ -922,8 +941,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}دقة STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اختر دقة الشاشة STR_GAME_OPTIONS_RESOLUTION_OTHER :اخرى -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}صيغة حفظ الشاشة -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}اختر صيغة حفظ الشاشة + STR_GAME_OPTIONS_BASE_GRF :{BLACK} الواجهة الرسومية الاساسية STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK} اختر مجموعة الواجهة الرسومية @@ -934,11 +952,12 @@ STR_GAME_OPTIONS_BASE_SFX :{BLACK}قاعد STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}اختر الاصوات الاساسية للاستخدام STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية حول مجوعة الصوت -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}مجموعة الموسيقى الاساسية +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}قاعده الموسيقى الاساسيه STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}اختر الموسيقى الاساسية التي تود استخدامها STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح{P ""} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية عن الموسيقى الاساسية +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}فشل في استرداد قائمة الدقة المدعومة STR_ERROR_FULLSCREEN_FAILED :{WHITE}فشل تشغيل نمط الشاشة الكاملة # Custom currency window @@ -1024,9 +1043,13 @@ STR_CITY_APPROVAL_HOSTILE :معاد STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}الاعدادات المتقدمة +# Settings tree window +STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل +STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK} فئة: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}نوع: +STR_CONFIG_SETTING_RESTRICT_BASIC :اﻹعدادات الاساسيه STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}احصر القائمة على انواع اعدادات محددة STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :كل الاعدادات @@ -1035,6 +1058,8 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :اعدادات STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :اعدادات اللعبة (مخزن في المحفوظات, يؤثر على اللعبة الحالية فقط) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :اعدادات الشركة (مخزن في المحفوظات, يؤثر على الالعاب الجديدة فقط) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :اعدادات الشركة (مخزن في المحفوظات: يؤثر على الشركة الحالية فقط) +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}عرض جميع النتائج بالنسبة للإعداد {}{SILVER} الفئة {BLACK} إلى {WHITE}{STRING} {BLACK}و{SILVER}نوع {BLACK} إلى{WHITE} جميع انواع الإعدادات +STR_CONFIG_SETTINGS_NONE :{WHITE} - بدون - STR_CONFIG_SETTING_OFF :قفل STR_CONFIG_SETTING_ON :فتح @@ -1053,7 +1078,6 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :متوسط STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :يمين -STR_CONFIG_SETTING_BUILDONSLOPES :السماح بالبناء على المنحدرات و السواحل: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :السماح باعادة بناء التلال تحت المباني, الطرق, الخ .-الانحدار الذاتي- {STRING} STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING} @@ -1062,10 +1086,7 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :موديل تس STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :نمط تسارع عربات الطريق: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :منع القطارات والسفن من الدوران بزاوية تسعين درجة : {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :السماح بربط محطتين غير متجاورتين : {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :أستخدام خوارزمية التحميل المحسنه: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :تحميل القطارات بالتدريج: {STRING} STR_CONFIG_SETTING_INFLATION :التضخم: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :أوصل الحموله للمحطه إذا كان هناك حاجة فقط: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :طريقة بناء المصانع الأولية يدوية : {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :بدون STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ككل المصانع الأخرى @@ -1077,7 +1098,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :اوامر ال STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :قرب النهاية STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :وسط STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :النهاية القصوى -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :تسلسل عربات الطريق - بالتأثير الكمي : {STRING} STR_CONFIG_SETTING_AUTOSCROLL :حرك الشاشة عندما تكون المؤشر على الحافة: {STRING} STR_CONFIG_SETTING_BRIBE :السماح برشوة السلطات االمحليه: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :السماح بشراء حقوق النقل الحصري: {STRING} @@ -1089,10 +1109,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES :عدد الطا STR_CONFIG_SETTING_PLANE_CRASHES_NONE :بدون STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :منخفض STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :طبيعي -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات العبور خلال المواقف المملوكة داخل المدن {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :السماح بمرور العربات خلال المحطات المملوكة للمنافسين: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :السماح ببناء محطات متلاصقة{STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :السماح بتعدد محركات NewGFR {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغير هذا الخيار غير متاح عندما يكون هناك عربات STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :صيانة البنية التحتية: {STRING} @@ -1110,24 +1128,38 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY :التجديد STR_CONFIG_SETTING_POPULATION_IN_LABEL :أعرض عدد السكان مع الاسم على العلامة: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :سمك الخطوط في العرض: {STRING} +STR_CONFIG_SETTING_LANDSCAPE :الارض: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :مولد الأرض: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :المكون الاصلي يعتمد على قواعد الجرفكس,ويشكل اراض ثابته,مكوون تيراجنسس يعتمد على المكون الأساسي مع متحكمات اسلس STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :الأصلي STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :مرتفعات منزلقة +STR_CONFIG_SETTING_TERRAIN_TYPE :نوع الارض: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) مستوى الهضبات في الارض +STR_CONFIG_SETTING_INDUSTRY_DENSITY :الكثافة الصناعية: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :إختر مقدار الصناعات التي يجب تكوينها وعلى اي مستوى يجب ان تكون خلال اللعبة STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط الثلج: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :خشونة التضاريس (سفر التكوين فقط ) :({STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :تحكم على اي ارتفاع يبدأ نزول الثلج في المناطق القطبية,تؤثر الثلوج على مستوى تطور القطاع الصناعي ونمو المدن +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :خشونة التضاريس (صفر التكوين فقط ) :({STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only)إختر تكرار الهضبات: الاراض المستويه تحتوي على البضع منها,هضبات موزعه عرضيا اكثر,الاراض الوعرة تحتوي الكثير من الهضاب,التي من الممكن ان تكون متكررة STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :ناعم جدا STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :ناعم STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :خشن STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :خشن جدا +STR_CONFIG_SETTING_VARIETY :توزيع منوع: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only)التحكم بالخريطة هل تحتوي علىجبال ومناطق مسطحه, لأن هذا الإعداد يجعل الخارطة مستوية, هنالك إعدادات أخرى يجب ان تغير إلى الجبال +STR_CONFIG_SETTING_RIVER_AMOUNT :حجم النهر: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :اختر عدد الأنهر لتكوينها STR_CONFIG_SETTING_TREE_PLACER :طريقة وضع الاشجار: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :إختر توزيع الشجر على الخريطة: 'Original' تبعثر الشجر عشوائيا. 'Improved' زرعهم في مجموعات STR_CONFIG_SETTING_TREE_PLACER_NONE :بدون STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :الأصلي STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :المحسن +STR_CONFIG_SETTING_ROAD_SIDE :السيارات: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :إختر جهة القيادة STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :اتجاة خريطة المرتفعات: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :عكس عقارب الساعة STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :مع عقارب الساعة STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :الأرتفاع الأعلى في محرر الخريطة لسطح المستوي: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :السماح بتعديل الحدود الحرة للخريطة: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}مربع او اكثر غير فارغ في الحدود الشمالية STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}مربع او اكثر من حدود الخريطة لا يكون بحر @@ -1158,15 +1190,14 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :تصفح بالزر الايسر: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :حفظ تلقائي : {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :اختر الوقت بين كل عملية حفظ اتوماتيكية + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :استخدم {STRING} نمط التاريخ لاسم اللعبة المحفوظة STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2008 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :قصير - 31 - 12 - 2008 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ايزو 31-12-2008 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :النوافذ القياسية للاضافة غير محددة: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :نوافذ الدوس -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :نوافذ الوندوز - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :إيقاف اللعبة تلقائيا عند بدأ لعبة جديدة: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :عندمل توقف أسمح: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :لا تصرف @@ -1204,10 +1235,10 @@ STR_CONFIG_SETTING_SOUND_AMBIENT :مؤثرات: { STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :شغل مؤثرات صوتية في المناظر و المصانع و المدن STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :عطل ادوات البناء عند عدم وجود عربات متاحة لها: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :الحد الأعلى لعدد القطارات لكل لاعب: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل لاعب: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل لاعب: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل لاعب: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :الحد الأعلى لعدد القطارات لكل شركة: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل شركة: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل شركة: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل شركة: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :حظر القطارات على الحاسوب: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :حظر العربات على الكمبيوتر: {STRING} @@ -1252,7 +1283,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :ممتلئ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :الاخبار الملونة تظهر في: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :السماح بأقتصاد ثابت )تغيرات صغيرة اكثر): {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات المنافسة: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :نوع الاشارة الذي يبنى قياسيا: {STRING} @@ -1301,7 +1332,6 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :عادي STR_CONFIG_SETTING_TOWN_GROWTH_FAST :سريع STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :سريع جدا STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضاعف المدن المبدئي: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :ازالة العوالق اثناء ترميم الطرق: {STRING} @@ -1310,25 +1340,28 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :ازالة ال -STR_CONFIG_SETTING_GUI :{ORANGE}النظام البيني -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}البناء +STR_CONFIG_SETTING_GRAPHICS :رسوميات {ORANGE} +STR_CONFIG_SETTING_SOUND :{ORANGE}الصوت +STR_CONFIG_SETTING_INTERFACE :{ORANGE}النظام البيني +STR_CONFIG_SETTING_INTERFACE_GENERAL :عموم{ORANGE} +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :مجالات رؤية {ORANGE} +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}البناء +STR_CONFIG_SETTING_ADVISORS :{ORANGE}أخبار\ مستشارون +STR_CONFIG_SETTING_COMPANY :شركة{ORANGE} +STR_CONFIG_SETTING_ACCOUNTING :حسابات{ORANGE} STR_CONFIG_SETTING_VEHICLES :{ORANGE}المركبات -STR_CONFIG_SETTING_STATIONS :{ORANGE}المحطات -STR_CONFIG_SETTING_ECONOMY :{ORANGE}الأقتصاد +STR_CONFIG_SETTING_VEHICLES_PHYSICS :فيزياء{ORANGE} +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE} المسارات +STR_CONFIG_SETTING_LIMITATIONS :حدود {ORANGE} +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE} كوارث\حوادث +STR_CONFIG_SETTING_GENWORLD :تكوين عالم {ORANGE} +STR_CONFIG_SETTING_ENVIRONMENT :بيئة {ORANGE} +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :سلطات {ORANGE} +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE} مدن +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE} مصانع +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :توزيع البضائع{ORANGE} STR_CONFIG_SETTING_AI :{ORANGE}المتنافسين -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}عرض الخيارات -STR_CONFIG_SETTING_INTERACTION :{ORANGE} التفاعل -STR_CONFIG_SETTING_SOUND :{ORANGE}الصوت -STR_CONFIG_SETTING_NEWS :{ORANGE}الاخبار و الرسائل -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}الإشارات -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE} طريقة التحميل STR_CONFIG_SETTING_AI_NPC :{ORANGE} لاعبين الحاسوب -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE} التجديد التلقائي -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE} الصيانة -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE} المسارات -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE} قطارات -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE} مدن -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE} مصانع STR_CONFIG_SETTING_PATHFINDER_OPF :اصلي STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1365,10 +1398,11 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}العب STR_INTRO_SCENARIO_EDITOR :{BLACK}محرر الخريطة STR_INTRO_MULTIPLAYER :{BLACK}لعب جماعي -STR_INTRO_GAME_OPTIONS :{BLACK}خيارات اللعبة -STR_INTRO_ADVANCED_SETTINGS :{BLACK}الاعدادات المتقدمة +STR_INTRO_GAME_OPTIONS :{BLACK}إعدادات اللعبه +STR_INTRO_HIGHSCORE :{BLACK}قائمه المتفوقين STR_INTRO_NEWGRF_SETTINGS :{BLACK} اعدادات NewGRF -STR_INTRO_ONLINE_CONTENT :{BLACK} ابحث عن المحتوى على الانتر نت +STR_INTRO_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه +STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى STR_INTRO_QUIT :{BLACK}خروج STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}بدأ لعبة جديدة @@ -1384,8 +1418,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}اختي STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}اختيار نمط الألعاب STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}عرض الاعدادات المتقدمة -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK} عرض اعدادات newGRF +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث STR_INTRO_TOOLTIP_QUIT :{BLACK}اغلاق'OpenTTD' @@ -1410,19 +1443,19 @@ STR_OSNAME_OS2 :او اس/2 STR_OSNAME_SUNOS :صن # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}ترك اللعبة -STR_ABANDON_GAME_QUERY :{YELLOW}هل انت متأكد انك تود ترك هذة اللعبة و اغلاقها؟ +STR_ABANDON_GAME_CAPTION :{WHITE}إغلاق اللعبه +STR_ABANDON_GAME_QUERY :{YELLOW}أمتأكد من رغبتك فى إغلاق اللعبه؟ STR_ABANDON_SCENARIO_QUERY :{YELLOW}هل تريد الخروج من انشاء الخريطة # Cheat window STR_CHEATS :{WHITE}اسرار STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل -STR_CHEATS_WARNING :{BLACK}تحذير! أنت على وشك أن تخون منافسيك. هذا الخيانة ستبقى عار عليك الى الأبد. +STR_CHEATS_WARNING :{BLACK}تحذير! انت على وشك ان تغش منافسيك. إعلم انهم سيتذكرون عليك هذا العار للإبد STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}الجرافة السحرية - لازالة المصانع و الاجسام غير القابلة للازالة.{ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}يمكن للانفاق ان تتقاطع: {ORANGE}{STRING} -STR_CHEAT_NO_JETCRASH :{LTBLUE}الطائرات النفاثة لن تتحطم كثيرا في المطارات الصغيرة {ORANGE} {STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}الطائرات النفاثه لا تتحطم (كثيراً) فى المطارات الصغيره: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :مناطق معتدلة STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :مناطق ثلجية STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :مناطق مدارية @@ -1471,6 +1504,7 @@ STR_LIVERY_FREIGHT_TRAM :عربة ترا STR_FACE_CAPTION :{WHITE}اختيار الوجة STR_FACE_CANCEL_TOOLTIP :{BLACK}الغاء اختيار الوجة الجديد STR_FACE_OK_TOOLTIP :{BLACK}اقبل الوجة الجديد +STR_FACE_RANDOM :{BLACK}عشوائي STR_FACE_MALE_BUTTON :{BLACK}رجل STR_FACE_MALE_TOOLTIP :{BLACK}اختر وجة رجل @@ -1552,7 +1586,7 @@ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}عمل STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}اللغة:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}مجموعة المربعات:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}حجم الخريطة: {WHITE}{COMMA}x{COMMA} -STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}نسخة الخادم:{WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}نسخه اللعبه لهذا الخادم: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}عنوان الخادم:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}تاريخ البداية:{WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}التاريخ الحالي:{WHITE}{DATE_SHORT} @@ -1566,7 +1600,7 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}أنضم STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}حدث الخادم STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}حدث معلومات الخادم -STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}أبحث عن خادم +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}إبحث عن خوادم STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}أبحث في الشبكة عن خادم STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}اضف خادم - سيرفر STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}اضف خادم (سيرفر) و الذي سوف يفحص اذا كان هناك لعبة قيد التشغيل حاليا @@ -1585,7 +1619,7 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}ضع ك STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}احم لعبتك برقم سري حتى لا تصبح لعبتك مفتوحة للجميع STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM}عميل -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}اقصى عدد عملاء: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}اقصى عدد للعملاء: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}أختر أقصى عدد للعملاء STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM}شركة STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}أقصى عدد شركات: @@ -1683,8 +1717,8 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}فصل -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمي، أدخل الرقم السر -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركة محمية ، أدخل الرقم السري +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمى. من فضلك ادخل كلمه المرور +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركه محميه. من فضلك ادخل كلمه المرور # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}قائمة العملاء @@ -1703,7 +1737,7 @@ STR_NETWORK_SERVER :خادم STR_NETWORK_CLIENT :عميل STR_NETWORK_SPECTATORS :المشاهدين -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل قدر المال الذي تود اعطائه +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل رقم المبلغ الذى تود إعطائه # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}لا تحفظ كلمة المرور المدخلة @@ -1800,7 +1834,7 @@ STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}اقفل STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}يتم بدأ الخادم من جديد ... {} الرجاء الأنتظار # Content downloading window -STR_CONTENT_TITLE :{WHITE}تحميل المحتوى +STR_CONTENT_TITLE :{WHITE}تنزيل المحتوى STR_CONTENT_TYPE_CAPTION :{BLACK} نوع STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK} نوع المحتوى STR_CONTENT_NAME_CAPTION :{BLACK} الاسم @@ -1812,7 +1846,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK} اخت STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} ضع علامة على التحديثات للمحتويات الموجودة و التي سيتم تحميلها STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها -STR_CONTENT_FILTER_TITLE :{BLACK} فلتر: +STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح: STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} ابدأ تحميل المحتويات المختارة STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER} حجم البيانات التي سيتم تحميلها: {WHITE}{BYTES} @@ -2121,7 +2155,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}صغير STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}وسط STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}كبير STR_FOUND_TOWN_SIZE_RANDOM :{BLACK} عشوائي -STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}اختر حجم المدينة +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}حدد حجم المدينه STR_FOUND_TOWN_CITY :{BLACK}مدينة STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK} المدن الكبيرة تنمو اسرع من المدن العادية. {} كلما كانت اكبر عند انشائها, بالاعتماد على الاعدادات. @@ -2179,6 +2213,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}الشحنة المقبولة: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حدود سرعة سكة الحديد: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}حدود سرعه الطريق: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :صخور @@ -2275,7 +2310,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-2013 فريق النسخة المفتوحة +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2015 فريق النسخة المفتوحة # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة @@ -2294,6 +2329,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}حفظ STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}احفظ اللعبة الحالية، بواسطة الاسم المختار STR_SAVELOAD_LOAD_BUTTON :{BLACK}تحميل STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}تحميل اللعبة المختارة +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK} حمل خارطة التضاريس STR_SAVELOAD_DETAIL_CAPTION :{BLACK}تفاصيل اللعبة STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}لا توجد معلومات متاحة STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2311,10 +2347,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}عدد STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK} ارتفاع خط الثلج STR_MAPGEN_SNOW_LINE_UP :{BLACK}ارفع خط الثلج مستوى واحد STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}خفض خط الثلج مستوى واحد -STR_MAPGEN_RANDOM_SEED :{BLACK}مرجع عشوائي -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}اضغط لادخال مرجع عشوائي -STR_MAPGEN_RANDOM :{BLACK}عشوائي -STR_MAPGEN_RANDOM_HELP :{BLACK}غير المرجع العشوائي لتوليد تضاريس الخريطة STR_MAPGEN_LAND_GENERATOR :{BLACK}مولد الخريطة: STR_MAPGEN_TREE_PLACER :{BLACK} لوغاريثم الشجر: STR_MAPGEN_TERRAIN_TYPE :{BLACK} نوع التضاريس @@ -2341,7 +2373,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}اسم STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}الحجم: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}ادخل مرجع عشوائي STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}غير مستوى خط الثلج STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}غير سنة البداية @@ -2360,7 +2391,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}غير STR_GENERATION_WORLD :{WHITE}توليد الخريطة STR_GENERATION_ABORT :{BLACK}ألغي STR_GENERATION_ABORT_CAPTION :{WHITE}ايقاف توليد الخريطة -STR_GENERATION_ABORT_MESSAGE :{YELLOW}هل انت متأكد بأنك ترغبب في ايقاف توليد الخريطة؟ +STR_GENERATION_ABORT_MESSAGE :{YELLOW}هل انت متأكد بأنك ترغب في ايقاف توليد الخريطة؟ STR_GENERATION_PROGRESS :{WHITE}{NUM}% انتهى STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK} مولد الخريطة @@ -2370,15 +2401,15 @@ STR_GENERATION_OBJECT_GENERATION :{BLACK}صانع STR_GENERATION_CLEARING_TILES :{BLACK}مولد المناطق الخشنة والصخرية STR_GENERATION_SETTINGUP_GAME :{BLACK}تجهيز لعبة STR_GENERATION_PREPARING_TILELOOP :{BLACK} تشغيل المتكررة -STR_GENERATION_PREPARING_GAME :{BLACK}يتك تجهيز اللعبة +STR_GENERATION_PREPARING_GAME :{BLACK}يُجَهِز اللعبه # NewGRF settings -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}اعدادات NewGRF +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}إعدادات اﻹضافات STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}تفاصيل الاضافات الجديدة STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}اضافة جديدة فعالة STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}ملفات غير فعالة لاضافات جديدة STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}اختر مجموعة الخواص المحددة مسبقا: -STR_NEWGRF_FILTER_TITLE :{ORANGE}نص المرشح +STR_NEWGRF_FILTER_TITLE :{ORANGE}مُرَشِح: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}فتح مجموعة الاعدادات المسجلة STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}حفظ مجموعة الاعدادات STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}حفظ القائمة الحالية كمجموعة اعدادات @@ -2395,6 +2426,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}تحري STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}حرك الملف المختار الى الأعلى STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}تحريك للأسفل STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}حرك الملف المختار الى الاسفل في القائمة +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}ترقية +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK} ترقية ملفات NewGRF التي لديك نسخه جديده منها STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}قائمة ملفات NewGRF المركبة. اضغط على الملف لتغييرة. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}اضبط الاعدادات @@ -2418,6 +2451,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}لم يت STR_NEWGRF_SETTINGS_DISABLED :{RED}معطل STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}متعارض مع هذا اللإصدار من Openttd +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{BLACK}حفظ الإعداد المسبق +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}لائحة الإعدادات المسبقة. اختر واحدة لنسخها للإسم المحفوظ بالإسفل +STR_SAVE_PRESET_TITLE :{BLACK}أدخل اسم للإعداد المسبق +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}الإسم المختار لحفظ الإعداد المسبق +STR_SAVE_PRESET_CANCEL :{BLACK}إلغاء +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}لا تغير الإعداد المسبق +STR_SAVE_PRESET_SAVE :{BLACK}إحفظ +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK} احفظ الإعدادات للإسم المختار حاليا + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}غير خصائص الاضافات الجديدة STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}اغلق @@ -2448,7 +2491,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}العف STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نابع للعفريتة الطبيعية التالية، تجاوز اي عفريتة موقوفة/ مصبوغة/مخطوطة و انهي في البداية. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}عرض العفريتة المختارة حاليا. يتم تجاهل الموائمة عند رسم هذا العفريت. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}حرك العفريتة في الجوار، غير الاحداثيات س ، ص. -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}احداث س: {NUM}، احداث ص: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}اختر عفريتة STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}اختر عفريتة من اي مكان في الشاشة. @@ -2476,7 +2518,7 @@ STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}تحذير! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}ان على وشك ان تحدث تغييرات في لعبة شغالة؛ قد يتسبب في توقف OpenTTD.{} هل انت متأكد تماما من هذا؟ +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}انت على وشك ان تحدث تغييرات في لعبة مفتوحه. قد يتسبب هذا في حدوث إنهيار.{} امتأكد من رغبتك فى هذا؟ STR_NEWGRF_DUPLICATE_GRFID :{WHITE}لا يمكن اضافة الملف: نسخة سابقة منه مضافة STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}الملف المطابق غير موجود (ملف متوافق من NewGRFحمل) @@ -2510,6 +2552,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} لـ<ح STR_NEWGRF_INVALID_ENGINE :<موديل العربة غير صالح> STR_NEWGRF_INVALID_INDUSTRYTYPE :<المصنع غير صالح> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<مركبه غير صالحه> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}بحث اضافات جديدة STR_NEWGRF_SCAN_MESSAGE :{BLACK}تحديث الاضافات. وقت البحث يعتمدعلى عدد الاضافات. من الممكن ان يستغرق وقتا اطول... @@ -2554,10 +2599,10 @@ STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}حدود STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}وسط الشاشة الاساسية على موقع المدينة STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}بلدية المدينة STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}عرض معلومات البلدية -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}تغيير اسم المدينة +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}غير إسم المدينه STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}توسيع المدينة -STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}زيادة حجم المدينة +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}ازد حجم المدينه STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}حذف STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}حذف المدينة كليا @@ -2599,7 +2644,8 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :معلومات STR_GOAL_QUESTION_CAPTION_WARNING :تحذير STR_GOAL_QUESTION_CAPTION_ERROR :خطا -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}العروض @@ -2625,7 +2671,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}لا ي # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}انتظار: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} نهاية الطريق في {STATION}) @@ -2824,6 +2869,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}أحذف STR_GROUP_RENAME_TOOLTIP :{BLACK}أعد تسمية المجموعة المختارة STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}اضغط لحماية المجموعة من التغيير الكلي للعربات +STR_QUERY_GROUP_DELETE_CAPTION :حذف المجموعه{WHITE} +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}هل انت واثق من حذف هذه المجموعه مع كل أحفادها + STR_GROUP_ADD_SHARED_VEHICLE :اضافة عربات مشتركة STR_GROUP_REMOVE_ALL_VEHICLES :أزل جميع المركبات @@ -2885,6 +2933,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK} اعا STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع السفينة STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع الطائرة + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}اعادة تسمية عربات القطار STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}اعادة تسمية العربة STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}اعادة تسمية نوع السفينة @@ -2987,6 +3038,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :مركبات STR_REPLACE_VEHICLE_SHIP :سفن STR_REPLACE_VEHICLE_AIRCRAFT :طائرات + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK} اختر نوع المحرك لاستبدالة STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK} اختر نوع المحرك المراد إحلاله محل المحرك المختار في القائمة اليسرى @@ -3026,9 +3078,9 @@ STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل الطائرة الى حظيرة الصيانة - مفتاح التحكم (كنترول) + الضغط يرسلها للصيانة فقط STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}هذا سوف يشتري نسخة عن قطار بكل عرباته. مفتاح التحكم + الضغط سوف يشارك الاوامر. -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}هذا سوف يشتري عربة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر. +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}هذا سوف يشتري عربة مُطابِقة للمُختاره. مفتاح كنترول+النقر بالفأره سيستنسخ نفس الاوامر الاوامر الى العربه الجديده. مفتاح شفت+النقر بالفأره سيحسب التكلفه المُقدره ويعرضها لك STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}هذا سوف يشتري سفينة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر. -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}هذا سوف يشتري طائرة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر. +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}هذا سوف يشتري طائرة مطابقة للمختارة. مفتاح كنترول+نقره بالفأره سينسخ نفس اوامر الطائره السابقه الى الطائره الجديده. مفتاح شفت+نقره بالفأره سيحسب التكلفه المُقَدره ويعرضها لك STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}اجبر القطار على التحرك بدون انتظار الاشارة الخضراء @@ -3325,33 +3377,35 @@ STR_TIMETABLE_TOOLTIP :{BLACK}جدول STR_TIMETABLE_NO_TRAVEL :لا رحيل STR_TIMETABLE_NOT_TIMETABLEABLE :المغادرة (ذاتي: بواسطة الامر اليدوي التالي) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (ليس هناك جدولة) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :سافر بمعدل {2:VELOCITY} (بدون جدوله) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (غير مجدوله) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :سافر(بدون جدول زمني) مع تقريبا {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :مسافر لـ {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :سافر لي {STRING} بمعدل {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :سافر(إلى {STRING}, بدون جدول زمني) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :سافر (إلى {STRING}, بدون الجدول الزمني) مع تقريبا {VELOCITY} STR_TIMETABLE_STAY_FOR :ويبقى لـ {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :ويسافر لـ {STRING} STR_TIMETABLE_DAYS :{COMMA}يوم STR_TIMETABLE_TICKS :{COMMA} علامة STR_TIMETABLE_TOTAL_TIME :{BLACK}جدولة الاوامر هذه ستأخذ {STRING} لنهاية -STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} للاكمال (لايشمل كل الجدولة). +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} لتكتمل (لايشمل كل الجدولة) -STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه العربة تعمل حسب الجدولة في الوقت المحدد -STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربة {STRING} متاخرة حاليا عن الجدولة -STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربة {STRING} متقدمة عن الجدولة +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه العربة تعمل حسب الجدولة في الوقت المُحَدَد +STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربه {STRING} مُتاخِرة حاليا عن الجدوله +STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربه {STRING} مُتَقَدِمه عن الجدوله STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}جدولة الاعمال لم تبدأ بعد -STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال سوف تبدأ في {STRING} +STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال ستبدأ فى {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}تاريخ البدأ STR_TIMETABLE_CHANGE_TIME :{BLACK}غير الوقت -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقة الامر +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقه هذا الامر -STR_TIMETABLE_CLEAR_TIME :{BLACK}مسح الوقت -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}مسح مقدار الوقت للامر +STR_TIMETABLE_CLEAR_TIME :{BLACK}إمسح الوقت +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}إمسح مقدار الزمن لهذا الامر -STR_TIMETABLE_CHANGE_SPEED :{BLACK}غير تحديد السرعة +STR_TIMETABLE_CHANGE_SPEED :{BLACK}غير حدود السرعه STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}غير السرعة القصوى للامر المختار STR_TIMETABLE_CLEAR_SPEED :{BLACK}ازل تحديد السرعة @@ -3400,10 +3454,10 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}عرض STR_ERROR_AI_NO_AI_FOUND :لا يوجد اضافات مناسبة للتحميل {} هذه اضافة غبية ولن تفعل شيئا لك {} تستطيع تحميل اضافات من الشبكة عن طريق نظام التحميل STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}واحد من الذكاء الصناعي فشل. الرجاء ابلاغ المبرمج عنه مصحوبا بصورة من شاشة مصحح الاخطاء. -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاشة اخطاء الذكاء الصناعي متوفرة فقط في الخادم +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاشة اخطاء الذكاء الصناعي متوفرة فقط للخادم # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}اعداد الذكاء الصناعي +STR_AI_CONFIG_CAPTION :{WHITE}إعدادات الذكاء الصناعي STR_AI_CONFIG_HUMAN_PLAYER :لاعب انساني STR_AI_CONFIG_RANDOM_AI :ذكاء صناعي عشوائي @@ -3470,7 +3524,7 @@ STR_ERROR_GAME_SAVE_FAILED :{WHITE}فشل STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف STR_ERROR_GAME_LOAD_FAILED :{WHITE}فشل فتح اللعبة {}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبة محفوطة غير صالحة{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :لا يمكن قراءة الملف STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :لايمكن قراءة الملف @@ -3527,7 +3581,7 @@ STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRIN STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}غير مسموح في حين توقفت # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}بلدية المدينة ترفض السماح بهذا +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} السلطات المحليه ترفض المساح بهذا STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}البلدية ترفض بناء مطار آخر في هذه المدينة STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}بلدية {TOWN}{} ترفض السماح بمطار هنا بسبب تتعلق بالضوضاء العالية منه . STR_ERROR_BRIBE_FAILED :{WHITE}محاولتك لرشوة السلطات اكتشفت بواسطة مراقب محلي @@ -3559,7 +3613,7 @@ STR_ERROR_PROTECTED :{WHITE}هذه # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}لا يمكن انشاء اي مدينة -STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}لايمكن اعادة تسمية المدينة ... +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}تعذر إعاده تسميه المدينه... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}لا يمكن انشاء مدينة هنا STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}لا يمكن توسيع المدينة ... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... قريبة جدا من حافة الخريطة @@ -3574,7 +3628,7 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... لا # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... المصانع كثيرة جدا STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}لا يمكن انشاء مصانع ... -STR_ERROR_CAN_T_BUILD_HERE :{WHITE}لايمكن انشاء {STRING} هنا... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}تعذر بناء {STRING} هنا... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}لا بمكن بناء المصنع هنا ... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}قريب جدا من مصنع آخر STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... يجب بناء مدينة اولا @@ -3589,138 +3643,139 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... يم STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}يمكن بنائة فوق خط الثلج فقط STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}يمكن بنائة تحت خط الثلج فقط + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}لا يمكن بناء محطة سكة حديد هنا ... -STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}لا يمكن بناء محطة باصات هنا ... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}لا يمكن بناء محطة تحميل عربات هنا ... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}تعذر بناء محطه الحافلات... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}تعذر بناء محطات الشاحنات... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}لا يمكن بناء محطة ركاب هنا ... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}لا يمكن بناء محطة ترام هنا ... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}لا يمكن بناء مرفء هنا ... -STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}لا يمكن بناء مطار هنا ... - -STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من محطة موجودة مسبقا -STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... المحطة واسعة جدا -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}الكثير من المحطات واماكن التحميل -STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}قطاعات المحطة كثيرة جدا -STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}محطات توقف الباصات كثيرة جدا -STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}محطات تحميل العربات كثيرة جدا -STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}قريب جدا من محطة موجودة -STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}قريب جدا من مرفء آخر -STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}قريب جدا من مطار آخر -STR_ERROR_CAN_T_RENAME_STATION :{WHITE}لا يمكن اعادة التسمية -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}هذا طريق مملوك للمدينه -STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... اتجاة الطريق خاطئ -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... القيادة عبر اشارات التوقف لا يمكن ان تحتوي على اركان -STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... القيادة عبر اشارات التوقف لا يمكن ان تحتوي على تقاطعات +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}تعذر بناء المطار هنا... + +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من محطه موجوده مسبقاً +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... المحطه ممتده للخارج للغايه +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}يوجد الكثير من المحطات +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}يوجد الكثير من قطاعات محطه السكه الحديديه +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}يوجد الكثير من محطات الحافلات +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}يوجد الكثير من محطات الشاحنات +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}قريب للغايه من محطه اخرى +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}قريب للغايه من مَرسَى اخر +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}قريب للغايه من مطار اخر +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}تعذر إعاده تسميه المحطه... +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... هذا الطريق ملك المدينه +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... اتجاه الطريق خاطئ +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على زوايا +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على تقاطعات # Station destruction related errors -STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}لا يمكن حذف جزء من المحطة ... -STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}يجب ازالة محطة القطار اولا -STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}لا يمكن حذف محطة الركاب ... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}لا يمكن ازالة محطة البضائع من هنا ... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}لا يمكن ازالة محطة الترام للركاب -STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}لا يمكن ازالة محطة الترام للشحن -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}يجب حذف محطة التوقف اولا -STR_ERROR_THERE_IS_NO_STATION :{WHITE}... لا توجد محطة هنا - -STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}يجب ازالة محطة القطار اولا -STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}يجب هدم محطة الباصات اولا -STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}يجب هدم محطة التحميل اولا -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}يجب هدم محطة ركاب الترام -STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}يجب هدم محطة شحن الترام اولا -STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}يجب هدم المرفء اولا -STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}يجب هدم المطار اولا +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}تعذر حذف هذا الجزء من المحطه... +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}يجب ازالة محطة القطار اولاً +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}تعذر إزاله محطه الحافلات... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}تعذر إزاله محطه الشاحنات... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}تعذر إزاله محطه ركاب الترام... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}تعذر إزاله محطه شحن الترام... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}يجب إزاله محطة التوقف اولاً +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... لايوجد اى محطه هنا + +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}يجب ازالة محطة القطار اولاً +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}يجب إزاله محطه الحافلات اولاً +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}يجب إزاله محطه الشاحنات اولاً +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه ركاب الترام اولاً +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه شحن الترام اولاً +STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}يجب إزاله المَرسَى اولاً +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}يجب إزاله المطار اولاً # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}اربط اكثر من نقاط العبور المتواجدة -STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}قريبة جدا من نقطة عبور اخرى +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من نقطه عبور متواجده +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}قريب للغايه من نقطه عبور اخرى -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}لا يمكن بناء نقطة عبور هنا ... -STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}لا يمكن وضع عوامة هنا -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}لا يمكن تعديل نقطة العبور +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}تعذر بناء نقطه العبور هنا... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}تعذر وضع العوامه هنا... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}تعذر إعاده تسميه نقطه العبور -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}لا يمكن ازالة نقطة العبور من هنا ... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}يجب ازالة سكة الحديد اولا -STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... عوامة في المسار -STR_ERROR_BUOY_IS_IN_USE :{WHITE}... العوامة مستخدمة بواسطة شركة اخرى! +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}لا يمكن ازالة نقطة عبور القطار من هنا... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}يجب إزالة السكه الحديديه اولاً +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... توجد عوامه فى المسار +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... العوامه مُستخدمه من قِبَل شركه اخرى! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}لا يمكن بناء ورشة صيانة هنا... -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}لا يمكن بناء الورشة هنا ... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}لا يمكن بناء ورشة ترام هنا ... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}لا يمكن بناء حوض صيانة هنا ... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}تعذر بناء مستودع القطارات هنا... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}تعذر بناء مستودع العربات البريه هذا هنا... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}تعذر بناء مستوع الترام هنا... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}تعذر بناء مستودع السفن هنا.. -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}لا يمكن تسمية الورشة +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}تعذر إعاده تسميه المستودع... -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}يجب ان يتوقف القطار بالكامل داخل مستودع الصيانة -STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان يوقف داخل ورشة الصيانة. -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}يجب ان تكون السفينة متوقفة في حوض الصيانة -STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}يجب ان تكون الطائرة متوقفة في الحظيرة +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان يكون متوقفاً بالكامل داخل المستودع +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... يجب ان تكون متوقفه بالكامل في الحظيره -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}يمكن تعديل القطارعندما يكون متوقف في ورشة الصيانة -STR_ERROR_TRAIN_TOO_LONG :{WHITE}القطار طويل جدا -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}لا يمكن تغيير اتجاة العربة ... +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}يمكن تعديل القطارات فقط عند وجودها داخل المستودع +STR_ERROR_TRAIN_TOO_LONG :{WHITE}القطار طويل للغايه +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}تعذر تغيير إتجاه العربه... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}تتكون من اكثر من وحدة ... -STR_ERROR_INCOMPATIBLE_RAIL_TYPES :نوع سكة حديد متعارض +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :نوع السكه الحديديه غير متوافق -STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}لا يمكن تحريك العربة ... -STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}المحرك الخلفي دائما سيتبع الامامي -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}لا يمكن ايجاد طريق للورشة -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}لم يتم العثور على ورشة قريبة من العربة +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}تعذر تحريك العربه... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}المُحرك الخلفى سيتبع نظيره الامامى دائماً +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}تعذر إيجاد الطريق المؤدى للمستودع +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}تعذر إيجاد مستوع محلى -STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :ورشةمن نوع خاطئ +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :مستودع خطأ # Autoreplace related errors -STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} طويل جدا بعد الاستبدال +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} طويل للغايه بعد اﻹستبدال STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}لا يوجد نظام مطبق للتبديل/ التجديد -STR_ERROR_AUTOREPLACE_MONEY_LIMIT :- حدود التكلفة للتبديل - +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(حدود التكلفة للتبديل) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}تركيبة سكك غير صالحة -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}يجب حذف الاشارة اولا +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}يجب إزاله اﻹشاره اولاً STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}... مسار السكة الحديدية غير مناسب -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}يجب ازالة السكة اولا -STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}طريق بإتجاه واحد أو مغلق +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}يجب إزاله السكه الحديديه اولاً +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}الطريق باتجاه واحد او ربما يكون مسدوداً STR_ERROR_CROSSING_DISALLOWED :{WHITE}التقاطع المتعدد غير متاح لهذا النوع من السكك -STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}لا يمكن بناء اشارة توقف هنا ... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}لا يمكن بناء سكة قطار هنا ... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}لا يمكن ازالة سكة القطار من هنا ... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}لا يمكن ازالة الإشارة من هتا ... +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}تعذر بناء اﻹشارات هنا... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}تعذر بناء السكه الحديديه هنا... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}تعذر إزاله السكه الحديديه من هنا... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}تعذر إزاله اﻹشاره من هنا... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}لا يمكن تحويل الاشارة هنا ... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... لا يوجد سكة قطار هنا +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... لا يوجد سكه حديديه STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... لا توجد اشارات هنا STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}لا يمكن تحويل سكة القطار هنا ... # Road construction errors -STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}يجب ازالة الطريق اولا -STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... الطريق موحد الأتجاة لا يمكن ان يحتوي على تقاطع -STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}لايمكن وضع طريق هنا ... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}لا يمكن بناء سكة ترام هنا ... -STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}لايمكن ازالة الطريق من هنا ... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}لا يمكن ازالة سكة الترام من هنا ... -STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق هنا -STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد خط ترام هنا +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}يجب إزاله الطريق اولاً +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... الطريق موحد اﻹتجاه لا يمكن ان يحتوى على تقطاعات +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}تعذر بناء الطريق هنا... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}تعذر بناء سكه الترام هنا... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}تعذر إزاله الطريق من هنا... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}تعذر إزاله سكه الترام من هنا... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا # Waterway construction errors -STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}لا يمكن بناء قناة مياة هنا ... -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}لا يمكن بناء حاجز هنا -STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}لا يمكن وضع نهر هنا ... -STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}يجب ان يبنى في الماء +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}تعذر بناء الحاجز هنا... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}تعذر وضع النهر هنا... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... يجب بناءه على الماء STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... لا يمكن بنائة على الماء -STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}لا يمكن بناءة في البحر المفتوح -STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}لا يمكن بناءة على القناة +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... لا يمكن بناءه فى البحر المفتوح +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... لا يمكن بناءه على القناه STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}لا يمكن بنائة على النهر -STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}يجب هدم القتاة اولا -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}لا يمكن بناء قناة مياة هنا ... +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}يجب إزاله القناه اولاً +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}لا يمكن بناء قناه مياه هنا... # Tree related errors -STR_ERROR_TREE_ALREADY_HERE :{WHITE}... الاشجار موجودة هنا مسبقا +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... الشجره موجوده هنا مسبقاً STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... البيئة غير مناسبة لنوع الشجر STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}... لا يمكن زراعة اشجار هنا # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}لا يمكن بناء جسر هنا ... +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}تعذر بناء الجسر هنا... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}يجب هدم الجسر اولا STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}لا يمكن ان يبدء وينتهي في نفس المكان STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}نهايات الجسر ليست على استقامة واحدة @@ -3731,7 +3786,7 @@ STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ال STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}قد ينتهي الجسر خارج الخريطة # Tunnel related errors -STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}لا يمكن بناء نفق هنا ... +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}تعذر بناء النفق هنا... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}الموقع غير صالح لمدخل النفق STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}يجب هدم النفق اولا STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}نفق آخر في مسار هذا النفق @@ -3751,6 +3806,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}هذه STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}لايمكن إنشاء مجموعة STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}لايمكن حذف المجموعة STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}لايمكن إعادة تسمية المجموعة +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}تعذر ربط المجموعه الرئيسية STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}لايمكن إزالة جميع المركبات من هذه المجموعة STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}لا يمكن اضافة المركبة للمجموعة ... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}لا يمكن اضافة مركبات مشتركة للمجموعة ... @@ -3806,6 +3862,8 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}لا ي STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... العربة تحطمت +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :لا تتوافر اى آليه نقل بعد # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر @@ -4190,7 +4248,7 @@ STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :شيفرشيك STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :ناقلة ياتي STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :ناقلة باكويل STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ناقلة مايتي -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :ناقلة بور +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut سفينة شحن STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :سامسون 52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :كولمان كونت STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :سهم اف اف بي @@ -4306,6 +4364,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4317,8 +4376,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4329,9 +4386,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 2de272076f..e6aa2047da 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Edari Burbuilat # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} bidaiari +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}bidaiari{P "" ak} STR_QUANTITY_COAL :{WEIGHT_LONG} ikatz -STR_QUANTITY_MAIL :{COMMA} posta zaku +STR_QUANTITY_MAIL :{COMMA}{NBSP}posta zaku STR_QUANTITY_OIL :{VOLUME_LONG} petroleo -STR_QUANTITY_LIVESTOCK :{COMMA} abere buru -STR_QUANTITY_GOODS :{COMMA} merkantzia kaxa +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}abere buru +STR_QUANTITY_GOODS :{COMMA}{NBSP}merkantzia kaxa STR_QUANTITY_GRAIN :{WEIGHT_LONG} garau STR_QUANTITY_WOOD :{WEIGHT_LONG} egur STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} burdin mea STR_QUANTITY_STEEL :{WEIGHT_LONG} altzairu -STR_QUANTITY_VALUABLES :{COMMA} baliozko objektu zaku +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}baliozko objektu zaku STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kobre mea STR_QUANTITY_MAIZE :{WEIGHT_LONG} arto STR_QUANTITY_FRUIT :{WEIGHT_LONG} fruta -STR_QUANTITY_DIAMONDS :{COMMA} diamante zaku +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}diamante zaku STR_QUANTITY_FOOD :{WEIGHT_LONG} janari STR_QUANTITY_PAPER :{WEIGHT_LONG} paper -STR_QUANTITY_GOLD :{COMMA} urre zaku +STR_QUANTITY_GOLD :{COMMA}{NBSP}urre zaku STR_QUANTITY_WATER :{VOLUME_LONG} urarena STR_QUANTITY_WHEAT :{WEIGHT_LONG} gari STR_QUANTITY_RUBBER :{VOLUME_LONG} gomarena STR_QUANTITY_SUGAR :{WEIGHT_LONG} azukre -STR_QUANTITY_TOYS :{COMMA} jostailu -STR_QUANTITY_SWEETS :{COMMA} gozoki zaku +STR_QUANTITY_TOYS :{COMMA}{NBSP}jostailu +STR_QUANTITY_SWEETS :{COMMA}{NBSP}gozoki zaku STR_QUANTITY_COLA :{VOLUME_LONG} kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} kotoi azukre STR_QUANTITY_BUBBLES :{COMMA} burbuil @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}EZ STR_ABBREV_ALL :{TINY_FONT}DEN # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} bidaiari -STR_BAGS :{COMMA} zaku -STR_TONS :{COMMA} tona -STR_LITERS :{COMMA} litro -STR_ITEMS :{COMMA} elementu -STR_CRATES :{COMMA} kaxa +STR_PASSENGERS :{COMMA}{NBSP}bidaiari{P "" ak} +STR_BAGS :{COMMA}{NBSP}zaku{P "" ak} +STR_TONS :{COMMA}{NBSP}tona{P "" k} +STR_LITERS :{COMMA}{NBSP}litro{P "" ak} +STR_ITEMS :{COMMA}{NBSP}objektu{P "" ak} +STR_CRATES :{COMMA}{NBSP}kaxa{P "" k} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Urdin Iluna @@ -191,36 +191,42 @@ STR_COLOUR_GREY :Grisa STR_COLOUR_WHITE :Zuria # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tona -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tona{P "" k} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tona{P "" k} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galoi{P "" ak} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" ak} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Lokarri iragazkia: STR_LIST_FILTER_OSKTITLE :{BLACK}Sartu lokarri iragazkia STR_LIST_FILTER_TOOLTIP :{BLACK}Sartu hitz bat iragazkian zerrendan aurkitzeko +STR_TOOLTIP_GROUP_ORDER :{BLACK}Aukeratu taldekatzeko ordena STR_TOOLTIP_SORT_ORDER :{BLACK}Hautatu agertze ordena (deszendientea/aszendientea) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Aukeratu ordenatze irizpideak STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Aukeratu iragazki irizpideak @@ -239,6 +245,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra mu STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra mugitu - zerrendan ezkerra/eskuinera mugitzeko STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Eraikinak etab. edo lur karratu bat eraistea. Ctrl area diagonalki aukeratzen du. Mayus eraikinaren kostu estimatua erakusten du. +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Lehenetsia STR_BUTTON_CANCEL :{BLACK}Ezeztatu @@ -282,12 +291,13 @@ STR_SORT_BY_ENGINE_ID :MotoreID (orden STR_SORT_BY_COST :Kostua STR_SORT_BY_POWER :Potentzia STR_SORT_BY_TRACTIVE_EFFORT :Trakzio indarra -STR_SORT_BY_INTRO_DATE :Introdukzio Data -STR_SORT_BY_RUNNING_COST :Mantenimendu kosteak -STR_SORT_BY_POWER_VS_RUNNING_COST :Potentzia/Mantenimendu kosteak -STR_SORT_BY_CARGO_CAPACITY :Zama Edukiera +STR_SORT_BY_INTRO_DATE :Sarrera data +STR_SORT_BY_RUNNING_COST :Funtzionamendu kostuak +STR_SORT_BY_POWER_VS_RUNNING_COST :Potentzia/Funtzionamendu kostuak +STR_SORT_BY_CARGO_CAPACITY :Zama edukiera STR_SORT_BY_RANGE :Irismena STR_SORT_BY_POPULATION :Biztanleria +STR_SORT_BY_RATING :Balorazioa # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Jokoa pausatu @@ -347,7 +357,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :Irten ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Jokoaren aukerak -STR_SETTINGS_MENU_CONFIG_SETTINGS :Ezarpen aurreratuak STR_SETTINGS_MENU_SCRIPT_SETTINGS :IA/Jokoaren scriptaren ezaugarriak STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF ezarpenak STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparentzia ezarpenak @@ -455,7 +464,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Kaxen neurriak STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Txandakatu bloke zikinen kolorea ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -471,22 +480,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -703,6 +730,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Aukeratu hirien izenak on/off mapan STR_SMALLMAP_CENTER :{BLACK}Mapa txikia orain zauden posizioan zentratu STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Dena desgaitu @@ -713,6 +741,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Erakutsi STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Garaiera mapa erakutsi/ ez erakutsi STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ez erakutsi konpainiaren jabetzak mapan. STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Erakutsi konpaniaren propietate denak mapan +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ez erakutsi zamarik mapan +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zama guztiak mapan erakutsi # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Erakutsi azken mezu edo albiste erreportaia @@ -789,13 +819,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} deposituan itxaroten dago STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} hegazkin deposituan itxaroten dago -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} agindu gutxiegi ditu zerrendan STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} agindu zerrenda hutsik du STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} agindu bikoitzak ditu STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} geltoki baliogabea du aginduetan -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zaharra bihurtzen ari da STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} oso zaharra bihurtzen ari da @@ -876,10 +904,6 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Hego Afrikako R STR_GAME_OPTIONS_CURRENCY_CUSTOM :Pertsonalizatua... ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Errepideko garraioak STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Aukeratu ibilgailuen gidatzeko norabidea STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Ezkerretik gidatu @@ -915,11 +939,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanak STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Auto-gordea STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Aukeratu jokoa automatikoki gordetzeko denbora +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ez STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hilabetero STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 hilabetero STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 hilabetero STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 hilabetero +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Hizkuntza STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Aukeratu interfazean erabiltzeko hizkuntza @@ -931,8 +957,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Pantaila STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pantailaren resulozioa aukeratu STR_GAME_OPTIONS_RESOLUTION_OTHER :besteak -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Pantaila argazkien formatoa -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Screenshot-aren formatua aukeratu + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafiko basea markatu STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Aukeratu erabili beharreko grafiko paketea @@ -1033,8 +1058,7 @@ STR_CITY_APPROVAL_HOSTILE :Kontrakoa STR_WARNING_NO_SUITABLE_AI :{WHITE}Ez dago IA egokirik aukeratzeko..{}IA asko jaitsi ditzakezu 'Online edukiera' sistemaren bidez -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Konfigurazio aurreratuak +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Lokarri iragazkia: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Guztia haunditu STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Guztia kolapsatu @@ -1047,14 +1071,16 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Joko ezarpenak STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Konpainia ezarpenak (Gorden bilduta; bakarrik joko berriei eragingo die) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Konpainia ezarpenak (Gorden bilduta; bakarrik uneko konpainiari eragiten dio) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Erakutsi +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Mota: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beheko zerrenda laburtu bakarrik aldatutako ezarpenak erakutsiz -STR_CONFIG_SETTING_RESTRICT_BASIC :Oinarrizko ezarpenak -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ezarpen aurreratuak -STR_CONFIG_SETTING_RESTRICT_ALL :Adituentzako ezarpenak / Ezarpen guztiak +STR_CONFIG_SETTING_RESTRICT_BASIC :Oinarrizkoa (ezarpen garrantzitsuak bakarrik erakutsi) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Aurreratua (ezarpen gehienak erakutsi) +STR_CONFIG_SETTING_RESTRICT_ALL :Aditua (ezarpen guztiak erakutsi, arraroak barne) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ezarpenak lehenetsitakoen balio ezberdinarekin STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Balio ezberdinak dituzten ezarpenak zure joko berriaren ezarpenekin alderatuta +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ezer ez - STR_CONFIG_SETTING_OFF :Itzalita STR_CONFIG_SETTING_ON :Piztuta @@ -1095,8 +1121,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Azpiegiturak et STR_CONFIG_SETTING_CITY_APPROVAL :Udaletxearen jarrera bere lurrak berregituratzeko: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Aukeratu zenbateraino eragingo dion konpainia bati herri batean zarata sortzea eta ingurumena kaltetzea, herrian duen balorazioa txartuz eta eraikin berriak egiteko baimena mugatuz -STR_CONFIG_SETTING_BUILDONSLOPES :Aldapa eta kostan eraikitzea baimendu: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Gaitua badago, bideak eta geltokiak mendi magal gehienetan eraiki daitezke. Desgaitua badago, bakarrik onartuko dira bidearen norabidearekin bat datozen mendi magalak STR_CONFIG_SETTING_AUTOSLOPE :Eraikinen, trenbideen etabarren azpian paisaia aldatzea baimendu. (autoaldapak): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Eraikin eta bideen azpian paisaia aldatzea baimendu hauek kendu gabe STR_CONFIG_SETTING_CATCHMENT :Geltokien irismen eremu hedapena errealagoa egitea baimendu: {STRING} @@ -1121,14 +1145,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Itsasontzi eta STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 graduko bihurgunek trenbide horizontalari trenbide bertikala jarraitzen dionean gertatzen da, trenak 90 graduko bihurgunea egingo du ohiko 45 graduko bihurguneen ordez. Honako hau itsasuntzientzat aplikatzen da ere STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Elkarren ondoan ez baina oso hurbil dauden geltokiak bateratu : {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Geltoki bati zatiak gehitu dauden zatiak ukitu gabe. Zati berriak gehitzerakoan Crtl+klikatu sakatu beharko da. -STR_CONFIG_SETTING_IMPROVEDLOAD :Zamatzeko algoritmo hobetua erabili: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Gaitua badago, geltokian dauden ibilgailuak sekuentzalki kargatuko dira. Hurrengo ibilgailuaren karga bakarrik hasiko da aurreko ibilgailua betetzeko adina karga badago -STR_CONFIG_SETTING_GRADUAL_LOADING :Ibilgailuak mailaka zamatu: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Ibilgailuak gradualki zamatu ibilgailu bakoitzaren zamaketa denbora espezifikazioak erabiliz, guztia batera zamatuko duen denbora finkoa erabili ordez, zama kopuruan oinarritzen dena STR_CONFIG_SETTING_INFLATION :Inflazioa: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Gaitu inflazioa ekonomiari, kosteak salneurriak baino pixka bat azkarrago igoko dira -STR_CONFIG_SETTING_SELECTGOODS :Geltokietan bakarrik onartutako zama utzi : {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Bakarrik zamak geltokietara eraman ibilgailu batek zama hori jasotzera joan bada. Honek geltokietan garraiatuak ez diren zamen kalifikazio txarrak ekiditzen ditu STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Zubien gehienezko luzera: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Zubiak eraikitzeko gehienezko luzera STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Tunel baten gehienezko luzera: {STRING} @@ -1156,8 +1174,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Lehenezpenez tr STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :amaieratik gertu STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :erdian STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :amaieratik urrun -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Errepide ibilgailuen lerroketak(quantum efektuekin): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Errepide ibligaluak okupatutako errepideen aurrean itxaronaraztea errepidea hustu arte STR_CONFIG_SETTING_AUTOSCROLL :Leihoa mugitu sagua ertzean dagoenean: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Gaitua dagoenean, sagua lehioen ertzara hurbiltzerakoan mapa mugitzen hasiko da STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desgaitua @@ -1188,10 +1204,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Herrien errepid STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Herrien menpe dauden errepideetan zehar-pasatzeko geltokiak baimendu STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Arerioen errepideetan zehar-pasatzeko geltokiak baimendu: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Beste konpainien menpe dauden errepideetan zehar-pasatzeko geltokiak bahimendu -STR_CONFIG_SETTING_ADJACENT_STATIONS :Alboko geltokiak eraikitzea baimendu: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Geltoki ezberdinak bata bestea ukitzea baimendu -STR_CONFIG_SETTING_DYNAMIC_ENGINES :NewGRF set bat baino gehiago erabili ahal izatea aktibatu: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :NewGRF zaharren bateragarritasun aukera. Ez ezgaitu hau ez badakizu zer egiten hari zaren! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Hau ezin da aldatu ibilgailuak daudenean STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Azpiegituren mantentze-lana: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Gaitua dagoenean, azpiegiturek mantentze kostuak eragiten dituzte. Kostuak garraio sarearekin proportzionalki hazten dira, hau da, kostu handiagoak izango dituzten konpainia handiagoek @@ -1233,10 +1245,10 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafikoen marre STR_CONFIG_SETTING_LAND_GENERATOR :Lur sortzailea: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Jatorrizkoa STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Petroleo Findegitik maparen ertzera dagoen gehienezko distantzia: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Petroleo findegietatik maparen ertzera dagoen gehienezko distantzia: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Petroleo findegiak bakarrik maparen ertzatik hurbil eraiki daitezke, kostan irla mapetan STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Elur garaiera: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Paisaiaren malkartasun maila (TerraGenesis erabiltzean soilik) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Eremuaren malkartasun maila: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Oso Leuna STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Leuna STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Zakarra @@ -1249,8 +1261,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Garaiera mapare STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Erlojuko orratzen kontrara STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Erlojuko orratzen erara STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Eszenario mapa lauak hartzen duten garaiera: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Maparen ertzean dauden laukitxoetan paisaia eraldatzea baimendu: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Desgaituta badago, maparen mugak itsasoa izango dira beti STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ipar ertzean dauden laukitxoetako bat, edo bat baino gehiago ez daude hutsik STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Edozein ertzean dauden laukitxo bat edo bat baino gehiagotan ez da urik egongo @@ -1301,17 +1311,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Itzalita STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Saguaren ezkerreko botoiarekin mapan zehar mugitzea: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gaitu mapatik zehar mugitzea saguaren ezkerreko botoia mapan arrastratzerakoan. Oso erabilgarria da ukipen pantailak erabiltzerakoan + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gordetako jokoen izenetan {STRING} data fomatua erabili STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Gordetako fitxeroen dataren formatoa STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :luzea (2008ko Abe 31) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :laburra (2008-12-31) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paletarik zehazten ez duten NewGRF berrientzat aurretik zehaztutako paleta erabiltzea: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Beharrezko paleta zehazten ez duten NewGRFetan paleta lehenetsia erabili -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleta -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleta - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatikoki jokoa pausan jarri joko berri bat hastearakoan: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Gaitua dagoenean, joko berria hasterakoan automatikoki pausatua egongo da, aldez aurretik mapa aztertzeko STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Jokoa geldituta dagoenean baimendu: {STRING} @@ -1378,7 +1384,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Mantenimendurak STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Aukeratu ibilgailuen mantenimendua azken zerbitzutik pasatutako denboragatik aktibatzea edo fidegarritasun ehunekoaren gutxiengo jakin batera iristeagatik aktibatzea STR_CONFIG_SETTING_SERVINT_TRAINS :Trenen mantenimendurako lehenetsitako denbora tarteak: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ezarri tren berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} egun/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}egun{P 0 "" ak}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Desgaitua STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Errepide ibilgailuen mantenimendurako lehenetsitako denbora tarteak: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ezarri errepide ibilgailu berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira @@ -1502,33 +1508,59 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :{COMMA}-tik bat STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Bat ere ez STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Herrien hasierako tamainaren biderkatzailea: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Joko hasieran hirien bataz besteko tamaina herri normalekin alderatuta -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Errepideak eraikitzerakoan elementu ez egokiak eragotzi: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Errepide berreraikuntza ordaintzerakoan irteerarik gabeko errepideak kentzea - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Interfazea -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Eraikuntza +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :eskuz egin +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrikoa +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrikoa +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Banaketen zehaztasuna: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Abiadura unitateak: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Inperiala (milia/orduko) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrikoa (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Ibilgailuen indar unitateak: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Inperiala (zp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrikoa (zp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Pisu unitateak: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrikoa (t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Bolumen unitateak: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Inperiala (galoi) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrikoa (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrikoa (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Garaiera unitateak: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inperiala (oin) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrikoa (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kokapena +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikoak +STR_CONFIG_SETTING_SOUND :{ORANGE}Soinua +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfazea +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Orokorra +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Eraikuntza +STR_CONFIG_SETTING_COMPANY :{ORANGE}Konpainia STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ibilgailuak -STR_CONFIG_SETTING_STATIONS :{ORANGE}Geltokiak -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomia +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ibilbideak +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Mugak +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Hondamendiak / Istripuak +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Mundua sortu +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ingurugiroa +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Agintariak +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Herriak +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriak +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Zama banaketa STR_CONFIG_SETTING_AI :{ORANGE}Lehiakideak -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Aukerak erakutsi -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakzioa -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seinaleak -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Zamak STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ordenagailu jokalariak -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Berritze automatikoa -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Mantenimendua -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ibilbideak -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenak -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Herriak -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industriak STR_CONFIG_SETTING_PATHFINDER_OPF :Jatorrizkoa STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1562,6 +1594,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... Gord STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... jaramonik ez egiten Grafiko baseari '{STRING}': ez da aurkitu STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... jaramonik ez egiten Soinu Paketeari '{STRING}': ez da aurkitu STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... jaramonik ez egiten musika paketeari'{STRING}': ez da aurkitu +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoriaz kanpo # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1575,7 +1608,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multijok STR_INTRO_GAME_OPTIONS :{BLACK}Jokoaren Aukerak STR_INTRO_HIGHSCORE :{BLACK}Puntuazio taula -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ezarpen Aurreratuak STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-ren Ezarpenak STR_INTRO_ONLINE_CONTENT :{BLACK}Edukiak Online Kontsultatu STR_INTRO_SCRIPT_SETTINGS :{BLACK}IA/Joko Scripten Ezarpenak @@ -1595,7 +1627,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Aukeratu STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Jokoaren aukerak erakutsi STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Puntuazioen taula erakutsi -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Ezarpen aurreratuak erakutsi STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF ezarpenak erakutsi STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Bilatu eduki berria eta eguneratua deskargatzeko STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}IA/Joko Scripten Ezarpenak @@ -1683,6 +1714,7 @@ STR_LIVERY_FREIGHT_TRAM :Merkantzietarak STR_FACE_CAPTION :{WHITE}Aurpegia aukeratu STR_FACE_CANCEL_TOOLTIP :{BLACK}Bertan behera utzi aurpegia aukeratu STR_FACE_OK_TOOLTIP :{BLACK}Aurpegi berria onartu +STR_FACE_RANDOM :{BLACK}Ausaz egin STR_FACE_MALE_BUTTON :{BLACK}Gizonezkoa STR_FACE_MALE_TOOLTIP :{BLACK}Aukeratu gizonezko aurpegiak @@ -1738,6 +1770,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Aldatu k # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijokalaria +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ez +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Bai STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Jokalariaren izena: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Izen honen bidez ezagutua izango zara beste jokalarien artean @@ -1796,6 +1830,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Jokoaren STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Pasahitza ezarri STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Babestu zure jokoa pasahitz batekin ez baduzu nahi publikoa izatea +STR_NETWORK_START_SERVER_UNADVERTISED :Ez +STR_NETWORK_START_SERVER_ADVERTISED :Bai STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Bezero STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Gehienezko bezeroak: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Gehienezko bezero kopurua aukeratu. Ez da beharrezkoa guztia betetzea @@ -1916,6 +1952,7 @@ STR_NETWORK_CLIENT :Bezeroa STR_NETWORK_SPECTATORS :Ikusleak STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Eman nahi duzun diru kantitatea ezarri +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Ikusle # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ez gorde sartutako pasahitza @@ -2105,8 +2142,12 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Zama adi STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objektuak ikusezinak egin, gardenak izan ordez # Linkgraph legend window +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Denak +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Bat ere ez # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}erabiltzeke +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturatua # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Geltoki irismena erakutsi @@ -2168,13 +2209,13 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Geltokia STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eraikiko den geltoki mota STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Eraikiko den geltoki mota -STR_STATION_CLASS_DFLT :Oinarrizko geltokia +STR_STATION_CLASS_DFLT :Geltoki lehenetsia STR_STATION_CLASS_WAYP :Bidepuntuak # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Seinale aukerak STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK} Blokeo seinalea (mekanikoa){}Oinarrizkoena den seinale mota, bloke berdinean tren bakarra egotea ahalbidetzen duena -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sarrera seinalea (mekanikoa){}Berde egongo da hurrengo sekzioan irteera seinale bat edo bat baino gehiago berde badago. Bestela gorria egongo da +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sarrera Seinalea (semaforoa){}Berde egongo da hurrengo sekzioan irteera seinale bat edo bat baino gehiago berde badago. Bestela gorria egongo da STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Irteera seinalea (mekanikoa){} Blokeo seinalea bezala funtzionatzen du, baina beharrezkoa da sarrera seinaleak eta konbo aurre-seinaleak kolore egokia edukitzea STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Konbo seinalea (semaforoa){}Sarrera seinale eta irteera seinale bezala funtzionatzen du. Honek aurre-seinale "zuhaitz" handiak eraikitzea ahalbidetzen du STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Bide seinalea (mekanikoa){}Bide seinalea bloke batean tren bat baino gehiago egotea ahalbidetzen du, trenak gelditzeko bide egokia erreserbatu badezake. Oinarrizko bide seinaleak atzekaldetik pasa daitezke @@ -2410,6 +2451,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onartutako zama: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Trenbidearen abiadura muga: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Bideko abiadura muga: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Haitzak @@ -2506,7 +2548,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa @@ -2525,6 +2567,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Gorde STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Jokoa gorde, aukeratutako izenarekin STR_SAVELOAD_LOAD_BUTTON :{BLACK}Kargatu STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Aukeratutako jokoa kargatu +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Aukeratutako garaiera mapa kargatu STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Jokoaren Xehetasunak STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ez dago informaziorik STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2542,10 +2585,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industri STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Elur garaiera: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Igo puntu batean elur garaiera STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Jeitsi puntu batean elur garaiera -STR_MAPGEN_RANDOM_SEED :{BLACK}Ausazko hazia: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikatu ausazko hazia ezartzeko -STR_MAPGEN_RANDOM :{BLACK}Ausaz egin -STR_MAPGEN_RANDOM_HELP :{BLACK}Ausazko hazia aldatu paisaia sortzeko STR_MAPGEN_LAND_GENERATOR :{BLACK}Paisaia sortzailea: STR_MAPGEN_TREE_PLACER :{BLACK}Zuhaitz algoritmoa: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Lur mota: @@ -2572,7 +2611,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Garaiera STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaina: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Ausazko hazia ezarri STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Elur garaiera aldatu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Hasierako urtea aldatu @@ -2651,6 +2689,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ez da aurk STR_NEWGRF_SETTINGS_DISABLED :{RED}Desgaitua STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}OpenTTD-ren bertsio honekin bateraezina +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF parametroak aldatu STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Itxi @@ -2681,7 +2721,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Aldez au STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Aurreko grafiko arruntera joan, pseudo/birkoloretu/grafiko tipoak desgaituz STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Orain aukeratutako grafikoaren aurkezpena. Alineazioa ez da kontua hartzen grafiko hau egiterakoan STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}"Sprit"-a mugitu inguruan, X eta Y-ren desplazamenduak aldatuz -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X desplazamendua {NUM}, Y desplazamendua: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}"Sprit"-a aukeratu STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pantaillako edozein lekutatik aukeratu "sprite" bat @@ -2750,6 +2789,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE} NewGRF berriak bilatzen. STR_NEWGRF_SCAN_MESSAGE :{BLACK} NewGRFak bilatzen. Zenbatekoaren arabera tartetxo baterako luza litzateke... @@ -2787,8 +2829,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregatua STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (beharrezkoa) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregatua) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Herria {ORANGE}{COMMA}{BLACK} egunero hazten da -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Herria {ORANGE}{COMMA}{BLACK} egunero hazten da (sortutako eraikuntzak) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Herria {ORANGE}{COMMA}{BLACK}{NBSP}egunetan hazten da +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Herria {ORANGE}{COMMA}{BLACK}{NBSP}egunero hazten da (sortutako eraikuntzak) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Herria {RED}ez da {BLACK} hazten ari STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Gehienezko soinua herrian: {ORANGE}{COMMA}{BLACK} gehienez: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Lehio nagusia herriaren kokapenean zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du @@ -2831,9 +2873,13 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Urte ba STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Udaletxea sobornatu zure balorazioa hobetzeko, isun larria jasotzeko arriskuarekinn.{}Kostea: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Helburuak +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Helburu orokorrak STR_GOALS_GLOBAL_TITLE :{BLACK}Helburu orokorrak: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ezer ez - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Konpainiaren helburuak: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikatu helburuan ikupegi nagusia industrian/herrian/laukian zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du industri/herri/laukiaren kokapenean @@ -2843,7 +2889,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informazioa STR_GOAL_QUESTION_CAPTION_WARNING :Kontuz STR_GOAL_QUESTION_CAPTION_ERROR :Akats -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Ezeztatu STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :EZ @@ -2862,6 +2908,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :atzeratzeko STR_GOAL_QUESTION_BUTTON_SURRENDER :errendizioaren STR_GOAL_QUESTION_BUTTON_CLOSE :Itxi +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidioak @@ -2873,6 +2920,13 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikatu garraio zerbitzuan ikuspegi nagusia industria/herrian zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du indutri/herriaren kokapenean # Story book window +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Orrialdea {NUM} +STR_STORY_BOOK_PREV_PAGE :{BLACK}Aurrekoa +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Aurreko orrialdera joan +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Hurrengoa +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Hurrengo orrialdera joan +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Helburu erreferentzia baliogabea # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Geltokien izenak - Klikatu geltokiaren izenean ikuspegi nagusia geltokian zentratzeko. Ktrl+Klik Ikuspegi lehio berria irekiko du geltokiaren kokapenean @@ -2887,9 +2941,8 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ez dago # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Itxaroten: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} -STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}tik garraiatua) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}-(e)tik garraiatua) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Onartu STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Onartzen diren zamen zerrenda @@ -2900,8 +2953,27 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Zama balorazioak STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Geltokiaren zama balorazioak erakutsi - - +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_WAITING_STATION :Geltokia: Itxaroten +STR_STATION_VIEW_WAITING_AMOUNT :Kopurua: Itxoiten +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} {STATION}-tik +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT}{STATION}-tik +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT}{STATION}-ra +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} geltoki ezezagunetik +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} edozein geltokitara +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} edozein geltokitatik pasatuz +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} geltoki honetatik +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} geltoki honetan geldituz +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} geltoki honetara +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} gelditu gabe + +STR_STATION_VIEW_GROUP_S_V_D :Abiapuntua-Bidea-Helburua +STR_STATION_VIEW_GROUP_S_D_V :Abiapuntua-Helburua-Bidea +STR_STATION_VIEW_GROUP_V_S_D :Bidea-Abiapuntua-Helburua +STR_STATION_VIEW_GROUP_V_D_S :Bidea-Helburua-Abiapuntua +STR_STATION_VIEW_GROUP_D_S_V :Helburua-Abiapuntua-Bidea +STR_STATION_VIEW_GROUP_D_V_S :Helburua-Bidea-Abiapuntua ############ range for rating starts STR_CARGO_RATING_APPALLING :Negargarria @@ -2958,7 +3030,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Guztira: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balantzea STR_FINANCES_LOAN_TITLE :{WHITE}Mailegua -STR_FINANCES_MAX_LOAN :{WHITE}Gehienezko mailegua: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Gehienezko Mailegua: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} eskatu STR_FINANCES_BORROW_TOOLTIP :{BLACK}Mailegua handitu. Ktrl+Klik gehienezko mailegua eskatu @@ -3044,6 +3116,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Azken hi STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (%{COMMA} garraiatua) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Ikuspegi nagusia industrian kokatu. Ktrl+Klik ikuspegi lehio berri bat irekiko du industriaren kokapenarekin STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ekoizpen kopurua: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industriak berehalako itxiera iragarri du! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING} @@ -3112,6 +3185,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Aukeratu STR_GROUP_RENAME_TOOLTIP :{BLACK}Aukeratutako taldea berrizendatu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikatu taldean ordezkatze orokorretik babesteko + STR_GROUP_ADD_SHARED_VEHICLE :Geheitu konpartituako ibilgailuak STR_GROUP_REMOVE_ALL_VEHICLES :Ibilgailu guztiak ezabatu @@ -3149,7 +3223,7 @@ STR_PURCHASE_INFO_ALL_BUT :Guztia {CARGO_L STR_PURCHASE_INFO_MAX_TE :{BLACK}Gehienezko trakzio indarra: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Irismena: {GOLD}{COMMA} lauki -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Trenak aukeratzeko zerrenda - Klik xehetasunak ikusteko +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Trenak aukeratzeko zerrenda - Klik xehetasunak ikusteko. Ctrl+Klik ibilgailu motaren ezkutapenaren artean aukeratzeko STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Errepide ibilbideak aukeratzeko zerrenda - Klik xehetasunak ikusteko STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Itsasontzi aukeratzeko zerrenda - Klik xehetasunak ikusteko STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Hegazkinak aukeratzeko zerrenda - Klik xehetasunak ikusteko @@ -3159,10 +3233,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ibilgail STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Itsasontia erosi STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Hegazkina erosi -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen itsasontzia erosi. Shift+Klik gutxi gora beherako kostea erakutsi -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen hegazkina erosi. Shift+Klik gutxi gora beherako kostea erakutsi +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen itsasontzia erosi. Shift+Klik gutxi gora beherako kostea erakutsi +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen hegazkina erosi. Shift+Klik gutxi gora beherako kostea erakutsi STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Berrizendatu STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Berrizendatu @@ -3174,6 +3248,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Errepide STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Itsasontzia berrizendatu STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Hegazkina berrizendatu + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Tren ibilgailua berrizendatu STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Errepide ibilgailua berrizendatu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Itasontzia berrizendatu @@ -3227,7 +3304,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Errepide STR_DEPOT_CLONE_SHIP :{BLACK}Itsasontzia klonatu STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Hegazkina klonatu -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Trena eta bagoiaren kopia erosiko du. Klikatu botoia eta gero gordailu barnean edo kanpoen dagoen tren batean klikatu. Ktrl+klik aginduak konpartitzeko. Shift+Klik gutxi gora behera kostea erakutsi +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Trena eta bagoi guztien kopia erosiko du. Klikatu botoia eta gero gordailu barnean edo kanpoen dagoen tren batean klikatu. Ctrl+klik aginduak konpartitzeko. Mayus+Klik batez besteko kostua erakusten du, erosi gabe STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Errepide ibilgauaren kopia erosiko du. Klikatu botoia eta gero gordailu barnean edo kanpoen dagoen ibilgailu batean klikatu. Ktrl+klik aginduak konpartitzeko. Shift+Klik gutxi gora behera kostea erakutsi STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Itsasontzi kopia erosiko du. Klikatu botoia eta gero gordailu barnean edo kanpoen dagoen itsasontzi batean klikatu. Ktrl+klik aginduak konpartitzeko. Shift+Klik gutxi gora behera kostea erakutsi STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Hegazkinaren kopia erosiko du. Klikatu botoia eta gero hangar barnean edo kanpoan dagoen hegazkin batean klikatu. Ktrl+klik aginduak konpartitzeko. Shift+Klik gutxi gora behera kostea erakutsi @@ -3278,6 +3355,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Errepide ibilga STR_REPLACE_VEHICLE_SHIP :Itsasontzia STR_REPLACE_VEHICLE_AIRCRAFT :Hegazkina + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Aukeratu aldatu beharreko motore mota STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK} Aukeratu motore mota zaharra ordezkatuko duen motore berria @@ -3402,11 +3480,14 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Edukiera STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferentzia kredituak: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Mantenimendu tartea: {LTBLUE}{COMMA}days{BLACK} Azken mantenimendua: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Mantenimendu tartea: {LTBLUE}{COMMA}egun{BLACK} Azken mantenimendua: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Mantenimendu tartea: {LTBLUE}{COMMA}%{BLACK} Azken mantenimendua: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Mantenimendu tartea 10 puntutan igo. Ktrl+klik mantenimendu tartea 5 puntutan igo STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Mantenimendu tartea 10 puntutan gutxitu. Ktrl+klik mantenimendu tartea 5 puntutan gutxitu +STR_VEHICLE_DETAILS_DEFAULT :Lehenetsia +STR_VEHICLE_DETAILS_DAYS :Egunak +STR_VEHICLE_DETAILS_PERCENT :Ehunekoa STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Trena izendatu STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Errepide ibilgailua izendatu @@ -3591,7 +3672,7 @@ STR_ORDER_NO_UNLOAD_NO_LOAD :(Ez deskargatu STR_ORDER_AUTO_REFIT :(Automatikoki birmoldatu {STRING}-(e)ra) STR_ORDER_FULL_LOAD_REFIT :(Osorik kargatu eta automatikoki birmoldatu {STRING}-(e)ra) STR_ORDER_FULL_LOAD_ANY_REFIT :(Edozein zama osorik kargatu eta automatikoki birmoldatu {STRING}-(e)ra) -STR_ORDER_UNLOAD_REFIT :(Deskargatu eta karga artu automatikoki birmoldatuz {STRING}-(e)ra) +STR_ORDER_UNLOAD_REFIT :(Deskargatu eta karga hartu automatikoki birmoldatuz {STRING}-(e)ra) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Deskargatu eta osorik kargatu automatikoki birmoldatuz {STRING}-(e)ra) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Deskargatu eta edozein zama osorik kargatu arte itxaron automatikoki birmoldatuz {STRING}-(e)ra) STR_ORDER_TRANSFER_REFIT :(Transferitu eta kargatu automatikoki birmoldatuz {STRING}-(e)ra) @@ -3630,8 +3711,8 @@ STR_TIMETABLE_TRAVEL_FOR :{STRING} bidaia STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING}-ra bidaiatu gehienez {VELOCITY}ra STR_TIMETABLE_STAY_FOR :{STRING} gelditu STR_TIMETABLE_AND_TRAVEL_FOR :{STRING} bidaiatu -STR_TIMETABLE_DAYS :{COMMA} egun -STR_TIMETABLE_TICKS :{COMMA} tick +STR_TIMETABLE_DAYS :{COMMA}{NBSP}egun{P "" ak} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" ak} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ordutegi honek {STRING} beharko du betetzeko STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ordutegi honek gutxienez {STRING} beharko du (ez ordutegi guztiak) @@ -3756,6 +3837,7 @@ STR_AI_SETTINGS_START_DELAY :IA hau abiarazt STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} ren "irakur nazazu" artxiboa STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING}-aren aldaketak STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} rako lizentzia +STR_TEXTFILE_WRAP_TEXT :{WHITE}Testua trinkotu STR_TEXTFILE_VIEW_README :{BLACK}Ikusi "irakur nazazu" STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Aldaketak STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lizentzia @@ -3778,6 +3860,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Sarrerak: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transferitu: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {GREEN}Sarrera: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {GREEN}Sarrera: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {RED}Kostua: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {RED}Kostua: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Gutxi gora beherako kostea: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Gutxi gora beherako sarrerak: {CURRENCY_LONG} @@ -3912,6 +3998,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... Baso STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... bakarrik elur garaieratik gora eraiki daiteke STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... bakarrik elur garaieratik behera eraiki daiteke + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ezin da tren gordailua hemen eraiki... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Ezin izan da autobus geltokia eraiki... @@ -4129,6 +4216,9 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ezin da STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... garraioa suntsituta +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ez da ibilgailu erabilgarririk egongo +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Aldatu zure NewGRF konfigurazioa +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ez dago ibilgailu erabilgarririk oraindik # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ezin da trena seinalea pasatzera behartu, istripu arriskua... @@ -4173,6 +4263,7 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ezin da STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe-ren simulazio bat # Translatable descriptions in media/baseset/*.ob* files +STR_BASESOUNDS_NONE_DESCRIPTION :Soinurik gabeko soinu pakete bat ##id 0x2000 # Town building names @@ -4296,7 +4387,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Lurrina) @@ -4505,7 +4596,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Bi STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Bidaiari Ferry-a STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Zamaontzia STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Zamaontzia -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Zamaontzia +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Zamaontzia STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Zamaontzia STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4622,6 +4713,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4633,8 +4725,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4645,9 +4735,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 6cd4cee952..350fc95768 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -408,30 +408,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.pre :газіроў # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} пасажыр{P "" а аў} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}пасажыр{P "" а аў} STR_QUANTITY_COAL :{WEIGHT_LONG} вугалю -STR_QUANTITY_MAIL :{COMMA} мяш{P ок кi коў} пошты +STR_QUANTITY_MAIL :{COMMA}{NBSP}мяш{P ок кi коў} пошты STR_QUANTITY_OIL :{VOLUME_LONG} нафты -STR_QUANTITY_LIVESTOCK :{COMMA} гал{P ава авы оў} жывёлы -STR_QUANTITY_GOODS :{COMMA} скрын{P ка кi ак} тавараў +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}гал{P ава авы оў} жывёлы +STR_QUANTITY_GOODS :{COMMA}{NBSP}скрын{P ка кi ак} тавараў STR_QUANTITY_GRAIN :{WEIGHT_LONG} зерня STR_QUANTITY_WOOD :{WEIGHT_LONG} драўнiны STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} жалезнай руды STR_QUANTITY_STEEL :{WEIGHT_LONG} сталi -STR_QUANTITY_VALUABLES :{COMMA} мяш{P ок кi коў} каштоўнасьцяў +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}мяш{P ок кi коў} каштоўнасьцяў STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} меднай руды STR_QUANTITY_MAIZE :{WEIGHT_LONG} кукурузы STR_QUANTITY_FRUIT :{WEIGHT_LONG} садавiны -STR_QUANTITY_DIAMONDS :{COMMA} мяш{P ок кi коў} алмазаў +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}мяш{P ок кi коў} алмазаў STR_QUANTITY_FOOD :{WEIGHT_LONG} ежы STR_QUANTITY_PAPER :{WEIGHT_LONG} паперы -STR_QUANTITY_GOLD :{COMMA} мяш{P ок кi коў} золата +STR_QUANTITY_GOLD :{COMMA}{NBSP}мяш{P ок кi коў} золата STR_QUANTITY_WATER :{VOLUME_LONG} вады STR_QUANTITY_WHEAT :{WEIGHT_LONG} пшаніцы STR_QUANTITY_RUBBER :{VOLUME_LONG} каўчуку STR_QUANTITY_SUGAR :{WEIGHT_LONG} цукру -STR_QUANTITY_TOYS :{COMMA} цац{P ка кi ак} -STR_QUANTITY_SWEETS :{COMMA} скрын{P ка кi ак} цукерак +STR_QUANTITY_TOYS :{COMMA}{NBSP}цац{P ка кi ак} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}скрын{P ка кi ак} цукерак STR_QUANTITY_COLA :{VOLUME_LONG} колы STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} цукровай баўны STR_QUANTITY_BUBBLES :{COMMA} бурбал{P ка кi ак} @@ -478,12 +478,12 @@ STR_ABBREV_NONE :{TINY_FONT}НЯ STR_ABBREV_ALL :{TINY_FONT}Усё # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} пасажыр{P "" ы аў} -STR_BAGS :{COMMA} мя{P шок шкi шкоў} -STR_TONS :{COMMA} тон{P а ы ""} -STR_LITERS :{COMMA} лiтр{P "" ы аў} -STR_ITEMS :{COMMA} штук{P а i ""} -STR_CRATES :{COMMA} скрын{P я i яў} +STR_PASSENGERS :{COMMA}{NBSP}пасажыр{P "" ы аў} +STR_BAGS :{COMMA}{NBSP}мяш{P ок кi коў} +STR_TONS :{COMMA}{NBSP}тон{P а ы ""} +STR_LITERS :{COMMA}{NBSP}лiтр{P "" ы аў} +STR_ITEMS :{COMMA}{NBSP}штук{P а i ""} +STR_CRATES :{COMMA}{NBSP}скрын{P я i яў} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Цёмна-сiнi @@ -504,36 +504,44 @@ STR_COLOUR_GREY :Шэры STR_COLOUR_WHITE :Белы # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мiл{P я i яў}/г -STR_UNITS_VELOCITY_METRIC :{COMMA} км/г -STR_UNITS_VELOCITY_SI :{COMMA} м/с +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}мiл{P я i яў}/г +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}км/г +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}м/с -STR_UNITS_POWER_IMPERIAL :{COMMA} к.с. -STR_UNITS_POWER_METRIC :{COMMA} к.с. -STR_UNITS_POWER_SI :{COMMA} кВт +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}к.с. +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}к.с. +STR_UNITS_POWER_SI :{COMMA}{NBSP}кВт -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}кг -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P а ы ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}тон{P а ы ""} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}тон{P а ы ""} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}кг -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л -STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}гал. +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}л +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}м³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лiтр{P "" ы аў} -STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}галон{P "" а аў} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}лiтр{P "" ы аў} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}м³ -STR_UNITS_FORCE_SI :{COMMA} кН +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}фунт{P "" а аў}-сілы +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}кгс +STR_UNITS_FORCE_SI :{COMMA}{NBSP}кН -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут{P "" ы аў} -STR_UNITS_HEIGHT_SI :{COMMA} м +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}фут{P "" ы аў} +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}м +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фільтар: STR_LIST_FILTER_OSKTITLE :{BLACK}Увядзіце радок фільтра STR_LIST_FILTER_TOOLTIP :{BLACK}Увядзіце ключавое слова для фільтрацыі сьпісу +STR_TOOLTIP_GROUP_ORDER :{BLACK}Выбар парадку групоўкі STR_TOOLTIP_SORT_ORDER :{BLACK}Зьмена напрамку сартаваньня (зьмяньшэньне / ўзрастаньне) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Зьмена крытэрыю сартаваньня STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Выберыце фiльтр @@ -545,13 +553,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закр STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Загаловак вакна — цягніце яго для перамяшчэньня вакна STR_TOOLTIP_SHADE :{BLACK}Згарнуць вакно, пакінуўшы загаловак STR_TOOLTIP_DEBUG :{BLACK}Паказаць наладачную iнфармацыю NewGRF -STR_TOOLTIP_STICKY :{BLACK}Іґнараваць націск клявішы «Закрыць усе вокны» +STR_TOOLTIP_DEFSIZE :{BLACK}Зьмяніць памеры вакна на значэньні па змоўчаньні. Ctrl+пстрычка захавае бягучы памер як значэньне па змоўчаньні. +STR_TOOLTIP_STICKY :{BLACK}Пазначыць гэтае вакно як незачыняльнае па клявішы «Закрыць усе вокны». Ctrl+пстрычка захоўвае гэты стан па змоўчаньні. STR_TOOLTIP_RESIZE :{BLACK}Націсьніце ды цягніце для зьмяненьня памеру вакна STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Вялікае/маленькае вакно STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Пракрутка ўверх/уніз STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Пракрутка налева/направа STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Поўная ачыстка прамавугольнага ўчастку зямлі. Ctrl — выбар вобласьці па дыяганалі. Пры націснутым Shift — ацэнка кошту ачысткі. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Паказаць схаваныя +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Паказаць схаваныя +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Паказаць схаваныя +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Паказаць схаваныя + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Калі гэта кнопка націснута, схаваныя мадэлi лакаматываў і вагонаў таксама будуць паказаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Калі гэта кнопка націснута, схаваныя мадэлі аўтамабіляў таксама будуць паказаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Калі гэта кнопка націснута, схаваныя мадэлі караблёў таксама будуць паказаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Калі гэта кнопка націснута, схаваныя мадэлi паветраных суднаў таксама будуць паказаны + # Query window STR_BUTTON_DEFAULT :{BLACK}Па змоўчаньнi STR_BUTTON_CANCEL :{BLACK}Скасаваць @@ -589,6 +609,8 @@ STR_SORT_BY_LENGTH :Даўжыня STR_SORT_BY_LIFE_TIME :Рэшткавы тэрмін службы STR_SORT_BY_TIMETABLE_DELAY :Адставаньне ад ґрафіку STR_SORT_BY_FACILITY :Тып станцыі +STR_SORT_BY_WAITING_TOTAL :Агульны аб'ём грузу +STR_SORT_BY_WAITING_AVAILABLE :Аб'ём даступнага грузу STR_SORT_BY_RATING_MAX :Найвышэйшы рэйтынґ STR_SORT_BY_RATING_MIN :Ніжэйшы рэйтынґ STR_SORT_BY_ENGINE_ID :Назва, серыя @@ -601,7 +623,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Магутна STR_SORT_BY_CARGO_CAPACITY :Ёмiстасьць STR_SORT_BY_RANGE :Далёкасьць STR_SORT_BY_POPULATION :Насельніцтва -STR_SORT_BY_RATING :Рэйтынг +STR_SORT_BY_RATING :Рэйтынґ # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Паўза @@ -614,6 +636,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Пака STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Сьпiс станцыяў STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Паказаць фінансавую інфармацыю кампаніі STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Паказаць агульную інфармацыю аб кампаніі +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Паказаць гісторыю кампаніі +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Паказаць сьпіс задач STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Паказаць ґрафiкi STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Паказаць рэйтынґі кампаніяў STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Сьпіс існуючых прадпрыемстваў; заснаваньне новых @@ -661,7 +685,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Выхад ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Наладкі гульні -STR_SETTINGS_MENU_CONFIG_SETTINGS :Пашыраныя наладкі +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Наладкі STR_SETTINGS_MENU_SCRIPT_SETTINGS :Наладкі ШІ / скрыпту STR_SETTINGS_MENU_NEWGRF_SETTINGS :Наладкі NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Наладкі празрыстасьці @@ -687,6 +711,7 @@ STR_FILE_MENU_EXIT :Выхад # map menu STR_MAP_MENU_MAP_OF_WORLD :Мапа сусьвету STR_MAP_MENU_EXTRA_VIEW_PORT :Дадатковае вакно прагляду +STR_MAP_MENU_LINGRAPH_LEGEND :Леґенда грузаперавозак STR_MAP_MENU_SIGN_LIST :Сьпіс таблічак ############ range for town menu starts @@ -769,7 +794,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Пераклю STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Падфарбоўваць блёкі, якія патрабуюць перамалёўкі ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1-е STR_ORDINAL_NUMBER_2ND :2-е STR_ORDINAL_NUMBER_3RD :3-е @@ -785,22 +810,40 @@ STR_ORDINAL_NUMBER_12TH :12-е STR_ORDINAL_NUMBER_13TH :13-е STR_ORDINAL_NUMBER_14TH :14-е STR_ORDINAL_NUMBER_15TH :15-е -STR_ORDINAL_NUMBER_16TH :16-е -STR_ORDINAL_NUMBER_17TH :17-е -STR_ORDINAL_NUMBER_18TH :18-е -STR_ORDINAL_NUMBER_19TH :19-е -STR_ORDINAL_NUMBER_20TH :20-е -STR_ORDINAL_NUMBER_21ST :21-е -STR_ORDINAL_NUMBER_22ND :22-е -STR_ORDINAL_NUMBER_23RD :23-е -STR_ORDINAL_NUMBER_24TH :24-е -STR_ORDINAL_NUMBER_25TH :25-е -STR_ORDINAL_NUMBER_26TH :26-е -STR_ORDINAL_NUMBER_27TH :27-е -STR_ORDINAL_NUMBER_28TH :28-е -STR_ORDINAL_NUMBER_29TH :29-е -STR_ORDINAL_NUMBER_30TH :30-е -STR_ORDINAL_NUMBER_31ST :31-е +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1-е +STR_DAY_NUMBER_2ND :2-е +STR_DAY_NUMBER_3RD :3-е +STR_DAY_NUMBER_4TH :4-е +STR_DAY_NUMBER_5TH :5-е +STR_DAY_NUMBER_6TH :6-е +STR_DAY_NUMBER_7TH :7-е +STR_DAY_NUMBER_8TH :8-е +STR_DAY_NUMBER_9TH :9-е +STR_DAY_NUMBER_10TH :10-е +STR_DAY_NUMBER_11TH :11-е +STR_DAY_NUMBER_12TH :12-е +STR_DAY_NUMBER_13TH :13-е +STR_DAY_NUMBER_14TH :14-е +STR_DAY_NUMBER_15TH :15-е +STR_DAY_NUMBER_16TH :16-е +STR_DAY_NUMBER_17TH :17-е +STR_DAY_NUMBER_18TH :18-е +STR_DAY_NUMBER_19TH :19-е +STR_DAY_NUMBER_20TH :20-е +STR_DAY_NUMBER_21ST :21-е +STR_DAY_NUMBER_22ND :22-е +STR_DAY_NUMBER_23RD :23-е +STR_DAY_NUMBER_24TH :24-е +STR_DAY_NUMBER_25TH :25-е +STR_DAY_NUMBER_26TH :26-е +STR_DAY_NUMBER_27TH :27-е +STR_DAY_NUMBER_28TH :28-е +STR_DAY_NUMBER_29TH :29-е +STR_DAY_NUMBER_30TH :30-е +STR_DAY_NUMBER_31ST :31-е ############ range for days ends ############ range for months starts @@ -973,17 +1016,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Мапа STR_SMALLMAP_TYPE_CONTOURS :Рэльеф STR_SMALLMAP_TYPE_VEHICLES :Транспарт STR_SMALLMAP_TYPE_INDUSTRIES :Прамысловасьць +STR_SMALLMAP_TYPE_ROUTEMAP :Грузавыя плыні STR_SMALLMAP_TYPE_ROUTES :Маршруты STR_SMALLMAP_TYPE_VEGETATION :Расьліннасьць STR_SMALLMAP_TYPE_OWNERS :Уладальнікі STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Паказаць на мапе контуры зямлі STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Паказаць на мапе транспарт STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Паказаць на мапе прамысловасьць +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Паказаць на мапе грузавыя плыні STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Паказаць на мапе маршруты STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Паказаць на мапе расьліннасьць STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Паказаць на мапе уладальнікаў зямлі STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Клiк па тыпе прадпрыемства пераключае яго паказ на мапе. Ctrl+клiк адключае ўсе тыпы, акрамя аднаго выбранага. Паўторны Ctrl+клiк уключае ўсе тыпы прадпрыемстваў. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Клiк па назьве кампанii пераключае паказ яе маёмасьцi на мапе. Ctrl+клiк адключае ўсе кампанii, акрамя адной выбранай. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Пстрычка па назве грузу пераключае бачнасьць гэтага грузу. Ctrl+пстрычка хавае ўсе грузы акрамя выбранага. Паўторная Ctrl+пстрычка адлюстроўвае ўсе грузы. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Дарогі STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Чыгункі @@ -1017,6 +1063,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Паказаць/схаваць назвы гарадоў на мапе STR_SMALLMAP_CENTER :{BLACK}Цэнтраваць мінімапу па гэтай пазыцыі STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Выключыць усё @@ -1027,6 +1074,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Пака STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Адлюстроўваць рэльеф на мапе STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Паказаць маёмасьць, якая не належыць кампанii STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Паказаць усю маёмасьць кампанii на мапе +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Не адлюстроўваць грузы на мапе +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Адлюстроўваць усе віды грузаў на мапе # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Паказаць апошняе паведамленьне ці навіну @@ -1103,13 +1152,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чакае ў дэпо STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чакае ў самалётным анґары -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}У ТС «{VEHICLE}» не хапае заданьняў у раскладзе STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} не мае заданьняў STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} мае дубляваныя заданьні STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} мае няісную станцыю ў заданьнях -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} накіраван{G 0 ы а а ы} у аэрапорт з занадта кароткай паласой STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} састарэў STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} цалкам састарэў @@ -1192,10 +1240,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Грузінс STR_GAME_OPTIONS_CURRENCY_IRR :Іранскі рыал (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Дарожны рух STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Па якім баку дарогі рухаецца аўтатранспарт STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Езьдзіць леваруч @@ -1231,11 +1275,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталён STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Аўтазахаваньне STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Інтэрвал паміж аўтаматычнымі захаваньнямі гульні +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Выключана STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Штомесяц STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Кожныя 3 месяцы STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Кожныя 6 месяцаў STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Кожныя 12 месяцаў +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Выбраць мову інтэрфэйсу @@ -1247,8 +1293,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Выра STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Выбар вырашэньня экрана STR_GAME_OPTIONS_RESOLUTION_OTHER :Iншае -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Фармат здымкаў экрана -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Выбар фармата, у якім будуць захоўвацца здымкі экрана +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Памер элементаў інтэрфейсу +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Выберыце памер элементаў інтэрфейсу + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Звычайны +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Падвоены +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Пачацвяроны STR_GAME_OPTIONS_BASE_GRF :{BLACK}Набор базавай ґрафікі STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбар базавага набору ґрафічных аб'ектаў @@ -1264,6 +1314,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выбе STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} пашкоджан{P ы ых ых} файл{P 0 "" ы аў} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дадатковая інфармацыя аб базавым музычным наборы +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не атрымалася атрымаць сьпіс падтрымліваемых разрозненьняў экрана STR_ERROR_FULLSCREEN_FAILED :{WHITE}Памылка поўнаэкраннага рэжыму # Custom currency window @@ -1342,6 +1393,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Вельмі п STR_TERRAIN_TYPE_FLAT :Раўнінная STR_TERRAIN_TYPE_HILLY :Узгорастая STR_TERRAIN_TYPE_MOUNTAINOUS :Гарыстая +STR_TERRAIN_TYPE_ALPINIST :Выключна горны STR_CITY_APPROVAL_PERMISSIVE :Дазваляючае STR_CITY_APPROVAL_TOLERANT :Памяркоўнае @@ -1349,8 +1401,8 @@ STR_CITY_APPROVAL_HOSTILE :Варожае STR_WARNING_NO_SUITABLE_AI :{WHITE}Модулі штучнага інтэлекту (ШІ/AI) адсутнічаюць.{}Іх можна спампаваць праз сістэму праверкі "анлайн-кантэнту". -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Пашыраныя наладкі +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Наладкі STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Фільтар: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Разгарнуць усё STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Згарнуць усё @@ -1363,11 +1415,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Наладкі STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Наладкі кампаніі (утрымліваюцца ў файлах захаваньняў; сапраўдныя толькі для новых гульняў) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Наладкі кампаніі (утрымліваюцца ў файлах захаваньняў; сапраўдныя толькі для бягучай гульні) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Паказваць: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Адлюстроўваць у сьпісе толькі зьмененыя наладкі -STR_CONFIG_SETTING_RESTRICT_BASIC :Базавыя наладкі -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Пашыраныя наладкі -STR_CONFIG_SETTING_RESTRICT_ALL :Спэцыяльныя наладкі / усе наладкі +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Катэґорыя: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Тып: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Адлюстроўваць у спісе толькі наладкі, якія адпавядаюць абранай катэгорыі +STR_CONFIG_SETTING_RESTRICT_BASIC :Асноўныя наладкі (толькі самыя важныя) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Пашыраныя наладкі (практычна ўсе) +STR_CONFIG_SETTING_RESTRICT_ALL :Спэцыяльныя наладкі (усе, уключаючы самыя незразумелыя) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Наладкі са значэньнямі, якія адрозьніваюцца ад значэньняў па змоўчаньні STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Наладкі са значэньнямі, якія адрозьніваюцца ад наладак новай гульні @@ -1378,6 +1431,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Наладкі STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Наладкі гульні (запісваюцца ў захаваньне; уплываюць толькі на бягучую гульню) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Наладкі кампаніі (запісваюцца ў захаваньні; уплываюць толькі на новыя гульні) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Наладкі кампаніі (запісваюцца ў захаваньне; уплываюць толькі на бягучую кампанію) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Тып BLACK}да {WHITE}Усе тыпы наладак +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} {BLACK}і {SILVER}Тып {BLACK}да {WHITE}Усе тыпы наладак +STR_CONFIG_SETTINGS_NONE :{WHITE}- Няма - STR_CONFIG_SETTING_OFF :не STR_CONFIG_SETTING_ON :так @@ -1412,14 +1469,15 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Усталюй STR_CONFIG_SETTING_RECESSIONS :Спады: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Калі ўключана, спад можа наставаць раз у некалькі гадоў. Падчас спаду ўвесь аб'ём вытворчасьці значна ніжэй (ён вяртаецца да ранейшага ўзроўня, калі спад сканчаецца) STR_CONFIG_SETTING_TRAIN_REVERSING :Забараніць разварот цягнікоў на станцыях: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Калі ўключана, цягнікі ня будуць разварочвацца на прахадных станцыях, нават калі гэта дазволіць скараціць шлях да наступнага пункта прызначэньня +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Калі ўключана, цягнікі ня будуць разварочвацца на прахадных станцыях, нават калі гэта дазволіць скараціць шлях да наступнага пункта прызначэньня. STR_CONFIG_SETTING_DISASTERS :Бедствы: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Пераключыце бедствы, якія могуць час ад часу блякаваць ці зьнішчаць транспартныя сродкі ды інфраструктуру STR_CONFIG_SETTING_CITY_APPROVAL :Стаўленьне гарадзкой рады да рэструктурызацыі навакольляў: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберыце ўзровень шуму й забруджваньня навакольнага асяроддзя кампаніямі, які ўплывае на іх рэйтынґ у гарадах і магчымасьць далейшага будаўніцтва каля гарадоў -STR_CONFIG_SETTING_BUILDONSLOPES :Дазволіць будаўніцтва на сьхілах і на беразе: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Калі ўключана, рэйкі й станцыі ня могуць будавацца на сьхілах. Калі адключана, то можна будаваць на сьхілах, якія адпавядаюць напрамку рэйкаў і таму не патрабуюць фундамэнтаў. +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максімальная вышыня: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Усталёўка максімальна дапушчальнай вышыні гор на мапе +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Немагчыма зьмяніць максімальную вышыню. На мапе ёсць горы вышэй гэтага значэньня. STR_CONFIG_SETTING_AUTOSLOPE :Дазволіць зьмену ляндшафту пад будынкамі, дарогамі й г. д. (аўтаспускі): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Дазволіць зьмену ляндшафту пад будынкамі й рэйкамi, не выдаляючы іx STR_CONFIG_SETTING_CATCHMENT :Зона пакрыцьця залежыць ад тыпу станцыі: {STRING} @@ -1444,16 +1502,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Забаран STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-ґрадусныя павароты здараюцца, калі за гарызантальнымі рэйкамі адразу вынікаюць вэртыкальныя на суседняй клетцы. Цягнік вымушаны паварочваць на 90 ґрадусаў пры перасячэньні клетак замест звычайных 45 ґрадусаў пры іншай камбінацыі каляінаў. Гэта таксама датычыць радыюса паваротаў для караблёў. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Дазволіць аб'яднаньне станцыяў, не прымыкаючых адна да адной: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Дазволіць дадаць частку станцыі, якая непасрэдна не прылягае да існуючых частак. Патрабуе Ctrl+пстрычку пры разьмяшчэньні новых частак. -STR_CONFIG_SETTING_IMPROVEDLOAD :Выкарыстоўваць палепшаны алгарытм загрузкі: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Калі ўключана, некалькі транспартных сродкаў, якія чакаюць на станцыі, загружаюцца пасьлядоўна. Загрузка наступнага пачынаецца, калі на станцыі ёсьць досыць грузу, каб запоўніць парядэдні транспарт. -STR_CONFIG_SETTING_GRADUAL_LOADING :Паступовая загрузка транспарту: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Паступова загружаць транспартныя сродкі, выкарыстоўваючы іх спэцыфічную працялегласьць загрузкі, замест таго каб загрузіць усё адразу за сталы час, які можа залежыць толькі ад колькасьці грузу. STR_CONFIG_SETTING_INFLATION :Уключыць інфляцыю: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Уключыць інфляцыю ў эканоміцы, калі кошты растуць нязначна хутчэй за выплаты -STR_CONFIG_SETTING_SELECTGOODS :Пастаўляць груз на станцыю, толькі калі на яго быў попыт: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Пастаўляць груз на станцыю, калі на яго быў попыт з транспарта, які загружаецца. Гэта прадухіляе кепскія рэйтынґі для грузаў, якія не вывозяцца са станцыі. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максымальная даўжыня мастоў: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Максымальная даўжыня мастоў, якія вы можаце пабудаваць +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Максімальная вышыня мастоў: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Максімальная дапушчальная вышыня мастоў STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максымальная даўжыня тунэляў: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Максымальная даўжыня тунэляў, якія вы можаце пабудаваць STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Мэтад стварэньня сыравінных прадпрыемстваў: {STRING} @@ -1479,8 +1533,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Усталяв STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :на пачатку STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :ў сярэдзіне STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ў канцы -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Аўтатранспарт зьбіраецца ў чаргу каля прыпынка: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Аўтатранспарт будзе чакаць перад прыпынкам, пакуль ён вызваліцца ад іншых машынаў. STR_CONFIG_SETTING_AUTOSCROLL :Перамяшчаць агляд, калі курсор знаходзіцца на краі экрана: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Уключае зрушваньне агляду пры набліжэньні паказальніка мышы да краю экрана STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :няма @@ -1511,10 +1563,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Дазволі STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Дазволіць пабудову на дарогах, якія належаць гораду, прыпынкаў, празь якія можна проста праехаць (не заязжаючы "унутар"). STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Дазволіць будаўніцтва прыпынкаў Ro-Ro на дарогах канкурэнтаў: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Дазволіць пабудову на дарогах, якія належаць іншым кампаніям, прыпынкаў, празь якія можна проста праехаць (не заязжаючы "унутар"). -STR_CONFIG_SETTING_ADJACENT_STATIONS :Дазволіць будаўніцтва сумежных станцыяў: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Дазволіць розным станцыям датыкацца адна да адной. -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Уключыць падтрымку некалькіх транспартных набораў NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Опцыя сумяшчальнасьці для старых набораў ґрафікі. Не адключайце яе, калі вы дакладна ня ведаеце, што робіце! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Зьмена гэтага парамэтру немагчыма, калі ў гульні ёсьць транспартныя сродкі. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Утрыманьне iнфраструктуры: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Калі ўключана, інфраструктура патрабуе выдаткаў на ўтрыманьне. Кошт расьце прапарцыянальна памерам сеткі, таму гэта больш датычыць вялікіх кампаніяў, ніж малых. @@ -1535,7 +1583,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспа STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Калі ўключана, усе мадэлі транспартных сродкаў пасьля з'яўленьня застануцца даступнымі назаўжды. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Аўтазамена старых транспартных сродкаў: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Калі ўключана, транспарт напрыканцы свайго пэўнага тэрміна службы будзе аўтаматычна заменены, калі ўмовы замены будуць выкананыя. -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Аўтаабнаўленьне, калi транспарт дасягне {STRING} макс. узросту +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Аўтазамена транспарта {STRING} заканчэння тэрміна эксплуатацыі STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Адносны ўзрост, калі транспартны сродак будзе разглядацца як той, што патрабуе аўтаўзамены. STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} месяц{P "" ы аў} перад STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} месяц{P "" ы аў} пасьля @@ -1545,35 +1593,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Працягл STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Працялегласьць паказваньня паведамленьняў аб памылках у чырвоным вакне. Зазначце, што некаторыя (крытычныя) паведамленьні ня будуць аўтаматычна зьнікаць пасьля гэтага часу, але мусяць быць закрытымі уручную. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} сэкунд{P а ы аў} STR_CONFIG_SETTING_HOVER_DELAY :Паказваць падказкi: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затрымка перад тым як паказаць падказку, калі мыш завісае над нейкім элемэнтам інтэрфэйсу. Як альтэрнатыва, падказкі могуць паказвацца адразу пасьля пстрычкі правай кнопкай мышшу. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :пачакаўшы {COMMA} сэкунд{P у ы аў} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затрымка паміж навядзеньнем паказальніка мышы на элемент інтэрфейсу і з'яўленьнем падказкі. Калі гэта значэнне роўна 0, падказкі з'яўляюцца па пстрычцы правай кнопкі мышы. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :пры навядзеньні паказальніка на {COMMA} мілісэкунд{P у ы аў} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :па правым кліку STR_CONFIG_SETTING_POPULATION_IN_LABEL :Паказваць колькасьць жыхароў горада ў назьве: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Паказваць у надпісах на мапе колькасьць жыхароў населеных пунктаў адразу пасьля іх назвы. STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Таўшчыня лiнiяў у ґрафiках: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Таўшчыня лініяў ґрафікаў. Тонкая лінія дакладней, тоўстую лягчэй убачыць і адрозьніць колер. +STR_CONFIG_SETTING_LANDSCAPE :Тып карты: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Выбар тыпу мапы вызначае аснову гульнёвага працэсу, напрыклад, даступныя тыпы транспарта і грузаў, розныя ўмовы росту гарадоў. Усё гэта таксама можа быць зменена з дапамогай модуляў NewGRF і гульнёвых скрыптоў. STR_CONFIG_SETTING_LAND_GENERATOR :Ґенэратар зямлі: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Арыгінальны генератар разлічаны на базавы графічны набор і стварае ландшафт з тыпавых элементаў.{}TerraGenesis выкарыстоўвае для стварэння ландшафту шум Перлiна і больш тонка наладжваецца. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Арыґінальны STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Тып ландшафту: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Толькі для TerraGenesis){}Узгоркаватасць ландшафту +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Колькасць прадпрыемстваў: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Выберыце, колькі прадпрыемстваў ствараць напачатку і на якім узроўні падтрымліваць іх колькасць падчас гульні. STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. адлегласьць ад краю мапы да нафтаперапрацоўчых заводаў: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нафтаперапрацоўчыя заводы будуюцца толькі каля краю мапы, у тым ліку на востраве. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Вышыня сьнегавой лініі: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Нароўнасьць ляндшафту (толькі TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Азначце, на якой вышыні ў субарктычным клімаце ўсталёўваецца снегавы полаг. Наяўнасьць снега ўплывае на расстаноўку прадпрыемстваў і на ўмовы росту гарадоў. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Нароўнасьць ляндшафту: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Толькі для TerraGenesis){}Выберыце колькасьць гор і ўзгоркаў на карце. На гладкім ландшафце ўзгоркаў трохі і яны больш пакатыя. На грубым - шмат гор, і ландшафт можа здацца занадта аднастайным. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Вельмі гладкі STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Гладкі STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Грубы STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Вельмі грубы +STR_CONFIG_SETTING_VARIETY :Разнастайнасць ландшафту: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Толькі для TerraGenesis){}Вызначае наяўнасць на карце як горных, так і раўнінных абласцей. Паколькі дадзеная наладка ўплывае толькі на згладжванне карты, астатнія наладкі павінны быць выстаўлены ў горны ландшафт. +STR_CONFIG_SETTING_RIVER_AMOUNT :Колькасць рэк: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Выберыце колькасць рэк на мапе STR_CONFIG_SETTING_TREE_PLACER :Альґарытм расстаноўкі дрэваў: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Выберыце спосаб размеркаваньня дрэў на карце: «арыгінальны» алгарытм высаджвае іх раўнамерна па ўсёй карце; «палепшаны» - групамі. STR_CONFIG_SETTING_TREE_PLACER_NONE :Няма STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Арыґінальны STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Палепшаны +STR_CONFIG_SETTING_ROAD_SIDE :Рух аўтатранспарту: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Выберыце бок дарогі, па якому рухаецца аўтатранспарт STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Кручэньне мапы вышыняў: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :супраць руху гадзіньнікавай стрэлкі STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :па гадзіньнікавай стрэлцы STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Ўзровень вышыні для мапаў з пляскатым рэльефам: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Дазволіць зьмену ляндшафту на краю мапы: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Калі адключана, граніцамі мапы заўсёды будзе акіян. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Адна ці некалькі клетак ў паўночным куце мапы не пустыя STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Адна ці некалькі клетак берага без вады @@ -1594,7 +1656,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Павольн STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Кантралюе, што адбудзецца ў галоўным вакне, калі пстрыкнуць у малым вакне прагляду па нейкай кропцы. Калі ўключана, позірк будзе павольна перамяшчацца па мапе ў галоўным вакне. Калі выключана — экран адразу прыгне ў вызначанае месца. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Паказваць замеры пры будаўніцтве: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Паказваць адлегласьць у клетках і розьніцу ў вышынях, калі нешта будуецца "працяжкай" (з націснутай кнопкай мышы). -STR_CONFIG_SETTING_LIVERIES :Паказваць індывідуальныя афарбоўкі транспарту (два фірмовыя колеры): {STRING} +STR_CONFIG_SETTING_LIVERIES :Паказваць індывідуальную афарбоўку транспарта: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Ўжываньне спэцыфічных афарбовак (ліўрэй) для канкрэтнага тыпу транспартных сродкаў (у адрозьненьне ад фірмовага колеру ўсёй кампаніі). STR_CONFIG_SETTING_LIVERIES_NONE :не STR_CONFIG_SETTING_LIVERIES_OWN :толькі для сваёй кампаніі @@ -1624,17 +1686,15 @@ 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_AUTOSAVE :Аўтазахаваньні: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Азначце інтэрвал паміж аўтаматычнымі захаваньнямі + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Выкарыстоўваць {STRING} фармат даты для імёнаў захаваньняў STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Фармат даты ў назвах захаваных гульняў. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :доўгі (31-е Сту 2008 г.) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :кароткі (31-01-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-01-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Калі ў NewGRF ня вызначана палітра, выкарыстоўваць: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палітра ґрафічных набораў (NewGRF), якая ўжываецца па змоўчаньні, калі ня вызначана ў самім наборы. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :палітру DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :палітру Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Аўтаматычнае ўключэньне паўзы напачатку гульні: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Калі ўключана, распачатая гульня будзе аўтаматычна стаяць на паўзе, дазваляючы блізкае вывучэньне мапы. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Падчас паўзы дазволіць: {STRING} @@ -1643,7 +1703,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :нiчога STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :усе дзеяньні, акрамя будаўніцтва STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :усе дзеяньнi, акрамя зьмяненьня ляндшафту STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :усе дзеяньнi -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Выкарыстоўваць пашыраны сьпіс транспорту: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Паказваць групы ў сьпісе транспарта: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Дазволіць ужываньне пашыранага сьпісу транспартных сродкаў для групаваньня. STR_CONFIG_SETTING_LOADING_INDICATORS :Паказваць індыкатар загрузкі: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Выбраць, ці будуць паказвацца індыкатары загрузкі над транспартам, які грузіцца ці разгружаецца. @@ -1658,7 +1718,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тып чыгу STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :першыя даступныя STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :апошнія даступныя STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :найбольш ужывальныя -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Паказваць каляіны, якія зарэзэрваваў цягнік: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Паказваць зарэзерваваныя каляiны: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Зарэзэрваваныя рэйкі будуць мець адрозны колер. Дапамагае вырашыць праблему, калі цягнік адмаўляецца заехаць у блёк з маршрутнымі сьветлафорамі. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Захоўваць актыўнымі інструмэнты будаўніцтва пасьля ўжываньня: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Захаваць будаўнічыя інструмэнты для мастоў, тунэляў і г.д. пасля выкарыстаньня. @@ -1717,7 +1777,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Інтэрва STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Выбраць, ці залежыць абслугоўваньне транспарту ад даты апошняга абслугоўваньня або ад падзеньня надзейнасьці на пэўны адсотак ад максымальнай. STR_CONFIG_SETTING_SERVINT_TRAINS :Iнтэрвал абслугоўваньня для цягнiкоў: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новых чыгуначных транспартных сродкаў, калі пэўны інтэрвал ня вызначаны для канкрэтнага цягніка. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P зень днi дзён}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P зень днi дзён}/% STR_CONFIG_SETTING_SERVINT_DISABLED :адключана STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Iнтэрвал абслугоўваньня для аўтатранспарту: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новага аўтатранспарту, калі пэўны інтэрвал ня вызначаны для канкрэтнай машыны. @@ -1808,7 +1868,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Дазволі STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Гарадам дазволена будаваць чыгуначныя пераезды: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Уключэньне гэтай наладкі дазваляе гарадам будаваць чыгуначная пераезды. STR_CONFIG_SETTING_NOISE_LEVEL :Гарадам дазволена кантраляваць узровень шуму ад аэрапортаў: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Калі гэта наладка адключаная, у кожным населеным пунце можа быць толькі два аэрапорта. Калі ўключаная — колькасьць аэрапортаў абмяжуецца ўзроўнем шума, які дапускае горад. Гэта, у сваю чаргу, залежыць ад колькасьці насельніцтва, памераў аэрапортаў і адлегласьці да іх. +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Пры выключанай наладцы колькасьць аэрапортаў абмежавана дзвюма на кожны горад. Пры ўключанай - адміністрацыя горада абмяжоўвае толькі ўзровень дапушчальнага шуму (ён залежыць ад колькасці жыхароў). Узровень шуму, вырабленага аэрапортам, залежыць ад яго тыпу і адлегласьці ад цэнтра горада. STR_CONFIG_SETTING_TOWN_FOUNDING :Заснаваньне гарадоў у гульні: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Уключэньне гэтай наладкі дазваляе гульцам фундаваць новыя населеныя пункты падчас гульні. STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :забаронена @@ -1856,35 +1916,90 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 з {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :нiводнае STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Першапачатковы множнік памеру населенага пункта: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Адносная колькасьць гарадоў у параўнаньні з мястэчкамі на пачатку гульні. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Выдаляць абсурдныя элемэнты падчас дарожнага будаўніцтва: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Выдаляць "мёртвыя" канцы дарогаў, якія ўтварыліся пасля рэканструкцыі вуліц. - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Інтэрфэйс -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Будаўніцтва +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Абнаўляць ґраф размеркаваньня раз у {STRING}{NBSP}д{P 0:2 зень ні зён} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Перыяд пераразьліку ґрафаў размеркаваньня. У кожным цыкле разьлічваецца не ґраф цалкам, а толькі адзін зь яго кампанэнтаў. Чым менш гэта значэньне, тым больш будзе нагрузка на працэсар. Чым больш значэньне, тым больш часу пройдзе перад пачаткам разьліку ґрафаў для новых маршрутаў. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Пералічваць ґраф разьмеркаваньня раз у {STRING}{NBSP}д{P 0:2 зень ні зён} +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Час, адведзены для пераразьліку кампанэнтаў ґрафа. Разьлік запускаецца асобным патокам і працягваецца на працягу паказанай колькасьці гульнявых дзён. Калі значэньне будзе надта малым, то, магчыма, разьлік не пасьпее завяршыцца, і гульня будзе чакаць завяршэньня (гэта прывядзе да затрымак). Пры вялікіх значэньнях ґрафы размеркаваньня будуць павольней абнаўляцца пры зьменах маршрутаў. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :уручную +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :несымэтрычнае +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :сымэтрычнае +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Разьмеркаваньне пасажыраў: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :«Сымэтрычнае» азначае, што прыкладна аднолькавая колькасьць пасажыраў будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несымэтрычнае» азначае, што пасажырапатокі ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» — не выкарыстоўваць аўтаматычнае разьмеркаваньне для пасажыраў. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Разьмеркаваньне пошты: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :«Сымэтрычнае» азначае, што прыкладна аднолькавая колькасьць пошты будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несымэтрычнае» азначае, што аб'ёмы пошты ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» — не выкарыстоўваць аўтаматычнае разьмеркаваньне для пошты. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Разьмеркаваньне каштоўных грузаў: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Каштоўныя грузы - гэта каштоўнасьці, алмазы й золата. Модулі NewGRF могуць змяніць вызначэньні грузаў.{}«Сыметрычнае» азначае, што прыкладна аднолькавая колькасьць грузу будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несыметрычнае» азначае, што аб'ёмы грузаў у любых кірунках ня будуць залежаць адзін ад аднаго.{}«Уручную» - не выкарыстоўваць аўтаматычнае размеркаваньне грузаў.{}На субарктычных мапах рэкамендуецца ўсталяваць несіметрычнае ці ручное разьмеркаваньне, бо банкі не вяртаюць золата ў шахты. Ва ўмераным ці субтрапічным клімаце можна ўсталяваць сіметрычнае разьмеркаваньне, бо банкі абменьваюцца каштоўнасьцямі паміж сабой. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Разьмеркаваньне іншых грузаў: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Несымэтрычнае» азначае, што выпадковыя аб'ёмы грузаў могуць быць адпраўлены ў любых кірунках.{}«Уручную» азначае, што ніякага аўтаматычнага разьмеркаваньня для гэтых грузаў ня будзе. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Дакладнасьць разьмеркаваньня: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чым вышэй дадзенае значэньне, тым больш працэсарнага часу выкарыстоўваецца для разьліку ґрафа грузаперавозак. Пры высокіх значэньнях магчымы затрымкі ў гульні. Аднак пры нізкіх значэньнях разлікі грузапатокаў будуць недакладнымі, і грузы, магчыма, будуць адпраўляцца не туды, куды трэба. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Залежнасьць попыту ад адлегласьці: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Калі гэта значэньне больш за 0 — тая колькасьць грузу, што адпраўляецца з адной станцыі на іншую, будзе залежаць ад адлегласьці паміж станцыямі. Чым вышэй гэта значэньне, тым больш грузу будзе адпраўляцца да блізкіх станцый і менш{NBSP} — да далёкіх. +STR_CONFIG_SETTING_DEMAND_SIZE :Колькасьць грузу, што вяртаецца, пры сымэтрычным разьмеркаваньні: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Усталёўка гэтага значэньня ніжэй 100% прымусіць разьмеркаваньне быць меней «сымэтрычным»: колькасьць грузу, які вяртаецца, зможа быць меншай за колькасць адпраўленага. Усталёўка 0% зробіць разьмеркаваньне цалкам несымэтрычным. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Насычэньне кароткіх маршрутаў перад выкарыстаньнем ёмістых: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Пры наяўнасці некалькіх маршрутаў паміж станцыямі альґарытм разьмеркаваньня грузаў будзе выкарыстоўваць карацейшы маршрут да яго насычэньня, потым наступны па даўжыні, пакуль ён таксама не будзе насычаны, і г.{NBSP}д. Насычэньне вызначаецца па ацэнцы ёмістасьці ды плянуемай напружанасьці выкарыстаньня. Калі ўсе шляхі насычаныя, а попыт застаецца, Cargodist будзе перагружаць усе маршруты, аддаючы перавагу больш ёмістым. Збольшага альґарытм ня будзе дакладна вылічваць ёмістасьць. Гэта наладка дазваляе вызнасыць, наколькі загружаць маршрут, перад тым як пачаць выкарыстоўваць даўжэйшы. Усталюйце значэньне ніжэй за 100%, каб пазьбегнуць перагрузкі станцыяў у выпадку, калі прапускная здольнасьць маршруту будзе пераацэнена альґарытмам. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Сыстэма адзінак для хуткасьці: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Паказваць значэньні хуткасьці ў выбранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :ангельскія (міль/г) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :мэтрычная (км/г) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :СІ (м/с) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Сыстэма адзінак для магутнасьці: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Паказваць магутнасьць рухавікоў транспартных сродкаў у выбранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :ангельская (к. с.) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :мэтрычная (к. с.) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :СІ (кВт) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Сыстэма адзінак для масы: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Паказваць значэньні масы ў абранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :ангельская (малая тона) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :мэтрычная (т) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :СІ (кг) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Сыстэма адзінак для аб'ёму: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Паказваць значэньні аб'ёму ў абранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :ангельская (галон) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :мэтрычная (л) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Сыстэма адзінак для цягавага намаганьня: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Паказваць значэньні цягавага намаганьня ў абранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :ангельская (фунт-сіла) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :мэтрычная (кгс) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :СІ (кН) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Сыстэма адзінак для вышыні: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Паказваць значэньні вышыні ў абранай сыстэме адзінак +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :ангельская (фут) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :мэтрычная (м) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СІ (м) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Лакалізацыя +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графіка +STR_CONFIG_SETTING_SOUND :{ORANGE}Гукавыя эфэкты +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Інтэрфэйс +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Агульныя наладкі +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Вокны прагляду +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Будаўніцтва +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Навіны і інфармацыя +STR_CONFIG_SETTING_COMPANY :{ORANGE}Кампанія +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Фінансы STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспарт -STR_CONFIG_SETTING_STATIONS :{ORANGE}Станцыі -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Эканоміка +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Фізічная мадэль +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Абмежаваньні +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Аварыі і катастрофы +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Стварэньне мапы +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Навакольнае асяроддзе +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Гарадская адміністрацыя +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Населеныя пункты +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Прамысловасьць +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Разьмеркаваньне грузаў STR_CONFIG_SETTING_AI :{ORANGE}Канкурэнты -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Наладкі відарысу -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Узаемадзеяньне -STR_CONFIG_SETTING_SOUND :{ORANGE}Гукавыя эфэкты -STR_CONFIG_SETTING_NEWS :{ORANGE}Навіны й паведамленьні -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сыґналы -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Перамяшчэньне грузаў STR_CONFIG_SETTING_AI_NPC :{ORANGE}Кампутарныя гульцы -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Аўтаабнаўленьне -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Абслугоўваньне -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Цягнікі -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Населеныя пункты -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Прамысловасьць STR_CONFIG_SETTING_PATHFINDER_OPF :арыґінальны STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1933,7 +2048,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Сетк STR_INTRO_GAME_OPTIONS :{BLACK}Наладкі гульні STR_INTRO_HIGHSCORE :{BLACK}Табліца рэкордаў -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Пашыраныя наладкі +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Наладкі STR_INTRO_NEWGRF_SETTINGS :{BLACK}Наладкi NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Праверыць анлайн-кантэнт STR_INTRO_SCRIPT_SETTINGS :{BLACK}Наладкі ШІ / скрыпту @@ -1953,7 +2068,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Выбр STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Паказаць наладкі гульні STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Паказаць табліцу рэкордаў -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Паказаць пашыраныя наладкі +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Акно наладак STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Паказаць наладкі NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Праверыць новы й абноўлены кантэнт, каб спампаваць STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Зьмяніць наладкі ШІ ды гульнёвага скрыпту @@ -1993,6 +2108,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Гул STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Чароўны дынамiт (знос УСЯГО): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Тунэлi могуць перасякацца: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Вялікія самалёты радзей разьбіваюцца ў малых аэрапортах: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Зьмяніць макс. вышыню мапы: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Зьмяніць максімальную вышыню гор на мапе STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :умераны ляндшафт STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :субарктычны ляндшафт STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :субтрапічны ляндшафт @@ -2041,6 +2158,7 @@ STR_LIVERY_FREIGHT_TRAM :Грузавы STR_FACE_CAPTION :{WHITE}Выбар твару STR_FACE_CANCEL_TOOLTIP :{BLACK}Скасаваць выбар новага твару STR_FACE_OK_TOOLTIP :{BLACK}Прыняць выбар новага твару +STR_FACE_RANDOM :{BLACK}Выпадковая STR_FACE_MALE_BUTTON :{BLACK}Мужчынскі STR_FACE_MALE_TOOLTIP :{BLACK}Выбар мужчынскіх твараў @@ -2096,6 +2214,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Зьмя # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Сеткавая гульня +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Інтэрнэт +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Выберыце паміж гульнёй праз Інтэрнэт або ў лакальнай сетцы +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Не +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Так STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Імя гульца: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Гэта ваша імя, якое будзе бачна іншым гульцам @@ -2154,11 +2276,13 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Назв STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Усталяваць пароль STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Абараніце вашу гульню паролем, калі ня хочаце рабіць яе публічна даступнай +STR_NETWORK_START_SERVER_UNADVERTISED :Не +STR_NETWORK_START_SERVER_ADVERTISED :Так STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клiент{P "" ы аў} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клiентаў: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. колькасьць клiентаў: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Выбар максымальнай колькасьці кліентаў. Ня ўсе месцы павінны быць занятыя STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} кампанi{P я i яў} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Макс. кампанiяў: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Макс. колькасьць кампанiяў: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Абмежаваць максымальную колькасьць кампаніяў на сэрвэры STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} назіральнік{P "" i аў} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Макс. назіральнiкаў: @@ -2274,6 +2398,7 @@ STR_NETWORK_CLIENT :Кліент STR_NETWORK_SPECTATORS :Назіральнікі STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Увядзіце суму грошай, якую вы хочаце перадаць +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Назіральнік # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не захоўваць уведзены пароль @@ -2482,8 +2607,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Пера STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Зрабіць аб'екты не празрыстымі, а цалкам нябачнымі # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Схема грузапатокаў +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Усе +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Няма +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Выберыце кампаніі для адлюстраваньня # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}нявыкарыст. +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}насычана +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}перагруз # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Падсьветка зоны пакрыцьця @@ -2512,7 +2644,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Буда STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Будаўніцтва дэпо (для пакупак і абслугоўваньня цягнікоў). Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Усталяваць на рэйках пункт шляху. Націсьненьне Ctrl дазваляе аб'ядноўваць пункты шляху. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Будаўніцтва чыгуначных станцыяў. Націсьненьне Ctrl дазваляе аб'ядноўваць станцыі. Пры націснутым Shift — ацэнка кошту будаўніцтва. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Усталяваць чыгуначныя сыґналы. Націсьненьне Ctrl пераключае сэмафоры/сьветлафоры.{}Цяганьнем можна будаваць сыґналы на прамым участку каляіны. Ctrl будуе сыґналы да бліжэйшага скрыжаваньня. {}Ctrl+клік пераключае адкрыцьцё мэню выбару сыґналаў. Пры націснутым Shift — ацэнка кошту будаўніцтва. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Усталёўка сыгналаў. Ctrl пераключае семафоры/святлафоры.{}Перацягваньнем можна будаваць сыгналы на прамым участку шляху. З націснутым Ctrl - будаўніцтва сыгналаў да найблізкага скрыжаваньня ці сыгналу.{}Ctrl+пстрычка пераключае адкрыццё акна выбару сыгналаў. Пры націснутым Shift - ацэнка кошту будаўніцтва. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Будаўніцтва чыгуначных мастоў. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Будаўніцтва чыгуначных тунэляў. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Пераключэньне паміж будаўніцтвам і выдаленьнем чыгуначных рэйкаў, сыґналаў, станцыяў. Пры націснутым Ctrl станцыі ліквідуюцца разам з рэйкамі. @@ -2791,6 +2923,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Прымае: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Макс. хуткасьць чыгункi: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Макс. хуткасьць аўтамабіляў: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Камяні @@ -2887,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-2013 Каманда распрацоўнікаў OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2015 Каманда распрацоўнікаў OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню @@ -2906,6 +3039,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Заха STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Захаваць гульню пад выбранай назвай STR_SAVELOAD_LOAD_BUTTON :{BLACK}Загрузіць STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Загрузіць выбраную гульню +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Загрузіць выбраную мапу вышыняў STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Зьвесткі аб гульні STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Няма зьвесткаў. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2921,13 +3055,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Колькасьць гарадоў: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Колькасьць прадпрыемстваў: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Макс. вышыня мапы: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Павялічыць максімальную вышыню мапы на 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Паменшыць максімальную вышыню мапы на 1 STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Вышыня сьнегавой лініі: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Падняць сьнегавую лінію STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Апусьціць сьнегавую лінію -STR_MAPGEN_RANDOM_SEED :{BLACK}Выпадковая лічба: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Пстрыкніце тут, каб увесьці адвольную пачатковую лічбу. Ляндшафт ствараецца псэўдавыпадкова, лічба — апорная кропка ў пасьлядоўнасьці выпадковых лічбаў. -STR_MAPGEN_RANDOM :{BLACK}Выпадковая -STR_MAPGEN_RANDOM_HELP :{BLACK}Зьмяніць выпадковую лічбу, якую выкарыстоўвае ґенэратар ляндшафту STR_MAPGEN_LAND_GENERATOR :{BLACK}Ґенэратар ляндшафту: STR_MAPGEN_TREE_PLACER :{BLACK}Альґарытм дрэваў: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тып ляндшафту: @@ -2954,7 +3087,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назв STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Памер: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Увядзіце выпадковую лiчбу +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Максімальная вышыня мапы STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Зьмяніць вышыню сьнегавой лініі STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Зьмяніць год пачатку гульні @@ -3009,6 +3142,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Увер STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Перамясьціць выбраны файл NewGRF вышэй STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Уніз STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Перамясьціць выбраны файл NewGRF ніжэй +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Абнавіць +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Абнавіць файлы модуляў NewGRF, калі ёсць такая магчымасьць STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Сьпіс устаноўленых файлаў NewGRF. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Усталяваць парамэтры @@ -3033,6 +3168,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Файл STR_NEWGRF_SETTINGS_DISABLED :{RED}Адключана STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Несумяшчальна з дадзенай вэрсіяй OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Захаванне набору +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Сьпіс даступных набораў. Выберыце адзін з іх, каб скапіяваць яго назву ў радок імя. +STR_SAVE_PRESET_TITLE :{BLACK}Увядзіце імя набору +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Бягучае імя для захаваньня набору +STR_SAVE_PRESET_CANCEL :{BLACK}Адмена +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не рабіць ніякіх змен +STR_SAVE_PRESET_SAVE :{BLACK}Захаваць +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Захаваць набор пад выбраным імем + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Зьмяніць парамэтры NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрыць @@ -3056,14 +3201,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Пара # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выраўноўваньне спрайта {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступны спрайт -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перайсьці да наступнага нармальнага спрайта, прапускаючы псэўдаспрайты, а таксама зьмяненьнi колеру/шрыфтавыя. +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перайсьці да наступнага звычайнага спрайта, прапускаючы змяняючыя колер, шрыфтавыя, псэўдаспрайты. Пераход з канца сьпісу да першага спрайта. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перайсьці да спрайта STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Перайсьці да зададзеных спрайту. Калі спрайт не нармальны, пераход адбудзецца да наступнага нармальнага. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Папярэдні спрайт -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перайсьці да папярэдняга нармальнага спрайту, прапускаючы псэўдаспрайты, а таксама зьмяненьнi колеру/шрыфтавыя. +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перайсьці да папярэдняга звычайнага спрайта, прапускаючы змяняючыя колер, шрыфтавыя, псэўдаспрайты. Пераход з пачатку сьпісу да апошняга спрайта. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Прадстаўленьне выбранага спрайта. Выраўноўваньне не ўлічваецца пры прарысоўцы гэтага спрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Рухайце спрайт, зьмяняючы зрушэньне па X і па Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Зрушэньне па X: {NUM}, зрушэньне па Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Скід зрушэння +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Скінуць значэнні адноснага зрушэння +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Зрушэнне X: {NUM}; зрушэнне Y: {NUM} (абсалютнае) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Зрушэнне X: {NUM}; зрушэнне Y: {NUM} (адноснае) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Выбраць спрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Абярыце любы спрайт на экране @@ -3120,6 +3268,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Файлы STR_NEWGRF_BROKEN :{WHITE}Файл NewGRF «{0:STRING}» можа прывесьці да страты сынхранізацыі й крушэньня гульні. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Мяняецца стан лакаматыва «{1:ENGINE}», які знаходзіцца па-за дэпо. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Мяняецца даўжыня транспарту «{1:ENGINE}», які знаходзіцца па-за дэпо. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Гэта зьмяніла ёмістасьць транспарту '{1:ENGINE}', калі не ў дэпо для пераабсталяваньня STR_BROKEN_VEHICLE_LENGTH :{WHITE}Цягнік «{VEHICLE}», які належыць «{COMPANY}», мае няправільную даўжыню. Верагодна, гэта выклікана праблемамі ў файле новай ґрафікі. Гульня можа рассынхранізавацца або «выляцець». STR_NEWGRF_BUGGY :{WHITE}NewGRF «{0:STRING}» падае няправільную інфармацыю. @@ -3134,6 +3283,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <нев STR_NEWGRF_INVALID_ENGINE :<няправільная мадэль> STR_NEWGRF_INVALID_INDUSTRYTYPE :<невядомае прадпрыемства> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<недапушчальны ТС> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Сканаваньне NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Ідзе сканаваньне NewGRF. Гэта зойме некаторы час... @@ -3171,8 +3323,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} дастаўлена STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (недастаткова) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (дастаткова) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Горад расьце раз у {ORANGE}{COMMA}{BLACK} д{P зень нi зён} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Горад расьце раз у {ORANGE}{COMMA}{BLACK} д{P зень нi зён} (прафінансавана) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Горад расьце раз у {ORANGE}{COMMA}{BLACK}{NBSP}д{P зень нi зён} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Горад расьце раз у {ORANGE}{COMMA}{BLACK}{NBSP}д{P зень нi зён} (прафінансавана) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Горад {RED}не{BLACK} разьвіваецца STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Узровень шуму ў горадзе: {ORANGE}{COMMA}{BLACK} Макс: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Паказаць горад у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. @@ -3215,9 +3367,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Куп STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Даць хабар гарадзкой адміністрацыі для павышэньня рэйтынґу. Існуе рызыка санкцыяў, калі факт хабару раскрыецца.{}Кошт: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}Задачы кампаніі «{COMPANY}» +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Глабальныя задачы STR_GOALS_GLOBAL_TITLE :{BLACK}Агульныя задачы: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Няма - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Непрыстасоўна - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Задачы кампаніі: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Пстрыкніце па задачы, каб паказаць прадпрыемства/горад/клетку. Ctrl+пстрычка паказвае ў новым вакне. @@ -3227,7 +3384,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Інфарма STR_GOAL_QUESTION_CAPTION_WARNING :Папярэджаньне STR_GOAL_QUESTION_CAPTION_ERROR :Памылка -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Адмова STR_GOAL_QUESTION_BUTTON_OK :Так STR_GOAL_QUESTION_BUTTON_NO :Не @@ -3246,6 +3403,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Пачаць і STR_GOAL_QUESTION_BUTTON_POSTPONE :Адкласьцi STR_GOAL_QUESTION_BUTTON_SURRENDER :Здацца STR_GOAL_QUESTION_BUTTON_CLOSE :Закрыць +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсыдыі: @@ -3257,6 +3415,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Націсьніце на маршрут для адлюстраваньня прадпрыемства/горада. Ctrl+пстрычка паказвае ў дадатковым вакне. # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Гісторыя кампаніі «{COMPANY}» +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Сусьветная гісторыя +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Стар. {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перайсьці на патрэбную старонку, выбраўшы яе ў выпадаючым сьпісе. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Папярэдняя +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Папярэдняя старонка +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Наступная +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Наступная старонка +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Няправільная спасылка на дасягненьне # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Сьпіс станцыяў: пстрычка па назьве паказвае станцыю ў асноўным вакне. Ctrl+клiк паказвае ў дадатковым вакне. @@ -3271,7 +3439,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}На с # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чакае: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} транзітам з {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} зарэзэрвавана для грузу) @@ -3285,8 +3452,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рэйтынґ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Паказаць рэйтынґ станцыі - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Месячны аб'ём паставак і мясцовы рэйтынґ: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Групаваць +STR_STATION_VIEW_WAITING_STATION :па станцыі (якія чакаюць) +STR_STATION_VIEW_WAITING_AMOUNT :па колькасьці (якія чакаюць) +STR_STATION_VIEW_PLANNED_STATION :па станцыі (плянаваныя) +STR_STATION_VIEW_PLANNED_AMOUNT :па колькасьці (плянаваныя) +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} з {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} праз {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} у {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} зь невядомай станцыі +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} на любую станцыю +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} праз любую станцыю +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} з гэтай станцыі +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} праз гэту станцыю +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} на гэту станцыю +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} без перасадак + +STR_STATION_VIEW_GROUP_S_V_D :Адкуль — Праз — Куды +STR_STATION_VIEW_GROUP_S_D_V :Адкуль — Куды — Праз +STR_STATION_VIEW_GROUP_V_S_D :Праз — Адкуль — Куды +STR_STATION_VIEW_GROUP_V_D_S :Праз — Куды — Адкуль +STR_STATION_VIEW_GROUP_D_S_V :Куды — Адкуль — Праз +STR_STATION_VIEW_GROUP_D_V_S :Куды — Праз — Адкуль ############ range for rating starts STR_CARGO_RATING_APPALLING :Жудасны @@ -3429,6 +3619,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Выра STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% перавезена) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Паказаць прадпрыемства ў асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Прадукцыйнасьць: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Прадпрыемства хутка закрываецца! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING} @@ -3491,12 +3682,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Бяз груп STR_GROUP_DEFAULT_SHIPS :Бяз групы STR_GROUP_DEFAULT_AIRCRAFTS :Бяз групы -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Клікніце па назьве групы, каб убачыць сьпіс транспарту +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ґрупы — клікніце па назьве ґрупы, каб убачыць сьпіс транспарту ў гэтай ґрупе. Націсьніце ды перацягвайце ґрупы, каб упарадкаваць гіерархію. STR_GROUP_CREATE_TOOLTIP :{BLACK}Стварыць групу STR_GROUP_DELETE_TOOLTIP :{BLACK}Выдаліць выбраную групу STR_GROUP_RENAME_TOOLTIP :{BLACK}Перайменаваць выбраную групу STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Абарона транспарту ў групе ад глабальнай аўтазамены +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Выдаліць ґрупу +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Вы ўпэўнены, што жадаеце выдаліць гэту ґрупу з усімі вытворнымі? + STR_GROUP_ADD_SHARED_VEHICLE :Дадаць транспарт з агульнымі заданьнямі STR_GROUP_REMOVE_ALL_VEHICLES :Выдаліць усе @@ -3534,10 +3728,10 @@ STR_PURCHASE_INFO_ALL_BUT :Усё, акр STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. цягавае намаганьне: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Далёкасьць: {GOLD}{COMMA} клет{P ка кi ак} -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Выбар ваґонаў: клікніце для даведкі -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Сьпiс аўтатранспарту: націсьніце для атрыманьня даведкі -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Сьпiс караблёў: націсьніце для атрыманьня даведкі -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Сьпіс паветраных судоў: пстрыкніце для атрыманьня інфармацыі +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Сьпіс лакаматываў і вагонаў - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа ТС. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Сьпіс аўтатранспарту - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа выбраны аўтамабіль. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Сьпіс караблёў - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа выбраны карабель. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Сьпіс паветраных судоў: пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа ТС. STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купіць STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купіць @@ -3559,6 +3753,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Зьмя STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Зьмяніць назву мадэлі карабля STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Зьмяніць назву мадэлі паветр. судна +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Схаваць +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Схаваць +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Схаваць +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Схаваць + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Паказаць +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Паказаць +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Паказаць +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Паказаць + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Пераключыць скрываньне/адлюстраваньне выбранага лакаматыва/вагона +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Пераключыць скрываньне/адлюстраваньне выбранай мадэлі аўтамабіля +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Пераключыць скрываньне/адлюстраваньне выбранай мадэлі карабля +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Пераключыць скрываньне/адлюстраваньне выбранай мадэлі паветранага судна + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Назва мадэлі цягнiка STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Назва мадэлі аўтамабiля STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Назва мадэлі карабля @@ -3612,7 +3821,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Капі STR_DEPOT_CLONE_SHIP :{BLACK}Капіяваць карабель STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Капіяваць авіятранспарт -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Стварыць копію састава. Націсьніце на кнопку, а затым на цягнік унутры ці звонку дэпо. Ctrl+пстрычка створыць цягнік з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Стварыць копію састава. Націсьніце на кнопку, а затым на цягнік усярэдзіне ці знадворку дэпо. Ctrl+пстрычка створыць цягнік з агульным маршрутам. Shift+пстрычка - ацэнка кошту куплі. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Стварыць копію аўтамабіля. Націсьніце на кнопку, а затым на машыну ўнутры ці звонку гаража. Ctrl+пстрычка створыць аўтамабіль з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Стварыць копію карабля. Націсьніце на кнопку, а затым на карабель унутры ці звонку дока. Ctrl+пстрычка створыць карабель з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Стварыць копію паветр. судна. Націсьніце на кнопку, а потым на паветр. судна ўнутры ці звонку анґара. Ctrl+пстрычка створыць копію з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. @@ -3683,6 +3892,11 @@ STR_REPLACE_VEHICLE_AIRCRAFT :{G=m}Павет STR_REPLACE_VEHICLE_AIRCRAFT.gen :паветранага транспарту STR_REPLACE_VEHICLE_AIRCRAFT.acc :паветраны транспарт +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Наяўныя ТС +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Тут пералічаны мадэлі выкарыстоўваемых транспартных сродкаў +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Даступныя ТС +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Тут пералічаны мадэлі транспартных сродкаў, даступныя для замены + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Выбар тыпу транспарту для замены STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Выбар тыпу транспарту, на які варта замяніць @@ -3807,7 +4021,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ёмiс STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Выручка перавозкі: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Агляд кожныя {LTBLUE}{COMMA} дзён{BLACK} Апошнi раз: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Агляд кожныя {LTBLUE}{COMMA}{NBSP}дзён{BLACK} Апошнi раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Агляд кожныя {LTBLUE}{COMMA}%{BLACK} Апошнi раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Павялiчыць інтэрвал абслугоўваньня на 10. Ctrl+клік — павялічыць інтэрвал абслугоўваньня на 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Зьменшыць інтэрвал абслугоўваньня на 10. Ctrl+клік — паменшыць інтэрвал абслугоўваньня на 5. @@ -3905,8 +4119,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Зьмя STR_ORDER_REFIT :{BLACK}Пераабсталяваць STR_ORDER_REFIT_TOOLTIP :{BLACK}Выберыце тып грузу для пераабсталяваньня. Ctrl+клік — для выдаленьня заданьня. -STR_ORDER_REFIT_AUTO :{BLACK}Аўтаматычнае пераабсталяваньне -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Выберыце груз для пераабсталяваньня ў гэтым заданьнi. Ctrl+Клiк — скасаваньне. Аўтаматычнае пераабсталяваньне адбудзецца, толькi калi транспарт гэта дазваляе +STR_ORDER_REFIT_AUTO :{BLACK}Пераабсталяваньне +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Выберыце тып грузу для пераабсталяваньня. Яно будзе праведзена, калі ТС дазваляе гэта зрабіць. Ctrl+пстрычка адменіць пераабсталяваньне. STR_ORDER_DROP_REFIT_AUTO :Нязьменны груз STR_ORDER_DROP_REFIT_AUTO_ANY :Даступны груз @@ -3997,18 +4211,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Не разг STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Не разгружацца й чакаць поўнай загрузкі любым грузам) STR_ORDER_NO_UNLOAD_NO_LOAD :(Не разгружацца й не грузіцца) -STR_ORDER_AUTO_REFIT :(Пераабсталяваньне для {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Поўная загрузка з пераабсталяваньнем для {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Поўная загрузка любым грузам з пераабсталяваньнем для {STRING}) -STR_ORDER_UNLOAD_REFIT :(Разгрузіць і забраць груз з пераабсталяваньнем для {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Разгрузіць і чакаць поўнай загрузкі з пераабсталяваньнем для {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Разгрузіць і чакаць любой поўнай загрузкі з пераабсталяваньнем для {STRING}) -STR_ORDER_TRANSFER_REFIT :(Перадаць i забраць груз з пераабсталяваньнем для {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Перадаць i чакаць поўнай загрузкi з пераабсталяваньнем для {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Перадаць i чакаць любой поўнай загрузкi з пераабсталяваньнем для {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Не разгружацца й забраць груз з пераабсталяваньнем для {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не разгружацца й чакаць поўнай загрузкi з пераабсталяваньнем для {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Не разгружацца й чакаць любой поўнай загрузкi з пераабсталяваньнем для {STRING}) +STR_ORDER_AUTO_REFIT :(Пераабстал. пад {STRING.acc}) +STR_ORDER_FULL_LOAD_REFIT :(Пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі любым грузам) +STR_ORDER_UNLOAD_REFIT :(Разгрузіцца, пераабстал. пад {STRING.acc} і забраць груз) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Разгрузіцца, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Разгрузіцца, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі любым грузам) +STR_ORDER_TRANSFER_REFIT :(Перадаць, пераабстал. пад {STRING.acc} і забраць груз) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Перадаць, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Перадаць, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі любым грузам) +STR_ORDER_NO_UNLOAD_REFIT :(Не разгружацца, пераабстал. пад {STRING.acc} і забраць груз) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не разгружацца, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Не разгружацца, пераабстал. пад {STRING.acc} і чакаць поўнай загрузкі любым грузам) STR_ORDER_AUTO_REFIT_ANY :даступны груз @@ -4037,10 +4251,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Час у шл STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Рухацца не хутчэй за {2:VELOCITY} (расклад ня вызначаны) STR_TIMETABLE_TRAVEL_FOR :Час у шляху — {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Рухацца да {STRING} не хутчэй за {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :У дарозе прыкладна {STRING} (графік не складзены) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Ісці прыкладна {STRING} з хуткасцю не больш за {VELOCITY} (графік не складзены) +STR_TIMETABLE_STAY_FOR_ESTIMATED :(чакаць {STRING}, графік не складзены) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(у дарозе {STRING}, графік не складзены) STR_TIMETABLE_STAY_FOR :і чакаць {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :і рухацца да {STRING} -STR_TIMETABLE_DAYS :{COMMA} д{P зень нi зён} -STR_TIMETABLE_TICKS :{COMMA} цiк{P "" i аў} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}д{P зень нi зён} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}цiк{P "" i аў} STR_TIMETABLE_TOTAL_TIME :{BLACK}Увесь маршрут зойме {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Рух па маршруце зойме {STRING} (ня ўсё ўлічана) @@ -4052,6 +4270,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ґраф STR_TIMETABLE_STATUS_START_AT :{BLACK}Адлік часу пачнецца з {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Пачатковая дата +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберыце пачатковую дату для гэтага ґрафіка. Ctrl+пстрычка ўсталюе пачатковую дату і раўнамерна разьмяркуе ўсе транспартныя сродкі, якія рухаюцца па гэтым маршруце, калі час руху па ім цалкам разьлічаны. STR_TIMETABLE_CHANGE_TIME :{BLACK}Зьмяніць час STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час для вылучанага заданьня @@ -4165,6 +4384,8 @@ STR_AI_SETTINGS_START_DELAY :Колькас STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} iнструкцыя {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} сьпiс зьменаў {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} ліцэнзія {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Пераносіць тэкст +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Пераносіць тэкст так, каб ён зьмяшчаўся ў вакне без неабходнасьці пракруткі STR_TEXTFILE_VIEW_README :{BLACK}Прагледзець iнструкцыю STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Журнал зьменаў STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ліцэнзія @@ -4275,6 +4496,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Земл STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Ужо на ўзроўні мора STR_ERROR_TOO_HIGH :{WHITE}Занадта высока STR_ERROR_ALREADY_LEVELLED :{WHITE}... ужо роўна +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Пасля гэтага вышыня моста будзе недапушчальна вялікай # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Немагчыма зьмяніць назву кампаніі... @@ -4301,7 +4523,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... за STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... занадта блізка да іншага горада STR_ERROR_TOO_MANY_TOWNS :{WHITE}... занадта шмат гарадоў STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... няма месца на мапе -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Гарады ня будуць будаваць дарогі. Вы можаце ўключыць будаўніцтва дарог у мэню: Пашыр. наладкi->Эканоміка->Гарады. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Гарады ня будуць будаваць дарогі самі. Вы можаце ўключыць будаўніцтва дарог у раздзеле «Наладкі -> Навак.{NBSP}асяроддзе -> Гарады». STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Ідуць дарожныя работы... STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Немагчыма зьнішчыць горад:{}да яго адносіцца станцыя або дэпо, альбо немагчыма ачысьціць адну з занятых ім клетак. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... у цэнтры горада няма месца для статуі @@ -4325,6 +4547,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ле STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... магчыма пабудаваць толькi вышэй за сьнегавую лiнiю STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... магчыма пабудаваць толькi нiжэй за сьнегавую лiнiю +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Няма прыдатных месцаў для прамысловасьці "{STRING}" +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Змяніце наладкі стварэньня мапы для атрыманьня лепшай мапы + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Тут немагчыма пабудаваць чыгуначную станцыю... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Тут немагчыма пабудаваць аўтобусны прыпынак... @@ -4461,6 +4686,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Спач STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ня можа пачынацца й заканчвацца ў той жа кропцы STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Апоры моста павінны быць на адным узроўні STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Занадта нізкі мост +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Масты такой вышыні будаваць нельга. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Пачатак і канец павінны быць на адной лініі STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... абодва канца моста павінны абапірацца на зямлю STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... мост занадта доўгі @@ -4487,6 +4713,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... Вы STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Не атрымалася стварыць групу... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Не атрымалася выдаліць групу... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Не атрымалася перайменаваць групу... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Немагчыма ўсталяваць "бацькоўскую" (вышэйстаячую) ґрупу... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Не атрымалася выдаліць увесь транспарт з групы... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Не атрымалася дадаць транспарт у групу... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Не атрымалася дадаць транспарт з агульнымі заданьнямі ў групу... @@ -4542,6 +4769,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не а STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспартны сродак зьнішчаны +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Усе транспартныя сродкі будуць недаступныя +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Зьмяніце канфігурацыю модуля NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма даступных транспартных сродкаў +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Пачніце гульню пасьля {DATE_SHORT} або падключыце NewGRF з транспартам адпаведных часоў. # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Немагчыма іґнараваць сыґнал. Небясьпечна... @@ -4586,14 +4817,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не а STR_DESKTOP_SHORTCUT_COMMENT :Эканамічны сімулятар на аснове «Transport Tycoon Deluxe» # Translatable descriptions in media/baseset/*.ob* files -STR_BASEGRAPHICS_DOS_DESCRIPTION :Арыгінальная графіка з Transport Tycoon Deluxe для DOS. -STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS. -STR_BASEGRAPHICS_WIN_DESCRIPTION :Арыгінальная графіка з Transport Tycoon Deluxe для Windows. -STR_BASESOUNDS_DOS_DESCRIPTION :Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. -STR_BASESOUNDS_WIN_DESCRIPTION :Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. -STR_BASESOUNDS_NONE_DESCRIPTION :"Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў. -STR_BASEMUSIC_WIN_DESCRIPTION :Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. -STR_BASEMUSIC_NONE_DESCRIPTION :"Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі. +STR_BASEGRAPHICS_DOS_DESCRIPTION :Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :"Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў. +STR_BASEMUSIC_WIN_DESCRIPTION :Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :"Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі. ##id 0x2000 # Town building names @@ -4837,7 +5068,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Танк-пар STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :Цеплавоз MJS 250 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Паравоз Ploddyphut «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Паравоз Powernaut «Чу-Чу» -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паравоз Mightymover «Чу-Чу» +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паравоз MightyMover «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Цеплавоз Ploddyphut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Цеплавоз Powernaut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Паравоз Wills 2-8-0 @@ -5046,7 +5277,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пасажыр. STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пасажыр. судна Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Сухагруз Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Сухагруз Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухагруз Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухагруз MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Сухагруз Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -5140,6 +5371,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (схаван{G 0 "ы" "а" "а" "ыя"}) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5163,6 +5395,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -5174,8 +5407,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5186,9 +5417,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 6a6466d2b3..166eb32283 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -33,7 +33,7 @@ STR_CARGO_PLURAL_COAL :{G=m}Carvão STR_CARGO_PLURAL_MAIL :{G=f}Correspondências STR_CARGO_PLURAL_OIL :{G=m}Petróleo STR_CARGO_PLURAL_LIVESTOCK :{G=m}Gado -STR_CARGO_PLURAL_GOODS :{G=f}Mercadorias +STR_CARGO_PLURAL_GOODS :{G=f}Bens STR_CARGO_PLURAL_GRAIN :{G=m}Cereais STR_CARGO_PLURAL_WOOD :{G=f}Madeira STR_CARGO_PLURAL_IRON_ORE :{G=m}Minério de Ferro @@ -67,7 +67,7 @@ STR_CARGO_SINGULAR_COAL :{G=m}Carvão STR_CARGO_SINGULAR_MAIL :{G=f}Correspondência STR_CARGO_SINGULAR_OIL :{G=m}Petróleo STR_CARGO_SINGULAR_LIVESTOCK :{G=m}Gado -STR_CARGO_SINGULAR_GOODS :{G=m}Mercadorias +STR_CARGO_SINGULAR_GOODS :{G=m}Bens STR_CARGO_SINGULAR_GRAIN :{G=m}Cereais STR_CARGO_SINGULAR_WOOD :{G=f}Madeira STR_CARGO_SINGULAR_IRON_ORE :{G=m}Minério de Ferro @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :{G=m}Refrigeran # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passageiro{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passageiro{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de carvão -STR_QUANTITY_MAIL :{COMMA} bolsa{P "" s} de correspondência +STR_QUANTITY_MAIL :{COMMA}{NBSP}bolsa{P "" s} de correspondência STR_QUANTITY_OIL :{VOLUME_LONG} de petróleo -STR_QUANTITY_LIVESTOCK :{COMMA} cabeça{P "" s} de gado -STR_QUANTITY_GOODS :{COMMA} caixa{P "" s} de mercadorias +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}cabeça{P "" s} de gado +STR_QUANTITY_GOODS :{COMMA}{NBSP}caixa{P "" s} de bens STR_QUANTITY_GRAIN :{WEIGHT_LONG} de cereais STR_QUANTITY_WOOD :{WEIGHT_LONG} de madeira STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de minério de ferro STR_QUANTITY_STEEL :{WEIGHT_LONG} de aço -STR_QUANTITY_VALUABLES :{COMMA} bolsa{P "" s} de objetos de valor +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bolsa{P "" s} de objetos de valor STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de minério de cobre STR_QUANTITY_MAIZE :{WEIGHT_LONG} de milho STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fruta -STR_QUANTITY_DIAMONDS :{COMMA} bolsa{P "" s} de diamantes +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bolsa{P "" s} de diamantes STR_QUANTITY_FOOD :{WEIGHT_LONG} de alimentos STR_QUANTITY_PAPER :{WEIGHT_LONG} de papel -STR_QUANTITY_GOLD :{COMMA} bolsa{P "" s} de ouro +STR_QUANTITY_GOLD :{COMMA}{NBSP}bolsa{P "" s} de ouro STR_QUANTITY_WATER :{VOLUME_LONG} de água STR_QUANTITY_WHEAT :{WEIGHT_LONG} de trigo STR_QUANTITY_RUBBER :{VOLUME_LONG} de borracha STR_QUANTITY_SUGAR :{WEIGHT_LONG} de açúcar -STR_QUANTITY_TOYS :{COMMA} brinquedo{P "" s} -STR_QUANTITY_SWEETS :{COMMA} pacote{P "" s} de doces +STR_QUANTITY_TOYS :{COMMA}{NBSP}brinquedo{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}pacote{P "" s} de doces STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodão doce STR_QUANTITY_BUBBLES :{COMMA} bolha{P "" s} @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}NADA STR_ABBREV_ALL :{TINY_FONT}TUDO # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passageiro{P "" s} -STR_BAGS :{COMMA} bolsa{P "" s} -STR_TONS :{COMMA} tonelada{P "" s} -STR_LITERS :{COMMA} litro{P "" s} -STR_ITEMS :{COMMA} cabeça{P "" s} -STR_CRATES :{COMMA} engradado{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}passageiro{P "" s} +STR_BAGS :{COMMA}{NBSP}bolsa{P "" s} +STR_TONS :{COMMA}{NBSP}tonelada{P "" s} +STR_LITERS :{COMMA}{NBSP}litro{P "" s} +STR_ITEMS :{COMMA}{NBSP}ite{P m ns} +STR_CRATES :{COMMA}{NBSP}engradado{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Azul Escuro @@ -192,37 +192,37 @@ STR_COLOUR_GREY :Cinza STR_COLOUR_WHITE :Branco # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}cv -STR_UNITS_POWER_METRIC :{COMMA}cv -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}cv +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}T +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tonelada{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{P "" s} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton. curta{P "" s} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonelada{P "" s} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gal{P ão ões} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gal{P ão ões} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pés -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}pés +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtro: @@ -249,6 +249,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - rola a lista para esquerda/direita STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir edifícios etc. num quadrado de terreno. Ctrl seleciona a área diagonalmente. Shift alterna construção/mostrar estimativa de preço +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostrar ocultos + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ao ativar esse botão, os trens ocultos também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ao ativar esse botão, os automóveis ocultos também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ao ativar esse botão, os navios ocultas também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ao ativar esse botão, as aeronaves ocultas também serão exibidas + # Query window STR_BUTTON_DEFAULT :{BLACK}Padrão STR_BUTTON_CANCEL :{BLACK}Cancelar @@ -362,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Sair ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opções do jogo -STR_SETTINGS_MENU_CONFIG_SETTINGS :Definições avançadas +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Configurações STR_SETTINGS_MENU_SCRIPT_SETTINGS :Configurações de IA /Script do jogo STR_SETTINGS_MENU_NEWGRF_SETTINGS :Definições do NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opções de Transparência @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Alternar caixas STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Alterna a colorização dos blocos sujos ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1º +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -811,13 +840,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} está aguardando no depósito STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} está aguardando no hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tem tem muito poucas ordens no horário STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tem uma ordem nula STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tem ordens duplicadas STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tem uma estação inválida em suas ordens -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tem, em suas ordens, um aeroporto com a pista de pouso muito curta STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está ficando velho STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está ficando muito velho @@ -900,10 +928,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automóveis STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selecionar lado da rodovia para automóveis dirigirem STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Dirigem na esquerda @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalão STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvar automaticamente STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecionar o intervalo entre jogos salvos automaticos +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desativado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :A cada mês STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :A cada 3 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :A cada 6 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :A cada 12 meses +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecionar o idioma da interface do jogo @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resoluç STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecionar a resolução da tela para usar STR_GAME_OPTIONS_RESOLUTION_OTHER :outra -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato da captura de tela -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selecionar o formato da captura de tela para usar +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamanho da interface +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Selecione o tamanho de elemento de interface a ser usado + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobro +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quádruplo STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecionar o conjunto de gráficos base para usar @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecion STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} arquivo{P "" s} corrompido{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de músicas base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Falha ao obter a lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de tela cheia falhou # Custom currency window @@ -1050,6 +1081,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Muito Plano STR_TERRAIN_TYPE_FLAT :Plano STR_TERRAIN_TYPE_HILLY :Acidentado STR_TERRAIN_TYPE_MOUNTAINOUS :Montanhoso +STR_TERRAIN_TYPE_ALPINIST :Alpinista STR_CITY_APPROVAL_PERMISSIVE :Permissivo STR_CITY_APPROVAL_TOLERANT :Tolerante @@ -1057,8 +1089,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostil STR_WARNING_NO_SUITABLE_AI :{WHITE}Não há IA compatíveis disponíveis...{}Você pode baixar várias IA's pelo sistema de 'Conteúdo Online' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Configurações avançadas +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :[WHITE}Configurações STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtro: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Maximizar tudo STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Minimizar tudo @@ -1071,21 +1103,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Config. do jogo STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Config. da companhia (guardado no savegame; afeta apenas novos jogos) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Config. da companhia (guardado no savegame; afeta apenas a comp. atual) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Exibir: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a mostrar apenas configs. alteradas -STR_CONFIG_SETTING_RESTRICT_BASIC :Configs. básicas -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Configs. avançadas -STR_CONFIG_SETTING_RESTRICT_ALL :Configs. expert / todas as configs. +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a mostrar apenas filtros pré-definidos +STR_CONFIG_SETTING_RESTRICT_BASIC :Básico (apenas configs. importantes) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avançado (maior parte das configs.) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (mostra todas as configs. inclusive as estranhas) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Configs. com valor diferente do padrão STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Configs. com um valor diferente das configs. para novos jogos STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a determinados tipos STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todos os tipos de configs. -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Config. do cliente (não é guardado no savegame; afeta todos os jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Config. do jogo (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Config. do jogo (guardado no savegame; afeta apenas o jogo atual) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Config. da companhia (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Config. de companhia (guardado no savegame; afeta apenas a companhia atual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configs. do cliente (não é guardado no savegame; afeta todos os jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configs. do jogo (guardado no savegame; afeta apenas novos jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configs. do jogo (guardado no savegame; afeta apenas o jogo atual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configs. da companhia (guardado no savegame; afeta apenas novos jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configs. de companhia (guardado no savegame; afeta apenas a companhia atual) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Categoria {BLACK}até {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Tipo {BLACK}até {WHITE}Todas configurações de tipos +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Category {BLACK}até {WHITE}{STRING} {BLACK}e {SILVER}Tipo {BLACK}até {WHITE}Todas configurações de tipos +STR_CONFIG_SETTINGS_NONE :{G=m}{WHITE}- Nenhum - STR_CONFIG_SETTING_OFF :Desl. STR_CONFIG_SETTING_ON :Lig. @@ -1123,12 +1160,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar rev STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Se ativado, trens não irão mudar de direção em estações não terminais, mesmo se houver um caminho mais curto ao próximo destino ao trocar de direção STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Alterna desastres que podem ocasionalmente bloquear ou destruir veículos ou infraestrutura -STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da prefeitura em relação à restruturação de área: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da prefeitura em relação à restruturação local: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolhe como a poluição sonoroa e ambiental afeta a classificação na cidade e as ações futuras naquela área -STR_CONFIG_SETTING_BUILDONSLOPES :Permitir a construção em declives e encostas: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Se ativado, trilhos e estações podem ser construídas na maioria das inclinações. Se desativado, são permitidas apenas em inclinações correspondentes à direção da via, sem precisar de fundações -STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, ruas, etc. (auto nivelação): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máx. do mapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Define a altitude máxima para montanhas no mapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Impossível definir a altitude máx. do mapa para esse valor. Há ao menos uma montanha mais alta que isso +STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, trilhos, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite paisagismo sob edifícios e vias sem precisar removê-las STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista das áreas de abrangência: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Exibe áreas de abrangência de para diferentes tipos de estações e aeroportos @@ -1152,16 +1190,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Proibir trens e STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas em 90 graus ocorrem quando um trilho horizontal é seguido imediatamente por um trilho vertical, fazendo com que o trem vire 90 graus, ao invés dos 45 graus padrão para as outras combinações de trilhos. Isso também afeta as embarcações STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitie unir estações não adjacentes: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite adicionar partes a uma estação sem que aquelas encostem diretamente nestas. Pressione Ctrl+clique para fazer isso -STR_CONFIG_SETTING_IMPROVEDLOAD :Usar algoritmo de carregamento melhorado: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Se ativado, veículos múltiplos aguardando em uma estação são carregados um por vez. Carregamento do próximo veículo só começa quando houver carga o bastante para encher o primeiro veículo -STR_CONFIG_SETTING_GRADUAL_LOADING :Carregar veículos gradualmente: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradualmente carrega veículos usando durações de carregamento específicos de cada veículo, ao invés de carregar tudo de uma vez durante um intervalo fixo dependendo apenas da carga carregada STR_CONFIG_SETTING_INFLATION :Inflação: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ativa inflação na economia, de forma que custos sobem um pouco mais do que recebidos -STR_CONFIG_SETTING_SELECTGOODS :Somente entregar carga a uma estação quando houver procura: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Apenas entrega carga a uma estação com um veículo que a requisitou. Isso impede más avaliações para cargas que não são coletadas numa estação STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Tamanho máximo de pontes: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Tamanho máximo para construção de pontes +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de pontes: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima para a construção de pontes 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 manual de constução de indústria primária: {STRING} @@ -1187,8 +1221,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Define onde um STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :início STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meio STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fim -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Fila de automóveis (com efeitos de quantidade): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Faz com que automóveis aguardem na frente de paradas de rua até que sejam liberados STR_CONFIG_SETTING_AUTOSCROLL :Deslocar janela quando o cursor está na borda do mapa: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quando ativado, janelas de visualização irão rolar quando o mouse se aproximar das bordas STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desativado @@ -1219,10 +1251,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estaç STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite a construção de paradas nas laterais das ruas em vias locais STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir estações drive-through nas ruas de outros competidores: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite a construção de paradas nas laterais das ruas em vias de outras companhias -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permitir construção de estações adjacentes: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permite construir várias estações, uma do lado da outra, criando estações mistas -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Ativar múltiplos conjuntos NewGRF de locomotivas: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opção de compatibilidade para NewGRFs velhos. Não desative isso a não ser que você saiba o que está fazendo! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Impossível alterar essa configuração enquanto houverem veículos STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenção de Infraestrutura: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quando ativado, infraestrutura gera custos de manutenção. O custo aumenta proporcionalmente à malha de transportes, afetando companhias maiores mais do que as menores @@ -1243,7 +1271,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quanto ativado, mantém todos os modelos de veículos disponíveis após serem introduzidos STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Auto-renovação de veículos quando ficam velhos: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quando ativado, os veículos próximos do fim da vida útil são automaticamente substituídos quando as condições forem atingidas -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar a {STRING} da vida útil +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar veículos a {STRING} da vida útil STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa para quando um veículo deva ser renovado STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} m{P 0 ês eses} antes STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} m{P 0 ês eses} depois @@ -1253,39 +1281,53 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da me STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Define quanto tempo as janelas de erro (vermelhas) ficam abertas antes de fecharem automaticamente. Erros críticos devem ser fechados manualmente. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} segundo{P "" s} STR_CONFIG_SETTING_HOVER_DELAY :Exibir dicas: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Intervalo antes das dicas de ferramentas aparecerem ao deixar o mouse sobre algum botão na interface -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Aguardar {COMMA} segundo{P "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Intervalo antes das dicas de ferramentas aparecerem ao deixar o mouse sobre algum botão na interface. Em contrapartida, as dicas são mostradas ao se clicar com o botão direito se esse valor for definido para 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Aguardar {COMMA} milisegundo{P "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botão direito STR_CONFIG_SETTING_POPULATION_IN_LABEL :Exibir população da cidade na janela da cidade: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Exibe a população das cidades nos nomes, no mapa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grossura das linhas nos gráficos: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grossura da linha nos gráficos. Linhas finas são mais precisas, enquanto linhas grossas são mais fáceis de distinguir. +STR_CONFIG_SETTING_LANDSCAPE :Terreno: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :O terreno define a jogabilidade básica com diferentes cargas e requerimentos para o crescimento das cidades. NewGRF's e Scripts de Jogo permitem um controle mais fino STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de Terreno: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :O gerador original depende do set gráficos base, e cria terrenos de formatos fixos. TerraGenesis é um gerador baseado em ruído Perlin com configurações mais delicadas STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist. máx. da borda para Refinarias de Óleo: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo de terreno: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis apenas) O quão acidentado é o terreno +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade de indústrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas indústrias devem ser geradas e o nível que deve ser mantido durante o jogo +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist máx da borda para Refinarias de Óleo: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias são construídas apenas nas bordas, ou no litoral, para ilhas -STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitude da linha de neve: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno (TerraGenesis apenas) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altitude a neve começa nos climas sub-árticos. Neve também afeta geração de indústrias e necessidades para o crescimento das cidades +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis apenas) Escolhe a frequência de colinas: Terrenos planos têm menos colinas, mais espalhadas. Montanhosos tem mais colinas, que pode se tornar repetitivo STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito Regular STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Regular STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Irregular STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muito Irregular +STR_CONFIG_SETTING_VARIETY :Distribuição de variedade: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis apenas) Controla se o mapa contém tanto áreas montanhosas como planas. Como isso apenas torna o mapa mais plano, as outras configurações devem ser mantidas em montanhoso +STR_CONFIG_SETTING_RIVER_AMOUNT :Quantidade de rios: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolha quantos rios a serem gerados STR_CONFIG_SETTING_TREE_PLACER :Algorítimo de colocação de árvores: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Escolha a distribuição das árvores no mapa: 'Original' planta árvores uniformemente pelo mapa, 'Melhorado' planta-as em grupos STR_CONFIG_SETTING_TREE_PLACER_NONE :Nenhum STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Melhorado +STR_CONFIG_SETTING_ROAD_SIDE :Automóveis: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Escolha a mão de direção STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação do mapa topográfico: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sentido Anti-Horário STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Sentido Horário STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :A altitude de um mapa regular é de: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Permitir paisagismo nos quadrados na bordas do mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Se desativado, as bordas do mapa serão sempre oceanos STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Há construções na borda norte do mapa STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Há bordas acima da nível do mar -STR_CONFIG_SETTING_STATION_SPREAD :Tam. máx. de estações compostas {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Tam máx de estações compostas {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Área máxima que uma só estação pode ocupar com partes de estação. Valores altos tornam o jogo lento STR_CONFIG_SETTING_SERVICEATHELIPAD :Manutenção automática de helicópteros em heliportos: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Faz manutenção de helicópteros a cada pouso, mesmo que não haja depósito no local de pouso @@ -1302,7 +1344,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar rolame STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a janela principal rola para uma posição específica quando clicado no minimapa ou após localizar um objeto. Ativado torna o rolamento suave. Desativado torna o rolamento instanâneo STR_CONFIG_SETTING_MEASURE_TOOLTIP :Exibe distâncias quando usar ferramentas de construção: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Exibe distâncias e diferenças de altitude quando clicando e arrastando enquanto constrói -STR_CONFIG_SETTING_LIVERIES :Exibir cores das empresas: {STRING} +STR_CONFIG_SETTING_LIVERIES :Exibir cores avançadas: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Contra o uso de cores de veículos dependentes do tipo (ao invés de cores específicas à companhia) STR_CONFIG_SETTING_LIVERIES_NONE :Nenhum STR_CONFIG_SETTING_LIVERIES_OWN :Minha empresa @@ -1332,17 +1374,15 @@ 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_AUTOSAVE :Auto-salvar: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecione intervalo entre jogos salvos automaticamente + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Use o formato de data {STRING} para criar arquivos de salvamento STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato da data nos nomes dos jogos salvos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :comprido (31 Dez 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta padrão a ser usada para NewGRF's sem paletas específicas: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta padrão a ser usada por NewGRFs que não a especificarem -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta do DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta do Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automaticamente ao inicar um novo jogo: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ativado, pausa o jogo ao iniciar um jogo novo, permitindo um estudo do mapa antes do jogo STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Permite enquanto pausado: {STRING} @@ -1351,7 +1391,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma ação STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas ações "não-construentes" STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas ações exceto modificações de terreno STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas ações -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista avançada de veículos: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista agrupada de veículos: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativa o uso da listagem avançada para agrupamento de veículos STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Seleciona se os indicadores de carga são exibidos sobre os veículos (des)carregando @@ -1366,7 +1406,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilho 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 -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Exibir vias reservadas: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Exibir vias reservadas para trilhos: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Escurece as vias reservadas para ajudar a lidar com problemas de trens não funcionando em blocos baseados em destinos STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Manter a barra de construção aberta: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantém as ferramentas de construção para pontes, túneis, etc abertas após o uso @@ -1392,13 +1432,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Tocar som ambie STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desativar construção de infraestrutura quando nenhum veículo adequado estiver disponível: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Quando ativado, a infraestrutura só é disponível se há veículos disponíveis para usá-la, prevenindo gasto de tempo e dinheiro com infraestrutura inútil. -STR_CONFIG_SETTING_MAX_TRAINS :Máximo de trens por companhia: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Número máx de trens por companhia: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Máx. de trens que uma companhia pode ter -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Máximo de automóveis por companhia: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Número máx de automóveis por companhia: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Quantidade máxima de automóveis que uma companhia pode ter -STR_CONFIG_SETTING_MAX_AIRCRAFT :Máximo de aeronaves por companhia: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Número máx de aeronaves por companhia: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Quantidade máxima de aeronaves que uma companhia pode ter -STR_CONFIG_SETTING_MAX_SHIPS :Máximo de embarcações por companhia: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Número máx de embarcações por companhia: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Quantidade máxima de embarcações que uma companhia pode ter STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desativar trens para o computador: {STRING} @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Os intervalos d STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Define se a manutenção de veículos é ativada pelo tempo passado desde a última manutenção ou quando a confiabilidade alcança um certo valor STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo padrão de manutenção para trens: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Define o intervalo padrão de manutenção para novos trens, se não for definido individualmente -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dia{P "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dia{P "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalo padrão de manutenção para automóveis: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Define o intervalo padrão de manutenção para novos automóveis, se não for definido individualmente @@ -1516,12 +1556,12 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite cidades STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir cidades construirem cruzamentos de nível: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Se ativado, permite as cidades construírem ruas que atravessam ferrovias STR_CONFIG_SETTING_NOISE_LEVEL :Permitir controle de ruído de aeronaves pelas cidades: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Se desativado, podem haver 2 aeroportos por cidade. Se ativado, o número de aeroportos depende do controle de ruído da cidade, que depende da população, tamanho e distância do aeroporto +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Se desativado, podem haver 2 aeroportos por cidade. Se ativado, o número de aeroportos é limitado pelo controle de ruído da cidade, que depende da população, tamanho e distância do aeroporto STR_CONFIG_SETTING_TOWN_FOUNDING :Fundação de cidades no jogo: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Se ativado, permite jogadores construírem novas cidades STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Aermitido, layout de cidades customizável +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, layout de cidades customizável STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Posicionamento de árvores: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla o nascimento aleatório de árvores durante o jogo. Isso pode afetar indústrias que dependem do crescimento de árvores, como serrarias @@ -1564,12 +1604,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a cada {COMMA STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenhum STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador do tamanho inicial da cidade: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamanho médio das cidades grandes em relação às cidades no início do jogo -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remover elementos de estrada absurdos ao construir ruas: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remove ruas sem saída durante a reconstrução de ruas patrocinada -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Atualizar gráfico de distribuição a cada {STRING} dia{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Atualizar gráfico de distribuição a cada {STRING}{NBSP}dia{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tempo tomado entre recálculos subsequentes de cada gráfico. Cada recálculo calcula os planos para cada componente do gráfico. Isso significa que um valor X para essa configuração não indica que o gráfico todo será atualizado a cada X dias. Apenas alguns componentes irão. Quanto mais curto você o definir, mais tempo de CPU será necessário para calculá-lo. Quanto mais longo, mais tempo levará até que a distribuição de carga começe em novas rotas. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Demore {STRING} dia{P 0:2 "" s} para recálculo do gráfico de distribuição +STR_CONFIG_SETTING_LINKGRAPH_TIME :Demore {STRING}{NBSP}dia{P 0:2 "" s} para recálculo do gráfico de distribuição STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tempo tomado para cada recálculo de um componente de um gráfico. Quando um recálculo começa, um processo é criado e é executado por esse número de dias. Quanto menos dias você define, maior a chance do processo não terminar quando era para ter terminado. Nesse caso, o jogo irá parar até ele terminar ("lag"). Quanto maior você definir isso, mais tempo leva para a distribuição ser atualizada quando as rotas mudarem. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :assimétrico @@ -1581,14 +1619,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simétrico" si STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribuição para classe BLINDADOS de carga: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe BLINDADO indica objetos de valor no clima temperado, diamantes no subtropical ou ouro no subártico. NewGRF's podem mudar isso. "simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Para objetos de valor, sugere-se usar "assimétrico" ou "manual" para subártico, já que bancos não enviam ouro de volta a minas. Para temperado e subtropical você pode selecionar "simétrico", já que bancos trocam objetos de valor entre si. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribuição para outras classes de carga: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Você provavelmente irá querer usar "assimétrico" ou "manual". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Você provavelmente irá querer usar "assimétrico" ou "manual". STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisão da distribuição: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto mais alto você define esse valor, mais tempo de CPU será dado ao cálculo do gráfico. Se levar muito tempo, você poderá notar um pouco de lag. Se você definir um valor muito baixo, a distribuição será imprecisa, e você notará cargas deixando de serem enviadas aonde deveriam ir. STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito da distância na demanda: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se você definir esse valor para maior que 0, a distância entre a estação de origem A para alguma carga e um possível destino B terá um efeito na quantidade de carga levada de A até B. Quanto mais distante B for da A, menos carga será enviada. Quanto mais alto você definir esse valor, menos carga será levada para estações distantes, e mais carga será levada para estações próximas. STR_CONFIG_SETTING_DEMAND_SIZE :Quantidade de carga retornada no modo simétrico: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isso para menos de 100% faz com que a distribuição simétrica comporte-se mais como a assimétrica. Menos carga será devolvida forçosamente se uma certa quantidade for mandada a uma estação. Se você definir a 0%, a distribuição se comportará exatamente como a assimétrica. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de caminhos curtos antes de usar outros caminhos: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de caminhos curtos antes de usar caminhos de alta capacidade: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente há múltiplos caminhos entre duas estações. Cargodist irá saturar o caminho mais curto primeiro, depois usar o segundo caminho mais curto até saturá-lo, e assim por diante. Saturação é determinada pela estimação da capacidade de do uso planejado. Ao saturar todos os caminhos, se ainda houver demanda, irá sobrecarregar todos os caminhos, com preferência aos de maior capacidade. No entanto, na maior parte do tempo o algorítimo não irá estimar a capacidade corretamente. Essa configuração permite você definir até que porcentagem um caminho mais curto deverá ser saturado na primeira passada antes do algorítimo proceder ao próxido. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade superestimada. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidade de velocidade: {STRING} @@ -1599,55 +1637,57 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidade de potência veicular: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Sempre que a potência de um veículo for exibida na interface de usuário, será exibida na unidade selecionada -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :IMperial (hp) -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (cv) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unidades de peso: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Sempre que pesos forem exibidos na interface de usuário, serão exibidos na unidade selecionada -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (ton. imperial) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Sempre que pesos forem exibidos na interface de usuário, exiba-os na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (ton. curta) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrico (ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unidades volumétricas: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Sempre que volumes forem exibidos na interface de usuário, serão exibidos na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Sempre que volumes forem exibidos na interface de usuário, exiba-os na unidade selecionada STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidade de tração: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que tração, ou efeito trator, é exibido na interface de usuário, será exibido na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que tração, ou efeito trator, é exibido na interface de usuário, exiba na unidade selecionada STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unidade de altitude: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Sempre que altitudes são exibidas na interface do usuário, será exibida na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Sempre que altitudes são exibidas na interface do usuário, exiba na unidade selecionada STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localização -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construção +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos +STR_CONFIG_SETTING_SOUND :{ORANGE}Som +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Geral +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Janelas de visualização +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construção +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notícias / Conselheiros +STR_CONFIG_SETTING_COMPANY :{ORANGE}Companhia +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidade STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veículos -STR_CONFIG_SETTING_STATIONS :{ORANGE}Estações -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economia -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribuição de Carga +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Física +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rota +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitações +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Acidentes +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Geração de Mundo +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Meio-Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE} Cidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Indústrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuição de Carga STR_CONFIG_SETTING_AI :{ORANGE}Oponentes -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opções de visualização -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interação -STR_CONFIG_SETTING_SOUND :{ORANGE}Efeitos sonoros -STR_CONFIG_SETTING_NEWS :{ORANGE}Notícias e mensagens -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinais -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Manejo de carga STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computadores -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Auto-renovação -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Manutenção -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rota -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trens -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE} Cidades -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Indústrias STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1696,7 +1736,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multi-jo STR_INTRO_GAME_OPTIONS :{BLACK}Opções do Jogo STR_INTRO_HIGHSCORE :{BLACK}Pontuações -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Configurações avançadas +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configurações STR_INTRO_NEWGRF_SETTINGS :{BLACK}Configurar NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Checar conteúdo on-line STR_INTRO_SCRIPT_SETTINGS :{BLACK}Configurações de IA / Script do jogo @@ -1716,7 +1756,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selecion STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Exibir opções de jogo STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Exibe as pontuações -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Exibe as configurações avançadas +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Config. de exibição STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Exibir configs. dos NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Checar por conteúdo novo e atualizado para baixar STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Exibe configurações de IA e script do jogo @@ -1756,6 +1796,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadeira mágica (destrói indústrias, objetos estáticos): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Os túneis poderão cruzar-se: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Aeronaves a jato não irão se acidentar (frequentemente) em aeroportos pequenos: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Editar a altitude máx do mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Editar a altitude máx das montanhas no mapa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :terreno temperado STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :terreno subártico STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :terreno subtropical @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Bonde de Carga STR_FACE_CAPTION :{WHITE}Seleção de Rosto STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancelar seleção da novo rosto STR_FACE_OK_TOOLTIP :{BLACK}Aceitar seleção do novo rosto +STR_FACE_RANDOM :{BLACK}Randomizar STR_FACE_MALE_BUTTON :{BLACK}Masculino STR_FACE_MALE_TOOLTIP :{BLACK}Rostos masculinos @@ -1924,13 +1967,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja STR_NETWORK_START_SERVER_UNADVERTISED :Não STR_NETWORK_START_SERVER_ADVERTISED :Sim STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} cliente{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Máx de clientes: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Num máx de clientes: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} empresa{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Núm máx de empresas: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limita o servidor para uma certa quantia de empresas STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} espectador{P "" es} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Máx de espectadores: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Núm máx de espectadores: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limita o servidor para um certa quantia de espectadores STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Idioma falado: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Outros jogadores saberão o idioma utilizado no servidor. @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Entre a quantia a ser dada +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Espectador # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não salvar a senha digitada @@ -2272,7 +2316,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito (para compra e manutenção de trens). Shift altera construção/preço estimado STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Converter linha em ponto de controle. Ctrl permite a união de pontos de controle. Shift altera construção/preço estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estação ferroviária. Ctrl permite a união de estações. Shift altera construção/preço estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna a construção de semáforos/sinais{}Clicar e arrastar constroi sinais até a próxima junção{}Ctrl+Clique alterna a janela de seleção de sinais. Shift altera construção/preço estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna a construção de semáforos/sinais{}Clicar e arrastar constroi sinais até a próxima junção ou sinal{}Ctrl+Clique alterna a janela de seleção de sinais. Shift alterna construção/preço estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir ponte ferroviária. Shift altera construção/preço estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviário. Shift altera construção/preço estimado STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alternar construir/remover ferrovias, sinais, pontos de controle e estações. Segure ctrl para remover os trilhos de estações e pontos de controle. @@ -2547,6 +2591,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocidade limite do trilho: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da rua: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas @@ -2643,7 +2688,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-2013 A equipe do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 A equipe do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvar o jogo atual, usando o nome escolhido STR_SAVELOAD_LOAD_BUTTON :{BLACK}Carregar STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carrega o jogo selecionado +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carrega o mapa topográfico selecionado STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalhes do Jogo STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma informação disponível STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2677,13 +2723,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de cidades: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de indústrias: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitude máx. do mapa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumenta a altitude máxima das montanhas no mapa em uma unidade +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Diminui a altitude máxima das montanhas no mapa em uma unidade STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Linha da neve STR_MAPGEN_SNOW_LINE_UP :{BLACK}Aumentar a linha da neve em um ponto STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Diminuir a linha da neve em um ponto -STR_MAPGEN_RANDOM_SEED :{BLACK}Semente: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Clique para digitar uma semente -STR_MAPGEN_RANDOM :{BLACK}Randomizar -STR_MAPGEN_RANDOM_HELP :{BLACK}Muda a semente randômica da Geração de Terreno STR_MAPGEN_LAND_GENERATOR :{BLACK}Gerador de terra STR_MAPGEN_TREE_PLACER :{BLACK}Algorítimo de árvores STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno @@ -2710,7 +2755,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamanho: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Coloque uma semente randomica +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Alterar a altitude máxima do mapa STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mudar linha da neve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar data de início @@ -2765,6 +2810,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mover ci STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move o NewGRF selecionado para cima STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mover baixo STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move o NewGRF selecionado para baixo +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Atualizar +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Atualiza arquivos NewGRF para os quais você tem uma versão mais nova instalada STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Uma lista dos NewGRF instalados. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Definir parâmetros @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Arquivo co STR_NEWGRF_SETTINGS_DISABLED :{RED}Desativado STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatível com esta versão de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Salvar padrão +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de padrões disponíveis, selecione um para copiá-lo para o nome abaixo +STR_SAVE_PRESET_TITLE :{BLACK}Digite um nome para o padrão +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome selecionado para o padrão ser salvo +STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Não altera o padrão +STR_SAVE_PRESET_SAVE :{BLACK}Salvar +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salva o padrão com o nome selecionado + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fechar @@ -2812,14 +2869,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variáve # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinhando "sprite" {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Próximo "sprite" -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prossegue ao próximo "sprite" normal, pulando quaisquer "sprites" falsos, recoloridos ou de fontes, e junta tudo no fim +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prossegue ao próximo "sprite" normal, pulando quaisquer "sprites" falsos, recoloridos ou de fontes, e junta tudo do último pro primeiro STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir para o "sprite" STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Vai para o "sprite" determinado. Se o "sprite" não é um "sprite" normal, segue para o próximo "sprite" normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}"Sprite" anterior -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Retorna ao "sprite" normal anterior, pulando quaisquer "sprites" falsos, recoloridos ou de fontes, e junta tudo no início +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Retorna ao "sprite" normal anterior, pulando quaisquer "sprites" falsos, recoloridos ou de fontes, e junta tudo do primeiro ao último STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do "sprite" atualmente selecionado. O alinhamento é ignorado ao desenhar esse "sprite" STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move o "sprite", alterando os offsets X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetar relativo +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reseta os offsets relativos atuais +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absoluto) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relativo) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Escolher "sprite" STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Escolhe um "sprite" de qualquer lugar na tela @@ -2876,6 +2936,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Arquivos f STR_NEWGRF_BROKEN :{WHITE}'{0:STRING}' tem altas chances de causar desincronias e/ou travamentos STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Alterou o estado do vagão motorizado para '{1:ENGINE}' estando fora de um depósito STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Mudou o tamanho do veículo para '{1:ENGINE}' estando fora de um depósito +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}A capacidade do veículo mudou para '{1:ENGINE}' quando fora do depósito STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trem '{VEHICLE}' de '{COMPANY}' tem um tamanho inválido. Provavelmente causado por um NewGRF. O jogo pode travar ou sair de sincronia STR_NEWGRF_BUGGY :{WHITE}O NewGRF '{0:STRING}' retorna informação incorreta @@ -2890,6 +2951,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Escaneando NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escaneando NewGRFs. Dependendo da quantidade, isso pode levar um tempo... @@ -2927,8 +2991,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregues STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ainda necessário) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregue{P "" s}) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Cidade cresce a cada {ORANGE}{COMMA}{BLACK} dia{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Cidade cresce a cada {ORANGE}{COMMA}{BLACK} dia{P "" s} (patrocinado) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Cidade cresce a cada {ORANGE}{COMMA}{BLACK}{NBSP}dia{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Cidade cresce a cada {ORANGE}{COMMA}{BLACK}{NBSP}dia{P "" s} (patrocinado) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}A cidade {RED}não{BLACK} está crescendo STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limite de ruído na cidade: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrar visão no local da cidade. Ctrl+Clique abre uma nova janela no local da cidade @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informação STR_GOAL_QUESTION_CAPTION_WARNING :Alerta STR_GOAL_QUESTION_CAPTION_ERROR :Erro -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Não @@ -3007,6 +3071,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Reiniciar STR_GOAL_QUESTION_BUTTON_POSTPONE :Postergar STR_GOAL_QUESTION_BUTTON_SURRENDER :Desistir STR_GOAL_QUESTION_BUTTON_CLOSE :Fechar +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsídios @@ -3027,6 +3092,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Ant. STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Vai para a página anterior STR_STORY_BOOK_NEXT_PAGE :[BLACK}Próx. STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Vai para a próxima página +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referência de objetivo inválida # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nomes da estação - clique no nome para centralizar a visualização principal na estação. Ctrl+Clique abre uma nova janela na localização da estação @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Não há # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Aguardando: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} vindo de {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para carregamento) @@ -3285,12 +3350,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Automóveis sem STR_GROUP_DEFAULT_SHIPS :Embarcações sem grupo STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem grupo -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Clique em um grupo para listar seus veículos +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Clique em um grupo para listar seus veículos. Clique e arraste para organizar a hierarquia. STR_GROUP_CREATE_TOOLTIP :{BLACK}Clique para criar um grupo STR_GROUP_DELETE_TOOLTIP :{BLACK}Remove o grupo selecionado STR_GROUP_RENAME_TOOLTIP :{BLACK}Renomeia o grupo selecionado STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para excluir esse grupo da substituição automática +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Remover grupo +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Tem certeza que deseja remover esse grupo e seus descendentes? + STR_GROUP_ADD_SHARED_VEHICLE :Adicionar veículos compartilhados STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos @@ -3328,10 +3396,10 @@ STR_PURCHASE_INFO_ALL_BUT :Todas menos {CA STR_PURCHASE_INFO_MAX_TE :{BLACK}Tração máx : {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de trens - clique num trem para informações -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de automóveis - clique num automóvel para informações -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de embarcações - clique numa embarcação para informações -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de aeronaves - clique numa aeronave para informações +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de embarcações - clique numa embarcação para informações. Cltr+Clique para alterar a visibilidade do tipo de navio +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de aeronaves - clique numa aeronave para informações. Cltr+Clique para alterar a visibilidade do tipo de aeronave STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar Veículo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar Veículo @@ -3353,6 +3421,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renomear STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renomear tipo de embarcação STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renomear tipo de aeronave +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Exibir +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Exibir +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Exibir +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Exibir + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna a exibição do tipo de trem +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna a exibição do tipo de automóvel +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna a exibição do tipo de navio +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna a exibição do tipo de aeronave + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renomear tipo de veículo ferroviário STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renomear tipo do automóvel STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renomear tipo de embarcação @@ -3406,7 +3489,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonar A STR_DEPOT_CLONE_SHIP :{BLACK}Clonar Embarcação STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar Aeronave -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Isso irá comprar uma cópia do trem, incluindo todos os vagões. Clique neste botão e depois em um trem dentro ou fora do depósito. Ctrl+Clique compartilhará as ordens. Shift+Clique mostra o preço estimado sem a compra +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Isso irá comprar uma cópia do trem incluindo todos os vagões. Clique neste botão e depois em um trem dentro ou fora do depósito. Ctrl+Clique compartilhará as ordens. Shift+Clique mostra o preço estimado sem a compra STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Isso irá comprar uma cópia do automóvel. Clique neste botão e depois em um automóvel dentro ou fora da garagem. Ctrl+Clique compartilhará as ordens. Shift+Clique mostra o preço estimado sem a compra STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Isso irá comprar uma cópia da embarcação. Clique neste botão e depois em uma embarcação dentro ou fora do depósito naval. Ctrl+Clique irá compartilhar as ordens. Shift+Clique mostra preço estimado sem a compra STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Isso irá comprar uma cópia de uma aeronave. Clique nesse botão e depois em uma aeronave dentro ou fora do hangar. Ctrl+Clique compartilhará as ordens. Shift+Clique mostra o preço estimado sem a compra @@ -3457,6 +3540,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=m}Automóvel STR_REPLACE_VEHICLE_SHIP :{G=m}Embarcação STR_REPLACE_VEHICLE_AIRCRAFT :{G=f}Aeronave +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Veículos em uso +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :[BLACK}Coluna com os veículos que você possui +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Veículos disponíveis +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Coluna com os veículos disponíveis para substituição + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecionar o tipo de motor para substituir STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecionar o novo tipo de motor para substituir o que selecionou à esquerda @@ -3581,7 +3669,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferir Dinheiro: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de serviço: {LTBLUE}{COMMA}dias{BLACK} Último serviço: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}dias{BLACK} Última manutenção: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de serviço: {LTBLUE}{COMMA}%{BLACK} Último serviço: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Aumentar intervalo de serviço em 10. Ctrl+Clique aumenta em 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Reduzir intervalo de serviço em 10. Ctrl+Clique reduz em 5 @@ -3679,8 +3767,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Altera a STR_ORDER_REFIT :{BLACK}Adaptar STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecionar a adaptação na ordem atual. CTRL + Clique para remover a instrução -STR_ORDER_REFIT_AUTO :{BLACK}Auto-reforma -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecione o tipo de carga para o qual auto-reformar nessa ordem. Ctrl+clique para remover a ordem de reforma. Auto-reformar apenas será feito se o veículo permitir +STR_ORDER_REFIT_AUTO :{BLACK}Reformar na estação +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecione o tipo de carga para o qual reformar nessa ordem. Ctrl+clique para remover a ordem de reforma. Reforma apenas será feita se o veículo permitir STR_ORDER_DROP_REFIT_AUTO :Carga fixa STR_ORDER_DROP_REFIT_AUTO_ANY :Cargas disponíveis @@ -3771,18 +3859,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Não descarreg STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Não descarregar e esperar por qualquer carregamento completo) STR_ORDER_NO_UNLOAD_NO_LOAD :(Não descarregar e não carregar) -STR_ORDER_AUTO_REFIT :(Auto-reformar para {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Carga completa com auto-reforma para {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Qualquer carga completa com auto-reforma para {STRING}) -STR_ORDER_UNLOAD_REFIT :(Descarregar e carregar com auto-reforma para {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar carga completa com auto-reforma para {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar qualquer carga completa com auto-reforma para {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transferir e carregar com auto-reforma para {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar carga completa com auto-reforma para {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa com auto-reforma para {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e carregar com auto-reforma para {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar carga completa com auto-reforma para {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não carregar e aguardar por qualquer carga completa com auto-reforma para {STRING}) +STR_ORDER_AUTO_REFIT :(Reformar para {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Carga completa com reforma para {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Qualquer carga completa com reforma para {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descarregar e carregar com reforma para {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar carga completa com reforma para {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar qualquer carga completa com reforma para {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transferir e carregar com reforma para {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar carga completa com reforma para {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa com reforma para {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e carregar com reforma para {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar carga completa com reforma para {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não descarregar e aguardar por qualquer carga completa com reforma para {STRING}) STR_ORDER_AUTO_REFIT_ANY :cargas disponíveis @@ -3806,18 +3894,22 @@ STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Alternar STR_TIMETABLE_TOOLTIP :{BLACK}Horário - clique sobre uma ordem para destaca-la STR_TIMETABLE_NO_TRAVEL :Não viajar -STR_TIMETABLE_NOT_TIMETABLEABLE :Viagem (automático; calendarizada pela próxima ordem manual) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viajar (não calendarizado) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viaje em até {2:VELOCITY} (sem plano de horário) +STR_TIMETABLE_NOT_TIMETABLEABLE :Viagem (automático; com horário marcado pela próxima ordem manual) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viajar (sem horário marcado) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viagem a no máximo {2:VELOCITY} (sem horário marcado) STR_TIMETABLE_TRAVEL_FOR :Viajar para {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viaje por {STRING} em até {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajar (por {STRING}, sem horário marcado) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajar (por {STRING}, sem horário marcado) a no máximo {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(aguardar por {STRING}, sem horário marcado) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar para {STRING}, sem horário marcado) STR_TIMETABLE_STAY_FOR :e ficar durante {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :e viajar por {STRING} -STR_TIMETABLE_DAYS :{COMMA} dia{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tique{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dia{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tique{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Este horário levará {STRING} para completar -STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horário levará no mínimo {STRING} para completar (nem todos calendarizados) +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horário levará no mínimo {STRING} para completar (nem todos com horário marcado) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Este veículo está atualmente circulando pontualmente STR_TIMETABLE_STATUS_LATE :{BLACK}Este veículo está atualmente circulando {STRING} atrasado @@ -3940,6 +4032,8 @@ STR_AI_SETTINGS_START_DELAY :Número de dias STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} Leiame de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} log de mudanças de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licença de {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Quebra de linha +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :[BLACK}Quebra linhas automaticamente para que o texto caiba na janela STR_TEXTFILE_VIEW_README :{BLACK}Ler o Leiame STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log de mudanças STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licença @@ -4050,6 +4144,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Já está ao nível do mar STR_ERROR_TOO_HIGH :{WHITE}Muito alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... já está plano +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}A ponte acima ficaria muito alta. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Impossível alterar o nome da empresa... @@ -4076,7 +4171,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... muit STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... muito perto de outra cidade STR_ERROR_TOO_MANY_TOWNS :{WHITE}... cidades demais STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não há mais espaço no mapa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}A cidade não irá construir estradas. Você pode ativar essa opção através de Config. Avançadas>Economia>Cidades +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}A cidade não irá construir estradas. Você pode ativar a construção através de Configurações->Ambiente->Cidades STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Recapeamento rodoviário em progresso STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Impossível remover cidade... {}Uma estação ou depósito referente à essa cidade não pode ser removido STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... não há local para uma estátua no centro dessa cidade @@ -4100,6 +4195,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... a fl STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... só pode ser construído acima do nível da neve STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só pode ser construída abaixo do nível da neve +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Não existe locais aceitáveis para '{STRING}' indústrias +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Mude os parâmetros de geração do mapa para obter um mapa melhor + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Impossível construir estação ferroviária aqui... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Impossível construir estação de ônibus... @@ -4236,6 +4334,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Remova a STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Impossível iniciar e terminar no mesmo ponto STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Extremidades da ponte não estão no mesmo nível STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponte é muito baixa para o terreno +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}A ponte está muito alta para esse terreno. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inicio e fim devem estar alinhados STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... os extremos da ponte devem estar sobre a terra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte muito longa @@ -4262,6 +4361,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... já STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossível criar grupo... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossível remover grupo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossível renomear grupo... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossível definir grupo ascendente... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Impossível remover todos os veículos desse grupo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossível adicionar veículo a esse grupo STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Impossível adicionar veículos compartilhados a esse grupo... @@ -4496,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor) @@ -4705,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Navio de Passag STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Navio de Passageiros Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Cargueiro Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Cargueiro Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Cargueiro Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Cargueiro MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Cargueiro Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4799,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (oculto) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 83e1ff6141..9d88718fb7 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -201,22 +201,29 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} к.с. STR_UNITS_POWER_METRIC :{COMMA} к.с. STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}т STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т. STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг. +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} тон{P "" а} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P "" а} STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}гал STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л. -STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³ +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}м³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лит{P ър ри} -STR_UNITS_VOLUME_LONG_SI :{COMMA} куб. м. +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}галон{P "" и} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}лит{P ър ри} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}куб. м. -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут -STR_UNITS_HEIGHT_SI :{COMMA} м +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}фут +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}м +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Филтриращ низ: @@ -234,13 +241,24 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Затв STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Заглавие на прозорец - преместване на прозореца с мишката STR_TOOLTIP_SHADE :{BLACK}Прибиране на прозореца - показва само заглавната лента STR_TOOLTIP_DEBUG :{BLACK}Покажи debug информация за новите графики (NewGRF) -STR_TOOLTIP_STICKY :{BLACK}Маркиране прозореца за незатваряне от клавиша 'Затваряне всички прозороци' +STR_TOOLTIP_STICKY :{BLACK}Маркиране прозореца като незатворяем от клавиша 'Затваряне всички прозороци' STR_TOOLTIP_RESIZE :{BLACK}Преместете за оразмеряване прозореца STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Активирай голям/малък размер на прозореца STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Лента за позициониране - превърта списъка нагоре/надолу STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Превъртаща ивица - превърта списъка на ляво/дясно STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Разруши постройки и др. върху квадрат от картата. Ctrl маркира по диагонал. Shift показва евентуалната цена на разрушението. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Покажи скрити +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Покажи скрити +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Покажи скрити +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Покажи скрити + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}С активирането на бутона всички скрити влакове също се показват +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}С активирането на бутона всички скрити автомобили също се показват +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}С активирането на бутона всички скрити кораби също се показват +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}С активирането на бутона всички скрити самолети също се показват + # Query window STR_BUTTON_DEFAULT :{BLACK}По подразбиране STR_BUTTON_CANCEL :{BLACK}Отказ @@ -278,6 +296,8 @@ STR_SORT_BY_LENGTH :Дължина STR_SORT_BY_LIFE_TIME :Оставащо време за експлоатация STR_SORT_BY_TIMETABLE_DELAY :Закъснение STR_SORT_BY_FACILITY :Вид на гарата +STR_SORT_BY_WAITING_TOTAL :Целия чакащ товар +STR_SORT_BY_WAITING_AVAILABLE :Наличен чакащ товар STR_SORT_BY_RATING_MAX :Най-голяма оценка на товари STR_SORT_BY_RATING_MIN :Най-ниска оценка на товари STR_SORT_BY_ENGINE_ID :Двигател № (класическо сортиране) @@ -290,6 +310,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Мощност/ STR_SORT_BY_CARGO_CAPACITY :Товарен капацитет STR_SORT_BY_RANGE :Обхват STR_SORT_BY_POPULATION :Население +STR_SORT_BY_RATING :Рейтинг # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Пауза @@ -302,6 +323,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Пока STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Списък със станциите на компанията STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Показване на финансова информация за компанията STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Покажи обща информация за компанията +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Покази списък с целите STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Покажи графиките STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Покажи класирането на компаниите STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Инвестирай в нова индустрия @@ -349,7 +371,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Изход ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Игрови опции -STR_SETTINGS_MENU_CONFIG_SETTINGS :Настройки за напреднали +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Настройки STR_SETTINGS_MENU_SCRIPT_SETTINGS :Настройка на ИИ програмите STR_SETTINGS_MENU_NEWGRF_SETTINGS :Newgrf настройки STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Настройки на прозрачност @@ -457,7 +479,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Превклю STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Превключва оцветяване на замърсените блокове ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1-ви STR_ORDINAL_NUMBER_2ND :2-ри STR_ORDINAL_NUMBER_3RD :3-ти @@ -473,22 +495,40 @@ STR_ORDINAL_NUMBER_12TH :12-ти STR_ORDINAL_NUMBER_13TH :13-ти STR_ORDINAL_NUMBER_14TH :14-ти STR_ORDINAL_NUMBER_15TH :15-ти -STR_ORDINAL_NUMBER_16TH :16-ти -STR_ORDINAL_NUMBER_17TH :17-ти -STR_ORDINAL_NUMBER_18TH :18-ти -STR_ORDINAL_NUMBER_19TH :19-ти -STR_ORDINAL_NUMBER_20TH :20-ти -STR_ORDINAL_NUMBER_21ST :21-ви -STR_ORDINAL_NUMBER_22ND :22-ри -STR_ORDINAL_NUMBER_23RD :23-ти -STR_ORDINAL_NUMBER_24TH :24-ти -STR_ORDINAL_NUMBER_25TH :25-ти -STR_ORDINAL_NUMBER_26TH :26-ти -STR_ORDINAL_NUMBER_27TH :27-ми -STR_ORDINAL_NUMBER_28TH :28-и -STR_ORDINAL_NUMBER_29TH :29-и -STR_ORDINAL_NUMBER_30TH :30-ти -STR_ORDINAL_NUMBER_31ST :31-ви +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1-ви +STR_DAY_NUMBER_2ND :2-ри +STR_DAY_NUMBER_3RD :3-ти +STR_DAY_NUMBER_4TH :4-ти +STR_DAY_NUMBER_5TH :5-и +STR_DAY_NUMBER_6TH :6-и +STR_DAY_NUMBER_7TH :7-и +STR_DAY_NUMBER_8TH :8-и +STR_DAY_NUMBER_9TH :9-ти +STR_DAY_NUMBER_10TH :10-ти +STR_DAY_NUMBER_11TH :11-ти +STR_DAY_NUMBER_12TH :12-ти +STR_DAY_NUMBER_13TH :13-ти +STR_DAY_NUMBER_14TH :14-ти +STR_DAY_NUMBER_15TH :15-ти +STR_DAY_NUMBER_16TH :16-ти +STR_DAY_NUMBER_17TH :17-ти +STR_DAY_NUMBER_18TH :18-ти +STR_DAY_NUMBER_19TH :19-ти +STR_DAY_NUMBER_20TH :20-ти +STR_DAY_NUMBER_21ST :21-ви +STR_DAY_NUMBER_22ND :22-ри +STR_DAY_NUMBER_23RD :23-ти +STR_DAY_NUMBER_24TH :24-ти +STR_DAY_NUMBER_25TH :25-ти +STR_DAY_NUMBER_26TH :26-ти +STR_DAY_NUMBER_27TH :27-ми +STR_DAY_NUMBER_28TH :28-и +STR_DAY_NUMBER_29TH :29-и +STR_DAY_NUMBER_30TH :30-ти +STR_DAY_NUMBER_31ST :31-ви ############ range for days ends ############ range for months starts @@ -791,13 +831,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чака в депото STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чака в хангара -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} има прекалено малко задачи STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} има празна задача STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} има дублирани задачи STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} има невалидна спирка в задачите -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} започва да остарява STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} е много остаряло @@ -876,12 +914,10 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Литовск STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейски Вон (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафрикански Ранд (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :друга... +STR_GAME_OPTIONS_CURRENCY_GEL :Грузинско лари (ГЕЛ) +STR_GAME_OPTIONS_CURRENCY_IRR :Ирански Риал (ИРР) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Движение по пътищата STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Избор посоката на движение по пътищата STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :ляво @@ -917,11 +953,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :каталон STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозаписване STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервала между две автозаписваня +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :изключено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :всеки месец STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :всеки 3 месеца STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :всеки 6 месеца STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :всеки 12 месеца +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Език STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Избор на език @@ -933,8 +971,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Разм STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Избор размера на екран STR_GAME_OPTIONS_RESOLUTION_OTHER :друго -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат на снимките -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Избор на файловия форма в който ще се записват екранните снимки +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Интерфейс размер +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Изберете размера на интерфейс елемент за използване + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Нормално +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Двукратно +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Четирикратно STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базов графичен набор STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Изберете базов графичен набор @@ -950,6 +992,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Избе STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} повреден файл{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допълнителна информация за пакетът базовата музика +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Неуспешно извличане на списък с поддържаните резолюции STR_ERROR_FULLSCREEN_FAILED :{WHITE}Проблем при включване на режим "цял екран" # Custom currency window @@ -1028,6 +1071,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :платови STR_TERRAIN_TYPE_FLAT :равнинен STR_TERRAIN_TYPE_HILLY :хълмист STR_TERRAIN_TYPE_MOUNTAINOUS :планински +STR_TERRAIN_TYPE_ALPINIST :Алпинист STR_CITY_APPROVAL_PERMISSIVE :разрешаващи STR_CITY_APPROVAL_TOLERANT :толерантни @@ -1035,8 +1079,8 @@ STR_CITY_APPROVAL_HOSTILE :враждеб STR_WARNING_NO_SUITABLE_AI :{WHITE}Няма подходящи AI...{}Можете да свалите допълнителни AI чрез системата Online Content (Онлайн Съдържание) -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Настройки за напреднали +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Настройки STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Филтриращ низ: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Разгъни всички STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Сгъни всички @@ -1049,7 +1093,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Настрой STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Настройки на компанията (запаметени в записа; влияят само на нови игри) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Настройки на компанията (запаметени в записа; влияят само на текущата компания) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Покажи: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ограничи долният списък да показва само променените настройки STR_CONFIG_SETTING_RESTRICT_BASIC :Прости настройки STR_CONFIG_SETTING_RESTRICT_ADVANCED :Разширени настройки @@ -1064,6 +1107,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Игрови н STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Игрови настройки (съхраняват се в записаната игра; важат само за текущата игра) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Настройки за компанията (съхраняват се в записаната игра; важат само за нови игри) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Настройки за компанията (съхраняват се в записаната игра; важат само за текущата компания) +STR_CONFIG_SETTINGS_NONE :{WHITE}- Нищо - STR_CONFIG_SETTING_OFF :изключено STR_CONFIG_SETTING_ON :включено @@ -1104,16 +1148,17 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Задава к STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Цени на конструкции: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Задава ниво то на конструиране и цени за закупуване STR_CONFIG_SETTING_RECESSIONS :Рецесии: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ако е разрешено рецесии могат да се появяват на всеки няколко години. По време на рецесия цялото производство е значително намалено (връща се на предишно ниво след края на рецесията) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ако е разрешено, рецесии могат да се появяват на всеки няколко години. По време на рецесия цялото производство е значително намалено (връща се на предишно ниво след края на рецесията) STR_CONFIG_SETTING_TRAIN_REVERSING :Забрани обръщане на посоката на влакове в гарите: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ако е избрано влаковете няма да обръщат на не-терминални гари, ако има по-кратък път до целта им при обръщане. +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ако е избрано, влаковете няма да обръщат на не-терминални гари, ако има по-кратък път до целта им при обръщане. STR_CONFIG_SETTING_DISASTERS :Бедствия: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включване/Изключване на бедствия които могат от време на време да блокират или разрушат превозни средства или инфраструктура STR_CONFIG_SETTING_CITY_APPROVAL :Отношението на градския съвет към реструктурирането на района: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Изберете какво количество шум и поражения по околната среда причинени от компаниите афектират техния рейтинг в града и бъдещи конструкции в района. -STR_CONFIG_SETTING_BUILDONSLOPES :Строене на склонове и брегове: {STRING.n} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ако бъде активирано, ЖП линиите и гарите могат да бъдат построени на повечето склонове. Ако е деактивирано могат да бъдат построени само на склонове, които съвпадат с посоката на линията и следователно не изискват основи +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максимална височина на картата: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Определете максималната допустима височина за планини на картата +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Не можете да зададете максималната височина на картата на тази стойност. Поне една планина на карта е по-висока STR_CONFIG_SETTING_AUTOSLOPE :Тераформиране под постройки (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разреши промяна на наклона на терена под постройки и пътища без необходимост от премахване STR_CONFIG_SETTING_CATCHMENT :По-реалистична зона за обслужване: {STRING} @@ -1138,16 +1183,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Забрани STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 градусови завои, това е, когато хоризонтални релси са последвани от вертикални, следователно влакът прави 90 градусов завой когато преминава през тях, вместо нормалният 45 градусов завой при останалите комбинации от релси. Това се отнася и за завоите на корабите STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Позволено е присъединяването на станции, които не се допират: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Позволява добавянето на части към дадена гара без директно на докосва вече съществуващи нейни части. Натиснете Ctrl+Click докато поставяте новите части -STR_CONFIG_SETTING_IMPROVEDLOAD :Подобрен алгоритъм за зареждане: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ако е активирано, превозните средства чакащи на гарите биват натоварвани последователно. Натоварването на следващото превозно средство започва едва когато има достатъчно товар, който да запълни напълно превозното средство преди него -STR_CONFIG_SETTING_GRADUAL_LOADING :Постепенно зареждане на автомобилите: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Постепенно натоварване на превозните средства, използва се специфична продължителност за натоварването на различните стоки, вместо всичко да се товари наведнъж за фиксирано време, зависещо единствено от количеството на товара STR_CONFIG_SETTING_INFLATION :Инфлация: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Разрешава инфлация на икономиката, при което цените ще се покачват малко по-бързо от заплащането -STR_CONFIG_SETTING_SELECTGOODS :Доставяне на стока до станция само ако има търсене: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Доставяне на товара само на спирките, които са го изискали от товарещо превозно средство. Това предотвратява лош ратинг за стоки, които не се приемат на дадена станция STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимална дължина на мост: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Максимална дължина за построяване на мост +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Максимална височина на мост: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Максимална височина за изграждане на мостове STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максимална дължина на тунел: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Максимална дължина за построяване на тунел STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Ръчен строеж на първични индустрии: {STRING} @@ -1173,8 +1214,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Мястото STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :в близкия край STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :по средата STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :в далечния край -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Опашка на автомобилите (със сумарен ефект): {STRING.f} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Пътните превозни средства ще изчакват пред заетите спирки, докато не се освободят STR_CONFIG_SETTING_AUTOSCROLL :Местене на екрана когато мишката е в края: {STRING.n} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ако тази опция бъде активирана, viewports ще се "скролват" кога курсора на мишката доближи края на прозореца STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Изключен @@ -1205,10 +1244,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Премина STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Позволява строежа на ЖП линии пресичащи път притежаван от даден град STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Преминаване през спирки на пътища, собственост на конкуренти: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Позволява строежа на ЖП линии пресичащи път притежаван от други компании -STR_CONFIG_SETTING_ADJACENT_STATIONS :Позвалявай допрени гари: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Разреши различни станции взаимно да се допират -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Няколко NewGRF алгоритъма едновременно: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Опция за съвместимост за стари NewGRFs. Не деактивирайте тази опция, освен ако наистина знаете какво правите! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Промяната не е възможна, когато има превозни средства. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Поддръжка на инфраструктурата: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Когато е разрешено, съществуват разходи за поддръжка на инфраструктурата. Разходите се увеличават пропорционално на размера на пътната мрежа, влияейки повече на големите компании отколкото на по-малките @@ -1239,7 +1274,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Продълж STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Време през което съобщенията за грешки се показват в червен прозорец. Някой (критичните) съобщения за грешки не се затварят автоматично след това време, а трябва да бъдат затворени ръчно. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} секунд{P 0 а и} STR_CONFIG_SETTING_HOVER_DELAY :Покажи съвети: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Изкачване преди съветът да се покаже, когато мишката е върху елемент от интерфейса. Алтернативно съветите могат да бъдат активирани с десния бутон на мишката +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Изкачване преди съветът да се покаже, когато мишката е върху елемент от интерфейса. Алтернативно съветите могат да бъдат активирани с десния бутон на мишката ако стойността е 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Изчакай за {COMMA} секунд{P 0 а и} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Десен бутон STR_CONFIG_SETTING_POPULATION_IN_LABEL :Население в табелата на града: {STRING.n} @@ -1262,12 +1297,12 @@ STR_CONFIG_SETTING_TREE_PLACER :Алгорит STR_CONFIG_SETTING_TREE_PLACER_NONE :без дървета STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :оригинален STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :подобрен +STR_CONFIG_SETTING_ROAD_SIDE :Пътни превозни средства: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Изберете страна шофиране STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Завъртане на картата: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Обратрно на часовниковата стрелка STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :По часовниковата стрелка STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Височина на картата за плосък сценарий: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Разреши тераформирането на терена в краищата на картата: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ако се забрани, границите на картата е винаги океан STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Една или повече плочи в северния край не са празни STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Един или повече от плочките в един от краищата не е вода @@ -1318,17 +1353,15 @@ 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_AUTOSAVE :Автоматично запазване: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Изберете интервал между автоматично запаметяване на играта + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Използвай {STRING} формат на датата за имена на записаните игри. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Формат на датата във файловете за запис на играта STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :дълъг (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :къс (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Палитра по подразбиране за NewGRF, които не са задали палитра: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палитра по подразбиране за NewGRF, за които е зададена от коя се нуждаят -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS палитра -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows палитра - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Игрите започват в пауза: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ако тази опция бъде активирана, играта автоматично ще бъде паузирана, когато започнете нова игра, това ще ви позволи да изучите по-подробно картата STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :По време на пауза разреши: {STRING} @@ -1364,7 +1397,7 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Звуков с STR_CONFIG_SETTING_SOUND_NEWS :Вестник: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Звуков сигнал при показването на новини STR_CONFIG_SETTING_SOUND_NEW_YEAR :Край на година: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Звуков сигнал при проказване на баланса в края на годината +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Звуков сигнал при проказване на баланса в края на годината сравнен с края на предишната година STR_CONFIG_SETTING_SOUND_CONFIRM :Конструкция: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Изпълнявай звуков ефект при успешно конструиране или други действия STR_CONFIG_SETTING_SOUND_CLICK :Вутона натиска: {STRING} @@ -1411,7 +1444,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интерва STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Изберете дали обслужването на превозните средства е предизвикано от времето изминало от последното им обслужване, или от падането на надеждността им под даден процент от максималната им надеждност STR_CONFIG_SETTING_SERVINT_TRAINS :Интервал на обслужване за влакове: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Задайте интервала за обслужване на новите влакове по подразбиране, ако такъв интервал не е зададен за превозното средство -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P 0 ен ни}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 ен ни}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Изключен STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Интервал на обслужване за автомобили: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Задайте интервала за обслужване на новите пътни превозни средства по подразбиране, ако такъв интервал не е зададен за превозното средство @@ -1550,35 +1583,54 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 на {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Без STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Множител за големината на града: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Относителен размер на мегаполисите в сравнение с градовете в началото на играта -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Премахване на абсурдни разклонения при строене на пътища: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Премахва краищата на пътища при финансиране на ремонт на пътя - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Строене +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Единици за скорост: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Всеки път при показване на скорости, да бъдат изписвани в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metric (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Единици на мощност на превозното средство: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Всеки път при показване на мощност, да бъде изписвана в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Единици за тежина: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Всеки път при показване на тежести, да бъдат изписвани в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Мерни единици на обем: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Всеки път при показване на обеми, да се изписват в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Мерни единици на теглителната сила: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Всеки път при показване на теглителна сила, да бъде изписване в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Височинна мерна единица: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Всеки път при показване на височините, да се изписват в избраните мерни единици +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Позициониране +STR_CONFIG_SETTING_SOUND :{ORANGE}Звукови ефекти +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Строене STR_CONFIG_SETTING_VEHICLES :{ORANGE}Автомобили -STR_CONFIG_SETTING_STATIONS :{ORANGE}Станции -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Икономика +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрутизация +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Градове +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Индустрии STR_CONFIG_SETTING_AI :{ORANGE}Съперници -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Покажи опциите -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Взаимодействие -STR_CONFIG_SETTING_SOUND :{ORANGE}Звукови ефекти -STR_CONFIG_SETTING_NEWS :{ORANGE}Новини и съобщения -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сигнализация -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Обработката на товари STR_CONFIG_SETTING_AI_NPC :{ORANGE}Компютърни играчи -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автоматично подновяване -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Сервизиране -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрутизация -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Влакове -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Градове -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Индустрии STR_CONFIG_SETTING_PATHFINDER_OPF :Оригинален STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1612,6 +1664,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... пропуска набора от основната графика '{STRING}': не е открит STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... пропуска набора от основни звуци '{STRING}': не е открит STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... пропруска набора от основни песни '{STRING}': не е открит +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Отвъд паметта # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1625,7 +1678,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Онла STR_INTRO_GAME_OPTIONS :{BLACK}Настройки STR_INTRO_HIGHSCORE :{BLACK}Таблица с най-добрите резултати -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Настройки за напреднали +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Настройки STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF настройки STR_INTRO_ONLINE_CONTENT :{BLACK}Провери онлайн съдържанието STR_INTRO_SCRIPT_SETTINGS :{BLACK}ИИ/Игрови настройки @@ -1645,7 +1698,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Избе STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Покажи параметрите на играта STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показване на таблицата с най-добри резултати -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Покажи настройките за напреднали +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Настройки на дисплея STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Покажи NewGRF настройки STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Провери за ново съдържание за сваляне STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Показва настройките на ИИ @@ -1685,6 +1738,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Игр STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Магически булдозер (премахва промишленост, неподвижни обекти): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Тунелите може да се пресичат: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Реактивните самолети няма да се разбиват (често) в малки летища: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Редактиране на максималната височина на картата:{ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Редактиране на максималната височина на планините, на картата STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :умерен климат STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Арктичен климат STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Тропически климат @@ -1733,6 +1788,7 @@ STR_LIVERY_FREIGHT_TRAM :Товарен STR_FACE_CAPTION :{WHITE}Избор на лице STR_FACE_CANCEL_TOOLTIP :{BLACK}Прекъсване избора на ново лице STR_FACE_OK_TOOLTIP :{BLACK}Признавам избора на ново лице +STR_FACE_RANDOM :{BLACK}Произволно STR_FACE_MALE_BUTTON :{BLACK}Мъж STR_FACE_MALE_TOOLTIP :{BLACK}Избери мъжки лица @@ -1788,6 +1844,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cмен # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Онлайн играчи +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Рекламирана +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Избери игра измежду рекламирана през интернет или нерекламирана през Локален интернет хост или ЛАН +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Не +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Да STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Име на играч: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Чрез това име другите играчи ще ви идентифицират @@ -1846,6 +1906,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Имет STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Поставяне на парола STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Защитаване на вашата игра с парола за да не е публично достъпна +STR_NETWORK_START_SERVER_UNADVERTISED :Не STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клиент{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. брой играчи: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят @@ -1966,6 +2027,7 @@ STR_NETWORK_CLIENT :Клиент STR_NETWORK_SPECTATORS :Наблюдатели STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Въведете количеството пари, което искате да дадете +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Зрител # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Незапазвай паролата @@ -2157,8 +2219,14 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Вклу STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Направи обектите невидими вместо прозрачни # Linkgraph legend window +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Всички +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Николко +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Изберете компании, който да се показват # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}неизползван +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}наситен +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}претоварен # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Маркиране на Отбелязаната зона @@ -2558,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта @@ -2592,13 +2660,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Брой градове: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Брой индустрии: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Максимална височина на картата: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Увеличаване на максималната височина на планините на карта с едно +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Намаляне максималната височина на планините на карта с едно STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Снежна линия: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Преместване снежната линия нагоре STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Преместване снежната линия надолу -STR_MAPGEN_RANDOM_SEED :{BLACK}Случайност: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Натиснете за въвеждане семе на случайност -STR_MAPGEN_RANDOM :{BLACK}Произволно -STR_MAPGEN_RANDOM_HELP :{BLACK}Промяна на случайността използване за генериране на терен STR_MAPGEN_LAND_GENERATOR :{BLACK}Земегенератор: STR_MAPGEN_TREE_PLACER :{BLACK}Дърворазсад: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип на терен: @@ -2625,7 +2692,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Име STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Размер: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Въведи случаено семе +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Промяна на максималната височина на картата STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Височина на снежната линия STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Промяна началната година @@ -2680,6 +2747,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Наго STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Премества избрания NewGRF файл нагоре в списъка STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Надолу STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Премества избрания NewGRF файл надолу в списъка +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Ъпгрейд +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Подобрете NewGRF файлове, за които имате по-нова версия инсталирана STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Списък на инсталираните NewGRF файлове STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Настройване на параметрите @@ -2704,6 +2773,14 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Не е н STR_NEWGRF_SETTINGS_DISABLED :{RED}Изключен STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Несъвместимо с тази версия на OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_TITLE :{BLACK}Въведи име за шаблона +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Текущо избраното име за именуване на шаблона +STR_SAVE_PRESET_CANCEL :Отказ +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не променяй шаблона +STR_SAVE_PRESET_SAVE :{BLACK}Запис +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Запази шаблона за текущо избраното име + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Промени параметрите на новите графики (NewGRF) STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Затвори @@ -2734,7 +2811,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Пред STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Продължи към предишен нормален sprite, Пропускайки всички псевдо/прерисувани/текстови sprite и ги облечи в края STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Показване на избрания sprite. Подредбата се пренебрегва при рисуването му. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Преместване на sprite, променяйки X и Y координатите -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X координата: {NUM}, Y координата: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Избери sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Избери sprite от целия екран @@ -2805,6 +2881,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} на < STR_NEWGRF_INVALID_ENGINE :<невалидна машина> STR_NEWGRF_INVALID_INDUSTRYTYPE :<невалдна индустрия> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<невалидно превозно средство> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Търси NewGRF-и STR_NEWGRF_SCAN_MESSAGE :{BLACK}Търси NewGRF-и. Може да отнеме време, в зависимост от количеството... @@ -2842,8 +2921,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} доставено STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (все още трява) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (доставено) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Града нараства всеги {ORANGE}{COMMA}{BLACK} д{P ен ни} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Града нараства всеки {ORANGE}{COMMA}{BLACK} д{P ен ни} (субсидиран) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Града нараства всеги {ORANGE}{COMMA}{BLACK}{NBSP}д{P ен ни} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Града нараства всеки {ORANGE}{COMMA}{BLACK}{NBSP}д{P ен ни} (субсидиран) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Града {RED}не{BLACK} расте STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Лимит на шумът в градът: {ORANGE}{COMMA}{BLACK} най-много: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Фиксиране на главния изглед върху града. Ctrl+Click отваря прозорец на нов изглед върху града. @@ -2886,9 +2965,13 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Пок STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Подкупването на местната власт за да увеличи рейтинга носи огромен риск ако бъдете хванати.{} Цена: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Цели +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Глобални цели STR_GOALS_GLOBAL_TITLE :{BLACK}Основни цели: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Никакви - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Неприложимо- +STR_GOALS_PROGRESS :{ORANGE}напредък{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Цели на компанията: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни на задачата за да центрирате камерата на фабрика/град/плочка. Ctrl+Click отваря нов прозорец центриран на фабрика/град/плочка @@ -2898,8 +2981,8 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Информа STR_GOAL_QUESTION_CAPTION_WARNING :Внимание STR_GOAL_QUESTION_CAPTION_ERROR :Грешка -### Start of Goal Question button list -STR_GOAL_QUESTION_BUTTON_CANCEL :Недобре +############ Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Откажи STR_GOAL_QUESTION_BUTTON_OK :Добре STR_GOAL_QUESTION_BUTTON_NO :Не STR_GOAL_QUESTION_BUTTON_YES :Да @@ -2917,6 +3000,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Рестарт STR_GOAL_QUESTION_BUTTON_POSTPONE :Отложи STR_GOAL_QUESTION_BUTTON_SURRENDER :Предай се STR_GOAL_QUESTION_BUTTON_CLOSE :Затвори +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсидии @@ -2928,6 +3012,9 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисни върху услугата за да се фокусира върху индустрията/града. Ctrl отваря нов изглед към индустрията/града # Story book window +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Следваща +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Отиди на следващата страница +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Невалидна цел # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Имена на станции - натиснете върху името, за да фиксирате главния прозорец върху станцията @@ -2942,7 +3029,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Няма # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чакат: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} на път от {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} запазени за товарене) @@ -2956,8 +3042,30 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинги STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Покажи нивото на обслужване - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Месечни доставки и местен рейтинг: + +STR_STATION_VIEW_GROUP :{BLACK}По група +STR_STATION_VIEW_WAITING_STATION :Станция: Изчакване +STR_STATION_VIEW_WAITING_AMOUNT :Сума: Изчакване +STR_STATION_VIEW_PLANNED_STATION :Станция: Планирано +STR_STATION_VIEW_PLANNED_AMOUNT :Количество: Планирано +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} от {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} посредством {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} до {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} от неизвестна станция +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} за която и да е гара +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} посредством която и да е гара +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} от тази гара +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} спиране на тази гара +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} до тази станция +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} без прекъсване + +STR_STATION_VIEW_GROUP_S_V_D :Източник-Чрез-Дестинация +STR_STATION_VIEW_GROUP_S_D_V :Източник-Дестинация-Посредством +STR_STATION_VIEW_GROUP_V_S_D :Посредством-Източник-Дестинация +STR_STATION_VIEW_GROUP_V_D_S :Посредством-Дестинация-Източник +STR_STATION_VIEW_GROUP_D_S_V :Дестинация-Източник-Посредством +STR_STATION_VIEW_GROUP_D_V_S :Посока-през-Източника ############ range for rating starts STR_CARGO_RATING_APPALLING :Плачевно @@ -3100,6 +3208,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Прои STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% превозено) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Фокусиране на основният изглед върху индустрията. Ctrl+Click отваря прозорец на нов изглед върху индустрията. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ниво на производство: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Индустрията обяви незабавна ликвидация! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING} @@ -3168,6 +3277,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Изтр STR_GROUP_RENAME_TOOLTIP :{BLACK}Преименувай избраната група STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Щракни да защитиш тази група от глобална автоматична замяна + STR_GROUP_ADD_SHARED_VEHICLE :Добави споделени превозни средства STR_GROUP_REMOVE_ALL_VEHICLES :Премахни всички превозни средсва @@ -3230,6 +3340,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Преи STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Промяна името на кораб STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Смяна името на самолета +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Скрий +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Скрий +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Скрий +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Скрий + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Покажи +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Покажи +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Покажи +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Покажи + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Превключи показването на типа на локомотива +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Превключи показването на типа на автомобила +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Превключи показването на типа на кораба +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Превключи показването на типа на самолета + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Преименуване на влак STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Преименувай МПС-то STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Промяна името на кораба @@ -3334,6 +3459,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Автобус/ STR_REPLACE_VEHICLE_SHIP :Кораб STR_REPLACE_VEHICLE_AIRCRAFT :Самолет +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Използвани автомобили +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Колона с автомобили, които притежавате +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Готови автомобили +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Колона с готови за подмяна автомобили + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Избор на нов двигател за замяната STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Изберете нов двигател, който бихте желали да поставите на мястото на избрания в ляво двигател @@ -3458,7 +3588,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Капа STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Сума за преместване: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Дни на обслужване: {LTBLUE}{COMMA}дни{BLACK} Последно облужване: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Дни на обслужване: {LTBLUE}{COMMA}{NBSP}дни{BLACK} Последно облужване: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Интервал на сервиз: {LTBLUE}{COMMA}%{BLACK} Последен сервиз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Удължава периода за сервиз с 10. Ctrl-click удължава периода за сервиз с 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Намалява периода за сервиз с 10. Ctrl-click намалява периода за сервиз с 5 @@ -3690,8 +3820,8 @@ STR_TIMETABLE_TRAVEL_FOR :Пътувай STR_TIMETABLE_TRAVEL_FOR_SPEED :Пътувай за {STRING} с не повече от {VELOCITY} STR_TIMETABLE_STAY_FOR :и остани за {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :и отпътувай към {STRING} -STR_TIMETABLE_DAYS :{COMMA} ден{P "" а} -STR_TIMETABLE_TICKS :{COMMA} щракане{P "" та} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}ден{P "" а} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}щракане{P "" та} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ще трябва {STRING} за това разписание да бъде приключено STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Това разписание ще вземе най-малко {STRING} за да приклучи (не всичко е планирано) @@ -3816,6 +3946,8 @@ STR_AI_SETTINGS_START_DELAY :Броят дн STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} Дневник на промените на {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} лиценз на {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Реорганизирай текста +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Реорганизирай текста така, че изцяло да се помести в прозореца STR_TEXTFILE_VIEW_README :{BLACK}Отвори readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Дневник на промените STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лиценз @@ -3926,6 +4058,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Изко STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Морското ниво е вече достигнато STR_ERROR_TOO_HIGH :{WHITE}Прекалено високо STR_ERROR_ALREADY_LEVELLED :{WHITE}... вече е равно +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}След моста над него, ще бъде твърде високо. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Не може да бъде променено името на компанията... @@ -3976,6 +4109,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... го STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... може да бъде построено само над снежната линия STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... може да бъде построено само под снежната линия +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Няма подходящо място за '{STRING}' индустрия +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Промяна на параметрите за генериране на карта, за да получите по-добра карта + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Тук не може да бъде построена ЖП гара... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Тук не може да бъде построена автогара... @@ -4112,6 +4248,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Първ STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Не може да започва и да свърша на едно и също място STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Мостни начала не са на същото ниво STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Мостът е ту нисък за теренът +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Мостът е прекалено висок за този терен. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Началото и краят трябва да са на една линия STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... краищата на моста трябва да бъдат на земя STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... мостът е много дълъг @@ -4193,6 +4330,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Инте STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... машината е унищожена +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Никакви превозни средства няма да бъдат налични +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Промени своята NewGRF конфигурация +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма налични превозни средства все още +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Започни нова игра след {DATE_SHORT} или използвай NewGRF , който показва ранни превозни средства # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Влака не може да пропусне сигнала при опасност... @@ -4671,6 +4812,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (скрит) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4694,6 +4836,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4705,8 +4848,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4717,9 +4858,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index d0c5609941..b9de63180f 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -36,11 +36,11 @@ STR_CARGO_PLURAL_LIVESTOCK :{G=Masculin}Bes STR_CARGO_PLURAL_GOODS :{G=Femenin}Mercaderies STR_CARGO_PLURAL_GRAIN :{G=Masculin}Gra STR_CARGO_PLURAL_WOOD :{G=Femenin}Fusta -STR_CARGO_PLURAL_IRON_ORE :{G=Masculin}Mineral de Ferro +STR_CARGO_PLURAL_IRON_ORE :{G=Masculin}Mineral de ferro STR_CARGO_PLURAL_STEEL :{G=Masculin}Acer STR_CARGO_PLURAL_VALUABLES :{G=Masculin}Valors -STR_CARGO_PLURAL_COPPER_ORE :{G=Masculin}Mineral de Coure -STR_CARGO_PLURAL_MAIZE :{G=Masculin}Blat de Moro +STR_CARGO_PLURAL_COPPER_ORE :{G=Masculin}Mineral de coure +STR_CARGO_PLURAL_MAIZE :{G=Masculin}Blat de moro STR_CARGO_PLURAL_FRUIT :{G=Femenin}Fruita STR_CARGO_PLURAL_DIAMONDS :{G=Masculin}Diamants STR_CARGO_PLURAL_FOOD :{G=Masculin}Menjar @@ -53,12 +53,12 @@ STR_CARGO_PLURAL_SUGAR :{G=Masculin}Suc STR_CARGO_PLURAL_TOYS :{G=Femenin}Joguines STR_CARGO_PLURAL_CANDY :{G=Masculin}Dolços STR_CARGO_PLURAL_COLA :{G=Masculin}Refrescs -STR_CARGO_PLURAL_COTTON_CANDY :{G=Masculin}Cotó de Sucre +STR_CARGO_PLURAL_COTTON_CANDY :{G=Masculin}Cotó de sucre STR_CARGO_PLURAL_BUBBLES :{G=Femenin}Bombolles STR_CARGO_PLURAL_TOFFEE :{G=Masculin}Caramels STR_CARGO_PLURAL_BATTERIES :{G=Femenin}Bateries STR_CARGO_PLURAL_PLASTIC :{G=Masculin}Plàstic -STR_CARGO_PLURAL_FIZZY_DRINKS :{G=Femenin}Begudes Gasoses +STR_CARGO_PLURAL_FIZZY_DRINKS :{G=Femenin}Begudes gasoses # Singular cargo name STR_CARGO_SINGULAR_NOTHING : @@ -70,11 +70,11 @@ STR_CARGO_SINGULAR_LIVESTOCK :{G=Masculin}Bes STR_CARGO_SINGULAR_GOODS :{G=Femenin}Mercaderia STR_CARGO_SINGULAR_GRAIN :{G=Masculin}Gra STR_CARGO_SINGULAR_WOOD :{G=Femenin}Fusta -STR_CARGO_SINGULAR_IRON_ORE :{G=Masculin}Mineral de Ferro +STR_CARGO_SINGULAR_IRON_ORE :{G=Masculin}Mineral de ferro STR_CARGO_SINGULAR_STEEL :{G=Masculin}Acer STR_CARGO_SINGULAR_VALUABLES :{G=Masculin}Valors -STR_CARGO_SINGULAR_COPPER_ORE :{G=Masculin}Mineral de Coure -STR_CARGO_SINGULAR_MAIZE :{G=Masculin}Blat de Moro +STR_CARGO_SINGULAR_COPPER_ORE :{G=Masculin}Mineral de coure +STR_CARGO_SINGULAR_MAIZE :{G=Masculin}Blat de moro STR_CARGO_SINGULAR_FRUIT :{G=Femenin}Fruita STR_CARGO_SINGULAR_DIAMOND :{G=Masculin}Diamant STR_CARGO_SINGULAR_FOOD :{G=Masculin}Queviures @@ -87,39 +87,39 @@ STR_CARGO_SINGULAR_SUGAR :{G=Masculin}Suc STR_CARGO_SINGULAR_TOY :{G=Femenin}Joguina STR_CARGO_SINGULAR_CANDY :{G=Masculin}Dolç STR_CARGO_SINGULAR_COLA :{G=Masculin}Refresc -STR_CARGO_SINGULAR_COTTON_CANDY :{G=Masculin}Cotó de Sucre +STR_CARGO_SINGULAR_COTTON_CANDY :{G=Masculin}Cotó de sucre STR_CARGO_SINGULAR_BUBBLE :{G=Femenin}Bombolla STR_CARGO_SINGULAR_TOFFEE :{G=Masculin}Caramel STR_CARGO_SINGULAR_BATTERY :{G=Femenin}Pila STR_CARGO_SINGULAR_PLASTIC :{G=Masculin}Plàstic -STR_CARGO_SINGULAR_FIZZY_DRINK :{G=Femenin}Beguda Gasosa +STR_CARGO_SINGULAR_FIZZY_DRINK :{G=Femenin}Beguda gasosa # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{G=Masculin}{COMMA} passatger{P "" s} +STR_QUANTITY_PASSENGERS :{G=Masculin}{COMMA}{NBSP}passatger{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de carbó -STR_QUANTITY_MAIL :{COMMA} sac{P "" s} de correu +STR_QUANTITY_MAIL :{COMMA}{NBSP}sac{P "" s} de correu STR_QUANTITY_OIL :{VOLUME_LONG} de petroli -STR_QUANTITY_LIVESTOCK :{COMMA} cap{P "" s} de bestiar -STR_QUANTITY_GOODS :{COMMA} palet{P "" s} de mercaderies +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}cap{P "" s} de bestiar +STR_QUANTITY_GOODS :{COMMA}{NBSP}palet{P "" s} de mercaderies STR_QUANTITY_GRAIN :{WEIGHT_LONG} de gra STR_QUANTITY_WOOD :{WEIGHT_LONG} de fusta STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de mineral de ferro STR_QUANTITY_STEEL :{WEIGHT_LONG} d'acer -STR_QUANTITY_VALUABLES :{G=Masculin}{COMMA} sac{P "" s} de valors +STR_QUANTITY_VALUABLES :{G=Masculin}{COMMA}{NBSP}sac{P "" s} de valors STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de mineral de coure STR_QUANTITY_MAIZE :{WEIGHT_LONG} de blat de moro STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fruita -STR_QUANTITY_DIAMONDS :{COMMA} boss{P a es} de diamants +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}boss{P a es} de diamants STR_QUANTITY_FOOD :{WEIGHT_LONG} de queviures STR_QUANTITY_PAPER :{WEIGHT_LONG} de paper -STR_QUANTITY_GOLD :{G=Femenin}{COMMA} sa{P ca ques} d'or +STR_QUANTITY_GOLD :{G=Femenin}{COMMA}{NBSP}sa{P ca ques} d'or STR_QUANTITY_WATER :{VOLUME_LONG} d'aigua STR_QUANTITY_WHEAT :{WEIGHT_LONG} de blat STR_QUANTITY_RUBBER :{VOLUME_LONG} de cautxú STR_QUANTITY_SUGAR :{WEIGHT_LONG} de sucre -STR_QUANTITY_TOYS :{COMMA} joguin{P a es} -STR_QUANTITY_SWEETS :{G=Femenin}{COMMA} boss{P a es} de dolços +STR_QUANTITY_TOYS :{COMMA}{NBSP}joguin{P a es} +STR_QUANTITY_SWEETS :{G=Femenin}{COMMA}{NBSP}boss{P a es} de dolços STR_QUANTITY_COLA :{VOLUME_LONG} de refrescs STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de cotó de sucre STR_QUANTITY_BUBBLES :{COMMA} bomboll{P a es} @@ -127,7 +127,7 @@ STR_QUANTITY_TOFFEE :{WEIGHT_LONG} d STR_QUANTITY_BATTERIES :{COMMA} pil{P a es} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de plàstic STR_QUANTITY_FIZZY_DRINKS :{G=Femenin}{COMMA} begud{P a es} gasos{P a es} -STR_QUANTITY_N_A :N/A +STR_QUANTITY_N_A :n/d # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : @@ -157,7 +157,7 @@ STR_ABBREV_TOYS :{TINY_FONT}JO STR_ABBREV_SWEETS :{TINY_FONT}DO STR_ABBREV_COLA :{TINY_FONT}RF STR_ABBREV_CANDYFLOSS :{TINY_FONT}CS -STR_ABBREV_BUBBLES :{TINY_FONT}BM +STR_ABBREV_BUBBLES :{TINY_FONT}BB STR_ABBREV_TOFFEE :{TINY_FONT}CA STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL @@ -166,22 +166,22 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}TOT # 'Mode' of transport for cargoes -STR_PASSENGERS :{G=Masculin}{COMMA} passatger{P "" s} -STR_BAGS :{G=Masculin}{COMMA} sac{P "" s} -STR_TONS :{G=Femenin}{COMMA} ton{P a es} -STR_LITERS :{G=Masculin}{COMMA} litre{P "" s} -STR_ITEMS :{G=Masculin}{COMMA} cap{P "" s} -STR_CRATES :{G=Masculin}{COMMA} palet{P "" s} +STR_PASSENGERS :{G=Masculin}{COMMA}{NBSP}passatger{P "" s} +STR_BAGS :{G=Masculin}{COMMA}{NBSP}sac{P "" s} +STR_TONS :{G=Femenin}{COMMA}{NBSP}ton{P a es} +STR_LITERS :{G=Masculin}{COMMA}{NBSP}litre{P "" s} +STR_ITEMS :{G=Masculin}{COMMA}{NBSP}cap{P "" s} +STR_CRATES :{G=Masculin}{COMMA}{NBSP}palet{P "" s} # Colours, do not shuffle -STR_COLOUR_DARK_BLUE :{G=Masculin}Blau Fosc -STR_COLOUR_PALE_GREEN :{G=Masculin}Verd Pàl·lid +STR_COLOUR_DARK_BLUE :{G=Masculin}Blau fosc +STR_COLOUR_PALE_GREEN :{G=Masculin}Verd pàl·lid STR_COLOUR_PINK :{G=Masculin}Rosa STR_COLOUR_YELLOW :{G=Masculin}Groc STR_COLOUR_RED :{G=Masculin}Vermell -STR_COLOUR_LIGHT_BLUE :{G=Masculin}Blau Cel +STR_COLOUR_LIGHT_BLUE :{G=Masculin}Blau cel STR_COLOUR_GREEN :{G=Masculin}Verd -STR_COLOUR_DARK_GREEN :{G=Masculin}Verd Fosc +STR_COLOUR_DARK_GREEN :{G=Masculin}Verd fosc STR_COLOUR_BLUE :{G=Masculin}Blau STR_COLOUR_CREAM :{G=Masculin}Crema STR_COLOUR_MAUVE :{G=Masculin}Malva @@ -192,67 +192,78 @@ STR_COLOUR_GREY :{G=Masculin}Gri STR_COLOUR_WHITE :{G=Masculin}Blanc # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}cv -STR_UNITS_POWER_METRIC :{COMMA}cv -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}cv +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}cv +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tones{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{G=Femenin}{COMMA} ton{P a es} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P a es} +STR_UNITS_WEIGHT_LONG_METRIC :{G=Femenin}{COMMA}{NBSP}ton{P a es} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}quilogram{P "" s} -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{G=Masculin}{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}L +STR_UNITS_VOLUME_SHORT_SI :{G=Masculin}{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galons{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{G=Masculin}{COMMA} litre{P "" s} -STR_UNITS_VOLUME_LONG_SI :{G=Masculin}{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gal{P ó ons} +STR_UNITS_VOLUME_LONG_METRIC :{G=Masculin}{COMMA}{NBSP}litre{P "" s} +STR_UNITS_VOLUME_LONG_SI :{G=Masculin}{COMMA}{NBSP}metre{P "" s}{NBSP}cúbic{P "" s} -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{G=Masculin}{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{G=Masculin}{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{G=Masculin}{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{G=Masculin}{COMMA}{NBSP}m # Common window strings -STR_LIST_FILTER_TITLE :{BLACK}Cadena de filtre: -STR_LIST_FILTER_OSKTITLE :{BLACK}Introdueix una cadena de filtre +STR_LIST_FILTER_TITLE :{BLACK}Cadena de filtrat: +STR_LIST_FILTER_OSKTITLE :{BLACK}Introdueix una cadena de filtrat STR_LIST_FILTER_TOOLTIP :{BLACK}Introdueix una paraula clau per filtrar la llista de -STR_TOOLTIP_GROUP_ORDER :{BLACK}Selecciona ordre d'agrupament -STR_TOOLTIP_SORT_ORDER :{BLACK}Selecciona l'ordre de classificació (descendent/ascendent) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecciona el criteri de classificació -STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selecciona el criteri de filtratge -STR_BUTTON_SORT_BY :{BLACK}Ordena per +STR_TOOLTIP_GROUP_ORDER :{BLACK}Selecciona l'agrupament de la càrrega +STR_TOOLTIP_SORT_ORDER :{BLACK}Selecciona si l'ordre ha de ser descendent o ascendent +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecciona el criteri per ordenar la llista +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filtra per tipus de càrrega +STR_BUTTON_SORT_BY :{BLACK}Ordena per: STR_BUTTON_LOCATION :{G=Masculin}{BLACK}Lloc STR_BUTTON_RENAME :{BLACK}Canvia el nom STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Tanca la finestra -STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de la finestra - arrossega això per moure la finestra -STR_TOOLTIP_SHADE :{BLACK}Ombra de la finestra - mostra només la barra de títol +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de la finestra: arrossegueu el títol per desplaçar la finestra. +STR_TOOLTIP_SHADE :{BLACK}Ombra de la finestra: mostra només la barra de títol. STR_TOOLTIP_DEBUG :{BLACK}Mostra la informació de depuració NewGRF -STR_TOOLTIP_DEFSIZE :{BLACK}Redimensiona la finestra a la mida predeterminada. Ctrl+Clic per desar la mida actual com a predeterminada -STR_TOOLTIP_STICKY :{BLACK}Marca aquesta finestra com a no eliminable per la tecla 'Tanca totes les Finestres' Ctrl+Clic per desar també l'estat predeterminat +STR_TOOLTIP_DEFSIZE :{BLACK}Redimensiona la finestra a la mida predeterminada. Ctrl+Clic desa la mida actual com a predeterminada. +STR_TOOLTIP_STICKY :{BLACK}Marca aquesta finestra com a no eliminable per la tecla «Tanca totes les finestres». Ctrl+Clic per desar també l'estat predeterminat. STR_TOOLTIP_RESIZE :{BLACK}Clica i arrossega per redimensionar aquesta finestra -STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intercanvia mida gran/petita de finestra -STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplaçament - desplaça la llista amunt/avall -STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplaçament - desplaça la llista dreta/esquerra -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Enderroca edificis, etc. en un quadre de terreny. Ctrl selecciona l'àrea en diagonal. Shift commuta construir/mostrar el cost estimat +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Commuta entre la mida gran i petita de la finestra +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplaçament: desplaça la llista amunt/avall. +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplaçament: desplaça la llista lateralment. +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Neteja les caselles seleccionades (enderroca edificis, tala arbres...). Per seleccionar l'àrea en diagonal, cliqueu Ctrl. Shift commuta construir/mostrar el cost estimat. + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostra ocultats + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran els vehicles ferroviaris ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran els vehicles de carretera ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran els vaixells ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran les aeronaus ocultades # Query window STR_BUTTON_DEFAULT :{BLACK}Predeterminat STR_BUTTON_CANCEL :{BLACK}Cancel·la -STR_BUTTON_OK :{BLACK}Bé +STR_BUTTON_OK :{BLACK}D'acord # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -272,25 +283,25 @@ STR_SORT_BY_CAPTION_DATE :{BLACK}Data STR_SORT_BY_NAME :Nom STR_SORT_BY_PRODUCTION :Producció STR_SORT_BY_TYPE :Tipus -STR_SORT_BY_TRANSPORTED :Transportat +STR_SORT_BY_TRANSPORTED :% transportat STR_SORT_BY_NUMBER :Número -STR_SORT_BY_PROFIT_LAST_YEAR :Benef. darrer any -STR_SORT_BY_PROFIT_THIS_YEAR :Benef. aquest any -STR_SORT_BY_AGE :Antig. -STR_SORT_BY_RELIABILITY :Rendibilitat +STR_SORT_BY_PROFIT_LAST_YEAR :Benefici darrer any +STR_SORT_BY_PROFIT_THIS_YEAR :Benefici aquest any +STR_SORT_BY_AGE :Antiguitat +STR_SORT_BY_RELIABILITY :Fiabilitat STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capac. total per tipus de càrrega -STR_SORT_BY_MAX_SPEED :Veloc. Màxima +STR_SORT_BY_MAX_SPEED :Velocitat màxima STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Valor STR_SORT_BY_LENGTH :Llargada STR_SORT_BY_LIFE_TIME :Temps de vida restant STR_SORT_BY_TIMETABLE_DELAY :Retràs de l'horari -STR_SORT_BY_FACILITY :Tipus de estació +STR_SORT_BY_FACILITY :Tipus d'estació STR_SORT_BY_WAITING_TOTAL :Càrrega en espera total STR_SORT_BY_WAITING_AVAILABLE :Càrrega en espera disponible STR_SORT_BY_RATING_MAX :Rati de càrrega més alt STR_SORT_BY_RATING_MIN :Rati de càrrega més baix -STR_SORT_BY_ENGINE_ID :IDMotor (ordre clàssic) +STR_SORT_BY_ENGINE_ID :Número de model (ordre clàssic) STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Potència STR_SORT_BY_TRACTIVE_EFFORT :Esforç de tracció @@ -303,84 +314,84 @@ STR_SORT_BY_POPULATION :Població STR_SORT_BY_RATING :Qualificació # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Para el joc -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avanç ràpid del joc +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Posa en pausa o reprèn la partida +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avança la partida el més ràpid possible STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcions -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Desa el joc, abandona el joc, surt -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Mostra el mapa -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostra el directori de poblacions +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Desa la partida, abandona-la o surt del programa +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Mostra el mapa, finestres de visualització o llista de senyals, entre d'altres +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostra la llista de poblacions STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostra les subvencions STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostra la llista d'estacions de la companyia -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostra informació financera de la companyia -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostra informació general de la companyia -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra llibre -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostra llista d'objectius -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostra gràfics +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostra la informació financera de la companyia +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostra la informació general de la companyia +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra el llibre de partida +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostra la llista d'objectius +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostra gràfics de les empreses STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostra la taula de la lliga d'empreses -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financia la construcció d'una nova indústria -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Mostra la llista de trens de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Mostra la llista de vehicles de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Mostra la llista de vaixells de la companyia. Ctrl+Clic canvia entre l'obertura de la llista de grups/vehicles -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Mostra la llista d'avions de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finança la construcció d'una nova indústria +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Mostra la llista de trens de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Mostra la llista de vehicles de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Mostra la llista de vaixells de la companyia. Ctrl+Clic canvia entre l'obertura de la llista de grups/vehicles. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Mostra la llista d'avions de la companyia. Ctrl+Clic commuta l'obertura de la llista de grups/vehicles. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Apropar-se STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Allunyar-se STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construeix vies STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construeix carreteres STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construeix ports STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construeix aeroports -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Obre la barra d'eines del terreny per elevar/rebaixar nivell, plantar arbres, etc. +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Obre la barra d'eines del terreny per elevar/rebaixar el terreny, plantar arbres, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Mostra la finestra de so/música -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Mostra els darrers missatges/notícies, mostra les opcions de missatges -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informació del terreny, terminal, depuració d'scripts, captures de pantalla, quant a OpenTTD +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Mostra els darrers missatges/notícies i l'historial disponible +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informació de terreny, consola, depuració d'scripts, captures de pantalla, informació de l'OpenTTD... STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Commuta barres d'eines # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Desa l'escenari, carrega un escenari, abandona l'editor d'escenaris, surt +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Desa o carrega un escenari o bé surt de l'editor o de l'OpenTTD STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor d'Escenaris +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor d'escenaris STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Retarda la data d'inici 1 any STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Avança la data d'inici 1 any STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Clica per introduir l'any d'inici -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Mostra el mapa, directori de poblacions -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generació de Paisatges -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generació de Poblacions +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Mostra el mapa o el llistat de poblacions +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generació del terreny +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generació de poblacions STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generació d'indústries STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construcció de carreteres -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Planta arbres. Shift commuta construeix/mostra el cost estimat +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Planta arbres. Shift per sols mostrar el cost estimat. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Situa un senyal -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Situa objecte. Shift commuta construeix/mostra el cost estimat +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Situa objecte. Shift per sols mostrar el cost estimat. ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Desa l'escenari STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Carrega un escenari -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Desa mapa d'alçades -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Carrega Mapa d'alçades +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Desa el mapa d'alçades +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Carrega un mapa d'alçades STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Surt de l'editor d'escenaris STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Surt ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Opcions del Joc -STR_SETTINGS_MENU_CONFIG_SETTINGS :Paràmetres avançats -STR_SETTINGS_MENU_SCRIPT_SETTINGS :Paràmetres de la IA/Scripts del joc +STR_SETTINGS_MENU_GAME_OPTIONS :Opcions de la partida +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Configuració +STR_SETTINGS_MENU_SCRIPT_SETTINGS :Paràmetres de les IA i de l'script de la partida STR_SETTINGS_MENU_NEWGRF_SETTINGS :Extensions NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcions de transparència STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Mostra els noms de les poblacions STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Mostra els noms de les estacions -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Mostra els punts de control +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Mostra els punts de pas STR_SETTINGS_MENU_SIGNS_DISPLAYED :Mostra els senyals STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Mostra noms i senyals dels competidors STR_SETTINGS_MENU_FULL_ANIMATION :Animació completa STR_SETTINGS_MENU_FULL_DETAIL :Detall complet -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Edificis Transparents +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Edificis transparents STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Senyals transparents ############ range ends here ############ range for file menu starts -STR_FILE_MENU_SAVE_GAME :Desa el joc -STR_FILE_MENU_LOAD_GAME :Carrega un joc -STR_FILE_MENU_QUIT_GAME :Abandona el joc +STR_FILE_MENU_SAVE_GAME :Desa la partida +STR_FILE_MENU_LOAD_GAME :Carrega una partida +STR_FILE_MENU_QUIT_GAME :Abandona la partida STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Surt ############ range ends here @@ -388,12 +399,12 @@ STR_FILE_MENU_EXIT :Surt # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa del món STR_MAP_MENU_EXTRA_VIEW_PORT :Vista extra -STR_MAP_MENU_LINGRAPH_LEGEND :Llegenda del fluxe de càrrega +STR_MAP_MENU_LINGRAPH_LEGEND :Llegenda del flux de càrrega STR_MAP_MENU_SIGN_LIST :Llista de senyals ############ range for town menu starts -STR_TOWN_MENU_TOWN_DIRECTORY :Directori de Poblacions -STR_TOWN_MENU_FOUND_TOWN :Funda un poble +STR_TOWN_MENU_TOWN_DIRECTORY :Llista de poblacions +STR_TOWN_MENU_FOUND_TOWN :Funda una població ############ range ends here ############ range for subsidies menu starts @@ -401,36 +412,36 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Subvencions ############ range ends here ############ range for graph menu starts -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gràfic de benefici operatiu +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gràfic de beneficis operatius STR_GRAPH_MENU_INCOME_GRAPH :Gràfic d'ingressos STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Gràfic d'entrega de càrrega STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Gràfic històric de rendiment -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gràfic de valor de l'Empresa +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gràfic del valor de les empreses STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Tarifes de pagament per càrrega ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Taula de la Lliga d'Empreses +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Taula de la lliga d'empreses STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detall de ratis de rendiment -STR_GRAPH_MENU_HIGHSCORE :Taula de rècords +STR_GRAPH_MENU_HIGHSCORE :Taula de puntuacions ############ range ends here ############ range for industry menu starts -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Directori d'indústries +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Llista d'indústries STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Cadenes industrials -STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financia una nova indústria +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finança una nova indústria ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construcció de Ferrocarril -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construcció de Ferrocarril Elèctric -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construcció de Monorail +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construcció de ferrocarril +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construcció de ferrocarril elèctric +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construcció de monorail STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construcció de Maglev ############ range ends here ############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :Construcció de Carreteres -STR_ROAD_MENU_TRAM_CONSTRUCTION :Construcció de Tramvies +STR_ROAD_MENU_ROAD_CONSTRUCTION :Construcció de carreteres +STR_ROAD_MENU_TRAM_CONSTRUCTION :Construcció de tramvies ############ range ends here ############ range for waterways construction menu starts @@ -438,11 +449,11 @@ STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construcció de ############ range ends here ############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construcció d'Aeroport +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construcció d'aeroports ############ range ends here ############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :Paisatges +STR_LANDSCAPING_MENU_LANDSCAPING :Modificació del paisatge STR_LANDSCAPING_MENU_PLANT_TREES :Planta arbres STR_LANDSCAPING_MENU_PLACE_SIGN :Situa un senyal ############ range ends here @@ -453,71 +464,89 @@ STR_TOOLBAR_SOUND_MUSIC :So/música ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Darrer missatge/notícia -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de Missatges +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de missatges ############ range ends here ############ range for about menu starts -STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de l'àrea de terreny +STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de la casella de terreny STR_ABOUT_MENU_SEPARATOR : -STR_ABOUT_MENU_TOGGLE_CONSOLE :Canvia al terminal -STR_ABOUT_MENU_AI_DEBUG :Depuració de la IA/Scripts del joc +STR_ABOUT_MENU_TOGGLE_CONSOLE :Mostra/oculta la consola +STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA i l'script de la partida STR_ABOUT_MENU_SCREENSHOT :Captura de pantalla STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captura de pantalla amb el zoom màxim STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Captura de pantalla amb el zoom predeterminat STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de pantalla de tot el mapa -STR_ABOUT_MENU_ABOUT_OPENTTD :Quant a 'OpenTTD' -STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador d'sprite +STR_ABOUT_MENU_ABOUT_OPENTTD :Quant a l'OpenTTD +STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador d'sprites STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Commuta les caixes delimitadores STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Commuta el colorejat dels blocs bruts ############ range ends here -############ range for days starts (also used for the place in the highscore window) -STR_ORDINAL_NUMBER_1ST :1 -STR_ORDINAL_NUMBER_2ND :2 -STR_ORDINAL_NUMBER_3RD :3 -STR_ORDINAL_NUMBER_4TH :4 -STR_ORDINAL_NUMBER_5TH :5 -STR_ORDINAL_NUMBER_6TH :6 -STR_ORDINAL_NUMBER_7TH :7 -STR_ORDINAL_NUMBER_8TH :8 -STR_ORDINAL_NUMBER_9TH :9 -STR_ORDINAL_NUMBER_10TH :10 -STR_ORDINAL_NUMBER_11TH :11 -STR_ORDINAL_NUMBER_12TH :12 -STR_ORDINAL_NUMBER_13TH :13 -STR_ORDINAL_NUMBER_14TH :14 -STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :1r +STR_ORDINAL_NUMBER_2ND :2n +STR_ORDINAL_NUMBER_3RD :3r +STR_ORDINAL_NUMBER_4TH :4t +STR_ORDINAL_NUMBER_5TH :5è +STR_ORDINAL_NUMBER_6TH :6è +STR_ORDINAL_NUMBER_7TH :7è +STR_ORDINAL_NUMBER_8TH :8è +STR_ORDINAL_NUMBER_9TH :9è +STR_ORDINAL_NUMBER_10TH :10è +STR_ORDINAL_NUMBER_11TH :11è +STR_ORDINAL_NUMBER_12TH :12è +STR_ORDINAL_NUMBER_13TH :13è +STR_ORDINAL_NUMBER_14TH :14è +STR_ORDINAL_NUMBER_15TH :15è +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts -STR_MONTH_ABBREV_JAN :Gen -STR_MONTH_ABBREV_FEB :Feb -STR_MONTH_ABBREV_MAR :Mar -STR_MONTH_ABBREV_APR :Abr -STR_MONTH_ABBREV_MAY :Mai -STR_MONTH_ABBREV_JUN :Jun -STR_MONTH_ABBREV_JUL :Jul -STR_MONTH_ABBREV_AUG :Ago -STR_MONTH_ABBREV_SEP :Sep -STR_MONTH_ABBREV_OCT :Oct -STR_MONTH_ABBREV_NOV :Nov -STR_MONTH_ABBREV_DEC :Des +STR_MONTH_ABBREV_JAN :gen. +STR_MONTH_ABBREV_FEB :febr. +STR_MONTH_ABBREV_MAR :març +STR_MONTH_ABBREV_APR :abr. +STR_MONTH_ABBREV_MAY :maig +STR_MONTH_ABBREV_JUN :juny +STR_MONTH_ABBREV_JUL :jul. +STR_MONTH_ABBREV_AUG :ag. +STR_MONTH_ABBREV_SEP :set. +STR_MONTH_ABBREV_OCT :oct. +STR_MONTH_ABBREV_NOV :nov. +STR_MONTH_ABBREV_DEC :des. STR_MONTH_JAN :Gener STR_MONTH_FEB :Febrer @@ -535,44 +564,44 @@ STR_MONTH_DEC :Desembre # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Llegenda -STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la llegenda als gràfics +STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la llegenda dels gràfics STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} -STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gràfic de Rendiment d'Operacions -STR_GRAPH_INCOME_CAPTION :{WHITE}Gràfic d'Ingressos +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gràfic de rendiment d'operacions +STR_GRAPH_INCOME_CAPTION :{WHITE}Gràfic d'ingressos STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unitats de càrrega entregada -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ratis de rendiment de la companyia (màxim rati=1000) +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ratis de rendiment de la companyia (rati màxim: 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valors de la companyia -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tarifes de Pagament de Càrrega +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tarifes de pagament de càrregues STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dies en trànsit -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagament per entregar 10 unitats (o 10,000 litres) de càrrega a una distància de 20 quadres +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagament per entregar 10 unitats (o 10.000 litres) de càrrega a una distància de 20 caselles STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Activa-ho tot STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Desactiva-ho tot STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostra totes les càrregues al gràfic de ratis de pagament de càrregues STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}No mostris càrregues al gràfic de ratis de pagament de càrregues -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Activa/desactiva gràfic de tipus de càrrega +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostra/amaga el tipus de càrrega al gràfic STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostra ratis de rendiment detallats # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Llegenda dels gràfics de la companyia -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clica aquí per activar/desactivar l'entrada als gràfics de la companyia +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clica aquí per mostrar/amagar la companyia al gràfic # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Taula de la Lliga d'Empreses +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Taula de la lliga d'empreses STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Enginyer -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Director de Trànsit -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de Transport -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Ruta +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Director de trànsit +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de transport +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de ruta STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Director -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Cap Executiu -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Conseller Delegat +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Cap executiu +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Conseller delegat STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnat @@ -586,34 +615,34 @@ STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Veure el ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehicles: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Estacions: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Mín. benefici: -STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Mín. ingrés: -STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Màx. ingrés: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Benefici menor: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ingrés mínim: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Ingrés màxim: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Entregat: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Càrrega: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Diner: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Préstec: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Quantitat de vehicles que han donat beneficis el darrer any. Inclou els automòbils, trens, vaixells i avions -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Quantitat d'estacions revisades recentment. Estacions, parades d'autobús, aeroports, etc. es compten separadament, fins hi tot si pertanyen a la mateixa estació. -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}El benefici del vehicle amb els menors ingressos (només s'han considerat els vehicles més antics de 2 anys) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantitat de diners fets durant el quatrimestre amb el mínim benefici dels darrers 12 quatrimestres -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Quantitat de diners fets durant el quatrimestre amb el màxim benefici dels darrers 12 quatrimestres -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unitats de càrrega entregades en els darrers quatre trimestres. -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tipus de càrrega entregada durant el darrer trimestre. -STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Quantitats de diners en efectiu -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}La quantitat de diners que aquesta companyia té com a préstec +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Quantitat de vehicles que han donat beneficis el darrer any. Inclou els automòbils, trens, vaixells i avions. +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nombre d'estacions visitades recentment per algun vehicle. Estacions, parades d'autobús, aeroports, etc. es compten per separat, fins i tot si pertanyen a la mateixa estació. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}El benefici del vehicle amb els menors ingressos. Només es consideren els vehicles amb més de 2 anys. +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantitat de diners guanyats durant el trimestre amb el mínim benefici dels darrers 12 trimestres +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Quantitat de diners guanyats durant el trimestre amb el màxim benefici dels darrers 12 trimestres +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unitats de càrrega entregades en els darrers quatre trimestres +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tipus de càrrega entregada durant el darrer trimestre +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Quantitat de diners de què disposa aquesta companyia +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}La quantitat de diners que aquesta companyia té en préstec STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total de punts sobre els punts possibles # Music window -STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox de Jazz +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Reproductor de música STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Tot -STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Estil Antic -STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nou Estil +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Estil antic +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Estil nou STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street -STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Opcional 1 -STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Opcional 2 +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Personalitzat 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Personalitzat 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volum de la música STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volum dels efectes STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MÍN @@ -622,7 +651,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ -STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" +STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}» STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Pista STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Títol STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Aleatori @@ -630,96 +659,96 @@ STR_MUSIC_PROGRAM :{TINY_FONT}{BLA STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Salta a la pista anterior de la selecció STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Salta a la pista següent de la selecció STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Para la música -STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Engega la música +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Reprodueix la música STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Arrossega els controls per establir el volum de la música i els efectes de so -STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selecciona el programa 'totes les pistes' -STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecciona el programa 'música estil antic' -STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecciona el programa 'música de nou estil' -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona el programa 'Ezy Street style music' -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecciona el programa 'Opcional 1' (definit per l'usuari) -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecciona el programa 'Opcional 2' (definit per l'usuari) -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Commuta el programa aleatori actiu/inactiu -STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra la finestra de selecció de pistes de música +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selecciona una llista que inclou totes les pistes +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecciona la llista de peces d'estil antic +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecciona la llista de peces d'estil nou +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona la llista de peces d'estil «Ezy Street» +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecciona la primera llista configurable per l'usuari +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecciona la segona llista configurable per l'usuari +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Habilita/deshabilita la reproducció en ordre aleatori +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra la finestra de selecció de pistes -STR_ERROR_NO_SONGS :{WHITE}S'ha seleccionat un conjunt de músiques sense cançons. No es reproduiran cançons +STR_ERROR_NO_SONGS :{WHITE}S'ha seleccionat un conjunt de música sense peces. No es reproduirà res. # Playlist window -STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selecció del Programa de Música -STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" -STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index de Pista -STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}' +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selecció de les peces de la llista +STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}» +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índex de pistes +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Llista «{STRING}» STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Esborra -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Esborra el programa actual (només Opcional 1 o Opcional 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clica a la pista de música per afegir-la al programa actual (només Opcional 1 o Opcional 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clica a la pista de música per treure-la del programa actual (només Personalitzat 1 o Personalitzat 2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Esborra la llista actual (només les llistes personalitzables) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clica la pista de música per afegir-la a la llista actual (només en les llistes personalitzables) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clica la pista de música per treure-la de la llista actual (només en llistes personalitzables) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Principals empreses en aconseguir el Nivell {NUM} -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Taula de Lliga d'Empreses a {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Principals empreses en arribar al {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Taula de la lliga d'empreses a {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Empresari STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Emprenedor STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrial STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat -STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Gran Magnat -STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnat del Segle +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Gran magnat +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnat del segle STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} assoleix l'estat '{STRING}' ! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} assoleix l'estat '{STRING}' ! # Smallmap window -STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} +STR_SMALLMAP_CAPTION :{WHITE}Minimapa: {STRING} STR_SMALLMAP_TYPE_CONTOURS :Límits STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Indústries -STR_SMALLMAP_TYPE_ROUTEMAP :Fluxe de càrregues +STR_SMALLMAP_TYPE_ROUTEMAP :Flux de càrregues STR_SMALLMAP_TYPE_ROUTES :Rutes STR_SMALLMAP_TYPE_VEGETATION :Vegetació STR_SMALLMAP_TYPE_OWNERS :Propietaris -STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostra els límits de terreny al mapa -STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostra els vehicles al mapa -STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostra les indústries al mapa -STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostra el fluxe de càrregues al mapa -STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostra les rutes de transport al mapa -STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostra la vegetació al mapa -STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostra els propietaris del terreny al mapa -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clica sobre el tipus d'indústria per commutar mostrar-les. Ctrl+Clic desactiva tots els tipus excepte la seleccionada. Ctrl+Clic sobre un altre cop activa tots els tipus d'indústria -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Clica sobre la companyia per commutar mostrar les seves propietats. Ctrl+Clic desactiva totes les companyies excepte la seleccionada. Ctrl+Clic sobre un altre cop per activar totes les companyies -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clica sobre una càrrega per commutar la visualització. Ctrl+Clic desactiva totes les càrregues excepte la seleccionada. Ctrl+Clic sobre ella una altra vegada activa totes les càrregues +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostra l'alçada del terreny +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostra els vehicles al minimapa +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostra les indústries al minimapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostra el flux de càrregues al minimapa +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostra les estacions i rutes de transport al minimapa +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostra la vegetació al minimapa +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostra els propietaris del terreny al minimapa +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clica sobre el tipus d'indústria per mostrar-les o ocultar-les. Ctrl+Clic desactiva tots els tipus excepte la seleccionada. Ctrl+Clic a sobre d'ella un altre cop activa tots els tipus d'indústria. +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Clica sobre la companyia per mostrar o amagar les seves propietats. Ctrl+Clic desactiva totes les companyies excepte la seleccionada. Ctrl+Clic a sobre d'ella un altre cop per activar totes les companyies. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clica sobre una càrrega per commutar la visualització. Ctrl+Clic desactiva totes les càrregues excepte la seleccionada. Ctrl+Clic a sobre d'ella una altra vegada activa totes les càrregues. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Carreteres STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Vies -STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Estacions/Aeroports/Ports -STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Edificis/Indústries +STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Estacions, aeroports i ports +STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Edificis i indústries STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehicles STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trens -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Vehicles de carretera +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Automòbils STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Vaixells STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Avions -STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Rutes de Transport +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Rutes de transport STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Bosc -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estació de Ferrocarril -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Moll de Càrrega de Camions +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estació de ferrocarril +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Moll de càrrega de camions STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Parada d'autobús STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroport/Heliport STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Moll -STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terreny Irregular +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terreny irregular STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gespa STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terreny erm -STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Camps +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Camps de conreu STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arbres STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Roques STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Aigua -STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sense Propietari +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sense propietari STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Poblacions STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Indústries STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neu -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Activa/desactiva noms de poblacions al mapa +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostra/amaga el nom de les poblacions al mapa STR_SMALLMAP_CENTER :{BLACK}Centra el mapa petit a la posició actual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -727,97 +756,96 @@ STR_SMALLMAP_COMPANY :{TINY_FONT}{COM STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactiva-ho tot STR_SMALLMAP_ENABLE_ALL :{BLACK}Activa-ho tot -STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostra alçada -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}No mostris les indústries al mapa +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostra l'alçada +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}No mostris cap indústria al mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostra totes les indústries al mapa -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Commuta mostrar els mapes d'alçades +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostra o amaga l'alçada del terreny al minimapa STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}No mostris cap propietat de la companyia al mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostra totes les propietats de la companyia al mapa -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}No mostris càrregues al mapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}No mostris cap càrrega al mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostra totes les càrregues al mapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra el darrer missatge o notícia STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * EN PAUSA * * -STR_STATUSBAR_AUTOSAVE :{RED}AUTO DESAR -STR_STATUSBAR_SAVING_GAME :{RED}* * DESANT JOC * * +STR_STATUSBAR_AUTOSAVE :{RED}DESADA AUTOMÀTICA +STR_STATUSBAR_SAVING_GAME :{RED}* * DESANT PARTIDA * * # News message history -STR_MESSAGE_HISTORY :{WHITE}Històric de Missatges +STR_MESSAGE_HISTORY :{WHITE}Historial de missatges STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Llista de les notícies més recents STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Missatge STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular...{}El primer tren arriba a {STATION}! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular...{}El primer autobús arriba a {STATION}! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular...{}El primer camió arriba a {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Els ciutadans celebren . . .{}El primer tramvia de passatgers arriba a {STATION}! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Els ciutadans celebren . . .{}El primer tramvia de mercaderies arriba a {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular...{}El primer vaixell arriba a {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular...{}El primer avió arriba a {STATION}! - -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Accident de Tren!{}{COMMA} moren en una bola de foc després de la col·lisió -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Accident d'automòbil!{}El conductor mor en una bola de foc després de la col·lisió amb un tren -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Accident d'automòbil!{}{COMMA} moren en una bola de foc després d'una col·lisió amb un tren -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Accident d'avió!{}{COMMA} moren en una bola de foc a {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Accident d'aviació!{}L'avió s'ha quedat sense combustible, {COMMA} morts en l'accident! - -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre de Zeppelin a {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Automòbil destruït en col·lisionar amb un 'OVNI'! -STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explosió de refineria de petroli prop de {TOWN}! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer tren arriba a {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer autobús arriba a {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer camió arriba a {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer tramvia de passatgers arriba a {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer tramvia de mercaderies arriba a {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer vaixell arriba a {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Celebració popular{}El primer avió arriba a {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Accident de tren!{}{COMMA} mort{P "" s} en el foc de la col·lisió +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Accident d'automòbil!{}El conductor mor en la col·lisió amb un tren +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Accident d'automòbil!{}{COMMA} mort{P "" s} en l'explosió després de la col·lisió amb un tren +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Accident d'avió!{}{COMMA} mort{P "" s} en el tràgic accident a {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Accident d'aviació!{}L'aeronau s'ha quedat sense combustible:{}{COMMA} mort{P "" s} en l'accident! + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre amb un zepelí a {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Automòbil destruït en col·lisionar amb un ovni! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explosió de la refineria de petroli prop de {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fàbrica destruïda en estranyes circumstàncies prop de {TOWN}! -STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'OVNI' aterra prop de {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Ovni aterra prop de {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}L'enfonsament d'una mina de carbó deixa un rastre de destrucció prop de {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundacions!{}Al menys {COMMA} presumptament desapareguts o morts després de les inundacions! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundacions{}Almenys {COMMA} desapareguts, possiblement morts, després de les inundacions! -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Empresa de Transport en dificultats! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ha de ser venuda o declarar-se en fallida a menys que el seu rendiment s'incrementi aviat! -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fusió d'Empreses de Transport! +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Empresa de transport en dificultats! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ha de ser venuda o declarar-se en fallida a menys que el seu rendiment incrementi aviat! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fusió d'empreses de transport STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} s'ha venut a {STRING} per {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Fallida! -STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ha estat tancada pels creditors i tots els seus actius han estat venuts! -STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Creada nova companyia de transports! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} comença la construcció prop de {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ha estat absorbida per {STRING}! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ha estat tancada pels creditors i s'han venut tots els seus actius +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Creada una nova companyia de transports +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} comença a treballar prop de {TOWN} +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ha estat absorbida per {STRING} STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(President) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ha patrocinat la construcció d'un nou poble, anomenat {TOWN}! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ha patrocinat la construcció d'una nova població, anomenada {TOWN} -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}No{G u va} {STRING} en construcció prop de {TOWN}! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}S'està implantant {G un una} {G nou nova} {STRING} prop de {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}No{G u va} {STRING} en construcció prop de {TOWN} +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}S'està plantant {G un una} {G nou nova} {STRING} prop de {TOWN} -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anuncia el seu imminent tancament! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemes de subministrament fan que {STRING} anunciï el seu imminent tancament! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}La falta d'arbres propers fa que {STRING} anunciï el seu imminent tancament! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anuncia el seu tancament imminent +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemes de subministrament fan que {STRING} anunciï el seu imminent tancament +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}L'escassedat d'arbres propers fa que {STRING} anunciï el seu imminent tancament -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Unió Monetària Europea!{}{}S'introdueix l'Euro com a moneda única per les transaccions diàries del teu país! -STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessió Mundial!{}{}Economistes experts temen que l'economia es desplomi! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}S'ha acabat la recessió!{}{}La millora als negocis dóna confiança a les indústries i l'economia s'enforteix! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Unió Monetària Europea{}{}S'introdueix l'euro com a moneda única per les transaccions diàries del país +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessió Mundial!{}{}Economistes experts temen que l'economia es desplomi +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}S'acaba la recessió{}{}La millora dels negocis dóna confiança a les indústries i l'economia s'enforteix -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} incrementa la producció! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova veta de carbó trobada a {INDUSTRY}!{}Es preveu doblar la producció! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Noves reserves de petroli trobades a {INDUSTRY}!{}Es preveu doblar la producció! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Sistemes de conreu millorats a {INDUSTRY} fan preveure doblar la producció! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} creix un {COMMA}%! -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}La producció de {INDUSTRY} es redueix un 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Una plaga d'insectes provoca el caos a {INDUSTRY}!{}La producció es redueix un 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} es redueix un {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} incrementa la producció +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova veta de carbó trobada a {INDUSTRY}{}Es preveu doblar la producció +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Noves reserves de petroli trobades a {INDUSTRY}{}Es preveu doblar la producció +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Sistemes de conreu millorats a {INDUSTRY} fan preveure que es doblarà la producció +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} creix un {COMMA}% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}La producció de {INDUSTRY} descendeix un 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Una plaga d'insectes provoca el caos a {INDUSTRY}{}La producció baixa un 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} es redueix un {COMMA}% STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} està esperant a la cotxera STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} està esperant a la cotxera STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} està esperant a la drassana STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} està esperant a l'hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} té massa poques ordres a l'agenda +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} té poques ordres a l'agenda STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} té una ordre buida STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} té ordres duplicades STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} té una estació invàlida en les seves ordres -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} té en les seves ordres un aeroport amb pista d'aterratge massa curta STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} s'està fent vell STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} s'està fent molt vell @@ -839,86 +867,82 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} ara accepta {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} ara accepta {STRING} i {STRING} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subvenció expirada: {}{}El transport de {STRING} des de {STRING} fins a {STRING} no tindrà subvenció +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subvenció caducada: {}{}El transport de {STRING} des de {STRING} fins a {STRING} no tindrà subvenció STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvenció retirada:{}{}El transport de {STRING} des de {STRING} fins a {STRING} ja no està subvencionat -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Oferta de subvenció per a un servei:{}{} El primer servei de {STRING} des de {STRING} fins a {STRING} tindrà una subvenció d'un any per part de l'autoritat local! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvenció per a un servei concedida a {STRING}!{}{} El transport de {STRING} des de {STRING} fins a {STRING} rebrà un 50% addicional durant el pròxim any! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvenció per a un servei concedida a {STRING}!{}{} El transport de {STRING} des de {STRING} fins a {STRING} pagarà el doble de la tarifa durant el pròxim any! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvenció per a un servei concedida a {STRING}!{}{} El transport de {STRING} des de {STRING} fins a {STRING} pagarà el triple de la tarifa durant el pròxim any! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvenció per a un servei concedida a {STRING}!{}{} El transport de {STRING} des de {STRING} fins a {STRING} pagarà el quàdruple de la tarifa durant el pròxim any! +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Oferta de subvenció per a un servei:{}{}La primera companyia en transportar {STRING} des de {STRING} fins a {STRING} tindrà una subvenció d'un any per part de l'autoritat local +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} rebrà uns ingressos addicionals del 50% durant el pròxim any +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} ingressarà el doble de la tarifa habitual durant el pròxim any +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} ingressarà el triple de la tarifa habitual durant el pròxim any +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} ingressarà el quàdruple de la tarifa habitual durant el pròxim any -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Caos de trànsit a {TOWN}!{}{}El programa de reconstrucció dels carrers patrocinat per {STRING} porta 6 mesos de misèria als automobilistes! -STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopoli de transport! -STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}L'autoritat local de {TOWN} signa un contracte amb {STRING} per l'exclusiva dels drets de transport durant un any! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trànsit caòtic a {TOWN}{}{}El programa de reconstrucció dels carrers patrocinat per {STRING} porta 6 mesos de misèria als automobilistes +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopoli de transports +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}L'autoritat local de {TOWN} signa un contracte amb {STRING} per l'explotació en exclusiva dels drets de transport durant un any # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vista {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copia a la vista -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia el lloc de la vista principal a aquesta vista -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Ves a la vista -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Enganxa el lloc d'aquesta vista a la vista principal +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Mou aquesta vista on està la vista principal +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Vés a la vista +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Mou la vista principal on està aquesta vista # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Opcions del Joc +STR_GAME_OPTIONS_CAPTION :{WHITE}Opcions de la partida STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Moneda -STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecció d'unitats de moneda +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecció de la unitat monetària ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Lliura Esterlina (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dòlar Americà (USD) +STR_GAME_OPTIONS_CURRENCY_GBP :Lliura esterlina (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Dòlar americà (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Ien Japonès (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Shillings Austríacs (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Francs Belgues (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Francs Suïssos (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corones Txeques (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marcs Alemanys (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corones Daneses (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pesseta Espanyola (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marcs Finesos (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc Francès (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracmes Gregues (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florí Hongarès (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corones Islandeses (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lires Italianes (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florins Holandesos (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corones Noruegues (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polonès (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romanès (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rubles Russos (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tòlar Eslovè (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corones Sueques (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Corona Eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasiler (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estoniana (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lites Lituanes (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Sud-coreà (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sud-africà (ZAR) -STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalitzat... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgià(GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranià(IRR) +STR_GAME_OPTIONS_CURRENCY_JPY :Ien japonès (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Xíling austríac (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Franc belga (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Franc suís (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Corona txeca (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Marc alemany (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Pesseta espanyola (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Marc finlandès (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Franc francès (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grega (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Florí hongarès (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Florí neerlandès (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polonès (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Leu romanès (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Ruble rus (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar eslovè (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasiler (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Corona estoniana (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituà (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coreà (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africà (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalitzada +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgià (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iranià (IRR) ############ end of currency region +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehicles de carretera +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Escull el sentit de circulació dels automòbils +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducció per l'esquerra +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Conducció per la dreta -############ start of measuring units region -############ end of measuring units region - -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automòbils -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selecciona el sentit de circulació dels automòbils -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Condueix per l'esquerra -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Condueix per la dreta - -STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Noms de Poblacions -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'estil des noms de poblacions +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Estil dels noms de poblacions +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'estil dels noms de poblacions ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Anglès STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francès STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Alemany -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Anglès (Addicional) +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Anglès (addicional) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Llatinoamericà -STR_GAME_OPTIONS_TOWN_NAME_SILLY :Tonto +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Graciós STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suec STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandès STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finès @@ -937,75 +961,82 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Català ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Desa automàticament -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'interval en que el joc es desa automàticament +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'interval de desada automàtica de la partida +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Inactiu STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 mesos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 mesos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 mesos +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona l'idioma de la interfície -STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla Completa +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla completa STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marca la casella per tenir l'OpenTTD en pantalla completa -STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolució de Pantalla +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolució de pantalla STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona la resolució de pantalla STR_GAME_OPTIONS_RESOLUTION_OTHER :altres -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format de les captures de pantalla -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selecciona el format a utilitzar en les captures de pantalla +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Mida de la interfície +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Escull la mida dels elements de la interfície + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doble +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quàdruple STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunt de gràfics base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunt de gràfics base a utilitzar -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arxiu{P "" s} faltant{P "" s}/corromput{P "" s} +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arxiu{P "" s} absent{P "" s}/corromput{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de gràfics base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunt de sons base STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selecciona un conjunt de sons base a utilitzar -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informació additional sobre el joc de sons base +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el joc de sons base -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunt de músiques base -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona el conjunt de músiques base a utilitzar +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunt de peces de música base +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona el conjunt de peces de música base a utilitzar STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fitxer{P "" s} corromput{P "" s} -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informació adicional sobre el conjunt de músiques base +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de peces de música base -STR_ERROR_FULLSCREEN_FAILED :{WHITE}El mode en pantalla completa ha fallat +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No s'ha pogut obtenir la llista de resolucions permeses +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Ha fallat el mode pantalla completa # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Moneda personalitzada STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Canvi de moneda: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminueix la quantitat de moneda per cada Lliura (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Augmenta la quantitat de moneda per cada Lliura (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminueix la quantitat de moneda per cada lliura (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Augmenta la quantitat de moneda per cada lliura (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Estableix el tipus de canvi de la moneda per cada Lliura (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Estableix el separador per a la moneda +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Estableix el separador per la moneda STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Estableix el prefix de text per a la moneda STR_CURRENCY_SUFFIX :{LTBLUE}Sufix: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Estableix el sufix de text per a la moneda +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Estableix el sufix de text per la moneda -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Canvia a l'Euro: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Canvia a l'Euro: {ORANGE}mai -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Estableix l'any d'introducció de l'Euro -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Canvia a l'Euro més aviat -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Canvia a l'Euro més tard +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Canvia a l'euro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Canvia a l'euro: {ORANGE}mai +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Estableix l'any d'introducció de l'euro +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Introdueix l'euro més aviat +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Introdueix l'euro més tard STR_CURRENCY_PREVIEW :{LTBLUE}Vista prèvia: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Lliures (£) en aquesta moneda +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10.000 lliures (£) en aquesta moneda STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Canvia el paràmetre de la moneda personalitzada -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Màxim núm. de competidors: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Nombre màxim de competidors: {ORANGE}{COMMA} STR_NONE :Cap -STR_FUNDING_ONLY :Només finança +STR_FUNDING_ONLY :Cap, excepte finançades STR_MINIMAL :Mínim -STR_NUM_VERY_LOW :Molt Baix +STR_NUM_VERY_LOW :Molt baix STR_NUM_LOW :Baix STR_NUM_NORMAL :Normal STR_NUM_HIGH :Alt @@ -1013,19 +1044,19 @@ STR_NUM_CUSTOM :Personalitzat STR_NUM_CUSTOM_NUMBER :Personalitzat ({NUM}) STR_VARIETY_NONE :Cap -STR_VARIETY_VERY_LOW :Molt Baix -STR_VARIETY_LOW :Baix -STR_VARIETY_MEDIUM :Mitjà -STR_VARIETY_HIGH :Alt -STR_VARIETY_VERY_HIGH :Molt Alt +STR_VARIETY_VERY_LOW :Molt baixa +STR_VARIETY_LOW :Baixa +STR_VARIETY_MEDIUM :Mitjana +STR_VARIETY_HIGH :Alta +STR_VARIETY_VERY_HIGH :Molt alta -STR_AI_SPEED_VERY_SLOW :Molt Lent +STR_AI_SPEED_VERY_SLOW :Molt lent STR_AI_SPEED_SLOW :Lent STR_AI_SPEED_MEDIUM :Mitjà STR_AI_SPEED_FAST :Ràpid -STR_AI_SPEED_VERY_FAST :Molt Ràpid +STR_AI_SPEED_VERY_FAST :Molt ràpid -STR_SEA_LEVEL_VERY_LOW :Molt Baix +STR_SEA_LEVEL_VERY_LOW :Molt baix STR_SEA_LEVEL_LOW :Baix STR_SEA_LEVEL_MEDIUM :Mitjà STR_SEA_LEVEL_HIGH :Alt @@ -1034,7 +1065,7 @@ STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Personalitzat ( STR_RIVERS_NONE :Cap STR_RIVERS_FEW :Pocs -STR_RIVERS_MODERATE :Mitjà +STR_RIVERS_MODERATE :Normal STR_RIVERS_LOT :Molts STR_DISASTER_NONE :Cap @@ -1046,46 +1077,52 @@ STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 -STR_TERRAIN_TYPE_VERY_FLAT :Molt Pla +STR_TERRAIN_TYPE_VERY_FLAT :Molt pla STR_TERRAIN_TYPE_FLAT :Pla STR_TERRAIN_TYPE_HILLY :Accidentat -STR_TERRAIN_TYPE_MOUNTAINOUS :Muntanyenc +STR_TERRAIN_TYPE_MOUNTAINOUS :Muntanyós +STR_TERRAIN_TYPE_ALPINIST :Escarpat -STR_CITY_APPROVAL_PERMISSIVE :Permissiu +STR_CITY_APPROVAL_PERMISSIVE :Permissiva STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Hostil -STR_WARNING_NO_SUITABLE_AI :{WHITE}No hi ha cap IA disponible...{}Podeu descarregar-ne a través del 'Contingut en línia' +STR_WARNING_NO_SUITABLE_AI :{WHITE}No hi ha cap IA disponible...{}Podeu descarregar-ne a través del «Contingut en línia». -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Paràmetres avançats -STR_CONFIG_SETTING_FILTER_TITLE :{G=Femenin}{BLACK}Cadena filtrant: +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Configuració +STR_CONFIG_SETTING_FILTER_TITLE :{G=Femenin}{BLACK}Cadena de filtrat: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Desplega-ho tot STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Plega-ho tot -STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(Cap explicació disponible) +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(cap explicació disponible) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valor per defecte: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipus de paràmetre: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE_CLIENT :Paràmetre del client (no s'emmagatzema als jocs desats; afecta tots els jocs) -STR_CONFIG_SETTING_TYPE_GAME_MENU :Paràmetre del joc (emmagatzemat als jocs desats; afecta només els jocs nous) -STR_CONFIG_SETTING_TYPE_GAME_INGAME :Paràmetre del joc (emmagatzemat al joc desat; només afecta el joc actual) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Paràmetre de la companyia (emmagatzemat als jocs desats; només afecta els jocs nous) -STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Paràmetre de la companyia (emmagatzemat al joc desat; només afecta la companyia actual) - -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mostra: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringeix la llista de sota mostrant només els paràmetres canviats -STR_CONFIG_SETTING_RESTRICT_BASIC :Paràmetres bàsics -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Paràmetres avançats -STR_CONFIG_SETTING_RESTRICT_ALL :Paràmetres per experts / tots els paràmetres +STR_CONFIG_SETTING_TYPE_CLIENT :Paràmetre del client (no s'emmagatzema a les partides; afecta a totes les partides) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Paràmetre de la partida (emmagatzemat a les partides; afectarà només les partides noves) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Paràmetre de la partida (emmagatzemat a la partida actual; només afecta la partida actual) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Paràmetre de la companyia (emmagatzemat a les partides; només afectarà les partides noves) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Paràmetre de la companyia (emmagatzemat a la partida actual; només afecta la companyia actual) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipus: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringeix la llista de sota usant els filtres predefinits +STR_CONFIG_SETTING_RESTRICT_BASIC :Paràmetres bàsics (mostra només els paràmetres importants) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Paràmetres avançats (mostra la majoria dels paràmetres) +STR_CONFIG_SETTING_RESTRICT_ALL :Paràmetres per experts (mostra tots els paràmetres, fins i tot els rars) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Paràmetres amb un valor diferent del predeterminat -STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Paràmetres amb un valor diferent dels paràmetres del joc nou +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Paràmetres amb un valor diferent dels paràmetres de partida nova STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringeix la llista de sota a certs tipus de paràmetres STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tots els paràmetres -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Paràmetres del client (no s'emmagatzemen als jocs desats; afecten tots els jocs) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paràmetres del joc (emmagatzemats als jocs desats; només afecten els jocs nous) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paràmetres del joc (emmagatzemats al joc desat; només afecten el joc actual) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paràmetres de la companyia (emmagatzemats al jocs desats; només afecten els jocs nous) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paràmetres de la companyia (emmagatzemats al joc desat; només afecten la companyia actual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Paràmetres del client (no s'emmagatzemen a les partides; afecten a totes les partides) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paràmetres de la partida (emmagatzemats a les partides; només afectaran les noves partides) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paràmetres de la partida (emmagatzemats a la partida actual; només afecten la partida actual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paràmetres de la companyia (emmagatzemats a les partides desades; només afectaran les partides noves) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paràmetres de la companyia (emmagatzemats a la partida actual; només afecten la companyia actual) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostra tots els resultats de la cerca filtrada de {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar tots els resultats de la cerca filtrada amb {WHITE}tots els tipus de paràmetres +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostra tots els resultats de la cerca filtrada de {WHITE}{STRING} {BLACK}i {WHITE}tots els tipus d'ajustaments +STR_CONFIG_SETTINGS_NONE :{WHITE}- Cap - STR_CONFIG_SETTING_OFF :Inactiu STR_CONFIG_SETTING_ON :Actiu @@ -1097,73 +1134,70 @@ STR_CONFIG_SETTING_COMPANIES_ALL :Totes les compa STR_CONFIG_SETTING_NONE :Cap STR_CONFIG_SETTING_ORIGINAL :Original -STR_CONFIG_SETTING_REALISTIC :Realístic +STR_CONFIG_SETTING_REALISTIC :Realista STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Esquerra STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centre STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dreta STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Préstec inicial màxim: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantitat màxima de préstec que pot demanar una companyia (sense tenir en compte l'inflació) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantitat màxima del préstec que pot demanar una companyia (sense tenir en compte la inflació) STR_CONFIG_SETTING_INTEREST_RATE :Taxa d'interès: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Tipus d'interès dels préstecs; també controla la inflació, si està activada STR_CONFIG_SETTING_RUNNING_COSTS :Costos d'utilització: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixa el nivell de manteniment i els costos d'utilització dels vehicles i infraestructures -STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocitat de construcció: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ritme de construcció: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la quantitat d'accions de construcció per part de les IA -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Avaries de vehicles: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Nombre d'avaries de vehicles: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla cada quan els vehicles revisats inadequadament s'espatllen STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador del subsidi: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixa quant es paga per les connexions subsidiades +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixa quant es paga pels transports subsidiats STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costos de construcció: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fixa el nivell de construcció i els preus de compra STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si està actiu les recessions poden passar cada pocs anys. Durant una recessió tota la producció és significativament baixa (torna al nivell previ quan la recessió s'acaba) -STR_CONFIG_SETTING_TRAIN_REVERSING :No permet que els trens canviïn de sentit a les estacions: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si està actiu els trens no canviaran de sentit a les estacions no-finals, inclús si hi ha un camí més curt al seu proper destí en cas de canviar de sentit -STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Commuta els desastres que poden bloquejar o destruir ocasionalment vehicles o infraestructures -STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de l'alcaldia de la ciutat davant de reestructuracions a la zona: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escull quin nivell de soroll i de danys ambientals fets per les companyies afecten al seu prestigi al poble i a futures accions de construcció a la zona - -STR_CONFIG_SETTING_BUILDONSLOPES :Permet construir en desnivells i costes: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Si està activat, les vies i les estacions poden ser construïdes en la majoria de pendents. Si està desactivat, només està permès en aquells pendents que coincideixin amb la direcció de la via i no necessitin fonaments -STR_CONFIG_SETTING_AUTOSLOPE :Permet modelar el terreny sota edificis, rails, etc. (autopendent): {STRING} -STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permetre modelar el terreny sota edificis i rails, sense eliminar-los -STR_CONFIG_SETTING_CATCHMENT :Permet una mida més real de l'àrea d'influència: {STRING} -STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Tenir diferents mides de zones de captació per a diferents tipus d'estacions i aeroports +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si està actiu, les recessions poden passar cada pocs anys. Durant una recessió, tota la producció és significativament baixa, tornant al nivell previ quan la recessió s'acabi. +STR_CONFIG_SETTING_TRAIN_REVERSING :No permetis que els trens canviïn de sentit a les estacions: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si està actiu, els trens no canviaran de sentit a les estacions no-finals, inclús si hi ha un camí més curt al seu proper destí en cas de canviar de sentit. +STR_CONFIG_SETTING_DISASTERS :Catàstrofes: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que passin catàstrofes que puguin bloquejar o destruir ocasionalment vehicles o infraestructures +STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de l'alcaldia de la població davant de reestructuracions a la zona: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Estableix quin nivell de soroll i de danys ambientals fets per les companyies afecten al seu prestigi davant de la població i futures accions de construcció a la zona + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Alçada màxima del mapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Estableix l'alçada màxima permesa del terreny en el mapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquesta alçada màxima del mapa: hi ha alguna zona del mapa actual que és més alta. +STR_CONFIG_SETTING_AUTOSLOPE :Permet la modificació del terreny sota edificis, rails, etc.: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permet modelar el terreny sota edificis i rails, sense eliminar-los +STR_CONFIG_SETTING_CATCHMENT :Estableix una mida més real de l'àrea d'influència: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permet tenir diferents mides de zones de captació per a diferents tipus d'estacions i aeroports STR_CONFIG_SETTING_EXTRADYNAMITE :Permet l'esborrat de carreteres, ponts i túnels propietat de les poblacions: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Que sigui més fàcil esborrar infraesctuctures i construccions propietat de la població +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Aquesta opció permet fer més fàcil l'esborrat d'infraestructures i construccions propietat de la població STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud màxima dels trens: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Establir la longitud màxima dels trens -STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} cel·l{P 0 a es} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Estableix la longitud màxima dels trens +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} cel·l{P a es} STR_CONFIG_SETTING_SMOKE_AMOUNT :Quantitat de fum i espurnes dels vehicles: {STRING} -STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Establir la quantitat de fums o quantes espurnes són emeses pels vehicles +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Estableix la quantitat de fum o quantes espurnes són emeses pels vehicles STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model d'acceleració dels trens: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Seleccioneu el model físic per a l'acceleració del tren. El model "original" penalitza les pujades per igual a tots els vehicles. El model "realístic" penalitza les pujades i les corbes en funció de diverses propietats del compost, al igual que la longitud i la força de tracció +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Seleccioneu el model físic per l'acceleració de trens. El model «original» penalitza les pujades per igual a tots els vehicles. El model «realista» penalitza les pujades i les corbes en funció de diverses propietats del tren, com ara la longitud i la força de tracció STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model d'acceleració per als vehicles: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Seleccioneu el model físic per a l'acceleració d'un vehicle de carretera. El model "original" penalitza les pujades per igual a tots els vehicles. El model "realista" penalitza les pendents en funció de les diferents propietats de la màquina, com per exemple "l'esforç de tracció" +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Seleccioneu el model físic per l'acceleració d'automòbils. El model «original» penalitza les pujades per igual a tots els vehicles. El model «realista» penalitza els pendents en funció de les diferents propietats de la màquina, com per exemple l'esforç de tracció. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Pendent d'inclinació per als trens: {STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :La inclinació d'una celda en pendent per a un tren. Els valors més alts fan que sigui més difícil escalar un turó +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :La inclinació d'una cel·la en pendent per a un tren. Els valors més alts fan que sigui més difícil escalar un turó STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Pendent d'inclinació per als automòbils: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :La inclinació d'una celda en pendent per a un vehicle de carretera. Els valors més alts fan que sigui més difícil escalar un turó +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :La inclinació d'una cel·la amb pendent per a automòbils. Els valors més alts fan que sigui més difícil escalar un turó STR_CONFIG_SETTING_FORBID_90_DEG :Prohibeix fer girs de 90 graus als trens i vaixells: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Els girs de 90 graus succeeixen quan una via horitzontal està seguida d'una vertical a la cel·la annexa, provocant que el tren giri 90 graus quan atravessi la vora de la cel·la enlloc dels 45 graus usuals en les altres combinacions. Això també s'aplica al radi de gir dels vaixells +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Els girs de 90 graus succeeixen quan una via horitzontal està seguida d'una vertical a la cel·la annexa, provocant que el tren giri 90 graus quan travessi la vora de la cel·la en lloc dels 45 graus usuals en les altres combinacions. Això també s'aplica al radi de gir dels vaixells STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permet ajuntar estacions no annexes: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permetre afegir parts a una estació sense contacte directe amb les parts existents. Fa falta Ctrl + Clic, mentre és col·loquen les peces noves -STR_CONFIG_SETTING_IMPROVEDLOAD :Utilitza algorisme millorat de càrrega: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Si està activat, múltiples vehicles esperant a una estació es carreguen de forma seqüencial. -STR_CONFIG_SETTING_GRADUAL_LOADING :Carrega els vehicles gradualment: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :De mica en mica, carregar els vehícles que utilitzen duracions específiques de vehícles, en comptes de carregar-los tots alhora en un temps fix que només depén de la quantitat de càrrega carregada STR_CONFIG_SETTING_INFLATION :Inflació: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Habilita la inflació a l'economia, on l'augment dels costos són una mica més ràpids que els dels pagaments -STR_CONFIG_SETTING_SELECTGOODS :Entrega càrregues en una estació només quan hi ha demananda: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Només entregar la càrrega en una estació que ha demanat el vehícle de càrrega. Això evita ratis erronis per les càrregues que no han estat demanades per l'estació -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Màxima longitud del pont: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Màxima longitud dels ponts: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Longitud màxima per a la construcció de ponts -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Màxima longitud del túnel: {STRING} -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Longitud màxima per a construir tunels +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Alçada màxima dels ponts: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Alçada màxima de construcció dels ponts +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Màxima longitud dels túnels: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Longitud màxima per a la construcció de túnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Mètode de construcció de la indústria primària manual: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Mètode de finançament d'indústria primària. 'cap' significa que no serà possible fundar-ne cap, 'prospecció' significa que serà possible fundar-ne, però la construcció succeirà en un lloc aleatori del mapa i també podria passar que fracassi, 'com les altre indústries' significa que les indústries de matèries primeres poden ser construides a qualsevol lloc per les companyies igual que les indústries manufactureres STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Cap @@ -1172,7 +1206,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospeccionant STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Àrea plana al voltant de les indústries: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantitat d'espai pla al voltant d'una indústira. Això assegura que quedarà espai buit al voltant de la indústria per a construir vies, etc. STR_CONFIG_SETTING_MULTIPINDTOWN :Permet vàries indústries similars a cada població: {STRING} -STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalment, un poble no vol més d'un tipus d'indústria de cada tipus. Amb aquest paràmetre es permetrà diverses indústries del mateix tipus al mateix poble +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalment, una població no vol més d'un tipus d'indústria de cada tipus. Amb aquest paràmetre es permetrà diverses indústries del mateix tipus a la mateixa població STR_CONFIG_SETTING_SIGNALSIDE :Mostra els senyals: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selecciona a quin costat de la via s'han de posar els senyals STR_CONFIG_SETTING_SIGNALSIDE_LEFT :A l'esquerra @@ -1182,27 +1216,25 @@ STR_CONFIG_SETTING_SHOWFINANCES :Mostra la fines STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si està activat, la finestra de finances apareix al final de cada any per permetre una inspecció fàcil de l'estat financer de la companyia STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Les noves ordres predeterminades són 'sense parada': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalment, un vehicle pararà a cada estació que passi. Activant aquest paràmetre no pararà a cap estació fins arribar a la seu destí. Nota, aquest paràmetre només defineix el valor predeterminat per les noves ordres. De totes maneres les ordres individuals poden establir explícitament qualsevol dels comportaments -STR_CONFIG_SETTING_STOP_LOCATION :Noves ordres del tren parar per defecte a {STRING} de la plataforma +STR_CONFIG_SETTING_STOP_LOCATION :Noves ordres del tren: parar per defecte {STRING} de la plataforma STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Situa en quin lloc de la plataforma el tren pararà per defecte. 'Extrem més proper' significa a prop del punt d'entrada, 'al mig' significa al mig de la plataforma, i 'extrem més llunyà' significa lluny del punt d'entrada. Nota, aquest paràmetre només defineix el valor predeterminat per les noves ordres. De totes maneres les ordres individuals poden establir explícitament qualsevol dels comportaments STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :a l'extrem més proper STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :a la meitat STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :a l'extrem més llunyà -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cues d'automòbils (amb efectes quàntics): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Fes que un vehicle esperi davant d'una parada plena fins que estigui lliure -STR_CONFIG_SETTING_AUTOSCROLL :Finestra d'avis quan el ratolí és al marc del programa: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL :Finestra d'avís quan el ratolí és al marc del programa: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quan està activat, les vistes començaran a desplaçar-se quan el ratolí sigui a prop la vora de la finestra STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desactivat STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Vista principal, només pantalla completa STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Vista principal STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Cada vista STR_CONFIG_SETTING_BRIBE :Permet subornar a les autoritats locals: {STRING} -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permet a les companyies intentar subornar a l'autoritat local. Si el suborn es detectat per un inspector, la companyia no podrà actuar al poble durant sis mesos +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permet a les companyies intentar subornar a l'autoritat local. Si el suborn és detectat per un inspector, la companyia no podrà actuar a la població durant sis mesos STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permet comprar els drets del transport en exclusiva: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si una companyia compra els drets de transport en exclusiva en un poble, les estacions dels oponents (passatgers i càrrega) no rebran cap càrrega durant tot l'any +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si una companyia compra els drets de transport en exclusiva en una població, les estacions dels oponents (passatgers i càrrega) no rebran cap càrrega durant tot l'any STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permet finançar edificis: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permet a les companyies donar diners als pobles per a finançar noves cases +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permet a les companyies donar diners a les poblacions per a finançar nous edificis STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permet finançar la reconstrucció dels carrers locals: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permet a les companyies donar diners als pobles per a la reconstrucció de carrers i sabotejar la circulació de vehicles al poble +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permet a les companyies donar diners a les poblacions per a la reconstrucció de carrers i sabotejar-hi la circulació de vehicles STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permet enviar diners a altres companyies: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permet transferir diners entre companyies en el mode multijugador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de pes per contenidor per simular trens pesats: {STRING} @@ -1211,85 +1243,95 @@ STR_CONFIG_SETTING_PLANE_SPEED :Factor de veloc STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Estableix la velocitat relativa dels avions en comparació amb els altres tipus de vehicles, per reduir la quantitat de guanys de transport dels avions STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Nombre d'accidents d'avió: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Estableix les probabilitats de que succeeixi un accident d'avió +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Estableix la probabilitat amb què succeeixen els accidents d'avió STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Cap STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduït STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permet situar parades en carreteres que són propietat de la població: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permet la construcció de passos a nivell en els carrers propietat dels pobles +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permet la construcció de passos a nivell en els carrers propietat de les poblacions STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permet circular a través de les parades en carreteres propietat de competidors: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permet la construcció de passos a nivell en els carrers propietat d'altres companyies -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permet construir estacions annexes: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permet que diferents estacions es toquin l'una a l'altra -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Activa diversos paquets de motors NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opció de compatibilitat per NewGRFs vells. No desactivis això, a menys que sàpigues exactament el que estàs fent! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}No es pot canviar aquest ajustament quan hi ha vehicles -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manteniment d'infrastructures: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quan està activat, la infrastructura provoca costos de manteniment. El cost creix proporcionalment al tamany de la xarxa de transport, afectant en conseqüència més a les companyies grosses que a les petites +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manteniment de la infraestructura: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quan està activat, la infraestructura provoca costos de manteniment. El cost creix proporcionalment al tamany de la xarxa de transport, afectant en conseqüència més a les companyies grosses que a les petites STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Els aeroports mai caduquen: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activant aquesta opció fa que cada tipus aeroport estigui disponible per sempre després de la seva introducció +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activant aquesta opció fa que cada tipus d'aeroport estigui disponible per sempre després de la seva introducció STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avisa si el vehicle es perd: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Alerta amb missatges quan els vehicles no siguin capaços de trobar el camí al seu destí indicat STR_CONFIG_SETTING_ORDER_REVIEW :Revisa ordres dels vehicles: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quan està activat, les ordres dels vehicles són verificades periòdicament, i alguns problemes evidents seran informats amb missatges de noticia quan siguin detectats +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quan està activat, les ordres dels vehicles són verificades periòdicament, i alguns problemes evidents seran informats amb missatges de notícia quan siguin detectats STR_CONFIG_SETTING_ORDER_REVIEW_OFF :No STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sí, excepte vehicles parats STR_CONFIG_SETTING_ORDER_REVIEW_ON :De tots els vehicles STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisa si el benefici del vehicle és negatiu: {STRING} -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quan està activat, un missatge de noticia és enviat quan un vehicle no ha tingut beneficis durant l'any +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quan està activat, un missatge de notícia és enviat quan un vehicle no ha tingut beneficis durant l'any STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Els vehicles mai caduquen: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quan està activat, tots els models de vehicles continuen disponibles per sempre després de la seva introducció STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenova el vehicle quan sigui vell: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quan està activat, un vehicle que arriba al seu final de vida útil és automàticament substituït quan es compleixen les condicions d'autorenovació -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenova quan el vehicle tingui {STRING} anys màx. -STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Edat relativa quan el vehicle hagi de ser considerat per l'autorenovació -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mesos{P 0 "" s} abans -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mesos{P 0 "" s} després -STR_CONFIG_SETTING_AUTORENEW_MONEY :Autorenovació: mínim de diners per renovar: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quan està activat, un vehicle que arriba al final de la seva vida útil és automàticament substituït quan es compleixen les condicions d'autorenovació +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenova el vehicle {STRING} de la seva edat màxima +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Edat relativa a partir de la qual s'ha de considerar l'autorenovació del vehicle +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mes{P 0 "" os} abans +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mes{P 0 "" os} després +STR_CONFIG_SETTING_AUTORENEW_MONEY :Mínim de diners per a renovacions automàtiques: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantitat mínima de diners que han de quedar al banc abans de considerar l'autorenovació de vehicles STR_CONFIG_SETTING_ERRMSG_DURATION :Duració del missatge d'error: {STRING} -STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duració d'exhibició dels missatges d'error a la finestra vermella. Alguns missatges d'error (crítics) no són tancats automàticament després d'una estona, i han de ser tancats manualment +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duració dels missatges d'error mostrats en finestres vermelles. Alguns missatges d'error (crítics) no es tanquen automàticament i s'han de tancar manualment STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} segon{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Mostra descripcions emergents: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Retard abans que les descripcions emergents siguin mostrades quan el ratolí sigui sobre algun element de l'interfície. Alternativament les descripcions emergents poden ser vinculades al botó dret del ratolí -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manté durant {COMMA} segon{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Retard abans que les descripcions emergents siguin mostrades quan el ratolí sigui sobre algun element de la interfície. Alternativament, les descripcions emergents poden ser vinculades al botó dret del ratolí si aquest paràmetre s'estableix en 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manté durant {COMMA} milisegon{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botó dret -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra els habitants a la etiqueta del nom de població: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mostra la població a l'etiqueta dels pobles dins el mapa +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra els habitants a l'etiqueta del nom de la població: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mostra els habitants a les etiquetes dels noms de les poblacions al mapa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Gruix de les línies dels gràfics: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Gruix de la línia als gràfics. Una línia més fina és més llegible, una línia més gruixuda és més fàcil de veure i els colors són més fàcils de distingir +STR_CONFIG_SETTING_LANDSCAPE :Paisatge: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :El tipus de paisatge defineix escenaris amb diferents tipus de càrrega i requisits per al creixement de les poblacions. Els NewGRF i l'script de la partida poden modificar-ne l'aparença i el comportament STR_CONFIG_SETTING_LAND_GENERATOR :Generador de terrenys: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :L'algorisme generador original depèn del tipus de gràfics base i crea formes de terreny predefinides. TerraGenesis és un generador basat en el soroll Perlin que permet una configuració més precisa STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distància màxima des de la vora de refineries de petroli: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipus de terreny: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Només TerraGenesis) Escollir el tipus de terreny: des de molt pla fins a escarpat +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densitat d'indústries: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Fixa el nombre d'indústries que s'haurien de generar i mantenir durant la partida +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distància màxima des de la vora a les refineries de petroli: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Les refineries de petroli només es construeixen a prop de les vores del mapa, això és a la costa en els mapes d'illes -STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Alçada de la cota de neu: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Geografia del terreny (TerraGenesis només) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Alçada dels estatges amb neu: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a quina alçada la neu comença en el paisatge subàrtic. La neu també afecta la generació d'indústries i els requisits per al creixement de les poblacions +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Geografia del terreny: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Només TerraGenesis) Escollir la suavitat del paisatge: els terrenys suaus tenen menys turons i són regulars; els terrenys més rugosos són irregulars i tenen molts turons STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Molt suau STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suau STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Escarpat STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Molt escarpat +STR_CONFIG_SETTING_VARIETY :Varietat: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Només TerraGenesis) Controla la varietat en la distribució de les zones muntanyoses i planes. Aquesta opció controla la distribució d'aquestes zones; si es vol modificar si el terreny és més o menys muntanyós s'han de modificar altres opcions +STR_CONFIG_SETTING_RIVER_AMOUNT :Quantitat de rius: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escollir la quantitat de rius a generar STR_CONFIG_SETTING_TREE_PLACER :Algorisme per situar arbres: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Permet escollir la distribució d'arbres al mapa. 'Original' distribueix els arbres uniformement. 'Millorat' els planta en grups STR_CONFIG_SETTING_TREE_PLACER_NONE :Cap STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Millorat +STR_CONFIG_SETTING_ROAD_SIDE :Automòbils: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Escollir el costat de conducció STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotació del mapa d'alçades: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Antihorari STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Horari -STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Alçada que un escenari pla pren: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Activa modelar el terreny de les cel·les a les vores del mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Si està desactivat, les vores del mapa sempre seran oceans +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Alçada que pren un escenari pla: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una o més cel·les al vèrtex nord no està buit STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una o més cel·les en una de les vores no és aigua -STR_CONFIG_SETTING_STATION_SPREAD :Màx. extensió de les estacions: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Àrea màxima en que les parts d'una sola estació es poden extendre. Un valor alt farà alentir el joc +STR_CONFIG_SETTING_STATION_SPREAD :Extensió màxima de les estacions: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Àrea màxima en què les parts d'una sola estació es poden estendre. Un valor alt farà alentir el joc STR_CONFIG_SETTING_SERVICEATHELIPAD :Revisions automàtiques dels helicòpters als heliports: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Inspecciona els helicòpters cada vegada que aterrin, encara que no hi hagi hangar a l'aeroport -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Enllaça la barra d'eines del paisatge a les barres d'eines de vies/carreteres/aigua/aeroports {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Enllaça la barra d'eines del paisatge a les barres d'eines de vies/carreteres/aigua/aeroports: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Quan s'obre la barra d'eines de construcció per un tipus de transport, també s'obre la barra d'eines de remodelació del paisatge STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color del terra utilitzat al mapa petit: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color del terreny al mapa petit @@ -1299,10 +1341,10 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violat STR_CONFIG_SETTING_REVERSE_SCROLLING :En desplaçar la pantalla amb el ratolí mou la vista en la direcció contrària: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportament quan es desplaci el mapa amb el botó dret del ratolí. Quan està desactivat, el ratolí mou la càmera. Quan està activat, el ratolí mou el mapa STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplaçament suau de la vista: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla com la vista principal es desplaça a una posició específica quan es clica al mapa petit o quan s'envia una ordre de desplaçar-se a un objecte específic al mapa. Si està activat, la vista es desplaça suaument, si està desactivat salta directament al punt assenyalat +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla com la vista principal es desplaça a una posició específica quan es clica al mapa petit o quan s'envia una ordre de desplaçar-se a un objecte específic al mapa. Si està activat, la vista es desplaça suaument; si està desactivat, salta directament al punt assenyalat STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra un cartell de mesura quan estiguis utilitzant vàries eines de construcció: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostra les distàncies-cel·la i les diferències d'alçada quan s'arrossegui durant la construcció -STR_CONFIG_SETTING_LIVERIES :Mostra la decoració de la companyia: {STRING} +STR_CONFIG_SETTING_LIVERIES :Mostra la decoració específica del tipus de vehicle: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controla la utilització de les decoracions específiques d'un tipus de vehicle (en oposició a específic d'una companyia) STR_CONFIG_SETTING_LIVERIES_NONE :Cap STR_CONFIG_SETTING_LIVERIES_OWN :Pròpia companyia @@ -1332,43 +1374,41 @@ 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_DATE_FORMAT_IN_SAVE_NAMES :Utilitza el format de data curta {STRING} en els jocs desats -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format de la data en els noms dels arxius dels jocs desats -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :llarga (31 Dec 2008) +STR_CONFIG_SETTING_AUTOSAVE :Desada automàtica: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona l'interval entre desades automàtiques de les partides + +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Utilitza el format de data {STRING} per a guardar partides +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format de la data en els noms dels arxius de les partides que es guardin +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :llarga (31 Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curta (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta predeterminada pels NewGRFs que no n'especifiquin una: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta predeterminada a utilitzar als NewGRFs que no especifiquen quina necessiten -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Windows - -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament en començar un nou joc: {STRING} -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es pausarà automàticament quan es comenci un joc nou, permetent a l'usuari estudiar el mapa més detalladament +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament quan comenci una nova partida: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es posa en pausa automàticament quan es comenci una partida nova, permetent a l'usuari estudiar el mapa més detalladament STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Quan s'estigui en pausa permet: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecciona quines accions poden fer-se quan el joc està pausat +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecciona quines accions poden fer-se quan la partida està en pausa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Sense accions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Totes les accions no-constructores STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Tot menys les accions modificadores del paisatge STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Totes les accions -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utilitza la llista de vehicles avançada: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Mostra els grups en el llistat de vehicles de la companyia: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activa la utilització de llistes de vehicles avançades per agrupar vehicles STR_CONFIG_SETTING_LOADING_INDICATORS :Utilitza indicadors de càrrega: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Selecciona si els indicadors de càrrega seran mostrats sobre els vehicles en càrrega o descàrrega -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra horaris amb marques enlloc de dies: {STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra els temps de viatge als horaris en marques enlloc de dies +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra horaris amb marques en lloc de dies: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra els temps de viatge als horaris en marques en lloc de dies STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostra l'arribada i la sortida als horaris: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostra als horaris l'arribada anticipadament i les hores de sortida STR_CONFIG_SETTING_QUICKGOTO :Creació ràpida d'ordres per a vehicles: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-selecciona el 'cursor ves a' quan s'obri la finestra d'ordres -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipus de via predeterminada (en un joc nou/joc desat): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipus de via a seleccionar després de començar o carregar un joc. 'primer disponible' selecciona el tipus de vies més antic, 'darrer disponible' selecciona el tipus de vies més modern, i 'més utilitzat' selecciona el tipus de vies que s'utilitzi més actualment -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :La primera disponible -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :La darrera disponible -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :La més utilitzada -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra les vies reservades: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselecciona el botó 'Vés a' quan s'obri la finestra d'ordres +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipus predeterminat de via (en nova partida/càrrega de partida): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipus de via a seleccionar després de començar o carregar una partida. 'El més antic disponible' selecciona el tipus de vies més antic disponible, 'El més modern disponible' selecciona el tipus de vies més modern, i 'El més utilitzat disponible' selecciona el tipus de vies que s'utilitzi més actualment +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :El més antic disponible +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :El més modern disponible +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :El més utilitzat disponible +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra els camins reservats: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dóna a les vies reservades un color diferent per ajudar en problemes de trens que refusen entrar en blocs basats en camí -STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantingues les eines de construcció actives després del seu us: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantingues les eines de construcció actives després del seu ús: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantingues les eines de construcció pels ponts, túnels, etc. obertes després d'utilitzar-les STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa les despeses a la finestra de finances de la companyia: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Defineix la disposició de la companyia a la finestra de despeses @@ -1388,36 +1428,36 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Reprodueix els STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicles: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Reprodueix els efectes de so dels vehicles STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reprodueix efectes de so ambient del paisatge, les indústries i els pobles +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reprodueix efectes de so ambient del paisatge, les indústries i les poblacions -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desactiva la construcció d'infrastructures quan no hi hagi disponibles vehicles adequats: {STRING} -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Quan està activat, la infrastructura només està disponible si hi ha també vehicles disponibles, prevenint perdre temps i diners en infraestructures no utilitzables -STR_CONFIG_SETTING_MAX_TRAINS :Màx. trens per companyia: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desactiva la construcció d'infraestructures quan no hi hagi disponibles vehicles adequats: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Quan està activat, la infraestructura només està disponible si hi ha també vehicles disponibles, prevenint perdre temps i diners en infraestructures no utilitzables +STR_CONFIG_SETTING_MAX_TRAINS :Màxim nombre de trens per companyia: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Màxim nombre de trens que pot tenir una companyia -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Màx. automòbils per companyia: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Màxim nombre de vehicles de carretera que pot tenir una companyia -STR_CONFIG_SETTING_MAX_AIRCRAFT :Màx. avions per companyia: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Màxim nombre d'automòbils per companyia: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Màxim nombre d'automòbils que pot tenir una companyia +STR_CONFIG_SETTING_MAX_AIRCRAFT :Màxim nombre d'avions per companyia: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Màxim nombre d'avions que pot tenir una companyia -STR_CONFIG_SETTING_MAX_SHIPS :Màx. vaixells per companyia: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Màxim nombre de vaixells per companyia: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Màxim nombre de vaixells que pot tenir una companyia -STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desactiva trens per l'ordinador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activant aquesta opció fa que sigui impossible construir trens al jugador de l'ordenador -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desactiva automòbils per a l'ordinador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activant aquesta opció fa que sigui impossible construir vehicles de carretera al jugador de l'ordenador -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desactiva els avions per l'ordinador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activant aquesta opció fa que sigui impossible construir avions al jugador de l'ordenador -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactiva vaixells per l'ordinador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activant aquesta opció fa que sigui impossible construir vaixells al jugador de l'ordenador +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desactiva trens per a les IA de l'ordinador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activant aquesta opció fa que sigui impossible construir trens als jugadors IA de l'ordinador +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desactiva automòbils per a les IA de l'ordinador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activant aquesta opció fa que sigui impossible construir automòbils als jugadors IA de l'ordinador +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desactiva avions per a les IA de l'ordinador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activant aquesta opció fa que sigui impossible construir avions als jugadors IA de l'ordinador +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactiva vaixells per a les IA de l'ordinador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activant aquesta opció fa que sigui impossible construir vaixells als jugadors IA de l'ordinador STR_CONFIG_SETTING_AI_PROFILE :Perfil de paràmetres predeterminat: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escull quin perfil de paràmetres utilitzar per IA aleatòries o com a valors inicials quan s'afegeix una nova IA o Script del joc +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escull quin perfil de paràmetres utilitzar per les IA aleatòries o com a valors inicials quan s'afegeix una nova IA o Script de la partida STR_CONFIG_SETTING_AI_PROFILE_EASY :Fàcil STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mitjà STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permet IA en multijugador: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permet al jugadors IA de l'ordenador participar en jocs multijugador +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permet a les IA de l'ordinador participar en partides multijugador STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes abans de suspendre els scripts: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Màxim nombre de passos de càlcul que un script pot fer en un torn @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Els intervals d STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Escull si les revisions dels vehicles depenen del temps passat des de la darrera revisió o de la caiguda d'un cert percentatge de la fiabilitat màxima STR_CONFIG_SETTING_SERVINT_TRAINS :Interval per defecte de servei per als trens: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous ferrocarrils, si no hi ha un interval de revisió explícit pel vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dia{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}di{P 0 a es}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivat STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Interval per defecte de servei per als vehicles: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous vehicles de caretera, si no hi ha un interval de revisió explícit pel vehicle @@ -1435,7 +1475,7 @@ STR_CONFIG_SETTING_SERVINT_SHIPS :Interval per de STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous vaixells, si no hi ha un interval de revisió explícit pel vehicle STR_CONFIG_SETTING_NOSERVICE :Desactiva les revisions quan les avaries s'estableixen a cap: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quan està activat, els vehicles no són revisats si no es poden espatllar -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa limit de velocitat per al vagó: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa límits de velocitat per als vagons: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Quan està activat, també utilitza els límits de velocitat dels vagons per decidir la velocitat màxima del tren STR_CONFIG_SETTING_DISABLE_ELRAILS :Desactiva vies electrificades: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Activant aquest paràmetre es desactiva el requeriment d'electrificar les vies per poder fer-hi circular locomotores elèctriques @@ -1446,13 +1486,13 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arribada del pr STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Mostra les notícies quan arribi el primer vehicle a una estació d'un competidor STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / desastres: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Mostra un diari quan passin accidents i desastres -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informació de l'Empresa: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informació de l'empresa: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Mostra les notícies de companyies noves que es creen i de companyies en risc de fer fallida STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Obertura d'indústries: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Mostra les notícies d'aparicions d'indústries noves STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Tancament d'indústries: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Mostra les notícies d'indústries que tanquen -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Canvis de l'Economia: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Canvis de l'economia: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Mostra un diari sobre els canvis globals en l'economia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Canvis de producció de les indústries aprovisionades per la companyia: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Mostra les notícies de canvis als nivells de producció de les indústries proveïdes per la companyia pròpia @@ -1468,15 +1508,15 @@ STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Canvis en l'adm STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra missatges sobre les estacions que canviïn l'acceptació d'alguna càrrega STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencions: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Mostra les notícies d'esdeveniments relacionats amb subsidis -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informació General: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informació general: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Mostra les notícies d'esdeveniments generals, com ara compra de drets exclusius o finançar la reconstrucció de carrers -STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Fora +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Desactivat STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resum STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Complet STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Les notícies en color apareixen el: {STRING} -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Any en que els diaris comencen a fer els anunciaments impresos en color. Abans d'aquest any, s'utilitza el blanc i negre +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Any en què els diaris comencen a fer els anunciaments impresos en color. Abans d'aquest any, s'utilitza el blanc i negre STR_CONFIG_SETTING_STARTING_YEAR :Any d'inici: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Activa economia suau (més canvis però més petits): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Quan està activat, els canvis de producció de la indústria són més habituals, i en passos més petits. Aquest paràmetre usualment no té efecte, si el tipus d'indústria estan proveïts per un NewGRF @@ -1486,13 +1526,13 @@ STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentatge del STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentatge del benefici donat a branques intermediàries dins els sistemes, donant més control sobre els beneficis STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :En arrossegar, col·locar senyals cada: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Estableix la distància en les quals els senyals seran construïts a la via fins al següent obstacle (senyal, desviament), si els senyals són arrossegats -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} cel·la{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} cel·l{P 0 a es} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Quan arrosseguis, mantingues fixada la distància entre senyals: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecciona el comportament de la situació de senyals quan Ctrl+arrossega senyals. Si es desactiva, els senyals són situats al voltant dels túnels o ponts per evitar grans trossos sense senyals. Si s'activa, els senyals són situats cada n cel·les, fent l'alineament de senyals en vies paral·leles més fàcil STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construir semàfors mecànics automàticament abans de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Estableix l'any per utilitzar semàfors elèctrics. Abans d'aquest any s'utilitzaran senyals mecànics (que tenen exactament la mateixa funció, però amb diferent aspecte) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activa la interfície de senyals: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Mostra una finestra per escollir els tipus de senyals a construir, enlloc de només la rotació sense finestra de tipus de senyals amb Ctrl+clic sobre els senyals +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Mostra una finestra per escollir els tipus de senyals a construir, en lloc de només la rotació de tipus de senyals sense finestra amb Ctrl+clic sobre els senyals STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipus de senyal a construir predeterminada: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipus de senyal predeterminat a utilitzar STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal @@ -1504,27 +1544,27 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Només normal STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Només avançada STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Totes -STR_CONFIG_SETTING_TOWN_LAYOUT :Disposició de carreteres pels nous pobles: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Disposició per la xarxa de carreteres dels pobles +STR_CONFIG_SETTING_TOWN_LAYOUT :Disposició de carreteres per les noves poblacions: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Disposició per la xarxa de carreteres de les poblacions STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Millors carreteres STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :graella 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :graella 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatori -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Els pobles poden construir carreteres: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permet als pobles construir carreteres per créixer. Desactiva-ho per prevenir que les autoritats del poble construeixin carreteres -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Els pobles tenen permís per construir passos a nivell: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activant aquesta opció permets als pobles construir passos a nivell +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Les poblacions poden construir carreteres: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permet a les poblacions construir carreteres per créixer. Desactiva-ho per prevenir que les autoritats de la població construeixin carreteres +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Les poblacions tenen permís per construir passos a nivell: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activant aquesta opció es permet a les poblacions construir passos a nivell STR_CONFIG_SETTING_NOISE_LEVEL :Permet a la ciutat controlar el nivell de soroll dels aeroports: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Amb aquesta opció desactivada, no hi podran haver dos aeroports en un poble. Amb aquesta opció activada, el nombre d'aeroports en una ciutat està limitat pels límits d'acceptació de sorolls de la ciutat que depen de la població, la mida de l'aeroport i la distància -STR_CONFIG_SETTING_TOWN_FOUNDING :Fundant pobles al joc: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activant aquesta opció permets els jugadors fundar nous pobles durant el joc +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Amb aquesta opció desactivada, no podran haver-hi més de dos aeroports en una mateixa població. Amb aquesta opció activada, el nombre d'aeroports en cada població està limitat pel límit d'acceptació de soroll de la població, que depèn de la mida de l'aeroport i de la distància +STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar poblacions durant la partida: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activant aquesta opció permets els jugadors fundar noves poblacions durant la partida STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Prohibit STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permès -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permès, disposició de poble personalitzada +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permès, disposició dels carrers personalitzada -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Situació dels arbres al joc: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla l'aparició aleatòria dels arbres durant el joc. Això podria afectar a les indústries que es basen en el creixement dels arbres, per exemple les serradores +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Disposició de nous arbres durant la partida: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla l'aparició aleatòria dels arbres durant una partida. Això podria afectar a les indústries que es basen en el creixement dels arbres, per exemple les serradores STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Cap {RED}(inhabilita la serradora) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Només a les selves tropicals STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :A tot arreu @@ -1541,10 +1581,10 @@ STR_CONFIG_SETTING_SOFT_LIMIT :Nombre màxim d STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Nombre de finestres no-enganxoses obertes abans que les finestres antigues es tanquin automàticament per fer lloc a les noves finestres STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :desactivat -STR_CONFIG_SETTING_ZOOM_MIN :Nivell màxim de zoom cap endavant: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Nivell màxim de zoom cap endins a les vistes. Activant els nivells de zoom cap endins elevats incrementa les necessitats de memòria -STR_CONFIG_SETTING_ZOOM_MAX :Nivell màxim de zoom cap enrera: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :El nivell de zoom cap enfora màxim a les vistes. Un nivell més elevat de zoom cap enfora pot causar alentiments +STR_CONFIG_SETTING_ZOOM_MIN :Zoom màxim d'apropament: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Nivell de zoom d'apropament màxim a les vistes. Un major nivell de zoom d'apropament incrementa les necessitats de memòria +STR_CONFIG_SETTING_ZOOM_MAX :Zoom màxim d'allunyament: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Nivell de zoom d'allunyament màxim a les vistes. Un nivell elevat de zoom d'allunyament pot causar alentiments STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal @@ -1558,18 +1598,16 @@ STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lenta STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Ràpida STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Molt ràpida -STR_CONFIG_SETTING_LARGER_TOWNS :Proporció de pobles que es convertiran en ciutats: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantitat de pobles que esdevenen una ciutat, es a dir un poble que comença més gran i creix més ràpidament -STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 en {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS :Proporció de pobles que esdevindran ciutats: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Proporció de poblacions que seran ciutats, és a dir, poblacions que comencen amb més habitants i que creixen més ràpidament +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Cap -STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador de mida de ciutat inicial: {STRING} -STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :La grandària mitjana de les ciutats en relació als pobles normals a l'inici del joc -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Treu els elements de carretera absurds durant la reconstrucció de carretera: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Elimina les carreteres sense sortida durant les reconstruccions de carreteres finançades +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador de mida inicial de ciutats: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :La grandària mitjana de les ciutats en relació als pobles a l'inici de la partida -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualitza el graf de distribució cada {STRING} di{P 0:2 a es} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualitza el graf de distribució cada {STRING}{NBSP}di{P 0:2 a es} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Temps entre recàlculs successius del graf de distribució. Cada recàlcul calcula els plans per un component del graf. Això significa que un valor X per aquest paràmetre no implica que tot el graf serà actualitzat cada X dies. Només alguns components ho seran. Com més curt el valor, més temps de processador es requerirà per calcular-ho. Com més llarg, més temps passarà fins que la distribució de càrregues comenci en noves rutes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Empra {STRING} di{P 0:2 a es} per al recàlcul del graf de distribució +STR_CONFIG_SETTING_LINKGRAPH_TIME :Empra {STRING}{NBSP}di{P 0:2 a es} per al recàlcul del graf de distribució STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Temps dedicat a cada recàlcul d'un component del graf de connexions. Quan un recàlcul s'inicia, el programa crea un fil que pot executar-se durant aquest nombre de dies. Com més curt el valor, més probable que el fil no hagi acabat quan s'espera. Aleshores el programa s'atura fins que el fil acaba ("ralentització"). Com més llarg el valor, més temps requereix l'actualització de la distribució quan les rutes canvien. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimètric @@ -1579,9 +1617,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simètric" vol STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Mode de distribució pel correu: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simètric" vol dir que aproximadament la mateixa quantitat de correu serà enviada des de l'estació A a la B que de B a A. "asimètric" significa que una quantitat arbitrària de correu pot ser enviada en qualsevol dels dos sentits. "manual" vol dir que no s'aplicarà una distribució automàtica pel correu. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Mode de distribució per la classe de càrrega BLINDADA: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de càrrega BLINDADA conté objectes de valor a la zona temperada, diamants a la subtropical o or al clima subàrtic. Els NewGRF poden canviar això. "simètric" significa que aproximadament la mateixa quantitat d'aquesta càrrega s'enviarà de l'estació A a la B que de B a A. "asimètric" vol dir que quantitats arbitràries d'aquesta càrrega poden ser enviades en qualsevol sentit. "manual" significa que no s'aplicarà cap distribució automàtica a aquesta càrrega. Es recomana indicar asimètric o manual en clima subàrtic, doncs els bancs no enviaran or de tornada a les mines. Pels climes temperat i subtropical podeu també seleccionar simètric, doncs els bancs enviaran objectes de valor de tornada al banc d'origen de certa quantitat d'aquests. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de càrrega BLINDADA conté objectes de valor a la zona temperada, diamants a la subtropical o or al clima subàrtic. Els NewGRF poden canviar això. "simètric" significa que aproximadament la mateixa quantitat d'aquesta càrrega s'enviarà de l'estació A a la B que de B a A. "asimètric" vol dir que quantitats arbitràries d'aquesta càrrega poden ser enviades en qualsevol sentit. "manual" significa que no s'aplicarà cap distribució automàtica a aquesta càrrega. Es recomana indicar asimètric o manual en clima subàrtic, doncs els bancs no enviaran or de tornada a les mines. Pels climes temperat i subtropical podeu també seleccionar simètric, doncs els bancs enviaran objectes de valor de tornada al banc d'origen. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Mode de distribució per altres classes de càrrega: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simètric" significa que aproximadament la mateixa quantitat de càrrega s'enviarà de l'estació A a la B que de B a A. "asimètric" vol dir que quantitats arbitràries de càrrega poden ser enviades en qualsevol sentit. "manual" significa que no s'aplicarà cap distribució automàtica a aquestes càrregues. Probablement voldreu indicar "asimètric" o manual. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asimètric" vol dir que quantitats arbitràries de càrrega poden ser enviades en qualsevol sentit. "manual" significa que no s'aplicarà cap distribució automàtica a aquestes càrregues. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisió de la distribució: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Com més alt el valor indicat, més temps de processador requerirà el càlcul del graf de distribució. Si requereix massa temps podeu notar ralentització. Si indiqueu un valor baix, però, la distribució serà poc acurada, i us podeu trobar que la càrrega no és enviada als llocs que espereu. STR_CONFIG_SETTING_DEMAND_DISTANCE :Efecte de la distància sobre les demandes: {STRING} @@ -1616,7 +1654,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Mètric (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unitats de força de tracció: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quan es mostri força de tracció a la interfície d'usuari, presenta-la en les unitats seleccionades +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quan es mostrin forces de tracció a la interfície d'usuari, presenta-les en les unitats seleccionades STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Mètric (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) @@ -1627,38 +1665,40 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (peu) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Mètric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interfície STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localització -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construcció -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_STATIONS :{ORANGE}Estacions -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economia -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribució de la Càrrega -STR_CONFIG_SETTING_AI :{ORANGE}Competidors -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opcions de pantalla -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacció +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gràfics STR_CONFIG_SETTING_SOUND :{ORANGE}Efectes de so -STR_CONFIG_SETTING_NEWS :{ORANGE}Notícies i missatges -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Senyals -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Manipulació de la càrrega -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadors de l'ordenador -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenovació -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Revisions +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfície +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Finestres de visualització +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcció +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notícies / Consells +STR_CONFIG_SETTING_COMPANY :{ORANGE}Companyia +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Comptabilitat +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Lleis físiques STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Recorreguts -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trens -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Pobles -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Indústries +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitacions +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Accidents +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generació del món +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Interacció amb l'entorn +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoritats +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Poblacions +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Indústries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribució de la càrrega +STR_CONFIG_SETTING_AI :{ORANGE}Competidors +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadors de l'ordinador (IA) STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recomanat) -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Cerca de rutes per trens: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Cercar rutes per a utilitzar als trens -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Cerca de rutes per vehicles: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Cercar rutes per a utilitzar per a vehícles de carretera -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Cerca de rutes per vaixells: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Cercar rutes per a utilitzar als vaixells +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Encaminador dels trens: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algorisme a emprar per a escollir les rutes dels trens +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Encaminador d'automòbils: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algorisme a emprar per a escollir les rutes dels automòbils +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Encaminador dels vaixells: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algorisme a emprar per a escollir les rutes dels vaixells STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Canvi de sentit automàtic als senyals: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permetre als trens girar en un senyal, si esperaven allà durant molt temps @@ -1672,12 +1712,12 @@ STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... car STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorant NewGRF '{STRING}': GRF ID duplicada amb '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorant NewGRF invàlid '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :no trobat -STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :insegur per a us estàtic +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :insegur per a ús estàtic STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistema NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatible amb aquesta versió d'OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :desconegut STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... el nivell de compressió '{STRING}' no és vàlid -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... el format de joc desat '{STRING}' no està disponible. Tornant a '{STRING}' +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... el format de partida '{STRING}' no està disponible. Tornant a '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorant el conjunt de gràfics base '{STRING}': no trobats STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorant el conjunt de sons base '{STRING}': no trobats STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorant el conjunt de músiques base '{STRING}': no trobats @@ -1687,27 +1727,27 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'assign # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} -STR_INTRO_NEW_GAME :{BLACK}Nou Joc -STR_INTRO_LOAD_GAME :{BLACK}Carrega un Joc +STR_INTRO_NEW_GAME :{BLACK}Nova Partida +STR_INTRO_LOAD_GAME :{BLACK}Carrega una Partida STR_INTRO_PLAY_SCENARIO :{BLACK}Juga un Escenari -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Juga un mapa d'alçades +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Juga un Mapa d'Alçades STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor d'Escenaris STR_INTRO_MULTIPLAYER :{BLACK}Multijugador STR_INTRO_GAME_OPTIONS :{BLACK}Opcions del Joc STR_INTRO_HIGHSCORE :{BLACK}Taula de rècords -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Paràmetres avançats +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configuració STR_INTRO_NEWGRF_SETTINGS :{BLACK}Extensions NewGRF -STR_INTRO_ONLINE_CONTENT :{BLACK}Contingut en línia -STR_INTRO_SCRIPT_SETTINGS :{BLACK}Paràmetres de la IA/Scripts del Joc +STR_INTRO_ONLINE_CONTENT :{BLACK}Contingut en Línia +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Paràmetres de les IA/Script de la Partida STR_INTRO_QUIT :{BLACK}Surt -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Comença un joc nou. Ctrl+Clic salta la configuració del mapa -STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Carrega un joc desat -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Comença un nou joc, utilitzant un mapa d'alçades com a terreny -STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Comença un joc nou, utilitzant un escenari personalitzat -STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Crea un joc amb un món/escenari personalitzat -STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Comença un joc multijugador +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Comença una partida nova. Ctrl+Clic salta la configuració del mapa +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Carrega una partida desada +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Comença una partida nova, utilitzant un mapa d'alçades com a terreny +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Comença una partida nova, utilitzant un escenari personalitzat +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Crea una partida amb un món/escenari personalitzat +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Comença una partida multijugador STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Selecciona l'estil de paisatge 'temperat' STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Selecciona l'estil de paisatge 'subàrtic' @@ -1716,17 +1756,17 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Seleccio STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra les opcions del joc STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la taula de rècords -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostra paràmetres avançats -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra els paràmetres NewGRF +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra la finestra de configuració +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar -STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de la IA/Script del joc +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt d'OpenTTD STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls. # Quit window STR_QUIT_CAPTION :{WHITE}Surt -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Estàs segur que vols abandonar aquest joc i tornar a {STRING}? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Estàs segur que vols abandonar aquesta partida i tornar a {STRING}? STR_QUIT_YES :{BLACK}Sí STR_QUIT_NO :{BLACK}No @@ -1743,9 +1783,9 @@ STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Abandona el Joc -STR_ABANDON_GAME_QUERY :{YELLOW}Estàs segur que vols abandonar aquest joc? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}Estàs segur que vols sortir d'aquest escenari ? +STR_ABANDON_GAME_CAPTION :{WHITE}Abandona la Partida +STR_ABANDON_GAME_QUERY :{YELLOW}Estàs segur que vols abandonar aquesta partida? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Estàs segur que vols sortir d'aquest escenari? # Cheat window STR_CHEATS :{WHITE}Trampes @@ -1756,10 +1796,12 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jugant STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Eruga màgica (treu indústries, objectes inamovibles): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Els túnels es poden creuar: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Els avions a reacció no tindran accidents (freqüents) en els aeroports petits: {ORANGE}{STRING} -STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :paisatge temperat -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :paisatge subàrtic -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :paisatge subtropical -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :paisatge de joguines +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edita l'alçada màxima del mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edita l'alçada màxima del terreny en el mapa +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Paisatge temperat +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Paisatge subàrtic +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Paisatge subtropical +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Paisatge de joguines STR_CHEAT_CHANGE_DATE :{LTBLUE}Canvia la data: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Canvia l'any actual STR_CHEAT_SETUP_PROD :{LTBLUE}Activa la modificació de valors de producció: {ORANGE}{STRING} @@ -1777,11 +1819,11 @@ STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Escollei STR_LIVERY_PANEL_TOOLTIP :{BLACK}Selecciona un esquema de colors per canviar-lo, o diversos esquemes amb CTRL+Clic. Clica a la casella per canviar l'esquema STR_LIVERY_DEFAULT :Decoració estàndard -STR_LIVERY_STEAM :Motor de vapor -STR_LIVERY_DIESEL :Motor Dièsel -STR_LIVERY_ELECTRIC :Motor Elèctric -STR_LIVERY_MONORAIL :Motor Monorail -STR_LIVERY_MAGLEV :Motor maglev +STR_LIVERY_STEAM :Locomotora a Vapor +STR_LIVERY_DIESEL :Locomotora Dièsel +STR_LIVERY_ELECTRIC :Locomotora Elèctrica +STR_LIVERY_MONORAIL :Locomotora Monorail +STR_LIVERY_MAGLEV :Locomotora Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Vagó de passatgers (Vapor) @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Tramvia de càr STR_FACE_CAPTION :{WHITE}Selecció de cares STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel·la la selecció de nova cara STR_FACE_OK_TOOLTIP :{BLACK}Accepta la selecció de nova cara +STR_FACE_RANDOM :{BLACK}Aleatoritza STR_FACE_MALE_BUTTON :{BLACK}Home STR_FACE_MALE_TOOLTIP :{BLACK}Selecciona cares d'home @@ -1817,15 +1860,15 @@ STR_FACE_SIMPLE :{BLACK}Simple STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selecció de cara simple STR_FACE_LOAD :{BLACK}Carrega STR_FACE_LOAD_TOOLTIP :{BLACK}Carrega la cara preferida -STR_FACE_LOAD_DONE :{WHITE}La teva cara preferida ha estat carregada des de l'arxiu de configuració d'OpenTTD -STR_FACE_FACECODE :{BLACK}Cara jugador nu. +STR_FACE_LOAD_DONE :{WHITE}S'ha carregat la cara personalitzada des de l'arxiu de configuració de l'OpenTTD +STR_FACE_FACECODE :{BLACK}Número de la cara STR_FACE_FACECODE_TOOLTIP :{BLACK}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_SET :{WHITE}El número de la nova cara ha estat assignat STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el número de cara del president - ha de ser un nombre entre 0 i 4,294,967,295! STR_FACE_SAVE :{BLACK}Desa STR_FACE_SAVE_TOOLTIP :{BLACK}Desa la cara preferida -STR_FACE_SAVE_DONE :{WHITE}Aquesta cara serà desada com la preferida a l'arxiu de configuració d'OpenTTD. +STR_FACE_SAVE_DONE :{WHITE}Es desarà aquesta cara personalitzada a l'arxiu de configuració de l'OpenTTD STR_FACE_EUROPEAN :{BLACK}Europea STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona cares europees STR_FACE_AFRICAN :{BLACK}Africana @@ -1835,7 +1878,7 @@ STR_FACE_NO :No STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Activa el bigoti o les arracades STR_FACE_HAIR :Cabell: STR_FACE_HAIR_TOOLTIP :{BLACK}Canvia el cabell -STR_FACE_EYEBROWS :Celles +STR_FACE_EYEBROWS :Celles: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Canvia les celles STR_FACE_EYECOLOUR :Color dels ulls: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Canvia el color dels ulls @@ -1860,31 +1903,31 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Canvia l # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijugador STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Anunciat -STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Escull entre un joc anunciat (internet) i un joc no anunciat (Xarxa d'àrea local, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Escull entre una partida anunciada (internet) i una partida no anunciada (xarxa d'àrea local, LAN) STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Sí STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nom del jugador: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Aquest és el nom amb el que els altres jugadors t'identificaran STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nom -STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nom del joc +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nom de la partida STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clients STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients en línia / clients màx.{}Companyies en línia / companyies màx. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Mida del Mapa -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Mida del mapa del joc{}Clica per ordenar l'àrea +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Mida del mapa de la partida{}Clica per ordenar per àrea STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Data STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Data actual STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Anys -STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Nombre d'anys{}el joc està corrent +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Nombre d'anys{}transcorreguts durant la partida STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Idioma, versió de servidor, etc. -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Clica en un joc de la llista per triar-lo -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}El servidor en el que has entrat per darrera vegada: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Clica per seleccionar al servidor en el que has jugat per darrera vegada: +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Clica en una partida de la llista per triar-la +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}El servidor en què vas entrar el darrer cop: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Clica per seleccionar al servidor en què vas jugar el darrer cop: -STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFORMACIÓ DEL JOC +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFORMACIÓ DE LA PARTIDA STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Escenari: {WHITE}{STRING} @@ -1899,14 +1942,14 @@ STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVIDO STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}LA VERSIÓ NO COINCIDEIX STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NO COINCIDÈNCIA DE NEWGRF -STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Connectar-se al joc +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Connectar-se a la partida STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualitza servidor STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualitza la informació del servidor STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Busca servidor STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Cercant un servidor a la xarxa STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Afegeix un servidor -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Afegeix un servidor a la llista que sempre es comprovarà per a jocs iniciats +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Afegeix un servidor a la llista que sempre es comprovarà per buscar partides en marxa STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Inicia el servidor STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Inicia en un servidor propi @@ -1914,28 +1957,28 @@ STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Posa el STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Entra l'adreça IP del servidor # Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}Inicia un joc multijugador nou +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Inicia una partida multijugador nova -STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nom del joc: -STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}El nom del joc es mostrarà a altres jugadors en el menú de selecció de joc multijugador +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nom de la partida: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}El nom de la partida es mostrarà a altres jugadors en el menú de selecció de partida multijugador STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Posa una contrasenya -STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protegeix el teu joc amb una contrasenya si no vols que d'altre gent el pugui utilitzar +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protegeix la teva partida amb una contrasenya si no vols que sigui accessible a desconeguts STR_NETWORK_START_SERVER_UNADVERTISED :No STR_NETWORK_START_SERVER_ADVERTISED :Sí STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Màx. clients: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Màxim nombre de clients: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Tria el nombre màxim de clients. No és necessari omplir tots els llocs. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} companyi{P a es} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Màx. companyies: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Màxim nombre de companyies: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limita el servidor a un cert nombre de companyies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} espectador{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Màx. espectadors: -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limita el servidor a un cert nombre de espectadors +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Màxim nombre d'espectadors: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limita el servidor a un cert nombre d'espectadors STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Idioma parlat: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Els altres jugadors sabran quin idioma es parla en aquest servidor. -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Posa el nom del joc per xarxa +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Posa el nom de la partida en xarxa # Network game languages ############ Leave those lines in this order!! @@ -1981,7 +2024,7 @@ STR_NETWORK_LANG_LATVIAN :Letó STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Lobby de partida multijugador STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparant per connectar: {ORANGE}{STRING} -STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Una llista de totes les empreses actuals en aquest joc. Pots utilitzar-ne una o bé iniciar-ne una de nova si hi ha algun lloc lliure +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Una llista de totes les empreses actuals en aquesta partida. Pots utilitzar-ne una o bé iniciar-ne una de nova si hi ha algun lloc lliure STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INFORMACIÓ DE L'EMPRESA STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nom companyia: {WHITE}{STRING} @@ -1998,7 +2041,7 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Jugador STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nova Empresa STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Obre una nova Empresa STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Espectador -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Veure el joc com a espectador +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Veure la partida com a espectador STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Uneix-te a la companyia STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Ajuda a gestionar aquesta companyia @@ -2013,7 +2056,7 @@ STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) De STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processant dades... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrant... -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Obtenint informació del joc... +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Obtenint informació de la partida... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Obtenint informació de la companyia... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} rivals @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Espectadors STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introdueix la quantitat de diners que vols donar +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Espectador # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}No desis la contrasenya introduïda @@ -2060,25 +2104,25 @@ STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Establei # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Envia -STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : +STR_NETWORK_CHAT_COMPANY_CAPTION :[Equip] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privat] {STRING}: -STR_NETWORK_CHAT_ALL_CAPTION :[All] : +STR_NETWORK_CHAT_ALL_CAPTION :[Tothom] : -STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_COMPANY :[Team] a {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_COMPANY :[Equip] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Equip] a {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_CLIENT :[Privat] A {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Privat] a {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[Tothom] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Posa el text pel xat de xarxa # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No s'han trobat dispositius de xarxa o s'ha compilat sense l'opció ENABLE_NETWORK -STR_NETWORK_ERROR_NOSERVER :{WHITE}No s'ha pogut trobar cap joc en xarxa +STR_NETWORK_ERROR_NOSERVER :{WHITE}No s'ha pogut trobar cap partida en xarxa STR_NETWORK_ERROR_NOCONNECTION :{WHITE}El servidor no ha contestat a la petició STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}No s'ha pogut connectar degut a una diferència de NewGRF -STR_NETWORK_ERROR_DESYNC :{WHITE}Ha fallat la sincronització del joc en xarxa. -STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}S'ha perdut la connexió al joc en xarxa. -STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}No s'ha pogut carregar el joc desat +STR_NETWORK_ERROR_DESYNC :{WHITE}Ha fallat la sincronització de la partida en xarxa +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}S'ha perdut la connexió a la partida en xarxa +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}No s'ha pogut carregar la partida STR_NETWORK_ERROR_SERVER_START :{WHITE}No s'ha pogut iniciar el servidor STR_NETWORK_ERROR_CLIENT_START :{WHITE}No s'ha pogut connectar STR_NETWORK_ERROR_TIMEOUT :{WHITE}La connexió #{NUM} ha esgotat el temps d'espera @@ -2087,13 +2131,13 @@ STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}La revis STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Contrasenya incorrecta STR_NETWORK_ERROR_SERVER_FULL :{WHITE}El servidor està ple STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Estàs exclòs d'aquest servidor -STR_NETWORK_ERROR_KICKED :{WHITE}T'han fet fora del joc +STR_NETWORK_ERROR_KICKED :{WHITE}T'han fet fora de la partida STR_NETWORK_ERROR_CHEATER :{WHITE}No es permet fer trampes en aquest servidor STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Estaves enviant massa ordres al servidor STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Has tardat massa a introduir la contrasenya -STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}El teu ordenador es massa lent per mantenir-se connectat al servidor -STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}El teu ordenador ha tardat massa a descarregar el mapa -STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}El teu ordenador ha tardat massa a unir-se al servidor +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}El teu ordinador és massa lent per mantenir-se connectat al servidor +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}El teu ordinador ha tardat massa a descarregar el mapa +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}El teu ordinador ha tardat massa a unir-se al servidor ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :error general @@ -2113,7 +2157,7 @@ STR_NETWORK_ERROR_CLIENT_CHEATER :s'ha intentat u STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servidor ple STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :estava enviant massa ordres STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :no s'ha rebut la contrasenya a temps -STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :General temps d'espera esgotat +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :temps d'espera general esgotat STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :la descàrrega del mapa ha tardat massa STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :el processat del mapa ha tardat massa ############ End of leave-in-this-order @@ -2124,24 +2168,24 @@ STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Durant e # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! -STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Joc pausat ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Joc encara pausat ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Joc encara pausat ({STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Joc encara pausat ({STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :El joc encara és pausat ({STRING}, {STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Joc despausat ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Partida en pausa ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partida encara en pausa ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partida encara en pausa ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partida encara en pausa ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :La partida encara està en pausa ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partida represa ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de jugadors STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connectant clients STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de joc +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de la partida ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :deixant -STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} s'ha unit al joc -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} s'ha unit al joc (Client #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} s'ha unit a la partida +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} s'ha unit a la partida (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} s'ha unit a la companyia #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} s'ha unit als espectadors STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha començat una nova companyia (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha deixat el joc ({2:STRING}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha deixat la partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha canviat el seu nom a {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha donat a la teva companyia {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Has donat {1:STRING} {2:CURRENCY_LONG} @@ -2176,7 +2220,7 @@ STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}No has STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Has seleccionat això per a ser descarregat STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Aquesta dependència ha estat seleccionada per a ser descarregada STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Actualment instal·lat -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Aquest contingut és desconegut i no pot ser descarregat a OpenTTD +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Aquest contingut és desconegut i no pot ser descarregat a l'OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Això és un substitut per a l'existent {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Nom: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versió: {WHITE}{STRING} @@ -2187,7 +2231,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Mida de STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Seleccionat a causa de: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependències: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etiquetes: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD està compilat sense suport "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}L'OpenTTD s'ha compilat sense compatibilitat «zlib»... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... no és possible descarregar continguts! # Order of these is important! @@ -2199,15 +2243,15 @@ STR_CONTENT_TYPE_SCENARIO :Escenari STR_CONTENT_TYPE_HEIGHTMAP :Mapa d'alçades STR_CONTENT_TYPE_BASE_SOUNDS :Sons base STR_CONTENT_TYPE_BASE_MUSIC :Música base -STR_CONTENT_TYPE_GAME_SCRIPT :Script de joc +STR_CONTENT_TYPE_GAME_SCRIPT :Script de la partida STR_CONTENT_TYPE_GS_LIBRARY :Llibreria GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Descarregant contingut... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Demanant arxius... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Actualment descarregant {STRING} ({NUM} of {NUM}) +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Actualment descarregant {STRING} ({NUM}{NBSP}de{NBSP}{NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Descàrrega completa -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} of {BYTES} descarregats ({NUM} %) +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}{NBSP}de{NBSP}{BYTES}{NBSP}descarregats ({NUM}{NBSP}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}No s'ha pogut connectar amb el servidor de continguts... @@ -2232,10 +2276,10 @@ STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Commuta STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Commuta la transparència de les estructures com ara fars i antenes. Ctrl+Clic per bloquejar STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Commuta la transparència de la catenària. CTRL+clic per bloquejar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Commuta la transparència dels indicadors de càrrega. Ctrl+Clic per bloquejar -STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Mostra els objectes invisibles enlloc de transparents +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Alternar entre transparència i invisibilitat dels objectes # Linkgraph legend window -STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Llegenda del fluxe de càrrega +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Llegenda del Flux de Càrrega STR_LINKGRAPH_LEGEND_ALL :{BLACK}Tot STR_LINKGRAPH_LEGEND_NONE :{BLACK}Cap STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecciona les companyies que seran mostrades @@ -2258,8 +2302,8 @@ STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Provisio STR_JOIN_STATION_CAPTION :{WHITE}Ajuntar estació STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Construir una estació separada -STR_JOIN_WAYPOINT_CAPTION :{WHITE}Uneix punt de control -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construeix un punt de control separat +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Uneix punt de pas +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construeix un punt de pas separat # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construcció de Ferrocarril @@ -2272,7 +2316,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construe STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construeix unes cotxeres (per construir i revisar trens). Shift commuta construeix/mostra el cost estimat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Converteix una via en un punt de control. Ctrl permet ajuntar punts de control. Shift commuta construeix/mostra el cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construeix una estació de tren. Ctrl permet ajuntar estacions. Shift commuta construeix/mostra el cost estimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construeix senyals de tren. Ctrl commuta entre semàfors mecànics i elèctrics{}Arrossegant es construeixen senyals al llarg d'un tros recte de rail. Ctrl construeix senyals fins a la propera intersecció{}Ctrl+Clic commuta l'obertura de la finestra de detecció de senyals. Shift commuta construir/mostrar el cost estimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construeix senyals de tren. Ctrl commuta entre semàfors mecànics i elèctrics{}Arrossegant es construeixen senyals al llarg d'un tros recte de rail. Ctrl construeix senyals fins a la propera intersecció o senyal{}Ctrl+Clic commuta l'obertura de la finestra de detecció de senyals. Shift commuta construir/mostrar el cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construeix un pont de tren. Shift commuta construeix/mostra el cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construeix un túnel per a trens. Shift commuta construeix/mostra el cost estimat STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Commuta construeix/treu per vies de tren, senyals, punts de control i estacions. Mantingueu Ctrl per treure també les vies dels punts de control i de les estacions @@ -2284,11 +2328,11 @@ STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientació Cotxeres +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientació del Dipòsit STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selecciona l'orientació de les cotxeres de tren # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}Punt de control +STR_WAYPOINT_CAPTION :{WHITE}Punt de pas STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecciona tipus de punt de control # Rail station construction window @@ -2328,8 +2372,8 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Disminue STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Incrementa la densitat de senyals en arrossegar # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona pont de tren -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona un Pont de carretera +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona Pont de Tren +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona Pont de Carretera STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Selecció de pont - clica sobre el pont triat per construir-lo STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} @@ -2389,7 +2433,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construe STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construeix un port. Ctrl permet ajuntar estacions. Shift commuta construeix/mostra el cost estimat STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Situa una boia que pot ser útil per fer punts de control addicionals. Shift commuta construeix/mostra el cost estimat STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK} Construeix aqüeducte. Shift commuta construeix/mostra el cost estimat -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Defineix l'àrea d'aigua.{}Fa un canal, excepte si CTRL està polsat al nivell del mar, llavors s'inundaran els voltants +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Defineix l'àrea d'aigua.{}Fa un canal, excepte si CTRL està polsat al nivell de mar, llavors s'inundaran els voltants STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Situa rius # Ship depot construction window @@ -2462,7 +2506,7 @@ STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crear no STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restableix paisatge STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Treure totes les propietats pertanyents a companyies del mapa -STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restablir Paisatge +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restableix Paisatge STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Estàs segur que vols treure totes les propietats pertanyents a companyies? # Town generation window (SE) @@ -2487,10 +2531,10 @@ STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Gran STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatori STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selecciona la mida de la població STR_FOUND_TOWN_CITY :{BLACK}Ciutat -STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Les ciutats creixen més ràpid que els pobles normals{}Depenent de la configuració, són més grans quan es funden +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Les ciutats creixen més ràpid que els pobles{}Depenent de la configuració, són més grans quan es funden STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposició de les carreteres de la població: -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecciona la disposició de les carreteres utilitzades per aquest poble +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecciona la disposició de les carreteres utilitzades per a aquesta població STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Millors carreteres STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}graella 2x2 @@ -2498,14 +2542,14 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}graella STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatori # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Financia una nova indústria +STR_FUND_INDUSTRY_CAPTION :{WHITE}Finança una nova indústria STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Escolleix el tipus d'indústria adequada d'aquesta llista STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Moltes indústries aleatòries STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Omple el mapa amb indústries situades aleatòriament STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cost: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospecciona STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Construeix -STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financia +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finança # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Cadena industrial per la indústria {STRING} @@ -2547,13 +2591,14 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Càrrega acceptada: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límit de velocitat de la via: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Límit de velocitat de la carretera: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Roques -STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terreny Irregular +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terreny irregular STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terreny erm STR_LAI_CLEAR_DESCRIPTION_GRASS :Gespa -STR_LAI_CLEAR_DESCRIPTION_FIELDS :Camps +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Camps de conreu STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terreny nevat STR_LAI_CLEAR_DESCRIPTION_DESERT :Desert @@ -2643,62 +2688,62 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet STR_ABOUT_OPENTTD :{WHITE}Quant a OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tots els drets reservats STR_ABOUT_VERSION :{BLACK}OpenTTD versió {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 L'equip d'OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 L'equip de l'OpenTTD # Save/load game/scenario -STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa el Joc -STR_SAVELOAD_LOAD_CAPTION :{WHITE}Carrega un Joc +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Carrega una Partida STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Desa l'Escenari STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Carrega un Escenari STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Carrega un Mapa d'alçades STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Desa Mapa d'alçades STR_SAVELOAD_HOME_BUTTON :{BLACK}Clica aquí per anar a la carpeta predeterminada de desa/carrega actual STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} lliures -STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Llista de dispositius de disc, carpetes i arxius de jocs desats -STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nom actualment seleccionat per joc desat +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Llista de dispositius de disc, carpetes i arxius de partides desades +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nom amb què es guardarà la partida actual STR_SAVELOAD_DELETE_BUTTON :{BLACK}Esborra -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Esborra el joc desat actualment seleccionat +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Esborra la partida seleccionada STR_SAVELOAD_SAVE_BUTTON :{BLACK}Desa -STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Desa el joc actual, utilitzant el nom seleccionat +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Desa la partida actual, utilitzant el nom seleccionat STR_SAVELOAD_LOAD_BUTTON :{BLACK}Carrega -STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carrega el joc seleccionat -STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalls del joc +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carrega la partida seleccionada +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carrega el mapa d'alçades seleccionat +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalls de la partida STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hi ha informació disponible STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_OSKTITLE :{BLACK}Posa el nom pel joc desat +STR_SAVELOAD_OSKTITLE :{BLACK}Posa el nom amb què desar la partida actual # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generació del món STR_MAPGEN_MAPSIZE :{BLACK}Mida del mapa: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selecciona la mida del mapa en cel·les. El nombre de cel·les disponibles serà lleugerament més petit STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de pobles: +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nombre de poblacions: STR_MAPGEN_DATE :{BLACK}Data: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. d'indústries: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Alçada de la neu: -STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mou la línia de neu un pas amunt -STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mou la línia de neu un pas avall -STR_MAPGEN_RANDOM_SEED :{BLACK}Nombre aleatori: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Clica per introduir un nombre aleatori -STR_MAPGEN_RANDOM :{BLACK}Aleatoritza -STR_MAPGEN_RANDOM_HELP :{BLACK}Canvia el nombre aleatori utilitzat pel Generador de Terrenys -STR_MAPGEN_LAND_GENERATOR :{BLACK}Gen. de terrenys: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nombre d'indústries: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Alçada màxima del mapa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augmenta l'alçada màxima del terreny en el mapa en una unitat +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Disminueix l'alçada màxima del mapa en una unitat +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Alçada dels estatges amb neu: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mou els estatges amb neu un pas amunt +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mou els estatges amb neu un pas avall +STR_MAPGEN_LAND_GENERATOR :{BLACK}Generació de terrenys: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritme d'arbres: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipus de terreny: -STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivell del mar: -STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rius: -STR_MAPGEN_SMOOTHNESS :{BLACK}Planitut: -STR_MAPGEN_VARIETY :{BLACK}Distribució de la varietat: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivell de mar: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Quantitat de rius: +STR_MAPGEN_SMOOTHNESS :{BLACK}Suavitat: +STR_MAPGEN_VARIETY :{BLACK}Varietat: STR_MAPGEN_GENERATE :{WHITE}Genera # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Vores del mapa: -STR_MAPGEN_NORTHWEST :{BLACK}Nordoest -STR_MAPGEN_NORTHEAST :{BLACK}Nordest -STR_MAPGEN_SOUTHEAST :{BLACK}Sudest -STR_MAPGEN_SOUTHWEST :{BLACK}Sudoest +STR_MAPGEN_NORTHWEST :{BLACK}Nord-oest +STR_MAPGEN_NORTHEAST :{BLACK}Nord-est +STR_MAPGEN_SOUTHEAST :{BLACK}Sud-est +STR_MAPGEN_SOUTHWEST :{BLACK}Sud-oest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Forma lliure STR_MAPGEN_BORDER_WATER :{BLACK}Aigua STR_MAPGEN_BORDER_RANDOM :{BLACK}Aleatori @@ -2710,8 +2755,8 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nom del STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Mida: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Posa un valor aleatori -STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Canviar alçada de la línia de neu +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Canvia l'alçada màxima del mapa +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Canvia l'alçada d'inici d'estatges amb neu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Canviar l'any inicial # SE Map generation @@ -2723,7 +2768,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Alçada STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mou l'alçada del terreny pla un pas avall STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Mou l'alçada del terreny pla un pas amunt -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Canvia alçada del terreny pla +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Canvia l'alçada del terreny pla # Map generation progress STR_GENERATION_WORLD :{WHITE}Generant món... @@ -2737,10 +2782,10 @@ STR_GENERATION_RIVER_GENERATION :{BLACK}Generaci STR_GENERATION_TREE_GENERATION :{BLACK}Generació d'arbres STR_GENERATION_OBJECT_GENERATION :{BLACK}Generació inamovible STR_GENERATION_CLEARING_TILES :{BLACK}Generació d'una àrea escarpada i rocosa -STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurant el joc +STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurant la partida STR_GENERATION_PREPARING_TILELOOP :{BLACK}Passant el bucle de cel·les STR_GENERATION_PREPARING_SCRIPT :{BLACK}Executant l'script -STR_GENERATION_PREPARING_GAME :{BLACK}Preparant el joc +STR_GENERATION_PREPARING_GAME :{BLACK}Preparant la partida # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Paràmetres NewGRF @@ -2750,10 +2795,10 @@ STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Arxius N STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selecciona configuració: STR_NEWGRF_FILTER_TITLE :{ORANGE}Cadena de filtre: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carrega la predefinició seleccionada -STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Desa predef. +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Desa configuració STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Desa la llista actual com a predefinició STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Introdueix el nom de la predefinició -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Esborra predef. +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Esborra configuració STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Esborra la predefinició selecciona actualment STR_NEWGRF_SETTINGS_ADD :{BLACK}Afegeix STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Afegeix l'arxiu NewGRF seleccionat a la teva configuració @@ -2765,21 +2810,23 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mou amun STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mou amunt l'arxiu NewGRF seleccionat de la llista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mou avall STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mou avall l'arxiu NewGRF seleccionat de la llista +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualitza +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Utiliza les versions més noves dels NewGRF que disposin de diverses versions instal·lades STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Una llista de fitxers NewGRF que estan instal·lats -STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Estableix paràm. +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establir paràmetres STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostra els paràmetres STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Commuta paleta -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Commuta la paleta del NewGRF seleccionat.{}Fes això quan els gràfics del NewGRF en el joc siguin rosats +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Commuta la paleta del NewGRF seleccionat.{}Fes això quan els gràfics del NewGRF en el joc es vegin rosats STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplica els canvis STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Cerca contingut que falta en línia STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Comprova si el contingut que falta pot ser trobat en línia STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nom d'arxiu: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}Id de GRF: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID de GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versió: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. versió compatible: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Mín. versió compatible: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paràmetres: {SILVER}{STRING} @@ -2789,10 +2836,20 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}No s'ha tr STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivat STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Versió incompatible amb aquesta versió de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Guardar configuració NewGRF +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Llista de totes les configuracions NewGRF preestablertes; seleccioneu-ne una per a copiar el nom +STR_SAVE_PRESET_TITLE :{BLACK}Introduïu un nom per a l'actual configuració NewGRF +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nom amb què guardar la nova configuració preestablerta de NewGRF +STR_SAVE_PRESET_CANCEL :{BLACK}Cancel·la +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}No guardar els canvies en la configuració NewGRF preestablerta +STR_SAVE_PRESET_SAVE :{BLACK}Guarda +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Guarda la configuració NewGRF preestablerta amb el nom seleccionat + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Canvia els paràmetres NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tanca -STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reseteja +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Restableix STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Estableix tots els paràmetres al seu valor predeterminat STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Paràmetre {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} @@ -2812,32 +2869,35 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmet # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alineant sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite següent -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedeix cap al següent sprite normal, saltant qualsevol sprite pseudo/recolor/font i ajustant el voltant al final -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Anar a l'sprite -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Anar cap a l'sprite donat. Si l'sprite no és un sprite normal, procedir cap al següent sprite normal +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedeix cap al següent sprite normal, saltant qualsevol sprite pseudo/recolor/font i passant de l'últim sprite al primer +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vés a l'sprite +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Va cap a l'sprite donat. Si l'sprite no és un sprite normal, procedir cap al següent sprite normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite anterior -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procedeix cap a l'sprite normal anterior, saltant qualsevol sprite pseudo/recolor/font i ajustant el voltant al començament +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procedeix cap a l'sprite normal anterior, saltant qualsevol sprite pseudo/recolor/font i passant del primer sprite a l'últim STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representació de l'sprite seleccionat actualment. L'alineació s'ignora quan es dibuixa aquest sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mou l'sprite al voltant, canviant els desplaçaments en X i Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Restableix relatius +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Restableix els desplaçaments relatius actuals +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} (Relatiu) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Agafa un sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Agafa un sprite de qualsevol lloc de la pantalla -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Anar a l'sprite +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Vés a l'sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Alerta: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ha passat un error fatal de NewGRF: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} no funcionarà amb la versió de TTDPatch informada per OpenTTD +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}S'ha produït un error fatal de NewGRF: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} no funcionarà amb la versió TTDPatch informada per l'OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} és per la versió {STRING} de TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} està dissenyat per ser utilitzat amb {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Paràmetre invàlid per {1:STRING}: paràmetre {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ha de ser carregat abans de {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ha de ser carregat després de {STRING} -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} necessita OpenTTD versió {STRING} o més modern +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} necessita l'OpenTTD versió {STRING} o superior STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :l'arxiu GRF dissenyat està pendent de traduir STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Hi ha massa arxius NewGRF carregats STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Carregant {1:STRING} com a NewGRF estàtic amb {STRING} podria causar desincronitzacions @@ -2855,7 +2915,7 @@ STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de dispo # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Alerta! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Estàs a punt de fer canvis en un joc actiu. Això pot fer que OpenTTD es pengi. No enviis cap informe d'error sobre això.{}Estàs completament segur que vols fer-los? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Esteu a punt de fer canvis en una partida activa. Això pot fer que l'OpenTTD falli. No envieu cap informe d'error sobre això.{}Esteu completament segur que voleu fer-los? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No es pot afegir l'arxiu: ID GRF duplicada STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}No s'ha trobat un arxiu coincident (els GRF compatibles s'han carregat) @@ -2864,7 +2924,7 @@ STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}No es po STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}S'han carregat els GRF compatibles pels arxius faltants STR_NEWGRF_DISABLED_WARNING :{WHITE}Els fitxers GRF faltants han estat desactivats STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Falten fitxers GRF -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Treure la pausa pot provocar fallades d'OpenTTD. No informis d'errors a causa de fallades subseqüents.{}Estàs segur de voler treure la pausa? +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Reprendre la partida pot provocar errors de l'OpenTTD. No informeu errors de fallades posteriors d'aquesta partida.{}Esteu segur de reprendre la partida? # NewGRF status STR_NEWGRF_LIST_NONE :Cap @@ -2873,10 +2933,11 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Arxius STR_NEWGRF_LIST_MISSING :{RED}Arxius que falten # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}El comportament dels NewGRF '{0:STRING}' probablement causarà desincronitzacions i/o penjades -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Canvia l'estat del vagó amb potència per '{1:ENGINE}' quan no sigui dins la cotxera -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Canvia la llargada del vehicle pel '{1:ENGINE}' quan no sigui dins del dipòsit -STR_BROKEN_VEHICLE_LENGTH :{WHITE}El tren '{VEHICLE}' pertanyent a '{COMPANY}' té una llargada invàlida. Això està causat probablement per problemes amb els NewGRFs. El joc podria desincronitzar-se o penjar-se +STR_NEWGRF_BROKEN :{WHITE}El comportament dels NewGRF '{0:STRING}' pot fer que la partida es pengi o es desincronitzi +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Un vehicle '{1:ENGINE}' ha canviat el seu estat de vagó amb potència mentre estava fora de la cotxera +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva llargada mentre estava fora del dipòsit +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva capacitat mentre estava fora del dipòsit o no s'estava canviant el tipus de càrrega a transportar +STR_BROKEN_VEHICLE_LENGTH :{WHITE}El tren '{VEHICLE}' pertanyent a '{COMPANY}' té una llargada invàlida. Això està causat probablement per problemes amb els NewGRF. La partida podria desincronitzar-se o penjar-se STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' està donant informació incorrecta STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La informació de càrrega/remodelació per '{1:ENGINE}' no encaixa amb la llista de compres després de la construcció. Això podria causar un mal funcionament de autorenova/-substitueix @@ -2890,9 +2951,12 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window -STR_NEWGRF_SCAN_CAPTION :{WHITE}Escanejant NewGRFs -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escanejant NewGRFs. Depenent de la quantitat pot trigar una estona... +STR_NEWGRF_SCAN_CAPTION :{WHITE}Escanejant fitxers NewGRF +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escanejant NewGRF. Depenent de la quantitat, pot trigar una estona... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} escanejats de {NUM} NewGRF{P "" s} estimats STR_NEWGRF_SCAN_ARCHIVES :Escanejant arxius @@ -2903,8 +2967,8 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Commuta # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Edita el text del senyal -STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ves al proper senyal -STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ves al senyal anterior +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Vés al proper senyal +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Vés al senyal anterior STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Posa un nom al senyal @@ -2921,15 +2985,15 @@ STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} ( STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Població: {ORANGE}{COMMA}{BLACK} Cases: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passatgers el darrer mes: {ORANGE}{COMMA}{BLACK} màx: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correu el darrer mes: {ORANGE}{COMMA}{BLACK} màx: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Càrrega requerida per tal de que el poble creixi: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Càrrega requerida per tal que la població creixi: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requerides STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerit a l'hivern STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregat STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (encara requerit) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregat) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}El poble creix cada {ORANGE}{COMMA}{BLACK} di{P a es} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}El poble creix cada {ORANGE}{COMMA}{BLACK} di{P a es} (finançat) -STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}El poble {RED}no {BLACK} està creixent +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}La població creix cada {ORANGE}{COMMA}{BLACK}{NBSP}di{P a es} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La població creix cada {ORANGE}{COMMA}{BLACK}{NBSP}di{P a es} (finançant edificis nous) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}La població {RED}no {BLACK} està creixent STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Límit de soroll a la ciutat: {ORANGE}{COMMA}{BLACK} màx: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centra la vista principal a la població. Ctrl+Clic obre una nova vista al lloc de la població STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Autoritat local @@ -2955,20 +3019,20 @@ STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Treure l STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Petita campanya de publicitat STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Mitjana campanya de publicitat STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Gran campanya de publicitat -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Financia la reconstrucció dels carrers de la població +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finança la reconstrucció dels carrers de la població STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Construeix una estàtua del propietari de la companyia -STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financia nous edificis +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finança nous edificis STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Compra els drets de transport en exclusiva STR_LOCAL_AUTHORITY_ACTION_BRIBE :Suborna les autoritats locals STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Inicia una petita campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Inicia una mitjana campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Inicia una gran campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financia la reconstrucció de la xarxa local de carrers. Dificulta notablement el trànsit durant 6 mesos.{}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finança la reconstrucció de la xarxa local de carrers. Dificulta notablement el trànsit durant 6 mesos.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construeix una estàtua en honor a la teva companyia.{}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Financia la construcció de nous edificis comercials a la població.{}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Compra per 1 any els drets exclusius de transport en la població. La autoritat local només permetrà utilitzar les instal·lacions de la teva companyia de transports als passatgers i les mercaderies.{}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna les autoritats locals per incrementar el teu rati, a risc de greus penalitzacions si et pesquen!!.{}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finança la construcció de nous edificis comercials a la població.{}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Compra per 1 any els drets exclusius de transport en la població. L'autoritat local només permetrà utilitzar les instal·lacions de la teva companyia de transports als passatgers i les mercaderies.{}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna les autoritats locals per incrementar el teu rati, a risc de greus penalitzacions si et pesquen.{}Cost: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} Objectius @@ -2980,7 +3044,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- No ap STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Objectius de la companyia: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica sobre l'objectiu per centrar la vista principal sobre la indústria/poble/cel·la. Ctrl+clic per obrir una nova vista sobre la indústria/poble/cel·la +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica sobre l'objectiu per centrar la vista principal sobre la indústria/població/cel·la. Ctrl+clic per obrir una nova vista sobre la indústria/població/cel·la # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pregunta @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informació STR_GOAL_QUESTION_CAPTION_WARNING :Alerta STR_GOAL_QUESTION_CAPTION_ERROR :Error -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel·la STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No @@ -3001,12 +3065,13 @@ STR_GOAL_QUESTION_BUTTON_PREVIOUS :Anterior STR_GOAL_QUESTION_BUTTON_NEXT :Següent STR_GOAL_QUESTION_BUTTON_STOP :Para STR_GOAL_QUESTION_BUTTON_START :Comença -STR_GOAL_QUESTION_BUTTON_GO :Ves +STR_GOAL_QUESTION_BUTTON_GO :Vés-hi STR_GOAL_QUESTION_BUTTON_CONTINUE :Continua STR_GOAL_QUESTION_BUTTON_RESTART :Reinicia STR_GOAL_QUESTION_BUTTON_POSTPONE :Postposa STR_GOAL_QUESTION_BUTTON_SURRENDER :Rendir-se STR_GOAL_QUESTION_BUTTON_CLOSE :Tanca +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencions @@ -3018,15 +3083,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica al servei per centrar la vista a la indústria/població. Ctrl+Clic obre una nova vista al lloc de la indústria/població # Story book window -STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Llibre -STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llibre Global +STR_STORY_BOOK_CAPTION :{WHITE}Llibre de Partida de {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llibre Global de Partida STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pàgina {NUM} STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salteu a una pàgina seleccionant-la en aquesta llista desplegable. STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior -STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ves a la pàgina anterior +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Vés a la pàgina anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Següent -STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ves a la pàgina següent +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Vés a la pàgina següent +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referència d'objectius invàlida # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Noms d'estació - clica sobre el nom per centrar la vista principal a l'estació. Ctrl+Clic obre una nova vista al lloc de l'estació @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}No hi ha # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Esperant: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} des de {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservat per carregar) @@ -3112,10 +3177,10 @@ STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Canvia e STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centra vista principal al lloc de la boia. Ctrl+Clic obre una nova vista al lloc de la boia STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Canvia el nom de la boia -STR_EDIT_WAYPOINT_NAME :{WHITE}Edita nom de punt de control +STR_EDIT_WAYPOINT_NAME :{WHITE}Edita nom del punt de pas # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} Economia {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}Finances de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Despeses/Ingressos STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcció @@ -3142,7 +3207,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}Demana { STR_FINANCES_BORROW_TOOLTIP :{BLACK}Augmenta l'import del préstec Ctrl+Clic per demanar tants diners com sigui possible STR_FINANCES_REPAY_BUTTON :{BLACK}Amortitza {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Amortitza part del préstec. Ctrl+Clic per tornar tants diners com sigui possible -STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastructura +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infraestructura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -3158,7 +3223,7 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Cap STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor de l'Empresa: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% propietat de {COMPANY}) -STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructura: +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infraestructura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} tros{P "" sos} de via STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} tros{P "" sos} de carretera STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} cel·l{P a es} d'aigua @@ -3173,7 +3238,7 @@ STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Veure se STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Trasllada la Seu STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Trasllada la seu de la companyia a un altre lloc amb el cost d'un 1% del seu valor. Shift+Clic mostra el cost estimat sense traslladar la seu STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalls -STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Veure detalls del càlculs de l'infrastructura +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Veure detalls del càlculs de la infraestructura STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova Cara STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selecciona una nova cara pel president @@ -3195,7 +3260,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nom President STR_BUY_COMPANY_MESSAGE :{WHITE}Busquem empresa de transports per absorbir la nostra companyia{}{}Vols comprar a {COMPANY} per {CURRENCY_LONG}? # Company infrastructure window -STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura de {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestructura de {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Trossos de via: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Senyals STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Trossos de carretera: @@ -3257,7 +3322,7 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trens Disponibl STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehicles Disponibles STR_VEHICLE_LIST_AVAILABLE_SHIPS :Vaixells Disponibles STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Avions Disponibles -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Veure una llista dels motors disponibles per aquest tipus de vehicle +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Veure una llista dels models disponibles per aquest tipus de vehicle STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Administra llista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Envia instruccions a tots els vehicles de la llista @@ -3285,12 +3350,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehicles desagr STR_GROUP_DEFAULT_SHIPS :Vaixells desagrupats STR_GROUP_DEFAULT_AIRCRAFTS :Avions desagrupats -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grups - Clica en un grup per llistar tots els vehicles d'aquest grup +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grups - Clica en un grup per llistar tots els vehicles d'aquest grup. Arrossega i solta per a canviar-ne la jerarquia. STR_GROUP_CREATE_TOOLTIP :{BLACK}Clica per crear un grup STR_GROUP_DELETE_TOOLTIP :{BLACK}Elimina el grup seleccionat STR_GROUP_RENAME_TOOLTIP :{BLACK}Canvia el nom del grup seleccionat STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clica per protegir aquest grup de l'autosubstitueix global +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Esborrar grup +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Estàs segur que vols esborrar aquest grup i tots els seus subgrups? + STR_GROUP_ADD_SHARED_VEHICLE :Afegeix vehicles compartits STR_GROUP_REMOVE_ALL_VEHICLES :Treu tots els vehicles @@ -3316,7 +3384,7 @@ STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cost d'u STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacitat: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(remodelable) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Dissenyat: {GOLD}{NUM}{BLACK} Vida: {GOLD}{COMMA} any{P "" s} -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Màx. Rendiment: {GOLD}{COMMA}% +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Màx. Fiabilitat: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cost: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pes: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Velocitat: {GOLD}{VELOCITY} @@ -3328,10 +3396,10 @@ STR_PURCHASE_INFO_ALL_BUT :Tots menys {CAR STR_PURCHASE_INFO_MAX_TE :{BLACK}Màx. Esforç de Tracció: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Abast: {GOLD}{COMMA} cel·les -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Llista de selecció de vehicles ferroviaris - clica al vehicle per més informació -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Llista de selecció de Vehicles - clica en un vehicle per més informació -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Llista de selecció de Vaixells - clica en un vaixell per més informació -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Llista de selecció d'Avions - clica sobre l'avió per més informació +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Llista de selecció de vehicles ferroviaris. 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 selecció de vehicles de carretera. Clica en un vehicle per més informació. Ctrl+Click per a alternar entre mostrar/ocultar el vehicle de carretera +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Llista de selecció de vaixells. Clica en un vaixell per més informació. Ctrl+Click per a alternar entre mostrar/ocultar el vaixell +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Llista de selecció d'aeronaus. Clica sobre l'aeronau per més informació. Ctrl+Click per a alternar entre mostrar/ocultar l'aeronau STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Compra Vehicle STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Compra Vehicle @@ -3348,15 +3416,30 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Canvia e STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Canvia el nom STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Canvia el nom -STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Canvia el nom del tipus de vehicle ferroviari -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Canvia el nom del tipus d'automòbil -STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Canvia el nom del tipus de vaixell -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Canvia el nom del tipus d'avió +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Canvia el nom del model de vehicle ferroviari +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Canvia el nom del model d'automòbil +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Canvia el nom del model de vaixell +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Canvia el nom del model d'avió + +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Oculta -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Canvia el nom del tipus vehicle ferroviari -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Canvia el nom del tipus d'automòbil -STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Canvia el nom del tipus de vaixell -STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Canvia el nom del tipus d'avió +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostra + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar el vehicle ferroviari +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar l'automòbil +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar el vaixell +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar l'aeronau + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Canvia el nom del model de vehicle ferroviari +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Canvia el nom del model d'automòbil +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Canvia el nom del model de vaixell +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Canvia el nom del model d'avió # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -3435,7 +3518,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Estàs # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Missatge del fabricant de vehicles -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Acabem de dissenyar {G un una} {G nou nova} {STRING}. Esteu interessats en fer ús exclusiu d'aquest vehicle durant un any, per veure com va, abans del seu llançament mundial ? +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Acabem de dissenyar {G un una} {G nou nova} {STRING}. Esteu interessats en fer ús exclusiu d'aquest vehicle durant un any, per veure com va, abans del seu llançament mundial? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=Femenin}locomotora de tren STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=Masculin}automòbil STR_ENGINE_PREVIEW_AIRCRAFT :{G=Masculin}avió @@ -3457,26 +3540,31 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vehicle STR_REPLACE_VEHICLE_SHIP :Vaixell STR_REPLACE_VEHICLE_AIRCRAFT :Avió -STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecciona el tipus de motor a substituir -STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecciona el nou tipus de motor que vols fer servir en lloc del seleccionat +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicles en ús +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Columna amb vehicles que estàs emprant +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehicles disponibles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Columna amb els vehicles disponibles per a substitucions + +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecciona el model a substituir +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecciona el nou model que vols fer servir en lloc del seleccionat STR_REPLACE_VEHICLES_START :{BLACK}Comença a substituir STR_REPLACE_VEHICLES_NOW :Substitueix ara tots els vehicles STR_REPLACE_VEHICLES_WHEN_OLD :Substitueix només vehicles vells -STR_REPLACE_HELP_START_BUTTON :{BLACK}Prem per iniciar el reemplaçament del tipus de motor seleccionat a l'esquerra pel seleccionat a la dreta +STR_REPLACE_HELP_START_BUTTON :{BLACK}Prem per iniciar el reemplaçament del model seleccionat a l'esquerra pel seleccionat a la dreta STR_REPLACE_NOT_REPLACING :{BLACK}No substituint STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Cap vehicle seleccionat STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} quan sigui vell STR_REPLACE_VEHICLES_STOP :{BLACK}Para de substituir -STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del tipus de motor seleccionat a l'esquerra +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del model seleccionat a l'esquerra STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Substituint: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Canvia entre finestres de substitució de vagons i de motors STR_REPLACE_ENGINES :Motors STR_REPLACE_WAGONS :Vagons -STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via pel que vols substituir motors -STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra quin motor dels seleccionats a l'esquerra es substitueix, si n'hi ha +STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via dels models de vehicle que vols substituir +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra quin model dels seleccionats a l'esquerra es substitueix, si n'hi ha STR_REPLACE_RAIL_VEHICLES :Trens de Vapor i Dièsel STR_REPLACE_ELRAIL_VEHICLES :Trens Elèctrics STR_REPLACE_MONORAIL_VEHICLES :Trens Monorail @@ -3506,7 +3594,7 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Això co STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Obliga al tren a actuar sense esperar a tenir el semàfor lliure STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Remodela un tren per transportar un altre tipus de càrrega -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Remodela vehicle de carretera per dur un tipus diferent de càrrega +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Remodela l'automòbil per dur un tipus diferent de càrrega STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Remodela vaixell mercant per portar un tipus diferent de càrrega STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Remodela avions per poder transportar diferents tipus de càrrega @@ -3530,8 +3618,8 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Accions # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Carregant / Descarregant -STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Deixant -STR_VEHICLE_STATUS_CRASHED :{RED}Accident! +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Sortint +STR_VEHICLE_STATUS_CRASHED :{RED}Vehicle sinistrat! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Avariat STR_VEHICLE_STATUS_STOPPED :{RED}Parat STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Parant, a {VELOCITY} @@ -3565,7 +3653,7 @@ STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Anys: {L STR_VEHICLE_INFO_AGE :{COMMA} any{P "" s} ({COMMA}) 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 :{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_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}Màx. E.T.: {LTBLUE}{FORCE} @@ -3581,7 +3669,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacita STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferir Crèdits: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval de les revisions: {LTBLUE}{COMMA}dies{BLACK} Darrera revisió: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval de les revisions: {LTBLUE}{COMMA}{NBSP}dies{BLACK} Darrera revisió: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval de les revisions: {LTBLUE}{COMMA}%{BLACK} Darrera revisió: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Augmenta l'interval de les revisions en 10. Ctrl+Clic augmenta l'interval de les revisions en 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Disminueix l'interval de les revisions en 10. Ctrl+Clic disminueix l'interval de les revisions en 5 @@ -3634,12 +3722,12 @@ STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Seleccio STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Selecciona tipus de càrrega a transportar STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Remodela tren -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Remodela vehicle de carretera +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Remodela automòbil STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Remodela vaixell STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Remodela avió STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Remodela un tren per transportar el tipus de càrrega seleccionada -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Remodela vehicle de carretera per a dur el tipus de carrega senyalat +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Remodela l'automòbil per a dur el tipus de càrrega escollit STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Remodela vaixell per portar el tipus de càrrega seleccionat STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Remodela l'avió per poder transportar el tipus de càrrega seleccionat @@ -3657,10 +3745,10 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Fi d'Ordres # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Sense parar -STR_ORDER_GO_TO :Ves a -STR_ORDER_GO_NON_STOP_TO :Ves sense parar a -STR_ORDER_GO_VIA :Ves via -STR_ORDER_GO_NON_STOP_VIA :Ves sense parar via +STR_ORDER_GO_TO :Vés a +STR_ORDER_GO_NON_STOP_TO :Vés sense parar a +STR_ORDER_GO_VIA :Vés via +STR_ORDER_GO_NON_STOP_VIA :Vés sense parar via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Canvia el comportament de parada de l'ordre remarcada STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Carrega del tot qualsevol càrrega @@ -3679,13 +3767,13 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Canvia e STR_ORDER_REFIT :{BLACK}Remodela STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecciona quin tipus de càrrega vols remodelar en aquesta ordre. Control+Clic per eliminar l'ordre de remodelar -STR_ORDER_REFIT_AUTO :{BLACK}Auto-remodela -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecciona quin tipus de càrrega s'ha d'auto-remodelar en aquesta ordre. Ctrl+Clic per treure l'instrucció remodela. Auto-remodela només serà aplicat si el vehicle ho permet +STR_ORDER_REFIT_AUTO :{BLACK}Remodela a l'estació +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecciona a quin tipus de càrrega s'ha de remodelar en aquesta ordre. Ctrl+Clic per treure la instrucció "remodela". El remodelat en estacions només serà aplicat si el vehicle ho permet STR_ORDER_DROP_REFIT_AUTO :Càrrega fixa STR_ORDER_DROP_REFIT_AUTO_ANY :Càrrega disponible STR_ORDER_SERVICE :{BLACK}Servei -STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ves sempre +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vés-hi sempre STR_ORDER_DROP_SERVICE_DEPOT :Revisa si és necessari STR_ORDER_DROP_HALT_DEPOT :Para STR_ORDER_SERVICE_TOOLTIP :{BLACK}Salta aquesta ordre si no és que es necessita una revisió @@ -3723,25 +3811,25 @@ STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Esborra STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Deixa de compartir STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Deixa de compartir la llista d'ordres. Ctrl+Clic esborra totes ordres per aquest vehicle -STR_ORDERS_GO_TO_BUTTON :{BLACK}Ves a -STR_ORDER_GO_TO_NEAREST_DEPOT :Ves al dipòsit més proper -STR_ORDER_GO_TO_NEAREST_HANGAR :Ves a l'hangar més proper +STR_ORDERS_GO_TO_BUTTON :{BLACK}Vés a +STR_ORDER_GO_TO_NEAREST_DEPOT :Vés al dipòsit més proper +STR_ORDER_GO_TO_NEAREST_HANGAR :Vés a l'hangar més proper STR_ORDER_CONDITIONAL :Ordre de salt condicionada STR_ORDER_SHARE :Comparteix ordres -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Afegeix una nova ordre abans de la seleccionada, o afegeix-la al final de la llista. Ctrl crea les ordres d'estació 'carrega qualsevol càrrega', les ordres de punt de control 'sense parada' i les ordres de cotxeres 'revisió'. 'Comparteix ordres' o Ctrl permet que aquest vehicle comparteixi ordres amb el vehicle seleccionat. Clicant un vehicle copia les ordres des d'aquest vehicle. Una ordre de cotxeres desactiva la revisió automàtica del vehicle +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Afegeix una nova ordre abans de la seleccionada, o afegeix-la al final de la llista. Ctrl crea les ordres d'estació 'carrega qualsevol càrrega', les ordres de punt de pas 'sense parada' i les ordres de cotxeres 'revisió'. 'Comparteix ordres' o Ctrl permet que aquest vehicle comparteixi ordres amb el vehicle seleccionat. Clicant un vehicle copia les ordres des d'aquest vehicle. Una ordre de cotxeres desactiva la revisió automàtica del vehicle STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostra tots els vehicles que tenen les mateixes ordres # String parts to build the order string -STR_ORDER_GO_TO_WAYPOINT :Ves via {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ves sense parar via {WAYPOINT} +STR_ORDER_GO_TO_WAYPOINT :Vés via {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Vés sense parar via {WAYPOINT} STR_ORDER_SERVICE_AT :Revisió a STR_ORDER_SERVICE_NON_STOP_AT :Revisió sense parar a STR_ORDER_NEAREST_DEPOT :el més proper STR_ORDER_NEAREST_HANGAR :l'hangar més proper -STR_ORDER_TRAIN_DEPOT :Cotxeres de tren +STR_ORDER_TRAIN_DEPOT :Cotxeres de Tren STR_ORDER_ROAD_VEHICLE_DEPOT :Cotxera de Vehicles STR_ORDER_SHIP_DEPOT :Drassanes STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} @@ -3771,18 +3859,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descarregui STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No descarreguis i espera carregar del tot qualsevol càrrega) STR_ORDER_NO_UNLOAD_NO_LOAD :(No descarreguis i no carreguis) -STR_ORDER_AUTO_REFIT :(Auto-remodela a {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Càrrega completa amb auto-remodela a {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Càrrega completa de qualsevol càrrega amb auto-remodela a {STRING}) -STR_ORDER_UNLOAD_REFIT :(Descarrega i pren la càrrega amb auto-remodela a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarrega i espera fins a càrrega completa amb auto-remodela a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarrega i espera fins a càrrega completa qualsevol amb auto-remodela a {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transfereix i pren la càrrega amb auto-remodela a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfereix i espera a càrrega completa amb auto-remodela a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfereix i espera a càrrega completa qualsevol amb auto-remodela a {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No descarreguis i pren càrrega amb auto-remodela a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descarreguis i espera càrrega completa amb auto-remodela a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descarreguis i espera càrrega completa qualsevol amb auto-remodela a {STRING}) +STR_ORDER_AUTO_REFIT :(Remodelació a {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Càrrega completa amb remodelació a {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Càrrega completa de qualsevol càrrega amb remodelació a {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descarrega i pren la càrrega amb remodelació a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarrega i espera fins a càrrega completa amb remodelació a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarrega i espera fins a càrrega completa qualsevol amb remodelació a {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transfereix i pren la càrrega amb remodelació a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfereix i espera a càrrega completa amb remodelació a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfereix i espera a càrrega completa qualsevol amb remodelació a {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No descarreguis i pren càrrega amb remodelació a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descarreguis i espera càrrega completa amb remodelació a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descarreguis i espera càrrega completa qualsevol amb remodelació a {STRING}) STR_ORDER_AUTO_REFIT_ANY :càrrega disponible @@ -3808,13 +3896,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horari - STR_TIMETABLE_NO_TRAVEL :Sense viatge STR_TIMETABLE_NOT_TIMETABLEABLE :Viatge (automàtic; programat per la següent ordre manual) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viatge (fora d'horari) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viatja com a molt a {2:VELOCITY} (sense horari) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viatja (sense horari) com a molt a {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Viatge a {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viatja durant {STRING} com a molt a {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viatja (durant {STRING}, sense horari) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viatja (durant {STRING}, sense horari) com a molt a {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(quedar-s'hi durant {STRING}, sense horari) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viatja durant {STRING}, sense horari) STR_TIMETABLE_STAY_FOR :i estigues {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :i viatge per {STRING} -STR_TIMETABLE_DAYS :{COMMA} di{P a es} -STR_TIMETABLE_TICKS :{COMMA} mar{P ca ques} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}di{P a es} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}mar{P ca ques} STR_TIMETABLE_TOTAL_TIME :{BLACK}L'horari tardarà {STRING} a complir-se STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}L'horari tardarà almenys {STRING} a complir-se (no tot està planificat) @@ -3840,8 +3932,8 @@ STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Canvia l STR_TIMETABLE_CLEAR_SPEED :{BLACK}Esborra el límit de velocitat STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Esborra la velocitat de viatge màxima de l'ordre seleccionada -STR_TIMETABLE_RESET_LATENESS :{BLACK}Reset. control de retard -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reseteja el comptador de retards, de manera que el vehicle serà puntual +STR_TIMETABLE_RESET_LATENESS :{BLACK}Restablir Retard +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Restableix el comptador de retards, de manera que el vehicle serà puntual STR_TIMETABLE_AUTOFILL :{BLACK}Autoomple STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Omple automàticament l'horari amb valors del proper viatge (CTRL+clic per intentar mantenir els temps d'espera) @@ -3864,33 +3956,33 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Seleccio # AI debug window -STR_AI_DEBUG :{WHITE}Depuració de la IA/Script de Joc +STR_AI_DEBUG :{WHITE}Depuració de les IA/Script de la Partida STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nom de l'script STR_AI_DEBUG_SETTINGS :{BLACK}Paràmetres STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Canvia els paràmetres de l'script STR_AI_DEBUG_RELOAD :{BLACK}Recarrega IA STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Mata la IA, recarrega l'script, i reinicia la IA -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activa/Desactiva el trencament quan un missatge de registre IA coincideixi amb la cadena de trencament -STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Trencament activat: -STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Trencament activat -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Quan un missatge de registre IA coincideixi amb aquesta cadena, el joc es pausarà +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activa/Desactiva la pausa automàtica quan un missatge del registre de l'IA coincideixi amb la cadena de parada +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Posa en pausa amb: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Posa en pausa quan l'script registri aquesta cadena +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Quan un missatge del registre d'IA coincideixi amb aquesta cadena, la partida es posarà en pausa STR_AI_DEBUG_MATCH_CASE :{BLACK}Distingeix entre majúscules i minúscules -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Commuta la distinció entre majúscules i minúscules quan es comparin els missatges de registre IA amb la cadena de trencament +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Commuta la distinció entre majúscules i minúscules quan es comparin els missatges de registre d'IA amb la cadena de parada STR_AI_DEBUG_CONTINUE :{BLACK}Continua -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Despausa i continua la IA +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Reprèn i continua la IA STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Veure la sortida de depuració per aquesta IA -STR_AI_GAME_SCRIPT :{BLACK}Script de joc -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Comprova el registre de l'script de joc +STR_AI_GAME_SCRIPT :{BLACK}Script de la partida +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Comprova el registre de l'script de la partida STR_ERROR_AI_NO_AI_FOUND :No s'ha trobat una IA adequada per carregar.{}Aquesta IA és una IA falsa i no farà res.{}Pots descarregar diverses IA via el sistema de "Contingut en línia" -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Un dels scripts executant-se s'ha penjat. Si us plau reporta això a l'autor de l'script amb una captura de pantalla de la finestra de depuració IA/Script del Joc -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}IA/La finestra de depuració de l'Script del Joc només està disponible pel servidor +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Un dels scripts executant-se s'ha penjat. Si us plau, reporta això a l'autor de l'script amb una captura de pantalla de la finestra de depuració IA/Script de la Partida +STR_ERROR_AI_DEBUG_SERVER_ONLY :{WHITE}Configuració de les IA/Script de la Partida # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Configuració de la IA/Script de Joc -STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}L'Script del Joc que serà carregat al proper joc -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Les IA que seran carregades al proper joc +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}L'Script de la Partida que serà carregat a la propera partida +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Les IA que seran carregades a la propera partida STR_AI_CONFIG_HUMAN_PLAYER :Jugador humà STR_AI_CONFIG_RANDOM_AI :IA aleatòria STR_AI_CONFIG_NONE :(cap) @@ -3900,21 +3992,21 @@ STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mou la I STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mou avall STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Mou la IA selecionada avall a la llista -STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script del Joc +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script de la Partida STR_AI_CONFIG_AI :{SILVER}IA STR_AI_CONFIG_CHANGE :{BLACK}Selecciona {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :IA -STR_AI_CONFIG_CHANGE_GAMESCRIPT :Script del Joc +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Script de la Partida STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Carrega un altre script STR_AI_CONFIG_CONFIGURE :{BLACK}Configura STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configura els paràmetres de l'script # Available AIs window -STR_AI_LIST_CAPTION :{WHITE}Disponible {STRING} +STR_AI_LIST_CAPTION :{WHITE}{STRING} Disponibles STR_AI_LIST_CAPTION_AI :IA -STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts del Joc +STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts de la Partida STR_AI_LIST_TOOLTIP :{BLACK}Clica per a seleccionar un script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} @@ -3927,20 +4019,22 @@ STR_AI_LIST_CANCEL :{BLACK}Cancel· STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}No canvïis l'script # AI Parameters -STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Paràmetres -STR_AI_SETTINGS_CAPTION_AI :IA -STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script del Joc +STR_AI_SETTINGS_CAPTION :{WHITE}Paràmetres {STRING} +STR_AI_SETTINGS_CAPTION_AI :de la IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :de l'Script de la Partida STR_AI_SETTINGS_CLOSE :{BLACK}Tanca -STR_AI_SETTINGS_RESET :{BLACK}Reset +STR_AI_SETTINGS_RESET :{BLACK}Restableix STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_START_DELAY :Número de dies per començar aquesta IA després de l'anterior (dóna o pren): {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Número de dies per començar aquesta IA després de l'anterior (aproximadament): {ORANGE}{STRING} # Textfile window -STR_TEXTFILE_README_CAPTION :{WHITE}Llegeixme del {STRING} de {STRING} +STR_TEXTFILE_README_CAPTION :{WHITE}Llegeix-me del {STRING} de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registre de canvis del {STRING} de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Llicència del {STRING} de {STRING} -STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeixme +STR_TEXTFILE_WRAP_TEXT :{WHITE}Ajusta text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajusta el text afegint-hi canvis de línia, de manera que sigui més fàcil desplaçar-se pel text +STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeix-me STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Registre de canvis STR_TEXTFILE_VIEW_LICENCE :{BLACK}Llicència @@ -3970,23 +4064,23 @@ STR_MESSAGE_ESTIMATED_COST :{WHITE}Cost Est STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingressos Estimats: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}S'està desant el joc,{}espera a que acabi l'operació! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}S'està desant la partida.{}Espera que acabi l'operació! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ha fallat el desat automàtic STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible llegir la unitat de disc -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Desat del joc erroni{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error guardant la partida{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible esborrar l'arxiu -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Càrrega del joc errònia{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Error carregant la partida{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error Intern: {STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :El joc desat està trencat - {STRING} -STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :El joc desat està fet amb una versió més moderna +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :L'arxiu de la partida està corromput - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida està desada amb una versió més moderna STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :No es pot llegir l'arxiu STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :No es pot escriure a l'arxiu STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :El test d'integritat de dades ha fallat STR_GAME_SAVELOAD_NOT_AVAILABLE : -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}El joc s'ha desat en una versió sense suport de tramvies. S'han eliminat tots els tramvies +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}La partida es va desar amb una versió sense suport de tramvies. S'han eliminat tots els tramvies # Map generation messages -STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generació del mapa avortada...{}... no hi ha llocs adequats per als pobles +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generació del mapa avortada...{}... no hi ha llocs adequats per a poblacions STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... no hi ha poblacions en aquest escenari STR_ERROR_PNGMAP :{WHITE}Impossible carregar un terreny des del PNG... @@ -4047,9 +4141,10 @@ STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Aquí no STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Aquí no es pot rebaixar el terreny... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Aquí no es pot anivellar... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}L'excavació pot malmetre el túnel -STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Ja ets a nivell del mar +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Ja sou a nivell de mar STR_ERROR_TOO_HIGH :{WHITE}Massa alt STR_ERROR_ALREADY_LEVELLED :{WHITE}... ja és pla +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Després del canvi, el pont que el travessa seria massa alt. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}No es pot canviar el nom de la companyia... @@ -4071,15 +4166,15 @@ STR_ERROR_PROTECTED :{WHITE}Aquesta STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Impossible construir poblacions STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No es pot canviar el nom de la població... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No es pot construir una població aquí... -STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No es pot expandir el poble... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No es pot expandir la població... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... massa prop del límit del mapa STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... massa prop d'una altra població STR_ERROR_TOO_MANY_TOWNS :{WHITE}... massa poblacions STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... no queda espai al mapa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El poble no construirà carrers. Pots activar la construcció de carrers via Paràmetres avançats->Economia->Pobles +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La població no construirà carrers. Pots activar la construcció de carrers via Configuració->Interacció amb l'entorn->Poblacions STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obres en progrés -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No es pot eliminar aquest poble...{}Hi ha una estació o una cotxera al poble o una cel·la pertanyent al poble no pot ser eliminada -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hi ha un lloc adequat per situar l'estàtua al centre d'aquest poble +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No es pot eliminar aquesta població...{}Hi ha una estació, un dipòsit o una cel·la pertanyent a la població que no pot ser eliminada +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hi ha un lloc adequat per situar l'estàtua al centre d'aquesta població # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... massa indústries @@ -4096,9 +4191,12 @@ STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... nom STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... només es pot construir prop del centre de les poblacions STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... només pot ser construït en zones baixes STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... només es pot situar prop dels límits del mapa -STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... els boscos només es poden plantar sota la cota de neu -STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... només es pot construir per sobre la cota de neu -STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... només es pot construir per sota la cota de neu +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... el bosc només es pot plantar en estatges amb neu +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... només es pot construir en estatges amb neu +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... només es pot construir en estatges sense neu + +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No hi havia llocs adequats per a indústries '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Canvia els paràmetres de generació de mapa per a obtenir-ne un de millor # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Aquí no es pot construir una estació de tren... @@ -4119,7 +4217,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Massa pr STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Massa prop d'un altre moll STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Massa prop d'un altre aeroport STR_ERROR_CAN_T_RENAME_STATION :{WHITE}No es pot canviar el nom de l'estació... -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... aquesta carretera es propietat de la població +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... aquesta carretera és propietat de la població STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... sentit de la carretera en la direcció incorrecta STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... les estacions d'autobús de pas no poden tenir cantonades STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... les estacions d'autobús de pas no poden tenir interseccions @@ -4143,14 +4241,14 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Primer h STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Primer has d'enderrocar l'aeroport # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Més d'un punt de control existent adjunt +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Més d'un punt de pas existent adjunt STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Massa prop d'un altre punt de control -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Aquí no es pot construir punt de control de tren... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Aquí no es pot construir un punt de pas de tren... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Aquí no es pot situar una boia... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}No es pot canviar el nom del punt de control... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Aquí no es pot treure punt de control de tren... +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Aquí no es pot treure un punt de pas de tren... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Primer s'ha de treure la via punt de control STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia en el camí STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia en ús per una altra companyia! @@ -4236,6 +4334,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Primer h STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}No es pot començar i acabar a la mateixa posició STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Les capçaleres del pont no són al mateix nivell STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El pont és massa baix pel terreny +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}El pont és massa alt per a aquest terreny. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inici i final han d'estar en línia recta STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... els extrems del pont han d'estar tots dos a terra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... el pont és massa llarg @@ -4262,6 +4361,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ja STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}No es pot crear el grup... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}No puc eliminar aquest grup... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}No puc canviar el nom del grup... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}No es pot establir la jerarquia de grups... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}No puc eliminar tots els vehicles d'aquest grup... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}No puc afegir el vehicle a aquest grup... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}No puc afegir vehicles compartits al grup... @@ -4273,7 +4373,7 @@ STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Vaixell STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Avió al camí STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No es pot remodelar el tren... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No es pot remodelar el vehicle de carretera... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No es pot remodelar l'automòbil... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}No es pot remodelar el vaixell... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}No es pot remodelar l'avió... @@ -4320,7 +4420,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehi STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No hi haurà cap vehicle disponible STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Canvia la teva configuració dels NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Encara no hi ha vehicles disponibles -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Iniciar un nou joc després de {DATE_SHORT} o usar un NewGRF que proporciona vehicles primerencs +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Iniciar una nova partida després de {DATE_SHORT} o usar un NewGRF que proporcioni vehicles primerencs # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}No pots fer que un tren passi d'una senyal amb perill... @@ -4466,28 +4566,28 @@ STR_SV_STNAME_SOUTH :{STRING} Sud STR_SV_STNAME_EAST :{STRING} Est STR_SV_STNAME_WEST :{STRING} Oest STR_SV_STNAME_CENTRAL :{STRING} Central -STR_SV_STNAME_TRANSFER :{STRING} Transfereix -STR_SV_STNAME_HALT :{STRING} De Munt -STR_SV_STNAME_VALLEY :{STRING} De Vall -STR_SV_STNAME_HEIGHTS :{G=Masculin}Pic de {STRING} -STR_SV_STNAME_WOODS :{G=Masculin}{STRING} Boscos -STR_SV_STNAME_LAKESIDE :{G=Masculin}{STRING} Del llac +STR_SV_STNAME_TRANSFER :{STRING} Transbord +STR_SV_STNAME_HALT :Parada de {STRING} +STR_SV_STNAME_VALLEY :Vall de {STRING} +STR_SV_STNAME_HEIGHTS :Pic de {STRING} +STR_SV_STNAME_WOODS :Boscos de {STRING} +STR_SV_STNAME_LAKESIDE :Llac de {STRING} STR_SV_STNAME_EXCHANGE :{STRING} Intercanvi -STR_SV_STNAME_AIRPORT :{G=Masculin}{STRING} Aeroport -STR_SV_STNAME_OILFIELD :{G=Masculin}{STRING} Camp de Petroli -STR_SV_STNAME_MINES :{G=Femenin}{STRING} Mines -STR_SV_STNAME_DOCKS :{G=Masculin}{STRING} Port +STR_SV_STNAME_AIRPORT :Aeroport de {STRING} +STR_SV_STNAME_OILFIELD :Camp petrolífer de {STRING} +STR_SV_STNAME_MINES :Mines de {STRING} +STR_SV_STNAME_DOCKS :Port de {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Annex -STR_SV_STNAME_SIDINGS :{G=Femenin}{STRING} Via morta -STR_SV_STNAME_BRANCH :{G=Femenin}{STRING} Bifurcació +STR_SV_STNAME_SIDINGS :{G=Femenin}Voltants de {STRING} +STR_SV_STNAME_BRANCH :{G=Femenin}Ramal de {STRING} STR_SV_STNAME_UPPER :Sobre {STRING} STR_SV_STNAME_LOWER :Baix {STRING} -STR_SV_STNAME_HELIPORT :{G=Masculin}{STRING} Heliport -STR_SV_STNAME_FOREST :{G=Masculin}{STRING} Bosc -STR_SV_STNAME_FALLBACK :{G=Femenin}{STRING} Estació #{NUM} +STR_SV_STNAME_HELIPORT :Heliport de {STRING} +STR_SV_STNAME_FOREST :Bosc de {STRING} +STR_SV_STNAME_FALLBACK :Estació de {STRING} #{NUM} ############ end of savegame specific region! ##id 0x8000 @@ -4496,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dièsel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dièsel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dièsel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor) @@ -4515,10 +4615,10 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (D STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Dièsel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Dièsel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Dièsel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elèctric) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elèctrica) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :{G=Masculin}Vagó per Passatgers STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :{G=Masculin}Vagó per Correu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :{G=Masculin}Vagó per Carbó @@ -4546,10 +4646,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :{G=Masculin}Vagó per Piles STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :{G=Masculin}Vagó per Begudes Gasoses STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :{G=Masculin}Vagó per Plàstic -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elèctric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=Masculin}Vagó per Passatgers +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=Masculin}Vagó de Passatgers STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :{G=Masculin}Vagó per Correu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :{G=Masculin}Vagó per Carbó STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :{G=Masculin}Tanc de Petroli @@ -4576,12 +4676,12 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :{G=Masculin}Vagó per Piles STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :{G=Masculin}Vagó per Begudes Gasoses STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :{G=Masculin}Vagó per Plàstic -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cíclope' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elèctric) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Quimera' (Elèctric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cíclope' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elèctrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Quimera' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=Masculin}Vagó per Passatgers +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=Masculin}Vagó de Passatgers STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :{G=Masculin}Vagó per Correu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :{G=Masculin}Vagó per Carbó STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :{G=Masculin}Tanc de Petroli @@ -4669,9 +4769,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=Masculin}Cam STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=Masculin}Camió per Sucre MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió per Refresc MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió per Refresc Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió per Refresc Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió per Refrescs MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió per Refrescs Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió per Refrescs Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=Masculin}Camió per Cotó de Sucre Wizzowow @@ -4705,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=Masculin}Fer STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=Masculin}Ferry de Passatgers Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=Masculin}Vaixell Mercant Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=Masculin}Vaixell Mercant Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell Mercant Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell Mercant MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=Masculin}Vaixell Mercant Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :{G=Masculin}Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :{G=Masculin}Coleman Count @@ -4756,21 +4856,21 @@ STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} -STR_FORMAT_BUOY_NAME :{G=Femenin}{TOWN} Boia -STR_FORMAT_BUOY_NAME_SERIAL :{G=Femenin}{TOWN} Boia #{COMMA} +STR_FORMAT_BUOY_NAME :Boia de {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Boia de {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :{G=Femenin}(Companyia {COMMA}) STR_FORMAT_GROUP_NAME :{G=Masculin}Grup {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN}: {STRING} -STR_FORMAT_WAYPOINT_NAME :{G=Masculin}{TOWN} Punt de Control -STR_FORMAT_WAYPOINT_NAME_SERIAL :{G=Masculin}{TOWN} Punt de Control #{COMMA} +STR_FORMAT_WAYPOINT_NAME :Punt de pas de {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :Punt de pas de {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{G=Femenin}{TOWN} Cotxera -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{G=Femenin}{TOWN} Cotxera #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{G=Femenin}{TOWN} Cotxera -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{G=Femenin}{TOWN} Cotxera #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{G=Femenin}{TOWN} Drassana -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{G=Femenin}{TOWN} Drassana #{COMMA} -STR_FORMAT_DEPOT_NAME_AIRCRAFT :{G=Masculin}{STATION} Hangar +STR_FORMAT_DEPOT_NAME_TRAIN :Dipòsit de trens de {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Dipòsit de trens de {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Cotxera de {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Cotxera de {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :Drassanes de {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Drassanes de {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangar de {STATION} STR_UNKNOWN_STATION :{G=Femenin}estació desconeguda STR_DEFAULT_SIGN_NAME :{G=Femenin}Senyal @@ -4799,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ocultat) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 5668682057..993a7600ee 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -190,30 +190,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.aku :gazirano piće # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} putnik{P "" a a} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}putnik{P "" a a} STR_QUANTITY_COAL :{WEIGHT_LONG} ugljena -STR_QUANTITY_MAIL :{COMMA} poštansk{P a e ih} vreć{P a e a} +STR_QUANTITY_MAIL :{COMMA}{NBSP}poštansk{P a e ih} vreć{P a e a} STR_QUANTITY_OIL :{VOLUME_LONG} nafte -STR_QUANTITY_LIVESTOCK :{COMMA} grl{P o a a} domaćih životinja -STR_QUANTITY_GOODS :{COMMA} sanduk{P "" a a} robe +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}grl{P o a a} stoke +STR_QUANTITY_GOODS :{COMMA}{NBSP}sanduk{P "" a a} robe STR_QUANTITY_GRAIN :{WEIGHT_LONG} žita STR_QUANTITY_WOOD :{WEIGHT_LONG} drveta STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} željezne rude STR_QUANTITY_STEEL :{WEIGHT_LONG} čelika -STR_QUANTITY_VALUABLES :{COMMA} vreć{P a e a} s vrijednostima +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}vreć{P a e a} s vrijednosnicama STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bakrene rude STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukuruza STR_QUANTITY_FRUIT :{WEIGHT_LONG} voća -STR_QUANTITY_DIAMONDS :{COMMA} vreć{P a e a} dijamanata +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}vreć{P a e a} dijamanata STR_QUANTITY_FOOD :{WEIGHT_LONG} hrane STR_QUANTITY_PAPER :{WEIGHT_LONG} papira -STR_QUANTITY_GOLD :{COMMA} vreć{P a e a} zlata +STR_QUANTITY_GOLD :{COMMA}{NBSP}vreć{P a e a} zlata STR_QUANTITY_WATER :{VOLUME_LONG} vode STR_QUANTITY_WHEAT :{WEIGHT_LONG} pšenice STR_QUANTITY_RUBBER :{VOLUME_LONG} gume STR_QUANTITY_SUGAR :{WEIGHT_LONG} šećera -STR_QUANTITY_TOYS :{COMMA} igrač{P ka ke aka} -STR_QUANTITY_SWEETS :{COMMA} vreć{P a e a} slatkiša +STR_QUANTITY_TOYS :{COMMA}{NBSP}igrač{P ka ke aka} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}vreć{P a e a} slatkiša STR_QUANTITY_COLA :{VOLUME_LONG} cole STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} šećerne vune STR_QUANTITY_BUBBLES :{COMMA} balon{P "" a a} @@ -260,13 +260,13 @@ STR_ABBREV_NONE :{TINY_FONT}NI STR_ABBREV_ALL :{TINY_FONT}SVE # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} putnici +STR_PASSENGERS :{COMMA}{NBSP}putnik{P "" a ""} STR_PASSENGERS.gen :{COMMA} putnika -STR_BAGS :{COMMA} vreća -STR_TONS :{COMMA} tona -STR_LITERS :{COMMA} litra -STR_ITEMS :{COMMA} predmet -STR_CRATES :{COMMA} sanduk +STR_BAGS :{COMMA}{NBSP}vreć{P a e a} +STR_TONS :{COMMA}{NBSP}ton{P a e e} +STR_LITERS :{COMMA}{NBSP}lit{P ra re ara} +STR_ITEMS :{COMMA}{NBSP}predmet{P "" a a} +STR_CRATES :{COMMA}{NBSP}sanduk{P "" a a} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tamnoplava @@ -287,37 +287,37 @@ STR_COLOUR_GREY :Siva STR_COLOUR_WHITE :Bijela # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}KS -STR_UNITS_POWER_METRIC :{COMMA}KS -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}KS +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}KS +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P a e e} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a e a} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P a e e} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton{P a e a} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P "" "" i} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ra re ara} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galon{P "" a a} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}lit{P ra re ara} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtriraj niz: @@ -344,6 +344,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizna t STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizna traka - lista lijevo/desno STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Sruši građevine itd. na kvadratu zemlje. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Prikaži sakrivene +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Prikaži sakrivene +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Prikaži sakrivene +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Prikaži sakrivene + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Uključivanjem ove opcije, prikazani su i sakriveni vlakovi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Uključivanjem ove opcije, prikazana su i sakrivena cestovna vozila +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Uključivanjem ove opcije, prikazani su i sakriveni brodovi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Uključivanjem ove opcije, prikazani su i sakriveni zrakoplovi + # Query window STR_BUTTON_DEFAULT :{BLACK}Zadano STR_BUTTON_CANCEL :{BLACK}Odustani @@ -380,7 +391,7 @@ STR_SORT_BY_VALUE :Vrijednost STR_SORT_BY_LENGTH :Dužina STR_SORT_BY_LIFE_TIME :Preostali životni vijek STR_SORT_BY_TIMETABLE_DELAY :Kašnjenje voznog reda -STR_SORT_BY_FACILITY :Vrsta stanice +STR_SORT_BY_FACILITY :Vrsta postaje STR_SORT_BY_WAITING_TOTAL :Ukupni teret na čekanju STR_SORT_BY_WAITING_AVAILABLE :Dostupni teret na čekanju STR_SORT_BY_RATING_MAX :Najviša ocjena tereta @@ -389,9 +400,9 @@ STR_SORT_BY_ENGINE_ID :MotorID (standa STR_SORT_BY_COST :Cijena STR_SORT_BY_POWER :Snaga STR_SORT_BY_TRACTIVE_EFFORT :Vučna sila -STR_SORT_BY_INTRO_DATE :Datum početka -STR_SORT_BY_RUNNING_COST :Trošak uporabe -STR_SORT_BY_POWER_VS_RUNNING_COST :Snaga/trošak uporabe +STR_SORT_BY_INTRO_DATE :Datum uvođenja +STR_SORT_BY_RUNNING_COST :Tekući trošak +STR_SORT_BY_POWER_VS_RUNNING_COST :Snaga/Tekući trošak STR_SORT_BY_CARGO_CAPACITY :Nosivost tereta STR_SORT_BY_RANGE :Domet STR_SORT_BY_POPULATION :Stanovništvo @@ -457,7 +468,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Izlaz ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Postavke igre -STR_SETTINGS_MENU_CONFIG_SETTINGS :Napredne postavke +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Postavke STR_SETTINGS_MENU_SCRIPT_SETTINGS :Postavke UI-ja/Skripte igre STR_SETTINGS_MENU_NEWGRF_SETTINGS :Postavke za NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Postavke prozirnosti @@ -566,7 +577,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Odaberi granič STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Mijenjaj boju blatnih blokova ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -582,22 +593,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -677,7 +706,7 @@ STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalji STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Pogledaj detalje za ovu kompaniju +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Pogledaj detalje za ovu tvrtku ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vozila: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Postaje: @@ -782,7 +811,7 @@ STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Pokaži STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Pokaži vegetaciju na karti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Pokaži vlasnike zemlje na karti STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikni na tip industrije za njen prikaz. Ctrl+Klik isključuje sve tipove industrije osim odabrane. Ponovni Ctrl+Klik uključuje sve tipove industrije. -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na kompaniju za prikaz njenog vlasništva. Ctrl+Klik isključuje sve kompanije osim odabrane. Ponovni Ctrl+Klik uključuje sve kompanije. +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na tvrtku za prikaz njenog vlasništva. Ctrl+Klik isključuje sve tvrtke osim odabrane. Ponovni Ctrl+Klik uključuje sve tvrtke. STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikni na teret za odabir prikaza njegovih svojstava. Ctrl+Klik isključuje sve terete osim odabranog. Ponovljeni Ctrl+Klik opet uključuje sve terete. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ceste @@ -826,8 +855,8 @@ STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Pokaži STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ne prikazuj industrije na karti STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Prikaži sve industrije na karti STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Aktiviraj prikaz visinske karte -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Prikaži sve što nije vlasništvo kompanije na mapi -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikaži sve vlasništvo kompanije na mapi +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Prikaži sve što nije vlasništvo tvrtke na karti +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikaži sve vlasništvo tvrtke na karti STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Prikaži bez tereta na mapi STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Prikaži sve terete na mapi @@ -906,13 +935,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeka u brodogradilištu STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeka u zrakoplovnom hangaru -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo naredbi u rasporedu STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima nevažeće naredbe STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima duplicirane naredbe STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima neispravnu postaju u svojim naredbama -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} ima u naredbama zračunu luku s prekratkom pistom STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} postaje star STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} postaje vrlo star @@ -995,10 +1023,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestovna vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Odaberi na kojoj će strani ceste vozila prometovati STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vozi na lijevoj strani @@ -1034,11 +1058,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonski STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatsko spremanje STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Odaberi interval između automatskih spremanja igre +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Isključeno STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svaki mjesec STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Svaka 3 mjeseca STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Svakih 6 mjeseci STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Svakih 12 mjeseci +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Izaberi jezično sučelje @@ -1050,8 +1076,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Razluči STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Izaberi razlučivost ekrana STR_GAME_OPTIONS_RESOLUTION_OTHER :ostalo -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format za sliku ekrana -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Izaberi format za sliku ekrana +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veličina sučelja +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Odaberite koju ćete veličinu elementa sučelja koristiti + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normalno +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvostruka veličina +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Četvorostruka veličina STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni set grafike STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru @@ -1067,6 +1097,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberi STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} neispravn{P a e ih} datotek{P a e a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o setu osnovne glazbe +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Povlačenje liste podržanih rezolucija nije uspjelo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Neuspješan prelazak na prikaz na cijelom ekranu # Custom currency window @@ -1145,6 +1176,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Vrlo ravno STR_TERRAIN_TYPE_FLAT :Ravno STR_TERRAIN_TYPE_HILLY :Brežuljkasto STR_TERRAIN_TYPE_MOUNTAINOUS :Brdovito +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Dopustiv STR_CITY_APPROVAL_TOLERANT :Tolerantan @@ -1152,8 +1184,8 @@ STR_CITY_APPROVAL_HOSTILE :Agresivan STR_WARNING_NO_SUITABLE_AI :{WHITE}Odgovarajuća UI nije dostupna...{}Možete preuzeti nekoliko UI pomoću sustava 'Online sadržaja' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Napredne postavke +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Postavke STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtriraj slijed: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Otvori sve STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Zatvori sve @@ -1163,14 +1195,15 @@ STR_CONFIG_SETTING_TYPE :{LTBLUE}Vrsta p STR_CONFIG_SETTING_TYPE_CLIENT :Postavke klijenta (nisu pohranjene u snimljenoj datoteci; utječu na sve igre) STR_CONFIG_SETTING_TYPE_GAME_MENU :Postavke igre (pohranjene u snimljenoj datoteci; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Postavke igre (pohranjene u snimljenoj datoteci; utječu samo na trenutnu igru) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na nove igre) -STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na trenutnu kompaniju) - -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Prikaži: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Sužava doljnju listu prikazom samo izmijenjenih postavki -STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovne postavke -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne postavke -STR_CONFIG_SETTING_RESTRICT_ALL :Postavke za napredne korisnike / sve postavke +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Postavke tvrtke (pohranjene u snimljenoj datoteci; utječu samo na nove igre) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Postavke tvrtke (pohranjene u snimljenoj datoteci; utječu samo na trenutnu tvrtku) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tip: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Sužava doljnju listu koristeći samo predpostavljene filtere +STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovno (prikaži samo važne postavke) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredno (prikaži većinu postavki) +STR_CONFIG_SETTING_RESTRICT_ALL :Stručno (prikaži sve postavke, uključujući i one neobične) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Postavke sa drugačijim vrijednostima od osnovnih STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Postavke sa drugačijim vrijednostima od postavki vaše nove igre @@ -1179,8 +1212,12 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve vrste posta STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Postavke klijenta (nisu spremljene prilikom snimanja; utječu na sve igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Postavke igre (spremljene prilikom snimanja; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Postavke igre (spremljene prilikom snimanja; utječu samo na tekuću igru) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Postavke kompanije (spremljene prilikom snimanja; utječu samo na nove igre) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Postavke kompanije (spremljene prilikom snimanja; utječu samo na trenutnu kompaniju) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Postavke tvrtke (spremljene prilikom snimanja; utječu samo na nove igre) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Postavke tvrtke (spremljene prilikom snimanja; utječu samo na trenutnu tvrtku) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Prikaži sve rezultate pretraga po postavkama{}{SILVER}Kategorija {BLACK}do {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Prikaži sve rezultate pretraga po postavkama{}{SILVER}Tip {BLACK}do {WHITE}Svi tipovi postavki +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Prikaži sve rezultate pretrage po postavkama{}{SILVER}Kategorija {BLACK}do {WHITE}{STRING} {BLACK}i {SILVER}Tip {BLACK}do {WHITE}Svi tipovi postavki +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nijedna - STR_CONFIG_SETTING_OFF :Isključeno STR_CONFIG_SETTING_ON :Uključeno @@ -1199,7 +1236,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sredina STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Desno STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Najveći početni zajam: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji kompanija može pozajmiti (bez uzimanja inflacije u obzir) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji tvrtka može pozajmiti (ne uzimajući inflaciju u obzir) STR_CONFIG_SETTING_INTEREST_RATE :Kamatna stopa: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kamatna stopa zajmova; također kontrolira i inflaciju ako je uključena STR_CONFIG_SETTING_RUNNING_COSTS :Troškovi korištenja: {STRING} @@ -1219,12 +1256,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ukoliko je uklj STR_CONFIG_SETTING_DISASTERS :Nesreće: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Uključivanje nesreća koje mogu povremeno blokirati ili uništiti vozila ili infrastrukturu STR_CONFIG_SETTING_CITY_APPROVAL :Stav gradske uprave prema restrukturiranju područja: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Odaberi koliko buka i ekološka šteta utječu na gradsku ocjenu pojedine kompanije i na daljnja građevinska djelovanja u njihovim područjima +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Odaberi koliko buka i ekološka šteta utječu na gradsku ocjenu pojedine tvrtke i na daljnja građevinska djelovanja u njihovim područjima -STR_CONFIG_SETTING_BUILDONSLOPES :Dopusti izgradnju na kosinama i obalama: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ukoliko je uključenom, tračnice i stanice se mogu graditi na većini nagiba. Ukoliko je isključeni, dozvoljava se njihova gradnja samo na nagibima koji se podudaraju smjerom tračnica i tada ne trebaju temelje -STR_CONFIG_SETTING_AUTOSLOPE :Dopusti modeliranje zemlje ispod građevina, tračnica, itd (autonagib): {STRING} -STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dozvoli uređivanje terena ispod građevina i pruga bez njihovog uklanjanja +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimalna visina mape: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Postavi maksimalnu dozvoljenu visinu planina na mapi +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Ne možete postavini maksimalnu visinu mape na ovu vijednost. Barem jedna planina na mapi je viša. +STR_CONFIG_SETTING_AUTOSLOPE :Dopusti modeliranje zemlje ispod građevina, tračnica, itd.: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dopusti uređivanje terena ispod građevina i pruga bez njihovog uklanjanja STR_CONFIG_SETTING_CATCHMENT :Dopusti realističnije veličine područja zahvaćanja: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Različiti dohvati za različite vrste stanica i zračnih luka STR_CONFIG_SETTING_EXTRADYNAMITE :Dopusti rušenje više cesta, mostova i tunela u vlasništvu grada: {STRING} @@ -1239,24 +1277,20 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Odaberi fizikal STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model ubrzavanja za cestovna vozila: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Odaberi fizikalni model za ubrzanje cestovnih vozila. "Originalni" model penalizira nagibe jednako za sva vozila. "Realistični" model penalizira nagibe ovisno o raznim karakteristikama vozila, npr. vučna sila. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Strmina nagiba za vlakove: {STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba pločice za vlak. Više vrijednosti čine nagib težim za penjanje +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba polja za vlak. Više vrijednosti čine nagib težim za penjanje STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Strmina nagiba za cestovna vozila: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba pločice za cestovna vozila. Veće vrijednosti čine nagib težim za penjanje +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba polja za cestovna vozila. Veće vrijednosti čine nagib težim za penjanje STR_CONFIG_SETTING_FORBID_90_DEG :Zabrani vlakovima i brodovima skretanja pod 90 stupnjeva: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Okreti za 90 stupnjeva se događaju kada vodoravni dio pruge odmah nastavlja okomiti dio pruge na sljedećoj pločici, dakle čineći zaokret vlaka od 90 stupnjeva prelaskom ruba pločice umjesto uobičajenih 45 stupnjeva kod drugih kombinacija pruge. Ovo se primjenjuje i na radijus okretanja brodova +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Okreti za 90 stupnjeva se događaju kada vodoravni dio pruge odmah nastavlja okomiti dio pruge na sljedećem polju, dakle čineći zaokret vlaka od 90 stupnjeva prelaskom ruba polja umjesto uobičajenih 45 stupnjeva kod drugih kombinacija pruge. Ovo se primjenjuje i na radijus okretanja brodova STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dopusti spajanje postaja koje nisu izravno jedna do druge {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Dozvoli dodavanje dijelova stanice bez direktog dodira s postojećim dijelovima. Potrebno pritisnuti Ctrl+Klik dok se dodaju novi dijelovi -STR_CONFIG_SETTING_IMPROVEDLOAD :Koristi unaprijeđeni utovarni algoritam: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ukoliko je uključeno, vozila koja čekaju na stanici se utovaruju jedno po jedno. Utovarivanje sljedećeg vozila započinje tek kada ima dovoljno tereta da se napuni prethodno vozilo. -STR_CONFIG_SETTING_GRADUAL_LOADING :Postupno utovaruj u vozila: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupno utovarivanje vozila koristeći specifično trajanje utovara, umjesto utovarivanja odjednom sa stalnim vremenom ovisnom jedino o količini utovarenog tereta STR_CONFIG_SETTING_INFLATION :Inflacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Uključi inflaciju u ekonomiji, gdje troškovi rastu malo brže od plaćanja -STR_CONFIG_SETTING_SELECTGOODS :Dostavi teret na postaju samo ako na njoj postoji potražnja: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Isporuči teret jedino na stanicu gdje je zatražen od strane vozila koje se utovaruje. Ovo sprečava loše ocjene za terete koji nisu servisirani na stanici STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Najveća dužina mostova: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Najveća dužina za izgradnju mostova +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimalna visina mostova: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimalna visina za gradnju mostova STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Najveća dužina tunela: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Najveća dužina za izgradnju tunela STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Ručna metoda izgradnje primarne industrije: {STRING} @@ -1282,8 +1316,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mjesto gdje će STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :početka STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredine STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :kraja -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Nizanje cestovnih vozila (s kvantnim učincima): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Cestovna vozila moraju čekati ispred zauzetih raskrižja dok se ne rasčiste STR_CONFIG_SETTING_AUTOSCROLL :Pomakni prozor kada je miš na rubu: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Kada je uključeno, prikazna polja će se početi pomicati kada se miš nalazi blizu ruba prozora STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Isključeno @@ -1293,13 +1325,13 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Svako prikazno STR_CONFIG_SETTING_BRIBE :Dopusti potkupljivanje lokalne samouprave: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Omogućiti tvrtkama pokušavanje podmićivanja lokalne gradske vlasti. Ako mito je primjećeno od strane inspektora, tvrtka neće biti u mogućnosti djelovati u gradu na šest mjeseci STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dopusti kupovinu ekskluzivnih prijevoznih prava: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako kompanije kupi eksluzivna prava transporta za neki grad, protivničke stanice (putničke i teretne) neće dobivati ništa tereta tijekom cijele godine -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dozvoli financiranje zgrada: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dozvoli kompanijama davanje novca gradovima za financiranje novih kuća -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dozvoli financiranje rekonstrukcije lokalnih cesta: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dozvoli kompanijama davanje novca gradovima za cestovnu rekonstrukciju radi sabotiranja cestovnog prijevoza u gradu +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako tvrtka kupi eksluzivna prava prijevoza za neki grad, protivničke postaje (putničke i teretne) neće dobivati ništa tereta tijekom cijele godine +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dopusti financiranje zgrada: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dopusti tvrtkama davanje novca gradovima za financiranje novih kuća +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dopusti financiranje rekonstrukcije lokalnih cesta: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dopusti tvrtkama davanje novca gradovima za cestovnu rekonstrukciju radi sabotiranja cestovnog prijevoza u gradu STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Dopusti slanje novca drugim tvrtkama: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Dozvoli transfere novca između kompanija u načinu igre za više igrača +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Dopusti prijenose novca između tvrtki u načinu igre za više igrača STR_CONFIG_SETTING_FREIGHT_TRAINS :Težinski množitelj za teret za simulaciju teških vlakova: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Odredi utjecaj prijevoza tereta u vlakovima. Veća vrijednost čini prijevoz tereta zahtjevnijim za vlakove, pogotovo na brdima STR_CONFIG_SETTING_PLANE_SPEED :Faktor brzine zrakoplova: {STRING} @@ -1311,19 +1343,15 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ništa STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Smanjeno STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalno STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dopusti prolazne postaje na cestama u vlasništvu gradova: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dozvoli izgradnju prolaznih stanica za cestama u vlasništvu grada +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dopusti izgradnju prolaznih postaja na cestama u vlasništvu grada STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Dopusti prolazne postaje na cestama koje su u vlasništvu konkurencije: {STRING} -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dozvoli izgradnju prolaznih stanica na cestama u vlasništvu drugih kompanija -STR_CONFIG_SETTING_ADJACENT_STATIONS :Dopusti izgradnju pridruženih postaja: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Dozvoli dodirivanje različitih stanica -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Omogući više setova NewGRF strojeva: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opcija za kompatibilnost starih NewGRF-ova. Ne isključujte osim ako točno znate što radite! +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dopusti izgradnju prolaznih postaja na cestama u vlasništvu drugih tvrtki STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Mijenjanje ovih postavki nije moguće kada postoje vozila STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Održavanje infrastrukture: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kada je omogućeno, infrastruktura uzrokuje troškove održavanja. Cijena raste više nego proporcionalno s veličinom mreže, čime utječe veće tvrtke više od manjih STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Zračne luke nikad ne ističu: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Uključivanjem ove postavke čini svaku vrstu aerodroma dostupnom zauvijek nakon uvođenja +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Uključivanjem ove postavke čini svaku vrstu zračne luke dostupnom zauvijek nakon uvođenja STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Upozori ako je vozilo izgubljeno: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Uključi poruke o vozilima koje ne mogu naći put do svog odredišta @@ -1348,42 +1376,56 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Trajanje poruke STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trajanje prikaza poruke s greškom u crvenom prozoru. Uzmite u obzir da se neke (kritične) poruke s greškom ne zatvaraju automatski nakon isteka ovog vremena, nego ih je potrebno zatvoriti ručno STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekundi STR_CONFIG_SETTING_HOVER_DELAY :Prikaži pojašnjenja alata: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Odgoda prije prikaza objašnjenja alata kada se miš postavi iznad nekog elementa sučelja. Alternativno, objašnjena alata se mogu vezati uz desnu tipku na mišu -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Lebdi na {COMMA} sekundi +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Odgoda prije prikaza objašnjenja alata kada se miš postavi iznad nekog elementa sučelja. Alternativno, objašnjena alata se mogu vezati uz desnu tipku na mišu kada je ova vrijednost postavljena na 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Lebdi na {COMMA} milisekund{P 0 u i i} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Desni klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Pokaži broj stanovnika u oznaci imena grada: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaži populaciju gradova u njihovim oznakama na mapi STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debljina linija u grafikonima: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debljina linije u grafikonima. Tanja linija je preciznija za čitanje, deblja linija je lakša za vidjeti i boje su lakše za razabrati +STR_CONFIG_SETTING_LANDSCAPE :Teren: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Tereni definiraju osnovne scenarije za igru sa različitim teretima i preduvjetima za rast gradova. NewGRF-ovi i Skripte Igre dozvoljavaju detaljnije kontrole i postavke. STR_CONFIG_SETTING_LAND_GENERATOR :Generator zemlje: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originalni generator ovisi o baznom grafičkom setu i stvara fiksne oblike u terenu. TerraGenesis je generator baziran na Perlinu sa detaljnijim kontrolama i postavkama. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Izvorni STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveća udaljenost Rafinerija Nafte od rubova: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Vrsta terena: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Samo TerraGenesis) Brdovitost terena +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Gustoća industrija: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Odredite koliko će industrija biti stvoreno i kolika će količina biti održavana tijekom igre. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveća udaljenost rafinerija nafte od rubova mape: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerije nafte se grade samo uz rubove mape odnosno na obali za otočne mape STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Visina linije snijega: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grubost terena (samo TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Upravljajte na kojoj visini počinje snijeg u subarktičkoj klimi. Snijeg također utječe na stvaranje industrija i preduvjeta za rast gradova. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grubost terena: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Samo TerraGenesis) Odaberite učestalost brda: Blaži tereni imaju rjeđa ali raširenija brda. Teži tereni imaju više brda koja bi mogla izgledati kao da se ponavljaju. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Vrlo glatko STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glatko STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Grubo STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Vrlo grubo +STR_CONFIG_SETTING_VARIETY :Raspodjela raznolikosti: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Samo TerraGenesis) Upravljajte da li će mapa sadržati i planinska i ravna područja. Pošto ovo samo radi mapu ravnijom, druge postavke bi trebali biti podešene na planinske. +STR_CONFIG_SETTING_RIVER_AMOUNT :Količina rijeka: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Odaberite koliko rijeka želite stvoriti STR_CONFIG_SETTING_TREE_PLACER :Algoritam za sađenje drveća: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Odaberite raspored drveća na mapi: 'Original' sadi drveće ravnomjerno raspoređeno, 'Napredno' ih sadi u skupinama. STR_CONFIG_SETTING_TREE_PLACER_NONE :Nijedan STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Izvorni STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Unaprijeđen +STR_CONFIG_SETTING_ROAD_SIDE :Cestovna vozila: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Odaberite stranu vožnje STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotacija visinske karte: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Obrnuto od smjera kazaljke na satu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :U smjeru kazaljke na satu STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Visinski nivo koji ravna mapa u scenariju dobiva: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Omogući teraformiranje polja na rubovima karte: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ako je isključeno, rubovi mape će uvijek biti ocean -STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedna ili više pločica na sjevernom rubu nisu prazne -STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedna ili više pločica na jednom od rubova nije voda +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedno ili više polja na sjevernom rubu nisu prazne +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedno ili više polja na jednom od rubova nije voda -STR_CONFIG_SETTING_STATION_SPREAD :Najveći raspon stanice: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Najveći raspon postaje: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Najveća površina na kojoj mogu biti dijelovi jedne stanice. Uzmite u obzir da visoke vrijednosti mogu usporiti igru STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatski servisiraj helikoptere na heliodromima: {STRING} -STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servisiraj helikoptere nakon svakog slijetanja, čak i ako nema depoa na aerodromu +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servisiraj helikoptere nakon svakog slijetanja, čak i ako nema spremišta u zračnoj luci STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Poveži alatnu traku za krajolik s alatnim trakama za željeznicu/ceste/vodu/zračne luke: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Kada se otvara alatna traka za građenje neke vrste transporta, istodobno se otvara i alatna traka za uređivanje terena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Boja polja korištena na maloj karti: {STRING} @@ -1396,14 +1438,14 @@ STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ponašanje kod STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glatko klizanje kroz mini pogled: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontroliraj kako se glavni prikaz pomiče na neku lokaciju kada se klikne na malu mapu ili kada se izda naredba za pomicanje na određeni objekt na mapi. Ako je uključeno, prikaz se pomiče glatko, ako je isključeno, prikaz odmah preskoči na ciljnu lokaciju STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaži mjerni naputak prilikom korištenja raznih alata za izgradnju: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Prikaži udaljenosu u pločicama i visinsku razliku kod povlačenja prilikom operacija gradnje -STR_CONFIG_SETTING_LIVERIES :Pokaži tvrtkine boje: {STRING} -STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontroliraj korištenje shema boja tipa vozila za određena vozila (u suprotnosti sa shemama boja kompanija) +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Prikaži udaljenost u poljima i visinsku razliku kod povlačenja prilikom gradnje +STR_CONFIG_SETTING_LIVERIES :Pokaži specifične livreje prema tipu vozila: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontroliraj korištenje shema boja tipa vozila za određena vozila (u suprotnosti sa shemama boja tvrtke) STR_CONFIG_SETTING_LIVERIES_NONE :Nijedna STR_CONFIG_SETTING_LIVERIES_OWN :Vlastita tvrtka STR_CONFIG_SETTING_LIVERIES_ALL :Sve tvrtke STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferiraj ekipni razgovor s :{STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Prebacivanje vezivanja kompanijskog internog i javnog razgovota na odnosno +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Prebacivanje vezivanja tvrtkinog internog i javnog razgovora na odnosno STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcija kotačića za klizanje: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Uključi pomicanje sa dvodimenzionalnim kotačićima miša STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zumiraj kartu @@ -1427,26 +1469,24 @@ 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 mape povlačenjem sa lijevom tipkom miša. Ovo je posebno korisno kada se koristi ekran na dodir za pomicanje +STR_CONFIG_SETTING_AUTOSAVE :Automatsko snimanje: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Odaberite interval između automatskog snimanja igre + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Koristi {STRING} format datuma za ime snimljene pozicije STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma u imenima datoteka sa snimljenom igrom STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dugo (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kratko (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Osnovna paleta će biti postavljena za NewGRFove koji ne odrede paletu: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Osnovna paleta koju će koristiti NewGRF-ovi koji nemaju specificirano koju paletu trebaju -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleta -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleta - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatski pauziraj prilikom pokretanja nove igre: {STRING} -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kada je uključeno, igra će se automatski pauzirati priliko pokretanja nove igre, dozvoljavajući bolje proučavanje mape -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Kod pauze dozvoli: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kada je uključeno, igra će se automatski pauzirati prilikom pokretanja nove igre, dopuštajući bolje proučavanje karte +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Kod pauze dopusti: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Odaberi koje se akcije mogu koristiti dok je igra pauzirana STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nijedna akcija STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Sve ne-konstrukcijske akcije STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Sve osim akcija za izmjenu krajolika STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Sve akcije -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Koristi napredni popis vozila: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Koristi grupe u listi vozila: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Uključi korištenje naprednih lista vozila za grupiranje vozila STR_CONFIG_SETTING_LOADING_INDICATORS :Koristi pokazatelje utovara: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Odaberi da li će prikazivači utovara biti prikazani iznad vozila koja se utovaruju ili iznad vozila koja se istovaruju @@ -1465,15 +1505,15 @@ STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Pokaži rezervi STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Prikaži rezervirane pruge u drugoj boji kako bi se olakšalo rješavanje problema sa vlakovima koji ne žele ući u određenu dionicu puta STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Zadrži alate za izradu aktivnima nakon upotrebe: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zadrži otvorenim alate za mostove, tunele itd. i nakon upotrebe -STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupiraj troškove u financijskom prozoru tvrtke: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Odredi izgled prozora troškova kompanije +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupiraj rashode u financijskom prozoru tvrtke: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Odredi izgled prozora rashoda tvrtke STR_CONFIG_SETTING_SOUND_TICKER :Skraćene novosti: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Sviraj zvuk kod skraćenih poruka novosti STR_CONFIG_SETTING_SOUND_NEWS :Novine: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Sviraj zvuk kod prikaza novina STR_CONFIG_SETTING_SOUND_NEW_YEAR :Kraj godine: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Sviraj zvučne efekte na kraju godine sumirajući uspjeh kompanije tijekom godine uspoređujući ga sa prethodnom godinom +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Sviraj zvučne efekte na kraju godine sumirajući uspjeh tvrtke tijekom godine uspoređujući ga s prethodnom godinom STR_CONFIG_SETTING_SOUND_CONFIRM :Gradnja: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Sviraj zvučne efekte kod uspješne gradnje ili drugih akcija STR_CONFIG_SETTING_SOUND_CLICK :Klik na dugmadi: {STRING} @@ -1487,14 +1527,14 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Sviraj zvučne STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Isključi gradnju infrastrukture kada odgovarajuća vozila nisu dostupna: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kada je uključeno, infrastruktura je dostupna samo ako su dostupna i vozila za nju, sprečavajući trošenje vremena i novca na neupotrebljivu infrastrukturu -STR_CONFIG_SETTING_MAX_TRAINS :Maksimalan broj vlakova po kompaniji: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Najveći broj vlakova koje može imati kompanija -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimalan broj cestovnih vozila po kompaniji: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Najveći broj cestovnih vozila koje može imati kompanija -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimalan broj zrakoplova po kompaniji: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Najveći broj zrakoplova koje može imati kompanija -STR_CONFIG_SETTING_MAX_SHIPS :Maksimalan broj brodova po kompaniji: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje može imati kompanija +STR_CONFIG_SETTING_MAX_TRAINS :Maksimalni broj vlakova po tvrtki: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Najveći broj vlakova koje tvrtka može imati +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimalni broj cestovnih vozila po tvrtki: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Najveći broj cestovnih vozila koje tvrtka može imati +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimalni broj zrakoplova po tvrtki: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Najveći broj zrakoplova koje tvrtka može imati +STR_CONFIG_SETTING_MAX_SHIPS :Maksimalni broj brodova po tvrtki: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje tvrtka može imati STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Isključi vlakove za računalo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Uključivanjem ove postavke, računalo-igrač neće moći koristiti vlakove @@ -1512,7 +1552,7 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Srednje STR_CONFIG_SETTING_AI_PROFILE_HARD :Teško STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Dopusti UI u mrežnoj igri: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dozvoli UI računalnim-igračima da sudjeluju u igrama za više igrača +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dopusti UI računalnim-igračima da sudjeluju u igrama za više igrača STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#op-kodova prije suspendiranja skripti: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Najveći broj računalnih koraka koje skripta može poduzeti u jednom krugu @@ -1520,7 +1560,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servisni su int STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Odaberi da li će se servisiranje vozila pokrenuti nakon isteka vremena od zadnjeg servisa ili padom pouzdanosti za određenu vrijednost od najveće pouzdanosti STR_CONFIG_SETTING_SERVINT_TRAINS :Zadani interval servisiranja za vlakove: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Postavi osnovni interval servisa za nova pružna vozila, ako nije postavljen drugi specifični interval za određeno vozilo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dana/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dan{P 0 "" a a}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Isključeno STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Zadani interval servisiranja za cestovna vozila: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Postavi osnovni interval servisa za nova cestovna vozila, ako nije postavljen drugi specifični interval za određeno vozilo @@ -1542,7 +1582,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaži novine STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nesreće / katastrofe: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikaži novine kod nesreća ili katastrofa STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Podaci vezani za tvrtku: {STRING} -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikai novine kada se pojavi nova kompanije ili kada kompanije riskiraju bankrot +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikaži novine kada se pojavi nova tvrtka ili kada tvrtke riskiraju bankrot STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otvaranje industrije: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikaži novine kada se nove industrije otvaraju STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zatvaranje industrije: {STRING} @@ -1550,11 +1590,11 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaži novine STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Promjene u gospodarstvu: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaži novine vezano za globalne promjene u ekonomiji STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Promjene u proizvodnji industrija koje opslužuje tvrtka: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje servisira kompanija +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži novine kod promjene proizvodnih razina industrija koje tvrtka opslužuje STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Promjene u proizvodnji industrija koje opslužuju suparnici: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje servisiraju suparnici STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Ostale izmjene u proizvodnji industrija: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje ne servisira kompanija ili suparnici +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikaži novine kod promjene proizvodnih razina industrija koje tvrtka ili suparnici ne opslužuju STR_CONFIG_SETTING_NEWS_ADVICE :Savjeti / informacije o vozilima tvrtke: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Prikaži poruke o vozilima koje trebaju pozornost STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nova vozila: {STRING} @@ -1576,18 +1616,18 @@ STR_CONFIG_SETTING_STARTING_YEAR :Početna godina STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključi tečnu ekonomiju (više manjih izazova): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kada je uključeno, promjene u industrijskoj proizvodnji su češće ali u manjim rasponima. Ova postavka obično nema efekta ukoliko su industrije postavljene iz nekog NewGRF-a STR_CONFIG_SETTING_ALLOW_SHARES :Dopusti kupovanje udjela u drugim tvrtkama: {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kada je uključeno, dozvoljava se kupnja i prodaja dionica kompanija. Dionice će postati dostupne samo za kompanije određene starosti +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kada je uključeno, dopušta se kupnja i prodaja dionica tvrtki. Dionice će postati dostupne samo za tvrtke određene starosti STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Postotak profita za dionicu koji se plaća kod sistema feeder-a: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Postotak prihoda koji će biti predan srednjim dionicama prijevoza feeder sustavima, daje više kontrole nad prihodima STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Kod povlačenja, postavi signale svakih: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Postavi razmak između signala koji će se graditi do sljedeće prepreke (signal, raskrižje), ukoliko se signali povlače STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} polje STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Prilikom povlačenja, zadrži odabrani razmak između signala: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Odabire ponašanje kod postavljanja signala putem Ctrl+povlačenja. Ukoliko je isključeno, signali se postavljaju oko tunela i mostova kako bi se izbjegla veća područja bez signala. Ukoliko je uključeno, signali se postavljaju svakih N pločica, olakšavajući poravnanje signala kod paralelnih pruga +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Odabire ponašanje kod postavljanja signala putem Ctrl+povlačenja. Ukoliko je isključeno, signali se postavljaju oko tunela i mostova kako bi se izbjegla veća područja bez signala. Ukoliko je uključeno, signali se postavljaju svakih N polja, olakšavajući poravnanje signala kod paralelnih pruga STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatski izgradi semafore prije: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Postavi godinu kada će se koristiti električni signali za pruge. Prije ove godine, koristiti će se ne-električni signali (imaju iste funkcije samo izgledaju drugačije) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Omogući signalni GUI: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Prikaži prozor za odabir tipova signala za gradnju, umjesto samo prikaza tipa signala bez prozora sa Ctrl+klikanjem kod gradnje +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Prikaži prozor za odabir tipova signala za gradnju, umjesto samo rotacije tipa signala bez prozora sa Ctrl+klik na sagrađenim signalima STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Predodređeni signal za izgradnju: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Osnovni tip signala za korištenje STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokirajući signali @@ -1611,7 +1651,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Dozvoli gradovi STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Gradovi smiju graditi pružne prijelaze: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Uključivanje ove postavke dozvoljava se gradovima da grade cestovno-pružne prijelaze STR_CONFIG_SETTING_NOISE_LEVEL :Omogući određivanje razine buke za zračne luke od strane gradova: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dve zračne luke u svakom gradu. Kada je ova postavka uključena, broj zračnih luka u nekom gradu je limitirana količinom dozvoljene buke u gradu, koja ovisi o populaciji i udaljenosti i veličini zračnih luka +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dvije zračne luke u svakom gradu. Kada je ova postavka uključena, broj zračnih luka u nekom gradu je ograničen količinom dopuštene buke u gradu, koja ovisi o broju stanovnika i udaljenosti i veličini zračne luke STR_CONFIG_SETTING_TOWN_FOUNDING :Osnivanje gradova tijekom igre: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Uklučivanje ove postavke dozvoljava igračima osnivanje novih gradova tijekom igre STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabranjeno @@ -1659,12 +1699,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 od {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nijedan STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Početni množitelj veličine grada: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Prosječna veličina gradova u donosu na naselja kod početka igre -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Ukloni besmislene cestovne elemente tijekom izgradnje prometnica: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Uklanjanje slijepih ulica kod financirane rekonstrukcije cesta -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Ažuriraj povezni grafikon svakih {STRING} dan{P 0:2 a a a} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Ažuriraj povezni grafikon svakih {STRING}{NBSP}dan{P 0:2 a a a} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Vrijeme između slijedećih rekalkulacija poveznog grafikona. Svaka rekalkulacija izračunava planove za jednu komponentu grafikona. To znači da vrijednost X za ovu postavku ne mora značiti i ažuriranje kompletnog grafikona unutar X dana. Samo neke komponente će biti ažurirane. Čim kraće vrijeme odredite, više će biti potrebno resursa CPU-a za izračun. Čim duže vrijeme odredite, trebati će više vremena za pokretanje distribucije po novim rutama. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Uzmi {STRING} dan{P 0:2 a a a} za rekalkulaciju poveznog grafikona +STR_CONFIG_SETTING_LINKGRAPH_TIME :Uzmi {STRING}{NBSP}dan{P 0:2 a a a} za rekalkulaciju poveznog grafikona STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Vrijeme potrebno za rekalkulaciju komponente poveznog grafikona. Kada se rekalkulacija pokrene, stvara se slijed koji može raditi broj dana koliko ovdje odredite. Čim kraće vrijeme odredite, postoji mogućnost da slijed neće biti gotov kada bi trebao. Tada se igra usporava odnosno zaustavlja dok ne bude gotovo. Čim duže vrijeme odredite, potrebno je duže da se distribucija ažurira kad se izmijene rute. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ručno STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrično @@ -1674,9 +1712,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrično" z STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Način distribucije poštu: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simetrično" znači da će se otprilike ista količina pošte slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljne količine pošte slati u oba smjera. "Ručno" znači da se distribucija neće vršiti automatski. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Način distribucije za OKLOPLJENU klasu tereta: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :OKLOPLJENA klasa tereta sadrži vrijednosnice u umjerenoj klimi, dijamante u subtropskoj klimi ili zlato u subarktičkoj klimi. NewGFR-ovi bi mogli ovo izmijeniti. "Simetrično" znači da će se otprilike ista količina tereta slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljne količine tereta slati u oba smjera. "Ručno" znači da se distribucija tih tereta neće vršiti automatski. Preporučljivo je namjestiti ovu postavku na "asimetrično" ili "ručno" kod subarktičke klime jer banke neće slati zlato natrag prema rudnicima zlata. Za umjerenu i subtropsku klimu možete namjestiti i "simetrično" jer će banke slati neke vrijednosnice natrag prema izvorišnoj banci. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :OKLOPLJENA klasa tereta sadrži vrijednosnice u umjerenoj klimi, dijamante u subtropskoj klimi ili zlato u subarktičkoj klimi. NewGFR-ovi bi mogli ovo izmijeniti. "Simetrično" znači da će se otprilike ista količina tereta slati od stanice A prema stanici B kao od B prema A. "Asimetrično" znači da će se proizvoljne količine tereta slati u oba smjera. "Ručno" znači da se distribucija tih tereta neće vršiti automatski. Preporučljivo je namjestiti ovu postavku na "asimetrično" ili "ručno" kod subarktičke klime jer banke neće slati zlato natrag prema rudnicima zlata. Za umjerenu i subtropsku klimu možete namjestiti i "simetrično" jer će banke slati neke vrijednosnice natrag prema izvorišnoj banci. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Način distribucije za ostale klase tereta: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Simetrično" znači da će se otprilike ista količina tereta slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljne količine tereta slati u oba smjera. "Ručno" znači da se distribucija tih tereta neće vršiti automatski. Preporučljivo bi bilo ovu postavku namjestiti na "asimetrično" ili "ručno". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimetrično" znači da će se proizvoljna količina tereta slati u bilo kojem smjeru. "Ručno" znači da neće biti nikakve automatske distribucije za te terete. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Točnost distribucije: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čim višu vrijednost odaberete, CPU će trebati više vremena za kalkulaciju poveznog grafikona. Ako bude trebalo predugo, mogli bi primijetiti usporavanje igre. U suprotnom, ako namjestite na manju vrijednost, distribucija će biti netočnija i mogli bi primijetiti da se teret šalje na mjesta koja niste očekivali. STR_CONFIG_SETTING_DEMAND_DISTANCE :Efekt udaljenosti na potražnju: {STRING} @@ -1699,13 +1737,13 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrički (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jedinice mase: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Uvijek kada su mase prikazane u korisničkom sučelju, prikaži ih u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Uvijek kada je masa prikazana u korisničkom sučelju, prikaži je u odabranim jedinicama STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperijalni (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrički (t/tonne) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Jedinice volumena: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Uvijek kada su volumeni prikazani u korisničkom sučelju, prikaži ih u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Uvijek kada je volumen prikazan u korisničkom sučelju, prikaži ga u odabranim jedinicama STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperijalni (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrički (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) @@ -1717,32 +1755,34 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrički (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Jedinice visine: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Uvijek kada su visine prikazane u korisničkom sučelju, prikaži ih u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Uvijek kada je visina prikazana u korisničkom sučelju, prikaži je u odabranim jedinicama STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperijalni (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrički (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Sučelje STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizacija -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Izgradnja +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Sučelje +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Opće +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Pogledi +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Izgradnja +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novosti / savjetnici +STR_CONFIG_SETTING_COMPANY :{ORANGE}Tvrtka +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Računovodstvo STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_STATIONS :{ORANGE}Postaje -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomija -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribucija tereta +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutanje +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ograničenja +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofe / nesreće +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generacija svijeta +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Okoliš +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Vlasti +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Gradovi +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrije +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribucija tereta STR_CONFIG_SETTING_AI :{ORANGE}Suparnici -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Postavke prikaza -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakcija -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti -STR_CONFIG_SETTING_NEWS :{ORANGE}Novosti i poruke -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signali -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Tretiranje tereta STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalni igrači -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Auto-obnavljanje -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servisiranje -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutanje -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlakovi -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Gradovi -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrije STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1791,7 +1831,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Više ig STR_INTRO_GAME_OPTIONS :{BLACK}Postavke igre STR_INTRO_HIGHSCORE :{BLACK}Tablica najboljih rezultata -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredne postavke +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Postavke STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Postavke STR_INTRO_ONLINE_CONTENT :{BLACK}Provjeri online sadržaj STR_INTRO_SCRIPT_SETTINGS :{BLACK}Postavke UI-ja/Skripte igre @@ -1811,7 +1851,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Odaberi STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikaži postavke igre STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikaži tablicu najboljih rezultata -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Prikaži napredne postavke +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Prikaži postavke STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikaži postavke NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Provjeri novi i nadograđeni sadržaj za preuzimanje STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži postavke UI-ja/Skripte igre @@ -1851,6 +1891,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Igraj k STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magični buldožer (uklanja industrije, nepokretne objekte): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneli se mogu ukrštavati međusobno: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Veliki avioni se ne će rušiti (često) na malim zračnim lukama: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Uredi maksimalnu visinu mape: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Uredi maksimalnu visinu planina na mapi STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Blagi krajolik STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktički krajolik STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Suptropski krajolik @@ -1899,6 +1941,7 @@ STR_LIVERY_FREIGHT_TRAM :Teretni tramvaj STR_FACE_CAPTION :{WHITE}Izbor lica STR_FACE_CANCEL_TOOLTIP :{BLACK}Odustani od izbora novog lica STR_FACE_OK_TOOLTIP :{BLACK}Prihvati izbor novog lica +STR_FACE_RANDOM :{BLACK}Nasumično STR_FACE_MALE_BUTTON :{BLACK}Muško STR_FACE_MALE_TOOLTIP :{BLACK}Odaberi muška lica @@ -1914,7 +1957,7 @@ STR_FACE_LOAD :{BLACK}Učitaj STR_FACE_LOAD_TOOLTIP :{BLACK}Učitaj omiljeno lice STR_FACE_LOAD_DONE :{WHITE}Tvoje omiljeno lice je učitano iz OpenTTD konfiguracijske datoteke. STR_FACE_FACECODE :{BLACK}Broj igračevog lica -STR_FACE_FACECODE_TOOLTIP :{BLACK}Pogledaj i/ili postavi broj lica predsjednika kompanije +STR_FACE_FACECODE_TOOLTIP :{BLACK}Pogledaj i/ili postavi broj lica predsjednika tvrtke STR_FACE_FACECODE_CAPTION :{WHITE}Pogledaj i/ili postavi broj predsjednikovog lica STR_FACE_FACECODE_SET :{WHITE}Novi kod za broj igračevog lica je postavljen STR_FACE_FACECODE_ERR :{WHITE}Nemoguće namjestiti broj predsjednikovog lica - mora biti broj između 0 and 4,294,967,295! @@ -2019,13 +2062,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaštiti STR_NETWORK_START_SERVER_UNADVERTISED :Ne STR_NETWORK_START_SERVER_ADVERTISED :Da STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klijen{P t ta ata} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks klijenata: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalni broj klijenata: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izaberi maksimalan broj klijenata. Ne moraju sva mjesta biti popunjena. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} tvrtk{P a e i} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks tvrtki: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksimalni broj tvrtki: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj tvrtki STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} gledatelj{P "" a a} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks promatrača: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimalni broj promatrača: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj gledatelja STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jezik kojim se govori: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Drugi igrači znat će kojim se jezikom govori na poslužitelju @@ -2138,6 +2181,7 @@ STR_NETWORK_CLIENT :Klijent STR_NETWORK_SPECTATORS :Promatrači STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Unesite iznos novca koji želite dati +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Gledatelj # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nemoj spremiti upisanu zaporku @@ -2238,7 +2282,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} je osnovao novu tvrtku (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} je izašao iz igre ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je promijenio/la ime u {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je dao vašoj kompaniji {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je dao vašoj tvrtki {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dao si {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Poslužitelj je zatvorio sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Poslužitelj se ponovno pokreće...{}Molimo pričekajte... @@ -2322,7 +2366,7 @@ STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Namjesti STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Namjesti prozirnost za drveće. Ctrl+klik za zaključavanje STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Namjesti prozirnost za kuće. Ctrl+klik za zaključavanje STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Namjesti prozirnost za industrije. Ctrl+klik za zaključavanje -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Namjesti prozirnost za građevine poput stanica, depoa i čvorišta. Ctrl+klik za zaključavanje +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Namjesti prozirnost za građevine poput postaja, spremiša i čvorišta. Ctrl+klik za zaključavanje STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Namjesti prozirnost za mostove. Ctrl+klik za zaključavanje STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Namjesti prozirnost za strukture poput svjetionika i antena. Ctrl+klik za zaključavanje. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Aktiviraj prozirnost za viseće žice. Ctrl+klik za zaključavanje @@ -2333,7 +2377,7 @@ STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Učini o STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda protoka tereta STR_LINKGRAPH_LEGEND_ALL :{BLACK}Sve STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ništa -STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Odaberi kompanije koje će se prikazati +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Odaberi tvrtke koje će se prikazati # Linkgraph legend window and linkgraph legend in smallmap STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nekorišten @@ -2367,7 +2411,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Izgradi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Izgradi spremište vlakova (za kupnju i servisiranje vlakova). Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Pretvori prugu u čvorište. Ctrl omogućava spajanje čvorišta. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Izgradi željezničku postaju. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Izgradi željezničke signale. Ctrl aktivira semafore/svjetlosne signale{}Povlačenjem će se izgraditi signali uzduž ravnog dijela pruge. Ctrl će izgraditi signale do sljedećeg križanja.{}Ctrl+klik aktivira otvaranje prozora za odabir signala. Shift mijenja prikaz građenje/procjena troškova. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Izgradi željezničke signale. Ctrl aktivira semafore/svjetlosne signale{}Povlačenjem će se izgraditi signali uzduž ravnog dijela pruge. Ctrl će izgraditi signale do sljedećeg križanja ili signala.{}Ctrl+klik aktivira otvaranje prozora za odabir signala. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Izgradi željeznički most. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Izgradi željeznički tunel. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Aktiviraj izgradnju/uklanjanje željezničke pruge, signala, čvorišta i postaja. Držanjem tipke Ctrl također se uklanjaju tračnice na čvorištima i postajama. @@ -2470,9 +2514,9 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Smjer au STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer autobusne postaje STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Smjer kamionskog terminala STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer kamionskog terminala -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orijentacija stanice putničkog tramvaja +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orijentacija postaje putničkog tramvaja STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer putničke tramvajske postaje -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orijentacija stanice teretnog tramvaja +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orijentacija postaje teretnog tramvaja STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer teretne tramvajske postaje # Waterways toolbar (last two for SE only) @@ -2555,10 +2599,10 @@ STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Smanji p STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Napravi nasumično zemljište STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Kreiraj novi scenarij STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Poništi krajolik -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Obriši sa mape sve u vlasništvu kompanije +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Obriši s karte sve u vlasništvu tvrtke STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Poništi krajolik -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Jeste li sigurni da želite obrisati sve u vlasništvu kompanije? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Jeste li sigurni da želite obrisati sve u vlasništvu tvrtke? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Stvaranje gradova @@ -2642,6 +2686,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ograničenje brzine na cesti: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stijenje @@ -2674,7 +2719,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} pruga STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} pruga sa kombiniranim i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} pruga sa kombiniranim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} pruga sa putnim i jednosmjernim putnim signalima -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} depo vlaka +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} spremište vlaka STR_LAI_ROAD_DESCRIPTION_ROAD :Cesta STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Cesta s javnom rasvjetom @@ -2738,7 +2783,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-2013 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru @@ -2757,6 +2802,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Spremi STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Spremi trenutnu igru koristeći odabrano ime STR_SAVELOAD_LOAD_BUTTON :{BLACK}Učitaj STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Učitaj odabranu igru +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Učitaj odabranu visinsku kartu STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalji o igri STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nema dostupnih informacija. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2772,13 +2818,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj gradova: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj industrija: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimalna visina mape: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Povećaj maksimalnu visinu planina na mapi za jedan +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Smanji maksimalnu visinu planina na mapi za jedan STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Visina linije snijega STR_MAPGEN_SNOW_LINE_UP :{BLACK}Pomakni visinu linije snijega za jedan gore STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pomakni visinu linije snijega za jedan dolje -STR_MAPGEN_RANDOM_SEED :{BLACK}Nasumični slijed: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni za unos nasumičnog slijeda -STR_MAPGEN_RANDOM :{BLACK}Nasumično -STR_MAPGEN_RANDOM_HELP :{BLACK}Promijeni slučajni slijed koji se koristi za kreiranje terena STR_MAPGEN_LAND_GENERATOR :{BLACK}Izrađivač zemljišta: STR_MAPGEN_TREE_PLACER :{BLACK} Algoritam za drveće: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vrsta terena: @@ -2805,7 +2850,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ime visi STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Veličina: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Upiši nasumično sjeme +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Promijeni maksimalnu visinu mape STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Promijeni visinu linije snijega STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promijeni početnu godinu @@ -2860,6 +2905,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Pomakni STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Pomakni odabranu NewGRF datoteku gore na listi STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK} Pomakni dolje STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Pomakni odabranu NewGRF datoteku dolje na listi +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Nadogradnja +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Nadogradite NewGRF datoteke za koje već imate instalirane novije verzije STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Popis instaliranih NewGRF datoteka STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Postavi parametre @@ -2884,6 +2931,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nije prona STR_NEWGRF_SETTINGS_DISABLED :{RED}Onemogućeno STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nije kompatibilno sa ovom verzijom OpenTTD-a +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Snimiti predpostavke +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Popis dostupnih predpostavki, odaberite jednu za kopiranje pod imenom ispod +STR_SAVE_PRESET_TITLE :{BLACK}Unesite ime za predpostavke +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Trenutno odabrano ime za snimanje predpostavki +STR_SAVE_PRESET_CANCEL :{BLACK}Odustani +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ne mijenjati predpostavke +STR_SAVE_PRESET_SAVE :{BLACK}Snimanje +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Snimite predpostavke u trenutno odabrano ime + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Promijeni NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zatvori @@ -2907,14 +2964,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnanje sprite-a {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sljedeći sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon kraja kreni od početka +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon dolaska na zadnjeg prebaci na prvi STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Otiđi na sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Otiđi na određeni sprite. Ako sprite nije normalni sprite, otiđi na slijedeći normalni sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prethodni sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Otiđi na prethodni normalni sprite, preskačući svaki pseudo/prebojani/font sprite i kreni od kraja ako se dođe na početak +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Otiđi na prethodni normalni sprite, preskačući svaki pseudo/prebojani/font sprite i {BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon dolaska na prvi prebaci na zadnjeg STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prikaz trenutno odabranog spritea. Poravnjanje se ignorira kod crtanja ovog spritea. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pomakni sprite mijenjajući X i Y pomake -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X pomak: {NUM}, Y pomak: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Poništi relativne +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Poništi trenutne relativne pomake +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X pomak: {NUM}, Y pomak: {NUM} (Apsolutni) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X pomak: {NUM}, Y pomak: {NUM} (Relativni) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Odaberi sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Odaberi sprite od bilo gdje na ekranu @@ -2969,8 +3029,9 @@ STR_NEWGRF_LIST_MISSING :{RED}Nedostaju # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Ponašanje NewGRF '{0:STRING}' će vjerojatno uzrokovati deharmonizaciju i/ili rušenje igre -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Promijenjen status motoriziranog vagona za '{1:ENGINE}' kad vozilo nije u depou. -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ovo mijenja dužinu vozila za '{1:ENGINE}' kada vozilo nije unutar depoa +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Promijenjen status motoriziranog vagona za '{1:ENGINE}' kad vozilo nije u spremištu. +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ovo mijenja dužinu vozila za '{1:ENGINE}' kada vozilo nije unutar spremišta +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Promijenilo je kapacitet vozila za '{1:ENGINE}' kada nije u spremšta ili se remontira STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak'{VEHICLE}' koji pripada tvrtci '{COMPANY}' neispravne je dužine. Uzrok problema je vjerojatno u NewGRF datotekama. Igra će se možda deharmonizirati ili srušiti STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' daje netočne informacije @@ -2985,6 +3046,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} od STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Tražim NewGRFove STR_NEWGRF_SCAN_MESSAGE :{BLACK}Tražim NewGRFove. Ovisno o količini ovo može malo potrajati... @@ -3022,8 +3086,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} isporučeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (još potrebno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (isporučeno) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK} dan -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK} dan (financirano) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK}{NBSP}dan +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK}{NBSP}dan (financirano) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Grad {RED}ne{BLACK} raste STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Ograničenje buke u gradu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju grada. Ctrl+klik otvara novi prozor sa lokacijom grada @@ -3074,8 +3138,8 @@ STR_GOALS_NONE :{ORANGE}- Nijed STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nije primjenjivo - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_COMPANY_TITLE :{BLACK}Ciljevi kompanije: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cilj za centriranje središnjeg pogleda na industriju/grad/pločicu. Ctrl+Klik otvara novi prozor s pogledom na lokaciju industrije/grada/pločice +STR_GOALS_COMPANY_TITLE :{BLACK}Ciljevi tvrtke: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cilj za centriranje središnjeg pogleda na industriju/grad/polje. Ctrl+Klik otvara novi prozor s pogledom na lokaciju industrije/grada/polja # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pitanje @@ -3083,7 +3147,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacija STR_GOAL_QUESTION_CAPTION_WARNING :Upozorenje STR_GOAL_QUESTION_CAPTION_ERROR :Greška -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Poništi STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne @@ -3102,6 +3166,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Ponovi od poče STR_GOAL_QUESTION_BUTTON_POSTPONE :Odgodi STR_GOAL_QUESTION_BUTTON_SURRENDER :Odustani STR_GOAL_QUESTION_BUTTON_CLOSE :Zatvori +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije @@ -3122,6 +3187,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Prethodn STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Prethodna stranica STR_STORY_BOOK_NEXT_PAGE :{BLACK}Sljedeće STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Sljedeća stranica +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Neispravna referenca cilja # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Imena postaja - klikni na ime kako bi centrirao glavni pogled na postaju. Ctrl+klik otvara novi prozor sa lokacijom postaje @@ -3136,7 +3202,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nijedna # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čekanje: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} iz {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervirano za ukrcaj) @@ -3197,8 +3262,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Pokaži STR_STATION_VIEW_RENAME_STATION_CAPTION :Preimenuj postaju/terminal -STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zatvori aerodrom -STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Spriječi sletanje aviona na ovaj aerodrom +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zatvori zračnu luku +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Spriječi slijetanje zrakoplova u ovu zračnu luku # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -3231,7 +3296,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Ukupno: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankovna bilanca STR_FINANCES_LOAN_TITLE :{WHITE}Zajam -STR_FINANCES_MAX_LOAN :{WHITE}Maks zajam: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maksimalni kredit: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pozajmi {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Povećaj iznos zajma. Ctrl+klik posuđuje najveći mogući iznos @@ -3257,15 +3322,15 @@ STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastru STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} dijelovi pruge STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} dio ceste STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} polje vode -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} polje stanice -STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aerodromi +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} polje postaje +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} zračne luke STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ništa STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Izgradi sjedište tvrtke STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Izgradi sjedište tvrtke STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Pogledaj sjedište tvrtke STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Pogledaj sjedište tvrtke -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Premjesti sjedište kompanije +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Premjesti sjedište tvrtke STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Izgradi sjedište tvrtke negdje drugdje za 1% troška od cjelokupne vrijednosti tvrtke. Shift+Klik prikazuje trošak bez premještanja sjedišta tvrtke. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalji STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Pogledaj detaljne podatke infrastrukture @@ -3296,11 +3361,11 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signali STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Dijelovi ceste: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Cesta STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvajska pruga -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Pločice vode: +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Polje s vodom: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali -STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: -STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pločice stanice -STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerodromi +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Postaje: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Polje s postajom +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Zračne luke STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/god # Industry directory @@ -3380,12 +3445,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupirana ces STR_GROUP_DEFAULT_SHIPS :Negrupirani brodovi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupirani zrakoplovi -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groupe - klikni na grupu kako bi izlistao sva vozila ove grupe +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupe - kliknite na grupu kako bi izlistali sva vozila ove grupe. Povucite i prenesite grupe za postavljanje hijerarhije. STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikni za kreiranje grupe STR_GROUP_DELETE_TOOLTIP :{BLACK}Obriši odabranu grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenuj odabranu grupu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni kako bi zaštitio ovu grupu od globalne automatske zamjene +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Izbriši grupu +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Da li ste sigurni da želite izbrisati ovu grupu i sve njene podgrupe? + STR_GROUP_ADD_SHARED_VEHICLE :Dodaj dijeljena vozila STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozila @@ -3421,12 +3489,12 @@ STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Prenamje STR_PURCHASE_INFO_ALL_TYPES :Sve vrste tereta STR_PURCHASE_INFO_ALL_BUT :Sve osim {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK} Maks. vučni napor: {GOLD}{FORCE} -STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} pločica +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} polja -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Popis izabranih vlakova - klikni na vlak za informacije -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Popis izabranih cestovnih vozila - klikni na vozilo za informacije -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Popis izabranih brodova - klikni na brod za informacije -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Popis izabranih zrakoplova - klikni na zrakoplov za informacije +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Popis brodova za odabir. Klikni na vozilo za informacije. Ctrl+klik za uključivanje ili isključivanje prikaza vrste broda +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Popis zrakoplova za odabir. Klikni na vozilo za informacije. Ctrl+klik za uključivanje ili isključivanje prikaza vrste zrakoplova STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo @@ -3448,6 +3516,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Preimenu STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu broda STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu zrakoplova +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Sakrij +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Sakrij +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Sakrij +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Sakrij + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Prikaži +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Prikaži +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Prikaži +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Prikaži + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prebacivanje skrivanja/prikazivanja vrste vlakova +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prebacivanje skrivanja/prikazivanja vrste cestovnog vozila +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prebacivanje skrivanja/prikazivanja vrste broda +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prebacivanje skrivanja/prikazivanja vrste zrakoplova + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Preimenuj vrstu vagona STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Preimenuj vrstu cestovnog vozila STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Preimenuj vrstu broda @@ -3456,8 +3539,8 @@ STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Preimenu # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} -STR_DEPOT_RENAME_TOOLTIP :{BLACK}Promijeniti ime depoa -STR_DEPOT_RENAME_DEPOT_CAPTION :Preimenovati depo +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Promijeniti ime spremišta +STR_DEPOT_RENAME_DEPOT_CAPTION :Preimenovati spremište STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} @@ -3501,7 +3584,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloniraj STR_DEPOT_CLONE_SHIP :{BLACK}Kloniraj brod STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloniraj zrakoplov -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju vlaka uključujući sve vagone. Kliknite na ovaj gumb i onda na vlak unutar ili izvan spremišta. Ctrl+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju vlaka uključujući sve vagone. Kliknite na ovaj gumb i onda na vlak unutar ili izvan spremišta. Ctrl+Klik će dijeliti naredbe. Shift+Klik prikazuje procijenjeni trošak bez kupnje. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju cestovnog vozila. Klikni na ovaj gumb i onda na cestovno vozilo unutar ili izvan spremišta. CTRL+Klik će dijeliti naredbe. Shift+Klik prikazuje procijenjeni trošak bez kupnje. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju broda. Klikni na ovaj gumb i onda na brod unutar ili izvan spremišta. Ctrl+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ovo će kupiti kopiju zrakoplova. Klikni ovaj gumb i onda na zrakoplov unutar ili izvan hangara. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. @@ -3552,6 +3635,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Cestovno vozilo STR_REPLACE_VEHICLE_SHIP :Brod STR_REPLACE_VEHICLE_AIRCRAFT :Zrakoplov +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vozila u uporabi +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Stupac s vozilima koje posjedujete +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Dostupna vozila +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Stupac sa vozilima dostupnim za zamjenjivanje + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izaberi vrstu motora koju želiš zamijeniti STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Odaberite novu vrstu lokomotive koji želite koristiti umjesto lijevo odabrane vrste lokomotive @@ -3661,7 +3749,7 @@ 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}Maks. brzina: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} pločica +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} polja STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} @@ -3676,7 +3764,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Nosivost STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Prebaci novac: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisni interval: {LTBLUE}{COMMA}dana{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisni interval: {LTBLUE}{COMMA}{NBSP}dana{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisni interval: {LTBLUE}{COMMA}%{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Povećaj servisni interval za 10. Ctrl+klik povećava servisni interval za 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Smanji servisni interval za 10. Ctrl+klik smanjuje servisni interval za 5. @@ -3721,7 +3809,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova nos STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Trošak remonta: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Odaberi vozila za remont. Povlačenje mišem dozvoljava odabir više vozila. Klik na prazninu će označiti cijelo vozilo. Ctrl+Klik će označiti vozilo i niz koji slijedi. +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Odaberi vozila za remont. Povlačenje mišem dopušta odabir više vozila. Klik na prazninu će označiti cijelo vozilo. Ctrl+Klik će označiti vozilo i niz koji slijedi. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koju će vlak prevoziti STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koje će cestovno vozilo prevoziti @@ -3774,7 +3862,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Promijen STR_ORDER_REFIT :{BLACK}Prenamijeni STR_ORDER_REFIT_TOOLTIP :{BLACK}Odaberi vrstu tereta za prenamijenu u ovoj naredbi. Ctrl+klik kako bi uklonio naputak za prenamjenu -STR_ORDER_REFIT_AUTO :{BLACK}Auto-remont +STR_ORDER_REFIT_AUTO :{BLACK}Auto-remont na postaji STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Odaberi za koji tip tereta odraditi auto-remont. Ctrl+Click za micanje remontnih uputa. Auto-remont će se odraditi samo ako ga vozilo dopušta. STR_ORDER_DROP_REFIT_AUTO :Popravljen teret STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupni teret @@ -3823,7 +3911,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Idi do najbliž STR_ORDER_GO_TO_NEAREST_HANGAR :Idi do najbližeg hangara STR_ORDER_CONDITIONAL :Uvjetovani skok na naredbu STR_ORDER_SHARE :Dijeli naredbe -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Umetni novu naredbu prije označene naredbe, ili dodaj na kraj liste. Ctrl određuje naredbe stanice 'napuni do kraja bilo koji teret', naredbe prolaznih točki 'non-stop', a naredbe depoa 'servisiraj'. 'Dijeli naredbe' ili Ctrl dozvoljava da ovo vozilo dijeli naredbe sa odabranim vozilom. Klik na vozilo kopira naredbe tog vozila. Naredba depoa isključuje automatsko servisiranje vozila. +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Umetni novu naredbu prije označene naredbe, ili dodaj na kraj liste. Ctrl određuje naredbe postaje 'napuni do kraja bilo koji teret', naredbe prolaznih točki 'non-stop', a naredbe spremišta 'servisiraj'. 'Dijeli naredbe' ili Ctrl dopušta da ovo vozilo dijeli naredbe s odabranim vozilom. Klik na vozilo kopira naredbe tog vozila. Naredba spremišta isključuje automatsko servisiranje vozila. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Pokaži sva vozila koja dijele ovaj raspored. @@ -3867,8 +3955,8 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Čekaj bilo ko STR_ORDER_NO_UNLOAD_NO_LOAD :(Bez iskrcaja i bez ukrcaja) STR_ORDER_AUTO_REFIT :(Auto-remont u {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Puni teret sa auto-remontom u {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Bilo koji puni teret sa auto-remontom u {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Preuzimanje punog tereta sa auto-remontom u {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Preuzimanje bilo kojeg punog tereta sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_REFIT :(Iskrcaj i preuzimanje tereta sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Iskrcaj i čekanje punog tereta sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Iskrcaj i čekanje bilo kojeg punog tereta sa auto-remontom u {STRING}) @@ -3903,13 +3991,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Vozni re STR_TIMETABLE_NO_TRAVEL :Nema putovanja STR_TIMETABLE_NOT_TIMETABLEABLE :Putovanje (automatsko; prema rasporedu sljedeće ručno određene naredbe) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Putovanje (izvan voznog reda) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Putuj uz najviše {2:VELOCITY} (not timetabled) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Putovanje (nije mjereno) uz najviše {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Putovanje za {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Putuj prema {STRING} uz najviše {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Putovanje (za {STRING}, nije mjereno) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Putovanje (za {STRING}, nije mjereno) sa najviše {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stajanje za {STRING}, nije mjereno) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(putovanje za {STRING}, nije mjereno) STR_TIMETABLE_STAY_FOR :i boravak za {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :i putovanje za {STRING} -STR_TIMETABLE_DAYS :{COMMA} dan{P "" a a} -STR_TIMETABLE_TICKS :{COMMA} otkucaj{P "" a a} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dan{P "" a a} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}otkucaj{P "" a a} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ovaj vozni red trebat će {STRING} za završetak STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ovaj vozni red trebat će najmanje {STRING} za završetak (nije sve raspoređeno) @@ -4035,6 +4127,8 @@ STR_AI_SETTINGS_START_DELAY :Broj dana za st STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "pročitaj me" datoteka od {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} zapis izmjena od {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licenca od {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Posloži tekst +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Posloži tekst u prozorima tako da cijeli stane bez potrebe za skrolanjem STR_TEXTFILE_VIEW_README :{BLACK}Pogledaj "pročitaj me" datoteku STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Zapis izmjena STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenca @@ -4129,7 +4223,7 @@ STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... dose STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... dosegnut limit sađenja drveća STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Ime mora biti jedinstveno STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} na putu -STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nije dozvoljeno za vrijeme pauze +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nije dopušteno za vrijeme pauze # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} lokalna samouprava odbija to dopustiti @@ -4145,6 +4239,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Iskopava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Već je na razini mora STR_ERROR_TOO_HIGH :{WHITE}Previsoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... već je sravnjeno +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Nakon toga, most iznad toga bi bio previsok. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ime tvrtke nije moguće promijeniti... @@ -4171,7 +4266,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... preb STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... preblizu drugome gradu STR_ERROR_TOO_MANY_TOWNS :{WHITE}... previše gradova STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nema više mjesta na karti -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Grad neće graditi ceste. Možete uključiti gradnju cesta putem Naprednih postavki -> Ekonomija -> Gradovi +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Grad neće graditi ceste. Možete uključiti gradnju cesta putem Postavki->Okolina->Gradovi STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Cestovni radovi u tijeku STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nije moguće izbrisati ovaj grad...{}Postaja ili spremište se pozivaju na grad ili polja u vlasništvu grada nije moguće ukloniti STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nema odgovarajućeg mjesta za kip u središtu ovog grada @@ -4195,6 +4290,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... šum STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... moguće graditi samo iznad razine snijega STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... moguće graditi samo ispod razine snijega +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nije bilo odgovarajućih mjesta za '{STRING}' industrije +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Izmijenite parametre za generaciju mape kako bi dobili bolju mapu + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ovdje nije moguće izgraditi željezničku postaju... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nije moguće izgraditi autobusnu postaju... @@ -4216,8 +4314,8 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Preblizu STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nije moguće preimenovati postaju... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ovo je gradska cesta STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... cesta je orijentirana u krivom smjeru -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... prolazne stanice ne mogu imati zavoje -STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prolazne stanice ne mogu imati raskrižja +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... prolazne postaje ne mogu imati zavoje +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prolazne postaje ne mogu imati raskrižja # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nije moguće ukloniti dio postaje... @@ -4226,8 +4324,8 @@ STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nije mog STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nije moguće ukloniti kamionsku postaju... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nije moguće ukloniti putničku tramvajsku postaju... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nije moguće ukloniti teretnu tramvajsku postaju... -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Najprije je potrebno ukloniti cestovnu stanicu -STR_ERROR_THERE_IS_NO_STATION :{WHITE}...ovdje nema stanice +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Najprije je potrebno ukloniti cestovnu postaju +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ovdje nema postaje STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Najprije je potrebno srušiti željezničku postaju STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Najprije je potrebno srušiti autobusnu postaju @@ -4248,7 +4346,7 @@ STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nije mog STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nije moguće ukloniti željezničko čvorište odavde... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Najprije je potrebno ukloniti željezničko čvorište STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... plutača na putu -STR_ERROR_BUOY_IS_IN_USE :{WHITE}... plutača je u uporabi od strane druge kompanije! +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... plutača je u uporabi od strane druge tvrtke! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Ovdje nije moguće izgraditi spremište vlakova... @@ -4256,7 +4354,7 @@ STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Ovdje ni STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Ovdje nije moguće izgraditi spremište brodova... -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nije moguće preimenovati depo... +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nije moguće preimenovati spremište... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti zaustavljen unutar spremišta STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti zaustavljen unutar spremišta cestovnih vozila @@ -4331,6 +4429,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Najprije STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Početak i kraj ne mogu biti na istom mjestu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Glave mosta nisu na istoj razini STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizak za teren +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Most je previsok za ovaj teren. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u ravnini STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba kraja mosta moraju biti na zemlji STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... predugačak most @@ -4357,6 +4456,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... već STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nije moguće kreirati grupu... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nije moguće obrisati ovu grupu... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nije moguće preimenovati ovu grupu... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Ne može se postaviti matična grupa... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nije moguće ukloniti sva vozila iz ove grupe... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nije moguće dodati vozila u ovu grupu STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nije moguće dodati dijeljena vozila u grupu... @@ -4447,7 +4547,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... avio # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nije moguće zadati vozni red za vozilo... -STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila mogu čekati samo na stanicama. +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila mogu čekati samo na postajama. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ovo vozilo se ne zaustavlja na ovoj postaji. # Sign related errors @@ -4628,7 +4728,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parni) @@ -4837,7 +4937,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Putnički traje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Putnički trajekt Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Teretni brod Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Teretni brod Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Teretni brod Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Teretni brod MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Teretni brod Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4896,12 +4996,12 @@ STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Čvorište {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Čvorište {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Depo za vlakove -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Depo za vlakove #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Depo za cestovna vozila -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Depo za cestovna vozila #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Depo za brodove -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Depo za brodove #{COMMA} +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Spremište vlakova +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Spremište vlakova #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Spremište cestovnih vozila +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Spremište cestovnih vozila #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Spremšte za brodove +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Spremište brodova #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :nepoznata postaja @@ -4931,6 +5031,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (sakriveno) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4966,8 +5067,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4978,9 +5077,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 42dca00d65..b3e361057c 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -34,10 +34,15 @@ STR_CARGO_PLURAL_PASSENGERS.gen :Cestujících STR_CARGO_PLURAL_PASSENGERS.big :Cestující STR_CARGO_PLURAL_COAL :Uhlí STR_CARGO_PLURAL_COAL.big :Uhlí -STR_CARGO_PLURAL_MAIL :Pošta -STR_CARGO_PLURAL_MAIL.gen :Pošty -STR_CARGO_PLURAL_MAIL.acc :Poštu +STR_CARGO_PLURAL_MAIL :{G=f}Pošta +STR_CARGO_PLURAL_MAIL.nom :{G=f}pošta +STR_CARGO_PLURAL_MAIL.gen :{G=f}pošty +STR_CARGO_PLURAL_MAIL.dat :{G=f}poštu +STR_CARGO_PLURAL_MAIL.acc :{G=f}poštu +STR_CARGO_PLURAL_MAIL.loc :{G=f}poště +STR_CARGO_PLURAL_MAIL.ins :{G=f}poštou STR_CARGO_PLURAL_MAIL.big :Pošta +STR_CARGO_PLURAL_MAIL.small :{G=f}pošta STR_CARGO_PLURAL_OIL :Ropa STR_CARGO_PLURAL_OIL.gen :Ropy STR_CARGO_PLURAL_OIL.acc :Ropu @@ -165,30 +170,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :limonád # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} cestující{P "" "" ch} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}cestující{P "" "" ch} STR_QUANTITY_COAL :{WEIGHT_LONG} uhlí -STR_QUANTITY_MAIL :{COMMA} balík{P "" y ů} pošty +STR_QUANTITY_MAIL :{COMMA}{NBSP}balík{P "" y ů} pošty STR_QUANTITY_OIL :{VOLUME_LONG} ropy -STR_QUANTITY_LIVESTOCK :{COMMA} kus{P "" y ů} dobytka -STR_QUANTITY_GOODS :{COMMA} krabic{P e e ""} zboží +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}kus{P "" y ů} dobytka +STR_QUANTITY_GOODS :{COMMA}{NBSP}krabic{P e e ""} zboží STR_QUANTITY_GRAIN :{WEIGHT_LONG} zrní STR_QUANTITY_WOOD :{WEIGHT_LONG} dřeva STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} železné rudy STR_QUANTITY_STEEL :{WEIGHT_LONG} oceli -STR_QUANTITY_VALUABLES :{COMMA} balík{P "" y ů} cenin +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}balík{P "" y ů} cenin STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} měděné rudy STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukuřice STR_QUANTITY_FRUIT :{WEIGHT_LONG} ovoce -STR_QUANTITY_DIAMONDS :{COMMA} pyt{P el le lů} diamantů +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}pyt{P el le lů} diamantů STR_QUANTITY_FOOD :{WEIGHT_LONG} jídla STR_QUANTITY_PAPER :{WEIGHT_LONG} papíru -STR_QUANTITY_GOLD :{COMMA} balík{P "" y ů} zlata +STR_QUANTITY_GOLD :{COMMA}{NBSP}balík{P "" y ů} zlata STR_QUANTITY_WATER :{VOLUME_LONG} vody STR_QUANTITY_WHEAT :{WEIGHT_LONG} pšenice STR_QUANTITY_RUBBER :{VOLUME_LONG} kaučuku STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukru -STR_QUANTITY_TOYS :{COMMA} hrač{P ka ky ek} -STR_QUANTITY_SWEETS :{COMMA} pyt{P el le lů} bonbonů +STR_QUANTITY_TOYS :{COMMA}{NBSP}hrač{P ka ky ek} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}pyt{P el le lů} bonbonů STR_QUANTITY_COLA :{VOLUME_LONG} koly STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} cukrové vaty STR_QUANTITY_BUBBLES :{COMMA} bublin{P a y ""} @@ -210,7 +215,7 @@ STR_ABBREV_GRAIN :{TINY_FONT}ZR STR_ABBREV_WOOD :{TINY_FONT}DŘ STR_ABBREV_IRON_ORE :{TINY_FONT}ŽR STR_ABBREV_STEEL :{TINY_FONT}OC -STR_ABBREV_VALUABLES :{TINY_FONT}CE +STR_ABBREV_VALUABLES :{TINY_FONT}CN STR_ABBREV_COPPER_ORE :{TINY_FONT}MR STR_ABBREV_MAIZE :{TINY_FONT}KU STR_ABBREV_FRUIT :{TINY_FONT}OV @@ -235,12 +240,12 @@ STR_ABBREV_NONE :{TINY_FONT}NIC STR_ABBREV_ALL :{TINY_FONT}VŠE # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} cestující{P "" "" ch} -STR_BAGS :{COMMA} balík{P "" y ů} -STR_TONS :{COMMA} tun{P a y ""} -STR_LITERS :{COMMA} litr{P "" y ů} -STR_ITEMS :{COMMA} kus{P "" y ů} -STR_CRATES :{COMMA} krabic{P e e ""} +STR_PASSENGERS :{COMMA}{NBSP}cestující{P "" "" ch} +STR_BAGS :{COMMA}{NBSP}balík{P "" y ů} +STR_TONS :{COMMA}{NBSP}tun{P a y ""} +STR_LITERS :{COMMA}{NBSP}litr{P "" y ů} +STR_ITEMS :{COMMA}{NBSP}kus{P "" y ů} +STR_CRATES :{COMMA}{NBSP}krabic{P e e ""} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tmavomodrá @@ -261,37 +266,37 @@ STR_COLOUR_GREY :Šedá STR_COLOUR_WHITE :Bílá # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mil/h -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}m{P íle íle il}/h +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA} hp -STR_UNITS_POWER_METRIC :{COMMA} hp -STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tun{P a y ""} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tun{P a y ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tun{P a y ""} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tun{P a y ""} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l -STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" "y" "ů"} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ů} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" "y" "ů"} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr{P "" y ů} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} stop{P a y ""} -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}stop{P a y ""} +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtrovat řetězec: @@ -318,6 +323,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvní STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvník - posouvá výpisem doleva nebo doprava STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolice budov, atd. na čtverečku. Ctrl vybírá diagonální oblast. Shift zobrazí odhad ceny +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Zobrazit skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Zobrazit skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Zobrazit skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Zobrazit skryté + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Zapnutím tohoto přepínače se budou zobrazovat i skryté lokomotivy a vagóny +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Zapnutím tohoto přepínače se budou zobrazovat i skrytá silniční vozidla +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Zapnutím tohoto přepínače se budou zobrazovat i skryté lodě +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zapnutím tohoto přepínače se budou zobrazovat i skrytá letadla + # Query window STR_BUTTON_DEFAULT :{BLACK}Původní STR_BUTTON_CANCEL :{BLACK}Zrušit @@ -352,7 +368,7 @@ STR_SORT_BY_MAX_SPEED :max. rychlosti STR_SORT_BY_MODEL :modelu STR_SORT_BY_VALUE :hodnoty STR_SORT_BY_LENGTH :délky -STR_SORT_BY_LIFE_TIME :Zbývající životnost +STR_SORT_BY_LIFE_TIME :zbývající životnosti STR_SORT_BY_TIMETABLE_DELAY :zpoždění STR_SORT_BY_FACILITY :druhu stanice STR_SORT_BY_WAITING_TOTAL :Celkového čekajícího nákladu @@ -431,7 +447,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Ukončit ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti hry -STR_SETTINGS_MENU_CONFIG_SETTINGS :Pokročilé nastavení +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Nastavení STR_SETTINGS_MENU_SCRIPT_SETTINGS :Nastavení AI / hry STR_SETTINGS_MENU_NEWGRF_SETTINGS :Nastavení grafik STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavení průhlednosti @@ -540,7 +556,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Přepnout ohran STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Přepnout zbarvení špinavých bloků ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -556,22 +572,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -892,13 +926,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeká v depu STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeká v hangáru -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} má příliš málo příkazů STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nemá žádné příkazy STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} má zdvojené příkazy STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} má v příkazech neplatnou stanici -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} má v příkazech letiště, jehož dráha je příliš krátká STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zastarává STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} silně zastarává @@ -981,10 +1014,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgijské Lar STR_GAME_OPTIONS_CURRENCY_IRR :Íránský Riál (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Silniční vozidla jezdí STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Výběr strany, na které jezdí silnični vozidla STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vlevo @@ -1020,11 +1049,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalánská STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukládání STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Volba intervalu mezi automatickým ukládáním hry +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Vypnuto STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Každý měsíc STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Každé 3 měsíce STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Každých 6 měsíců STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Každých 12 měsíců +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jazyk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Zvolit jazyk uživatelského rozhraní @@ -1036,8 +1067,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozliše STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Zvolit rozlišení obrazovky STR_GAME_OPTIONS_RESOLUTION_OTHER :jiné -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formát screenshotů -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Zvolit formát screenshotů +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost rozhraní +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolil velikost prvků uživatelského rozhraní + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normální +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základní sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky @@ -1053,6 +1088,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vyberte STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškozen{P ý é é} soubor{P "" y y} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základním hudebním setu +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepodařilo se získat seznam podporovaných rozlišení STR_ERROR_FULLSCREEN_FAILED :{WHITE}Selhalo přepnutí na celou obrazovku # Custom currency window @@ -1131,6 +1167,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :velmi plochá STR_TERRAIN_TYPE_FLAT :plochá STR_TERRAIN_TYPE_HILLY :kopcovitá STR_TERRAIN_TYPE_MOUNTAINOUS :hornatá +STR_TERRAIN_TYPE_ALPINIST :Alpské STR_CITY_APPROVAL_PERMISSIVE :nezaujatý STR_CITY_APPROVAL_TOLERANT :tolerantní @@ -1138,8 +1175,8 @@ STR_CITY_APPROVAL_HOSTILE :zaujatý STR_WARNING_NO_SUITABLE_AI :{WHITE}Žádná vhodná AI není k dispozici...{}Některé AI lze stáhnout pomocí služby "Stahovat součásti" -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Pokročilé nastavení +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Nastavení STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrovat podle: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Rozbalit vše STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sbalit vše @@ -1152,21 +1189,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavení hry STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Zobrazit: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Zobrazovat v seznamu níže pouze změněná nastavení -STR_CONFIG_SETTING_RESTRICT_BASIC :Základní nastavení -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé nastavení -STR_CONFIG_SETTING_RESTRICT_ALL :Expertní nastavení / všechna nastavení +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Druh: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Omezit nastavení v seznamu níže pomocí předdefinovaných filtrů +STR_CONFIG_SETTING_RESTRICT_BASIC :Základní (zobrazí pouze důležitá nastavení) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé (zobrazí většinu nastavení) +STR_CONFIG_SETTING_RESTRICT_ALL :Expertní (zobrazí všechna nastavení, včetně těch podivných) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavení s jinou než defaultní hodnotou STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavení s jinou hodnotou než tvé nastavení nových her STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omezí určitá nastavení v seznamu níže -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechna nastavení -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (není uchováno v uložených hrách; ovlivní všechny hry) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechny typy nastavení +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (neuchována v uložených hrách; ovlivní všechny hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavení hry (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}kategorie {BLACK}na {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}typu {BLACK}na {WHITE}Všechny typy nastavení +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}kategorie {BLACK}na {WHITE}{STRING} {BLACK}a {SILVER}typu {BLACK}na {WHITE}Všechny typy nastavení +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nic - STR_CONFIG_SETTING_OFF :Vypnuto STR_CONFIG_SETTING_ON :Zapnuto @@ -1207,9 +1249,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Katastrofy, kte STR_CONFIG_SETTING_CITY_APPROVAL :Postoj městské rady k úpravám v oblasti: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vyber jak moc hluku a změn prostředí poškozuje hodnocení společnosti u města a tak dále komplikuje budoucí stavbu na jeho území -STR_CONFIG_SETTING_BUILDONSLOPES :Povolit výstavbu na svazích kopců a na pobřežích: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Pokud je zapnuto, tratě a stanice mohou být postaveny na většině svahů. Pokud ne, mohou být postaveny pouze na svazích stejného směru tak, že nevyžadují žádné základy. -STR_CONFIG_SETTING_AUTOSLOPE :Srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximální výška mapy: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Nastavit maximální povolenou výšku hor na mapě +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nemůžete změnit maximální výšku mapy na tuto hodnotu. Alespoň jedna hora na mapě je vyšší. +STR_CONFIG_SETTING_AUTOSLOPE :Povolit srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Povoluje změnu terénu pod budovami a tratěmi bez jejich odstranění STR_CONFIG_SETTING_CATCHMENT :Povolit u oblasti pokrytí realističtější velikost: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Rozdílná velikost oblasti pokrytí u různých stanic a letišť @@ -1217,8 +1260,8 @@ STR_CONFIG_SETTING_EXTRADYNAMITE :Povolit bourán STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Usnadňuje odstranění městských staveb a silnic STR_CONFIG_SETTING_TRAIN_LENGTH :Maximální délka vlaků: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Určuje maximální délku vlaků -STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} pole{P e e í} -STR_CONFIG_SETTING_SMOKE_AMOUNT :množství kouře/jisker u stroje: {STRING} +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} pol{P e e í} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Množství kouře/jisker u vozidel: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Množštví kouře či jisker emitovaných vozidly STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model akcelerace vlaků: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Zvolit fyzikální model pro zrychlení vlaků. "Originální" model zpomaluje všechny vozidla na svahu stejně. Realistický model zpomaluje na svazích a v zatáčkách podle různých parametrů, například délky a tažné síly. @@ -1233,16 +1276,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Zakázat vlaků STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90° zatočení nastane ve chvíli, kdy vodorovná kolej přímo navazuje na svislou kolej na vedlejším políčku. Vlak tak zatáčí o 90° místo klasických 45° u jiných kombinací kolejí. Ovlivní i zatáčení lodí. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Umožnit spojení nesousedících stanic: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povolit přidávání částí stanice, které se nedotýkají již existujících částí. Je potřeba stisknout Ctrl při přidávání nových částí. -STR_CONFIG_SETTING_IMPROVEDLOAD :Použít vylepšený algoritmus nakládání: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Pokud je zapnuto, vozidla čekající ve stanici jsou nakládána postupně. Nakládání druhého vozidla začne pouze pokud ve stanici čeká dostatek nákladu k plnému naložení prvního vozidla. -STR_CONFIG_SETTING_GRADUAL_LOADING :Nakládat vozidla postupně: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupně nakládat vozidla po danou dobu, místo nakládání všeho najednou za pevný čas stanovený množstvím nákladu STR_CONFIG_SETTING_INFLATION :Inflace: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Povolit inflaci. Ceny se časem zvyšují mírně rychleji než platby. -STR_CONFIG_SETTING_SELECTGOODS :Dodávat zboží do stanice jen když je poptávka: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Stanice přijme náklad pouze pokud je vyžadován nakládajícím vozidlem. Zamezí se tak špatnému hodnocení u nákladů, které nejsou ze stanice vůbec odváženy STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximální délka mostu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Určuje maximální délku mostů +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximální výška mostu: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximální výška pro stavění mostů STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximální délka tunelu: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Určuje maximální délku tunelů STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Způsob manuálního budování primárního průmyslu: {STRING} @@ -1268,8 +1307,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Místo kde vlak STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :na začátku STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :uprostřed STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :na konci -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Silniční vozidla stojí fronty (s kvantovým efektem): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Vozidlo bude stát před zastávkou dokud se neuvolní STR_CONFIG_SETTING_AUTOSCROLL :Posouvat okno, když je kurzor na okraji: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Pokud je zapnuto, pohledy se začnou posouvat pokud bude kurzor v blízkosti okraje okna STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Vypnuto @@ -1300,10 +1337,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stavba průjezd STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Povoluje stavbu průjezdných stanic na městem vlastněných silnicích STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Stavba průjezdných zastávek na silnicích vlastněných konkurencí: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Povolit stavění průjezných stanic na silnicích vlastněných jinými společnostmi. -STR_CONFIG_SETTING_ADJACENT_STATIONS :Povolit stavění přilehlých stanic: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Povoluje stavbu stanic dotýkajících se jiných -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Více grafických setů s vozidly vedle sebe: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Možnost kompatibility pro starší grafiky. Nevypínej, pokud nevíš co přesně děláš! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Toto nastavení nemůže být změněno, když jsou ve hře již nějaká vozidla STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Udržování infrastruktury: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Pokud je zapnuto, je třeba platit za údržbu infrastruktury. Náklady vzrůstají společně s velikostí dopravní sítě, takže velké společnosti platí více než malé. @@ -1324,7 +1357,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozidlům se ni STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pokud je zapnuto, všechny modely vlaků zůstanou po uvedení dostupné napořád. (nezastarají) STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automaticky nahradit dopravní prostředek, když zestárne: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Pokud je zapnuto, vozidla na konci své plánované životnosti budou automaticky nahrazena, když jsou splněny podmínky pro automatické obnovení. -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaticky nahradit vozidlo {STRING} před/po dosažení životnosti +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaticky nahradit vozidlo při dosažení {STRING} životnosti STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativní věk kdy by měli být vozidlo automaticky vyměněno za nové STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} měsíc{P "" e ů} před STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} měsíc{P "" e ů} po @@ -1334,35 +1367,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Doba zobrazení STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Doba zobrazení chybových zpráv v červeném okně. Některé zprávy o (kritických) chybách však nejsou zavírány automaticky a musí být zavřeny ručně. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund STR_CONFIG_SETTING_HOVER_DELAY :Zobrazení kontextové nápovědy: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Prodleva před zobrazením nápovědy, pokud se kurzor vznáší nad nějakým ovládacím prvkem. Nápověda může být rovněž vyvolána pravým tlačítkem myši. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Podržet kurzor nad {COMMA} sekund +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Prodleva před zobrazením nápovědy, pokud kurzor leží nad nějakým ovládacím prvkem. Nápověda může být rovněž vyvolána pravým tlačítkem myši. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Podržet kurzor po dobu {COMMA} sekund{P y "" ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Pravým klikem STR_CONFIG_SETTING_POPULATION_IN_LABEL :Zobrazovat populaci města v jeho popisku: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zobrazovat městskou populaci u názvu města na mapě STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tloušťky čar v grafech: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Tloušťka čáry v grafech. Tenká čára se čte přesněji, silnější je lépe viditelná a barva je snadněji rozpoznatelná. +STR_CONFIG_SETTING_LANDSCAPE :Klima: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Klima určuje základy herního scénáře s rozdílnými druhy nákladu a požadavky na růst měst. Nové GRaFiky a Herní Skripty umožní ještě jemnější kontrolu STR_CONFIG_SETTING_LAND_GENERATOR :Tvůrce krajiny: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originální generátor závisí na originálním setu grafik a tvoří mapy pevně daného tvaru. TerraGenesis je založen na generátoru Perlinova šumu s lepšími možnostmi nastavení STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :původní STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Druh terénu: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(pouze TerraGenesis) Hornatost terénu +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Množství průmyslu: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Nastavuje množství průmyslu, které bude nyní vytvořeno a udržováno v průběhu hry STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximální vzdálenost rafinerie od okraje mapy: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ropné rafinerie jsou stavěny pouze blízko okrajům mapy. Pokud je mapa ostrov, pak je to pobřeží. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Výška sněhové čáry: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitost krajiny (jen TerraGenesis): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Určuje o jaké výšky se vyskytuje sníh u subarktického klimatu. Sníh rovněž ovlivňuje vytváření průmyslu a požadavky na růst měst +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitost krajiny: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Pouze TerraGenesis) Zvol množství hor: Rovinatý terén má méně hor, které jsou však rozlehlejší. Členitý terén má mnoho hor, u kterých se může zdát, že se upakují STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :velmi rovná STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :rovná STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :členitá STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :velmi členitá +STR_CONFIG_SETTING_VARIETY :Rozmanitost umisťování: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Pouze TerraGenesis) Určuje, zda krajina bude obsahovat zároveň hory i roviny. Vzhledem k tomu, že toto dělá mapu rovinatější, ostatní nastavení by měla být nastavena na hornatá +STR_CONFIG_SETTING_RIVER_AMOUNT :Množství řek: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Zvol množství řek k vytvoření STR_CONFIG_SETTING_TREE_PLACER :Algoritmus sázení stromového porostu: {STRING} -STR_CONFIG_SETTING_TREE_PLACER_NONE :žádné +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Zvol způsob rozmisťování stromů ve světe: "Originální" sází stromy rovnoměrně, "Vylepšené" sází stromy ve skupinách +STR_CONFIG_SETTING_TREE_PLACER_NONE :žádný STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :původní -STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :vylepšené +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :vylepšený +STR_CONFIG_SETTING_ROAD_SIDE :Silniční vozidla: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Zvol na jaké straně vozovky jezdí vozidla STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Otočení výškové mapy: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Doleva STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Doprava STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Výšková úroveň pro plochou krajinu: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Umožnit terénní úpravy na okrajích mapy: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Pokud je deaktivován, okraje mapy budou vždy tvořeny oceánem STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Alespoň jeden dílek na severním okraji není prázdný STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Alespoň jeden dílek na jednom z okrajů není zaplaven @@ -1413,17 +1460,15 @@ 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_AUTOSAVE :Automaticky ukládat: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Zvol frekvenci automatického ukládání + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Pro jméno uložené hry použít {STRING} formát STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formát data v názvu uložené hry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dlouhý (31. pro 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krátký (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Předpokládaná základní paleta pro NewGRF nespecifikuje paletu: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pro nové grafiky, které nemají definovanou potřebnou paletu, použít paletu defaultní. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :paleta DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :paleta Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Zastavit automaticky hru při začínání nové hry: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Pokud je zapnuto, hra se na začátku nové hry automaticky pozastaví a umožní tak bližší prozkoumání mapy STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :V pozastavené hře povolit: {STRING} @@ -1432,7 +1477,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Žádné akce STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Všechny akce kromě stavebních STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Všechny akce kromě úprav terénu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Všechny akce -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Používat pokročilý seznam vozidel: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Používat seznam vozidel se skupinami: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Umožňuje použití vylepšeného seznamu vozidel ve skupinách STR_CONFIG_SETTING_LOADING_INDICATORS :Používat ukazatele naložení: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vyber jestli budou zobrazovány ukazatele naložení nad nakládajícími a vykládajícími vozidly. @@ -1473,7 +1518,7 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Přehrávat zvu STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zakázat zastávky, když nejsou dostupná příslušná vozidla: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Pokud je zapnuto, infrastruktura je dostupná pouze pokud jsou k dispozici vozidla, která ji mohou používat. Zamezí ztrátě času a peněz za budovaní nevyužitelné infrastruktury -STR_CONFIG_SETTING_MAX_TRAINS :Maximum vlaků na hráče: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum vlaků na společnost: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximální počet vlaků, které může společnost vlastnit STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum silničních vozidel na společnost: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximální počet vozidel, které může společnost vlastnit @@ -1506,7 +1551,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaly servi STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vyber, jestli potřebu návštěvy servisu určuje čas od poslední návštěvy nebo určitý pokles % spolehlivosti od jejího maxima. STR_CONFIG_SETTING_SERVINT_TRAINS :Základní servisní interval pro vlaky: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Nastaví defaultní servisní interval pro vlaky. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dní/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dní/% STR_CONFIG_SETTING_SERVINT_DISABLED :Vypnuto STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Základní servisní interval pro silniční vozidla: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Nastaví defaultní servisní interval pro silniční vozidla pokud vozidlo nemá nastaveno jiný servisní interval @@ -1515,11 +1560,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastaví defaul STR_CONFIG_SETTING_SERVINT_SHIPS :Základní servisní interval pro lodě: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastaví defaultní servisní interval pro lodě pokud loď nemá nastaven jiný servisní interval STR_CONFIG_SETTING_NOSERVICE :Vypnout servisy, když jsou vypnuty poruchy: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Pokud je zapnuto, vozidla nejezdí do servisu pokud se nemohou porouchat, tedy pokud jsou vypnuty poruchy +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Pokud je zapnuto a zároveň jsou vypnuty poruchy, vozidla nebudou vůbec jezdit do servisu, protože se nemohou nikdy porouchat STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Zapnout omezení rychlosti vagonů: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Pokud zapnuto, použije rychlostní omezení vagónů při stanovení maximální rychlosti vlaku STR_CONFIG_SETTING_DISABLE_ELRAILS :Vypnout elektrickou železnici: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Zapnutím této možnosti odstraní potřebu elektrifikované trati pro elektrické lokomotivy +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Zapnutí této možnosti odstraní potřebu elektrifikované trati pro elektrické lokomotivy STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Příjezd prvního vozidla do hráčovy stanice: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Zobrazovat noviny pokud první vozidlo dorazí do stanice této společnosti @@ -1573,7 +1618,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Zvol chování STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Semafory automaticky stavět do roku: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Nastav rok, ve kterém budou používány elektrické semafory. Před tímto rokem jsou používány mechanické, které fungují stejně ale mají jiný vzhled STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Okno pro stavbu návěstidel: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Zobrazovat okno pro vybrání typu semaforů místo "bezokeního" měnění pomocí ctrl+kliku při jejich stavbě. +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Zobrazovat okno pro vybrání typu semaforů místo "bezokeního" měnění pomocí ctrl+klikání na existující semafor STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Výchozí typ návěstidla: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Výchozí typ semaforu k použití STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :obyčejné @@ -1597,7 +1642,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí městů STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Města mohou stavět přejezdy: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Povolení tohoto nastavení umožní městům, budovat železniční přejezdy STR_CONFIG_SETTING_NOISE_LEVEL :Umožnit městům ovlivňovat hlukový limit pro letiště: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Pokud je vypnuto, ve každém městě mohou být dvě letiště. Pokud je zapnuto, počet letišť bude omezen hlukovými limity města, což závisí na jeho populaci, velikosti letiště a jeho vzdálenosti od centra města +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Pokud je vypnuto, ve každém městě mohou být dvě letiště. Pokud je zapnuto, počet letišť ve městě bude omezen hlukovými limity města, což závisí na jeho populaci, velikosti letiště a jeho vzdálenosti od centra města STR_CONFIG_SETTING_TOWN_FOUNDING :Zakládání měst během hry: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Povoluje hráčům zakládat nové města během hry STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zakázáno @@ -1645,22 +1690,20 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Žádné STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Činitel základní velikosti města: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Průměrná velikost větších měst v porovnání s ostatními městy na začátku hry -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Odstraňovat nesmyslné prvky vozovky při výstavbě silnic: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Odstraní mrtvé konce silnice při rekonstrukci silnic -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizovat distribuční graf každých {STRING} {P den dny dnů} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizovat distribuční graf po {STRING}{P 0:2 dni dnech dnech} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Čas mezi přepočítáváním částí grafu spojení. Každý přepočet přepočítává plány jedné části grafu. To znamená, že hodnota X u toho nastavení nezpůsobí, že se každých X dní přepočítá celý graf, ale pouze určité části. Čím kratší interval nastavíš, tím více času CPU bude potřeba ke spočítání. Čím delší nastavíš, tím déle bude trvat dokud si distribuce nákladu najde nové trasy. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Zaber si {STRING} {P "den" "dny" "dnů"} na přepočet grafu spojení +STR_CONFIG_SETTING_LINKGRAPH_TIME :Zaber si {STRING}{NBSP}{P 0:2 "den" "dny" "dní"} na přepočet grafu spojení STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Čas vyhrazený pro každý přepočet části grafu spojení. Pokud přepočet začne, je vytvořeno nové vlákno, které má dovoleno běžet po zvolený počet dnů. Čím nižší hodnotu nastavíš tím je pravděpodobnější, že vlákno nebude dokončeno kdy má. Pokud se tak stane, hra se zastaví ("lagne") dokud dokončeno nebude. Čím vyšší hodnotu nastavíš, tím déle bude trvat aktualizace grafu pokud se trasy změní. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuální STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :nerovnoměrný STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :rovnoměrný STR_CONFIG_SETTING_DISTRIBUTION_PAX :Mód distribuce pro cestující: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství cestujících bude chce cestovat ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolné množství cestujících může cestovat v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro cestující. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství cestujících chce cestovat ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolné množství cestujících může cestovat v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro cestující. STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Mód distribuce pro poštu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství pošty bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství pošty může být odesláno v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro poštu. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství pošty bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolné množství pošty může být odesláno v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro poštu. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Mód distribuce pro náklady pancéřových vozů: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky posílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky neposílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Módy distribuce pro ostatní třídy nákladu: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Pravděpodobně chceš nastavit "nerovnoměrná" nebo "manuální"." STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Přesnost distribuce: {STRING} @@ -1669,8 +1712,8 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Vliv vzdálenos STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Pokud nastavíš vyšší hodnotu než 0, vzdálenost mezi zdrojovou stanicí A u určitých druhů nákladu a možnou cílovou stanicí B bude mít efekt na množství odeslaného nákladu z A do B. Čím vzdálenější je B od A, tím méně nákladu bude odesláno. Čím vyšší hodnotu nastavíš tím méně nákladu bude odesláno do vzdálených stanic a více bude odesláno do blízkých stanic. STR_CONFIG_SETTING_DEMAND_SIZE :Množství vracejícího se nákladu pro rovnoměrný mód: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením méně než 100% zapříčiní, že se bude rovnoměrná distribuce chovat více nerovnoměrně. Méně nákladu bude odesláno zpět, pokud je určité množství odesláno do stanice. Pokud nastavíš 0%, bude se rovnoměrná distribuce chovat jako nerovnoměrná. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vytížení kratších cest před využitím kapacitnějších: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vzhledem k tomu, že je často mezi dvěmi stanicemi více cest, Cargodist jako první vytíží tu nejkratší a dále využije druhou nejkratší dokud také není vytížená a tak dále. Pokud jsou všechny trasy zatížené ale stále nestačí provozu, přetíží všechny trasy s preferencí té nejkapacitnější. Bohužel, většinou však algoritmus neodhaduje kapacitu přesně. Toto nastavení dovolí zvolit na kolik procent musí být nejkratší cesta zaplněna, než dojde k vytížení té delší. Nastav na méně než 100% pro zabránění přeplnění stanic v případně nadhodnocené kapacity. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vytížení kratších tras před využitím kapacitnějších tras: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vzhledem k tomu, že je často mezi dvěma stanicemi více tras, Distribuce nákladu jako první vytíží tu nejkratší a dále využije druhou nejkratší dokud také není vytížená a tak dále. Pokud jsou všechny trasy zatížené, ale stále nestačí provozu, přetíží všechny trasy s preferencí té nejkapacitnější. Bohužel, většinou však algoritmus neodhaduje kapacitu přesně. Toto nastavení dovolí zvolit na kolik procent musí být nejkratší cesta zaplněna, než dojde k vytížení té delší. Nastav na méně než 100% pro zabránění přeplnění stanic v případně nadhodnocené kapacity. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rychlosti: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kdykoliv se rychlost zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách @@ -1684,7 +1727,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiální (h STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrické (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jednotky hmotnost: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jednotky hmotnosti: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kdykoliv se hmotnost zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperiální (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrické (t/tuna) @@ -1708,27 +1751,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiální (f STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrické (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Ovládaní STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Překlad -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Výstavba +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvuk +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Ovládaní +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Obecné +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Pohledy +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Výstavba +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novinky / Poradci +STR_CONFIG_SETTING_COMPANY :{ORANGE}Společnost +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Účetnictví STR_CONFIG_SETTING_VEHICLES :{ORANGE}Dopravní prostředky -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stanice -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribuce nákladu +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fyzika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Směrování +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Omezení +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofy / Nehody +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generování krajiny +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Prostředí +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Městská správa +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Města +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Průmysl +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuce nákladu STR_CONFIG_SETTING_AI :{ORANGE}Konkurenti -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Zobrazení -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Chování -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvukové efekty -STR_CONFIG_SETTING_NEWS :{ORANGE}Novinky a zprávy -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Návěstidla -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Náklad STR_CONFIG_SETTING_AI_NPC :{ORANGE}Umělá inteligence -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Obnovování -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servis -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Směrování -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlaky -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Města -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Průmysl STR_CONFIG_SETTING_PATHFINDER_OPF :Původní STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1777,7 +1822,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Více hr STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti hry STR_INTRO_HIGHSCORE :{BLACK}Nejlepší výsledky -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Pokročilé nastavení +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Nastavení STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavení grafik STR_INTRO_ONLINE_CONTENT :{BLACK}Stahovat součásti STR_INTRO_SCRIPT_SETTINGS :{BLACK}Nastavení AI / hry @@ -1797,7 +1842,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Země hr STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Zobrazit možnosti hry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zobrazit tabulku nejlepších výsledků -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Zobrazit pokročilé nastavení +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Nastavení zobrazení STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Ukázat nastavení NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Ukázat, jaký nový nebo upravený obsah se dá stáhnout STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobrazit nastavení AI a hry @@ -1837,6 +1882,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát j STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozer (odstraní průmysl a další objekty): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunely se mohou křížit: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na malých letištích havarovat (tak často): {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Upravit maximální výšku mapy: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{BLACK}Upravit maximální výšku hor na mapě STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :krajina mírného pásma STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktická krajina STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropická kraina @@ -1885,6 +1932,7 @@ STR_LIVERY_FREIGHT_TRAM :Nákladní tram STR_FACE_CAPTION :{WHITE}Volba tváře STR_FACE_CANCEL_TOOLTIP :{BLACK}Zrušit volbu nového obličeje STR_FACE_OK_TOOLTIP :{BLACK}Potvrdit výběr obličeje +STR_FACE_RANDOM :{BLACK}Nové číslo STR_FACE_MALE_BUTTON :{BLACK}Mužská STR_FACE_MALE_TOOLTIP :{BLACK}Zvolit mužské obličeje @@ -2124,6 +2172,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Pozorovatelé STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napiš částku, kterou chceš poskytnout +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Pozorovatel # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukládat zadané heslo @@ -2353,7 +2402,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Pokláda STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postavit železniční depo (pro nákup a servis vlaků). Shift zobrazí odhad ceny STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Postavit na trati směrování. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postavit nádraží. Pomocí Ctrl ho připojíš k jinému. Stisknutý Shift pro zobrazení odhadu ceny -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Umístit návěstidla. Pomocí Ctrl vybereš mezi mechanickými a světelnými{}Tažením umístíš návěstidla na rovném úseku tratě a s Ctrl až do dalšího křížení{}Kliknutím na tlačítko s Ctrl otevřeš okno s výběrem návěstidel{}Stisknutý Shift pro zobrazení odhadu ceny +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Umístit návěstidla. Pomocí Ctrl vybereš mezi mechanickými a světelnými{}Tažením umístíš návěstidla na rovném úseku tratě a s přidržením Ctrl až do dalšího křížení{}Kliknutím na tlačítko s Ctrl otevřeš okno s výběrem návěstidel{}Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Postavit železniční most. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Postavit železniční tunel. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Přepnout režim stavba/odstranění pro kolejí, semaforů, směrování a stanic. Při stisku Ctrl odebere také koleje ze směrování a stanic @@ -2634,6 +2683,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Rychlostní omezení silnice: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamení @@ -2730,7 +2780,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-2013 Tým OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Tým OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru @@ -2749,6 +2799,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Uložit STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Uložit současnou hru se zvoleným jménem STR_SAVELOAD_LOAD_BUTTON :{BLACK}Nahrát STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Rozehrát vybranou hru +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Načíst označenou výškovou mapu STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Vlastnosti hry STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Není dostupná žádná informace STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2764,13 +2815,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Množství měst: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Množství průmyslu: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximální výška mapy: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Zvýšit maximální výšku hor na mapě o jeden stupeň +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Snížit maximální výšku hor na mapě o jeden stupeň STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Výška sněžné čáry: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Zvýšit sněžnou čáru o jednu úroveň STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Snížit sněžnou čáru o jednu úroveň -STR_MAPGEN_RANDOM_SEED :{BLACK}Náhodné číslo: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Zde můžeš zadat seed -STR_MAPGEN_RANDOM :{BLACK}Nové číslo -STR_MAPGEN_RANDOM_HELP :{BLACK}Vytvořit nový seed (číslo) pro generátor terénu STR_MAPGEN_LAND_GENERATOR :{BLACK}Generátor krajiny: STR_MAPGEN_TREE_PLACER :{BLACK}Sázení stromů: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ krajiny: @@ -2797,7 +2847,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Jméno v STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velikost: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Zadej náhodné číslo +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Změnit maximální výšku mapy STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Změnit výšku sněžne čáry STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Změnit počáteční rok @@ -2852,6 +2902,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Nahoru STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Posunout označenou grafiku nahoru STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Dolů STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Posunout označenou grafiku dolů +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Aktualizovat +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Aktualizovat soubory nových grafik, u kterých jsi nainstaloval novější verzi. STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Seznam NewGRF souborů, které jsou nainstalovány. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nastavit parametry @@ -2876,6 +2928,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nenalezen STR_NEWGRF_SETTINGS_DISABLED :{RED}Vypnuto STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Není kompatibilní s touto verzí OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Uložit předvolby +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Seznam předvoleb k dispozici, vyber jednu pro zkopírování do uložené hry vybrané níže +STR_SAVE_PRESET_TITLE :{BLACK}Vlož název pro předvolby +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Aktuálně zvolený název pro předvolby +STR_SAVE_PRESET_CANCEL :{BLACK}Zrušit +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Neměnit předvolby +STR_SAVE_PRESET_SAVE :{BLACK}Uložit +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Uloží předvolby do aktuálně zvolené uložené hry + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Úprava nastavení parametrů STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zavřít @@ -2906,7 +2968,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Předcho STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jít na předchozí normální sprite (s grafikou), přičemž se přeskakují pseudo-/barvící/znakové sprity a při dosažení začátku se jde na konec STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Zobrazení vybraného spritu. Posun se při jeho vykreslení neuvažoval STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Posouvání spritu změnou souřadnic X a Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Posun X: {NUM}, posun Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetovat +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetovat aktuání relativní posunutí +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Posunutí v ose X: {NUM}, Posunutí v ose Y: {NUM} (Absolutní) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Posunutí v ose X: {NUM}, Posunutí v ose Y: {NUM} (Relativní) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vybrat sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Klikni na sprite kdekoli na obrazovce @@ -2963,6 +3028,7 @@ STR_NEWGRF_LIST_MISSING :{RED}některé STR_NEWGRF_BROKEN :{WHITE}Chování grafiky '{0:STRING}' by mohlo způsobit desynchronizaci a/nebo pád hry STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Změnil se stav lokomotivy '{1:ENGINE}', když nebyla v depu STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Změnilo délku vozidla '{1:ENGINE}', když nebylo v depu +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Změnila se kapacita vozidla '{1:ENGINE}', i když nebylo v depu nebo nebylo přestavováno STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' patřící '{COMPANY}' nemá platnou délku. Pravděpodobně to způsobila nějaká grafika. Hra se může desynchronizovat nebo spadnout STR_NEWGRF_BUGGY :{WHITE}Grafika '{0:STRING}' poskytuje neplatné informace @@ -2977,6 +3043,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} jednot{ STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Prohledávání grafik STR_NEWGRF_SCAN_MESSAGE :{BLACK}Prohledávám grafiky. Toto může chvíli trvat... @@ -3014,8 +3083,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} doručeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ještě požadováno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (doručeno) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Město se rozrůstá každých {ORANGE}{COMMA}{BLACK} dní -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Město se rozrůstá každý {ORANGE}{COMMA}{BLACK} den (financováno) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Město se rozrůstá co {ORANGE}{COMMA}{BLACK}{NBSP}d{P en ny ní} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Město se rozrůstá každý {ORANGE}{COMMA}.{BLACK}{NBSP}den (financováno) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Město se {RED}nerozrůstá{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hlukový limit ve městě: {ORANGE}{COMMA}{BLACK} max.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na město. Ctrl+Klik otevře nový pohled @@ -3075,7 +3144,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informace STR_GOAL_QUESTION_CAPTION_WARNING :Varování STR_GOAL_QUESTION_CAPTION_ERROR :Chyba -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Zrušit STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne @@ -3094,6 +3163,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restartovat STR_GOAL_QUESTION_BUTTON_POSTPONE :Odložit STR_GOAL_QUESTION_BUTTON_SURRENDER :Vzdát se STR_GOAL_QUESTION_BUTTON_CLOSE :Zavřít +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Dotace @@ -3114,6 +3184,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Předcho STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Jdi na předchozí stranu STR_STORY_BOOK_NEXT_PAGE :{BLACK}Další STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Jdi na další stranu +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Neplatný odkaz na cíl # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Jména stanic - pohled na stanici zaměříš kliknutím na její jméno. Při stisknutém Ctrl otevřeš nový pohled @@ -3128,7 +3199,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nečeká # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čeká tu: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {NBSP}{STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervováno pro naložení) @@ -3223,7 +3293,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Celkem: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Stav na účtu STR_FINANCES_LOAN_TITLE :{WHITE}Půjčka -STR_FINANCES_MAX_LOAN :{WHITE}Max. půjčka: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximální půjčka: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Půjčit {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Půjčit si více @@ -3372,12 +3442,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Nezařazená si STR_GROUP_DEFAULT_SHIPS :Nezařazené lodě STR_GROUP_DEFAULT_AIRCRAFTS :Nezařazená letadla -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupiny - Kliknutím na skupinu se zobrazí seznam vozidel ve skupině +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupiny - Kliknutím na skupinu se zobrazí seznam vozidel ve skupině. Přetáhnutím skupin je uspořádáš. STR_GROUP_CREATE_TOOLTIP :{BLACK}Kliknutím vytvoříš skupinu STR_GROUP_DELETE_TOOLTIP :{BLACK}Vymazat vybranou skupinu STR_GROUP_RENAME_TOOLTIP :{BLACK}Přejmenovat vybranou skupinu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Kliknutím nebude na tuto skupinu mít vliv automatická výměna vozidel +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Smazat Skupinu +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Jste si jist, že chcete smazat tuto skupinu a všechny její podskupiny? + STR_GROUP_ADD_SHARED_VEHICLE :Přidat sdílená vozidla STR_GROUP_REMOVE_ALL_VEHICLES :Odstranit všechna vozidla @@ -3415,10 +3488,10 @@ STR_PURCHASE_INFO_ALL_BUT :Všechny kromě STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. tažná síla: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Dosah: {GOLD}{COMMA} polí -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Seznam vlaků - pro informace klikni na název vlaku -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Seznam silničních vozidel - klikni na vozidlo pro informace -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Seznam lodí - informace získáš kliknutím na jméno lodi -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Seznam letadel - klikni na letadlo pro informace +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. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Seznam lodí - informace získáš kliknutím na loď. Ctrl+kliknutí způsobí přepínání skrytí lodí. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Seznam letadel - klikni na letadlo pro informace. Ctrl+kliknutí způsobí přepínání skrytí letadel. STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Koupit vozidlo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Koupit vozidlo @@ -3440,6 +3513,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Přejmen STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Přejmenovat typ lodi STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Přejmenovat typ letadla +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Schovat +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Schovat +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Schovat +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Schovat + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Zobrazit +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Zobrazit +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Zobrazit +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Zobrazit + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Přepnout zobrazení/schování typu vlaku +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Přepnout zobrazení/schování typu silničního vozidla +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Přepnout zobrazení/schování typu lodi +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Přepnout zobrazení/schování typu letadla + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Přejmenovat typ železničního vozidla STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Přejmenovat typ silničního vozidla STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Přejmenovat typ lodi @@ -3493,7 +3581,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonovat STR_DEPOT_CLONE_SHIP :{BLACK}Klonovat loď STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonovat letadlo -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Vytvoří se kopie vlaku se všemi vagony. Klepni na toto tlačítko a pak na vlak v nebo vně depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Vytvoří se kopie vlaku se všemi vagony. Klikni napřed na toto tlačítko a následně na vlak uvnitř nebo vně depa. Se stisknutou klávesou Ctrl při kliku se budou sdílet příkazy. Stisknutý Shift při kliku zobrazí odhad ceny bez provedení nákupu. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Vytvoří se kopie silničního vozidla. Klepni na toto tlačítko a pak na vozidlo v nebo vně depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadované ceny STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Vytvoří se kopie lodě. Klepni na toto tlačítko a pak na loď v nebo vně lodního depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Vytvoří se kopie letadla. Klepni na toto tlačítko a pak na letadlo v nebo vně hangáru. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny @@ -3550,6 +3638,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Silniční vozi STR_REPLACE_VEHICLE_SHIP :Loď STR_REPLACE_VEHICLE_AIRCRAFT :Letadlo +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Používaná vozidla +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Sloupec s vozidly, které vlastníte +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Dostupná vozidla +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Sloupec s vozidly, které lze nahradit + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na výměnu STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ nové lokomotivy, kterou chceš použít místo vybrané v levém seznamu @@ -3674,7 +3767,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacita STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Podíl za převoz: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval servisů: {LTBLUE}{COMMA} d{P en ny ní}{BLACK} Naposledy v servisu: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval servisů: {LTBLUE}{COMMA}{NBSP}d{P en ny ní}{BLACK} Naposledy v servisu: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval servisů: {LTBLUE}{COMMA}%{BLACK} Naposledy v servisu: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Prodloužit interval servisů o 10. S Ctrl prodloužit o 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zkrátit interval servisů o 10. S Ctrl zkrátit o 5 @@ -3772,7 +3865,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ovlivnit STR_ORDER_REFIT :{BLACK}Přestavět STR_ORDER_REFIT_TOOLTIP :{BLACK}Vyber, na který druh nákladu přestavět. Ctrl+klik odstraní přestavbu z příkazu -STR_ORDER_REFIT_AUTO :{BLACK}Automaticky přestavět +STR_ORDER_REFIT_AUTO :{BLACK}Ve stanici přestavět STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Zvolit druh nákladu pro automatické přestavění pro tento příkaz. Ctrl+Click odebere z příkazu automatické přestavění. Automatické přestavění bude fungovat pouze pokud vozidlo lze přestavět. STR_ORDER_DROP_REFIT_AUTO :Neměnný náklad STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný náklad @@ -3864,18 +3957,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(nevykládat a STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(nevykládat a plně naložit čímkoli) STR_ORDER_NO_UNLOAD_NO_LOAD :(nevykládat ani nenakládat) -STR_ORDER_AUTO_REFIT :(Automatické přestavění na {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Plně naložit vše s automatickým přestavěním na {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Plně naložit cokoliv a automaticky přestavět na {STRING}) -STR_ORDER_UNLOAD_REFIT :(Vyložit a naložit s automatickým přestavěním na {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložit a počkat na plné naložení s automatickým přestavěním na {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vyložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING}) -STR_ORDER_TRANSFER_REFIT :(Přeložit a naložit s automatickým přestavěním na {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Přeložit a počkat na plné naložení s automatickým přestavěním na {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Přeložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Nevykládat a naložit s automatickým přestavěním na {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykládat a počkat na plné naložení s automatickým přestavěním na {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykládat a počkat na plné naložení čehokoliv s automatickým přestavěním na {STRING}) +STR_ORDER_AUTO_REFIT :(Přestavění na {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Plně naložit vše s přestavěním na {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Plně naložit cokoliv a přestavět na {STRING}) +STR_ORDER_UNLOAD_REFIT :(Vyložit a naložit s přestavěním na {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložit a počkat na plné naložení s přestavěním na {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vyložit a počkat na naložení čehokoliv s přestavěním na {STRING}) +STR_ORDER_TRANSFER_REFIT :(Přeložit a naložit s přestavěním na {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Přeložit a počkat na plné naložení s přestavěním na {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Přeložit a počkat na naložení čehokoliv s přestavěním na {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Nevykládat a naložit s přestavěním na {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykládat a počkat na plné naložení s přestavěním na {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykládat a počkat na plné naložení čehokoliv s přestavěním na {STRING}) STR_ORDER_AUTO_REFIT_ANY :dostupný náklad @@ -3901,13 +3994,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Jízdní STR_TIMETABLE_NO_TRAVEL :Nikam nejet STR_TIMETABLE_NOT_TIMETABLEABLE :Jet do (automatický; jizdní řád podle následujícího ručního příkazu) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Jet do (mimo jízdní řád) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Jet maximálně {2:VELOCITY} (mimo jízdní řád) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Jet (mimo jízdní řád) maximální rychlostí {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Jet do {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Jeď {STRING} a maximálně {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Jeď ({STRING}, mimo jízdní řád) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Jeď ({STRING}, mimo jízdní řád) při maximální rychlosti {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(zůstaň {STRING}, mimo jízdní řád) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(jet {STRING}, mimo jízdní řád) STR_TIMETABLE_STAY_FOR :a zůstat {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :a jet {STRING} -STR_TIMETABLE_DAYS :{COMMA} d{P en ny nů} -STR_TIMETABLE_TICKS :{COMMA} cykl{P us y ů} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}d{P en ny ní} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}cykl{P us y ů} STR_TIMETABLE_TOTAL_TIME :{BLACK}Tento jízdní řád bude trvat {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Tento jízdní řád bude trvat nejméně {STRING} (vozidla mimo jízdní řád) @@ -4033,8 +4130,10 @@ STR_AI_SETTINGS_START_DELAY :Počet dní kdy STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} změny ve verzi {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licence {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Zalomit text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zalomit text v okně tak, aby ho nebylo nutné posouvat STR_TEXTFILE_VIEW_README :{BLACK}Zobrazit readme -STR_TEXTFILE_VIEW_CHANGELOG :{BLACK} Novinky ve verzi +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Novinky ve verzi STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence @@ -4143,6 +4242,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Úprava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... již na úrovni moře STR_ERROR_TOO_HIGH :{WHITE}... příliš vysoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... už je plochý +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Most by po této úpravě byl příliš vysoko. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nelze přejmenovat společnost... @@ -4193,6 +4293,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... les STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... může být postaven pouze nad sněžnou čarou STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... může být postaven pouze pod sněžnou čarou +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Na mapě nebyla žádná vhodná místa pro '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Pro získání lepší mapy změňte parametry jejího generování + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Zde nelze postavit nádraží... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nelze postavit autobusovou stanici... @@ -4329,6 +4432,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Je nutn STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nelze začít a skončit na stejném místě STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Nájezdy na most nejsou ve stejné výšce STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je pro terén moc nízký +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Most je příliš vysoko na tento terén. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začátek a konec musí být ve stejné výšce STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba konce mostu musí být na zemi STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je příliš dlouhý @@ -4362,6 +4466,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... již STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nelze vytvořit skupinu... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nelze vymazat skupinu... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nelze přejmenovat skupinu... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nelze nastavit nadřazenou skupinu STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nelze odstranit všechna vozidla ze skupiny... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nelze přidat vozidlo do skupiny... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nelze přidat sdílená vozidla do skupiny... @@ -4707,7 +4812,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parní) @@ -4916,7 +5021,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Trajekt pro ces STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Trajekt pro cestující Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Nákladní loď Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Nákladní loď Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Nákladní loď Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Nákladní loď MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Nákladní loď Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -5014,6 +5119,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (schováno) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_INDUSTRY_NAME.gen :{INDUSTRY.gen} @@ -5051,8 +5157,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5063,9 +5167,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index cf3e64b04c..4b013f74af 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hk STR_UNITS_POWER_METRIC :{COMMA}hk STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P "" s} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kp STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fod +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -221,6 +228,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtrer STR_LIST_FILTER_OSKTITLE :{BLACK}Indtast filter-udtryk STR_LIST_FILTER_TOOLTIP :{BLACK}Indtast nøgleord til at filtrere listen efter +STR_TOOLTIP_GROUP_ORDER :{BLACK}Vælg grupperingssortering STR_TOOLTIP_SORT_ORDER :{BLACK}Vælg sorteringsorden (faldende/stigende) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vælg sorteringskriterie STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vælg filtreringskriterier @@ -232,13 +240,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Luk vind STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vinduestitel - træk her for at flytte vinduet STR_TOOLTIP_SHADE :{BLACK}Oprul vindue - vis kun titellinien STR_TOOLTIP_DEBUG :{BLACK}Vis information om NewGRF fejl -STR_TOOLTIP_STICKY :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten +STR_TOOLTIP_DEFSIZE :{BLACK}Gendan vinduets standardstørrelse. Ctrl+Klik for at gemme nuværende størrelse som standard +STR_TOOLTIP_STICKY :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten. Ctrl+Klik for også at gemme tilstand som standart STR_TOOLTIP_RESIZE :{BLACK}Klik og træk for at ændre vinduets størrelse STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift mellem stort/lille vindue STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbar - scroller listen op/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - flytter listen mod venstre/højre STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nedriv bygninger osv. på et stykke land. Ctrl vælger arealet diagonalt. Shift skifter mellem at bygge og vise prisoverslag. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Vis skjulte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ved at aktivere denne knap, bliver de skjulte tog også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ved at aktivere denne knap, bliver de skjulte køretøjer også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ved at aktivere denne knap, bliver de skjulte skibe også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved at aktivere denne knap, bliver de skjulte fly også vist + # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Annuller @@ -276,6 +296,8 @@ STR_SORT_BY_LENGTH :Længde STR_SORT_BY_LIFE_TIME :Resterende levetid STR_SORT_BY_TIMETABLE_DELAY :Køreplans forsinkelse STR_SORT_BY_FACILITY :Stationstype +STR_SORT_BY_WAITING_TOTAL :Total ventende fragt +STR_SORT_BY_WAITING_AVAILABLE :Tilgængelig ventende fragt STR_SORT_BY_RATING_MAX :Højeste værdi af last STR_SORT_BY_RATING_MIN :Laveste værdi af last STR_SORT_BY_ENGINE_ID :Lokomotiv ID (klassisk) @@ -284,7 +306,7 @@ STR_SORT_BY_POWER :Drivmiddel STR_SORT_BY_TRACTIVE_EFFORT :Trækkraft STR_SORT_BY_INTRO_DATE :Introduktionsdato STR_SORT_BY_RUNNING_COST :Driftsomkostning -STR_SORT_BY_POWER_VS_RUNNING_COST :Drivmiddel/omkostninger +STR_SORT_BY_POWER_VS_RUNNING_COST :Ydelse/Omkostninger STR_SORT_BY_CARGO_CAPACITY :Lasteevne STR_SORT_BY_RANGE :Interval STR_SORT_BY_POPULATION :Indbyggertal @@ -301,6 +323,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis tils STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vis liste over selskabets stationer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vis selskabets finansinformation STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vis generel selskabsinformation +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vis historiebog +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vis målliste STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vis grafer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vis selskabsoversigten STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansiér opførelse af ny industri @@ -348,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Afslut ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spilvalg -STR_SETTINGS_MENU_CONFIG_SETTINGS :Avancerede indstillinger +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Indstillinger STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/spilscript-indstillinger STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF indstillinger STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gennemsigtighedsvalg @@ -374,6 +398,7 @@ STR_FILE_MENU_EXIT :Afslut # map menu STR_MAP_MENU_MAP_OF_WORLD :Kort over verden STR_MAP_MENU_EXTRA_VIEW_PORT :Nyt lokalitetsvindue +STR_MAP_MENU_LINGRAPH_LEGEND :Laststrømforklaring STR_MAP_MENU_SIGN_LIST :Liste over skilte ############ range for town menu starts @@ -456,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Slå afgrænsni STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Slå farvning af beskidte blokke til/fra ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -472,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -504,7 +547,7 @@ STR_MONTH_ABBREV_OCT :okt STR_MONTH_ABBREV_NOV :nov STR_MONTH_ABBREV_DEC :dec -STR_MONTH_JAN :januar +STR_MONTH_JAN :Januar STR_MONTH_FEB :februar STR_MONTH_MAR :marts STR_MONTH_APR :april @@ -660,17 +703,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kort - { STR_SMALLMAP_TYPE_CONTOURS :Konturer STR_SMALLMAP_TYPE_VEHICLES :Køretøjer STR_SMALLMAP_TYPE_INDUSTRIES :Industrier +STR_SMALLMAP_TYPE_ROUTEMAP :Laststrøm STR_SMALLMAP_TYPE_ROUTES :Ruter STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Ejere STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vis landskabskonturer på kortet STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vis køretøjer på kortet STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vis industrier på kortet +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vis laststrøm på kortet STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vis transportruter på kortet STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vis vegetation på kortet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vis landejere på kortet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik på en industritype for at vise den. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kik på et selskab for at se dens ejendomme. Ctrl+klik deaktiverer alle selskaber undtagen det valgte. Ctrl+klik igen for atter at aktivere +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klik på en last for at skifte visning af dens egenskab. Ctrl+Klik slår alle laster undtagen den valgte fra. Ctrl+Klik på den igen for at slå alle laster til STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Veje STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jernbaner @@ -704,6 +750,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vis/skjul bynavne på kort STR_SMALLMAP_CENTER :{BLACK}Centrer det lille kort ved den nuværende position STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Slå alle fra @@ -714,6 +761,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vis alle STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Slå visning af højdekort til/fra STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Vis ingen selskabsejendomme på kortet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vis alle selskabsejendomme på kortet +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Vis ikke fragt på kortet +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Hvis alt fragt på kortet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Vis seneste besked eller nyhedsrapport @@ -790,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} venter i skibsdokken STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} venter i hangaren -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordrer i ordrelisten STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en ugyldig ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har dublerede ordrer STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en ugyldig station i sine ordrer -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} har i sine ordrer en lufthavn, hvis bane er for kort STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammel STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er meget gammel @@ -879,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rialer (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vejkøretøjer STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Vælg den side af vejen, køretøjer skal kører i STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Kør i venstre side @@ -918,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalanske STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk gemning STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vælg interval imellem automatisk gemning +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Fra STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hver måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hver 3. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hver 6. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hver 12. måned +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprog STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vælg sprog til brugerfladen @@ -934,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skærmop STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vælg ønsket skærmopløsning STR_GAME_OPTIONS_RESOLUTION_OTHER :andet -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skærmbillede-format -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vælg skærmbillede-format +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}grænseflade størrelse +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vælg den grænseflade størrelse du ønsker at benytte + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobbelt størrelse +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quad (4x) størrelse STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafiksæt STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vælg det basis-grafiksæt der skal bruges @@ -951,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vælg ba STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} beskadiget fil{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yderligere information om basismusik-sættet +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Det lykkedes ikke at hente en liste over understøttede opløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fuldskærmstilstand fejlede # Custom currency window @@ -1029,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Meget fladt STR_TERRAIN_TYPE_FLAT :Fladt STR_TERRAIN_TYPE_HILLY :Bakket STR_TERRAIN_TYPE_MOUNTAINOUS :Bjergrigt +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Passiv STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1036,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Fjendtlig STR_WARNING_NO_SUITABLE_AI :{WHITE}Der blev ikke fundet en egnet computer-spiller...{}Du kan downloade flere forskellige computer-spillere gennem 'Online Indhold'. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avancerede indstillinger +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Indstillinger STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter streng: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Udvid alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle @@ -1050,7 +1102,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Firma indstilli STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firma indstilling (lagret i gemt spil; påvirker kun nye spil) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firma indstilling (lagret i gemt spil; påvirker kun aktuelt selskab) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Begrænser listen nedenfor så den kun viser ændrede indstillinger STR_CONFIG_SETTING_RESTRICT_BASIC :Grund Indstillinger STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancerede indstillinger @@ -1059,12 +1112,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Indstillinger m STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Indstillinger med en anden værdi end dine nyt-spil indstillinger STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrænser listen nedenfor til at visse indstillingstyper -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle indstillinger +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle indstillingstyper STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klient indstilling (ikke lagret i gemt spil, påvirker alle spil) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spil indstilling (lagret i gemt spil, påvirker kun nye spil) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spil indstilling (lagret i gemt spil, påvirker kun det aktuelt spil) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firma indstilling (lagret i gemt spil; påvirker kun nye spil) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma indstilling (lagret i gemt spil; påvirker kun aktuelt selskab) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Vis alle søgeresultater ved at sætte{}{SILVER}Kategori {BLACK}to {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Vis alle søgeresultater ved at sætte{}{SILVER}Indtast {BLACK}til {WHITE}Alle Indstillingstyper +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Vis alle søgeresultater ved at sætte {} {SILVER}Kategori {BLACK}til {WHITE} {STRING} {BLACK}og {SILVER} Indtast {BLACK}til {WHITE}Alle Indstillingstyper +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ingen - STR_CONFIG_SETTING_OFF :Fra STR_CONFIG_SETTING_ON :Til @@ -1097,16 +1154,17 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Indstil, hvor m STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Konstruktionspriser: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Indstil prisniveau for køb og konstruktion STR_CONFIG_SETTING_RECESSIONS :Kriser: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Lavkonjunkturer kan forekomme hvis denne indstilling er slået til. Ved lavkonjunktur falder produktionen markant (produktionen returnerer til tidligere niveau når lavkonjunkturen er ovre) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Lavkonjunkturer forekomme hvert 5. år hvis denne indstilling er slået til. Ved lavkonjunktur falder produktionen markant (produktionen returnerer til tidligere niveau når lavkonjunkturen er ovre) STR_CONFIG_SETTING_TRAIN_REVERSING :Forbyd toge at køre baglængs i stationer: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktiveret, vil tog ikke vende på ikke-endestationer, også selvom der er en kortere rute til deres næste destination ved at vende +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktiveret, vil tog ikke vende på stationer der ikke er endestationer, også selvom der er en kortere rute til deres næste destination ved at vende STR_CONFIG_SETTING_DISASTERS :Katastrofer: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Slå katastrofer, som lejlighedsvis kan blokere eller ødelægge køretøjer eller infrastruktur, til og fra STR_CONFIG_SETTING_CITY_APPROVAL :Byrådets holdning til omstrukturering: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vælg hvor meget selskaber støj og miljømæssige skader påvirker byvurdering og fremtidige byggeretigheder i området -STR_CONFIG_SETTING_BUILDONSLOPES :Tillad bygning på skråninger og kyster: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Hvis den er aktiveret, kan spor og stationer bygges på de fleste skråninger. Hvis den er deaktiveret, er de kun tilladt på skråninger, som svarer til retningen af sporet og kræver derfor ikke fundament +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimal map højde: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Indstil den maksimale tilladte højde for bjerge på kortet +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikke sætte den maksimale kortet højde for denne værdi. Mindst et bjerg på kortet er højere STR_CONFIG_SETTING_AUTOSLOPE :Tillad landskabsformning under bygninger, spor, etc. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillad landskabsformning under bygninger og spor uden at fjerne dem STR_CONFIG_SETTING_CATCHMENT :Tillad mere realistisk størrelse på stationernes opland: {STRING} @@ -1131,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Forbyd skibe og STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 graders drejninger forekommer når et horisontalt spor er direkte efterfulgt af et lodret spor stykke på det tilstødende felt, hvorved toget drejer 90 grader ved kørsel på feltets kant stedet for de sædvanlige 45 grader for andre spor kombinationer. Dette gælder også for drejeradius af skibe STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillad sammenkædning af stationer der ikke ligger direkte op ad hinanden: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillad at tilføje dele til en station uden direkte at berøre eksisterende dele. Ctrl+Klik for at sætte nye dele -STR_CONFIG_SETTING_IMPROVEDLOAD :Brug forbedret indlæsningsalgoritme: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Hvis aktiveret, er flere køretøjer ventende på en station indlæst sekventielt. Lastning af det næste køretøj kun starter, når der er nok fragt der venter på at fylde det første køretøj -STR_CONFIG_SETTING_GRADUAL_LOADING :Last køretøjer gradvist: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradvist last køretøjer ved brug af specifikke laste varigheder, i stedet for at laste alting på én gang med en fast tid afhængigt af kun lastet mængde gods STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktiver inflation i økonomien, hvor omkostningerne er lidt hurtigere stigende end betalinger -STR_CONFIG_SETTING_SELECTGOODS :Aflever kun last til en station hvis der er en forespørgsel: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Kun aflevere last til en station, der er blevet anmodet af et køretøj. Dette forhindrer dårlige bedømmelse af laster, der ikke serviceres på en station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimal bro længde: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal længde af broer +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimal bro højde: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimal højde for at bygge bro STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimal tunnel længde: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal længde af tunneler STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metode til manuel opførsel af primær industri: {STRING} @@ -1166,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Stedet hvor et STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :den nærmeste ende STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :den fjerneste ende -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Kødannelse af køretøjer (med kvanteeffekt): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Få et køretøj til at vente foran optaget veje indtil de er ryddet STR_CONFIG_SETTING_AUTOSCROLL :Panorér vindue når musen er ved kanten: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når den er aktiveret, vil skærmbilledet begynde at rulle, når musen er nær kanten af skærmen STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktiveret @@ -1198,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillad gennemk STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillad konstruktion af gennemkørsels-stop på by-ejede veje STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillad gennemkørsels-stoppesteder på veje ejet af konkurrenter: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillad konstruktion af gennemkørsels-stop på veje ejet af andre firmaer -STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillad bygning af tilstødende stationer: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Tillad forskellige stationer til at røre hinanden -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Muliggør flere NewGRF køretøjssæt: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitet for gamle NewGRFs. Deaktiver ikke dette, medmindre du ved præcis hvad du laver! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Denne indstilling kan ikke ændres, når der er køretøjer. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktur vedligeholdelse: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Når aktiveret, infrastruktur forårsager vedligeholdelsesomkostninger. Omkostningerne vokser over-proportional med nettets størrelse, hvilket påvirker større virksomheder mere end de små @@ -1232,7 +1280,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Varighed af fej STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Varighed for visning fejlmeddelelser i en rød vindue. Bemærk, at nogle (kritisk) fejlmeddelelser ikke lukkes automatisk efter dette tidspunkt, men skal lukkes manuelt STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" er} STR_CONFIG_SETTING_HOVER_DELAY :Vis værktøjstip: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse før tooltips vises, når musen er over et brugerflade element. Alternativt kan tooltips bindes til højre museknap +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse inden tooltips vises, når musen føres over nogle den grænseflade . Alternativt tooltips er bundet til den højre museknap, når denne værdi er sat til 0. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hold markøren i {COMMA} sekund{P 0 "" er} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Højre klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vis byens indbyggertal i bynavnet: {STRING} @@ -1240,27 +1288,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis befolkninge STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linjetykkelse i grafer: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Bredde af linjerne i graferne. En tynd linie er mere læsbar, en tykkere linje er nemmere at se og det er lettere at skelne mellem farverne +STR_CONFIG_SETTING_LANDSCAPE :Landskab: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskaber definerer grundlæggende gameplay-scenarier med forskellige laster og krav by vækst. NewGRF og spil Scripts tillader finere kontrol selv STR_CONFIG_SETTING_LAND_GENERATOR :Landskabs generator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den oprindelige generator afhænger af basen grafik sæt, og komponerer faste landskab former. TerraGenesis er en Perlin baseret generator med finere kontrol indstillinger STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Terræn type: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness af landskabet +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industri tæthed: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Angiv hvor mange industrier skal genereres og hvilket niveau der bevares i løbet af spillet STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max afstand fra kant til olieraffinaderier: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderier er kun opføres nær kortets grænse, det er ved kysten for kort med øer STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snelinjehøjden: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontrol med på hvilket højde sneen begynder i sub-arktiske landskab. Sne påvirker også industrien generation og betingelser by vækst STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Tærrenets hårdhed (kun TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis kun) Vælg frekvensen af bakkerne: Glatte landskaber har færre, mere udbredt bakker. Ujævne landskaber har mange bakker, der kan se gentaget ud STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Meget blødt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Blødt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Råt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Meget råt +STR_CONFIG_SETTING_VARIETY :Forskelligheds fordeling: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis kun) Kontrollere, om kortet indeholder både bjerg- og flade områder. Da dette kun gør kortet fladere bør andre indstillinger sættes til bjergrigt +STR_CONFIG_SETTING_RIVER_AMOUNT :Floder antal: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vælg, hvor mange floder at skabe STR_CONFIG_SETTING_TREE_PLACER :Algoritme ved placering af træer: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Vælg fordelingen af træer på kortet: "Original" planter træer ensartet spredt, "forbedret" planter dem i grupper STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbedret +STR_CONFIG_SETTING_ROAD_SIDE :Vejkøretøjer: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Vælg køre side STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotér højdekort: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mod uret STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med uret STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Den højde et flat scenariekort får: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillad landskabsændring af felter ved kortets kanter: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Hvis deaktiveret vil kortets kanter altid være hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Et eller flere felter ved den nordlige kant er ikke tomme STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Et eller flere felter ved en af kanterne er ikke vand @@ -1311,17 +1373,15 @@ 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_AUTOSAVE :Auto gem: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vælg interval mellem automatisk gemte spil + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Brug {STRING} datoformat til navne på gemte spil. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formatet af datoen i gemte spil filnavne STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard palette NewGRFer uden valgt palette: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalet til brug af NewGRFs der ikke angiver hvilken en de har brug for -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Sæt automatisk på pause når nyt spil startes: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Når aktiveret, vil spillet automatisk pause når du starter et nyt spil, det giver mulighed for at studerer kortet nærmere STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når pauset tillad: {STRING} @@ -1357,9 +1417,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Afspil lyd for STR_CONFIG_SETTING_SOUND_NEWS :Nyhedsavis: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Afspil lyd ved visning af aviser STR_CONFIG_SETTING_SOUND_NEW_YEAR :Årets slutning: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Afspil lyd ved årsregnskabet, ved årets afslutning +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Afspil lyd ved årsregnskabet, som viser firmaets resultater sammenlignet med det tidligere år STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruktion: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Afspil lydeffekt efter vellykkede konstruktioner eller andre handlinger +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Afspil lyd efter vellykkede konstruktioner eller andre handlinger STR_CONFIG_SETTING_SOUND_CLICK :Knap tryk: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bip ved klik på knapperne STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofer/Ulykker: {STRING} @@ -1424,7 +1484,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis en avis nå STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ankomst af første køretøj til modstanderens station: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vis en avis når det første køretøj ankommer til en konkurrents station STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Uheld / katastrofer: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vis en avis når ulykker eller katastrofer opstår +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vis en avis når ulykker eller katastrofer forekommer STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Selskabsinformation: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vis en avis når nye selskaber starter, eller når selskaber er i risiko for at gå konkurs STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Åbning af industrier: {STRING} @@ -1444,7 +1504,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vis meddelelser STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye køretøjer: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vis en avis, når en ny køretøjstype bliver tilgængelig STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Ændring i accepteret fragt: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vis meddelelser om stationer som ændrer accept af godstyper +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vis meddelelser om stationer som ændrer accept af nogen godstyper STR_CONFIG_SETTING_NEWS_SUBSIDIES :Tilskudsordninger: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vis en avis om tilskuds relaterede begivenheder STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generel information: {STRING} @@ -1467,11 +1527,11 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når der trækk STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Indstil afstanden på hvilke signaler vil blive bygget på et spor op til den næste forhindring (signal, kryds), hvis signalerne trækkes STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} felt{P 0 "" er} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Når der trækkes, hold fastlagt afstand mellem signaler: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Vælg opførslen på signalplassering ved Ctrl + dragning af signaler. Hvis deaktivert, bliver signaler placeret ved tunneler eller broer for at undgå lange strækninger uden signaler. Hvis aktivert, bliver signalerne placeret for hver N rute, noget som gør justering af signaler på parallelle spor enklere +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Vælg opførslen på signalplassering ved Ctrl+trækning af signaler. Hvis deaktivert, bliver signaler placeret ved tunneler eller broer for at undgå lange strækninger uden signaler. Hvis aktivert, bliver signalerne placeret for hver N rute, noget som gør justering af signaler på parallelle spor enklere STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Byg automatisk semaforer før: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Sæt året hvor elektriske signaler vil blive brugt på spor. Før dette år vil ikke-elektriske signaler blive brugt (hvilket har den fuldstændig same funktion, men anderledes udseende) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Vis signalvælgeren som standard: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vis et vindue til at vælge signal typer at bygge, i stedet for kun vindue-løs signal-type skift med Ctrl+klik på byg-signal +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vis et vindue til at vælge den signaltype du vil bygge, i stedet for kun vindue-løs signal-type skift med Ctrl+klik på byg-signal STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Signaltype der bygges som standard: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard signaltype STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal @@ -1486,24 +1546,24 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle STR_CONFIG_SETTING_TOWN_LAYOUT :Vej-layout for nye byer: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Layout for vejnettet i byer STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Standard -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bedre veje +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Optimerede veje STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 gitter -STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 gitter +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 vej gitter STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilfældig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byer kan bygge veje: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillad byer at bygge veje når de vokser. Afvis for at forbygge at byer ikke selv bygger veje +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillad byer at bygge veje når de vokser. Deaktiver for at forbyde byer selv at bygge veje STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer kan bygge niveaukryds: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Slå denne indstilling til for at tillade byer, at bygge niveaukryds STR_CONFIG_SETTING_NOISE_LEVEL :Tillad byer at fastsætte støjgrænser for lufthavne: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Hvis denne indstilling er slået fra, kan der bygges to lufthavne i hver by. Hvis denne indstilling er slået til, er grænsen fastsat af støjgrænsen for den enkelte byen, hvilket afhænger af population, lufthavnstørrelse og afstand STR_CONFIG_SETTING_TOWN_FOUNDING :At stifte byer i selve spillet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Hvis denne indstilling er slået til er det tilladt for spillere at stifte nye byer i spillet -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Ikke tilladt +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbudt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tilladt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tilladt, tilpasset by-layout STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering af træer i spillet: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroler den tilfældige fremkomst af træer i løbet af spillet. Dette vil påvirke industrier der afhænger træers vækst, f.eks. savværker +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroller den tilfældige fremkomst af træer i løbet af spillet. Dette vil påvirke industrier der afhænger træers vækst, f.eks. savværker STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Ingen {RED}(ødelægger træfabrik) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Kun i regnskove STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Alle steder @@ -1512,7 +1572,7 @@ STR_CONFIG_SETTING_TOOLBAR_POS :Placering af v STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horisontal placering af hovedværktøjlinjen i toppen af skærmen STR_CONFIG_SETTING_STATUSBAR_POS :Position af statusbar: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horisontal placering af statuslinjen i bunden af skærmen -STR_CONFIG_SETTING_SNAP_RADIUS :vinduers fastgørelses radius: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS :Vinduers fastgørelses radius: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Afstanden mellem vinduer før vinduet automatisk flyttes på linje med det nærliggende vindue STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deaktiveret @@ -1523,7 +1583,7 @@ STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :deaktiveret STR_CONFIG_SETTING_ZOOM_MIN :Maksimalt zoom-in niveau: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximalt zoom-in niveau for skærmbilledet. Højere zoom niveau vil øge hukommelseskravet STR_CONFIG_SETTING_ZOOM_MAX :Maksimalt zoom-ud niveau: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Det maksimale udzoomnings-niveau for skærmbilledet. Højere niveauer kan forsage forsinkelser i programmet ved brug +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Det maksimale niveau man kan zoomes ud. Højere niveauer kan forsage forsinkelser i programmet ved brug STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal @@ -1534,44 +1594,99 @@ STR_CONFIG_SETTING_TOWN_GROWTH :Byvækst tempo: STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Hastigheden af by vækst STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ingen STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Langsom -STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Mængden af byer der vil blive bestragtet som storbyer, og derfor er større og vokser hurtigere +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Hurtig STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Meget hurtig STR_CONFIG_SETTING_LARGER_TOWNS :Andel af byer der er storbyer: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Mængden af byer der vil blive bestragtet som storbyer, og derfor er større og vokser hurtigere +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Mængden af byer der vil blive betragtet som storbyer, og derfor er større og vokser hurtigere STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ud af {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ingen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Startværdi for bystørrelsesfaktor: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gennemsnitlig størrelse af storbyer i forhold til normale byer ved start af spillet -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde vejelementer under opførelse af vej: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern døde vej-ender i løbet af finansierede vej-rekostruktioner - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Brugerflade -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Opdatér distributionsgraf hver {STRING} dag{P 0:2 "" e} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tid mellem efterfølgende genberegninger af forbindelsesgrafen. Hver genberegning beregner planerne for et komponent af grafen. Det betyder, at en værdi X for denne indstilling ikke betyder at hele grafen vil blive opdateret hver X dage. Kun nogle komponenter vil. Jo kortere du sætter indstillingen, jo mere CPU-tid vil være nødvendig for at beregne forbindelsesgrafen. Jo længere du sætter indstillingen, jo længere vil det tage før lastdistribution starter på nye ruter. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Tag {STRING} dag{P 0:2 "" e} for genberegning af distributionsgraf +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tid taget for hver genberegning af et forbindelsesgrafkomponent. Når en genberegning startes, skabes en tråd som er tilladt at køre dette antal dage. Jo kortere du sætter denne indstilling, jo mere sandsynligt er det at tråden ikke er færdig når det er meningen. Så stopper spillet indtil den er ("lag"). Jo længere du sætter denne indstilling, jo længere tager det for distributionen at blive opdateret når ruter ændres. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionsmodel for passagerer: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisk" betyder at omtrent det samme antal passagerer vil rejse fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige antal passagerer kan rejse i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for passagerer. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributionsmodel for post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyder at omtrent den samme mængde post vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder post kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for post. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributionsmodel for PANSRET lastklasse: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :PANSRET lastklassen indeholder værdigenstande i det tempererede klima, diamanter i det subtropiske klima, eller guld i det subarktiske klima. NewGRF kan ændre dette. "symmetrisk" betyder at omtrent den samme mængde af denne last vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder af denne last kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for denne last. Det anbefales at sætte denne indstilling til assymetrisk eller manuel når der spilles subarktisk, da banker ikke sender guld tilbage til guldminer. For tempereret og subtropisk kan du også vælge symmetrisk, da banker vil sende værdigenstande tilbage til oprindelsesbanken for et læs værdigenstande. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributionsmodel for andre lastklasser: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisk" betyder at omtrent den samme mængde last vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder last kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for disse laster. Du vil nok ønske at sætte dette til "asymmetrisk" eller manuel. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributionsnøjagtighed: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo højere du sætter denne indstilling, jo mere CPU-tid vil beregningen af forbindelsesgrafen tage. Hvis den tager for længe, kan du opleve lag. Hvis du derimod sætter indstillingen til en lav værdi, vil distributionen være unøjagtig, og du kan opleve last ikke blive sendt til de steder, du forventer. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Effekt af afstand på efterspørgsel: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du sætter denne indstilling til en værdi større end 0, vil afstanden mellem oprindelsesstation A for noget last og en mulig destination B have en effekt på mængden af last sendt fra A til B. Jo længere væk B er fra A, jo mindre last vil blive sendt. Jo højere du sætter denne indstilling, jo mindre last vil blive sendt til fjerne stationer, og jo mere last vil blive sendt til nærliggende stationer. +STR_CONFIG_SETTING_DEMAND_SIZE :Mængde returnerende last for symmetrisk model: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved at sætte denne indstilling til mindre end 100%, opfører den symmetriske distribution sig mere som den asymmetriske. Mindre last vil blive tvunget sendt tilbage hvis en bestemt mængde er blevet sendt til en station. Hvis du sætter denne indstilling til 0%, vil den symmetriske distribution opfører sig ligesom den asymmetriske. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Mætning af korte veje før brug af veje med høj kapacitet: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Der er ofte flere veje mellem to givne stationer. Cargodist vil mætte den korteste vej først, så bruge den næstkorteste vej indtil den er mættet, osv.. Mætning bestemmes af en vurdering af kapacitet og planlagt brug. Når den har mættet alle veje, og hvis der stadig er efterspørgsel tilbage, vil den overbelaste alle veje, og foretrække vejene med høj kapacitet. Det meste af tiden vil algoritmen dog ikke vurdere kapaciteten nøjagtigt. Denne indstilling giver dig mulighed for at bestemme op til hvilken procentdel en kortere vej skal være mættet i første omgang før den næste, længere vej vælges. Sæt denne indstilling til mindre end 100% for at undgå overfyldte stationer i tilfælde af overvurderet kapacitet. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighedsenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Når en hastighed er vist i brugergrænsefladen, så vis dem i de valgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperisk (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/t) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Køretøjskraftenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Når et køretøjs kraft er vist i brugergrænsefladen, så vis dem i de valgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperisk (hk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (hk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Vægtenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Når en vægt vises i brugergrænsefladen, vise det i de udvalgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperisk (kort t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Rumfangsenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Når en volumen vises i brugergrænsefladen, vise det i de udvalgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperisk (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Trækevneenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Når trækevne, også kendt som trækkraft, er vist i brugergrænsefladen, så vis det i de valgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperisk (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Højdeenheder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Når højde er vist i brugergrænsefladen, så vis dem i de valgte enheder +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperisk (fod) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafiksæt / Manglende grafik +STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Brugerflade +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyheder / Rådgivere +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Regnskab STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køretøjer -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationer -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysik / Tilstand +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruteplanlægning +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Begrænsninger +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofer / Ulykker +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Verden generation +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Myndigheder +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Fragtdistribution STR_CONFIG_SETTING_AI :{ORANGE}Modstandere -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visningsindstillinger -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Brugerflade -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter -STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheder og beskeder -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Fragthåndtering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerstyrede spillere -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Auto-forny -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servicering -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruteplanlægning -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tog -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Byer -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrier STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1620,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Netværk STR_INTRO_GAME_OPTIONS :{BLACK}Spilvalg STR_INTRO_HIGHSCORE :{BLACK} Topresultater -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancerede indstillinger +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Indstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger STR_INTRO_ONLINE_CONTENT :{BLACK}Tjek Online Indhold STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spilscript indstillinger @@ -1640,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vælg 'l STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vis spilvalg STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hvis topscoreliste -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Vis avancerede indstillinger +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skærm indstillinger STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for nyt og opdateret indhold til download STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis computerspiller/spilscript indstillinger @@ -1680,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (nedriv ting, som normalt ikke kan fjernes): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krydse hinanden: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke styrte (ofte) i små lufthavne: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Rediger den maksimale map højde: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Rediger den maksimale højde af bjerge på kortet STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Tempereret klima STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Arktisk klima STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tropisk klima @@ -1728,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Fragt-sporvogn STR_FACE_CAPTION :{WHITE}Ansigtsvalg STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuller nyt valg af ansigt STR_FACE_OK_TOOLTIP :{BLACK}Accepter nyt ansigtsvalg +STR_FACE_RANDOM :{BLACK}Tilfældig STR_FACE_MALE_BUTTON :{BLACK}Mand STR_FACE_MALE_TOOLTIP :{BLACK}Vælg mandlige ansigter @@ -1783,6 +1901,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ændre s # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Netværksspil +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Offentlig +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vælg mellem et offentligt (internet) og et ikke offentligt (lokalnetværk, LAN) spil +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nej +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spiller navn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er det navn, som andre spillere vil kende dig ved @@ -1841,6 +1963,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Navnet v STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sæt kodeord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskyt dit spil med et kodeord hvis du ikke vil have fremmede med +STR_NETWORK_START_SERVER_UNADVERTISED :Nej +STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antal tilladte klienter: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vælg det maksimale antal klienter. Det er ikke nødvendigt at fylde dem alle @@ -1961,6 +2085,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskuere STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv beløbet du vil give +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Tilskuer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Gem ikke den indtastede adgangskode @@ -2153,8 +2278,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Slå gen STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gør objekter usynlige i stedet for gennemsigtige # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Laststrømforklaring +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ingen +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vælg firmaer at vise # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ubrugt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}mættet +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelastet # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Vis dækningsområde @@ -2397,14 +2529,14 @@ STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mellem STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stor STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilfældig STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vælg bystørrelse -STR_FOUND_TOWN_CITY :{BLACK}By +STR_FOUND_TOWN_CITY :{BLACK}Storby STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Storbyer vokser hurtigere en almindelige byer{}Afhængig af indstillingerne kan de være større ved grundlæggelsen STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Byens vej-layout: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vælg vej-layout for denne by STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalt STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bedre veje -STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 gitter +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 vej gitter STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 gitter STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfældigt @@ -2458,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {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} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klipper @@ -2554,7 +2687,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-2013 OpenTTD teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil @@ -2573,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Gem STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Gem det nuværende spil, med det valgte navn STR_SAVELOAD_LOAD_BUTTON :{BLACK}Åbn STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Åbn det markerede spil +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Indlæs valgte højdemap STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spil Detaljer STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen information til rådighed STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2588,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byer: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industrier: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimal map højde: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Øge den maksimale højde af bjerge på kortet med en +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Formindsk den maksimale højde af bjerge på kortet med en STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snegrænse STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt snegrænsen een op STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt snegrænsen een ned -STR_MAPGEN_RANDOM_SEED :{BLACK}Tilfældig -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik for at angive tilfældighed -STR_MAPGEN_RANDOM :{BLACK}Tilfældig -STR_MAPGEN_RANDOM_HELP :{BLACK}Ændre den tilfældige værdi ved brug i terrængeneratoren STR_MAPGEN_LAND_GENERATOR :{BLACK}Terrængenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Træalgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terræntype: @@ -2621,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Højdeko STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Størrelse: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriv startværdi til tilfældige tal +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Skift maksimal kort højde STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ændre snegrænsen STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ændre startår @@ -2676,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flyt op STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flyt det valgte NewGRF sæt op i listen STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flyt ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flyt det valgte NewGRF sæt ned i listen +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Opgradering +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Opgrader NewGRF filer, som har en nyere version installeret STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}En liste over de NewGRF sæt der er installeret. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Indstil parameter @@ -2700,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Tilsvarend STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktiveret STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ikke kompatibel med denne version af OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Gem forudindstilling +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK} Liste over tilgængelige presets, skal du vælge en til at kopiere det til gemte navn nedenfor +STR_SAVE_PRESET_TITLE :{BLACK}Indtast et navn til den forudindstillede +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Aktuelt valgte navn til den forudindstillede at gemme +STR_SAVE_PRESET_CANCEL :{BLACK}Annuller +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Du må ikke ændre den forudindstillede +STR_SAVE_PRESET_SAVE :{BLACK}Gem +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Gem forudindstilling til den aktuelle valgte navn + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ændre NewGRF parameterne STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Luk @@ -2727,10 +2872,13 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsæt STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til grafikelement STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå til det givne grafikelement. Hvis den ikke er et normalt grafikelement, fortsæt til næste normale element STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidligere grafikelement -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gå til forrige normale grafikelement, spring pseudo/omfarvede/skrift-elementer og omsvøb fra begyndelsen. +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsæt til den forrige normal sprite, springe over nogen pseudo / recolour / FONT sprites og indpakning rundt fra den første sprite til det sidste STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Repræsentation af den markerede sprite. Justeringen ignoreres når denne sprite tegnes. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flyt spriten rundt for at ændre X- og Y-forskydningen -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Nulstil relativ +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nulstil den nuværende relative forskydning +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} (Relativt) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vælg grafikelement STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vælg en sprite fra et vilkårligt sted på skærmen @@ -2787,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Manglende STR_NEWGRF_BROKEN :{WHITE}Denne NewGRFs opførsel '{0:STRING}' vil sandsynligvis forårsage at spillet går ned. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Den ændrer status for '{1:ENGINE}' når den ikke er i depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Den ændrer toglængden for '{1:ENGINE}' mens den ikke er i depot +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Det ændrede køretøj kapacitet til '{1:ENGINE}' når det ikke er inde i et depot eller genmontering STR_BROKEN_VEHICLE_LENGTH :{WHITE}Toget '{VEHICLE}' fra firmaet '{COMPANY}' har ugyldig længde. Det skyldes sandsynligvis at problem med en NewGRF. Spillet går muligvis ned. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' indeholder forkert information @@ -2801,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} af STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanner NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanner NewGRFs. Afhængig af mængden, vil dette tage noget tid... @@ -2882,9 +3034,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Køb et STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestik de lokale myndigheder til at hæve din bedømmelse, med risiko for en stor straf hvis det bliver opdaget.{}Pris: {CURRENCY_LONG} # Goal window -STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål +STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale Mål +STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ingen - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ikke anvendelig - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Selskabsmål: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik på mål for at centrere hovedvinduet over industri/by/felt Ctrl+klik åbner et nyt vindue over industri/by/felt lokation @@ -2894,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Advarsel STR_GOAL_QUESTION_CAPTION_ERROR :Mål-spørgsmåls-overskriftsfejl -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Annuller STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nej @@ -2913,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Genstart STR_GOAL_QUESTION_BUTTON_POSTPONE :Udskyd STR_GOAL_QUESTION_BUTTON_SURRENDER :Overgiv dig STR_GOAL_QUESTION_BUTTON_CLOSE :Luk +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Tilskudsordninger @@ -2924,6 +3082,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik på servicen for at centrere skærmen over industrien/byen. Ctrl+Klik åbner et nyt vindue ved industriens/byens lokalitet. # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Historiebog +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global Historiebog +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved at vælge den i denne rulleliste. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Forrige +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå til forrige side +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Næste +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gå til næste side +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig målreference # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnavne - klik på et navn for at centrere skærmen over stationen. Ctrl+Klik åbner et nyt vindue ved stationens lokalitet @@ -2938,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Der vent # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Venter: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} undervejs fra {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} forbeholdt lastning) @@ -2952,8 +3119,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW} {COMPA STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bedømmelse STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stationens bedømmelse - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månedligt udbud og lokal bedømmelse +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Gruppér på +STR_STATION_VIEW_WAITING_STATION :Station: Ventende +STR_STATION_VIEW_WAITING_AMOUNT :Mængde: Ventende +STR_STATION_VIEW_PLANNED_STATION :Station: Planlagt +STR_STATION_VIEW_PLANNED_AMOUNT :Mængde: Planlagt +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} fra {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} til {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} fra ukendt station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} til enhver station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via enhver station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} fra denne station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopper ved denne station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} til denne station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} uden stop + +STR_STATION_VIEW_GROUP_S_V_D :Kilde-Via-Destination +STR_STATION_VIEW_GROUP_S_D_V :Kilde-Destination-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Kilde-Destination +STR_STATION_VIEW_GROUP_V_D_S :Via-Destination-Kilde +STR_STATION_VIEW_GROUP_D_S_V :Destination-Kilde-Via +STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Kilde ############ range for rating starts STR_CARGO_RATING_APPALLING :Rædselsfuld @@ -3096,6 +3286,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transporteret) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over industriens lokalitet. Ctrl+Klik åbner et nyt vindue ved industriens lokalitet. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktions niveauet: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrien har rapporteret øjeblikkelig nedlukning! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING} @@ -3164,6 +3355,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Slet den STR_GROUP_RENAME_TOOLTIP :{BLACK}Omdøb den valgte gruppe STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik for at beskytte denne gruppe mod global auto-udskiftning +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Slet gruppe +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Er du sikker på at du vil slette denne gruppe og eventuelle under grupper? + STR_GROUP_ADD_SHARED_VEHICLE :Tilføj delte køretøjer STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køretøjer @@ -3203,8 +3397,8 @@ STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rækkevi 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 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skibstypeliste - klik på skibstype for information -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flytypeliste - klik på en flytype for mere information +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skib valgliste. Klik på skib for information. Ctrl + Klik for at skifte skjule skibstypen +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøj valgliste. Klik på fly til orientering. Ctrl + Klik for at skifte skjule flytypen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Køb køretøj STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Køb køretøj @@ -3226,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Omdøb k STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Omdøb skibstypen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Ømdøb flytypen +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}skjule +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}skjule +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}skjul + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Display + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle skjule / vise af tog type +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle skjule / vise af kørtøjstype +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle skjule / vise af skibstype +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle skjule / vise af flytype + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Omdøb tog-/togvognstypen STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Omdøb køretøjstypen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Omdøb skibstypen @@ -3330,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vejkøretøj STR_REPLACE_VEHICLE_SHIP :Skib STR_REPLACE_VEHICLE_AIRCRAFT :Fly +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Køretøjer i brug +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolonne med køretøjer, som du ejer +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Tilgængelige køretøjer +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolonne med køretøjer til rådighed til udskiftning + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønsker udskiftet STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønker benyttet i stedet for den type, du har valgt i venste side @@ -3344,7 +3558,7 @@ STR_REPLACE_VEHICLES_STOP :{BLACK}Stop uds STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Udskifter: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vogn-udskiftningsvindue +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue STR_REPLACE_ENGINES :Lokomotiver STR_REPLACE_WAGONS :Vogne @@ -3684,6 +3898,10 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Rejs (ikke iflg STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Rejs med højst {2:VELOCITY} (ikke skemalagt) STR_TIMETABLE_TRAVEL_FOR :Rejs i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Rejs mod {STRING} med højst {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Køreplan (for {STRING}, ikke skemalagt) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Køreplan (for {STRING}, ikke skemalagt) med på de fleste {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(ophold for {STRING}, ikke skemalagt) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(rejse for {STRING}, ikke skemalagt) STR_TIMETABLE_STAY_FOR :og vent i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og rejs i {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" e} @@ -3699,6 +3917,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne ti STR_TIMETABLE_STATUS_START_AT :{BLACK}Denne tidsplan vil starte på {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vælg en dato som starttidspunkt for denne køreplan. Ctrl+Klik sætter starttidspunkt for denne køreplan, og distribuerer alle køretøjer der deler denne ordre ligeligt baseret på deres relative rækkefølge, hvis ordren er fuldstændigt tidsplanlagt STR_TIMETABLE_CHANGE_TIME :{BLACK}Ændre tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ændre hvor lang tid den markerede ordre skal tage @@ -3720,7 +3939,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Udfyld a STR_TIMETABLE_EXPECTED :{BLACK}Forventet STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift mellem forventet og planlagt tidsplan +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift mellem forventet og tidslagt STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Afg: @@ -3812,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :Antal dage denn STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme for {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} ændringslog for {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licens for {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Ombryd tekst +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ombryd teksten i vinduet, så det hele passer uden at skulle rulle STR_TEXTFILE_VIEW_README :{BLACK}Se readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ændringslog STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licens @@ -3922,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Udgravni STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... allerede ved havoverfladen STR_ERROR_TOO_HIGH :{WHITE}... for højt STR_ERROR_ALREADY_LEVELLED :{WHITE}... allerede fladt +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Bagefter vil broen over dette ville være for høj. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke ændre selskabets navn... @@ -3972,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skov STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE} ... kan kun bygges over snegrænsen STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE} ... kan kun bygges under snegrænsen +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Der var ingen egnede steder for '{STRING}' industrier +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Skift kort generations parametre for at få et bedre kort + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge en banegård her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge rutebilstation... @@ -4108,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Det er n STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan ikke starte og slutte på samme position STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brohoveder er ikke i samme niveau STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav til terrænet +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Broen er for høj for dette terræn. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start- og slutposition skal være på linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... begge ender af en bro skal være på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... broen er for lang @@ -4134,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du e STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke oprette gruppe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikke slette denne gruppe... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikke omdøbe gruppe... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan ikke sætte overordnede gruppe ... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikke fjerne alle køretøjer fra denne gruppe... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikke tilføje køretøjet til denne gruppe... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikke tilføje delte køretøjer til gruppe... @@ -4189,6 +4416,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... fartøjet er ødelagt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen køretøjer vil være tilgængelige overhovedet +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Skift din NewGRF-konfiguration +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen køretøjer er tilgængelige endnu +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start et nyt spil efter {DATE_SHORT} eller brug en NewGRF der giver tidlige køretøjer # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke få toget til at passere signalet... @@ -4364,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Damp) @@ -4573,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagerfærge STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Fragtskib STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Fragtskib -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Fragtskib +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Fragtskib STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Fragtskib STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4667,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (skjult) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4690,6 +4922,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4701,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4713,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 86f16a1ba4..8af6cacc55 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Frisdrank # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passagier{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passagier{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} kolen -STR_QUANTITY_MAIL :{COMMA} zak{P "" ken} post +STR_QUANTITY_MAIL :{COMMA}{NBSP}zak{P "" ken} post STR_QUANTITY_OIL :{VOLUME_LONG} olie -STR_QUANTITY_LIVESTOCK :{COMMA} stuk{P "" s} vee -STR_QUANTITY_GOODS :{COMMA} krat{P "" ten} goederen +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}stuk{P "" s} vee +STR_QUANTITY_GOODS :{COMMA}{NBSP}krat{P "" ten} goederen STR_QUANTITY_GRAIN :{WEIGHT_LONG} graan STR_QUANTITY_WOOD :{WEIGHT_LONG} hout STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} ijzererts STR_QUANTITY_STEEL :{WEIGHT_LONG} staal -STR_QUANTITY_VALUABLES :{COMMA} zak{P "" ken} kostbaarheden +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}zak{P "" ken} kostbaarheden STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kopererts STR_QUANTITY_MAIZE :{WEIGHT_LONG} mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} fruit -STR_QUANTITY_DIAMONDS :{COMMA} zak{P "" ken} diamanten +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}zak{P "" ken} diamanten STR_QUANTITY_FOOD :{WEIGHT_LONG} voedsel STR_QUANTITY_PAPER :{WEIGHT_LONG} papier -STR_QUANTITY_GOLD :{COMMA} zak{P "" ken} goud +STR_QUANTITY_GOLD :{COMMA}{NBSP}zak{P "" ken} goud STR_QUANTITY_WATER :{VOLUME_LONG} water STR_QUANTITY_WHEAT :{WEIGHT_LONG} tarwe STR_QUANTITY_RUBBER :{VOLUME_LONG} rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} suiker -STR_QUANTITY_TOYS :{COMMA} stuk{P "" ken} speelgoed -STR_QUANTITY_SWEETS :{COMMA} zak{P "" ken} snoep +STR_QUANTITY_TOYS :{COMMA}{NBSP}stuk{P "" ken} speelgoed +STR_QUANTITY_SWEETS :{COMMA}{NBSP}zak{P "" ken} snoep STR_QUANTITY_COLA :{VOLUME_LONG} cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} suikerspinnen STR_QUANTITY_BUBBLES :{COMMA} bel{P "" len} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}GEEN STR_ABBREV_ALL :{TINY_FONT}ALLES # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passagier{P "" s} -STR_BAGS :{COMMA} zak{P "" ken} -STR_TONS :{COMMA} ton -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} stuk{P "" s} -STR_CRATES :{COMMA} krat{P "" ten} +STR_PASSENGERS :{COMMA}{NBSP}passagier{P "" s} +STR_BAGS :{COMMA}{NBSP}zak{P "" ken} +STR_TONS :{COMMA}{NBSP}ton +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}stuk{P "" s} +STR_CRATES :{COMMA}{NBSP}krat{P "" ten} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Donkerblauw @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Grijs STR_COLOUR_WHITE :Wit # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/u -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/u +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA} pk -STR_UNITS_POWER_METRIC :{COMMA} pk -STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}pk +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}pk +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter tekst: @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Schuifba STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Schuifbalk - scroll horizontaal door de lijst STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Sloop gebouwen etc. op een stuk land. Ctrl selecteert het gebied diagonaal. Shift schakelt tussen bouwen/inschatting van de kosten +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Toon verborgen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Toon verborgen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Toon verborgen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Toon verborgen + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen treinen ook weergegeven +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :Door het inschakelen van deze knop, worden de verborgen wegvoertuigen ook weergegeven +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen schepen ook weergegeven +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen vliegtuig ook weergegeven + # Query window STR_BUTTON_DEFAULT :{BLACK}Standaard STR_BUTTON_CANCEL :{BLACK}Annuleren @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Afsluiten ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spelopties -STR_SETTINGS_MENU_CONFIG_SETTINGS :Geavanceerde instellingen +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Instellingen STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Game script instellingen STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF instellingen STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Doorzichtigheidsopties @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Schakel selecti STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Schakel kleuren van braakliggende grond aan/uit ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wacht in dok STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wacht in hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} heeft te weinig orders STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} heeft een lege order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} heeft dubbele orders STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} heeft een ongeldig station in de orders -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} heeft in de opdrachten een luchthaven waarvan de start-en landingsbaan is te kort STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is oud aan het worden STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is erg oud aan het worden @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Wegvoertuigen STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Kies aan welke kant de wegvoertuigen moeten rijden STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Links rijden @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalaans STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisch opslaan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies interval tussen automatisch opgeslagen spellen +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Uit STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Iedere maand STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Iedere 3 maanden STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Iedere 6 maanden STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Iedere 12 maanden +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecteer de interfacetaal @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Schermre STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecteer de schermresolutie STR_GAME_OPTIONS_RESOLUTION_OTHER :Anders -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshotformaat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selecteer het bestandsformaat van screenshots +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Menupuntgrootte +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Kies de menupuntgrootte dat moet worden gebruikt + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normaal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dubbele grootte +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4x Grootte STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset voor graphics STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies de te gebruiken basisset voor graphics @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kies de STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupt{P "" e} bestand{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Aanvullende informatie over the basisset voor muziek +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislukt om een lijst met ondersteunde resoluties op te halen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus voor volledig scherm is mislukt # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Zeer Vlak STR_TERRAIN_TYPE_FLAT :Vlak STR_TERRAIN_TYPE_HILLY :Heuvelachtig STR_TERRAIN_TYPE_MOUNTAINOUS :Bergachtig +STR_TERRAIN_TYPE_ALPINIST :Berglandschap STR_CITY_APPROVAL_PERMISSIVE :Toegeeflijk STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Vijandig STR_WARNING_NO_SUITABLE_AI :{WHITE}Geen bruikbare AIs beschikbaar...{}U kunt diverse AI's downloaden via het 'Online Content' systeem -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Geavanceerde instellingen +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Instellingen STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtertekst: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles uitvouwen STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles inklappen @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinstellinge STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen invloed op nieuw spel) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen invloed op huidig bedrijf) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Toon: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Filtert de onstaande lijst op alleen gewijzigde instellingen -STR_CONFIG_SETTING_RESTRICT_BASIC :Gewone instellingen -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Geavanceerde instellingen -STR_CONFIG_SETTING_RESTRICT_ALL :Geavanceerde instellingen / Alle instellingen +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categorie: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beperkt de onderstaande lijst met vooraf gedefinieerde filters +STR_CONFIG_SETTING_RESTRICT_BASIC :Basis (toon alleen belangrijke instellingen) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Geavanceerd (toon de meeste instellingen) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (toon alle instellingen, inclusief vreemde) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Instellingen met een andere waarde dan de standaard STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Instellingen met een andere waarde dan je 'nieuw spel' instellingen STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Filter de lijst hieronder op bepaalde instellingstypen STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instellingen STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Gebruikersinstellingen (Niet opgeslagen in bestand; heeft betrekking op alle spellen) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op nieuw spel) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig spel) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op nieuwe spellen) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Bedrijfsinstellingen (Opgeslagen in bestand; heeft alleen betrekking op nieuwe spellen) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig bedrijf) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Categorie {BLACK}naar {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Type {BLACK}naar {WHITE}Alle instellingstypen +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Categorie {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}naar {WHITE}Alle instellingstypen +STR_CONFIG_SETTINGS_NONE :{WHITE}- Geen - STR_CONFIG_SETTING_OFF :Uit STR_CONFIG_SETTING_ON :Aan @@ -1117,17 +1154,18 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Instellen hoeve STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Bouwkosten: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Het niveau van bouw- en aankoopkosten STR_CONFIG_SETTING_RECESSIONS :Recessies: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Wanneer ingeschakeld kunnen recessies om de paar jaar optreden. Tijdens een recessie is alle productie aanzienlijk lager (Deze keert terug naar het vorige niveau als de recessie voorbij is) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Wanneer ingeschakeld kunnen recessies om de paar jaar optreden. Tijdens een recessie is alle productie aanzienlijk lager (deze keert terug naar het vorige niveau als de recessie voorbij is) STR_CONFIG_SETTING_TRAIN_REVERSING :Niet toestaan dat treinen keren in stations: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Indien ingeschakeld zullen treinen niet omkeren in niet-eind stations, als er een kortere weg naar hun volgende bestemming is bij omkeren +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Indien ingeschakeld zullen treinen niet omkeren in niet-eind stations, zelfs als er een kortere weg naar hun volgende bestemming is bij omkeren STR_CONFIG_SETTING_DISASTERS :Rampen: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Schakel rampen die af en toe voertuigen of infrastructuur kunnen blokkeren of vernietigen STR_CONFIG_SETTING_CITY_APPROVAL :Gemeenteraad's houding ten opzichte van herstructurering gebied: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoeveel lawaai en schade aan het milieu door bedrijven de stadswaardering en hun acties beïnvloeden in hun bouwgebied -STR_CONFIG_SETTING_BUILDONSLOPES :Bouwen op hellingen en kusten toestaan: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Indien ingeschakeld kunnen sporen en stations gebouwd worden op hellingen. Indien uitgeschakeld kunnen stations en sporen alleen gebouwd worden op hellingen waar geen fundering nodig is en alleen in de richting van het spoor. -STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen, enz. toestaan (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum kaarthoogte: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Stel de maximum toegestande hoogte voor bergen op de kaart in +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Je kunt de maximum kaarthoogte niet in deze waarde wijzigen. Minstens één berg op de kaart is hoger +STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen, enz. toestaan: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Laat het aanpassen van funderingne onder gebouwen en spoor toe zonder deze te verwijderen STR_CONFIG_SETTING_CATCHMENT :Gebruik meer realistische handelsgebieden: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Heb verschillende grootte verzorgingsgebied voor verschillende typen stations en luchthavens @@ -1151,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Verbied treinen STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 graden draaien treden op wanneer een horizontale baan direct gevolgd door een verticale baan stuk op de aangrenzende tegel, waardoor de trein daarna 90 graad wanneer het doorlopen van de tegel rand plaats van de gebruikelijke 45 graden voor andere spoor combinaties. Dit geldt ook voor de draaicirkel van schepen STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Sta het samenvoegen van niet direct aaneensluitende stations toe: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Sta toe dat er aanvullende onderdelen aan een station worden geplaatst, zonder dat reed bestaande onderdelen beïnvloed worden. Gebruikt Ctrl+Click tijdens het plaatsen van nieuwe onderdelen. -STR_CONFIG_SETTING_IMPROVEDLOAD :Gebruik verbeterd laadalgoritme: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Indien ingeschakeld, meerdere voertuigen die wachten op een station worden achter elkaar geplaatst. Het laden van het volgende voertuig start pas als er voldoende lading is om het eerste voertuig volledig te vullen -STR_CONFIG_SETTING_GRADUAL_LOADING :Voertuigen geleidelijk laden: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Geleidelijk laadt voertuigen die gebruikmaken van het voertuig specifieke laad-duur, in plaats van laden alles in een keer met een vaste tijd die alleen afhangt van de hoeveelheid te laden vracht STR_CONFIG_SETTING_INFLATION :Inflatie: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Schakel de inflatie in de economie in, waar de kosten iets sneller stijgen dan de betalingen -STR_CONFIG_SETTING_SELECTGOODS :Vracht alleen bezorgen aan een station als er vraag naar is: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Leveren alleen vracht naar een station dat werd aangevraagd bij een laad-voertuig. Dit voorkomt een slechte score voor ladingen die niet wordt opgehaald bij een station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum brug lengte: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum lengte voor te bouwen bruggen +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximum brughoogte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximum hoogte ombruggen te bouwen STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnel lengte: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum lengte voor te bouwen tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Handmatige bouwmethode voor primaire industrieën: {STRING} @@ -1186,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plaats waar een STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :aan het begin STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :in het midden STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :aan het einde -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Wachtrijvorming bij wegvoertuigen (met bijwerkingen): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Wegvoertuigen laten stoppen voor een bezet wegstation tot ze toestemming krijgen om door te gaan. STR_CONFIG_SETTING_AUTOSCROLL :Verschuif scherm als muis aan de rand is: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Wanneer aan, start een subvenster met scrollen wanneer de muis vlak bij de rand van het venster komt STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Uitgeschakeld @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Sta toe dat doo STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Laat het bouwen van doorrijhaltes toe op stedelijke wegen STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Sta doorrijhaltes op wegen van tegenstanders toe: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Laat het bouwen van doorrijhaltes toe op wegen van andere bedrijven -STR_CONFIG_SETTING_ADJACENT_STATIONS :Bouwen van aangrenzende stations toestaan: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Laat het aaneen bouwen van verschillende stations toe -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Maak het mogelijk om meerdere NewGRF-voertuigsets te gebruiken: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Compatibiliteit optie voor oude NewGRFs. Schakel dit niet uit, tenzij je precies weet wat je doet! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Deze instelling kan niet gewijzigd worden als er voertuigen zijn STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Onderhoud infrastructuur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Wanneer ingeschakeld, infrastructuur veroorzaakt onderhoudskosten. De kosten groeit boven-proportioneel met de grootte van het netwerk, hetgeen van hogere invloed is op grotere bedrijven dan kleinere @@ -1252,7 +1280,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duur van foutbe STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duur voor het weergeven van foutmeldingen in een rood venster. Merk op dat sommige (kritische) foutmeldingen niet automatisch wordt gesloten na deze tijd, deze moeten handmatig worden gesloten STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} seconde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY :Toon tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Vertraging voordat tooltips worden weergegeven wanneer de muis over een interface-element. Als alternatief kunnen tooltips worden gebonden aan de rechter muisknop +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Vertraging voordat tooltips worden weergegeven wanneer de muis over een interface-element. Als alternatief kunnen tooltips worden gebonden aan de rechter muisknop wanneer de waarde 0 is. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Wijs aan voor {COMMA} seconde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rechtsklik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Geef het inwoneraantal bij een stad weer: {STRING} @@ -1260,27 +1288,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Toon de populat STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Dikte van de lijnen in grafieken: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breedte van de lijnen in de grafiek. Een dunne lijn is preciezer leesbaar, een dikke lijn is makkelijker te zien en kleuren zijn gemakkelijker herkenbaar.e lijn +STR_CONFIG_SETTING_LANDSCAPE :Landschap: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landschappen definiëren basis gameplay scenario's met verschillende vracht en stadsgroei eisen. NewGRF en Game Scripts kunnen fijne instellingen hebben STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :De originele generator afhankelijk van de basis graphics set, en composeert vaste landschap vormen. TerraGenesis is een Perlin-ruis gebaseerde generator met fijnere instellingen STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Origineel STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max afstand van de rand voor Olierafinaderijen: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrein type: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Alleen TerraGenesis) Heuvelachtigheid van het landschap +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industrie-dichtheid: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Stel in hoeveel industrieën moeten worden gegenereerd en welk niveau tijdens het spel moet worden gehandhaafd +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum afstand van de rand voor Olierafinaderijen: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderijen worden alleen gebouwd nabij de kaart grens, dat is aan de kust van eiland kaarten STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeuwhoogte: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ruwheid van het terrein (alleen TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Instellen op welke hoogte de sneeuw begint in sub-arctische landschap. Sneeuw heeft ook invloed op de industrie generatie en stadsgroei eisen +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ruwheid van het terrein: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Alleen TerraGenesis) Kies de frequentie van de heuvels: Gladde landschappen hebben minder, meer wijdverspreide heuvels. Ruwe landschappen hebben veel heuvels, die repetitief kunnen lijken STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erg glad STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glad STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ruig STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Erg ruig +STR_CONFIG_SETTING_VARIETY :Variëteit distributie: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Alleen TerraGenesis) Controleer of de kaart zowel bergachtige als vlakke gebieden bevat. Aangezien dit alleen de kaart platter maakt, moeten andere instellingen worden ingesteld op bergachtige +STR_CONFIG_SETTING_RIVER_AMOUNT :Hoeveelheid rivieren: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Kies hoeveel rivieren er gegenereerd worden STR_CONFIG_SETTING_TREE_PLACER :Algoritme voor plaatsing van bomen: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Kies de verdeling van de bomen op de kaart: 'Origineel' plant bomen gelijkmatig verspreid, 'verbeterde' plant in groepen STR_CONFIG_SETTING_TREE_PLACER_NONE :Geen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Origineel STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Verbeterd +STR_CONFIG_SETTING_ROAD_SIDE :Wegvoertuigen: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Kies de rij zijde STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Draaiing van hoogtekaart: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tegen de klok in STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Met de klok mee STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :De hoogte van een plat scenario wordt: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Aanpassen van de hoogte van de randen van de kaart toestaan: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Indien uitgeschakeld, zijn de kaart grenzen altijd oceaan STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Een of meer vakjes aan de noordelijke rand zijn niet leeg STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Een of meer vakjes aan de rand zijn geen water @@ -1301,7 +1343,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vloeiend scroll STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Bepalen hoe de hoofdweergave schuift naar een specifieke positie bij het klikken op de minikaart of bij de afgifte van een opdracht om naar een specifiek object op de kaart. Indien ingeschakeld, de viewport scrollt soepel, als deze uitgeschakeld gaat u rechtstreeks naar de beoogde plek STR_CONFIG_SETTING_MEASURE_TOOLTIP :Toon dimensie-informatie bij het gebruik van diverse bouwgereedschappen: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Geef tegel-afstanden en hoogteverschillen bij het slepen tijdens de bouw werkzaamheden -STR_CONFIG_SETTING_LIVERIES :Laat alle bedrijfskleuren zien: {STRING} +STR_CONFIG_SETTING_LIVERIES :Laat alle voertuigkleuren zien: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Beheer het gebruik van voertuigspecifieke levering voor voertuigen (in tegenstelling tot bedrijfsspecifieke leveringen). STR_CONFIG_SETTING_LIVERIES_NONE :Niets STR_CONFIG_SETTING_LIVERIES_OWN :Eigen bedrijf @@ -1331,17 +1373,15 @@ 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 linkermuis knop in door te slepen. Dit is vooral handig bij het gebruik van een touch-screen voor scrollen +STR_CONFIG_SETTING_AUTOSAVE :Automatisch opslaan: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Kies interval tussen automatische spelopslag + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gebruik {STRING} datumformaat voor naamgeving van opgeslagen spellen STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formaat van de datum in op te slaan spel bestandsnamen STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lang (31e dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standaard palette voor NewGRFs zonder specifiek palette: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standaard palet te gebruiken voor NewGRFs die niet aangeven welke ze nodig hebben -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatisch pauzeren als je een nieuw spel start: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Wanneer ingeschakeld, het spel zal automatisch pauzeren bij het starten van een nieuw spel, waardoor nadere bestudering van de kaart mogelijk is STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Toestaan wanneer gepauzeerd: {STRING} @@ -1350,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Geen mogelijkhe STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle niet-constructie mogelijkheden STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alles behalve landschapsaanpassingen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle mogelijkheden -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik de geavanceerde voertuigenlijst: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik groepen voor voertuigenlijst: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Schakel het gebruik van de geavanceerde voertuigenlijsten in voor het groeperen van voertuigen STR_CONFIG_SETTING_LOADING_INDICATORS :Gebruik laadindicatoren: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Geef aan of laad indicatoren worden weergegeven boven ladende of lossende voertuigen @@ -1379,7 +1419,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Speel geluidsef STR_CONFIG_SETTING_SOUND_NEW_YEAR :Einde jaar: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Speel geluidseffecten bij de samenvatting van resultaten gedurende het jaar ten opzichte van het jaar ervoor aan het einde van het jaar STR_CONFIG_SETTING_SOUND_CONFIRM :Bouw: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel geluidseffecten van succesvolle constructies of andere acties +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel geluidseffecten bij succesvolle constructies of andere acties STR_CONFIG_SETTING_SOUND_CLICK :Knop kliks: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piep bij het klikken op knoppen STR_CONFIG_SETTING_SOUND_DISASTER :Rampen/ongelukken: {STRING} @@ -1391,13 +1431,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgevings STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Bouwen van infrastructuur uitschakelen wanneer geen geschikt voertuig beschikbaar is: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Wanneer ingeschakeld, de infrastructuur is alleen beschikbaar als er ook voertuigen beschikbaar zijn, het voorkomen van verspilling van tijd en geld aan onbruikbare infrastructuur -STR_CONFIG_SETTING_MAX_TRAINS :Maximaal aantal treinen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum aantal treinen per bedrijf: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum aantal treinen dat een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximaal aantal wegvoertuigen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum aantal wegvoertuigen per bedrijf: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum aantal wegvoertuigen die een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximaal aantal vliegtuigen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum aantal vliegtuigen per bedrijf: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum aantal vliegtuigen dat een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_SHIPS :Maximaal aantal schepen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maximum aantal schepen per bedrijf: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum aantal schepen dat een bedrijf kan hebben STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Treinen voor de computer uitschakelen: {STRING} @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Interval tussen STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kies of onderhoud van de voertuigen wordt geactiveerd door verstreken tijd sinds het laatste onderhoud of door het zakken van de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid STR_CONFIG_SETTING_SERVINT_TRAINS :Standaard onderhoudsinterval voor treinen: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Stel de standaard service-interval voor nieuwe railvoertuigen, als er geen expliciete service-interval is ingesteld voor het voertuig -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" en}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" en}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Uitgeschakeld STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standaard onderhoudsinterval voor wegvoertuigen: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Stel de standaard service-interval voor nieuwe wegvoertuigen, als er geen expliciete service-interval is ingesteld voor het voertuig @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 op {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Geen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Stadsgroei-indicator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gemiddelde grootte van steden in vergelijking tot normale steden bij het begin van het spel. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Verwijder rare weg-elementen tijdens het repareren van de weg: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Verwijder doodlopende wegen bij het bouwen van gefinancierde wegen. -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Bijwerken distributie grafiek elke {STRING} dag{P 0:2 "" en} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Bijwerken distributie grafiek elke {STRING}{NBSP}dag{P 0:2 "" en} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tijd tussen opeenvolgende herberekeningen van de link grafiek. Elke herberekening berekent de plannen voor een component van de grafiek. Dat betekent dat een waarde X voor deze instelling betekent niet dat de hele grafiek wordt elke X dagen worden bijgewerkt. Slechts een component wil. Hoe korter u instellen hoe meer CPU-tijd nodig is om het te berekenen zal zijn. Hoe langer je instellen hoe langer het zal duren totdat de lading distributie start op nieuwe routes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Neem {STRING} dag{P 0:2 "" en} voor de herberekening van de distributie grafiek +STR_CONFIG_SETTING_LINKGRAPH_TIME :Neem {STRING}{NBSP}dag{P 0:2 "" en} voor de herberekening van de distributie grafiek STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tijd gebruikt voor elke herberekening van een link grafiek component. Wanneer een herberekening wordt gestart, wordt een thread voortgebracht die mag lopen voor dit aantal dagen. Hoe korter u dit instelt des te waarschijnlijker het is dat de draad niet is voltooid als het zou moeten. Dan stopt het spel totdat het is ("lag"). Hoe langer je instellen hoe langer het duurt voor de distributie aan te passen wanneer routes te wijzigen. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :handmatig STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisch @@ -1580,7 +1618,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisch" b STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributie-modus voor de GEPANTSERDE lading klasse: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :De GEPANTSERDE lading klasse bevat waardevolle spullen in het gematigde klimaat, diamanten in de subtropische of goud in subarctische klimaat. NewGRFs kan dat veranderen. "symmetrisch" betekent dat ongeveer dezelfde hoeveelheid lading die wordt verzonden van een station A naar station B als een van B naar A. "asymmetrische" dat willekeurige deze vracht kan in beide richtingen worden verzonden. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor die lading. Het wordt aanbevolen om dit op asymmetrische of handmatig bij het spelen van subarctische, zoals banken zullen geen goud terug te sturen naar goudmijnen. Voor gematigde en subtropische kunt u ook kiezen symmetrische als banken zullen waardevolle spullen terugsturen naar de oorsprong bank van enkele lading van kostbaarheden. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributie-modus voor andere vrachtsoorten: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisch" betekent dat ongeveer dezelfde hoeveelheid vracht wordt verzonden van een station A naar station B als een van B naar A. "asymmetrische" dat willekeurige hoeveelheid lading in beide richtingen worden verzonden. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor die ladingen. Waarschijnlijk wilt u dit instellen op "asymmetrische" of handmatig. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisch" betekent dat willekeurige hoeveelheden lading in beide richtingen kan worden gestuurd. "manual" betekent dat er geen automatische distributie zal plaatsvinden voor die lading. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Verdeelnauwkeurigheid: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Hoe hoger de instelling des te meer CPU-tijd de berekening van de link grafiek zal gebruiken. Als het te lang duurt kan vertraging opleveren. Als u deze instelt op een lage waarde, echter, zal de verdeling onnauwkeurig zijn, en de lading zal niet altijd worden verzonden naar de plaatsen die u verwacht. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect van afstand op de vraag: {STRING} @@ -1603,7 +1641,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisch (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Gewichten eenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Telkens als gewichten worden weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Wanneer er gewichten worden weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisch (t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) @@ -1626,27 +1664,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisatie -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Constructie +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics +STR_CONFIG_SETTING_SOUND :{ORANGE}Geluid +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemeen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Kijkvensters +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Constructie +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nieuws / Adviseurs +STR_CONFIG_SETTING_COMPANY :{ORANGE}Bedrijf +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Boekhouding STR_CONFIG_SETTING_VEHICLES :{ORANGE}Voertuigen -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economie -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Vrachtdistributie +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routebepaling +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beperkingen +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Rampen / Ongelukken +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Wereld generatie +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omgeving +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoriteiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Steden +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrieën +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Vrachtdistributie STR_CONFIG_SETTING_AI :{ORANGE}Tegenstanders -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Weergave-opties -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interactie -STR_CONFIG_SETTING_SOUND :{ORANGE}Geluidseffecten -STR_CONFIG_SETTING_NEWS :{ORANGE}Nieuws en berichten -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seinen -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Vrachtafhandeling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspelers -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatisch vervangen -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Onderhoud -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routebepaling -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Treinen -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Steden -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrieën STR_CONFIG_SETTING_PATHFINDER_OPF :Origineel STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multipla STR_INTRO_GAME_OPTIONS :{BLACK}Spelopties STR_INTRO_HIGHSCORE :{BLACK}Score tabel -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Geavanceerde instellingen +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Instellingen STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-instellingen STR_INTRO_ONLINE_CONTENT :{BLACK}Online inhoud zoeken STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spel script Instellingen @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Kies spe STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Toon spelopties STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Toon score tabel -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Toon geavanceerde instellingen +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Scherminstellingen STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Toon NewGRF-instellingen STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Zoeken naar nieuwe en aangepaste inhoud om te downloaden STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Toon AI/Game script instellingen @@ -1755,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelen STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magische bulldozer (industrieën en andere onverplaatsbare objecten verwijderen): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels mogen elkaar kruisen: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Straalvliegtuigen storten niet (vaak) neer op kleine vliegvelden: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Wijzig de maximum kaarthoogte: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Wijzig de maximum hoogte van bergen op de kaart STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gematigd landschap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarctisch landschap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisch landschap @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Vrachttram STR_FACE_CAPTION :{WHITE}Gezichtskeuze STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuleer nieuwe gezichtskeuze STR_FACE_OK_TOOLTIP :{BLACK}Accepteer nieuwe gezichtskeuze +STR_FACE_RANDOM :{BLACK}Willekeurig maken STR_FACE_MALE_BUTTON :{BLACK}Mannelijk STR_FACE_MALE_TOOLTIP :{BLACK}Selecteer mannelijke gezichten @@ -1923,13 +1966,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Bescherm STR_NETWORK_START_SERVER_UNADVERTISED :Nee STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} speler{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximaal aantal spelers: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum aantal spelers: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Kies het maximaal aantal toegestane spelers. Niet alle posities hoeven gebruikt te worden STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} bedr{P ijf ijven} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max bedrijven: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum aantal bedrijven: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal bedrijven STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} toeschouwer{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max toeschouwers: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum aantal toeschouwers: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal toeschouwers STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Gesproken taal: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andere spelers zullen weten welke taal er wordt gesproken op de server @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :Speler STR_NETWORK_SPECTATORS :Toeschouwers STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Voer de hoeveelheid geld die je wilt geven in +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Toeschouwer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Sla het ingegeven wachtwoord niet op @@ -2271,7 +2315,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bouw spo STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bouw treindepot (om treinen te kopen en te onderhouden). Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Bouw spoor om naar controlepost. Houd Ctrl ingedrukt om samen te voegen met andere controlepost. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bouw treinstation. Houd Ctrl ingedrukt om samen te voegen met ander station. Shift schakelt tussen bouwen/inschatting van de kosten -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Plaats seinen. Ctrl wisselt tussen armseinen en lichtseinen{}Slepen plaatst seinen langs een recht stuk spoor. Ctrl bouwt seinen tot de volgende wissel{}Ctrl+klik schakelt het openen van het keuzescherm voor seinen aan/uit. Shift schakelt tussen bouwen/inschatting van de kosten +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Plaats seinen. Ctrl wisselt tussen armseinen/lichtseinen{}Slepen plaatst seinen langs een recht stuk spoor. Ctrl bouwt seinen tot de volgende wissel{}Ctrl+klik schakelt het openen van het keuzescherm voor seinen aan/uit. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bouw spoorbrug. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Graaf spoortunnel. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Kies tussen bouwen en verwijderen van sporen, seinen, controleposten en stations. Houd Ctrl ingedrukt om ook het spoor van controleposten en stations te verwijderen @@ -2546,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Geaccepteerde vracht: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoor snelheidslimiet: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Snelheidslimiet weg: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotsen @@ -2642,7 +2687,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-2013 Het OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Het OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Opslaan STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sla het huidige spel op onder de gekozen naam STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laad STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laad het geselecteerde spel +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Laad de geselecteerd hoogtekaart STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spel details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Geen informatie beschikbaar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2676,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Aantal steden: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Aantal industrieën: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum kaarthoogte +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog de maximum hoogte van bergen op de kaart met één +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verklein de maximum hoogte van bergen op de kaart met één STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hoogte van sneeuwgrens: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Verschuif de sneeuwgrens één omhoog STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Verschuif de sneeuwgrens één omlaag -STR_MAPGEN_RANDOM_SEED :{BLACK}Willekeurig getal: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik om een willekeurig getal in te voeren -STR_MAPGEN_RANDOM :{BLACK}Willekeurig maken -STR_MAPGEN_RANDOM_HELP :{BLACK}Wijzig het willekeurige getal dat gebruikt wordt om het landschap te genereren STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Bosalgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terreintype: @@ -2709,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Naam van STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grootte: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Voer een willekeurig getal in +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Wijzig maximum kaarthoogte STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Verander hoogte van sneeuwgrens STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander beginjaar @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Naar bov STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Verplaats het geselecteerde NewGRF-bestand naar boven in de lijst STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Naar beneden STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Verplaats het geselecteerde NewGRF-bestand naar beneden in de lijst +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Opwaarderen +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Opwaarderen van NewGRF bestanden waar je een nieuwere versie van hebt geïnstalleerd STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Een lijst van de NewGRF-bestanden die zijn geïnstalleerd. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Stel parameters in @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Bestand ni STR_NEWGRF_SETTINGS_DISABLED :{RED}Uitgeschakeld STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Niet compatibel met deze versie van OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Preset opslaan +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lijst met beschikbare presets, Kies er één om deze te kopiëren naar de opslagnaam hieronder +STR_SAVE_PRESET_TITLE :{BLACK}Voer een naam in voor de preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nu gekozen naam voor de preset opslag +STR_SAVE_PRESET_CANCEL :{BLACK}Annuleren +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Preset niet wijzigen +STR_SAVE_PRESET_SAVE :{BLACK}Opslaan +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Sla de huidige preset op naar de nu gekozen naam + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF parameters wijzigen STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Sluiten @@ -2818,7 +2875,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorige a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ga naar vorige normale afbeelding, sla alle pseudo/herkleur/lettertype afbeeldingen over en ga naar het einde bij het begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Voorbeeld van de huidige afbeelding. De uitlijning wordt genegeerd bij het weergeven van de afbeelding STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Afbeelding verplaatsen, dit verandert X en Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Herstel relatief +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Herstel de huidige relative offsets +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absoluut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relatief) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies afbeelding STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Kies een afbeelding van een willekeurige plaats op het scherm @@ -2875,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Ontbrekend STR_NEWGRF_BROKEN :{WHITE}Gedrag van NewGRF '{0:STRING}' zal waarschijnlijk desynchronisatiefouten (desyncs) en/of crashes veroorzaken STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Wagon '{1:ENGINE}' gewijzigde status van aandrijfeenheid wanneer niet in een depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Het verandert de lengte van voertuig '{1:ENGINE}' terwijl het niet in een depot is +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Het wijzigde voertuigcapaciteit voor '{1:ENGINE}' wanneer niet in een depot of ombouwen STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trein '{VEHICLE}' behorend bij '{COMPANY}' heeft een ongeldige lengte. Het is waarschijnlijk veroorzaakt door problemen met NewGRFs. Het spel kan desynchroniseren of vastlopen STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' geeft onjuiste informatie @@ -2889,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} van STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scannen van NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scannen van NewGRFs. Afhankelijk van het aantal, kan dit even duren... @@ -2926,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} afgeleverd STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (nog nodig) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (afgeleverd) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Stad groeit iedere {ORANGE}{COMMA}{BLACK} dag{P "" en} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stad groeit iedere {ORANGE}{COMMA}{BLACK} dag{P "" en} (gefinancierd) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Stad groeit iedere {ORANGE}{COMMA}{BLACK}{NBSP}dag{P "" en} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stad groeit iedere {ORANGE}{COMMA}{BLACK}{NBSP}dag{P "" en} (gefinancierd) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Stad groeit {RED}niet{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Geluidslimiet in stad: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centreer het scherm op de locatie van de stad. Ctrl+klik opent een nieuw kijkvenster op de locatie van de stad @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informatie STR_GOAL_QUESTION_CAPTION_WARNING :Waarschuwing STR_GOAL_QUESTION_CAPTION_ERROR :Fout -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Annuleren STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nee @@ -3006,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Herstart STR_GOAL_QUESTION_BUTTON_POSTPONE :Stel uit STR_GOAL_QUESTION_BUTTON_SURRENDER :Geef op STR_GOAL_QUESTION_BUTTON_CLOSE :Sluiten +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies @@ -3026,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Vorige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ga naar de vorige pagina STR_STORY_BOOK_NEXT_PAGE :{BLACK}Volgende STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ga naar de volgende pagina +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ongeldige doelreferentie # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnamen - klik op naam om het scherm te centreren op het station. Ctrl+klik opent een nieuw venster op de locatie van het station @@ -3040,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Er wacht # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Wachtend: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} van {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} gereserveerd voor laden) @@ -3135,7 +3200,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Totaal: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banksaldo STR_FINANCES_LOAN_TITLE :{WHITE}Lening -STR_FINANCES_MAX_LOAN :{WHITE}Max. lening: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximum lening: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Leen {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Vergroot lening. Ctrl+klik om zoveel als mogelijk te lenen @@ -3284,12 +3349,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Niet gegroepeer STR_GROUP_DEFAULT_SHIPS :Niet gegroepeerde schepen STR_GROUP_DEFAULT_AIRCRAFTS :Niet gegroepeerde vliegtuigen -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepen - Klik op een groep voor een lijst van alle voertuigen in deze groep +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepen - Klik op een groep voor een lijst van alle voertuigen in deze groep. Klik en sleep om hiërarchie te beheren STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik om een groep te maken STR_GROUP_DELETE_TOOLTIP :{BLACK}Verwijder de geselecteerde groep STR_GROUP_RENAME_TOOLTIP :{BLACK}Hernoem de geselecteerde groep STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik om deze groep te beschermen tegen globaal automatisch vervangen +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Verwijder groep +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Weet u zeker dat u deze groep en de eventuele subgroepen wilt verwijderen? + STR_GROUP_ADD_SHARED_VEHICLE :Toevoegen gedeelde voertuigen STR_GROUP_REMOVE_ALL_VEHICLES :Verwijder alle voertuigen @@ -3327,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :Alles behalve { STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. trekkracht: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Bereik: {GOLD}{COMMA} tegels -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Railvoertuigkeuzelijst - klik op een railvoertuig voor informatie -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoertuigkeuzelijst - klik op een wegvoertuig voor informatie -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schipkeuzelijst - klik op een schip voor informatie -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuigkeuzelijst - klik op een vliegtuig voor informatie +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Railvoertuigkeuzelijst. Klik op een railvoertuig voor informatie. Ctrl+klik voor wijzigen verbergen voertuig type +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoertuigkeuzelijst. Klik op een wegvoertuig voor informatie. Ctrl+klik voor wijzigen verbergen voertuig type +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schipkeuzelijst. Klik op een schip voor informatie. Ctrl+klik voor wijzigen verbergen schip type +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuigkeuzelijst. Klik op een vliegtuig voor informatie. Ctrl+clik voor Wijzigen voor verbergenvlieftuig type STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Koop spoorvoertuig STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Koop wegvoertuig @@ -3352,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Hernoem STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Hernoem type van schip STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Hernoem type van vliegtuig +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Verberg +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Verberg +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Verberg +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Verberg + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Toon +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Toon +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Toon +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Toon + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzig verberg/toon van treintype +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzig verberg/toon van wegvoertuigtype +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzig verberg/toon van schiptype +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzig verberg/toon van vliegtuigtype + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Hernoem type van railvoertuig STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Hernoem type van wegvoertuig STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Hernoem type van schip @@ -3456,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Wegvoertuig STR_REPLACE_VEHICLE_SHIP :Schip STR_REPLACE_VEHICLE_AIRCRAFT :Vliegtuig +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Voertuigen in gebruik +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolom met voertuigen die je bezig +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Beschikbare voertuigen +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolom met voertuigen beschikbaar voor vervanging + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Kies het type locomotief om te vervangen STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Kies een nieuw type locomotief die je wilt gebruiken om de links geselecteerde type locomotief te vervangen @@ -3580,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Geldoverdracht: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Onderhoudsinterval: {LTBLUE}{COMMA}dagen{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Onderhoudsinterval: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Onderhoudsinterval: {LTBLUE}{COMMA}%{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vergroot onderhoudsinterval met 10. Ctrl+klik verhoogt interval met 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Verklein onderhoudsinterval met 10. Ctrl+klik verlaagt interval met 5 @@ -3678,8 +3766,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Verander STR_ORDER_REFIT :{BLACK}Ombouwen STR_ORDER_REFIT_TOOLTIP :{BLACK}Kies naar welk type vracht ombouwen in deze order. Ctrl+klik om ombouw instructie te verwijderen -STR_ORDER_REFIT_AUTO :{BLACK}Auto-ombouwen -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Kies vrachttype voor auto-ombouwen naar in deze order. Ctrl+Klik om ombouw opdracht te verwijderen. Auto-ombouwen wordt alleen uitgevoerd als het voertuig dit toelaat +STR_ORDER_REFIT_AUTO :{BLACK}Ombouwen +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Kies vrachttype voor ombouwen naar in deze order. Ctrl+Klik om ombouw opdracht te verwijderen. Ombouwen wordt alleen uitgevoerd als het voertuig dit toelaat STR_ORDER_DROP_REFIT_AUTO :Voorgedefinieerde vracht STR_ORDER_DROP_REFIT_AUTO_ANY :Beschikbare vracht @@ -3770,18 +3858,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Niet lossen en STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Niet lossen en één soort vracht volledig laden) STR_ORDER_NO_UNLOAD_NO_LOAD :(Niet lossen en niet laden) -STR_ORDER_AUTO_REFIT :(Auto-ombouw naar {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Volledig laden met auto-ombouw naar {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Volledig willekeurige vracht laden met auto-ombouw naar {STRING}) -STR_ORDER_UNLOAD_REFIT :(Lossen en neem vracht met auto-ombouw naar {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Lossen en wacht op volledig geladen vracht met auto-ombouw naar {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Lossen en wacht op willekeurig volledig geladen vracht met auto-ombouw naar {STRING}) -STR_ORDER_TRANSFER_REFIT :(Overdragen en neem vracht met auto-ombouw naar {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overdragen en wacht op volledig geladen vracht met auto-ombouw naar {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overdragen en wacht op willekeurige vollediggeladen vracht met auto-ombouw naar {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Niet lossen en neem vracht met auto-ombouw naar {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Niet lossen en wacht op volledig geladen vracht met auto-ombouw naar {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Niet lossen en wacht voor willekeurige volledigladen vracht met auto-ombouw naar {STRING}) +STR_ORDER_AUTO_REFIT :(Ombouw naar {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Volledig laden met ombouw naar {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Volledig willekeurige vracht laden met ombouw naar {STRING}) +STR_ORDER_UNLOAD_REFIT :(Lossen en neem vracht met ombouw naar {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Lossen en wacht op volledig geladen vracht met ombouw naar {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Lossen en wacht op willekeurig volledig geladen vracht met ombouw naar {STRING}) +STR_ORDER_TRANSFER_REFIT :(Overdragen en neem vracht met ombouw naar {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overdragen en wacht op volledig geladen vracht met ombouw naar {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overdragen en wacht op willekeurige vollediggeladen vracht met ombouw naar {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Niet lossen en neem vracht met ombouw naar {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Niet lossen en wacht op volledig geladen vracht met ombouw naar {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Niet lossen en wacht voor willekeurige volledigladen vracht met ombouw naar {STRING}) STR_ORDER_AUTO_REFIT_ANY :beschikbare vracht @@ -3810,10 +3898,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reis (geen dien STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis met maximaal {2:VELOCITY} (geen tijdschema) STR_TIMETABLE_TRAVEL_FOR :Reis naar {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis {STRING} met maximaal {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reis (gedurende {STRING}, geen tijdschema) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reis (gedurende {STRING}, geen tijdschema) maximaal {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(wacht gedurende {STRING}, geen tijdschema) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis gedurende {STRING}, geen tijdschema) STR_TIMETABLE_STAY_FOR :en blijf voor {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :en rijd naar {STRING} -STR_TIMETABLE_DAYS :{COMMA} dag{P "" en} -STR_TIMETABLE_TICKS :{COMMA} tik{P "" ken} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" en} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ken} STR_TIMETABLE_TOTAL_TIME :{BLACK}Dit tijdschema duurt {STRING} om te volbrengen STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Dit tijdschema duurt minstens {STRING} om te volbrengen (niet alles geselecteerd) @@ -3939,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :Aantal dagen da STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} leesme van {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} wijzigingen van {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licentie van {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Tekst afbreken +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Maak de tekst passen in het scherm zonder te hoeven scrollen STR_TEXTFILE_VIEW_README :{BLACK}Bekijk leesme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Wijzigingen STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licentie @@ -4049,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Graafwer STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... al op zeeniveau STR_ERROR_TOO_HIGH :{WHITE}... te hoog STR_ERROR_ALREADY_LEVELLED :{WHITE}... al vlak +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Hierna zou de brug hierboven te hoog zijn. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan bedrijfsnaam niet veranderen... @@ -4075,7 +4170,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... te d STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... te dicht bij een andere plaats STR_ERROR_TOO_MANY_TOWNS :{WHITE}... te veel plaatsen STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... er is geen ruimte meer op de kaart -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}De plaats bouwt geen wegen. Het bouwen van wegen kan aangezet worden via Geavanceerde Instellingen->Economie->Plaatsen +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}De plaats bouwt geen wegen. Het bouwen van wegen kan aangezet worden via Geavanceerde Instellingen->Omgeving->Plaatsen STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Wegwerkzaamheden in uitvoering STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan deze plaats niet verwijderen...{}Een station of depot verwijst naar deze plaats of een door de plaats beheerde tegel kan niet worden verwijderd STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... er is geen geschikte plaats voor een standbeeld in het centrum van dit dorp @@ -4099,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... boss STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan alleen boven de sneeuwlijn gebouwd worden STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan alleen onder de sneeuwlijn gebouwd worden +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Er waren een geschikte locaties voor '{STRING}' industrieën +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Wijzig de kaart-generatie parameters om een betere kaart te krijgen + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan hier geen treinstation bouwen... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan hier geen bushalte bouwen... @@ -4235,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Brug moe STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan niet beginnen en eindigen op dezelfde plaats STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Begin van bruggen niet op hetzelfde niveau STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is te laag voor dit terrein +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Brug is te hoogte voor dit terrein. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Begin en einde moeten op een lijn staan STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... uiteinden van brug moeten beiden op land zijn STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brug te lang @@ -4261,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... het STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan groep niet maken... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan deze groep niet verwijderen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan deze groep niet hernoemen... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan huidige groep niet instellen... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan niet alle voertuigen van deze groep verwijderen... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan niet alle voertuigen aan deze groep toevoegen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan niet alle gedeelde voertuigen aan deze groep toevoegen... @@ -4495,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Stoom) @@ -4704,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Ve STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Veerboot STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Goederenschip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Goederenschip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Goederenschip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Goederenschip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Goederenschip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (verborgen) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/english.txt b/src/lang/english.txt index 7d19157a38..5ad8ff49c3 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Fizzy Drink # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passenger{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} of coal -STR_QUANTITY_MAIL :{COMMA} bag{P "" s} of mail +STR_QUANTITY_MAIL :{COMMA}{NBSP}bag{P "" s} of mail STR_QUANTITY_OIL :{VOLUME_LONG} of oil -STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} of livestock -STR_QUANTITY_GOODS :{COMMA} crate{P "" s} of goods +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}item{P "" s} of livestock +STR_QUANTITY_GOODS :{COMMA}{NBSP}crate{P "" s} of goods STR_QUANTITY_GRAIN :{WEIGHT_LONG} of grain STR_QUANTITY_WOOD :{WEIGHT_LONG} of wood STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} of iron ore STR_QUANTITY_STEEL :{WEIGHT_LONG} of steel -STR_QUANTITY_VALUABLES :{COMMA} bag{P "" s} of valuables +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bag{P "" s} of valuables STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} of copper ore STR_QUANTITY_MAIZE :{WEIGHT_LONG} of maize STR_QUANTITY_FRUIT :{WEIGHT_LONG} of fruit -STR_QUANTITY_DIAMONDS :{COMMA} bag{P "" s} of diamonds +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bag{P "" s} of diamonds STR_QUANTITY_FOOD :{WEIGHT_LONG} of food STR_QUANTITY_PAPER :{WEIGHT_LONG} of paper -STR_QUANTITY_GOLD :{COMMA} bag{P "" s} of gold +STR_QUANTITY_GOLD :{COMMA}{NBSP}bag{P "" s} of gold STR_QUANTITY_WATER :{VOLUME_LONG} of water STR_QUANTITY_WHEAT :{WEIGHT_LONG} of wheat STR_QUANTITY_RUBBER :{VOLUME_LONG} of rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} of sugar -STR_QUANTITY_TOYS :{COMMA} toy{P "" s} -STR_QUANTITY_SWEETS :{COMMA} bag{P "" s} of sweets +STR_QUANTITY_TOYS :{COMMA}{NBSP}toy{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}bag{P "" s} of sweets STR_QUANTITY_COLA :{VOLUME_LONG} of cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} of candyfloss STR_QUANTITY_BUBBLES :{COMMA} bubble{P "" s} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passenger{P "" s} -STR_BAGS :{COMMA} bag{P "" s} -STR_TONS :{COMMA} tonne{P "" s} -STR_LITERS :{COMMA} litre{P "" s} -STR_ITEMS :{COMMA} item{P "" s} -STR_CRATES :{COMMA} crate{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} +STR_BAGS :{COMMA}{NBSP}bag{P "" s} +STR_TONS :{COMMA}{NBSP}tonne{P "" s} +STR_LITERS :{COMMA}{NBSP}litre{P "" s} +STR_ITEMS :{COMMA}{NBSP}item{P "" s} +STR_CRATES :{COMMA}{NBSP}crate{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dark Blue @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Grey STR_COLOUR_WHITE :White # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonne{P "" s} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P "" s} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonne{P "" s} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litre{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter string: @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll b STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Show hidden + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}By enabling this button, the hidden train vehicles are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}By enabling this button, the hidden road vehicles are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}By enabling this button, the hidden ships are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}By enabling this button, the hidden aircraft are also displayed + # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel @@ -293,10 +304,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (class STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Power STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort -STR_SORT_BY_INTRO_DATE :Introduction Date -STR_SORT_BY_RUNNING_COST :Running Cost -STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost -STR_SORT_BY_CARGO_CAPACITY :Cargo Capacity +STR_SORT_BY_INTRO_DATE :Introduction date +STR_SORT_BY_RUNNING_COST :Running cost +STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost +STR_SORT_BY_CARGO_CAPACITY :Cargo capacity STR_SORT_BY_RANGE :Range STR_SORT_BY_POPULATION :Population STR_SORT_BY_RATING :Rating @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Exit ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Game options -STR_SETTINGS_MENU_CONFIG_SETTINGS :Advanced settings +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Settings STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Game script settings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF settings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency options @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toggle colouring of dirty blocks ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12th STR_ORDINAL_NUMBER_13TH :13th STR_ORDINAL_NUMBER_14TH :14th STR_ORDINAL_NUMBER_15TH :15th -STR_ORDINAL_NUMBER_16TH :16th -STR_ORDINAL_NUMBER_17TH :17th -STR_ORDINAL_NUMBER_18TH :18th -STR_ORDINAL_NUMBER_19TH :19th -STR_ORDINAL_NUMBER_20TH :20th -STR_ORDINAL_NUMBER_21ST :21st -STR_ORDINAL_NUMBER_22ND :22nd -STR_ORDINAL_NUMBER_23RD :23rd -STR_ORDINAL_NUMBER_24TH :24th -STR_ORDINAL_NUMBER_25TH :25th -STR_ORDINAL_NUMBER_26TH :26th -STR_ORDINAL_NUMBER_27TH :27th -STR_ORDINAL_NUMBER_28TH :28th -STR_ORDINAL_NUMBER_29TH :29th -STR_ORDINAL_NUMBER_30TH :30th -STR_ORDINAL_NUMBER_31ST :31st +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1st +STR_DAY_NUMBER_2ND :2nd +STR_DAY_NUMBER_3RD :3rd +STR_DAY_NUMBER_4TH :4th +STR_DAY_NUMBER_5TH :5th +STR_DAY_NUMBER_6TH :6th +STR_DAY_NUMBER_7TH :7th +STR_DAY_NUMBER_8TH :8th +STR_DAY_NUMBER_9TH :9th +STR_DAY_NUMBER_10TH :10th +STR_DAY_NUMBER_11TH :11th +STR_DAY_NUMBER_12TH :12th +STR_DAY_NUMBER_13TH :13th +STR_DAY_NUMBER_14TH :14th +STR_DAY_NUMBER_15TH :15th +STR_DAY_NUMBER_16TH :16th +STR_DAY_NUMBER_17TH :17th +STR_DAY_NUMBER_18TH :18th +STR_DAY_NUMBER_19TH :19th +STR_DAY_NUMBER_20TH :20th +STR_DAY_NUMBER_21ST :21st +STR_DAY_NUMBER_22ND :22nd +STR_DAY_NUMBER_23RD :23rd +STR_DAY_NUMBER_24TH :24th +STR_DAY_NUMBER_25TH :25th +STR_DAY_NUMBER_26TH :26th +STR_DAY_NUMBER_27TH :27th +STR_DAY_NUMBER_28TH :28th +STR_DAY_NUMBER_29TH :29th +STR_DAY_NUMBER_30TH :30th +STR_DAY_NUMBER_31ST :31st ############ range for days ends ############ range for months starts @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} has in its orders an airport whose runway is too short STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Select side of road for vehicles to drive on STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Drive on left @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Screen r STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Select the screen resolution to use STR_GAME_OPTIONS_RESOLUTION_OTHER :other -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshot format -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Select the screenshot format to use +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interface size +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface element size to use + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Double size +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quad size STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select t STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Very Flat STR_TERRAIN_TYPE_FLAT :Flat STR_TERRAIN_TYPE_HILLY :Hilly STR_TERRAIN_TYPE_MOUNTAINOUS :Mountainous +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Permissive STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostile STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Advanced Settings +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Settings STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expand all STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Collapse all @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; affects only current company) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings -STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings -STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters +STR_CONFIG_SETTING_RESTRICT_BASIC :Basic (show only important settings) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced (show most settings) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (show all settings, including weird ones) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a different value than the default STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affects only new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affects only current company) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTINGS_NONE :{WHITE}- None - STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On @@ -1122,12 +1159,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING2} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure -STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING2} +STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING2} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area -STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING2} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be build on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations -STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc. (autoslope): {STRING2} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum map height: {STRING2} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Set the maximum allowed height for mountains on the map +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the maximum map height to this value. At least one mountain on the map is higher +STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc.: {STRING2} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow landscaping under buildings and tracks without removing them STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING2} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports @@ -1151,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains a STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow to join stations not directly adjacent: {STRING2} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts. Needs Ctrl+Click while placing the new parts -STR_CONFIG_SETTING_IMPROVEDLOAD :Use improved loading algorithm: {STRING2} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :If enabled, multiple vehicles waiting at a station are loaded sequentially. Loading of the next vehicle only starts when there is enough cargo waiting to completely fill the first vehicle -STR_CONFIG_SETTING_GRADUAL_LOADING :Load vehicles gradually: {STRING2} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradually load vehicles using vehicle specific loading durations, instead of loading everything at once with a fixed time depending only on the amount of cargo loaded STR_CONFIG_SETTING_INFLATION :Inflation: {STRING2} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Enable inflation in the economy, where costs are slightly faster rising than payments -STR_CONFIG_SETTING_SELECTGOODS :Deliver cargo to a station only when there is a demand: {STRING2} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Only deliver cargo to a station that was requested from a loading vehicle. This prevents bad ratings for cargoes that are not serviced at a station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum bridge length: {STRING2} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum length for building bridges +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximum bridge height: {STRING2} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximum height for building bridges STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnel length: {STRING2} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum length for building tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manual primary industry construction method: {STRING2} @@ -1186,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Place where a t STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :near end STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middle STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :far end -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Road vehicle queueing (with quantum effects): {STRING2} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Make road vehicle wait in front of occupied road stops until they are cleared STR_CONFIG_SETTING_AUTOSCROLL :Pan window when mouse is at the edge: {STRING2} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :When enabled, viewports will start to scroll when the mouse is near the edge of the window STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Disabled @@ -1214,14 +1246,10 @@ STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Set the chance STR_CONFIG_SETTING_PLANE_CRASHES_NONE :None STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduced STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-through road stops on town owned roads: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-through road stops on town owned roads: {STRING2} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Allow construction of drive-through road stops on town-owned roads STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow drive-through road stops on roads owned by competitors: {STRING2} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies -STR_CONFIG_SETTING_ADJACENT_STATIONS :Allow building adjacent stations: {STRING2} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Allow different stations to touch each other -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Enable multiple NewGRF engine sets: {STRING2} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Compatibility option for old NewGRFs. Do not disable this, unless you know exactly what you are doing! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Changing this setting is not possible when there are vehicles STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastructure maintenance: {STRING2} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :When enabled, infrastructure causes maintenance costs. The cost grows over-proportional with the network size, thus affecting bigger companies more than smaller ones @@ -1242,7 +1270,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING2} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets automatically replaced when the renew conditions are fulfilled -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING2} max age +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING2} maximum age STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after @@ -1252,39 +1280,53 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of err STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} second{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING2} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips can be bound to the right mouse button -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} second{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} millisecond{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click STR_CONFIG_SETTING_POPULATION_IN_LABEL :Show town population in the town name label: {STRING2} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the population of towns in their label on the map STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING2} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colours are easier to distinguish +STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING2} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landscapes define basic gameplay scenarios with different cargos and town growth requirements. NewGRF and Game Scripts allow finer control though STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING2} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :The original generator depends on the base graphics set, and composes fixed landscape shapes. TerraGenesis is a Perlin noise based generator with finer control settings STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING2} +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING2} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING2} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING2} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING2} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING2} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough +STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING2} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous +STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING2} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate STR_CONFIG_SETTING_TREE_PLACER :Tree placer algorithm: {STRING2} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Choose the distribution of trees on the map: 'Original' plants trees uniformly scattered, 'Improved' plants them in groups STR_CONFIG_SETTING_TREE_PLACER_NONE :None STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Improved +STR_CONFIG_SETTING_ROAD_SIDE :Road vehicles: {STRING2} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Choose the driving side STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING2} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :The height level a flat scenario map gets: {STRING2} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Enable landscaping the tiles at the map borders: {STRING2} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, the map borders will always be ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water -STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING2} +STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING2} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area the parts of a single station may be spread out on. Note that high values will slow the game STR_CONFIG_SETTING_SERVICEATHELIPAD :Service helicopters at helipads automatically: {STRING2} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport @@ -1301,7 +1343,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING2} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations -STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING2} +STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING2} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific) STR_CONFIG_SETTING_LIVERIES_NONE :None STR_CONFIG_SETTING_LIVERIES_OWN :Own company @@ -1331,17 +1373,15 @@ 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_AUTOSAVE :Autosave: {STRING2} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Use the {STRING2} date format for savegame names STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format of the date in save game filenames STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING2} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING2} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :When paused allow: {STRING2} @@ -1350,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING2} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING2} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING2} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles @@ -1365,7 +1405,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING2} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING2} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different colour to assist in problems with trains refusing to enter path-based blocks STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING2} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use @@ -1391,13 +1431,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING2} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure -STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING2} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING2} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING2} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING2} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have -STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING2} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING2} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have -STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING2} +STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING2} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING2} @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service interva STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether servicing of vehicles is triggered by the time passed since last service or by reliability dropping by a certain percentage of the maximum reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING2} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} day{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}day{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Default service interval for road vehicles: {STRING2} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Set the default service interval for new road vehicles, if no explicit service interval is set for the vehicle @@ -1491,7 +1531,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the beha STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatically build semaphores before: {STRING2} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Set the year when electric signals will be used for tracks. Before this year, non-electric signals will be used (which have the exact same function, but different looks) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Enable the signal GUI: {STRING2} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Display a window for choosing signal types to build, instead of only window-less signal-type rotation with Ctrl+clicking on build signals +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Display a window for choosing signal types to build, instead of only window-less signal-type rotation with Ctrl+clicking on built signals STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Signal type to build by default: {STRING2} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Default signal type to use STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Block signals @@ -1515,7 +1555,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build level crossings: {STRING2} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build level crossings STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING2} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING2} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING2} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remove absurd road-elements during the road construction: {STRING2} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remove dead road ends during funded road reconstruction -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING2} day{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING2}{NBSP}day{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X days. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING2} day{P 0:2 "" s} for recalculation of distribution graph +STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING2}{NBSP}day{P 0:2 "" s} for recalculation of distribution graph STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of days. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric @@ -1578,16 +1616,16 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetric" mea STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribution mode for mail: {STRING2} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of mail can be sent in either direction. "manual" means that no automatic distribution will take place for mail. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargoes. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING2} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING2} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING2} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using capacious paths: {STRING2} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING2} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units: {STRING2} @@ -1603,50 +1641,52 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Weights units: {STRING2} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Whenever weights are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Whenever a weight is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonne) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumes units: {STRING2} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Whenever volumes are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Whenever a volume is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Tractive effort units: {STRING2} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Whenever tractive effort, also known as tractive force, is shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Whenever a tractive effort (also known as tractive force) is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Heights units: {STRING2} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Whenever heights are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Whenever a height is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics +STR_CONFIG_SETTING_SOUND :{ORANGE}Sound +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors +STR_CONFIG_SETTING_COMPANY :{ORANGE}Company +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economy -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Cargo Distribution +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Display options -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound effects -STR_CONFIG_SETTING_NEWS :{ORANGE}News and messages -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signals -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Cargo handling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenew -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servicing -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trains -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industries STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1700,7 +1740,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multipla STR_INTRO_GAME_OPTIONS :{BLACK}Game Options STR_INTRO_HIGHSCORE :{BLACK}Highscore Table -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Advanced Settings +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Settings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Settings STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Content STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Game Script Settings @@ -1720,7 +1760,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Select ' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Display game options STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Display highscore table -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Display advanced settings +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Display settings STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Display NewGRF settings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check for new and updated content to download STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Display AI/Game script settings @@ -1760,6 +1800,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING1} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels may cross each other: {ORANGE}{STRING1} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplanes will not crash (frequently) on small airports: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edit the maximum map height: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edit the maximum height of mountains on the map STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperate landscape STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arctic landscape STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropical landscape @@ -1808,6 +1850,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Tram STR_FACE_CAPTION :{WHITE}Face Selection STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection +STR_FACE_RANDOM :{BLACK}Randomise STR_FACE_MALE_BUTTON :{BLACK}Male STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces @@ -1928,13 +1971,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect STR_NETWORK_START_SERVER_UNADVERTISED :No STR_NETWORK_START_SERVER_ADVERTISED :Yes STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain amount of companies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain amount of spectators STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server @@ -2047,6 +2090,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password @@ -2276,7 +2320,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Build ra STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Build train depot (for buying and servicing trains). Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convert rail to waypoint. Ctrl enables joining waypoints. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Build railway station. Ctrl enables joining stations. Shift toggles building/showing cost estimate -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Build railway signals. Ctrl toggles semaphore/light signals{}Dragging builds signals along a straight stretch of rail. Ctrl builds signals till the next junction{}Ctrl+Click toggles opening the signal selection window. Shift toggles building/showing cost estimate +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Build railway signals. Ctrl toggles semaphore/light signals{}Dragging builds signals along a straight stretch of rail. Ctrl builds signals up to the next junction or signal{}Ctrl+Click toggles opening the signal selection window. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Build railway bridge. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Build railway tunnel. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toggle build/remove for railway track, signals, waypoints and stations. Hold Ctrl to also remove the rail of waypoints and stations @@ -2551,6 +2595,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks @@ -2647,7 +2692,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2666,6 +2711,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING1} @@ -2681,13 +2727,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns: STR_MAPGEN_DATE :{BLACK}Date: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum map height: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Increase the maximum height of mountains on the map by one +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Decrease the maximum height of mountains on the map by one STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height one up STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down -STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed -STR_MAPGEN_RANDOM :{BLACK}Randomise -STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator: STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type: @@ -2714,7 +2759,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enter a random seed +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Change maximum map height STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year @@ -2769,6 +2814,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Move Up STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move the selected NewGRF file up the list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Move Down STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move the selected NewGRF file down the list +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Upgrade +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Upgrade NewGRF files for which you have a newer version installed STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parameters @@ -2793,6 +2840,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matching f STR_NEWGRF_SETTINGS_DISABLED :{RED}Disabled STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible with this version of OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Save preset +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}List of available presets, select one to copy it to the save name below +STR_SAVE_PRESET_TITLE :{BLACK}Enter a name for the preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Currently selected name for the preset to save +STR_SAVE_PRESET_CANCEL :{BLACK}Cancel +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Don't change the preset +STR_SAVE_PRESET_SAVE :{BLACK}Save +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Save the preset to the current selected name + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Change NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Close @@ -2816,14 +2873,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({RAW_STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the end +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the last sprite to the first STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Go to the given sprite. If the sprite is not a normal sprite, proceed to the next normal sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reset relative +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reset the current relative offsets +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absolute) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relative) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen @@ -2880,6 +2940,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi STR_NEWGRF_BROKEN :{WHITE}Behaviour of NewGRF '{0:RAW_STRING}' is likely to cause desyncs and/or crashes STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:RAW_STRING}' provides incorrect information @@ -2894,6 +2955,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while... @@ -2931,8 +2995,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} delivered STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (still required) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} (funded) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} (funded) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Town is {RED}not{BLACK} growing STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Noise limit in town: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centre the main view on town location. Ctrl+Click opens a new viewport on town location @@ -2992,7 +3056,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Warning STR_GOAL_QUESTION_CAPTION_ERROR :Error -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No @@ -3011,6 +3075,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :Postpone STR_GOAL_QUESTION_BUTTON_SURRENDER :Surrender STR_GOAL_QUESTION_BUTTON_CLOSE :Close +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies @@ -3031,6 +3096,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Go to next page +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Invalid goal reference # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Station names - click on name to centre main view on station. Ctrl+Click opens a new viewport on station location @@ -3045,7 +3111,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}No cargo # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Waiting: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) @@ -3140,7 +3205,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance STR_FINANCES_LOAN_TITLE :{WHITE}Loan -STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible @@ -3289,12 +3354,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungrouped road STR_GROUP_DEFAULT_SHIPS :Ungrouped ships STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircraft -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? + STR_GROUP_ADD_SHARED_VEHICLE :Add shared vehicles STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehicles @@ -3332,10 +3400,10 @@ STR_PURCHASE_INFO_ALL_BUT :All but {CARGO_ STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tractive Effort: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Range: {GOLD}{COMMA} tiles -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Train vehicle selection list - click on vehicle for information -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Road vehicle selection list - click on vehicle for information -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ship selection list - click on ship for information -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft selection list - click on aircraft for information +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ship selection list. Click on ship for information. Ctrl+Click for toggling hiding of the ship type +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft selection list. Click on aircraft for information. Ctrl+Click for toggling hiding of the aircraft type STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle @@ -3357,6 +3425,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Rename r STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Rename ship type STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Rename aircraft type +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Hide + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Display + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the train vehicle type +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the road vehicle type +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the ship type +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the aircraft type + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Rename train vehicle type STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Rename road vehicle type STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Rename ship type @@ -3410,7 +3493,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clone Ve STR_DEPOT_CLONE_SHIP :{BLACK}Clone Ship STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clone Aircraft -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}This will buy a copy of a train including all cars. Click this button and then on a train inside or outside the depot. Ctrl+Click share the orders. Shift+Click shows estimated cost without purchase +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}This will buy a copy of a train including all cars. Click this button and then on a train inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}This will buy a copy of a road vehicle. Click this button and then on a road vehicle inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}This will buy a copy of a ship. Click this button and then on a ship inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}This will buy a copy of an aircraft. Click this button and then on an aircraft inside or outside the hangar. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase @@ -3461,6 +3544,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road Vehicle STR_REPLACE_VEHICLE_SHIP :Ship STR_REPLACE_VEHICLE_AIRCRAFT :Aircraft +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicles in use +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Column with vehicles that you own +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Available vehicles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Column with vehicles available for replacement + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type @@ -3585,7 +3673,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}days{BLACK} Last service: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} Last service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicing interval: {LTBLUE}{COMMA}%{BLACK} Last service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Increase servicing interval by 10. Ctrl+Click increases servicing interval by 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Decrease servicing interval by 10. Ctrl+Click decreases servicing interval by 5 @@ -3683,8 +3771,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t STR_ORDER_REFIT :{BLACK}Refit STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction -STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it +STR_ORDER_REFIT_AUTO :{BLACK}Refit at station +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it STR_ORDER_DROP_REFIT_AUTO :Fixed cargo STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo @@ -3755,7 +3843,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING1} STR_ORDER_IMPLICIT :(Implicit) @@ -3775,18 +3863,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load) STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading) -STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING}) +STR_ORDER_AUTO_REFIT :(Refit to {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING}) +STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING}) STR_ORDER_AUTO_REFIT_ANY :available cargo @@ -3812,13 +3900,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl STR_TIMETABLE_NO_TRAVEL :No travel STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING1} STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING1} with at most {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Travel (for {STRING1}, not timetabled) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Travel (for {STRING1}, not timetabled) with at most {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRING1}, not timetabled) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING1}, not timetabled) STR_TIMETABLE_STAY_FOR :and stay for {STRING1} STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING1} -STR_TIMETABLE_DAYS :{COMMA} day{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING1} to complete STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING1} to complete (not all timetabled) @@ -3944,6 +4036,8 @@ STR_AI_SETTINGS_START_DELAY :Number of days STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {RAW_STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {RAW_STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licence of {RAW_STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll STR_TEXTFILE_VIEW_README :{BLACK}View readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence @@ -3977,9 +4071,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING1} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING1} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {RAW_STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {RAW_STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version @@ -4054,6 +4148,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Excavati STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... already at sea level STR_ERROR_TOO_HIGH :{WHITE}... too high STR_ERROR_ALREADY_LEVELLED :{WHITE}... already flat +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Afterwards the bridge above it would be too high. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Can't change company name... @@ -4080,7 +4175,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... too STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too close to another town STR_ERROR_TOO_MANY_TOWNS :{WHITE}... too many towns STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... there is no more space on the map -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Economy->Towns +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Settings->Environment->Towns STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the centre of this town @@ -4104,6 +4199,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... fore STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... can only be built above the snow-line STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... can only be built below the snow-line +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}There were no suitable places for '{STRING}' industries +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Change the map generation parameters to get a better map + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Can't build railway station here... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Can't build bus station... @@ -4240,6 +4338,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must dem STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Can't start and end in the same spot STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bridge heads not at the same level STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Bridge is too high for this terrain. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ends of bridge must both be on land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... bridge too long @@ -4266,6 +4365,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... you STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Can't create group... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Can't delete this group... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Can't rename group... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Can't set parent group... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Can't remove all vehicles from this group... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Can't add the vehicle to this group... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Can't add shared vehicles to group... @@ -4500,7 +4600,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) @@ -4709,7 +4809,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4803,6 +4903,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (hidden) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4838,8 +4939,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4850,9 +4949,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{RAW_STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING1}{WHITE} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 836a555133..252464a970 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Soft Drink # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passenger{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} of coal -STR_QUANTITY_MAIL :{COMMA} bag{P "" s} of mail +STR_QUANTITY_MAIL :{COMMA}{NBSP}bag{P "" s} of mail STR_QUANTITY_OIL :{VOLUME_LONG} of oil -STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} of livestock -STR_QUANTITY_GOODS :{COMMA} crate{P "" s} of goods +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}item{P "" s} of livestock +STR_QUANTITY_GOODS :{COMMA}{NBSP}crate{P "" s} of goods STR_QUANTITY_GRAIN :{WEIGHT_LONG} of grain STR_QUANTITY_WOOD :{WEIGHT_LONG} of wood STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} of iron ore STR_QUANTITY_STEEL :{WEIGHT_LONG} of steel -STR_QUANTITY_VALUABLES :{COMMA} bag{P "" s} of valuables +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bag{P "" s} of valuables STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} of copper ore STR_QUANTITY_MAIZE :{WEIGHT_LONG} of corn STR_QUANTITY_FRUIT :{WEIGHT_LONG} of fruit -STR_QUANTITY_DIAMONDS :{COMMA} bag{P "" s} of diamonds +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bag{P "" s} of diamonds STR_QUANTITY_FOOD :{WEIGHT_LONG} of food STR_QUANTITY_PAPER :{WEIGHT_LONG} of paper -STR_QUANTITY_GOLD :{COMMA} bag{P "" s} of gold +STR_QUANTITY_GOLD :{COMMA}{NBSP}bag{P "" s} of gold STR_QUANTITY_WATER :{VOLUME_LONG} of water STR_QUANTITY_WHEAT :{WEIGHT_LONG} of wheat STR_QUANTITY_RUBBER :{VOLUME_LONG} of rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} of sugar -STR_QUANTITY_TOYS :{COMMA} toy{P "" s} -STR_QUANTITY_SWEETS :{COMMA} bag{P "" s} of lollies +STR_QUANTITY_TOYS :{COMMA}{NBSP}toy{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}bag{P "" s} of sweets STR_QUANTITY_COLA :{VOLUME_LONG} of cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} of fairy floss STR_QUANTITY_BUBBLES :{COMMA} bubble{P "" s} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passenger{P "" s} -STR_BAGS :{COMMA} bag{P "" s} -STR_TONS :{COMMA} tonne{P "" s} -STR_LITERS :{COMMA} litre{P "" s} -STR_ITEMS :{COMMA} item{P "" s} -STR_CRATES :{COMMA} crate{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} +STR_BAGS :{COMMA}{NBSP}bag{P "" s} +STR_TONS :{COMMA}{NBSP}tonne{P "" s} +STR_LITERS :{COMMA}{NBSP}litre{P "" s} +STR_ITEMS :{COMMA}{NBSP}item{P "" s} +STR_CRATES :{COMMA}{NBSP}crate{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dark Blue @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Grey STR_COLOUR_WHITE :White # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonne{P "" s} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P "" s} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonne{P "" s} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litre{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter string: @@ -248,6 +248,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll b STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel @@ -293,10 +296,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (class STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Power STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort -STR_SORT_BY_INTRO_DATE :Introduction Date -STR_SORT_BY_RUNNING_COST :Running Cost -STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost -STR_SORT_BY_CARGO_CAPACITY :Cargo Capacity +STR_SORT_BY_INTRO_DATE :Introduction date +STR_SORT_BY_RUNNING_COST :Running cost +STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost +STR_SORT_BY_CARGO_CAPACITY :Cargo capacity STR_SORT_BY_RANGE :Range STR_SORT_BY_POPULATION :Population STR_SORT_BY_RATING :Rating @@ -361,7 +364,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :Exit ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Game options -STR_SETTINGS_MENU_CONFIG_SETTINGS :Advanced settings STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Game script settings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF settings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency options @@ -470,7 +472,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toggle colouring of dirty blocks ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd @@ -486,22 +488,40 @@ STR_ORDINAL_NUMBER_12TH :12th STR_ORDINAL_NUMBER_13TH :13th STR_ORDINAL_NUMBER_14TH :14th STR_ORDINAL_NUMBER_15TH :15th -STR_ORDINAL_NUMBER_16TH :16th -STR_ORDINAL_NUMBER_17TH :17th -STR_ORDINAL_NUMBER_18TH :18th -STR_ORDINAL_NUMBER_19TH :19th -STR_ORDINAL_NUMBER_20TH :20th -STR_ORDINAL_NUMBER_21ST :21st -STR_ORDINAL_NUMBER_22ND :22nd -STR_ORDINAL_NUMBER_23RD :23rd -STR_ORDINAL_NUMBER_24TH :24th -STR_ORDINAL_NUMBER_25TH :25th -STR_ORDINAL_NUMBER_26TH :26th -STR_ORDINAL_NUMBER_27TH :27th -STR_ORDINAL_NUMBER_28TH :28th -STR_ORDINAL_NUMBER_29TH :29th -STR_ORDINAL_NUMBER_30TH :30th -STR_ORDINAL_NUMBER_31ST :31st +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1st +STR_DAY_NUMBER_2ND :2nd +STR_DAY_NUMBER_3RD :3rd +STR_DAY_NUMBER_4TH :4th +STR_DAY_NUMBER_5TH :5th +STR_DAY_NUMBER_6TH :6th +STR_DAY_NUMBER_7TH :7th +STR_DAY_NUMBER_8TH :8th +STR_DAY_NUMBER_9TH :9th +STR_DAY_NUMBER_10TH :10th +STR_DAY_NUMBER_11TH :11th +STR_DAY_NUMBER_12TH :12th +STR_DAY_NUMBER_13TH :13th +STR_DAY_NUMBER_14TH :14th +STR_DAY_NUMBER_15TH :15th +STR_DAY_NUMBER_16TH :16th +STR_DAY_NUMBER_17TH :17th +STR_DAY_NUMBER_18TH :18th +STR_DAY_NUMBER_19TH :19th +STR_DAY_NUMBER_20TH :20th +STR_DAY_NUMBER_21ST :21st +STR_DAY_NUMBER_22ND :22nd +STR_DAY_NUMBER_23RD :23rd +STR_DAY_NUMBER_24TH :24th +STR_DAY_NUMBER_25TH :25th +STR_DAY_NUMBER_26TH :26th +STR_DAY_NUMBER_27TH :27th +STR_DAY_NUMBER_28TH :28th +STR_DAY_NUMBER_29TH :29th +STR_DAY_NUMBER_30TH :30th +STR_DAY_NUMBER_31ST :31st ############ range for days ends ############ range for months starts @@ -810,13 +830,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} has in its orders an airport whose runway is too short STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old @@ -899,10 +918,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Select side of road for vehicles to drive on STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Drive on left @@ -938,11 +953,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use @@ -954,8 +971,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Screen r STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Select the screen resolution to use STR_GAME_OPTIONS_RESOLUTION_OTHER :other -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshot format -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Select the screenshot format to use + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use @@ -971,6 +987,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select t STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed # Custom currency window @@ -1056,8 +1073,7 @@ STR_CITY_APPROVAL_HOSTILE :Hostile STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Advanced Settings +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expand all STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Collapse all @@ -1070,8 +1086,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; only affects new games) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; only affects current company) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings @@ -1079,12 +1096,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All settings -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; only affects new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; only affects current game) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; only affects new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; only affects current company) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTINGS_NONE :{WHITE}- None - STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On @@ -1122,12 +1143,10 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure -STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area -STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be built on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations -STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc. (autoslope): {STRING} +STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow landscaping under buildings and tracks without removing them STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports @@ -1151,14 +1170,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains a STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow to join stations not directly adjacent: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts. Needs Ctrl+Click while placing the new parts -STR_CONFIG_SETTING_IMPROVEDLOAD :Use improved loading algorithm: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :If enabled, multiple vehicles waiting at a station are loaded sequentially. Loading of the next vehicle only starts when there is enough cargo waiting to completely fill the first vehicle -STR_CONFIG_SETTING_GRADUAL_LOADING :Load vehicles gradually: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradually load vehicles using vehicle specific loading durations, instead of loading everything at once with a fixed time depending only on the amount of cargo loaded STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Enable inflation in the economy, where costs are rising slightly faster than payments -STR_CONFIG_SETTING_SELECTGOODS :Deliver cargo to a station only when there is a demand: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Only deliver cargo to a station that was requested from a loading vehicle. This prevents bad ratings for cargoes that are not serviced at a station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum bridge length: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum length for building bridges STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnel length: {STRING} @@ -1186,8 +1199,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Place where a t STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :near end STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middle STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :far end -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Road vehicle queueing (with quantum effects): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Make road vehicle wait in front of occupied road stops until they are cleared STR_CONFIG_SETTING_AUTOSCROLL :Pan window when mouse is at the edge: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :When enabled, viewports will start to scroll when the mouse is near the edge of the window STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Disabled @@ -1218,10 +1229,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-thr STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Allow construction of drive-through road stops on town-owned roads STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow drive-through road stops on roads owned by competitors: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies -STR_CONFIG_SETTING_ADJACENT_STATIONS :Allow building adjacent stations: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Allow different stations to touch each other -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Enable multiple NewGRF engine sets: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Compatibility option for old NewGRFs. Do not disable this, unless you know exactly what you are doing! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Changing this setting is not possible when there are vehicles STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastructure maintenance: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :When enabled, infrastructure causes maintenance costs. The cost grows in proportion to the network size, thus affecting larger companies more than smaller ones @@ -1242,7 +1249,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets replaced automatically when the renew conditions are fulfilled -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} max age +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} maximum age STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after @@ -1260,31 +1267,45 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the pop STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colours are easier to distinguish +STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landscapes define basic gameplay scenarios with different cargos and town growth requirements. NewGRF and Game Scripts allow finer control though STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :The original generator depends on the base graphics set, and composes fixed landscape shapes. TerraGenesis is a Perlin noise based generator with finer control settings STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough +STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous +STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate STR_CONFIG_SETTING_TREE_PLACER :Tree placer algorithm: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Choose the distribution of trees on the map: 'Original' plants trees uniformly scattered, 'Improved' plants them in groups STR_CONFIG_SETTING_TREE_PLACER_NONE :None STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Improved +STR_CONFIG_SETTING_ROAD_SIDE :Road vehicles: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Choose the driving side STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :The height level a flat scenario map gets: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Enable landscaping the tiles at the map borders: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, the map borders will always be ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water -STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area which parts of a single station may be spread out over. Note that high values will slow the game STR_CONFIG_SETTING_SERVICEATHELIPAD :Service helicopters at helipads automatically: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport @@ -1301,7 +1322,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations -STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING} +STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific) STR_CONFIG_SETTING_LIVERIES_NONE :None STR_CONFIG_SETTING_LIVERIES_OWN :Own company @@ -1331,17 +1352,15 @@ 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_AUTOSAVE :Autosave: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Use the {STRING} date format for savegame names STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format of the date in save game filenames STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :When paused allow: {STRING} @@ -1350,7 +1369,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles @@ -1365,7 +1384,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different colour to assist in problems with trains refusing to enter path-based blocks STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use @@ -1391,13 +1410,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure -STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have -STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have -STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING} @@ -1424,7 +1443,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service interva STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether servicing of vehicles is triggered by the time passed since last service or by reliability dropping by a certain percentage of the maximum reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} day{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}day{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Default service interval for road vehicles: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Set the default service interval for new road vehicles, if no explicit service interval is set for the vehicle @@ -1515,7 +1534,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build level crossings: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build level crossings STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden @@ -1563,12 +1582,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remove absurd road-elements during the road construction: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remove dead road ends during funded road reconstruction -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING} day{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING}{NBSP}day{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X days. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING} day{P 0:2 "" s} for recalculation of distribution graph +STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING}{NBSP}day{P 0:2 "" s} for recalculation of distribution graph STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of days. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric @@ -1580,14 +1597,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" mea STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargoes. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using capacious paths: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units: {STRING} @@ -1626,27 +1643,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics +STR_CONFIG_SETTING_SOUND :{ORANGE}Sound +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors +STR_CONFIG_SETTING_COMPANY :{ORANGE}Company +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economy -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Cargo Distribution +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Display options -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound effects -STR_CONFIG_SETTING_NEWS :{ORANGE}News and messages -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signals -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Cargo handling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenew -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servicing -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trains -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industries STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1714,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multipla STR_INTRO_GAME_OPTIONS :{BLACK}Game Options STR_INTRO_HIGHSCORE :{BLACK}Highscore Table -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Advanced Settings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Settings STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Content STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Game Script Settings @@ -1715,7 +1733,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Select ' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Display game options STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Display highscore table -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Display advanced settings STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Display NewGRF settings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check for new and updated content to download STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Display AI/Game script settings @@ -1803,6 +1820,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Tram STR_FACE_CAPTION :{WHITE}Face Selection STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection +STR_FACE_RANDOM :{BLACK}Randomise STR_FACE_MALE_BUTTON :{BLACK}Male STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces @@ -1923,13 +1941,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect STR_NETWORK_START_SERVER_UNADVERTISED :No STR_NETWORK_START_SERVER_ADVERTISED :Yes STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain amount of companies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain amount of spectators STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server @@ -2042,6 +2060,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password @@ -2546,6 +2565,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks @@ -2642,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2661,6 +2681,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2679,10 +2700,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of i STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height one up STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down -STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed -STR_MAPGEN_RANDOM :{BLACK}Randomise -STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator: STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type: @@ -2709,7 +2726,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enter a random seed STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year @@ -2764,6 +2780,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Move Up STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move the selected NewGRF file up the list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Move Down STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move the selected NewGRF file down the list +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Upgrade +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Upgrade NewGRF files for which you have a newer version installed STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parameters @@ -2788,6 +2806,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matching f STR_NEWGRF_SETTINGS_DISABLED :{RED}Disabled STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible with this version of OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Save preset +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}List of available presets, select one to copy it to the save name below +STR_SAVE_PRESET_TITLE :{BLACK}Enter a name for the preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Currently selected name for the preset to save +STR_SAVE_PRESET_CANCEL :{BLACK}Cancel +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Don't change the preset +STR_SAVE_PRESET_SAVE :{BLACK}Save +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Save the preset to the current selected name + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Change NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Close @@ -2818,7 +2846,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen @@ -2875,6 +2902,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi STR_NEWGRF_BROKEN :{WHITE}Behaviour of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' provides incorrect information @@ -2889,6 +2917,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while... @@ -2926,8 +2957,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} delivered STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (still required) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} (funded) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} (funded) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Town is {RED}not{BLACK} growing STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Noise limit in town: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centre the main view on town location. Ctrl+Click opens a new viewport on town location @@ -2987,7 +3018,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Warning STR_GOAL_QUESTION_CAPTION_ERROR :Error -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel STR_GOAL_QUESTION_BUTTON_OK :Ok STR_GOAL_QUESTION_BUTTON_NO :No @@ -3006,6 +3037,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :Postpone STR_GOAL_QUESTION_BUTTON_SURRENDER :Surrender STR_GOAL_QUESTION_BUTTON_CLOSE :Close +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies @@ -3026,6 +3058,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Go to next page +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Invalid goal reference # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Station names - click on name to centre main view on station. Ctrl+Click opens a new viewport on station location @@ -3040,7 +3073,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}No cargo # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Waiting: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) @@ -3135,7 +3167,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance STR_FINANCES_LOAN_TITLE :{WHITE}Loan -STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible @@ -3284,12 +3316,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungrouped road STR_GROUP_DEFAULT_SHIPS :Ungrouped ships STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircraft -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? + STR_GROUP_ADD_SHARED_VEHICLE :Add shared vehicles STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehicles @@ -3352,6 +3387,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Rename r STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Rename ship type STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Rename aircraft type + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Rename train vehicle type STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Rename road vehicle type STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Rename ship type @@ -3456,6 +3494,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road Vehicle STR_REPLACE_VEHICLE_SHIP :Ship STR_REPLACE_VEHICLE_AIRCRAFT :Aircraft + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type @@ -3580,7 +3619,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}days{BLACK} Last service: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} Last service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicing interval: {LTBLUE}{COMMA}%{BLACK} Last service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Increase servicing interval by 10. Ctrl+Click increases servicing interval by 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Decrease servicing interval by 10. Ctrl+Click decreases servicing interval by 5 @@ -3678,8 +3717,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t STR_ORDER_REFIT :{BLACK}Refit STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction -STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it +STR_ORDER_REFIT_AUTO :{BLACK}Refit at station +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it STR_ORDER_DROP_REFIT_AUTO :Fixed cargo STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo @@ -3770,18 +3809,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load) STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading) -STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING}) +STR_ORDER_AUTO_REFIT :(Refit to {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING}) +STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING}) STR_ORDER_AUTO_REFIT_ANY :available cargo @@ -3807,13 +3846,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl STR_TIMETABLE_NO_TRAVEL :No travel STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING} with at most {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Travel (for {STRING}, not timetabled) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Travel (for {STRING}, not timetabled) with at most {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRING}, not timetabled) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING}, not timetabled) STR_TIMETABLE_STAY_FOR :and stay for {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING} -STR_TIMETABLE_DAYS :{COMMA} day{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING} to complete STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING} to complete (not all timetabled) @@ -3939,6 +3982,8 @@ STR_AI_SETTINGS_START_DELAY :Number of days STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} license of {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll STR_TEXTFILE_VIEW_README :{BLACK}View readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}License @@ -4075,7 +4120,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... too STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too close to another town STR_ERROR_TOO_MANY_TOWNS :{WHITE}... too many towns STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... there is no more space on the map -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Economy->Towns +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Environment->Towns STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the centre of this town @@ -4099,6 +4144,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... fore STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... can only be built above the snow-line STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... can only be built below the snow-line +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}There were no suitable places for '{STRING}' industries +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Change the map generation parameters to get a better map + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Can't build railway station here... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Can't build bus station... @@ -4261,6 +4309,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... you STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Can't create group... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Can't delete this group... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Can't rename group... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Can't set parent group... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Can't remove all vehicles from this group... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Can't add the vehicle to this group... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Can't add shared vehicles to group... @@ -4495,7 +4544,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) @@ -4704,7 +4753,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4833,8 +4882,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4892,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 1c5570594c..baa4166579 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Fizzy Drink # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passenger{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} of coal -STR_QUANTITY_MAIL :{COMMA} bag{P "" s} of mail +STR_QUANTITY_MAIL :{COMMA}{NBSP}bag{P "" s} of mail STR_QUANTITY_OIL :{VOLUME_LONG} of oil -STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} of livestock -STR_QUANTITY_GOODS :{COMMA} crate{P "" s} of goods +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}head of livestock +STR_QUANTITY_GOODS :{COMMA}{NBSP}crate{P "" s} of goods STR_QUANTITY_GRAIN :{WEIGHT_LONG} of grain STR_QUANTITY_WOOD :{WEIGHT_LONG} of wood STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} of iron ore STR_QUANTITY_STEEL :{WEIGHT_LONG} of steel -STR_QUANTITY_VALUABLES :{COMMA} bag{P "" s} of valuables +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bag{P "" s} of valuables STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} of copper ore STR_QUANTITY_MAIZE :{WEIGHT_LONG} of maize STR_QUANTITY_FRUIT :{WEIGHT_LONG} of fruit -STR_QUANTITY_DIAMONDS :{COMMA} bag{P "" s} of diamonds +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bag{P "" s} of diamonds STR_QUANTITY_FOOD :{WEIGHT_LONG} of food STR_QUANTITY_PAPER :{WEIGHT_LONG} of paper -STR_QUANTITY_GOLD :{COMMA} bag{P "" s} of gold +STR_QUANTITY_GOLD :{COMMA}{NBSP}bag{P "" s} of gold STR_QUANTITY_WATER :{VOLUME_LONG} of water STR_QUANTITY_WHEAT :{WEIGHT_LONG} of wheat STR_QUANTITY_RUBBER :{VOLUME_LONG} of rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} of sugar -STR_QUANTITY_TOYS :{COMMA} toy{P "" s} -STR_QUANTITY_SWEETS :{COMMA} bag{P "" s} of candy +STR_QUANTITY_TOYS :{COMMA}{NBSP}toy{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}bag{P "" s} of candy STR_QUANTITY_COLA :{VOLUME_LONG} of cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} of cotton candy STR_QUANTITY_BUBBLES :{COMMA} bubble{P "" s} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passenger{P "" s} -STR_BAGS :{COMMA} bag{P "" s} -STR_TONS :{COMMA} tonne{P "" s} -STR_LITERS :{COMMA} liter{P "" s} -STR_ITEMS :{COMMA} item{P "" s} -STR_CRATES :{COMMA} crate{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}passenger{P "" s} +STR_BAGS :{COMMA}{NBSP}bag{P "" s} +STR_TONS :{COMMA}{NBSP}tonne{P "" s} +STR_LITERS :{COMMA}{NBSP}liter{P "" s} +STR_ITEMS :{COMMA}{NBSP}item{P "" s} +STR_CRATES :{COMMA}{NBSP}crate{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dark Blue @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Gray STR_COLOUR_WHITE :White # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonne{P "" s} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P "" s} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonne{P "" s} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litre{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter string: @@ -241,13 +241,24 @@ STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Window t STR_TOOLTIP_SHADE :{BLACK}Shade window - only show the title bar STR_TOOLTIP_DEBUG :{BLACK}Show NewGRF debug information STR_TOOLTIP_DEFSIZE :{BLACK}Resize window to default size. Ctrl+Click to store current size as default -STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable for the 'Close All Windows' key. Ctrl+Click to also save state as default +STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable by the 'Close All Windows' key. Ctrl+Click to also save state as default STR_TOOLTIP_RESIZE :{BLACK}Click and drag to resize this window STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list up/down STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Show hidden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Show hidden + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}By enabling this button, the hidden train vehicles are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}By enabling this button, the hidden road vehicles are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}By enabling this button, the hidden ships are also displayed +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}By enabling this button, the hidden aircraft are also displayed + # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel @@ -293,10 +304,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (class STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Power STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort -STR_SORT_BY_INTRO_DATE :Introduction Date -STR_SORT_BY_RUNNING_COST :Running Cost -STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost -STR_SORT_BY_CARGO_CAPACITY :Cargo Capacity +STR_SORT_BY_INTRO_DATE :Introduction date +STR_SORT_BY_RUNNING_COST :Running cost +STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost +STR_SORT_BY_CARGO_CAPACITY :Cargo capacity STR_SORT_BY_RANGE :Range STR_SORT_BY_POPULATION :Population STR_SORT_BY_RATING :Rating @@ -306,7 +317,7 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause ga STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Fast forward the game STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Options STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, abandon game, quit -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Display map +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Display map, extra viewport, or list of signs STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Display town directory STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Display subsidies STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Display list of company's stations @@ -316,7 +327,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Display STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Display goal list STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Display graphs STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Display company league table -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fund construction of new industry +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fund construction of new industry or list all industries STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Display list of company's trains. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Display list of company's road vehicles. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Display list of company's ships. Ctrl+Click toggles opening the group/vehicle list @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Quit ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Game options -STR_SETTINGS_MENU_CONFIG_SETTINGS :Advanced settings +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Settings STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Game script settings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF settings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency options @@ -452,7 +463,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sound/music ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Last message/news report -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message History +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message history ############ range ends here ############ range for about menu starts @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toggle coloring of dirty blocks ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12th STR_ORDINAL_NUMBER_13TH :13th STR_ORDINAL_NUMBER_14TH :14th STR_ORDINAL_NUMBER_15TH :15th -STR_ORDINAL_NUMBER_16TH :16th -STR_ORDINAL_NUMBER_17TH :17th -STR_ORDINAL_NUMBER_18TH :18th -STR_ORDINAL_NUMBER_19TH :19th -STR_ORDINAL_NUMBER_20TH :20th -STR_ORDINAL_NUMBER_21ST :21st -STR_ORDINAL_NUMBER_22ND :22nd -STR_ORDINAL_NUMBER_23RD :23rd -STR_ORDINAL_NUMBER_24TH :24th -STR_ORDINAL_NUMBER_25TH :25th -STR_ORDINAL_NUMBER_26TH :26th -STR_ORDINAL_NUMBER_27TH :27th -STR_ORDINAL_NUMBER_28TH :28th -STR_ORDINAL_NUMBER_29TH :29th -STR_ORDINAL_NUMBER_30TH :30th -STR_ORDINAL_NUMBER_31ST :31st +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1st +STR_DAY_NUMBER_2ND :2nd +STR_DAY_NUMBER_3RD :3rd +STR_DAY_NUMBER_4TH :4th +STR_DAY_NUMBER_5TH :5th +STR_DAY_NUMBER_6TH :6th +STR_DAY_NUMBER_7TH :7th +STR_DAY_NUMBER_8TH :8th +STR_DAY_NUMBER_9TH :9th +STR_DAY_NUMBER_10TH :10th +STR_DAY_NUMBER_11TH :11th +STR_DAY_NUMBER_12TH :12th +STR_DAY_NUMBER_13TH :13th +STR_DAY_NUMBER_14TH :14th +STR_DAY_NUMBER_15TH :15th +STR_DAY_NUMBER_16TH :16th +STR_DAY_NUMBER_17TH :17th +STR_DAY_NUMBER_18TH :18th +STR_DAY_NUMBER_19TH :19th +STR_DAY_NUMBER_20TH :20th +STR_DAY_NUMBER_21ST :21st +STR_DAY_NUMBER_22ND :22nd +STR_DAY_NUMBER_23RD :23rd +STR_DAY_NUMBER_24TH :24th +STR_DAY_NUMBER_25TH :25th +STR_DAY_NUMBER_26TH :26th +STR_DAY_NUMBER_27TH :27th +STR_DAY_NUMBER_28TH :28th +STR_DAY_NUMBER_29TH :29th +STR_DAY_NUMBER_30TH :30th +STR_DAY_NUMBER_31ST :31st ############ range for days ends ############ range for months starts @@ -597,10 +626,10 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Number of vehicles that turned a profit last year. This includes road vehicles, trains, ships and aircraft STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Number of recently-serviced stations. Train stations, bus stops, airports and so on are counted separately even if they belong to the same station STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}The profit of the vehicle with the lowest income (only vehicles older than two years are considered) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the lowest profit of the past 12 quarters -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the highest profit of the past 12 quarters -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Units of cargo delivered in the past four quarters -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Number of types of cargo delivered in the past quarter +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the lowest profit of the last 12 quarters +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the highest profit of the last 12 quarters +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Units of cargo delivered in the last four quarters +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Number of types of cargo delivered in the last quarter STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Amount of money this company has in the bank STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}The amount of money this company has taken on loan STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total points out of possible points @@ -738,7 +767,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Display # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Show last message or news report STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSED * * +STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSED * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOSAVE STR_STATUSBAR_SAVING_GAME :{RED}* * SAVING GAME * * @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} has in its orders an airport whose runway is too short STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Select side of road for vehicles to drive on STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Drive on left @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Screen r STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Select the screen resolution to use STR_GAME_OPTIONS_RESOLUTION_OTHER :other -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshot format -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Select the screenshot format to use +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interface size +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface element size to use + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Double size +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quad size STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select t STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Very Flat STR_TERRAIN_TYPE_FLAT :Flat STR_TERRAIN_TYPE_HILLY :Hilly STR_TERRAIN_TYPE_MOUNTAINOUS :Mountainous +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Permissive STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostile STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Advanced Settings +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Settings STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expand all STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Collapse all @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; affects only current company) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings -STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings -STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters +STR_CONFIG_SETTING_RESTRICT_BASIC :Basic (show only important settings) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced (show most settings) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (show all settings, including weird ones) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a different value than the default STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affects only new games) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affects only current company) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTINGS_NONE :{WHITE}- None - STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On @@ -1113,7 +1150,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amoun STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Control how often inadequately maintained vehicles may break down STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidy multiplier: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is paid for subsidised connections +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is paid for subsidized connections STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Construction costs: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set level of construction and purchase costs STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING} @@ -1122,12 +1159,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure -STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area -STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be build on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations -STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc. (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum map height: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Set the maximum allowed height for mountains on the map +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the maximum map height to this value. At least one mountain on the map is higher +STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow terraforming under buildings and tracks without removing them STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports @@ -1147,20 +1185,16 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steepness of a STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness for road vehicles: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill -STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships to make 90 deg turns: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships from making 90° turns: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow joining stations not directly adjacent: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts. Needs Ctrl+Click while placing the new parts -STR_CONFIG_SETTING_IMPROVEDLOAD :Use improved loading algorithm: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :If enabled, multiple vehicles waiting at a station are loaded sequentially. Loading of the next vehicle only starts when there is enough cargo waiting to completely fill the first vehicle -STR_CONFIG_SETTING_GRADUAL_LOADING :Load vehicles gradually: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradually load vehicles using vehicle specific loading durations, instead of loading everything at once with a fixed time depending only on the amount of cargo loaded STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Enable inflation in the economy, where costs are slightly faster rising than payments -STR_CONFIG_SETTING_SELECTGOODS :Deliver cargo to a station only when there is a demand: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Only deliver cargo to a station that was requested from a loading vehicle. This prevents bad ratings for cargos that are not serviced at a station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum bridge length: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum length for building bridges +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximum bridge height: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximum height for building bridges STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnel length: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum length for building tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manual primary industry construction method: {STRING} @@ -1180,14 +1214,12 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :On the right STR_CONFIG_SETTING_SHOWFINANCES :Show finances window at the end of the year: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :If enabled, the finances window pops up at the end of each year to allow easy inspection of the financial status of the company STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :New orders are 'non-stop' by default: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normally, a vehicle will stop at every station it passes. By enabling this setting, it will drive through all station on the way to its final destination without stopping. Note, that this setting only defines a default value for new orders. Individual orders can be set explicitly to either behavior nevertheless +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normally, a vehicle will stop at every station it passes. By enabling this setting, it will drive through all stations on the way to its final destination without stopping. Note, that this setting only defines a default value for new orders. Individual orders can be set explicitly to either behavior nevertheless STR_CONFIG_SETTING_STOP_LOCATION :New train orders stop by default at the {STRING} of the platform STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Place where a train will stop at the platform by default. The 'near end' means close to the entry point, 'middle' means in the middle of the platform, and 'far end' means far away from the entry point. Note, that this setting only defines a default value for new orders. Individual orders can be set explicitly to either behavior nevertheless STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :near end STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middle STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :far end -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Road vehicle queueing (with quantum effects): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Make road vehicle wait in front of occupied road stops until they are cleared STR_CONFIG_SETTING_AUTOSCROLL :Pan window when mouse is at the edge: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :When enabled, viewports will start to scroll when the mouse is near the edge of the window STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Disabled @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-thr STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Allow construction of drive-through road stops on town-owned roads STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow drive-through road stops on roads owned by competitors: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies -STR_CONFIG_SETTING_ADJACENT_STATIONS :Allow building adjacent stations: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Allow different stations to touch each other -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Enable multiple NewGRF engine sets: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Compatibility option for old NewGRFs. Do not disable this, unless you know exactly what you are doing! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Changing this setting is not possible when there are vehicles STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastructure maintenance: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :When enabled, infrastructure causes maintenance costs. The cost grows over-proportional with the network size, thus affecting bigger companies more than smaller ones @@ -1242,7 +1270,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets automatically replaced when the renew conditions are fulfilled -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} max age +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} maximum age STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after @@ -1252,39 +1280,53 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of err STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} second{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips can be bound to the right mouse button -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} second{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} millisecond{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click STR_CONFIG_SETTING_POPULATION_IN_LABEL :Show town population in the town name label: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the population of towns in their label on the map STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colors are easier to distinguish +STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landscapes define basic gameplay scenarios with different cargos and town growth requirements. NewGRF and Game Scripts allow finer control though STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :The original generator depends on the base graphics set, and composes fixed landscape shapes. TerraGenesis is a Perlin noise based generator with finer control settings STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough +STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous +STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate STR_CONFIG_SETTING_TREE_PLACER :Tree placer algorithm: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Choose the distribution of trees on the map: 'Original' plants trees uniformly scattered, 'Improved' plants them in groups STR_CONFIG_SETTING_TREE_PLACER_NONE :None STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Improved +STR_CONFIG_SETTING_ROAD_SIDE :Road vehicles: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Choose the driving side STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING} -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Anti-clockwise +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter-clockwise STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :The height level a flat scenario map gets: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Enable terraforming the tiles at the map borders: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, the map borders will always be ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water -STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area the parts of a single station may be spread out on. Note that high values will slow the game STR_CONFIG_SETTING_SERVICEATHELIPAD :Perform maintenance on helicopters at helipads automatically: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport @@ -1301,7 +1343,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations -STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING} +STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific) STR_CONFIG_SETTING_LIVERIES_NONE :None STR_CONFIG_SETTING_LIVERIES_OWN :Own company @@ -1319,29 +1361,27 @@ STR_CONFIG_SETTING_OSK_ACTIVATION :On screen keybo STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Select the method to open the on screen keyboard for entering text into editboxes only using the pointing device. This is meant for small devices without actual keyboard STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Disabled STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Double click -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Single click (when focussed) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Single click (when focused) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (immediately) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Right-click emulation: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Select the method to emulate right mouse-button clicks -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-click +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click 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_AUTOSAVE :Autosave: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Use the {STRING} date format for savegame names STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format of the date in save game filenames -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (Dec 31st, 2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (12/31/2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :When paused allow: {STRING} @@ -1350,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles @@ -1365,7 +1405,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different color to assist in problems with trains refusing to enter path-based blocks STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use @@ -1373,11 +1413,11 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING} -STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarised news messages +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarized news messages STR_CONFIG_SETTING_SOUND_NEWS :Newspaper: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Play sound upon display of newspapers STR_CONFIG_SETTING_SOUND_NEW_YEAR :End of year: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound at the end of a year summarising the company's performance during the year compared to the previous year +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound at the end of a year summarizing the company's performance during the year compared to the previous year STR_CONFIG_SETTING_SOUND_CONFIRM :Construction: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING} @@ -1391,13 +1431,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure -STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have -STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have -STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING} @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Maintenance int STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether maintenance of vehicles is triggered by the time passed since last maintenance or by reliability dropping by a certain percentage of the maximum reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default maintenance interval for trains: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default maintenance interval for new rail vehicles, if no explicit maintenance interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} day{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}day{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Default maintenance interval for road vehicles: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Set the default maintenance interval for new road vehicles, if no explicit maintenance interval is set for the vehicle @@ -1446,7 +1486,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Display a newsp STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / disasters: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occur STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Company information: {STRING} -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Display a newspaper when a new company starts, or when companies are risking to bankrupt +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Display a newspaper when a new company starts, or when companies are at risk of going bankrupt STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Opening of industries: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Display a newspaper when new industries open STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Closing of industries: {STRING} @@ -1476,7 +1516,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Full STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Colored news appears in: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the newspaper announcements get printed in color. Before this year, it uses monochrome black/white -STR_CONFIG_SETTING_STARTING_YEAR :Starting date: {STRING} +STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Enable smooth economy (more, smaller changes): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :When enabled, industry production changes more often, and in smaller steps. This setting has usually no effect, if industry types are provided by a NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Allow buying shares from other companies: {STRING} @@ -1491,7 +1531,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the beha STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatically build semaphores before: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Set the year when electric signals will be used for tracks. Before this year, non-electric signals will be used (which have the exact same function, but different looks) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Enable the signal GUI: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Display a window for choosing signal types to build, instead of only window-less signal-type rotation with Ctrl+clicking on build signals +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Display a window for choosing signal types to build, instead of only window-less signal-type rotation with Ctrl+clicking on built signals STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Signal type to build by default: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Default signal type to use STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Block signals @@ -1515,7 +1555,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build grade crossings: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build grade crossings STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remove absurd road-elements during the road construction: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remove dead road ends during funded road reconstruction -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING} day{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING}{NBSP}day{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X days. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING} day{P 0:2 "" s} for recalculation of distribution graph +STR_CONFIG_SETTING_LINKGRAPH_TIME :Take {STRING}{NBSP}day{P 0:2 "" s} for recalculation of distribution graph STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of days. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric @@ -1578,16 +1616,16 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetric" mea STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribution mode for mail: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of mail can be sent in either direction. "manual" means that no automatic distribution will take place for mail. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMORED cargo class: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMORED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMORED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using capacious paths: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units: {STRING} @@ -1603,50 +1641,52 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Weights units: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Whenever weights are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Whenever a weight is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonne) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumes units: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Whenever volumes are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Whenever a volume is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Tractive effort units: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Whenever tractive effort, also known as tractive force, is shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Whenever a tractive effort (also known as tractive force) is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Heights units: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Whenever heights are shown in the user interface, show it in the selected units +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Whenever a height is shown in the user interface, show it in the selected units STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localization -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics +STR_CONFIG_SETTING_SOUND :{ORANGE}Sound +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors +STR_CONFIG_SETTING_COMPANY :{ORANGE}Company +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economy -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Cargo Distribution +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Display options -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound effects -STR_CONFIG_SETTING_NEWS :{ORANGE}News and messages -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signals -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Cargo handling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenew -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Maintenance -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trains -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industries STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multipla STR_INTRO_GAME_OPTIONS :{BLACK}Game Options STR_INTRO_HIGHSCORE :{BLACK}Highscore Table -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Advanced Settings +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Settings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Settings STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Content STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Game Script Settings @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Select ' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Display game options STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Display highscore table -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Display advanced settings +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Display settings STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Display NewGRF settings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check for new and updated content to download STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Display AI/Game script settings @@ -1743,8 +1783,8 @@ STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Abandon Game -STR_ABANDON_GAME_QUERY :{YELLOW}Are you sure you want to abandon this game ? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you sure you want to abandon this scenario ? +STR_ABANDON_GAME_QUERY :{YELLOW}Are you sure you want to abandon this game? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you sure you want to abandon this scenario? # Cheat window STR_CHEATS :{WHITE}Cheats @@ -1755,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels may cross each other: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplanes will not crash (frequently) on small airports: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edit the maximum map height: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edit the maximum height of mountains on the map STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperate landscape STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arctic landscape STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropical landscape @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Streetc STR_FACE_CAPTION :{WHITE}Face Selection STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection +STR_FACE_RANDOM :{BLACK}Randomize STR_FACE_MALE_BUTTON :{BLACK}Male STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces @@ -1869,7 +1912,7 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Name STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Name of the game STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clients -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients online / clients max +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients online / clients max{}Companies online / companies max STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Map size STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Map size of the game{}Click to sort by area @@ -1907,29 +1950,29 @@ STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Search n STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Add server STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adds a server to the list which will always be checked for running games STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start server -STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start an own server +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start your own server STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Enter your name STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Enter the IP address of the server # Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start new game +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start new multiplayer game STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Game name: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game name will be displayed to other players in the multiplayer game selection menu STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password -STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want other people to join it +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible STR_NETWORK_START_SERVER_UNADVERTISED :No STR_NETWORK_START_SERVER_ADVERTISED :Yes STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose a maximum number of clients. Not all slots need to be filled +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain number of companies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain number of spectators STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server @@ -1980,7 +2023,7 @@ STR_NETWORK_LANG_LATVIAN :Latvian STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Multiplayer game lobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING} -STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}A list of all companies currently in this game. You can either join one or start a +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}A list of all companies currently in this game. You can either join one or start a new one if there is a free company slot STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}COMPANY INFO STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING} @@ -1995,11 +2038,11 @@ STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Station STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Players: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}New company -STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Open a new company -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Watch game +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Create a new company +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Spectate game STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Watch the game as a spectator STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Join company -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Help managing this company +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Help manage this company # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Connecting... @@ -2015,7 +2058,7 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Re STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info... ############ End of leave-in-this-order -STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} in front of us +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} in front of you STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} downloaded so far STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} downloaded so far @@ -2025,7 +2068,7 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server i STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password # Network company list added strings -STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Client List +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Client list STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spectate STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}New company @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password @@ -2081,7 +2125,7 @@ STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Could no STR_NETWORK_ERROR_SERVER_START :{WHITE}Could not start the server STR_NETWORK_ERROR_CLIENT_START :{WHITE}Could not connect STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connection #{NUM} timed out -STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}We made a protocol-error and our connection is closed +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}A protocol error was detected and the connection was closed STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full @@ -2226,7 +2270,7 @@ STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Toggle t STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Toggle transparency for trees. Ctrl+Click to lock STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Toggle transparency for houses. Ctrl+Click to lock STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Toggle transparency for industries. Ctrl+Click to lock -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toggle transparency for buildables like stations, depots and waypoints. Ctrl+Click to lock +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toggle transparency for buildables like stations, depots, and waypoints. Ctrl+Click to lock STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toggle transparency for bridges. Ctrl+Click to lock STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toggle transparency for structures like lighthouses and antennas. Ctrl+Click to lock STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle transparency for catenary. Ctrl+Click to lock @@ -2271,7 +2315,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Build ra STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Build train depot (for buying and maintaining trains). Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convert rail to waypoint. Ctrl enables joining waypoints. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Build railroad station. Ctrl enables joining stations. Shift toggles building/showing cost estimate -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Build railroad signals. Ctrl toggles semaphore/light signals{}Dragging builds signals along a straight stretch of track. Ctrl builds signals until the next junction{}Ctrl+Click toggles opening the signal selection window. Shift toggles building/showing cost estimate +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Build railroad signals. Ctrl toggles semaphore/light signals{}Dragging builds signals along a straight stretch of track. Ctrl builds signals up to the next junction or signal{}Ctrl+Click toggles opening the signal selection window. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Build railroad bridge. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Build railroad tunnel. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toggle build/remove for railroad track, signals, waypoints and stations. Hold Ctrl to also remove the rail of waypoints and stations @@ -2546,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks @@ -2635,14 +2680,14 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aqueduct STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmitter STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Lighthouse -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Company Headquarters +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Company headquarters STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned land # About OpenTTD window -STR_ABOUT_OPENTTD :{WHITE}OpenTTD +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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2669,20 +2715,19 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World Generation STR_MAPGEN_MAPSIZE :{BLACK}Map size: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns: STR_MAPGEN_DATE :{BLACK}Date: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum map height: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Increase the maximum height of mountains on the map by one +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Decrease the maximum height of mountains on the map by one STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height up one STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height down one -STR_MAPGEN_RANDOM_SEED :{BLACK}Random Seed: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed -STR_MAPGEN_RANDOM :{BLACK}Randomize -STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator: STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type: @@ -2709,12 +2754,12 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enter a random seed +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Change maximum map height STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year # SE Map generation -STR_SE_MAPGEN_CAPTION :{WHITE}Scenario type +STR_SE_MAPGEN_CAPTION :{WHITE}Scenario Type STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat land STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Move Up STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move the selected NewGRF file up the list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Move Down STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move the selected NewGRF file down the list +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Upgrade +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Upgrade NewGRF files for which you have a newer version installed STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parameters @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matching f STR_NEWGRF_SETTINGS_DISABLED :{RED}Disabled STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible with this version of OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Save preset +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}List of available presets, select one to copy it to the save name below +STR_SAVE_PRESET_TITLE :{BLACK}Enter a name for the preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Currently selected name for the preset to save +STR_SAVE_PRESET_CANCEL :{BLACK}Cancel +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Don't change the preset +STR_SAVE_PRESET_SAVE :{BLACK}Save +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Save the preset to the current selected name + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Change NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Close @@ -2811,14 +2868,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolor/font sprites and wrapping around at the end +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the last sprite to the first STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Go to the given sprite. If the sprite is not a normal sprite, proceed to the next normal sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolor/font sprites and wrapping around at the begin +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reset relative +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reset the current relative offsets +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absolute) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relative) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen @@ -2875,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi STR_NEWGRF_BROKEN :{WHITE}Behavior of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' provides incorrect information @@ -2889,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while... @@ -2926,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} delivered STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (still required) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} (funded) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK}{NBSP}day{P "" s} (funded) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Town is {RED}not{BLACK} growing STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Noise limit in town: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Center the main view on town location. Ctrl+Click opens a new viewport on town location @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Warning STR_GOAL_QUESTION_CAPTION_ERROR :Error -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No @@ -3006,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :Postpone STR_GOAL_QUESTION_BUTTON_SURRENDER :Surrender STR_GOAL_QUESTION_BUTTON_CLOSE :Close +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies @@ -3026,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Go to next page +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Invalid goal reference # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Station names - click on name to center main view on station. Ctrl+Click opens a new viewport on station location @@ -3040,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}No cargo # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Waiting: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) @@ -3081,7 +3146,7 @@ STR_STATION_VIEW_GROUP_D_S_V :Destination-Sou STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Source ############ range for rating starts -STR_CARGO_RATING_APPALLING :Appalling +STR_CARGO_RATING_APPALLING :Atrocious STR_CARGO_RATING_VERY_POOR :Very Poor STR_CARGO_RATING_POOR :Poor STR_CARGO_RATING_MEDIOCRE :Mediocre @@ -3135,7 +3200,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance STR_FINANCES_LOAN_TITLE :{WHITE}Loan -STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible @@ -3191,7 +3256,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sell 25% STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Company Name STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :President's Name -STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? +STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructure of {COMPANY} @@ -3269,7 +3334,7 @@ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send to Depot STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send to Hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Click to stop all vehicles in the list -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Click to start all listed vehicles +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Click to start all the vehicles in the list STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Shared orders of {COMMA} Vehicle{P "" s} @@ -3284,12 +3349,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungrouped road STR_GROUP_DEFAULT_SHIPS :Ungrouped ships STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircraft -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? + STR_GROUP_ADD_SHARED_VEHICLE :Add shared vehicles STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehicles @@ -3301,7 +3369,7 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Ra STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :New Monorail Vehicles STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :New Maglev Vehicles -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Rail Vehicles +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :New Road Vehicles STR_BUY_VEHICLE_SHIP_CAPTION :New Ships STR_BUY_VEHICLE_AIRCRAFT_CAPTION :New Aircraft @@ -3327,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :All but {CARGO_ STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tractive Effort: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Range: {GOLD}{COMMA} tiles -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Train vehicle selection list - click on vehicle for information -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Road vehicle selection list - click on vehicle for information -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ship selection list - click on ship for information -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft selection list - click on aircraft for information +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ship selection list. Click on ship for information. Ctrl+Click to toggle hiding of the ship type +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft selection list. Click on aircraft for information. Ctrl+Click to toggle hiding of the aircraft type STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle @@ -3352,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Rename r STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Rename ship type STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Rename aircraft type +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Hide +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Hide + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Display +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Display + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the train vehicle type +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the road vehicle type +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the ship type +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toggle hiding/displaying of the aircraft type + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Rename train vehicle type STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Rename road vehicle type STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Rename ship type @@ -3405,7 +3488,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clone Ve STR_DEPOT_CLONE_SHIP :{BLACK}Clone Ship STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clone Aircraft -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}This will buy a copy of a train including all cars. Click this button and then on a train inside or outside the depot. Ctrl+Click share the orders. Shift+Click shows estimated cost without purchase +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}This will buy a copy of a train including all cars. Click this button and then on a train inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}This will buy a copy of a road vehicle. Click this button and then on a road vehicle inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}This will buy a copy of a ship. Click this button and then on a ship inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}This will buy a copy of an aircraft. Click this button and then on an aircraft inside or outside the hangar. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase @@ -3452,10 +3535,15 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {C # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Train -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road vehicle +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road Vehicle STR_REPLACE_VEHICLE_SHIP :Ship STR_REPLACE_VEHICLE_AIRCRAFT :Aircraft +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicles in use +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Column with vehicles that you own +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Available vehicles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Column with vehicles available for replacement + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type @@ -3492,10 +3580,10 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Center m STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Center main view on ship's location. Ctrl+Click will follow ship in main view STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Center main view on aircraft's location. Ctrl+Click will follow aircraft in main view -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send train to depot -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send vehicle to depot -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send ship to depot -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send aircraft to hangar +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send train to depot. Ctrl+Click will only service +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send vehicle to depot. Ctrl+Click will only service +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send ship to depot. Ctrl+Click will only service +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send aircraft to hangar. Ctrl+Click will only service STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}This will buy a copy of the train including all cars. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}This will buy a copy of the road vehicle. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase @@ -3580,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Maintenance interval: {LTBLUE}{COMMA}days{BLACK} Last maintenance: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Maintenance interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} Last maintenance: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Maintenance interval: {LTBLUE}{COMMA}%{BLACK} Last maintenance: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Increase maintenance interval by 10. Ctrl+Click increases maintenance interval by 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Decrease maintenance interval by 10. Ctrl+Click decreases maintenance interval by 5 @@ -3599,7 +3687,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Name air STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Built: {LTBLUE}{NUM}{BLACK} Value: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Value: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total cargo (capacity) of this train: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total cargo capacity of this train: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) @@ -3678,8 +3766,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t STR_ORDER_REFIT :{BLACK}Refit STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction -STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it +STR_ORDER_REFIT_AUTO :{BLACK}Refit at station +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it STR_ORDER_DROP_REFIT_AUTO :Fixed cargo STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo @@ -3727,7 +3815,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Go to nearest d STR_ORDER_GO_TO_NEAREST_HANGAR :Go to nearest hangar STR_ORDER_CONDITIONAL :Conditional order jump STR_ORDER_SHARE :Share orders -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Insert a new order before the highlighted order, or add to end of list. Ctrl makes station orders 'full load any cargo', waypoint orders 'non-stop' and depot orders 'maintenance'. 'Share orders' or Ctrl lets this vehicle share orders with the selected vehicle. Clicking a vehicle copies the orders from that vehicle. A depot order disables automatic maintenance of the vehicle +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Insert a new order before the highlighted order, or add to end of list. Ctrl makes station orders 'full load any cargo', waypoint orders 'non-stop', and depot orders 'maintenance'. 'Share orders' or Ctrl lets this vehicle share orders with the selected vehicle. Clicking a vehicle copies the orders from that vehicle. A depot order disables automatic maintenance of the vehicle STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Show all vehicles that share this schedule @@ -3770,18 +3858,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load) STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading) -STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING}) +STR_ORDER_AUTO_REFIT :(Refit to {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING}) +STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING}) STR_ORDER_AUTO_REFIT_ANY :available cargo @@ -3807,13 +3895,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl STR_TIMETABLE_NO_TRAVEL :No travel STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING} with at most {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Travel (for {STRING}, not timetabled) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Travel (for {STRING}, not timetabled) with at most {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRING}, not timetabled) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING}, not timetabled) STR_TIMETABLE_STAY_FOR :and stay for {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING} -STR_TIMETABLE_DAYS :{COMMA} day{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING} to complete STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING} to complete (not all timetabled) @@ -3824,7 +3916,7 @@ STR_TIMETABLE_STATUS_EARLY :{BLACK}This veh STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This timetable has not yet started STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING} -STR_TIMETABLE_STARTING_DATE :{BLACK}Start date +STR_TIMETABLE_STARTING_DATE :{BLACK}Start Date STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable. Ctrl+Click sets the starting point of this timetable and distributes all vehicles sharing this order evenly based on their relative order, if the order is completely timetabled STR_TIMETABLE_CHANGE_TIME :{BLACK}Change Time @@ -3939,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :Number of days STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} license of {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll STR_TEXTFILE_VIEW_README :{BLACK}View readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}License @@ -4046,9 +4140,10 @@ STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Can't ra STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Can't lower land here... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Can't level land here... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Excavation would damage tunnel -STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Already at sea-level -STR_ERROR_TOO_HIGH :{WHITE}Too high +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... already at sea level +STR_ERROR_TOO_HIGH :{WHITE}... too high STR_ERROR_ALREADY_LEVELLED :{WHITE}... already flat +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Afterwards the bridge above it would be too high. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Can't change company name... @@ -4069,14 +4164,14 @@ STR_ERROR_PROTECTED :{WHITE}This com # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't build town here... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... too close to edge of map STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too close to another town STR_ERROR_TOO_MANY_TOWNS :{WHITE}... too many towns STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... there is no more space on the map -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Economy->Towns -STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Settings->Environment->Towns +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road work in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the center of this town @@ -4086,7 +4181,7 @@ STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't ge STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Can't build {STRING} here... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Can't construct this industry type here... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... too close to another industry -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... must build town first +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... must found town first STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... only one allowed per town STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... can only be built in towns with a population of at least 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... can only be built in rainforest areas @@ -4099,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... fore STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... can only be built above the snow-line STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... can only be built below the snow-line +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}There were no suitable places for '{STRING}' industries +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Change the map generation parameters to get a better map + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Can't build railroad station here... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Can't build bus station... @@ -4232,9 +4330,10 @@ STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Can't pl # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Can't build bridge here... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first -STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Cannot start and end on same position +STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Can't start and end in the same spot STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bridge heads not at the same level STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Bridge is too high for this terrain. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ends of bridge must both be on land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... bridge too long @@ -4261,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... you STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Can't create group... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Can't delete this group... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Can't rename group... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Can't set parent group... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Can't remove all vehicles from this group... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Can't add the vehicle to this group... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Can't add shared vehicles to group... @@ -4287,7 +4387,7 @@ STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Can't st STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Can't stop/start aircraft... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Can't send train to depot... -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Can't send vehicle to depot... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Can't send road vehicle to depot... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Can't send ship to depot... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Can't send aircraft to hangar... @@ -4377,7 +4477,7 @@ STR_BASEMUSIC_NONE_DESCRIPTION :A music pack wi # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Tall office block STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Office block -STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Small block of apartments +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Small apartment building STR_TOWN_BUILDING_NAME_CHURCH_1 :Church STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Large office block STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Town houses @@ -4394,7 +4494,7 @@ STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Old houses STR_TOWN_BUILDING_NAME_COTTAGES_1 :Cottages STR_TOWN_BUILDING_NAME_HOUSES_1 :Houses -STR_TOWN_BUILDING_NAME_FLATS_1 :Apartments +STR_TOWN_BUILDING_NAME_FLATS_1 :Apartment Building STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Tall office block STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Shops and offices STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Shops and offices @@ -4412,7 +4512,7 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Piggy-Bank ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Coal Mine -STR_INDUSTRY_NAME_POWER_STATION :Power Station +STR_INDUSTRY_NAME_POWER_STATION :Power Plant STR_INDUSTRY_NAME_SAWMILL :Sawmill STR_INDUSTRY_NAME_FOREST :Forest STR_INDUSTRY_NAME_OIL_REFINERY :Oil Refinery @@ -4479,7 +4579,7 @@ STR_SV_STNAME_DOCKS :{STRING} Docks STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 -STR_SV_STNAME_ANNEXE :{STRING} Annexe +STR_SV_STNAME_ANNEXE :{STRING} Annex STR_SV_STNAME_SIDINGS :{STRING} Sidings STR_SV_STNAME_BRANCH :{STRING} Branch STR_SV_STNAME_UPPER :Upper {STRING} @@ -4495,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) @@ -4520,7 +4620,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elect STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Mail Car -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Car +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goods Car @@ -4550,7 +4650,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Mail Car -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Car +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goods Car @@ -4582,7 +4682,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Mail Car -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Car +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goods Car @@ -4704,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4750,9 +4850,9 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic ##id 0x8800 # Formatting of some strings -STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} +STR_FORMAT_DATE_TINY :{1:STRING}/{0:STRING}/{2:NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} -STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} +STR_FORMAT_DATE_LONG :{1:STRING} {0:STRING}, {2:NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Buoy @@ -4760,8 +4860,8 @@ STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Buoy #{C STR_FORMAT_COMPANY_NUM :(Company {COMMA}) STR_FORMAT_GROUP_NAME :Group {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} -STR_FORMAT_WAYPOINT_NAME :Waypoint {TOWN} -STR_FORMAT_WAYPOINT_NAME_SERIAL :Waypoint {TOWN} #{COMMA} +STR_FORMAT_WAYPOINT_NAME :{TOWN} Waypoint +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Waypoint #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Train Depot STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Train Depot #{COMMA} @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (hidden) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index e3a2ed1f3e..3e2be61c33 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Amuza Trinkaĵo # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} pasaĝero{P "" j} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}pasaĝero{P "" j} STR_QUANTITY_COAL :{WEIGHT_LONG} da karbo -STR_QUANTITY_MAIL :{COMMA} sako{P "" j} da poŝto +STR_QUANTITY_MAIL :{COMMA}{NBSP}sako{P "" j} da poŝto STR_QUANTITY_OIL :{VOLUME_LONG} da oleo -STR_QUANTITY_LIVESTOCK :{COMMA} bruto{P "" j} -STR_QUANTITY_GOODS :{COMMA} kesto{P "" j} da varoj +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}bruto{P "" j} +STR_QUANTITY_GOODS :{COMMA}{NBSP}kesto{P "" j} da varoj STR_QUANTITY_GRAIN :{WEIGHT_LONG} da greno STR_QUANTITY_WOOD :{WEIGHT_LONG} da ligno STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} da fera erco STR_QUANTITY_STEEL :{WEIGHT_LONG} da ŝtalo -STR_QUANTITY_VALUABLES :{COMMA} sako{P "" j} da valoraĵoj +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}sako{P "" j} da valoraĵoj STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} da kupra erco STR_QUANTITY_MAIZE :{WEIGHT_LONG} da maizo STR_QUANTITY_FRUIT :{WEIGHT_LONG} da fruktoj -STR_QUANTITY_DIAMONDS :{COMMA} sako{P "" j} da diamantoj +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sako{P "" j} da diamantoj STR_QUANTITY_FOOD :{WEIGHT_LONG} da manĝaĵoj STR_QUANTITY_PAPER :{WEIGHT_LONG} da papero -STR_QUANTITY_GOLD :{COMMA} sako{P "" j} da oro +STR_QUANTITY_GOLD :{COMMA}{NBSP}sako{P "" j} da oro STR_QUANTITY_WATER :{VOLUME_LONG} da akvo STR_QUANTITY_WHEAT :{WEIGHT_LONG} da tritiko STR_QUANTITY_RUBBER :{VOLUME_LONG} da kaŭĉuko STR_QUANTITY_SUGAR :{WEIGHT_LONG} da sukero -STR_QUANTITY_TOYS :{COMMA} ludilo{P "" j} -STR_QUANTITY_SWEETS :{COMMA} sako{P "" j} da dolĉaĵoj +STR_QUANTITY_TOYS :{COMMA}{NBSP}ludilo{P "" j} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sako{P "" j} da dolĉaĵoj STR_QUANTITY_COLA :{VOLUME_LONG} da kolao STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} da sukerŝpinaĵo STR_QUANTITY_BUBBLES :{COMMA} veziko{P "" j} @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}NENI STR_ABBREV_ALL :{TINY_FONT}ĈIU # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} pasaĝero{P "" j} -STR_BAGS :{COMMA} sako{P "" j} -STR_TONS :{COMMA} tuno{P "" j} -STR_LITERS :{COMMA} litro{P "" j} -STR_ITEMS :{COMMA} peco{P "" j} -STR_CRATES :{COMMA} kesto{P "" j} +STR_PASSENGERS :{COMMA}{NBSP}pasaĝero{P "" j} +STR_BAGS :{COMMA}{NBSP}sako{P "" j} +STR_TONS :{COMMA}{NBSP}tuno{P "" j} +STR_LITERS :{COMMA}{NBSP}litro{P "" j} +STR_ITEMS :{COMMA}{NBSP}peco{P "" j} +STR_CRATES :{COMMA}{NBSP}kesto{P "" j} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Malhelblua @@ -192,35 +192,44 @@ STR_COLOUR_GREY :Griza STR_COLOUR_WHITE :Blanka # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}ĉp -STR_UNITS_POWER_METRIC :{COMMA}ĉp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}ĉp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}ĉp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tuno{P "" j} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tuno{P "" j} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tuno{P "" j} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" j} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galono{P "" j} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" j} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtroteksto: STR_LIST_FILTER_OSKTITLE :{BLACK}Entajpu filtrotekston. STR_LIST_FILTER_TOOLTIP :{BLACK}Enigu ŝlosilvorton laŭ kiu filtri la liston +STR_TOOLTIP_GROUP_ORDER :{BLACK}Elektu gruparanĝo STR_TOOLTIP_SORT_ORDER :{BLACK}Elektu vicordo (deira/alira) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Elektu ordigaj kondiĉoj STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selektu kriteriojn por filtrado @@ -231,13 +240,20 @@ STR_BUTTON_RENAME :{BLACK}Alinomi STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fermu fenestron STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Fenestra titolo - tiru por movi la fenestron STR_TOOLTIP_SHADE :{BLACK}Minimumigi fenestron - montri nur la titolbreton -STR_TOOLTIP_STICKY :{BLACK}Marku ke ne fermiĝu la fenestro per la 'ĉiujn fenestrojn fermu'-klavo +STR_TOOLTIP_STICKY :{BLACK}Marku ke ne fermiĝu la fenestro per la 'ĉiujn fenestrojn fermu'-klavo. Konservu kiel defaŭlta stato per Ctrl-klavo + alklaki. STR_TOOLTIP_RESIZE :{BLACK}Klaku kaj tiru por reformi la fenestron STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Ŝaltu inter granda kaj malgranda fenestro STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrolbreto - skrolas la liston supren/malsupren STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrolbreto - skrolas la liston dekstren/maldekstren STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Detruu konstruaĵojn ktp. sur landkvadrato. Stir elektas diagonale la areon. Shift aktivas/malaktivas la konstruaĵon/montraĵon estiman koston +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Montru kaŝita +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Montru kaŝita +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Montru kaŝita +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Montru kaŝita + + # Query window STR_BUTTON_DEFAULT :{BLACK}Normo STR_BUTTON_CANCEL :{BLACK}Nuligu @@ -275,6 +291,8 @@ STR_SORT_BY_LENGTH :Longo STR_SORT_BY_LIFE_TIME :Resta vivo STR_SORT_BY_TIMETABLE_DELAY :Horara malfruo STR_SORT_BY_FACILITY :Stacidoma tipo +STR_SORT_BY_WAITING_TOTAL :Tuta atendata ŝarĝo +STR_SORT_BY_WAITING_AVAILABLE :Disponebla atendata ŝarĝo STR_SORT_BY_RATING_MAX :Plejalta ŝarĝotakso STR_SORT_BY_RATING_MIN :Malplejalta ŝarĝotakso STR_SORT_BY_ENGINE_ID :Maŝina ID (klasika ordigo) @@ -299,6 +317,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Montru s STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Montri stacidomoliston de la kompanio. STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Montru kompaniajn financajn informojn STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Montru ĝeneralajn kompaniajn informojn +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Montru rakontolibron +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Montru celoj-liston STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Montru grafikojn STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Montru kompanian tabelon STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Pagu konstruadon de nova industrio aŭ listigu ĉiujn industriojn @@ -346,7 +366,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :Forlasi ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Ludaj opcioj -STR_SETTINGS_MENU_CONFIG_SETTINGS :Avancitaj agordoj +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Agordoj +STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Ludo skripto agordoj STR_SETTINGS_MENU_NEWGRF_SETTINGS :Agordoj de NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Ebloj por travidebleco STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Urbonomoj montriĝas @@ -371,6 +392,7 @@ STR_FILE_MENU_EXIT :Fermu # map menu STR_MAP_MENU_MAP_OF_WORLD :Mondomapo STR_MAP_MENU_EXTRA_VIEW_PORT :Plia vidujo +STR_MAP_MENU_LINGRAPH_LEGEND :Legendo de ŝarĝfluo STR_MAP_MENU_SIGN_LIST :Afiŝa listo ############ range for town menu starts @@ -448,10 +470,11 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pligrandiga ekr STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Ekranfoto defaŭlte zoma STR_ABOUT_MENU_GIANT_SCREENSHOT :Tuta karto ekranfoto STR_ABOUT_MENU_ABOUT_OPENTTD :Pri 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :Bildeto-liniigilo STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Montri/ne montri limigujo ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1a de STR_ORDINAL_NUMBER_2ND :2a de STR_ORDINAL_NUMBER_3RD :3a de @@ -467,22 +490,40 @@ STR_ORDINAL_NUMBER_12TH :12a de STR_ORDINAL_NUMBER_13TH :13a de STR_ORDINAL_NUMBER_14TH :14a de STR_ORDINAL_NUMBER_15TH :15a de -STR_ORDINAL_NUMBER_16TH :16a de -STR_ORDINAL_NUMBER_17TH :17a de -STR_ORDINAL_NUMBER_18TH :18a de -STR_ORDINAL_NUMBER_19TH :19a de -STR_ORDINAL_NUMBER_20TH :20a de -STR_ORDINAL_NUMBER_21ST :21a de -STR_ORDINAL_NUMBER_22ND :22a de -STR_ORDINAL_NUMBER_23RD :23a de -STR_ORDINAL_NUMBER_24TH :24a de -STR_ORDINAL_NUMBER_25TH :25a de -STR_ORDINAL_NUMBER_26TH :26a de -STR_ORDINAL_NUMBER_27TH :27a de -STR_ORDINAL_NUMBER_28TH :28a de -STR_ORDINAL_NUMBER_29TH :29a de -STR_ORDINAL_NUMBER_30TH :30a de -STR_ORDINAL_NUMBER_31ST :31a de +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1a de +STR_DAY_NUMBER_2ND :2a de +STR_DAY_NUMBER_3RD :3a de +STR_DAY_NUMBER_4TH :4a de +STR_DAY_NUMBER_5TH :5a de +STR_DAY_NUMBER_6TH :6a de +STR_DAY_NUMBER_7TH :7a de +STR_DAY_NUMBER_8TH :8a de +STR_DAY_NUMBER_9TH :9a de +STR_DAY_NUMBER_10TH :10a de +STR_DAY_NUMBER_11TH :11a de +STR_DAY_NUMBER_12TH :12a de +STR_DAY_NUMBER_13TH :13a de +STR_DAY_NUMBER_14TH :14a de +STR_DAY_NUMBER_15TH :15a de +STR_DAY_NUMBER_16TH :16a de +STR_DAY_NUMBER_17TH :17a de +STR_DAY_NUMBER_18TH :18a de +STR_DAY_NUMBER_19TH :19a de +STR_DAY_NUMBER_20TH :20a de +STR_DAY_NUMBER_21ST :21a de +STR_DAY_NUMBER_22ND :22a de +STR_DAY_NUMBER_23RD :23a de +STR_DAY_NUMBER_24TH :24a de +STR_DAY_NUMBER_25TH :25a de +STR_DAY_NUMBER_26TH :26a de +STR_DAY_NUMBER_27TH :27a de +STR_DAY_NUMBER_28TH :28a de +STR_DAY_NUMBER_29TH :29a de +STR_DAY_NUMBER_30TH :30a de +STR_DAY_NUMBER_31ST :31a de ############ range for days ends ############ range for months starts @@ -655,12 +696,14 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapo - { STR_SMALLMAP_TYPE_CONTOURS :Konturoj STR_SMALLMAP_TYPE_VEHICLES :Veturiloj STR_SMALLMAP_TYPE_INDUSTRIES :Industrioj +STR_SMALLMAP_TYPE_ROUTEMAP :Ŝarĝfluo STR_SMALLMAP_TYPE_ROUTES :Vojiroj STR_SMALLMAP_TYPE_VEGETATION :Verdaĵo STR_SMALLMAP_TYPE_OWNERS :Posedantoj STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Montru landkonturojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Montru veturilojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Montru industriojn sur la mapo +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK} Montru Ŝarĝfluon en mapo STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Montru transportstratojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Montru verdaĵojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Montru landposedantojn sur la mapo @@ -698,6 +741,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vidu aŭ ne vidu urbonomojn sur la mapo STR_SMALLMAP_CENTER :{BLACK}Centrigi la mapeton al la nuna loko STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Malaktivigu ĉiujn @@ -784,13 +828,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} atendas en depoto STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} atendas en la hangaro. -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ne havas sufiĉajn ordonojn en la itinero STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} havas malplenan ordonon STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} havas duoblajn ordonojn STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Ordonoj de {VEHICLE} enhavas nevalidan stacion -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} malnoviĝis STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} tre malnoviĝis @@ -868,10 +910,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Kartvela Lario STR_GAME_OPTIONS_CURRENCY_IRR :Irana Rialo (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stratveturiloj STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Elektu stratflankon kie veturu veturiloj STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Veturu maldekstre @@ -907,11 +945,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalune STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Aŭtomata konservado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elektu intervalon inter aŭtomataj konservadoj de la ludo +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Malaktiva STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Je ĉiu monato STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Je ĉiuj 3 monatoj STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Je ĉiuj 6 monatoj STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Je ĉiuj 12 monatoj +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingvo STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Elektu uzotan interfacan lingvon @@ -923,8 +963,11 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrana m STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Elektu uzotan ekranan montrograndon STR_GAME_OPTIONS_RESOLUTION_OTHER :alia -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekranfota formato -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Elektu uzotan ekranfotan formaton +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacgrandeco + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normala +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duobla grandeco +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Kvaroble grandeco STR_GAME_OPTIONS_BASE_GRF :{BLACK}Baza grafikaro STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron @@ -1022,14 +1065,16 @@ STR_CITY_APPROVAL_HOSTILE :Gastige STR_WARNING_NO_SUITABLE_AI :{WHITE}Neniu taŭga AI estas disponebla...{}Kelkaj AI-oj estas elŝuteblaj per la sistemo 'Enreta Enhavo'. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avancitaj agordoj +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Agordoj +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtroteksto: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Etendu ĉio STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(neniu ekspliko disponeble) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Defaŭlta valoro: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipo de agordo: {ORANGE}{STRING} -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Montru: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorio: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: STR_CONFIG_SETTING_RESTRICT_BASIC :Bazniveloj agordoj STR_CONFIG_SETTING_RESTRICT_ADVANCED :Altnivelaj agordoj STR_CONFIG_SETTING_RESTRICT_ALL :Altnivelaj agordoj / ĉiu agordoj @@ -1037,10 +1082,11 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :agordoj kiuj ma STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Agordoj kiu malsimilas al via novajuldaj agordoj STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Ĉiuj agordoj -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ludo agordojn (stokite en savoj, nur tuŝas novajn ludojn) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ludo agordojn (stokite en savoj; nur tuŝas novajn ludojn) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ludo agordojn (stokite en savo; tuŝas nur kuranta ludo) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Kompanio agordojn (stokite en savoj, nur tuŝas novajn ludojn) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Kompanio agordojn (stokite en savoj; nur tuŝas novajn ludojn) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Kompanio agordojn (stokita en savu; tuŝas nur kuranta kompanio) +STR_CONFIG_SETTINGS_NONE :{WHITE}- Neniu - STR_CONFIG_SETTING_OFF :Malaktiva STR_CONFIG_SETTING_ON :Aktiva @@ -1069,8 +1115,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ŝanĝu nivelon STR_CONFIG_SETTING_RECESSIONS :Recesioj: {STRING} STR_CONFIG_SETTING_DISASTERS :Katastrofoj: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :Permesu konstrui sur kliniĝoj kaj bordoj: {STRING} -STR_CONFIG_SETTING_AUTOSLOPE :Permesu terecigon sub konstruaĵoj, trakoj, ktp. (aŭtodeklivo): {STRING} +STR_CONFIG_SETTING_AUTOSLOPE :Permesu terecigon sub konstruaĵoj, trakoj, ktp.: {STRING} STR_CONFIG_SETTING_CATCHMENT :Permesu pli realgrandaj kaptoregionoj: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Permesu forigon de pli da urbaj stratoj, pontoj ktp: {STRING} STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} kvadrato{P 0 "" j} @@ -1080,10 +1125,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de strat STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :Vagonaroj kaj ŝipoj ne ort-turniĝu: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permesu ligi staciojn ne rekte najbarajn: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :Uzu plibonigitan ŝarĝalgoritmon: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Laŭgrade ŝarĝu veturilojn: {STRING} STR_CONFIG_SETTING_INFLATION :Inflacio: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Nur liveru ŝarĝon al stacio se estas peto: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Permana ĉefa industri-konstrumaniero: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :neniu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kiel aliaj industrioj @@ -1098,9 +1140,10 @@ STR_CONFIG_SETTING_STOP_LOCATION :Novaj trajnordo STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :proksima fino STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meza STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fora fino -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Stratveturila vicigo (kun kvantum-efektoj): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Ŝovu fenestron se la muso estas ĉe la rando: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Malaktiva +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Ĉefa vidujo +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Ĉiu vidujo STR_CONFIG_SETTING_BRIBE :Permesu subaĉeti la lokajn estrojn: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permesu aĉeti ekskluzivajn transportrajtojn: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permesi fondusante lokan stratan rekonstruo: {STRING} @@ -1113,8 +1156,6 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reduktita STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permesu trairajn bushaltejojn sur urboposedataj stratoj: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permesu trairajn strathaltejojn sur stratoj posedataj de konkurantoj: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permesu konstrui staciojn apude: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Ebligu multoblajn NewGRF-motorarojn: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ne eblas ŝanĝi ĉi tiujn agordon dum veturiloj ĉeestas STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flughavenoj neniam antikviĝas: {STRING} @@ -1127,6 +1168,8 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :de ĉiuj veturi STR_CONFIG_SETTING_WARN_INCOME_LESS :Avertu se gajno de veturilo negativas: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veturiloj neniam eluziĝas: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Aŭtomate anstataŭu veturilon se malnoviĝas: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} monato{P 0 "" j} antaŭe +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} monato{P 0 "" j} post STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimuma mono por anstataŭado: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :Montru enloĝantaron en urbnomindikilo: {STRING} @@ -1134,7 +1177,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerilo: { STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Neĝregiona alto: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Nereguleco de tereno (nur por TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Nereguleco de tereno: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Tre Regule STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Regule STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Neregule @@ -1147,7 +1190,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Altecmapa turni STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Maldekstrume STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dekstrume STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Kiom alta fariĝos scenara mapo: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Ebligu terecigon de la kaheloj ĉe la eĝoj de la mapo: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Unu ay pli da xeloj en norda parto ne malplenas STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Almenaŭ unu kahelo ĉe unu de la eĝoj ne estas akvo @@ -1159,7 +1201,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Viola STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversigu skroldirekton: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glata rulumado de vidujo: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montru mezuran konsilbalonon ĉe uzo de konstruiloj: {STRING} -STR_CONFIG_SETTING_LIVERIES :Montru kompaniajn liverojn: {STRING} +STR_CONFIG_SETTING_LIVERIES :Montru veturiltipe specifajn liverojn: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :Neniu STR_CONFIG_SETTING_LIVERIES_OWN :Propra kompanio STR_CONFIG_SETTING_LIVERIES_ALL :Ĉiuj kompanioj @@ -1182,22 +1224,19 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ne STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Maldekstr-klak-rulumado: {STRING} + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uzu la {STRING} datformon por nomoj de konservludoj. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longa (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :mallonga (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Norma paletro supozi por NewGRFs ne specifanta paletron: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paletro -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Vindoza paletro - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Aŭtomate paŭzu startante novan ludon: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Permesu dum paŭza: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :neniu agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :ĉiuj ne-konstruado agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :ĉiuj sed pejzaĝo ŝanĝanta agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :ĉiuj agoj -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uzu la avancitan veturilaron: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uzu grupoj en veturilara listo: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Uzu ŝarg-indikilojn: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Montru horaron laŭ tikoj anstataŭ laŭ tagoj: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Montru alvenojn kaj forirojn sur horaroj: {STRING} @@ -1221,10 +1260,10 @@ STR_CONFIG_SETTING_SOUND_AMBIENT :Ĉirkaŭaĵo: { STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Ludu ĉirkaŭaĵa sonefektoj de pejzaĝo, industrioj kaj urboj STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Malaktivu fondan konstruon kiam decaj veturiloj ne estas disponebla: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Trajna maksimumo por ĉiu ludanto: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Stratveturila maksimumo por ĉiu ludanto: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Aviadila maksimumo por ĉiu ludanto: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Ŝipa maksimumo por ĉiu ludanto: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Trajna maksimumo por ĉiu kompanio: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Stratveturila maksimumo por ĉiu kompanio: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Aviadila maksimumo por ĉiu kompanio: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Ŝipa maksimumo por ĉiu kompanio: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Malebligu trajnojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Malebligu stratveturilojn por la komputilo: {STRING} @@ -1307,7 +1346,6 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normale STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rapide STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Tre rapide STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Komenca urbgrandeca multobligo: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Forigu sensensajn straterojn dum stratkonstruado: {STRING} @@ -1316,25 +1354,18 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Forigu sensensa -STR_CONFIG_SETTING_GUI :{ORANGE}Interfaco -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruado +STR_CONFIG_SETTING_SOUND :{ORANGE}Sonefektoj +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaco +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruado STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veturiloj -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacioj -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomio +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Navigado +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofoj / akcidentoj +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Mondgenerado +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Medio +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Urboj +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrioj STR_CONFIG_SETTING_AI :{ORANGE}Konkurantoj -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Montru opciojn -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interago -STR_CONFIG_SETTING_SOUND :{ORANGE}Sonefektoj -STR_CONFIG_SETTING_NEWS :{ORANGE}Novaĵo kaj mesaĝoj -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaloj -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kargotraktado STR_CONFIG_SETTING_AI_NPC :{ORANGE}Komputil-ludantoj -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Aŭtorenovigo -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Prizorgado -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Navigado -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trajnoj -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Urboj -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrioj STR_CONFIG_SETTING_PATHFINDER_OPF :Originale STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1361,7 +1392,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Pluraj L STR_INTRO_GAME_OPTIONS :{BLACK}Ludaj Opcioj STR_INTRO_HIGHSCORE :{BLACK}Altpoentara tabelo -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancitaj agordoj +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Agordoj STR_INTRO_NEWGRF_SETTINGS :{BLACK}Agordoj de NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Provu Enretan Enhavon STR_INTRO_QUIT :{BLACK}Forlasi @@ -1380,7 +1411,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Elektu ' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Montru ludajn opciojn STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Montru altpoentara tabelo -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Montru avancitajn agordojn +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Montru agordojn STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Montri NewGRF-agordojn STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Serĉi pri nova kaj ĝisdatigita enhavo por elŝuti STR_INTRO_TOOLTIP_QUIT :{BLACK}Fermu 'OpenTTD' @@ -1413,7 +1444,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ĉu vi # Cheat window STR_CHEATS :{WHITE}Filudaĵoj STR_CHEATS_TOOLTIP :{BLACK}La kvadratetoj indikas ĉu vi jam uzis la filudaĵon antaŭe. -STR_CHEATS_WARNING :{BLACK}Atentu! Vi perfidos viajn kunulajn konkurantojn. Memoru ke io tia rememoriĝos eterne. +STR_CHEATS_WARNING :{BLACK}Atentu! Vi preskaŭ perfidos viajn kunulajn konkurantojn. Memoru ke io tia rememoriĝos eterne STR_CHEAT_MONEY :{LTBLUE}Altigu monkvanton per {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magia forigilo (forviŝu industriojn, nemovebla objektoj): {ORANGE}{STRING} @@ -1435,8 +1466,8 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Montru t STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Montru stratveturilajn kolorskemojn STR_LIVERY_SHIP_TOOLTIP :{BLACK}Montru ŝipkolorajn skemojn STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Montru aviadilajn kolorskemojn -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elektu la unuan koloron por la elektita skemo -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elektu la duan koloron por la elektita skemo +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elektu la unuan koloron por la elektita skemo. Ctrl+klaki aktivigos tiu koloron je ĉiu skemoj +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elektu la duan koloron por la elektita skemo. Ctrl+klaki aktivigos tiu koloron je ĉiu skemoj STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elektu la kolorskemon ŝanĝendan, aŭ plurajn per CTRL+click. Alklaku kvadraton por uzi/ne uzi skemon STR_LIVERY_DEFAULT :Normala Koloro @@ -1467,6 +1498,7 @@ STR_LIVERY_FREIGHT_TRAM :Frajttramo STR_FACE_CAPTION :{WHITE}Elekto de Vizaĝo STR_FACE_CANCEL_TOOLTIP :{BLACK}Nuligu elekton de nova vizaĝo STR_FACE_OK_TOOLTIP :{BLACK}Akceptu elekton de nova vizaĝo +STR_FACE_RANDOM :{BLACK}Hazardigu STR_FACE_MALE_BUTTON :{BLACK}Vira STR_FACE_MALE_TOOLTIP :{BLACK}Elektu virajn vizaĝojn @@ -1475,17 +1507,17 @@ STR_FACE_FEMALE_TOOLTIP :{BLACK}Elektu v STR_FACE_NEW_FACE_BUTTON :{BLACK}Nova Vizaĝo STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Kreu hazardan novan vizaĝon STR_FACE_ADVANCED :{BLACK}Altnivela -STR_FACE_ADVANCED_TOOLTIP :{BLACK}Altnivela elekto de vizaĝo. +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Altnivela elekto de vizaĝo STR_FACE_SIMPLE :{BLACK}Simpla -STR_FACE_SIMPLE_TOOLTIP :{BLACK}Simpla elekto de vizaĝo. +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Simpla elekto de vizaĝo STR_FACE_LOAD :{BLACK}Ŝargi STR_FACE_LOAD_TOOLTIP :{BLACK}Ŝargi favoratan vizaĝon. STR_FACE_LOAD_DONE :{WHITE}Via favorata vizaĝo estis ŝargita de la agord-dosiero de OpenTTD.. STR_FACE_FACECODE :{BLACK}Ludanta vizaĝnumero -STR_FACE_FACECODE_TOOLTIP :{BLACK}Rigardi kaŭ elekti ludantan vizaĝnumeron. -STR_FACE_FACECODE_CAPTION :{WHITE}Rigardi kaŭ elekti ludantan vizaĝnumeron. -STR_FACE_FACECODE_SET :{WHITE}Nova vizaĝnumera kodo estas konservita. -STR_FACE_FACECODE_ERR :{WHITE}Ne povas konservi ludantan vizaĝnumeron - devas esti nombro inter 0 kaj 4,294,967,295! +STR_FACE_FACECODE_TOOLTIP :{BLACK}Rigardi kaj/aŭ elekti vizaĝnumeron kompani-prezidanta +STR_FACE_FACECODE_CAPTION :{WHITE}Rigardi kaj/aŭ elekti vizaĝnumeron presidantan +STR_FACE_FACECODE_SET :{WHITE}Nova vizaĝnumera kodo aktivitas. +STR_FACE_FACECODE_ERR :{WHITE}Ne povas aktivigi ludantan vizaĝnumeron - devas esti nombro inter 0 kaj 4,294,967,295! STR_FACE_SAVE :{BLACK}Konservi STR_FACE_SAVE_TOOLTIP :{BLACK}Konservi favoratan vizaĝon STR_FACE_SAVE_DONE :{WHITE}Tiu ĉi vizaĝo estos konservita kiel via favorata en la agord-dosiero de OpenTTD. @@ -1565,7 +1597,7 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Refreŝi STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Trovu servilon STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Serĉu reton por servilo STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Aldonu servilon -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Aldonas servilon al la listo kiu ĉiam estos kontrolata pri kurantaj ludoj. +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Aldonas servilon al la listo kiu ĉiam estos kontrolata pri kurantaj ludoj STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Startu servilon STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Startu propran servilon @@ -1587,7 +1619,7 @@ STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} ko STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Kompania maksimumo: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limu la servilon al certa kvanto da kompanioj STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spektanto{P "" j} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Spektanta maksimumo: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimumo spektanta: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limigu la servilon al certa kvanto da spektantoj STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Parolata lingvo: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aliaj ludantoj scios kiu lingvo paroliĝas en la servilo @@ -1664,14 +1696,14 @@ STR_NETWORK_CONNECTING_CAPTION :{WHITE}Konektan ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Konektante.. -STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Rajtigante.. -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Atendante.. -STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Elŝutante mapon.. -STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Procesante datenojn.. -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registante.. - -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Kaptante ludinformojn.. -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Kaptante kompaniajn informojn.. +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Rajtigante... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Atendante... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Elŝutante mapon... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Procesante datenojn... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registante... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Kaptante ludinformojn... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Kaptante kompaniajn informojn... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} kliento{P "" j} antaŭ vi STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} ĝis nun elŝutiĝis @@ -1712,7 +1744,7 @@ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uzu ĉi STR_COMPANY_VIEW_JOIN :{BLACK}Anigi STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Anigi kaj ludi kiel ĉi tiu kompanio. STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasvorto -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Pasvorte protektu vian kompanion por eviti ke eksteruloj aliĝu. +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Pasvorte protektu vian kompanion por eviti ke eksteruloj aliĝu STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Agordu kompanian pasvorton # Network chat @@ -1861,15 +1893,15 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, ferm # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Ebloj por travidebleco -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Baskuligi travideblecon de staciosignoj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Baskuligi travideblecon de arboj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Baskuligi travideblecon de domoj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Baskuligi travideblecon de industrioj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Baskuligi travideblecon de konstrueblaĵojn kiel stacidomoj, garaĝoj kaj vojpunktoj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Baskuligi travideblecon de pontoj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Baskuligi travideblecon de aĵoj kiel lumturoj kaj antenoj. Stir+Klak por ŝlosi. -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Baskuligi travideblecon de katenarion. Stir+Klak por ŝlosi. -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Baskuligi travideblecon de ŝarĝindikiloj. Stir+Klak por ŝlosi. +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Baskuligi travideblecon de signoj. Ctrl+Klak por ŝlosi +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Baskuligi travideblecon de arboj. Ctrl+Klak por ŝlosi +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Baskuligi travideblecon de domoj. Ctrl+Klak por ŝlosi +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Baskuligi travideblecon de industrioj. Ctrl+Klaku por ŝlosi +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Baskuligi travideblecon de konstrueblaĵojn kiel stacidomoj, garaĝoj kaj vojpunktoj. Ctrl+Klaku por ŝlosi +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Baskuligi travideblecon de pontoj. Ctrl+Klaku por ŝlosi +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Baskuligi travideblecon de aĵoj kiel lumturoj kaj antenoj. Ctrl+Klaku por ŝlosi +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Baskuligi travideblecon de katenarion. Ctrl+Klaku por ŝlosi +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Baskuligi travideblecon de ŝarĝindikiloj. Ctrl+Klaku por ŝlosi # Linkgraph legend window @@ -1897,16 +1929,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstruado de E STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstruado de Unurela Fervojo STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstruado de Magleva Fervojo -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui trakon. Ctrl baskuligas konstrui/forviŝi fervojan konstruon. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Konstrui trakon per Aŭtomata Relreĝimo. Stir baskuligas konstrui/forviŝi fervojan konstruon. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Konstrui trajngaraĝon (por konstrui kaj prizorgi trajnojn) -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ŝanĝi relon al vojpunkto. Stir-butono permesas ligi vojpunktojn. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Konstrui fervojostacion. Premu Stir-butonon por ligi staciojn. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Konstruu signalojn -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Konstruu fervojan ponton -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Konstruu fervojtunelon +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui trakon. Ctrl baskuligas konstrui/forviŝi fervojan konstruon. Majuskliga klavo baskuligas konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Konstrui trakon per Aŭtomata fervoj-reĝimo. Ctrl baskuligas konstrui/forviŝi fervojan konstruon. La majuskliga klavo baskuligas konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Konstrui trajngaraĝon (pri konstrui kaj prizorgi trajnojn). La majuskliga klavo baskuligas konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ŝanĝi relo al vojpunkto. Ctrl-klavo permesas ligi vojpunktojn. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Konstrui fervojostacion. Premu Stir-butonon por ligi staciojn. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Konstruu signalojn. Ctrl baskuligas inter semaforaj/trafiklumaj signoj{}Treni konstruas rektan lineon da fervojaj signoj. Per Ctrl, signoj konstruiĝas ĝis la sekvonta kuniĝo{}Ctrl+Klaki malfermas fenestron por elekti trafiklumojn. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Konstruu fervojan ponton. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Konstruu fervojtunelon. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Elekti inter konstruado/forigado de trako, signaliloj, vojpunktoj kaj stacidomoj. Tenu Stir-klavon por forigi relojn de vojpunktoj kaj stacioj. -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Transigu reltipon +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Transigu/Plibonigi reltipon. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi STR_RAIL_NAME_RAILROAD :Fervojo STR_RAIL_NAME_ELRAIL :Elektrofervojo @@ -1960,18 +1992,18 @@ STR_BRIDGE_TUBULAR_SILICON :Tuba, Silicia # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vojkonstruado STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Konstruado de tramvojoj -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Konstruu vojeron -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Konstrui stratveturilan garaĝon (por konstrui kaj prizorgi veturilojn) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Konstrui tramveturilan garaĝon (por konstrui kaj prizorgi veturilojn) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Konstrui bushaltejon. Premu Stir-butonon por ligi haltejojn. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Konstrui pasaĝerotraman stacion. Premu Stir-butonon por ligi staciojn. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Konstrui kamionan ŝarĝejon. Premu Stir-butonon por ligi ŝarĝejojn. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Konstrui frajttraman stacion. Premu Stir-butonon por ligi staciojn. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Konstruu vojeron. Ctrl baskuligas inter konstrui/mal-konstrui vojeron. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Konstrui stratveturilan garaĝon (por konstrui kaj prizorgi veturilojn). Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Konstrui tramveturilan garaĝon (por konstrui kaj prizorgi veturilojn). Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Konstrui bushaltejon. Premu Ctrl-klavo por ligi haltejojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Konstrui pasaĝerotraman stacion. Premu Ctrl-klavo por ligi staciojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Konstrui kamionan ŝarĝejon. Premu Ctrl-klavon por ligi ŝarĝejojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Konstrui frajttraman stacion. Premu Ctrl-klavon por ligi staciojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktivigi/Malaktivigi unudirektajn stratojn -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Konstruu vojponton -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Konstrui tramponton -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Konstruu vojtunelon -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Konstrui tramtunelon. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Konstruu vojponton. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Konstrui tramponton. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Konstruu vojtunelon. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Konstrui tramtunelon. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Ĉu konstrui ĉu forigi por vojkonstruado # Road depot construction window @@ -1985,22 +2017,22 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bushalte STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Elektu bushaltejan direkton STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ŝarĝstacia Direkto STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Elektu ŝarĝstacian direkton -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Direkto de Pasaĝera Tramo +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Direkto de Pasaĝera Tramstacio STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de pasaĝerotramstacio -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Direkto de Frajttramo +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Direkto de Frajttram-stacio STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de frajttramstacio # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Konstruado de akvovojoj STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Akvovojoj -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Konstruu kanalojn. -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Konstruu kluzojn -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Konstrui ŝipgaraĝon (por aĉeti kaj prizorgi ŝipojn) -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Konstrui ŝipdokon. Premu Stir-butonon por ligi dokojn. -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Meti buon kiu povas esti uzata kiel vojpunkto. -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Kunstrui akvedukton +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Konstruu kanalojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Konstruu kluzojn. Baskuli inter konstrui/(kosto)taksi per maljuskliga klavo +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Konstrui ŝipgaraĝon (por aĉeti kaj prizorgi ŝipojn). Baskuli inter konstrui/(kosto)taksi per maljuskliga klavo +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Konstrui ŝipdokon. Premu Stir-butonon por ligi dokojn. Baskuli inter konstrui/(kosto)taksi per maljuskliga klavo +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Meti buon kiu povas esti uzata kiel vojpunkto. Baskuli inter konstrui/(kosto)taksi per maljuskliga klavo +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Kunstrui akvedukton. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Difinu akvoregionon.{}Faru kanalon, krom se CTRL estas tenata ĉe marnivelo, kiukaze ĝi anstataŭe transfluas al la ĉirkaŭaĵo -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Loku riverojn. +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Metu riverojn # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Direkto de la ŝipgaraĝo @@ -2011,7 +2043,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Haveno # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flughavenoj -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Konstrui flughavenon. Premu Stir-butonon por ligi flughavenojn. +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Konstrui flughavenon. Prermu Ctrl-klavon per ligi flughavenojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Elekto de Flughaveno @@ -2038,14 +2070,14 @@ STR_STATION_BUILD_NOISE :{BLACK}Bruon ge # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landaspekto -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Malaltigu landangulon -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Altigu landangulon -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ebenigu landon -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Aĉetu landon por onta uzo +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Malaltigu landangulon. Per tiri, la unua angulo malaltigos, kaj la regiono tirata nivelos same. Ctrl-klavo nivelos angule la tiratan regionon. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Altigu landangulon. Per tiri, la unua angulo altigos, kaj la regiono tirata nivelos same. Ctrl-klavo nivelos angule la tiratan regionon. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ebenigu landon ĝis la nivelo de unua eleka angulo. Per Ctrl+tiri, la regiono tirata nivelos same angule. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Aĉetu landon por onta uzo. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Elekto de Objekto -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Eletku objekton por konstrui +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Elektu objekton por konstrui. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Elektu klason de la objekto konstrui STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Antaŭvido de la objekto STR_OBJECT_BUILD_SIZE :{BLACK}Grandeco: {GOLD}{NUM} x {NUM} kaheloj @@ -2055,9 +2087,9 @@ STR_OBJECT_CLASS_TRNS :Transigantoj # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Arboj -STR_PLANT_TREE_TOOLTIP :{BLACK}Elektu arbo-tipon por plant +STR_PLANT_TREE_TOOLTIP :{BLACK}Elektu arbo-tipon por planti. Kiam la regiono jam havas arbojn, aliaj arb-tipoj plantiĝos STR_TREES_RANDOM_TYPE :{BLACK}Arboj de hazardaj tipoj -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Metu arbojn de hazardaj tipoj +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Metu arbojn de hazardaj tipoj. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Hazardaj Arboj STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Hazarde plantu arbojn en la tuta lando @@ -2070,15 +2102,15 @@ STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Malgrand STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Kreu landon hazarde STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Kreu novan scenaron STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reigu landaspekton -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Forviŝu ĉiujn posedaĵojn de la ludanto el la mapo +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Forviŝu ĉiujn posedaĵojn de la kompanio disde la mapo STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reigu Landaspekton -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ĉu vi certas ke vi volas forviŝi ĉiujn posedaĵojn de la ludanto? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ĉu vi certas ke vi volas forviŝi ĉiujn posedaĵojn de la kompanio? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Urba Generado STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Urbo -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fondi novan urbon +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fondi novan urbon. Maljuskliga klavo+klaki nur montrigas taksitan koston STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Hazarda Urbo STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fondi urbon en hazarda loko STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Multaj hazardaj urboj @@ -2230,7 +2262,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-2013 La teamo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 La teamo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon @@ -2250,7 +2282,7 @@ STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Konservu STR_SAVELOAD_LOAD_BUTTON :{BLACK}Ŝarĝu STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ŝarĝu la elektan ludon STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detaloj de la Ludo -STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ne haveblas informoj. +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ne disponeblas informoj STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2267,10 +2299,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Kiom da STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Neĝlinia alteco: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Altigu la neĝlinion per unu STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Malaltigu la neĝlinion per unu -STR_MAPGEN_RANDOM_SEED :{BLACK}Hazarda Enigo: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klaku por enigi hazardan enigon -STR_MAPGEN_RANDOM :{BLACK}Hazardigu -STR_MAPGEN_RANDOM_HELP :{BLACK}Ŝanĝu la hazardan enigon uzatan de la terengenerilo STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerilo: STR_MAPGEN_TREE_PLACER :{BLACK}Arba algoritmo: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terentipo: @@ -2297,7 +2325,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Mapa nom STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grandeco: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enigu hazardan semon STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ŝanĝu altecon de la neĝlinio STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ŝanĝu komencjaron @@ -2351,7 +2378,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Supren STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Movu la elektitan NewGRF-dosieron supren en la listo STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Malsupren STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Movu la elektitan NewGRF-dosieron malsupren en la listo -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listo da instalitaj NewGRF-dosieroj. Alklaku dosieron por ŝanĝi la parametrojn +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listo da instalitaj NewGRF-dosieroj STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Agordu parametrojn STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Baskuligi paletron @@ -2373,6 +2400,10 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ne trovis STR_NEWGRF_SETTINGS_DISABLED :{RED}Malaktiva STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Malkongrua ĉe ĉi tio versio de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CANCEL :{BLACK}Nuligu +STR_SAVE_PRESET_SAVE :{BLACK}Konservu + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ŝanĝu parametroj de la NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fermu @@ -2396,7 +2427,6 @@ STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sekvanta STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iru al bildeto STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Antaŭa bildeto STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movu ĉirkaŭ la bildeton, ŝanĝante la X kaj Y distancojn -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X distanco: {NUM}, Y distanco: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Elektu bildeto STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Elektu bildeton ie el la ekrano @@ -2417,13 +2447,13 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} devi STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} bezonas OpenTTD versio {STRING} aŭ pli bona STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :la GRF-dosiero estas farita por traduki STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tro da NewGRF-oj estas ŝarĝataj -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enhavas rompitan bildeton. Ĉiuj rompitaj bildetoj aspektos kiel ruĝaj demandsignoj (?). -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}La nuntempe uza baza grafikaĵaro estas manka nombro da bildetoj.{} Bonvolu renovigu la baza grafikaĵaro. +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enhavas rompitan bildeton. Ĉiuj rompitaj bildetoj aspektos kiel ruĝaj demandsignoj (?) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}La nuntempe uza baza grafikaĵaro mankas kelkajn da bildetoj.{}Bonvolu renovigu la baza grafikaĵaro STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} estis malaktivata per {STRING} # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Atentu! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝanĝos kurantan ludon. Tio povas kraŝigi la ludon OpenTTD.{}Ĉu vi nepre certas, ke vi volas fari tion? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝanĝos kurantan ludon. Tio povas kraŝigi la ludon OpenTTD aŭ povas rompi ludstaton. Ne fajlu cim-raportojn pri iaj posteuloj.{}Ĉu vi nepre certas, ke vi volas fari tion? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Dosiero ne aldoneblas: duobla GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ne troviĝis apartena dosiero (ŝarĝis taŭgan GRF) @@ -2441,7 +2471,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Mankaj dos # NewGRF 'it's broken' warnings -STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' donas malĝustan informon. +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' donas malĝustan informon STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Revoko' {1:HEX} revenis nekonatan/malvalidan rezulton {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs @@ -2451,6 +2481,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Trovas NewGRF-oj STR_NEWGRF_SCAN_MESSAGE :{BLACK}Trovas NewGRF-oj. Dependa de la sumo ĝi povas esti longetempe... @@ -2473,7 +2505,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enigu no STR_TOWN_DIRECTORY_CAPTION :{WHITE}Urboj STR_TOWN_DIRECTORY_NONE :{ORANGE}-Neniu - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Urbonomoj - klaku nomon por centri vidon ĉe la urbo. Stir+Klak por malfermi novan vidujon ĉe la urba loko. +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Urbonomoj - klaku nomon por centri vidpukto ĉe la urbo. Ctrl+Klak por malfermi novan vidujon ĉe la urba loko STR_TOWN_POPULATION :{BLACK}Monda enloĝantaro: {COMMA} # Town view window @@ -2530,7 +2562,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencioj @@ -2539,13 +2572,13 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}- Neniu - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servoj subvenciataj: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} al {STRING}{YELLOW} ({COMPANY}{YELLOW}, ĝis {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klaku servon por centri vidon ĉe la industrio/urbo. Stir+Klak por malfermi novan vidujon ĉe la loko. +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klaku servon por centri vidpunkto ĉe la industrio/urbo. Ctrl+Klak por malfermi novan vidujon ĉe la loko # Story book window # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Stacionomoj - klaku nomon por centri vidon ĉe la stacio. Stir+Klak por malfermi novan vidujon ĉe la stacioloko. -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tenu la CTRL-klavon por elekti plurajn erojn +STR_STATION_LIST_TOOLTIP :{BLACK}Stacionomoj - klaku nomon por centri vidpunkto ĉe la stacio. Ctrl+Klak por malfermi novan vidujon ĉe la stacioloko +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tenu Ctrl-klavon por elekti plurajn erojn STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stacio{P "" j} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -2556,7 +2589,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nenia ŝ # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Atendas: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} survoje de {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervita por ŝarĝu) @@ -2627,9 +2659,9 @@ STR_FINANCES_LOAN_TITLE :{WHITE}Prunto STR_FINANCES_MAX_LOAN :{WHITE}Maksimuma prunto: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pruntu {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Grandigu prunton +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Grandigu prunton. Ctrl+Klak prunteprenas maksimume STR_FINANCES_REPAY_BUTTON :{BLACK}Repagu {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Repagu pruntparton +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Repagu pruntparton. Ctrl+klak malpruntigas maksimume. # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2651,7 +2683,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Konstrui STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Vidu HQ STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Rigardi kompanian administraciejon STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Relokigu HQ -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rekonstruu kompanian ĉefkonstruaĵon aliloke por 1% de kompanivaloro +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rekonstruu kompanian ĉefkonstruaĵon aliloke por 1% de kompanivaloro. Tenu maljuskliga klavo + Klak por (kost)taksi sen rekonstrui ĉefkonstruaĵon STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova Vizaĝo STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Elektu novan vizaĝon por la manaĝanto @@ -2664,8 +2696,8 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Ŝanĝu STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Aĉetu 25%-an dividaĵon STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Vendu 25%-an dividaĵon -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Aĉetu 25%-an dividaĵon en ĉi tiu kompanio -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vendu 25%-an dividaĵon en ĉi tiu kompanio +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Aĉetu 25%-an dividaĵon en ĉi tiu kompanio. Tenu la maljuskliga klavo por (kosto)taksi sen aĉeti dividaĵojn +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vendu 25%-an dividaĵon en ĉi tiu kompanio. Tenu la maljuskliga klavo por (enspezo)taksi sen vendi dividaĵojn STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Kompania Nomo STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nomo de la Manaĝanto @@ -2680,7 +2712,7 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Neniu STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportite) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportite) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrionomoj - klaku nomon por centri vidon ĉe la industrio. Stir+Klak por malfermi novan vidujon ĉe la loko. +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrionomoj - klaku nomon por centri vidon ĉe la industrio. Ctrl+Klak por malfermi novan vidujon ĉe la loko # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -2702,7 +2734,7 @@ STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkta STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produktas: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends -STR_CONFIG_GAME_PRODUCTION :{WHITE}Ŝanĝu produktadon +STR_CONFIG_GAME_PRODUCTION :{WHITE}Ŝanĝu produktadon (multoble de 8, ĝis 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ŝanĝu produktan nivelon (procento, limigo je 800%) # Vehicle lists @@ -2722,7 +2754,7 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :Haveblaj Trajno STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Haveblaj Veturiloj STR_VEHICLE_LIST_AVAILABLE_SHIPS :Haveblaj Ŝipoj STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Haveblaj Aviadiloj -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vidu liston da ĉiuj haveblaj maŝinoj por ĉi tiu veturilspeco. +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vidu liston da ĉiuj haveblaj maŝinoj por ĉi tiu veturilspeco STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manaĝu liston STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Sendu instrukciojn al ĉiuj veturiloj en la listo @@ -2750,11 +2782,12 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Sengrupaj strat STR_GROUP_DEFAULT_SHIPS :Sengrupaj ŝipoj STR_GROUP_DEFAULT_AIRCRAFTS :Sengrupaj aviadiloj -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupoj - klaku grupon por listigi ĉiujn veturilojn de tiu ĉi grupo +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupoj - klaku grupon por listigi ĉiujn veturilojn de tiu ĉi grupo. Trenu/faligu grupojn por ordigi ĝin STR_GROUP_CREATE_TOOLTIP :{BLACK}Klaku por krei grupon STR_GROUP_DELETE_TOOLTIP :{BLACK}Viŝu la selektitan grupon STR_GROUP_RENAME_TOOLTIP :{BLACK}Alinomi la elektitan grupon + STR_GROUP_ADD_SHARED_VEHICLE :Aldonu kunhavajn veturilojn STR_GROUP_REMOVE_ALL_VEHICLES :Forigi ĉiujn veturilojn @@ -2801,10 +2834,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti V STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Ŝipon STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Aviadilon -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan trajnveturilon -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan stratveturilon -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan ŝipon -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan aviadilon +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan trajnveturilon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan stratveturilon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan ŝipon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan aviadilon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Alinomi STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Alinomi @@ -2816,6 +2849,16 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Alinomi STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Alinomi ŝiptipon STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Alinomi aviadiltipon +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Kaŝu +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Kaŝu +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Kaŝu + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Montru +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Montru +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Montru +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Montru + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Alinomi trajnan veturiltipon STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Alinomi stratveturilan tipon STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Alinomi ŝiptipon @@ -2832,7 +2875,7 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} veturilo{P "" j}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trajnoj - klaku trajnon por scii pli, tiru veturilon por aldoni aŭ forigi de trajno +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trajnoj - klaku trajnon maldekstre por scii pli, tiru veturilon por aldoni aŭ /origi (dis)de trajno. Ctrl-premi influas ĉiom da sekvantajn trajnerojn STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veturiloj - dekstra-alklaku veturilojn por informoj STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Ŝipoj - dekstra-alklaku ŝipon por informoj STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aviadiloj - dekstra-alklaku aviadilon por informoj @@ -2869,10 +2912,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonu Ve STR_DEPOT_CLONE_SHIP :{BLACK}Klonu Ŝipon STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonu aviadilon -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Aĉeti kopion de trajno kun ĉiuj vagonoj. Klaku ĉi tiun butonon kaj poste trajnon en aŭ ekster la garaĝo. Stir+Klak kunhavigas la itineron. -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Aĉeti kopion de stratveturilo. Klaku ĉi tiun butonon kaj poste veturilon en aŭ ekster la garaĝo. Stir+Klak kunhavigas la itineron. -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Aĉeti kopion de ŝipo. Klaku ĉi tiun butonon kaj poste ŝipon en aŭ ekster garaĝo. Stir+Klak kunhavigas la itineron. -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Aĉeti kopion de la aviadilo. Klaku ĉi tiun butonon kaj poste aviadilon en aŭ ekster la hangaro. Stir+Klak kunhavigas la ordonojn. +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Aĉeti kopion de trajno kun ĉiuj vagonoj. Klaku ĉi tiun butonon kaj poste trajnon en aŭ ekster la garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Aĉeti kopion de stratveturilo. Klaku ĉi tiun butonon kaj poste veturilon en aŭ ekster la garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Aĉeti kopion de ŝipo. Klaku ĉi tiun butonon kaj poste ŝipon en aŭ ekster garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Aĉeti kopion de la aviadilo. Klaku ĉi tiun butonon kaj poste aviadilon en aŭ ekster la hangaro. Ctrl+Klak kunhavigas la ordonojn. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la trajngaraĝon. Stir+Klak por malfermi novan vidujon ĉe la trajngaraĝa loko. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la stratveturilan garaĝon. Stir+Klak por malfermi novan vidujon ĉe la garaĝa loko. @@ -2918,6 +2961,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Stratveturilo STR_REPLACE_VEHICLE_SHIP :Ŝipo STR_REPLACE_VEHICLE_AIRCRAFT :Aviadilo + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Elektu maŝinon por anstataŭi STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Elektu novan maŝinon por uzi anstataŭ la maldekstre elektitan @@ -2946,19 +2990,19 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Ĉe aŭt # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centre vidu trajnan lokon en la ĉefvido -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centre vidu la veturilon en la ĉefvido -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centre vidu ŝipon en ĉefvido -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centre vidu aviadilon en la ĉefvido +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centre vidu trajnan lokon en la ĉefvido. Ctrl+klak sekvas trajnon en la ĉefvido +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centre vidu la veturilon en la ĉefvido. Ctrl+klak sekvas veturlilon en la ĉefvido +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centre vidu ŝipon en ĉefvido. Ctrl+klak sekvas ŝipon en la ĉefvido +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centre vidu aviadilon en la ĉefvido. Ctrl-klak sekvas aviadilon en la ĉefvido STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi trajnon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi veturilon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi ŝipon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi aviadilon al hangaro. Stir+Klak nur prizorgos -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Aĉeti kopion de la trajno kun ĉiuj vagonoj. Stir+Klak por kunhavigi la itineron. -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Aĉeti kopion de la stratveturilo. Stir+Klak por kunhavigi la itineron. -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Aĉeti kopion de la ŝipo. Stir+Klak por kunhavigi la itineron. +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Aĉeti kopion de la trajno kun ĉiuj vagonoj. Ctrl+Klak por kunhavigi la itineron +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Aĉeti kopion de la stratveturilo. Stir+Klak por kunhavigi la itineron. Montri taksatan koston sen aĉeti per majuskliga klavo + klak +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Aĉeti kopion de la ŝipo. Stir+Klak por kunhavigi la itineron. Montri taksatan koston sen aĉeti per majuskliga klavo + klak STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Aĉeti kopion de la aviadilo. Stir+Klak por kunhavigi la itinero. Maj+klak montros la antaŭvidatan koston sen jam aĉetin. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Igu trajnon iri malgraŭ signalo @@ -2981,10 +3025,10 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Montru s STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Montru ŝipajn detalojn STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Montru aviadilajn detalojn -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Nuna trajna ago - klaku por haltigi/starti la trajnon -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Nuna veturila ago - klaku ĉi tie por haltigi/starti veturilon -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Nuna ŝipa ago - klaku ĉi tie por haltigi/starti ŝipon -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Nuna aviadila ago - klaku ĉi tie por haltigi/starti aviadilon +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Nuna trajna ago - klaku por haltigi/starti la trajnon. Ctrl+klak rulumas al trajncelo +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Nuna veturila ago - klaku ĉi tie por haltigi/starti veturilon. Ctrl+klak rulumas al veturilcelo +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Nuna ŝipa ago - klaku ĉi tie por haltigi/starti ŝipon. Ctrl+klak rulumas al ŝipcelo +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Nuna aviadila ago - klaku ĉi tie por haltigi/starti aviadilon. Ctrl+klak rulumas al aviadilcelo # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Ŝarĝante / Deŝarĝante @@ -3037,10 +3081,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Enhaveco STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transigaj Kreditoj: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Prizorga intervalo: {LTBLUE}{COMMA}tagoj{BLACK} Lasta prizorgo: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Prizorga intervalo: {LTBLUE}{COMMA}{NBSP}tagoj{BLACK} Plej malfrua prizorgo: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Prizorga intervalo: {LTBLUE}{COMMA}%{BLACK} Lasta prizorgo: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Pliigu prizorgintervalon -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Malpliigu prizorgintervalon +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Multoblas prizorgintervalon po 10. Ctrl+klak multoblas prizorgintervalon po 5. +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Malpliigu prizorgintervalon po 10. Ctrl-klak malpliigas prizorgintervalon po 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ŝanĝi la tipo de servon intervalon STR_VEHICLE_DETAILS_DEFAULT :Defaŭlto @@ -3101,7 +3145,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horaro STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Montri horarovidujon -STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordonlisto - klaku ordonon por elekti. Stir+Klak rulumas al la stacio. +STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordonlisto - klaku ordonon por elekti. Ctrl+Klak rulumas al la celstacio STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3132,7 +3176,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ŝanĝi STR_ORDER_REFIT :{BLACK}Transformu STR_ORDER_REFIT_TOOLTIP :{BLACK}Elektu kargospecon por transformo en ĉi tiu ordono. CTRL+klako por forigi transforminstrukcion -STR_ORDER_REFIT_AUTO :{BLACK}Aŭtotransformi +STR_ORDER_REFIT_AUTO :{BLACK}Aŭtotransformi al stacio STR_ORDER_DROP_REFIT_AUTO :Malŝanĝa ŝarĝo STR_ORDER_DROP_REFIT_AUTO_ANY :Haveblaj ŝarĝoj @@ -3177,7 +3221,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Iru al la plej STR_ORDER_GO_TO_NEAREST_HANGAR :Iru al la plej proksima hangaro. STR_ORDER_CONDITIONAL :Kondiĉe transsaltu ordonon STR_ORDER_SHARE :Kunhavu ordonojn -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Enigi novan ordonon antaŭ la elektita ordono, aŭ aldoni fine de la listo. +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Enigi novan ordonon antaŭ la elektita ordono, aŭ aldoni fine de la listo. Kun Ctrl, trajnordonoj estos 'plenŝargi ia kargo', vojpunkt-ordonoj estos 'ne-halti' kaj depotordono estos 'servado'. Kun 'Komunordonoj'-butono aŭ Ctrl-klaku, ĉi tiu veturilo akiros komunajn ordonojn kun eklekta veturilo. Klaku veturilon por kopii ordonojn de tiu veturilo. Doni ia depotordono maleblas aŭtomatan servadon de ĉi tiu veturilo STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Montru ĉiujn veturilojn kiuj dividas ĉi tiun planon @@ -3221,17 +3265,17 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ne malŝarĝu STR_ORDER_NO_UNLOAD_NO_LOAD :(Ne malŝarĝu kaj ne ŝarĝu) STR_ORDER_AUTO_REFIT :(Aŭtotransformi al {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Plena ŝarĝo kun aŭtotransformi al {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Plena ŝarĝo ciu tipo kun aŭtotransformi al {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Plena ŝarĝi kun aŭtotransformi al {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Plena ŝarĝi ia tipo kun aŭtotransformi al {STRING}) STR_ORDER_UNLOAD_REFIT :(Malŝarĝi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Malŝarĝi kaj atendi por la plena ŝarĝon kun aŭtotransformi al {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Malŝarĝi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Malŝarĝi kaj atendi por ian plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_TRANSFER_REFIT :(Transigi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transigi kaj atendi por la plenan ŝarĝon kun aŭtotransformi al {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transigi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transigi kaj atendi por ian plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Ne malŝarĝi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne malŝarĝi kaj atendi por la plenan ŝarĝon kun aŭtotransformi al {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne malŝarĝi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne malŝarĝi kaj atendi por ian plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_AUTO_REFIT_ANY :haveblaj ŝarĝoj @@ -3259,8 +3303,8 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Veturo (ne hora STR_TIMETABLE_TRAVEL_FOR :Veturu por {STRING} STR_TIMETABLE_STAY_FOR :kaj restu por {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :kaj veturu por {STRING} -STR_TIMETABLE_DAYS :{COMMA} tago{P "" j} -STR_TIMETABLE_TICKS :{COMMA} tiko{P "" j} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}tago{P "" j} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tiko{P "" j} STR_TIMETABLE_TOTAL_TIME :{BLACK} {STRING} necesas por plenumigi ĉi tiun horaron. STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ĉi tio horaro postulos alemnaŭ {STRING} plenigi (ne ĉiu horarita) @@ -3491,7 +3535,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... tro STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... tro proksime al alia urbo STR_ERROR_TOO_MANY_TOWNS :{WHITE}... tro da urboj STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... spaco mankas sur la mapo -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La urbo ne konstruos stratojn. Vi povas ebligi stratkonstruadon per Avancitaj Agordoj->Ekonomio->Urboj. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La urbo ne konstruos stratojn. Vi povas ebligi stratkonstruadon per Avancitaj Agordoj->Ekonomio->Urboj STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Aktivas vojprilaborado STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ne povas forviŝi ĉi tiun urbon...{}Stacidomo aŭ tenejo rilatas al la urbon aŭ urban kahelon ne povas forviŝigi STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ne jen estas konvenan lokon por statuo en la centro de ĉi tiu urbo @@ -3515,6 +3559,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... arba STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... nur konstruebla super la neĝlinio STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... nur konstruebla sub la neĝlinio + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ne povas konstrui stacidomon ĉi tie... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Ne povas konstrui bushaltejon... @@ -3899,7 +3944,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vaporo) @@ -4108,7 +4153,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Pasaĝerŝipo " STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Pasaĝerŝipo "Shivershake" STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Ŝarĝŝipo "Yate" STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Ŝarĝŝipo "Bakewell" -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Ŝarĝŝipo "Mightymover" +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Ŝarĝŝipo "MightyMover" STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Ŝarĝŝipo "Powernaut" STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4225,6 +4270,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4236,8 +4282,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4248,9 +4292,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 9d568bb568..5c9fa78494 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -152,7 +152,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Kihisevad joogi # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} reisija{P "" t} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}reisija{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} kivisütt STR_QUANTITY_MAIL :{COMMA} postipakk{P "" i} STR_QUANTITY_OIL :{VOLUME_LONG} naftat @@ -286,10 +286,10 @@ STR_LIST_FILTER_OSKTITLE :{BLACK}Sisesta STR_LIST_FILTER_TOOLTIP :{BLACK}Sisesta märksõna mida loendist otsida STR_TOOLTIP_GROUP_ORDER :{BLACK}Vali rühmitamise järjestus -STR_TOOLTIP_SORT_ORDER :{BLACK}Vali järjestusviis (kahanev/kasvav) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vali järjestusviis +STR_TOOLTIP_SORT_ORDER :{BLACK}Vali järjekord (kahanev/kasvav) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vali järjekord STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vali sõelumisalused -STR_BUTTON_SORT_BY :{BLACK}Järjestusviis: +STR_BUTTON_SORT_BY :{BLACK}Järjekord: STR_BUTTON_LOCATION :{BLACK}Asukoht STR_BUTTON_RENAME :{BLACK}Nimevahetus @@ -305,6 +305,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Kerimisr STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Kerimisriba - kerib listi üles/alla STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Ruudul asuvate hoonete jms. lammutamine. Ctrl valib ala diagonaalselt. Shift valib ehitamise/hinna kuvamise režiimi +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Näita peidetud +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Näita peidetud +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Näita peidetud +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Näita peidetud + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Selle nupu lubamisega kuvatakse ka peidetud rongid +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Selle nupu lubamisega kuvatakse ka peidetud sõidukid +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Selle nupu lubamisega kuvatakse ka peidetud laevad +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Selle nupu lubamisega kuvatakse ka peidetud lennukid + # Query window STR_BUTTON_DEFAULT :{BLACK}Esialgne STR_BUTTON_CANCEL :{BLACK}Tühista @@ -350,9 +361,9 @@ STR_SORT_BY_ENGINE_ID :MootoriID (algn STR_SORT_BY_COST :Hind STR_SORT_BY_POWER :Võimsus STR_SORT_BY_TRACTIVE_EFFORT :Veojõud -STR_SORT_BY_INTRO_DATE :Esitluskuupäev +STR_SORT_BY_INTRO_DATE :Esmaesitluse kuupäev STR_SORT_BY_RUNNING_COST :Käituskulud -STR_SORT_BY_POWER_VS_RUNNING_COST :Võimsus- ja käituskulud +STR_SORT_BY_POWER_VS_RUNNING_COST :Kasutegur STR_SORT_BY_CARGO_CAPACITY :Kandevõime STR_SORT_BY_RANGE :Vahekaugus STR_SORT_BY_POPULATION :Rahvaarv @@ -393,7 +404,7 @@ STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Vaheta t # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Kaardi salvestamine, kaardi laadimine, kaarditegemisest lahkumine, mängust väljumine STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Kaardiredaktor +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Stsenaariumiredaktor STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Alguse liigutamine 1 aasta võrra tagasi STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Alguse liigutamine 1 aasta võrra edasi STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Alustamise aasta valikuks klõpsi siin @@ -418,7 +429,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Välju ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Mängu seadistus -STR_SETTINGS_MENU_CONFIG_SETTINGS :Põhjalik seadistus +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Seaded STR_SETTINGS_MENU_SCRIPT_SETTINGS :Tehismõistuse / Mängu skriptide seaded STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-i seadistus STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Läbipaistvuse seadistus @@ -527,7 +538,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Kontuuride kuva STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Vaheta toon määrdunud plokil ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -543,22 +554,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -867,13 +896,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} ootab depoos STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ootab lennukiangaaris -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} sõiduplaanis on liiga vähe ülesandeid STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Sõidukil {VEHICLE} on tühistatud ülesanne STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Sõidukil {VEHICLE} on topeltülesandeid STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Sõiduki «{VEHICLE}» ülesannetes on kõlbmatu jaam -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} lennugraafikus on lennujaam, mille maandumisrada on liiga lühike STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} on vanaks saamas STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} on väga vanaks saamas @@ -956,10 +984,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruusia lari (G STR_GAME_OPTIONS_CURRENCY_IRR :Iraani rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Sõidukid STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Vali, kummal pool teed mootorsõidukid liiklevad STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vasakpoolne liiklus @@ -995,11 +1019,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalaani STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Isesalvestamine STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vali automaatselt mängu salvestamise vahemik +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Väljas STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Iga kuu STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Iga 3 kuu tagant STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Iga 6 kuu tagant STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Iga 12 kuu tagant +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Keel STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valib kasutajaliideses kasutatava keele @@ -1011,8 +1037,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekraanil STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Ekraanilahutuse valimine STR_GAME_OPTIONS_RESOLUTION_OTHER :muu -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekraanipildi vorming -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vali kasutatav ekraanipildi vorming +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Liidese suurus +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vali kasutatav liideseelementide suurus + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Tavaline +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Topeltsuurus +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Ruudu suurus STR_GAME_OPTIONS_BASE_GRF :{BLACK}Alusgraafika kogu STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valib kasutatava alusgraafika kogu @@ -1028,6 +1058,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valib al STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} viga{P "ne" "sed"} fail{P "" "id"} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Rohkem teavet alusmuusika kogu kohta +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Ei õnnestunud tuvastada toetatud resulutsioone STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täisekraanrežiim ebaõnnestus # Custom currency window @@ -1056,7 +1087,7 @@ STR_CURRENCY_PREVIEW :{LTBLUE}Eelvaad STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 naela (£) sinu valuutas STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Muuda personaalse valuuta parameetreid -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Vastaste arvu ülemmäär: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Vastaseid kuni: {ORANGE}{COMMA} STR_NONE :Pole STR_FUNDING_ONLY :Ainult rahastatud @@ -1106,6 +1137,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Väga tasane STR_TERRAIN_TYPE_FLAT :Tasane STR_TERRAIN_TYPE_HILLY :Künklik STR_TERRAIN_TYPE_MOUNTAINOUS :Mägine +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Soodustav STR_CITY_APPROVAL_TOLERANT :Salliv @@ -1113,8 +1145,8 @@ STR_CITY_APPROVAL_HOSTILE :Vaenulik STR_WARNING_NO_SUITABLE_AI :{WHITE}Sobiv tehismõistus puudub...{}Tehismõistuseid võib laadida Internetisisu laadimise aknast. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Põhjalik seadistus +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Seaded STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtri tekst: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ava kõik STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sulge kõik @@ -1127,11 +1159,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Mängu seaded ( STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult uusi mänge) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult praegust ettevõtet) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Näidatud: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Piirab alljärgnevat nimekirja muudetud seadete kuvamiseks -STR_CONFIG_SETTING_RESTRICT_BASIC :Põhilised seaded -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Täpsemad seaded -STR_CONFIG_SETTING_RESTRICT_ALL :Eksperdi seaded / kõik seaded +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Rühm: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Liik: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Piirab varem tehtud filtridega alljärgnevat loendit +STR_CONFIG_SETTING_RESTRICT_BASIC :Põhilised (kuva vaid tähtsad seaded) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Edasijõudnud (enim seadeid) +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert (kuva kõik seaded, isegi veidrad) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Seaded mis erinevad vaikeväärtustest STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Seaded mis erinevad sinu valitud uue mängu seadetest @@ -1142,6 +1175,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Mängu seaded ( STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Mängu seaded (hoitakse salvestuses; mõjutab ainult praegust mängu) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firma seaded (hoitakse salvestuses; mõjutab ainult uusi mänge) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma seaded (hoitakse salvestuses; mõjutab ainult praegust firmat) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}rühm {BLACK}on {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}liik {BLACK}on {WHITE}Kõik seadistuste liigid +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}rühm {BLACK}on {WHITE}{STRING} {BLACK}ja {SILVER}liik {BLACK}on {WHITE}Kõik seadistuste liigid +STR_CONFIG_SETTINGS_NONE :{WHITE}- Puudub - STR_CONFIG_SETTING_OFF :Väljas STR_CONFIG_SETTING_ON :Sees @@ -1164,26 +1201,27 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurim summa, m STR_CONFIG_SETTING_INTEREST_RATE :Intressimäär: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Laenu intressimäär; ühtlasi juhib inflatsiooni, kui inflatsioon on aktiveeritud STR_CONFIG_SETTING_RUNNING_COSTS :Käituskulud: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Määra sõidukite ja taristu hoolduse ja töös hoidmise maksumuse tase +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Määrab sõidukite ja taristu hooldus- ja käituskulude hinnataseme STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ehitustempo: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Piira tehisintellekti ehitustoimingute arvu +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Piirab arvuti ehitustoimingute arvu STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Sõidukirikkeid: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Muudab hooldamata sõidukite rikkesagedust STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Toetuse kordaja: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Määra ära kui palju makstakse toetatud liinide eest STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Ehituse hinnad: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Määra ehituse ja maa ostu hinna tase +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Määrab ehitus- ja ostukulude hinnataseme STR_CONFIG_SETTING_RECESSIONS :Majanduslangused: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Kui on aktiveeritud siis võib majanduslangus toimuda iga paari aasta tagant. Majanduslanguse ajal on kõik tootmismahud tunduvalt madalamad (majanduslanguse lõppedes taastuvad endised tootmismahud) STR_CONFIG_SETTING_TRAIN_REVERSING :Keela rongide ümberpöörd jaamades: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Kui on aktiveeritud, siis ei pööra rongid vahejaamades ringi isegi siis kui ringi pööramisel oleks teekond järgmisse sihtpunkti lühem STR_CONFIG_SETTING_DISASTERS :Katastroofid: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/välja katastroofid mis võivad aeg-ajalt hävitada sõidukeid või taristut +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/välja katastroofid, mis aeg-ajalt hävitavad sõidukeid ja taristut STR_CONFIG_SETTING_CITY_APPROVAL :Linnavalitusese suhtumine pinnase restruktureerimisse: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vali kui suurt mõju tekitavad müra ning keskkonna muudatused ettevõtte mainele ja edasistele ehitustoimingutele antud piirkonnas -STR_CONFIG_SETTING_BUILDONSLOPES :Nõlvadele ja kallastele ehitamine: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Kui lubatud, saab teid ja jaamu ehitada enamikle nõlvadele. Kui keelatud, siis on need lubatud ainult nõlvadel, mis vastavad rööbastee suunale ja mis eeldavad seega vundamenti. +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimaalne mägede kõrgus: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Sätesta kaardi maksimaalne lubatud mägede kõrgus +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kaardi maksimaalset kõrgust pole sellisele kõrgusele võimalik sätestada. Vähemalt üks mägi on antud kõrgusest suurem. STR_CONFIG_SETTING_AUTOSLOPE :Maastikukujundus majade, rööbaste jms. all (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Lase maja- ja rööpaalust maad kujundada ilma neid eemaldamata STR_CONFIG_SETTING_CATCHMENT :Reaalsemad veekogud: {STRING} @@ -1208,23 +1246,19 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Rongidel ja lae STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 kraadine pööre esineb, kui rõhtsele rööpale järgneb püstne rööbas, seega peab rong tegema 90 kraadise pöörde tavalise 45 kraadise pöörde asemel. Muudab ka laevade pöörderaadiust STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Mitte kõrvuti asetsevate jaamade liitmine: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Lubab lisada uusi jaamade osi ilma puudutamata olemasolevaid osi. Vajalik Ctrl+Vajutus, kui asetada uut osa -STR_CONFIG_SETTING_IMPROVEDLOAD :Täiustatud laadimisalgoritm: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Kui lubatud, laaditakse ootel sõidukid jaamas järjestikkul. Järgmise sõiduki laadimine käivitub ainult siis, kui on piisavalt lasti, et täielikult täita esimese sõiduk -STR_CONFIG_SETTING_GRADUAL_LOADING :Veovahendite järkjärguline laadimine: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Järk-järgult laetud sõidukitel kasutatakse sõiduki kindlalt laadimis aega, selle asemel et pealelaadida kõik korraga kindlaks määratud ajaga, mis oleneb ainult laetud lasti summast STR_CONFIG_SETTING_INFLATION :Inflatsioon: {STRING} -STR_CONFIG_SETTING_INFLATION_HELPTEXT :Võimaldada inflatsioon majanduses, kui kulud suurenevad veidi kiiremini kui maksed -STR_CONFIG_SETTING_SELECTGOODS :Kauba toimetamine jaama ainult nõudluse korral: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Jaama tuleb ainult kaup mis on nõutud vastava sõiduki poolt. See välistab halvad reitingud teistele kaupadele mida sellest jaamast ei transpordita +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Tekitab majandusinflatsiooni, kus hinnad tõusevad pisut kiiremini kui maksed STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimaalne silla pikkus: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimaalne pikkus ehitatud sildadele +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimaalne silla kõrgus: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimaalne sildade ehitamise kõrgus STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimaalne tunneli pikkus: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimaalne pikkus ehitatud tunnelitele -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Põhitööstuse rajamismeetod: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Peamise tootmisharu rahastamise meetod. 'ei ole' tähendab ei ole võimalik rahastada, 'geoloogiliste' tähendab rahastamine on võimalik, kuid ehitis kaardil tekib suvalise kohapeal või võib üldse ebaõnnestuda. 'nagu muid tööstusharud,' tähendab toorest tööstusharu saab ehitada nagu töötleva tööstuse harusid +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Toorainetööstuse rajamise viis: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Toorainetööstuse rajamise viis. Valides 'pole' ei saa üldse toorainetööstuseid rajada, 'uuringutega' rajatakse tööstus suvalisse kohta, ning 'nagu kõik tööstused' ehitatakse toorainetööstuseid nagu töötlevat tööstust STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Pole -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Nagu muud tööstused -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Eeluuringutega +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Nagu kõik tööstused +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Uuringutega STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Tasane ala ümber tehaste: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Summa kui palju tasast maad on ümber tehase. See tagab et ruumi jääb saadavale ehitiste jaoks STR_CONFIG_SETTING_MULTIPINDTOWN :Samalaadsed tööstused ühes linnas: {STRING} @@ -1237,14 +1271,12 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Paremal STR_CONFIG_SETTING_SHOWFINANCES :Aasta lõpul näidatakse rahavoogude aruannet: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Sisse lülitamisel ilmub iga aasta lõpus rahavoogude aruanne, mis annab hea ülevaate ettevõtte rahalisest olukorrast STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Ülesanded on esialgselt «Peatusteta»: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Tavaliselt peatub sõiduk igas peatuses, mida ta läbib. Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduse esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Tavaliselt peatub sõiduk igas peatuses, mida ta läbib. Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduste esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada STR_CONFIG_SETTING_STOP_LOCATION :Esialgne platvormi peatumisosa uute rongide ülesannetes: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Esialgne peatumiskoht rongiplatvormil. «Lõpu lähedal» tähendab sisenemispunkti lähistel. «Keskel» tähendab keset platvormi. «Kaugel lõpus» tähendab kaugel sisenemispunktist. NB! Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduse esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Esialgne peatumiskoht rongiplatvormil. «Lõpu lähedal» tähendab sisenemispunkti lähistel. «Keskel» tähendab keset platvormi. «Kaugel lõpus» tähendab kaugel sisenemispunktist. NB! Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduste esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :lõpu lähedal STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :keskel STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :täiesti lõpus -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Mootorsõidukite järjekorrad (koos mahuefektidega): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Pane sõiduk ootama hõivatud peatuse ees kuni need on vabastatud STR_CONFIG_SETTING_AUTOSCROLL :Vaate liikumine, kui hiireosuti on akna servas: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Sisse lülitamisel liigub vaade, kui hiireosuti on aknaserva lähedal STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Väljas @@ -1252,13 +1284,13 @@ STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Peamine vaateak STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Peamine vaateaken STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Kõik vaateaknad STR_CONFIG_SETTING_BRIBE :Altkäemaksud kohalikele omavalitsustele: {STRING} -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Luba anda altkäemaksu kohalikule linnavõimule. Kui altkäemaks on inspektori poolt avastatud, siis ei saa ettevõte 6 kuu jooksul linnas mitte midagi ette võtta +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Võimaldab linna omavalitsusele altkäemaksu pakkuda. Vahele jäämise korral võetakse ettevõttelt kuueks kuuks ära õigus tegutseda linnas STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ainuveoõiguste ostmine: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Kui ettevõte ostab linnalt ainuõiguse kaupu transportida, siis vastase jaamadesse (reisijad ja last) ei ilmu kaupu terve aasta +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Kui ettevõte ostab linnalt kaubaveo ainuõiguse, siis teised ettevõtted ei saa üks aasta uusi kaupu ega reisijaid STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Luba ehitiste rahastamine: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Luba ettevõtetel rahastada uute hoonete ehitamist linnas +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Võimaldab ettevõttel linna kinnisvaraehitust rahastada STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Kohaliku omavalitsuse teede rekonstrueerimise rahastamine: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Luba ettevõtetel rahastada teede parandust, et saboteerida maantee põhist transporti selles linnas +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Võimaldab ettevõtetel linna tee-ehitustöid rahastada, šaboteerides sellega autode kaubavedu STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Raha saatmine teistele ettevõtetele: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Luba mitmikmängus kanda raha erinevate ettevõtete vahel STR_CONFIG_SETTING_FREIGHT_TRAINS :Raskete rongide simuleerimiseks kasutatav raskustegur: {STRING} @@ -1275,13 +1307,9 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Läbisõidupeat STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Lubab linnale kuuluvatel teedel ehitada läbisõidupeatuseid STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Läbisõidupeatused konkurentide teedel: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Lubab teisele ettevõttele kuulaval teel ehitada läbisõidupeatuseid -STR_CONFIG_SETTING_ADJACENT_STATIONS :Jaamade kõrvutiehitamine: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Luba erinevaid jaamu omavahel kokku puutuda -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Mitme NewGRF sõidukikomplekti lubamine: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Ühilduvuse suvand vanadele NewGRF'le. Ärge keelake seda, juhul kui Sa tead täpselt mida sa teed! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Sõidukite olemasolul ei saa seda seadet muuta STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Taristu hooldamine: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kui on aktiveeritud, siis taristu tekitab halduskulusid. Maksumus kasvab ebaproportsionaalselt taristu kasvuga, seega mõjutab suuri ettevõtteid rohkem kui väikeseid +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Taristuga kaasnevad halduskulud. Kulud kasvavad taristu hulga suhtes ebaproportsionaalselt, ning mõjutavad pigem suurettevõtteid STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aegumatud lennuväljad: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Selle seade sisse lülitamine jätab kõik lennujaamade tüübid avatuks lõpmata ajaks peale nende avanemist @@ -1317,27 +1345,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Näitab linna n STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Graafikujoone laius: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Graafikutes kasutatava joone laius. Peenem joon on täpsem, laiem joon on paremini näha ja värvid on selgemini eristatavad +STR_CONFIG_SETTING_LANDSCAPE :Maastik: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Igal maastikul on oma kaubatüübid ja nõuded linnade kasvamiseks. Täpsemaid muudatusi saab teha NewGRFi ja mänguskriptide abil. STR_CONFIG_SETTING_LAND_GENERATOR :Maatekituse meetod: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originaalne generaator sõltub alusgraafikast ja tekitab kindlaksmääratud maastikuvorme. TerraGenesis on Perlini müral põhinev generaator, mida saab täpsemalt seadistada STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Algupärane STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Maapinna tüüp: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Maastiku mägisus +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Tööstustihedus: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Määrab, kui palju tööstuseid tekib, ning kui palju neid mängu kestel olema peaks STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimaalne kaugus kaardi servast naftatöötlustehase jaoks: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftatöötlemistehased ehitatakse ainult kaardi piirile, see on rannikul saartega mängitaval kaardil. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumepiiri kõrgus: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määra, millisel kõrgusel algab sub-arktiline maastik. Lumi mõjutab ka tööstuste loomist ja linna kasvamise tingimusi STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maastiku järskus (ainult TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Vali mägede tihedus: Laugetel maastikel on vähem, laiema ulatusega mägesid. Mägistel maastikel on palju mägesid, mis võivad näha välja samasugused STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väga lauge STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lauge STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Järsk STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Väga järsk +STR_CONFIG_SETTING_VARIETY :Iseärasuste jaotus: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Määra, kas kaardil on nii mägiseid kui laugeid alasid. Kuna see muudab kaarti ainult laugemaks, peaksid teised sätted olema seadistatud mägisteks +STR_CONFIG_SETTING_RIVER_AMOUNT :Jõgede hulk: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vali kui palju jõgesid luua STR_CONFIG_SETTING_TREE_PLACER :Puuasetusalgoritm: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Vali puude jaotuvus kaardil: 'Algupärane' paigutab puud vormitult hajutatuna, 'Täiustatud' paigutab need gruppidena STR_CONFIG_SETTING_TREE_PLACER_NONE :Pole STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Algupärane STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Täiustatud +STR_CONFIG_SETTING_ROAD_SIDE :Sõidukid: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Vali liikluse suund STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Kõrgustekaardi pööramine: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Vastu-päevapidi STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Päevapidi STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Kõrguse level kui kõrgele lapik kaart läheb: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Maastikukujundus kaardiäärsetel ruutudel: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Kui välja lülitatud, siis kaardi piirid on alati maailmameri STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Üks või enam ruutu põhjaäärel pole tühjad STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Üks või enam ääreruutu pole vesi @@ -1388,17 +1430,15 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Väljas STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vaate liigutamine vasaku hiireklahviga: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Lubab kaardi liigutamise vasaku hiireklahvi abil. See lihtsustab mängimist puutetundlikul ekraanil +STR_CONFIG_SETTING_AUTOSAVE :Automaatne salvestamine: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vali automaatse salvestamise intervall + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Salvestatud mängu nimes kasutatakse {STRING} kuupäevavormingut STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Kuupäeva vorming salvestatud mängu nimes STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :pikka (31. dets 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :lühikest (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :NewGRF-i palett, kui palett on määramata: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Palett, kui NewGRF vajalikku paletti ei määra -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-i palett -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windowsi palett - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Mängu alguses mäng seisab: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Sisse lülitamisel mängu alguses aeg seisab, et oleks rohkem aega kaardiga tutvuda STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Lubatud seisaku ajal: {STRING} @@ -1473,7 +1513,7 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Keskmine STR_CONFIG_SETTING_AI_PROFILE_HARD :Keeruline STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tehismõistus mitmikmängus: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Luba kõikidel TI mängijatel ühineda mitmikmängudesse +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Võimaldab arvutil osaleda mitmikmängudes STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcode-d ennem skripte on peatatud: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimaalne arv arvutamise käike mida skript võib teha ühel sammul @@ -1532,10 +1572,10 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Lühike STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Täielik STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Värvilised uudised ilmuvad aastast {STRING} -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Aasta millest alates hakkavad ilmuma värvilised ajalehed. Ennem seda aastat kasutatakse must-valget trükki +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Värviliste uudiste ilmumise algusaasta. Varasematel aastatel ilmuvad uudised must-valgelt STR_CONFIG_SETTING_STARTING_YEAR :Alustamise aeg: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Sujuv majandus (rohkem, kuid väikesed muutused): {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kui on aktiveeritud siis muutuvad tööstuste toodangute mahud tihemini ja väiksemate sammudega. Sellel seadel ei ole tavaliselt mingit effekti kui tööstuse tüübid on määratud NewGRF-is +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Toodangumahtude muutused on väiksemad ja sagedasemad. Juhul kui tööstused tulevad NewGRF-ist ei oma see seade tavaliselt mõju STR_CONFIG_SETTING_ALLOW_SHARES :Aktsiatehingud teiste ettevõtetega: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kui on aktiveeritud siis on ettevõtte aktsiate ostmine ja müümine lubatud. Aktsiad on saadaval ainult ettevõtetel mille vanus on üle teatud piiri STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Protsent tuludest mis läheb 'kanna edasi' süsteemis alumistesse lülidesse: {STRING} @@ -1572,9 +1612,9 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Luba linnadel e STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Linnadel on lubatud ehitada ülesõidukohti: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Selle seade sisse lülitamine lubab linnadel ehitada ülesõidukohti STR_CONFIG_SETTING_NOISE_LEVEL :Lennujaamade mürapiirangud linnades: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kui ei ole aktiveeritud, siis on igas linnas lubatud kuni kaks lennujaama. Kui see seade on aktiveeritud, siis on lubatud igas linnas lennujaamu ehitada vastavalt linna müra vastuvõrlikkuse tasemele, mis sõltub otseselt linna elanike arvust ja lennujaama suurusest ja kaugusest kesklinnast +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kui seade ei ole sisse lülitatud, siis igasse linna on lubatud ehitada kuni kaks lennuvälja. Kui see seade on lubatud, siis lennuväljade arvu ülempiiri määrab linna müratundlikkus, mis sõltub rahvaarvust ja lennuvälja suurusest ja kaugusest STR_CONFIG_SETTING_TOWN_FOUNDING :Linnade rajamine keset mängu: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Selle seade aktiveerimisel on lubatud mängijalt rahastada uute linnade rajamist mängus +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Võimaldab ettevõttel uusi linnu rajada STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Keelatud STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Lubatud STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Lubatud, koos linnaskeemi valimisega @@ -1620,8 +1660,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 iga {COMMA} k STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Mitte ühtegi STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Algne linnade suurustegur: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Keskmine linna suurus võrreldes tavalise asulaga mängu alguses -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Mittevajaliku eemaldamine teedeehitusel: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Eemalda tupikteed kui rahastatakse kohalikku teedeehitust STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Jaotusgraafikuid uuendatakse igal {STRING}. päeval STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Aega ahelgraafikute koostamise vahel. Koostamine uuendab plaane ainult ühes graafiku osas. Seega X väärtusega ei uuendata graafikut iga X päeva tagant. Uuendatakse vaid ühte osa. Väiksema arvuga kasutatakse protsessorit rohkem. Suurema arvuga läheb kauem aega, kuni uuel teel alustatakse kaubavedu. @@ -1635,7 +1673,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Kui jaamast A l STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Posti jaotuse viis: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Kui jaamast A viiakse jaama B umbes sama hulk posti, kui jaamast B jaama A, siis jaotus on «sümeetriline». Kui mõlemas suunas viiakse ükskõik, kui palju posti, siis jaotus on «asümeetriline». Kui posti liikumist ei jaotata, siis jaotus on «väljas». STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :SOOMUSTATUD kaubarühma jaotuse viis: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Parasvöötmes on SOOMUSTATUD kaubarühm väärisasjad, lähistroopikas teemantid, ning lähisartikas kuld. Neid saab lisada NewGRF-iga. Kui jaamast A viiakse jaama B umbes sama hulk kaupa, kui jaamast B jaama A, siis jaotus on «sümeetriline». Kui mõlemas suunas viiakse ükskõik, kui palju kaupa, siis jaotus on «asümeetriline». Kui posti liikumist ei jaotata, siis jaotus on «väljas». Lähisartikas valida asümeetriline või väljas, sest pankadest kulda tagasi ei tule. Parasvöötmes ja lähistroopikas on võimalik valida ka sümeetriline, sest pangad saadavad lähtepanka väärisasju tagasi. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Parasvöötmes on SOOMUSTATUD kaubarühm väärisasjad, lähistroopikas teemandid, ning lähisartikas kuld. Neid saab lisada NewGRF-iga. Kui jaamast A viiakse jaama B umbes sama hulk kaupa, kui jaamast B jaama A, siis jaotus on «sümeetriline». Kui mõlemas suunas viiakse ükskõik, kui palju kaupa, siis jaotus on «asümeetriline». Kui posti liikumist ei jaotata, siis jaotus on «väljas». Lähisartikas valida asümeetriline või väljas, sest pankadest kulda tagasi ei tule. Parasvöötmes ja lähistroopikas on võimalik valida ka sümeetriline, sest pangad saadavad lähtepanka väärisasju tagasi. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Teiste kaubarühmade jaotuse viis: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Kui jaamast A viiakse jaama B umbes sama hulk kaupa, kui jaamast B jaama A, siis jaotus on «sümeetriline». Kui mõlemas suunas viiakse ükskõik, kui palju kaupa, siis jaotus on «asümeetriline». Kui posti liikumist ei jaotata, siis jaotus on «väljas». Tavaliselt on head valikud «asümeetriline» ja «väljas». STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Jaotuse täpsus: {STRING} @@ -1644,7 +1682,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Kauguse mõju n STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Juhul kui väärtus on suurem kui 0, siis jaama A ja B vaheline kaugus mõjutab jaamast A jaama B saadetava kauba hulka. Mida kaugeb jaam B on jaamast A, seda vähem kaupa saadetakse. Mida suurem väärtus, seda vähem kaupa saadetakse kaugel asuvatesse jaamadesse, ning rohkem kaupa saadetakse lähedal asuvatesse jaamadesse. STR_CONFIG_SETTING_DEMAND_SIZE :Tagasitulevat kaupa, kui jaotus on sümeetriline: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Kui väärtus on alla 100%, siis sümeetriline jaotus sarnaneb asümeetrilisele jaotusele, sest tagasi saadetakse vähem kaupa, kui tuli. Sümeetriline ja asümeetriline jaotusviis on samad, kui väärtus on 0%. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Liikluskoormus, kui otsitakse kõrgema läbilaskevõimega rada: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Liikluskoormus, et otsida kõrgema läbilaskevõimega rada: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Kauba vedamisel ühest jaamast teise saab kasutada mitu rada. Kaubajaotusel arvestatakse läbilaskevõimet ja liikluskoormust. Kui liikluskoormus on suurem kui läbilaskevõime, suunatakse kaup kõigepealt kõrgema läbilaskevõimega radadele. Läbilaskevõime arvutamine ei ole täpne; antud seaded määravad liikluskoormuse millal kaup suunatakse järgmisele rajale. Ülekoormuse vältimiseks on soovitatav liikluskoormus alla 100%. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Kiirusühikud: {STRING} @@ -1683,27 +1721,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inglise mõõdu STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meetermõõdustik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI-süsteem (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Liides STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kohandused -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Ehitus -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Sõidukid -STR_CONFIG_SETTING_STATIONS :{ORANGE}Jaamad -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Majandus -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Kaubajaotus -STR_CONFIG_SETTING_AI :{ORANGE}Konkurendid -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Vaate seadistus -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Käitumine +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graafika STR_CONFIG_SETTING_SOUND :{ORANGE}Heliefektid -STR_CONFIG_SETTING_NEWS :{ORANGE}Uudised ja sõnumid -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaalid -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kauba käsitlemine -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Arvutimängijad -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Uuendamine -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Hooldus +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Liides +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Üldine +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vaateavad +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Ehitus +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Uudised / Nõunikud +STR_CONFIG_SETTING_COMPANY :{ORANGE}Ettevõte +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Raamatupidamine +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Sõidukid +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Füüsika STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Marsruutimine -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Rongid -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Linnad -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Tööstused +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Piirangud +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastroofid / Õnnetused +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Maailma tekitamine +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Keskkond +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Linnavõimud +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Linnad +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Tööstused +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kaubajaotus +STR_CONFIG_SETTING_AI :{ORANGE}Konkurendid +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Arvuti STR_CONFIG_SETTING_PATHFINDER_OPF :Algne STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1752,7 +1792,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Mitmikm STR_INTRO_GAME_OPTIONS :{BLACK}Liidese seadistus STR_INTRO_HIGHSCORE :{BLACK}Punktitabel -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Põhjalik seadistus +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Seaded STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-i seadistus STR_INTRO_ONLINE_CONTENT :{BLACK}Aineste allalaadimine STR_INTRO_SCRIPT_SETTINGS :{BLACK}Arvuti seadistus @@ -1772,7 +1812,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vali 'm STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Ava liidese seadistamine STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Ava punktitabel -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Ava põhjalik seadistamine +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ava seaded STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Ava NewGRF-i seadistamine STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Otsi allalaadimiseks uusi ja uuendatud aineseid STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Ava arvuti seadistamine @@ -1801,7 +1841,7 @@ STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Mängu lõpetamine STR_ABANDON_GAME_QUERY :{YELLOW}Kas lõpetada mäng? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad kaardi tegemise lõpetada? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad stsenaariumi tegemise lõpetada? # Cheat window STR_CHEATS :{WHITE}Petmine @@ -1812,6 +1852,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Mängim STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Võlubuldooser (eemaldab tööstused, paiksed objektid): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelid võivad üksteist läbida: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktiivlennukid ei kuku (tihti) väikestel lennuväljadel alla: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Muuda maksimaalset kaardi kõrgust {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Muuda kaardi maksimaalset mägede kõrgust STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Parasvöötme maastik STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Arktiline maastik STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Troopiline maastik @@ -1860,6 +1902,7 @@ STR_LIVERY_FREIGHT_TRAM :Kaubatramm STR_FACE_CAPTION :{WHITE}Näo valik STR_FACE_CANCEL_TOOLTIP :{BLACK}Tühista uue näo valimine STR_FACE_OK_TOOLTIP :{BLACK}Uue näo valimine +STR_FACE_RANDOM :{BLACK}Suvaline STR_FACE_MALE_BUTTON :{BLACK}Mees STR_FACE_MALE_TOOLTIP :{BLACK}Vali mehe nägu @@ -1981,6 +2024,7 @@ STR_NETWORK_START_SERVER_UNADVERTISED :Jah STR_NETWORK_START_SERVER_ADVERTISED :Jah STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" i} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Kliente kuni: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS.in :sees STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Määrab klientide arvule ülempiiri. Kõiki vabu kohti ei pea täitma STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} ettevõte{P "" t} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Ettevõtteid kuni: @@ -2099,6 +2143,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Vaatlejad STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sisesta summa mida anda +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Vaatleja # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Sisestatud salasõna ei salvestata @@ -2206,7 +2251,7 @@ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server r # Content downloading window STR_CONTENT_TITLE :{WHITE}Aineste allalaadimine -STR_CONTENT_TYPE_CAPTION :{BLACK}Tüüp +STR_CONTENT_TYPE_CAPTION :{BLACK}Liik STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Ainese liik STR_CONTENT_NAME_CAPTION :{BLACK}Nimi STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainese nimi @@ -2227,7 +2272,7 @@ STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Külasta STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laadi alla STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Alusta valitud aineste allalaadimist STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Allalaadimiste kogusuurus: {WHITE}{BYTES} -STR_CONTENT_DETAIL_TITLE :{SILVER}SISU TEAVE +STR_CONTENT_DETAIL_TITLE :{SILVER}AINESE KIRJELDUS STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Sa pole seda allalaaditavaks märkinud STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Te olete valinud selle allalaadimiseks STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}See sõltuvus on valitud allalaadimiseks @@ -2236,9 +2281,9 @@ STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}See ei STR_CONTENT_DETAIL_UPDATE :{SILVER}See on asendus olemasolevale {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Nimi: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Osa: {WHITE}{STRING} -STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Kirjeldus: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Seletus: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}Aadress: {WHITE}{STRING} -STR_CONTENT_DETAIL_TYPE :{SILVER}Tüüp: {WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}Liik: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Faili maht: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valitud kuna: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Sõltuvused: {WHITE}{STRING} @@ -2396,7 +2441,7 @@ STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Rippsild, betoo STR_BRIDGE_NAME_WOODEN :Puidust STR_BRIDGE_NAME_CONCRETE :Betoonist STR_BRIDGE_NAME_TUBULAR_STEEL :Torujas, terasest -STR_BRIDGE_TUBULAR_SILICON :Torujas, silikoonist +STR_BRIDGE_TUBULAR_SILICON :Torujas, Räni # Road construction toolbar @@ -2545,8 +2590,8 @@ STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vali lin STR_FOUND_TOWN_CITY :{BLACK}Linn STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Suuremad linnad kasvavad kiiremini kui väikesed{}Sõltuvalt seadetest on need ka alguses suuremad -STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Aleviku teeplaneering -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vali alevikus kasutatav teeplaneering +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Linna teeplaneering +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vali linnas kasutatav teeplaneering STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Algne STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Paremad teed STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 ruudustik @@ -2557,7 +2602,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Suvaline STR_FUND_INDUSTRY_CAPTION :{WHITE}Uue tööstuse rahastamine STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vali siit nimistust sobiv tööstus STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Palju suvalisi tööstusi -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Kata kaart suvaliselt paigutatud tööstustega +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Katab kaardi suvaliselt paigutatud tööstustega STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Hind: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Rahasta STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Ehita @@ -2603,6 +2648,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastuvõetavad veosed: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Raudtee kiiruspiirang: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Lubatud piirkiirus: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kaljud @@ -2699,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-2013 OpenTTD meeskond +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 OpenTTD meeskond # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine @@ -2718,6 +2764,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvesta STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvesta mäng valitud nimega STR_SAVELOAD_LOAD_BUTTON :{BLACK}Jätka STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Jätka valitud mängu +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Laadi valitud kõrguskaart STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Mängust STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Andmed puuduvad STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2733,13 +2780,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Linnade sagedus: STR_MAPGEN_DATE :{BLACK}Algus: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Tööstuste sagedus: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimaalne kaardi kõrgus: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Tõsta maksimaalset kaardi mägede kõrgust ühe võrra +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Langeta maksimaalset kaardi mägede kõrgust ühe võrra STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Lumepiiri kõrgus: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Lumepiiri liigutamine ühe võrra üles STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lumepiiri liigutamine ühe võrra alla -STR_MAPGEN_RANDOM_SEED :{BLACK}Juhuarv: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klõpsa juhuarvu sisestamiseks -STR_MAPGEN_RANDOM :{BLACK}Suvaline -STR_MAPGEN_RANDOM_HELP :{BLACK}Muuda maastiku tekitamisel kasutatavat juhuarvu STR_MAPGEN_LAND_GENERATOR :{BLACK}Maatekituse meetod: STR_MAPGEN_TREE_PLACER :{BLACK}Puude algoritm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maapinna tüüp: @@ -2766,7 +2812,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Kõrguse STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Suurus: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Sisesta suvaline arv +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Muuda maksimaalset kaardi kõrgust STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Muuda lumepiiri kõrgust STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Muuda algusaastat @@ -2821,6 +2867,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Liiguta STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}NewGRF-faili liigutamine loendis üles. STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Liiguta alla STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}NewGRF-faili liigutamine loendis alla +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Uuenda +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Uuenda NewGRF faile mille uuema versiooni oled installinud STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Nimekiri installitud NewGRF failidest STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Vali parameetrid @@ -2845,6 +2893,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Sobivat fa STR_NEWGRF_SETTINGS_DISABLED :{RED}Väljas STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Mitteühilduv selle OpenTTD versiooniga +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Salvesta eelseadistus +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Võimalike eeltöötluste nimekiri, vali üks et see kopeerida allpool asuvasse salvestuse nimesse +STR_SAVE_PRESET_TITLE :{BLACK}Sisesta eelseadistuse nimi +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Hetkel eelseadistusele valitud nimi +STR_SAVE_PRESET_CANCEL :{BLACK}Tühista +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ära muuda eelseadistust +STR_SAVE_PRESET_SAVE :{BLACK}Salvesta +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salvesta eelseadistus praegusele valitud nimele + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Muuda NewGRF parameetreid STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Sulge @@ -2875,7 +2933,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Eelmine STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liiguta spraiti , muutes X ja Y tasakaalu -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X tasakaal: {NUM}, Y tasakaal: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Lähtesta suhteline +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Lähtesta praegused suhtelised kõrvalekalded +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X kõrvalekalle: {NUM}, Y kõrvalekalle: {NUM} (Absoluutne) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X kõrvalekalle: {NUM}, Y kõrvalekalle: {NUM} (Suhteline) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Korja sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Korja sprite ükskõik kust ekraanil @@ -2932,6 +2993,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Puuduvad f STR_NEWGRF_BROKEN :{WHITE}NewGRF '{STRING}' käitumine põhjustab tõenäoliselt sünkrooni katkemisi ja/või mängu kokkujooksmiseid. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}See muutis sõiduki '{1:ENGINE}' vedavate vagunite olekut väljaspool depood STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Depoost väljas asudes on sõiduki '{1:ENGINE}' pikkus muudetud. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sõiduki '{1:ENGINE}' kandevõimet muudeti, kuid sõiduk ei olnud depoos ega ümberseadistamisel STR_BROKEN_VEHICLE_LENGTH :{WHITE}Ettevõtte «{1:COMPANY}» rongil «{0:VEHICLE}» pikkus on kõlbmatu. Midagi on valesti NewGRF-iga. Mäng võib kokku joosta või sünkroonist välja minna STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' sisaldab väära teavet. @@ -2946,6 +3008,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF-ide skanneerimine STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF-de skanneerimine. Olenevalt failide arvust võib selleks kuluda mõni aeg... @@ -3044,7 +3109,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Teave STR_GOAL_QUESTION_CAPTION_WARNING :Hoiatus STR_GOAL_QUESTION_CAPTION_ERROR :Viga -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Tühista STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ei @@ -3063,6 +3128,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Alusta uuesti STR_GOAL_QUESTION_BUTTON_POSTPONE :Lükka edasi STR_GOAL_QUESTION_BUTTON_SURRENDER :Anna alla STR_GOAL_QUESTION_BUTTON_CLOSE :Sulge +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Toetused @@ -3083,6 +3149,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Eelmine STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Mine eelmisele leheküljele STR_STORY_BOOK_NEXT_PAGE :{BLACK}Järgmine STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Mine järgmisele leheküljele +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Vigane viide eesmärgile # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Jaamanimed - nimel vajutades viiakse vaade jaamale. Ctrl+klõps avab jaama asukohas uue vaate. @@ -3097,7 +3164,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Veoseid # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ootel: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} jaamast «{STATION}») STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} kinni laadimiseks) @@ -3347,6 +3413,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Eemalda STR_GROUP_RENAME_TOOLTIP :{BLACK}Valitud rühma nime vahetamine STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klõpsa, et seda rühma üldise automaatse asenduse eest kaitsta +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Kustuta Grupp +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Kas oled kindel, et tahad kustutada selle grupi ja kõik järglased? + STR_GROUP_ADD_SHARED_VEHICLE :Kõik jagatud sõidukid STR_GROUP_REMOVE_ALL_VEHICLES :Eemalda kõik sõidukid @@ -3409,6 +3478,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Muuda mo STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Laeva tüübinime muutmine STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Lennuki tüübinime muutmine +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Peida +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Peida +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Peida +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Peida + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Näita +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Näita +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Näita +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Näita + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta rongitüübi peitmine/kuvamine +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta sõidukitüübi peitmine/kuvamine +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta laevatüübi peitmine/kuvamine +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta lennukitüübi peitmine/kuvamine + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Vaheta rongivaguni tüübinime STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Vaheta mootorsõiduki tüübinime STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Laeva tüübinime vahetamine @@ -3491,7 +3575,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sa oled # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Teade veovahendite tootjalt -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Me töötasime välja uue {STRING}{P "" i}. Kas te oleksite huvitatud selle ainuõiguslikust katsetamisest järgneva aasta jooksul, et me saaksime jälgida kuidas see toimib? +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Me töötasime välja uue {STRING}. Kas te oleksite huvitatud selle ainuõiguslikust katsetamisest järgneva aasta jooksul, et me saaksime jälgida kuidas see toimib? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :raudteevedur STR_ENGINE_PREVIEW_ROAD_VEHICLE :mootorsõiduk STR_ENGINE_PREVIEW_AIRCRAFT :lennuk @@ -3513,6 +3597,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Sõiduk STR_REPLACE_VEHICLE_SHIP :Laev STR_REPLACE_VEHICLE_AIRCRAFT :Õhusõiduk +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Kasutuses sõidukid +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Tulp sõidukitega, mida omad +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Saadaval sõidukid +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Tulp sõidukitega, mida on võimalik vahetada + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vali asendatav veduritüüp STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vali uus vedur, millega sa soovid vasakult valitud vedurit asendada. @@ -3637,15 +3726,15 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kandevõ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Ülekantud tulu: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}päevad{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}päeva{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}%{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Suurenda hooldusvahemiku 10 võrra. Ctrl-klahviga suurendatakse hooldusvahemiku 5 võrra. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vähenda hooldusvahemiku 10 võrra. Ctrl+Klõps vähendab hooldusvahemikku 5 võrra. STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Muuda hooldusvälba liiki STR_VEHICLE_DETAILS_DEFAULT :Esialgne -STR_VEHICLE_DETAILS_DAYS :Päeva -STR_VEHICLE_DETAILS_PERCENT :Protsent +STR_VEHICLE_DETAILS_DAYS :Päevad +STR_VEHICLE_DETAILS_PERCENT :Protsendid STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Anna rongile nimi STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nimeta mootorsõiduk ümber @@ -3867,6 +3956,10 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Sõitmine (sõi STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reisi kõike suurema {2:VELOCITY} (ei ole ajastatud) STR_TIMETABLE_TRAVEL_FOR :Sõida {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reisi selleks {STRING} kõige rohkema {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Sõit ({STRING}, ei ole ajastatud) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Sõit ({STRING}, ei ole ajastatud) kuni {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :({STRING} oode, ei ole ajastatud) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :({STRING} sõidukestus, ei ole ajastatud) STR_TIMETABLE_STAY_FOR :ja oota {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :ja sõida {STRING} jaoks STR_TIMETABLE_DAYS :{COMMA} päev{P "" a} @@ -3996,6 +4089,8 @@ STR_AI_SETTINGS_START_DELAY :Päevade arv ee STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} abi. STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} muudatuste logi {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} litsents {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Tekstiridade murdmine +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Murrab tekstirida, et lugeda vaadet liigutamata STR_TEXTFILE_VIEW_README :{BLACK}Vaata abi STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Muudatuste logi STR_TEXTFILE_VIEW_LICENCE :{BLACK}Litsents @@ -4106,6 +4201,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Kaevanda STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Juba jõutud meretasemeni STR_ERROR_TOO_HIGH :{WHITE}Liiga kõrge STR_ERROR_ALREADY_LEVELLED :{WHITE}... juba tasane +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Selle kohal olev sild oleks hiljem liiga kõrge # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ei saa ettevõtte nime muuta... @@ -4156,6 +4252,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... mets STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... saab ehitada ainult ülespoole lumepiiri STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... saab ehitada ainult allapoole lumepiiri +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE} '{STRING}' tööstuste jaoks polnud sobivaid asukohti +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Muuda kaardigeneratsiooni parameetreid, et saada parem kaart + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Siia ei saa raudteejaama ehitada... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Siia ei saa bussijaama ehitada... @@ -4292,6 +4391,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Sild tul STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ei saa alata ja lõppeda samas kohas STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Sillaotsad pole samal kõrgusel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Sild on maastiku suhtes liiga madal +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Sild on selle maastiku jaoks liiga kõrge STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Algus ja lõpp peavad samal joonel olema STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... mõlemad sillaotsad peavad olema maal STR_ERROR_BRIDGE_TOO_LONG :{WHITE}.. sild on liiga pik @@ -4318,6 +4418,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... see STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ei saa rühma luua... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Seda rühma ei saa eemaldada... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Rühma nime ei saa vahetada... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Ülemrühma ei saa määrata... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ei saa kõiki sõidukeid sellest rühmast eemaldada... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Antud sõidukit ei saa sellesse rühma lisada... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Jagatud sõidukeid ei saa rühma lisada... @@ -4369,7 +4470,7 @@ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Laev pol STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Lennuk pole saadaval STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Mängus on liiga palju veovahendeid -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusvahemiku ei saa muuta... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusvahemikku ei saa muuta... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... sõiduk hävitatud @@ -4552,7 +4653,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diisel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphuti tšuhh-tšuhh STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernauti tšuhh-tšuhh -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymoveri tšuhh-tšuhh +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMoveri tšuhh-tšuhh STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut diisel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut diisel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (auruvedur) @@ -4761,7 +4862,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug re STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake reisipraam STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate kaubalaev STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell kaubalaev -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover kaubalaev +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover kaubalaev STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut kaubalaev STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4855,6 +4956,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (peidetud) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4890,8 +4992,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4902,9 +5002,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 69cd5f49b4..7fc1313d5a 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -240,6 +240,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu bjálki - drag listan til vinstru/høgru STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Ríva bygning niður etc. á einum fýrakanti av jørð. Ctrl velur økji á skrá. Shift skiftur millum at vísa Bygning og hvat tað kostar. +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Vanligt STR_BUTTON_CANCEL :{BLACK}Angra @@ -349,7 +352,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :Gevst ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spæl møguleikar -STR_SETTINGS_MENU_CONFIG_SETTINGS :Víðkaðir innstillingar STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spæl script innstillingar STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF innstillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjøgnumskygnis møguleikar @@ -457,7 +459,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Skift millum bi STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Skift millum liting av skitnum blokkum ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -473,22 +475,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -791,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíðar í hangarinum -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hevur ov fá boð í skránni STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hevur eini ógyldig boð STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hevur boð ið eru eins STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hevur eina óviðkomandi støð í sinum boðum -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er vi at eldast STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er við at eldast serstakliga nógv @@ -880,10 +898,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgiskur Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranskur Rial ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Akfør STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Áset hvørja síðu á vegnum akfør skulu koyra á STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vinstrakoyring @@ -919,11 +933,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanisk STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sjálvgoymsla STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel títtleika av sjálvgoymslu +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Sløkt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hvønn mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hvønn 3 mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hvønn 6 mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Einaferð um árið +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Mál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel mál at nýta í takførisflatu @@ -935,8 +951,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm up STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel hvørja skermupploysn tú vil brúka STR_GAME_OPTIONS_RESOLUTION_OTHER :annað -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermmynda snið -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vel hvat skermmynda snið tú vil brúka + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka @@ -1037,8 +1052,7 @@ STR_CITY_APPROVAL_HOSTILE :Fíggjindaligir STR_WARNING_NO_SUITABLE_AI :{WHITE}Einki hóskandi AI til taks...{}Tú kann heinta niður fleiri ymisk AI gjøgnum 'Online tilfar' kervi -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Víðkaðir innstillingar +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtur strongur: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Víðka alt STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Toga alt saman @@ -1051,7 +1065,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Goymslu instill STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Fyritøku instilling (goymt í goymslufílum; ávirkar einans nýggj spøl) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Fyritøku instilling (goymt í goymslufílum; ávirkar einans núverðandi fyritøku) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vís: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Avmarkar listan niðanfyr so hann einans vísur broyttar instillingar STR_CONFIG_SETTING_RESTRICT_BASIC :Grund innstillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Víðkaðir innstillingar @@ -1106,8 +1119,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Tendra/sløkk STR_CONFIG_SETTING_CITY_APPROVAL :Støðan hjá býraðnum viðvíkjandi umbygging: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vel hvussu nógv óljóð og umhvørvis skaði frá fyritøkum virkar á teirra meting í bygdini og hvussu tær sleppa at byggja víðari í økinum -STR_CONFIG_SETTING_BUILDONSLOPES :Loyv bygging á hellandi lendi og strondum: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Um tendra kunnu breytir og støðir byggjast har lendi hellur. Um sløkt, mugu breytir fara sama veg sum lendi hellir og støðir mugu byggjast á flatt lendi STR_CONFIG_SETTING_AUTOSLOPE :Loyv landslagsbroytingar undir bygningum, breytum, osv. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Loyv landslagsbroytingar undir bygningum og breytum uttan at beina tey burtur STR_CONFIG_SETTING_CATCHMENT :Loyv meira verðuleikakendum støddum á upplandi hjá støðum: {STRING} @@ -1132,14 +1143,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Bannað tokum o STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 gradirs sneiðingar eru tá ein vatnrætt breyt kemur beint aftaná eina loddrætta breyt í tí puntinum ið er næstur, ið førir við sær at toki ger eina 90 gradirs sneiðing heldur enn tær vanligu 45. Hetta ávirkar eisini snúnings radius hjá skipum STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Loyv at skoyta støðir saman ið ikki hava beinleiðis samband: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Loyvir at leggja deilir til eina støð uttan at teir beinleiðis nerta verðandi deilir. Krevst Ctrl+trýst tá tú leggur nýggju deilinar -STR_CONFIG_SETTING_IMPROVEDLOAD :Brúka betraða lessingar algoritmu: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Um tendra, verða flutningstól lessaði hvørt eftir annað tá tey eru fleyri í einari støð. Lessing av næsta flutningstólinum byrjar ikki fyrr enn nóg miki av farmi er til at fylla fyrra flutningstóli -STR_CONFIG_SETTING_GRADUAL_LOADING :Lessa flutningstól so líðandi: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lessa flutningstól so líðandi við nýtslu av serligum lessingar tíðarbilum fyri hvørt flutningstóli, í staðin fyri at lessa alt uppá ein gang uppá eina fasta tíð einans treytað av hvussu nógvur farmur skal lessast STR_CONFIG_SETTING_INFLATION :Virðisminkan: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Gilda virðisminkan í búskapinum, har kostnaðir vaksa eitt sindur skjótari enn lønir -STR_CONFIG_SETTING_SELECTGOODS :Einans útflýggja farm til eina støð tá ið ein tørvur er: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Einans útflýggja farm til eina støð ið var umbiðin av einum lessandi flutningstóli. Hetta forðar vánaligum metingum av farmi ið ikki verður avgreiddur á eini støð STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Mest loyvda longd av brúm: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Mest loyvda longd tá ið tú byggir brýr STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Mest loyvda longd av bergholi: {STRING} @@ -1167,8 +1172,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Áset hvar við STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nær endanum STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :miðjuni STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fjart endanum -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Akfar í bíðirøð (við kvantum ávirkan): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Akfør bíða frammanfyri upptiknar veg steðgir til teir eru tómir STR_CONFIG_SETTING_AUTOSCROLL :Skotra vindeyga tá músin er við eggina: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Um gilda, byrja sýnisgluggar at skrulla tá músin er nær við egginar á vindeyganum STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ikki sligi til @@ -1199,10 +1202,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Loyv gjøgnumko STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Loyv bygging av gjøgnumkoyrings steðgum á vegum ið bygdir eiga STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Loyv gjøgnumkoyrings steðgum á vegum ið kappingarneytar eiga: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Loyv bygging av gjøgnumkoyrings steðgum á vegum ið kappingarneytar eiga -STR_CONFIG_SETTING_ADJACENT_STATIONS :Loyv at byggja støðir síð um síð: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Loyv ymsum støðum at nema við hvørja aðra -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Gilda fleiri NewGRF motor sett: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Háttlíkis møguleiki fyri gomul NewGRF. Ikki ógilda hetta, uttan so er at tú veist nágreiniliga hvat tú ger! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ikki møguligt at broyta hesa áseting tá ta eru flutningstól STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Innakervis viðlílkahald: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Um gilda, innankervi elvir til viðlíkahalds kostnað. Kostnaðurin vaksur yvir-lutfalsliga við støddina á kervinum, og ávirkar harvið størri fyritøkur meira enn smærri fyritøkur @@ -1260,8 +1259,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Hæddarkort sna STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Í móti klokkunu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Við klokkuni STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Hæddar støði eitt flatt tilburðs kort fær: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Gilda landslags broytingar av puntum við eggina á kortinum: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Um ógilda, eru egginar á kortinum altíð hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ein ella fleiri puntar við norðaru eggina eru ikki tómir STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ein ella fleiri puntar við eina egg eru ikki vatn @@ -1312,17 +1309,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Sløkt STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vinstra-trýst skrulling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gilda skrulling av kortinum við at toga ta við vinstra músa knøtti. Hetta er serstakliga hent um tú nýtur ein fingraskugga at skrulla vi + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nýt {STRING} dato sniði til nøvnini á goymdum spølum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Sniði fyri dato í fíla navninum á goymdum spølum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :stutt (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Vanligt litaval at ganga út frá fyri NewGRFs uttan serstakt litaval: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Vanligt litaval at nýta fyri NewGRF ið ikki tilskila hvat litaval teimum tørvar -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS litaval -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows litaval - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Sjálvirknan steðg tá nýtt spæl verður byrja: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Um gilda er spæli steðga tá ið tú byrjar eitt nýtt spæl, hetta loyvir tær at skoða korti í frið og náðum STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Meðan steðgur er, loyv: {STRING} @@ -1523,25 +1516,15 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Eingin -STR_CONFIG_SETTING_GUI :{ORANGE}Takførisflati -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Bygging +STR_CONFIG_SETTING_SOUND :{ORANGE}Ljóð effektir +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Takførisflati +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Bygging STR_CONFIG_SETTING_VEHICLES :{ORANGE}Flutningstól -STR_CONFIG_SETTING_STATIONS :{ORANGE}Støðir -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Búskapur +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Beining +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bygdir +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Ídnaðir STR_CONFIG_SETTING_AI :{ORANGE}Kappingarneytar -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Vísu møguleikar -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Ávirkan -STR_CONFIG_SETTING_SOUND :{ORANGE}Ljóð effektir -STR_CONFIG_SETTING_NEWS :{ORANGE}Tíðindi og boð -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Tekin -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Farma stýring STR_CONFIG_SETTING_AI_NPC :{ORANGE}Teldu spælarir -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Sjálvendurnýggja -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Eftirlit -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Beining -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tok -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bygdir -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Ídnaðir STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunaligur STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1577,7 +1560,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}Hópspæ STR_INTRO_GAME_OPTIONS :{BLACK}Spæli møguleikar STR_INTRO_HIGHSCORE :{BLACK}Hástigs yvirlit -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Víðkaðir innstillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF innstillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Kanna online tilfar STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spæli script innstillingar @@ -1597,7 +1579,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel 'toy STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vís spæli møguleikar STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vís hástigs yvirlit -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Vís víðkaðar innstillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vís NewGRF innstillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kanna um nýtt og betra tilfar er klárt at heinta niður STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vís AI/Spæli script innstillingar @@ -1685,6 +1666,7 @@ STR_LIVERY_FREIGHT_TRAM :{G=m}Góðs spo STR_FACE_CAPTION :{WHITE}Andlits úrval STR_FACE_CANCEL_TOOLTIP :{BLACK}Angra nýtt andlits val STR_FACE_OK_TOOLTIP :{BLACK}Góðtak nýtt andlits val +STR_FACE_RANDOM :{BLACK}Blanda STR_FACE_MALE_BUTTON :{BLACK}Kallkyn STR_FACE_MALE_TOOLTIP :{BLACK}Vel kallkyns andlit @@ -2445,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-2013 OpenTTD toymi +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD toymi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl @@ -2482,10 +2464,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. av STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hædd á kava linju: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt kava linjuna eitt upp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt kava linjuna eitt niður -STR_MAPGEN_RANDOM_SEED :{BLACK}Tilvildarligt sáð: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Trýst fyri at skriva tilvildarligt sáð -STR_MAPGEN_RANDOM :{BLACK}Blanda -STR_MAPGEN_RANDOM_HELP :{BLACK}Broyt tilvildarliga sáði ið verur nýtt til landslags framleiðslu STR_MAPGEN_LAND_GENERATOR :{BLACK}Lendis framleiðari: STR_MAPGEN_TREE_PLACER :{BLACK}Træ algoritma: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Slag av lendi: @@ -2512,7 +2490,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Navn á STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stødd: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriva eitt tilvildarligt sáð STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Broyt hædd á kava linju STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Broyt byrjunar ár @@ -2590,6 +2567,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Samsvarand STR_NEWGRF_SETTINGS_DISABLED :{RED}Ikki sligi til STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Samsvarar ikki við hesa útgávuna av OpenTTD +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Broyt NewGRF parametur STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lat aftur @@ -2640,6 +2619,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} av <óg STR_NEWGRF_INVALID_ENGINE :<ógilda flutningstól modell> STR_NEWGRF_INVALID_INDUSTRYTYPE :<ógildigur ídnaður> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannar NewGRFs. Treytað av nøgdini kann hetta taka eina løtu... @@ -2733,7 +2714,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Kunning STR_GOAL_QUESTION_CAPTION_WARNING :Ávaring STR_GOAL_QUESTION_CAPTION_ERROR :Villa -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Angra STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei @@ -2752,6 +2733,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Endurbyrja STR_GOAL_QUESTION_BUTTON_POSTPONE :Útset STR_GOAL_QUESTION_BUTTON_SURRENDER :Gev teg upp STR_GOAL_QUESTION_BUTTON_CLOSE :Lat aftur +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Stuðulsflutningur @@ -2777,7 +2759,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Eingin f # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Bíðar: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} frá {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} umbiði til lessing) @@ -3003,6 +2984,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Strika v STR_GROUP_RENAME_TOOLTIP :{BLACK}Navngev valda bólkin STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Trýst fyri at verja hendan bólkin móti alheims sjálvendurnýggjan + STR_GROUP_ADD_SHARED_VEHICLE :Legg deild flutningstól til STR_GROUP_REMOVE_ALL_VEHICLES :Bein øll flutningstól burtur @@ -3065,6 +3047,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Navngev STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Navngev slagi av skipi STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Navngev slagi av flogfari + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Navngev slagi av tok flutningstóli STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Navngev slagi av akfari STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Navngev slagi av skipi @@ -3169,6 +3154,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=n}Akfar STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :{G=n}Flogfar + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vel slagi av motori at býta um STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vel ta nýggja slagi av motori tú vil nýta ið staðin fyri tann tú valdi til vinstru @@ -3728,6 +3714,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skó STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kann einans byggjast omanfyri kava-linjuna STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann einans byggjast niðanfyri kava-linjuna + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kann ikki byggja tok støð her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kann ikki byggja buss støð... @@ -4112,7 +4099,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Guv) @@ -4321,7 +4308,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Fe STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Ferðafólka Ferga STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Farma skip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Farma skip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Farma skip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Farma skip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Farma skip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4449,8 +4436,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4461,9 +4446,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index f59fdc05f9..ab87294ea4 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Sihijuoma # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} matkustaja{P "" a} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}matkustaja{P "" a} STR_QUANTITY_COAL :{WEIGHT_LONG} kivihiiltä -STR_QUANTITY_MAIL :{COMMA} säkki{P "" ä} postia +STR_QUANTITY_MAIL :{COMMA}{NBSP}säkki{P "" ä} postia STR_QUANTITY_OIL :{VOLUME_LONG} öljyä -STR_QUANTITY_LIVESTOCK :{COMMA} erä{P "" ä} karjaa -STR_QUANTITY_GOODS :{COMMA} laatikko{P "" a} tavaraa +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}erä{P "" ä} karjaa +STR_QUANTITY_GOODS :{COMMA}{NBSP}laatikko{P "" a} tavaraa STR_QUANTITY_GRAIN :{WEIGHT_LONG} viljaa STR_QUANTITY_WOOD :{WEIGHT_LONG} raakapuuta STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} rautamalmia STR_QUANTITY_STEEL :{WEIGHT_LONG} terästä -STR_QUANTITY_VALUABLES :{COMMA} säkki{P "" ä} arvotavaraa +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}säkki{P "" ä} arvotavaraa STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kuparimalmia STR_QUANTITY_MAIZE :{WEIGHT_LONG} maissia STR_QUANTITY_FRUIT :{WEIGHT_LONG} hedelmiä -STR_QUANTITY_DIAMONDS :{COMMA} säkki{P "" ä} timantteja +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}säkki{P "" ä} timantteja STR_QUANTITY_FOOD :{WEIGHT_LONG} ruokaa STR_QUANTITY_PAPER :{WEIGHT_LONG} paperia -STR_QUANTITY_GOLD :{COMMA} säkki{P "" ä} kultaa +STR_QUANTITY_GOLD :{COMMA}{NBSP}säkki{P "" ä} kultaa STR_QUANTITY_WATER :{VOLUME_LONG} vettä STR_QUANTITY_WHEAT :{WEIGHT_LONG} vehnää STR_QUANTITY_RUBBER :{VOLUME_LONG} kumia STR_QUANTITY_SUGAR :{WEIGHT_LONG} sokeria -STR_QUANTITY_TOYS :{COMMA} lelu{P "" a} -STR_QUANTITY_SWEETS :{COMMA} säkki{P "" ä} karkkia +STR_QUANTITY_TOYS :{COMMA}{NBSP}lelu{P "" a} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}säkki{P "" ä} karkkia STR_QUANTITY_COLA :{VOLUME_LONG} limsaa STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} hattaraa STR_QUANTITY_BUBBLES :{COMMA} kupla{P "" a} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}EI STR_ABBREV_ALL :{TINY_FONT}KAIKKI # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} matkustaja{P "" a} -STR_BAGS :{COMMA} säkki{P "" ä} -STR_TONS :{COMMA} tonni{P "" a} -STR_LITERS :{COMMA} litra{P "" a} -STR_ITEMS :{COMMA} erä{P "" ä} -STR_CRATES :{COMMA} laatikko{P "" a} +STR_PASSENGERS :{COMMA}{NBSP}matkustaja{P "" a} +STR_BAGS :{COMMA}{NBSP}säkki{P "" ä} +STR_TONS :{COMMA}{NBSP}tonni{P "" a} +STR_LITERS :{COMMA}{NBSP}litra{P "" a} +STR_ITEMS :{COMMA}{NBSP}erä{P "" ä} +STR_CRATES :{COMMA}{NBSP}laatikko{P "" a} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tummansininen @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Harmaa STR_COLOUR_WHITE :Valkoinen # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hv -STR_UNITS_POWER_METRIC :{COMMA}hv -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hv +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hv +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tonni{P "" a} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonni{P "" a} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonni{P "" a} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonni{P "" a} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallona{P "" a} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litra{P "" a} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallona{P "" a} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litra{P "" a} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Suodatinteksti: @@ -241,13 +241,24 @@ STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Ikkunan STR_TOOLTIP_SHADE :{BLACK}Pienennä ikkuna - näytä vain otsikko STR_TOOLTIP_DEBUG :{BLACK}Näytä NewGRF-vianmääritystiedot STR_TOOLTIP_DEFSIZE :{BLACK}Palauta ikkunan oletuskoko. Ctrl+Klik tallentaa nykyisen koon oletukseksi -STR_TOOLTIP_STICKY :{BLACK}'Sulje Kaikki Ikkunat'-nappi ei vaikuta tähän ikkunaan. Ctrl+Klik tallentaa tilan oletukseksi +STR_TOOLTIP_STICKY :{BLACK}'Sulje kaikki ikkunat' -nappi ei vaikuta tähän ikkunaan. Ctrl+Klik tallentaa tilan oletukseksi STR_TOOLTIP_RESIZE :{BLACK}Napsauta ja vedä muuttaaksesi tämän ikkunan kokoa. STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Suurenna/pienennä ikkuna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Vierityspalkki - luettelon vieritys ylös/alas STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Vierityspalkki - luettelon vieritys vasemmalle/oikealle. STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Tuhoa rakennuksia jne. ruudulta. Ctrl valitsee alueen vinottain. Shift vaihtaa tuhoamistilan ja kustannearvion välillä +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Näytä piilotetut +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Näytä piilotetut +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Näytä piilotetut +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Näytä piilotetut + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut junat näytetään +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut ajoneuvot näytetään +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut laivat näytetään +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut lentokoneet näytetään + # Query window STR_BUTTON_DEFAULT :{BLACK}Oletus STR_BUTTON_CANCEL :{BLACK}Peruuta @@ -334,7 +345,7 @@ STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Maa-alue STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Vaihda työkalupalkkeja # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Tallenna skenaario, lataa skenaario, hylkää skenaariomuokkain, sulje +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Tallenna skenaario, lataa skenaario, sulje skenaariomuokkain, lopeta STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Skenaariomuokkain STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Siirrä aloituspäivää vuodella taaksepäin @@ -344,7 +355,7 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Näytä STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Maaston luonti STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Kaupunkien luonti STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Teollisuuden luonti -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Teiden rakennus +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Tienrakennus STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Istuta puita. Shift vaihtaa istutustilan ja kustannearvion välillä STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Sijoita kyltti STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Sijoita objekti. Shift vaihtaa rakennustilan ja kustannearvion välillä @@ -354,14 +365,14 @@ STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Tallenna skenaa STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Lataa skenaario STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Tallenna korkeuskartta STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Lataa korkeuskartta -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Hylkää skenaariomuokkain +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Sulje skenaariomuokkain STR_SCENEDIT_FILE_MENU_SEPARATOR : -STR_SCENEDIT_FILE_MENU_QUIT :Sulje +STR_SCENEDIT_FILE_MENU_QUIT :Lopeta ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Pelin asetukset -STR_SETTINGS_MENU_CONFIG_SETTINGS :Lisäasetukset +STR_SETTINGS_MENU_GAME_OPTIONS :Pelin valinnat +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Asetukset STR_SETTINGS_MENU_SCRIPT_SETTINGS :Tekoälyn/Peliskriptin asetukset STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-asetukset STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Läpinäkyvyysasetukset @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Reunat päälle STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Likaisten ruutujen värjäys päälle/pois ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -548,7 +577,7 @@ STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Yhtiöid STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Rahtitaksat STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Päivää kauttakulussa -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Maksu 10 yksikön (tai 10.000 litran) rahdin kuljettamisesta 20 ruudun päähän +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Maksu 10 yksikön (tai 10 000 litran) rahdin kuljettamisesta 20 ruudun päähän STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Ota kaikki käyttöön STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Poista kaikki käytöstä STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Näytä kaikki rahdit rahtitaksojen kaaviossa @@ -565,7 +594,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Napsauta # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Yhtiökilpataulukko STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Insinööri +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Veturinkuljettaja STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Liikennepäällikkö STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Kuljetusjohtaja STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Reittisuunnittelija @@ -689,8 +718,8 @@ STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikkaa STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikkaa yhtiötä näyttääksesi sen omaisuuden. Ctrl+Klik näyttää ainoastaan valitun yhtiön. Ctrl+Klik uudestaan näyttää kaikki yhtiöt STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikkaa rahtia näyttääksesi tai piilottaaksesi sen. Ctrl+Klik piilottaa kaikki paitsi valitun rahdin. Ctrl+Klik uudelleen palauttaa kaikki rahdit näkyviin -STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Tie -STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rautatie +STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Tiet +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rautatiet STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Asemat/lentokentät/satamat STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Rakennukset/Teollisuus STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Liikennevälineet @@ -765,7 +794,7 @@ STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLAC STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Lento-onnettomuus!{}Lentokoneelta loppui polttoaine, {COMMA} kuolee tulipallossa STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}{STATION}: Ilmalaivaonnettomuus! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Ajoneuvo tuhoitui törmäyksessä UFO:n kanssa! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Ajoneuvo tuhoutui törmäyksessä UFO:n kanssa! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}{TOWN}: Öljynjalostamon räjähdys! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN}: Tehdas tuhoutunut epäilyttävissä olosuhteissa! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}{TOWN}: 'UFO' laskeutuu! @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} odottaa varikolla STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} odottaa lentokonehallissa -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Kulkuneuvolla {VEHICLE} on liian vähän käskyjä STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Kulkuneuvolla {VEHICLE} on virheellinen käsky STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Ajoneuvolla {VEHICLE} on toistuvia käskyjä STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Kulkuneuvon {VEHICLE} käskyissä on virheellinen asema -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}Kulkuneuvon {VEHICLE} käskyissä on lentokenttä, jonka kiitorata on liian lyhyt STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} on tulossa vanhaksi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} on tulossa hyvin vanhaksi @@ -858,7 +886,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Liitä n STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Liitä sijainti tästä näkymästä päänäkymään # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Pelin asetukset +STR_GAME_OPTIONS_CAPTION :{WHITE}Pelin valinnat STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Rahayksikkö STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Rahayksikön valinta. @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Ajoneuvot STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Valitse kummalla puolella tietä ajetaan. STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vasemmalla kaistalla @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonialainen STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automaattitallennus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Valitse aikaväli automaattisille pelitallennuksille. +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Pois STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kuukausittain STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Joka 3. kuukausi STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Joka 6. kuukausi STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kerran vuodessa +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kieli STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valitse käyttöliittymän kieli. @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Näytön STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Valitse käytettävä näytön tarkkuus STR_GAME_OPTIONS_RESOLUTION_OTHER :muu -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Kuvakaappauksen muoto -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Valitse kuvankaappauksen muoto. +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Käyttöliittymän koko +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Valitse käyttöliittymäelementtien koko + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Tavallinen +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Kaksinkertainen +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Nelinkertainen STR_GAME_OPTIONS_BASE_GRF :{BLACK}Perusgrafiikat STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valitse käytettävät perusgrafiikat @@ -971,15 +1001,16 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valitse STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korruptoitun{P ut utta} tiedosto{P "" a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Lisätietoja musiikkipaketista +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tuettujen näyttötarkkuuksien hakeminen epäonnistui STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täyskuvatila ei toimi # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Oma valuutta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Vaihtokurssi: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Vähennä valuuttasi määrää yhdelle punnalle (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lisää valuuttasi määrää yhdelle punnalle (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Aseta vaihtokurssi valuutallesi yhdelle punnalle (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Pienennä vaihtokurssia verrattuna puntaan (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Suurenna vaihtokurssia verrattuna puntaan (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Aseta vaihtokurssi valuutallesi verrattuna puntaan (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Välimerkki: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Valitse välimerkki valuutallesi @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Hyvin tasainen STR_TERRAIN_TYPE_FLAT :Tasainen STR_TERRAIN_TYPE_HILLY :Kukkulainen STR_TERRAIN_TYPE_MOUNTAINOUS :Vuoristoinen +STR_TERRAIN_TYPE_ALPINIST :Vuorikiipeilijä STR_CITY_APPROVAL_PERMISSIVE :Salliva STR_CITY_APPROVAL_TOLERANT :Suvaitseva @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Vihamielinen STR_WARNING_NO_SUITABLE_AI :{WHITE}Ei soveltuvia tekoälyjä saatavilla...{}Voit ladata tekoälyjä 'Online-Sisältö'-palvelulla -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Lisäasetukset +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Asetukset STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Suodatinteksti: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Avaa kaikki STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sulje kaikki @@ -1070,11 +1102,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Pelin asetus (t STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Yhtiön asetus (tallennetaan tallenteisiin; vaikuttaa vain uusiin peleihin) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Yhtiön asetus (tallennetaan tallenteeseen; vaikuttaa vain nykyiseen yhtiöön) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Näytä: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Rajaa alla olevaa listaa ja näyttää vain muutetut asetukset -STR_CONFIG_SETTING_RESTRICT_BASIC :Perusasetukset -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Lisäasetukset -STR_CONFIG_SETTING_RESTRICT_ALL :Kehittyneet asetukset / kaikki asetukset +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tyyppi: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Rajaa alla olevaa listaa ennalta määritellyillä suodattimilla +STR_CONFIG_SETTING_RESTRICT_BASIC :Perus (näytä vain tärkeät asetukset) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Kehittynyt (näytä useimmat asetukset) +STR_CONFIG_SETTING_RESTRICT_ALL :Edistynyt (näytä kaikki asetukset, oudotkin) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Asetukset, joiden arvo poikkeaa oletusarvosta STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Asetukset, joiden arvo poikkeaa uusille peleille määritellystä arvosta @@ -1085,6 +1118,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Pelin asetukset STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Pelin asetukset (tallennetaan pelitallenteeseen; vaikuttavat vain nykyiseen peliin) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Yhtiön asetukset (tallennetaan pelitallenteisiin; vaikuttavat vain uusiin peleihin) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Yhtiön asetukset (tallennetaan pelitallenteeseen; vaikuttavat ainoastaan nykyiseen yhtiöön) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Näytä kaikki tulokset muuttamalla{}{SILVER}Kategoriaksi {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Näytä kaikki hakutulokset muuttamalla{}{SILVER}Tyypiksi {WHITE}Kaikki asetustyypit +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Näytä kaikki tulokset muuttamalla{}{SILVER}Kategoriaksi {WHITE}{STRING} {BLACK}ja {SILVER}Tyypiksi {WHITE}Kaikki asetustyypit +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ei mitään - STR_CONFIG_SETTING_OFF :pois STR_CONFIG_SETTING_ON :päällä @@ -1119,15 +1156,16 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Määritä rake STR_CONFIG_SETTING_RECESSIONS :Lamat: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Mikäli käytössä, muutaman vuoden välein saattaa ilmaantua taloudellinen lama. Laman aikana kaikki tuotanto on huomattavasti alhaisempaa (palautuu normaalille tasolle laman päätyttyä) STR_CONFIG_SETTING_TRAIN_REVERSING :Estä junien kääntyminen asemilla: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Mikäli käytössä, junat eivät käänny ei-pääteasemilla vaikka kääntymisen jälkeen saatavilla olisi lyhempi reitti +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Mikäli käytössä, junat eivät käänny läpiajettavilla asemilla vaikka kääntymisen jälkeen saatavilla olisi lyhempi reitti STR_CONFIG_SETTING_DISASTERS :Onnettomuudet: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ottaa käyttöön onnettomuudet jotka saattavat ajoittain estää tai tuhota liikennettä tai infrastruktuuria STR_CONFIG_SETTING_CITY_APPROVAL :Kaupunginvaltuuston asenne alueiden uudelleenjärjestelyyn: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Valitse, kuinka paljon yhtiöiden aiheuttama melu ja ympäristövahingot vaikuttavat niiden arvioihin sekä tuleviin rakennustoimiin alueella -STR_CONFIG_SETTING_BUILDONSLOPES :Rakentaminen rinteisiin ja rannikolle sallittu: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Mikäli käytössä, ratoja ja asemia voidaan rakentaa useimmille rinteille. Mikäli pois käytöstä, niitä voidaan rakentaa vain radalle sopivaan maastoon joka ei vaadi perustuksia -STR_CONFIG_SETTING_AUTOSLOPE :Salli maaston muokkaaminen rakennusten, raiteiden jne. juurella (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Kartan suurin sallittu korkeus: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Määritä suurin sallittu korkeus vuorille +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Tämä arvo ei kelpaa kartan suurimmaksi sallituksi korkeudeksi, sillä kartalla on ainakin yksi sitä korkeampi vuori +STR_CONFIG_SETTING_AUTOSLOPE :Salli maaston muokkaaminen rakennusten, raiteiden jne. juurella: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sallii maaston muokkaamisen rakennusten ja ratojen alta tuhoamatta niitä STR_CONFIG_SETTING_CATCHMENT :Realistisemman kokoiset vaikutusalueet: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Erityyppisillä asemilla ja lentokentillä on eri kokoiset vaikutusalueet @@ -1148,19 +1186,15 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Mäkien jyrkkyys ajoneuvoille: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Mäkien jyrkkyys ajoneuvoille. Korkeammat arvot tekevät mäkien nousemisesta vaikeampaa STR_CONFIG_SETTING_FORBID_90_DEG :90 asteen käännökset kielletty junilta ja laivoilta: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-asteen käännöksiä esiintyy kun vaakasuuntaista rataa seuraa pystysuuntainen rata viereisellä ruudulla, tämä vaatii junan kääntymään 90 astetta ruutujen reunalla normaalin 45 asteen sijasta. Tämä asetus vaikuttaa myös laivojen kääntymissäteeseen +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 asteen käännöksiä esiintyy kun vaakasuuntaista rataa seuraa pystysuuntainen rata viereisellä ruudulla, tämä vaatii junan kääntymään 90 astetta ruutujen reunalla normaalin 45 asteen sijasta. Tämä asetus vaikuttaa myös laivojen kääntymissäteeseen STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Salli ei-vierekkäisten asemien yhdistäminen: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Mahdollistaa aseman osien rakentamisen vaikka ne eivät olisi kosketuksissa olemassaoleviin aseman osiin. Vaatii Ctrl-näppäimen painamisen rakennettaessa -STR_CONFIG_SETTING_IMPROVEDLOAD :Käytä kehittyneempää lastausalgoritmia: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Mikäli käytössä, asemalla odottavat kulkuneuvot lastataan järjestyksessä. Seuraavan ajoneuvon lastaaminen aloitetaan vasta kun asemalla on tarpeeksi rahtia ensimmäisen kulkuneuvon täyteen lastaamiseen -STR_CONFIG_SETTING_GRADUAL_LOADING :Lataa kulkuneuvot vähitellen: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lastaa kulkuneuvot vähitellen, käyttäen kulkuneuvokohtaisia lastausaikoja sen sijaan, että rahdit lastataan vakiossa, rahdin määrästä riippuvassa ajassa STR_CONFIG_SETTING_INFLATION :Inflaatio: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ota talouden inflaatio käyttöön. Mikäli käytössä, hinnat nousevat hieman nopeammin kuin kuljetusmaksut -STR_CONFIG_SETTING_SELECTGOODS :Pura rahti asemalle vain, kun on kysyntää: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Kuljeta rahtia asemalle vain jos asemalla on rahtia vastaanottava kulkuneuvo. Tämä estää huonot arviot johtuen rahtityypeistä, joita ei kuljeteta STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Suurin sallittu sillan pituus: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Suurin sallittu pituus siltoja rakennettaessa +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Suurin sallittu siltojen korkeus: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Suurin sallittu korkeus siltojen rakentamiselle STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Suurin sallittu tunnelin pituus: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Suurin sallittu pituus tunneleita rakennettaessa STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manuaalinen raakateollisuuden rakentamistapa: {STRING} @@ -1182,12 +1216,10 @@ STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Mikäli käytö STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Uudet käskyt ovat oletusarvoisesti nonstop-tyyppisiä: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normaalisti kulkuneuvo pysähtyy jokaisella läpikulkemallaan asemalla. Mikäli tämä asetus on käytössä kulkuneuvot eivät pysähdy ajaessaan asemien läpi. Huomioi, että tämä asetus määrittää oletusarvoisen toiminnon uusille kulkuneuvoille. Asetusta voidaan muuttaa erikseen kunkin ajoneuvon kohdalla STR_CONFIG_SETTING_STOP_LOCATION :Uudet junien käskyt pysäyttävät junan aseman {STRING} -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Paikka, johon juna pysähtyy oletuksena asemalla. 'alkuosa' tarkoittaa lähellä saapumispistettä, 'keskellä' tarkoittaa laiturin keskiosaa ja 'loppuosa' tarkoittaa kaukana saapumispisteestä. Huomaa, että tämä asetus määrittää oletusarvon uusille määräyksille. Yksittäisten määräysten kohdalla käyttäytymistä voi muuttaa tästä asetuksesta huolimatta -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :loppuun +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Paikka, johon juna pysähtyy oletuksena asemalla. 'Alkuun' tarkoittaa että junan viimeinen vaunu pysähtyy laiturin alkuun, 'keskelle' tarkoittaa junan pysähtyvän keskelle laituria, ja 'loppuun' tarkoittaa että veturi pysähtyy laiturin päähän. Huomaa, että tämä asetus määrittää oletusarvon uusille määräyksille. Yksittäisten määräysten kohdalla käyttäytymistä voi muuttaa tästä asetuksesta huolimatta +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :alkuun STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :keskelle -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :aivan loppuun -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ajoneuvohen jonotus (tehostein): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Ajoneuvot odottavat pysäkkien edessä kunnes ne vapautuvat +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :loppuun STR_CONFIG_SETTING_AUTOSCROLL :Vieritä ikkunaa, kun hiiri osuu reunaan: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Mikäli käytössä, näkymät siirtyvät hiiren ollessa lähellä ikkunan reunaa STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Pois käytöstä @@ -1209,7 +1241,7 @@ STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Määritä rahd STR_CONFIG_SETTING_PLANE_SPEED :Lentokoneiden nopeuskerroin: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Määritä lentokoneiden suhteellinen nopeus verrattuna toisiin kulkuneuvotyyppeihin STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} -STR_CONFIG_SETTING_PLANE_CRASHES :Lentokoneonnettomuuksien määrä: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES :Lento-onnettomuuksien määrä: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Määrittää lento-onnettomuuksien todennäköisyyden STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ei yhtään STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Vähennetty @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Läpiajettavat STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Sallii pysäkkien rakentamisen kaupunkien omistamille teille STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Salli läpiajettavat pysäkit kilpailijoiden omistamilla teillä: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Salli pysäkkien rakentaminen toisten yhtiöiden omistamille teille -STR_CONFIG_SETTING_ADJACENT_STATIONS :Vierekkäiset asemat: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Salli asemien olla kosketuksissa toistensa kanssa -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Useat NewGRF-veturisetit: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Yhteensopivuusasetus vanhoille NewGRF-tiedostoille. Älä poista tätä käytöstä ellet tiedä mitä teet! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Tätä asetusta ei voi muuttaa, kun kulkuneuvoja on olemassa STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktuurin huoltokustannukset: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Mikäli käytössä, infrastruktuurista aiheutuu huoltokuluja. Kulut kasvavat suhteettomasti verkon kokoon nähden, täten ne vaikuttavat suurempiin yhtiöihin enemmän kuin pieniin @@ -1252,35 +1280,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Virheilmoituste STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Aika virheilmoitusten näyttämiseen punaisessa ikkunassa. Huomaa, että jotkut (kriittiset) virheilmoitukset eivät sulkeudu automaattisesti tämän ajan jälkeen, vaan ne on suljettava käsin STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekunti{P 0 "" a} STR_CONFIG_SETTING_HOVER_DELAY :Näytä työkaluvihjeet: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Viive ennen työkaluvihjeen näyttämistä, kun hiiren kursoria pidetään käyttöliittymäelementin päällä. Vaihtoehtoisesti työkaluvihjeen saa myös näkymiin painamalla hiiren oikeaa näppäintä -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Pidä hiirtä päällä {COMMA} sekunti{P 0 "" a} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Viive ennen työkaluvihjeen näyttämistä, kun hiiren kursoria pidetään käyttöliittymäelementin päällä. Vaihtoehtoisesti työkaluvihjeen saa myös näkymiin painamalla hiiren oikeaa näppäintä jos arvoksi on määritetty 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Pidä hiirtä päällä {COMMA} millisekunti{P 0 "" a} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Hiiren oikea näppäin STR_CONFIG_SETTING_POPULATION_IN_LABEL :Näytä kaupungin asukasluku kaupungin nimessä: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Näytä kaupunkien asukasluku kartalla STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Viivojen paksuus kuvaajissa: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Viivan leveys kuvaajissa. Ohut viiva on tarkasti luettavissa kun taas paksumpi viiva on helpompi nähdä ja sen värit ovat helpommin havaittavissa +STR_CONFIG_SETTING_LANDSCAPE :Maasto: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Maasto vaikuttaa useisiin pelin peruselementteihin, kuten rahtiin ja kaupunkien kasvuvaatimuksiin. NewGRF:t ja Peliskriptit voivat kuitenkin vaikuttaa tarkemmin pelin kulkuun STR_CONFIG_SETTING_LAND_GENERATOR :Maastogeneraattori: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Alkuperäinen maastonluoja riippuu perusgrafiikkapaketista ja luo ennalta määritettyjä maastonmuotoja. TerraGenesis luo maastoa Perlin-kohinan perusteella ja mahdollistaa asetusten tarkemman määrittelyn STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Alkuperäinen STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Maaston tyyppi: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Vain TerraGenesis) Maaston mäkisyys +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Teollisuuden määrä: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Määritä, kuinka paljon teollisuutta tulisi luoda ja millä tasolla teollisuuden tulisi pysytellä pelin aikana STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Suurin sallittu etäisyys kartan reunoilta öljynjalostamoille: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Öljynjalostamoja rakennetaan ainoastaan kartan reunoille eli rannikoille saarikartoilla STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumirajan korkeus: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maaston epätasaisuus (vain TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määritä, millä korkeudella lumiraja on pohjoisessa maastotyypissä. Lumi vaikuttaa teollisuuksien luontiin sekä kaupunkien kasvuvaatimuksiin +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maaston epätasaisuus: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Vain TerraGenesis) Määritä mäkien tiheys: Tasaisessa maastossa mäet ovat laajempia ja niitä on vähemmän. Epätasaisessa maastossa on enemmän mäkiä, mikä voi saada maaston näyttämään itseään toistavalta STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erittäin tasainen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Tasainen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Epätasainen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Erittäin epätasainen +STR_CONFIG_SETTING_VARIETY :Maaston vaihtelu: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Vain TerraGenesis) Valitse, onko kartalla sekä vuoristoisia että tasaisia alueita. Koska tämä asetus tekee maastosta tasaisempaa, muut asetukset tulisi määrittää vuoristoisiksi +STR_CONFIG_SETTING_RIVER_AMOUNT :Jokien määrä: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Valitse, kuinka paljon jokia luodaan STR_CONFIG_SETTING_TREE_PLACER :Puiden sijoittelualgoritmi: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Määritä puiden jakautuminen kartalla: 'Alkuperäinen' istuttaa puita tasaisesti ympäri karttaa, 'Parannettu' istuttaa niitä ryhmiin STR_CONFIG_SETTING_TREE_PLACER_NONE :Ei mitään STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Alkuperäinen STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Parannettu +STR_CONFIG_SETTING_ROAD_SIDE :Ajoneuvot: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Valitse ajokaista STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Korkeuskartan pyöritys:{STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Vastapäivään STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Myötäpäivään STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Litteälle maisemalle annettava korkeus: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Salli maanmuokkaus kartan reunoilla: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Mikäli pois käytöstä, kartan reunat ovat aina merta STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Yksi tai useampi ruutu pohjoisreunalla ei ole tyhjä STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Yksi tai useampi ruutu jollakin reunalla ei ole vettä @@ -1301,7 +1343,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Näkymän tasai STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Hallitse miten päänäkymä siirtyy valittuun paikkaan karttaa klikattaessa tai käytettäessä komentoa joka muuttaa näkymän sijaintia. Mikäli käytössä, päänäkymä siirtyy uuteen sijaintiin pehmeäesti, muutoin se hyppää suoraan valittuun sijaintiin STR_CONFIG_SETTING_MEASURE_TOOLTIP :Näytä mittauksen työkaluvihje, kun käytetään rakennustyökaluja: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Näytä etäisyydet ja korkeuserot vedettäessä rakennustoimintojen aikana -STR_CONFIG_SETTING_LIVERIES :Näytä yhtiön tunnukset: {STRING} +STR_CONFIG_SETTING_LIVERIES :Näytä kulkuneuvotyypille ominaiset tunnukset: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Hallitse kulkuneuvokohtaisten tunnusten käyttöä (yhtiökohtaisten tunnusten sijaan) STR_CONFIG_SETTING_LIVERIES_NONE :Ei yhtään STR_CONFIG_SETTING_LIVERIES_OWN :Oma yhtiö @@ -1331,17 +1373,15 @@ 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_AUTOSAVE :Automaattitallennus: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Valitse aikaväli automaattisille pelitallennuksille + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Käytä {STRING} päivämäärämuotoa tallennettujen pelien niminä STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Pelitallenteiden tiedostonimissä käytettävä päivämäärän muoto STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :pitkä (31. joulu 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :lyhyt (31.12.2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Käytettävä oletuspaletti jos NewGRF ei määritä palettia: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Oletuspaletti NewGRF-tiedostoille jotka eivät määritä palettia -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-paletti -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows-paletti - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Uusi peli alkaa pysäytettynä: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Mikäli käytössä, peli pysäytetään automaattisesti uuden pelin alussa, mahdollistaen esimerkiksi kartan tarkemman tutkimisen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Pelin ollessa pysäytetty, salli: {STRING} @@ -1350,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ei mitkään to STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Kaikki ei-rakennustoiminnot STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Kaikki paitsi maastonmuokkaustoiminnot STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Kaikki toiminnot -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Edistynyt ajoneuvolista: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Käytä ryhmiä kulkuneuvolistassa: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Salli kehittyneiden kulkuneuvolistojen käyttö kulkuneuvojen ryhmittelyssä STR_CONFIG_SETTING_LOADING_INDICATORS :Lastausilmaisimet: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Määritä näytetäänkö lastausilmaisimet kulkuneuvojen yläpuolella lastatessa ja purettaessa rahtia @@ -1365,7 +1405,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Ratatyyppi, jok STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Ensimmäinen STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Viimeinen STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Yleisin -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Näytä varatut raiteet: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Näytä reittivaraukset raiteilla: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Värjää varatut rataosuudet eri värillä. Tämä auttaa opastimien ja risteysten vianetsinnässä STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pidä rakennustyökalut aktiivisina käytön jälkeen: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Pidä siltojen, tunneleiden, jne. rakennustyökalut käytössä käytön jälkeen @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Huoltovälit ov STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Määritä, aiheuttaako edellisestä huollosta kulunut aika vai luotettavuuden laskeminen kulkuneuvon huoltamisen STR_CONFIG_SETTING_SERVINT_TRAINS :Junien huoltoväli oletuksena: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Määritä oletushuoltoväli uusille junille mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} päivä{P 0 "" ä}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}päivä{P 0 "" ä}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Pois käytöstä STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Ajoneuvojen huoltoväli oletuksena: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Määritä oletushuoltoväli uusille ajoneuvoille mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä @@ -1479,8 +1519,8 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Vuosi, jonka j STR_CONFIG_SETTING_STARTING_YEAR :Aloitusvuosi: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Tasainen talous (enemmän pieniä muutoksia): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Mikäli käytössä, teollisuuden tuotanto muuttuu useammin ja vähemmän kerrallaan. Tällä asetuksella ei ole yleensä vaikutusta mikäli teollisuustyypit ovat NewGRF:n tarjoamia -STR_CONFIG_SETTING_ALLOW_SHARES :Salli osakkeiden ostaminen muista yhtiöistä: {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Mikäli käytössä, osakkeiden ostaminen ja myyminen yhtiöistä on mahdollista. Osakkeet ovat saatavilla vain yhtiöille, jotka ovat saavuttaneet tietyn iän +STR_CONFIG_SETTING_ALLOW_SHARES :Salli toisten yhtiöiden osakkeiden ostaminen: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Mikäli käytössä, toisten yhtiöiden osakkeiden ostaminen ja myyminen on mahdollista. Osakkeet ovat saatavilla vain yhtiöille, jotka ovat saavuttaneet tietyn iän STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Syöttöjärjestelmään maksettavan tuoton osuus: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Osuus tuotosta, joka annetaan välittäjille syöttöjärjestelmissä STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Opastimien väli vedettäessä: {STRING} @@ -1489,17 +1529,17 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ruutu{P STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Vedettäessä, pidä opastimien välinen matka vakiona: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Valitse käyttäytyminen vedettäessä opastimia Ctrl-näppäin pohjassa. Mikäli pois käytöstä, opastimia rakennetaan siltojen ja tunnelien ympärille pitkien opastimista vapaiden alueiden välttämiseksi. Mikäli käytössä, opastimia rakennetaan n ruudun välein, tehden vierekkäisten ratojen opastimien kohdistamisesta helpompaa STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Rakenna oletuksena siipiopastimia ennen vuotta: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Valitse vuosi jonka jälkeen käytetään sähköisiä opastimia. Ennen tätä vuotta käytetään siipiopastimia (joilla on sama toiminnallisuus mutta eri ulkonäkö) +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Valitse vuosi jonka jälkeen käytetään valo-opastimia. Ennen tätä vuotta käytetään siipiopastimia (joilla on sama toiminnallisuus mutta eri ulkonäkö) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Käytä graafista opastinkäyttöliittymää: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Näytä ikkuna opastintyypin valitsemiseksi ikkunattoman Ctrl-näppäimen avulla tapahtuvan rakentamisen sijaan STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Oletusarvoinen opastintyyppi: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Oletuksena käytettävä opastintyyppi -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Tavallinen +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Suojastusopastimet STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Reittiopastimet STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Yksisuuntaiset reittiopastimet STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Vaihda opastintyyppien välillä: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Valitse, mitkä opastintyypit ovat käytössä painettaessa Ctrl-näppäintä opastimia rakennettaessa -STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Vain tavallinen +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Vain suojastusopastimet STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Vain reittiopastimet STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Kaikki @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 / {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ei yhtään STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kasvukerroin alussa: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Suurkaupunkien keskimääräinen koko suhteessa normaaleihin kaupunkeihin pelin alussa -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Poista turhat tie-elementit tienrakennuksen aikana: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Poista turhat tien loppuosat tieverkon uudelleenrakentamisen yhteydessä -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Päivitä rahdin jakautuminen {STRING} päivän välein +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Päivitä rahdin jakautuminen {STRING}{NBSP}päivän välein STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Yhteyskuvaajan uudelleenlaskujen välinen aika. Kukin uudelleenlasku laskee yhden kuvaajan komponentin. Tämä tarkoittaa sitä, että koko kuvaajaa ei lasketa uudelleen määrittämäsi ajan välein, vaan ainoastaan yksi komponentti. Mitä lyhyemmäksi määrität asetuksen, sitä enemmän prosessoriaikaa komponentin laskemiseen vaaditaan. Mitä pidemmäksi määrität sen, sitä pidempi aika kuluu, kunnes rahdin jakaminen alkaa uusilla reiteillä. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Käytä {STRING} päivä{P 0:2 "" ä} rahtijakauman päivittämiseen +STR_CONFIG_SETTING_LINKGRAPH_TIME :Käytä {STRING}{NBSP}päivä{P 0:2 "" ä} rahtijakauman päivittämiseen STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Jokaisen yhteyskuvaajan komponentin uudelleenlaskemiseen käytettävä aika. Uudelleenlaskun alkaessa käynnistetään uusi säie, jonka annetaan toimia näin monta päivää. Mitä lyhyemmäksi määrität tämän, sitä todennäköisempää on, että säie ei ole valmis ajoissa. Tällöin peli pysähtyy kunnes lasku on suoritettu loppuun (peli pätkii). Mitä pidemmäksi määrität asetuksen, sitä pitempään rahdin jakauman päivittämiseen kuluu aikaa reittien muuttuessa. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuaalinen STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :epäsymmetrinen @@ -1580,7 +1618,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrinen" t STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Arvokuljetusten jakautuminen: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Arvokuljetuksiin kuuluvat arvotavarat lauhkeassa ilmastossa, timantit subtrooppisessa ilmastossa ja kulta pohjoisessa ilmastossa. NewGRF:t voivat kuitenkin muuttaa näitä rahteja. "symmetrinen" tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. "epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriävä määrä rahtia. "manuaalinen" tarkoittaa, että automaattinen rahdin jakautuminen on poistettu käytöstä rahdilta. Suositeltavia asetuksia ovat "epäsymmetrinen" tai "manuaalinen" pelattaessa pohjoisessa ilmastossa, sillä pankit eivät lähetä kultaa takaisin kaivoksille. Lauhkeassa ja subtrooppisessa ilmastossa pelatessa voidaan myös valita "symmetrinen", sillä pankit lähettävät arvotavaroita takaisin alkuperäiselle pankille. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Muiden rahtityyppien jakautuminen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrinen" tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. "epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriäviä määriä rahtia. "manuaalinen" tarkoittaa, että automaattinen jakautuminen ei ole käytössä rahdille. Suositeltavia asetuksia ovat "epäsymmetrinen" ja "manuaalinen". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriäviä määriä rahtia. "manuaalinen" tarkoittaa, että automaattinen jakautuminen ei ole käytössä rahdille. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Jakautumisen tarkkuus: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mitä suuremmaksi tämä asetus on määritetty, sitä enemmän prosessoriaikaa yhteyskuvaajan laskemiseen kuluu. Mikäli tähän kuluu liian paljon aikaa, saatat havaita pelin nykimistä. Jos arvo on määritetty liian pieneksi, jakauman laskeminen ei ole tarkka ja rahtia ei välttämättä lähetetä odotetuille asemille. STR_CONFIG_SETTING_DEMAND_DISTANCE :Välimatkan vaikutus kysyntään: {STRING} @@ -1626,27 +1664,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Brittiläinen ( STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrinen (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Käyttöliittymä STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisointi -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Rakentaminen +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafiikka +STR_CONFIG_SETTING_SOUND :{ORANGE}Ääni +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Käyttöliittymä +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Yleinen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Näkymät +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Rakentaminen +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Uutiset / Neuvonantajat +STR_CONFIG_SETTING_COMPANY :{ORANGE}Yhtiö +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Talous STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ajoneuvot -STR_CONFIG_SETTING_STATIONS :{ORANGE}Asemat -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Talous -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Rahdin jakautuminen +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysiikka +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Reititys +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Rajoitukset +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Onnettomuudet +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Maailman luominen +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ympäristö +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Viranomaiset +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Kaupungit +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Laitokset +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Rahdin jakautuminen STR_CONFIG_SETTING_AI :{ORANGE}Kilpailijat -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Näyttöasetukset -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Vuorovaikutus -STR_CONFIG_SETTING_SOUND :{ORANGE}Ääniefektit -STR_CONFIG_SETTING_NEWS :{ORANGE}Uutiset ja viestit -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Opastimet -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Rahdin käsittely STR_CONFIG_SETTING_AI_NPC :{ORANGE}Tietokonepelaajat -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automaattinen uudistus -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Huoltokäynnit -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Reititys -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Junat -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Kaupungit -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Laitokset STR_CONFIG_SETTING_PATHFINDER_OPF :Alkuperäinen STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1659,7 +1699,7 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Ajoneuvojen kä STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Laivojen käyttämä reitinetsijä: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Laivojen käyttämä reitinetsijä STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automaattinen kääntyminen opastimilla: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Sallii junien peruuttamisen opastimen edessä pitkän odotusajan jälkeen +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Sallii junien kääntymisen opastimen edessä pitkän odotusajan jälkeen STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Muuta asetusarvo @@ -1693,9 +1733,9 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Lataa ko STR_INTRO_SCENARIO_EDITOR :{BLACK}Skenaariomuokkain STR_INTRO_MULTIPLAYER :{BLACK}Moninpeli -STR_INTRO_GAME_OPTIONS :{BLACK}Pelin asetukset +STR_INTRO_GAME_OPTIONS :{BLACK}Pelin valinnat STR_INTRO_HIGHSCORE :{BLACK}Pistetaulukko -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Lisäasetukset +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Asetukset STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-asetukset STR_INTRO_ONLINE_CONTENT :{BLACK}Tarkista Online-sisältö STR_INTRO_SCRIPT_SETTINGS :{BLACK}Tekoälyn/Peliskriptin asetukset @@ -1708,18 +1748,18 @@ STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Aloita u STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Luo oma pelimaailma/skenaario. STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Aloita moninpeli -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Valitse 'lauhkea' maastotyyppi. -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Valitse 'pohjoinen' maastotyyppi. -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Valitse 'subtrooppinen' maastotyyppi. -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Valitse 'lelumaan' maastotyyppi. +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Valitse lauhkea maastotyyppi. +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Valitse pohjoinen maastotyyppi. +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Valitse subtrooppinen maastotyyppi. +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Valitse lelumaan maastotyyppi. -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Näytä peliasetukset. +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Näytä pelin valinnat STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Näytä pistetaulukko -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Näytä edistyneemmät asetukset +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Näyttöasetukset STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Näytä NewGRF-asetukset STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tarkista uutta ja päivitettyä sisältöä ladattavaksi STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Näytä tekoäly/peliskriptiasetukset -STR_INTRO_TOOLTIP_QUIT :{BLACK}Sulje 'OpenTTD'. +STR_INTRO_TOOLTIP_QUIT :{BLACK}Sulje OpenTTD. STR_INTRO_TRANSLATION :{BLACK}Tästä käännöksestä puuttuu {NUM} merkkijono{P "" a}. Auta tekemään OpenTTD:stä parempi rekisteröitymällä kääntäjäksi. Lisätietoja tiedostossa readme.txt. @@ -1755,13 +1795,15 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hallinn STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Taikapuskutraktori (poista teollisuutta, liikuttamattomia kohteita): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelit voivat mennä ristiin: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Suihkukoneet eivät syöksy (usein) pienille lentokentille: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Muuta suurinta sallittua kartan korkeutta: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Muuta suurinta sallittua vuorten korkeutta STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :lauhkea maasto STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :pohjoinen maasto STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtrooppinen maasto STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Lelumaan maasto STR_CHEAT_CHANGE_DATE :{LTBLUE}Muuta päiväystä: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Muuta nykyistä vuotta -STR_CHEAT_SETUP_PROD :{LTBLUE}Muuntuvat tuotantoarvot: {ORANGE}{STRING} +STR_CHEAT_SETUP_PROD :{LTBLUE}Salli tuotantomäärien muuttaminen: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Uusi väriteema @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Raitiotavaravau STR_FACE_CAPTION :{WHITE}Kasvojen valinta STR_FACE_CANCEL_TOOLTIP :{BLACK}Peruuta uusien kasvojen valinta. STR_FACE_OK_TOOLTIP :{BLACK}Hyväksy uusien kasvojen valinta. +STR_FACE_RANDOM :{BLACK}Satunnainen STR_FACE_MALE_BUTTON :{BLACK}Mies STR_FACE_MALE_TOOLTIP :{BLACK}Valitse miehen kasvot. @@ -1874,7 +1917,7 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartan koko STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kartan koko{}Valitse lajitellaksesi koon mukaan STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Päiväys -STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Tämä päivä +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Nykyinen päivämäärä STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Vuosia STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Pelin kesto{}vuosina STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Kieli, palvelimen versio, jne. @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :Pelaaja STR_NETWORK_SPECTATORS :Katsojat STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Syötä rahamäärä, jonka haluat antaa +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Katsoja # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Älä tallenna syötettyä salasanaa @@ -2229,7 +2273,7 @@ STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Muuta te STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Muuta asemien, varikoiden, reittipisteiden ja sähkölinjojen läpinäkyvyyttä. Ctrl+Klik lukitaksesi STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Muuta siltojen läpinäkyvyyttä. Ctrl+Klik lukitaksesi STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Muuta rakenteiden, kuten majakoiden ja antennien, läpinäkyvyyttä. Ctrl+Klik lukitaksesi -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Muuta ajolinjojen läpinäkyvyyttä. Ctrl+Klik lukitaksesi +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Muuta sähköradan johtimien läpinäkyvyyttä. Ctrl+Klik lukitaksesi STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Muuta lastausilmaisimien läpinäkyvyyttä. Ctrl+Klik lukitaksesi STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Tee kohteista läpinäkyvyyden sijaan näkymättömiä @@ -2327,7 +2371,7 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Pienenn STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Suurenna opastimien väliä vetämällä lisättäessä # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Valitse rautatiesilta. +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Valitse rautatiesilta STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Valitse maantiesilta STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Sillan valinta - napsauta valittua siltaa rakentaaksesi sen. STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} @@ -2386,7 +2430,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Rakenna STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Rakenna sulku. Shift vaihtaa rakennustilan ja kustannearvion välillä STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Rakenna telakka (laivojen ostamista ja huoltamista varten). Shift vaihtaa rakennustilan ja kustannearvion välillä STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Rakenna satama. Ctrl liittää asemat. Shift vaihtaa rakennustilan ja kustannearvion välillä -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Sijoita poiju: voidaan käyttää ylimääräisenä reittipisteenä. Shift vaihtaa rakennustilan ja kustannearvion välillä +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Sijoita poiju: voidaan käyttää reittipisteenä. Shift vaihtaa rakennustilan ja kustannearvion välillä STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Rakenna akvedukti. Shift vaihtaa rakennustilan ja kustannearvion välillä STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Määrittele vesialue.{}Tee kanava, paitsi jos Ctrl on painettuna merenpinnalla. Tällöin meri laajenee ympäristöön. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Sijoita jokia @@ -2433,7 +2477,7 @@ STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Tasoita STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Osta maata tulevaa käyttöä varten. Shift vaihtaa ostotilan ja kustannearvion välillä # Object construction window -STR_OBJECT_BUILD_CAPTION :{WHITE}Objektin Valinta +STR_OBJECT_BUILD_CAPTION :{WHITE}Objektin valinta STR_OBJECT_BUILD_TOOLTIP :{BLACK}Valitse rakennettava objekti. Shift vaihtaa rakennustilan ja kustannearvion välillä STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Valitse rakennettavan objektin luokka STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektin esikatselu @@ -2456,7 +2500,7 @@ STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Sijoita STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Määrittele aavikon alue.{}Pidä Ctrl-nappia pohjassa poistaaksesi sitä STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Suurenna madallettavan/korotettavan maa-alueen kokoa. STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Pienennä madallettavan/korotettavan maa-alueen kokoa. -STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Luo satunnainen maa +STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Luo satunnainen maasto STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Luo uusi skenaario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Nollaa maasto STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Poista kaikki yhtiöiden omistamat tontit kartalta @@ -2477,7 +2521,7 @@ STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Kaupung STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Syötä kaupungin nimi STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikkaa syöttääksesi kaupungin nimen STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Satunnainen nimi -STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generoi uusi satunnainen nimi +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Arvo uusi satunnainen nimi STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Kaupungin koko: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Pieni @@ -2545,7 +2589,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lentoken STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastaanottaa rahtia: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Raiteiden nopeusrajoitus: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Radan nopeusrajoitus: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Tien nopeusrajoitus: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kalliota @@ -2607,7 +2652,7 @@ STR_LAI_WATER_DESCRIPTION_WATER :Vettä STR_LAI_WATER_DESCRIPTION_CANAL :Kanaali STR_LAI_WATER_DESCRIPTION_LOCK :Sulku STR_LAI_WATER_DESCRIPTION_RIVER :Joki -STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Rannikko tai joenpenkka +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Rannikko tai joentörmä STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Telakka # Industries come directly from their industry names @@ -2642,7 +2687,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli @@ -2650,7 +2695,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}Lataa pe STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Tallenna skenaario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Lataa skenaario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Lataa korkeuskartta -STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Tallenna Korkeuskartta +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Tallenna korkeuskartta STR_SAVELOAD_HOME_BUTTON :{BLACK}Siirry tallennusten oletuskansioon napsauttamalla tätä STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} vapaana STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista asemista, hakemistoista ja tallennetuista peleistä. @@ -2661,7 +2706,8 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Tallenna STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Tallenna nykyinen peli käyttäen valittua nimeä. STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lataa STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lataa valittu peli -STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Tietoja Pelistä +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Lataa valittu korkeuskartta +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Tietoja pelistä STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Tietoja ei ole saatavilla STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2676,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kaupungit: STR_MAPGEN_DATE :{BLACK}Päivämäärä: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Teollisuus: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Lumilinjan korkeus: -STR_MAPGEN_SNOW_LINE_UP :{BLACK}Siirrä lumilinjaa yksi ylöspäin -STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Siirrä lumilinjan korkeutta yksi alaspäin -STR_MAPGEN_RANDOM_SEED :{BLACK}Satunnaislukusiemen: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikkaa antaaksesi satunnaislukusiemenen -STR_MAPGEN_RANDOM :{BLACK}Satunnainen -STR_MAPGEN_RANDOM_HELP :{BLACK}Vaihda maaston luomisessa käytettävä satunnaislukusiemen +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Suurin sallittu kartan korkeus: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Kasvata suurinta sallittua vuorten korkeutta yhdellä +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Vähennä suurinta sallittua vuorten korkeutta yhdellä +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Lumirajan korkeus: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Siirrä lumirajaa yksi taso ylöspäin +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Siirrä lumirajaa yksi taso alaspäin STR_MAPGEN_LAND_GENERATOR :{BLACK}Maastogeneraattori: STR_MAPGEN_TREE_PLACER :{BLACK}Puiden algoritmi: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maaston tyyppi: @@ -2709,8 +2754,8 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Korkeusk STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Koko: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Syötä satunnaissiemen -STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Vaihda lumilinjan korkeutta +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Muuta suurinta sallittua kartan korkeutta +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Vaihda lumirajan korkeutta STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Vaihda aloitusvuosi # SE Map generation @@ -2755,7 +2800,7 @@ STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Syötä STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Poista valmislista STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Poista valittu valmislista STR_NEWGRF_SETTINGS_ADD :{BLACK}Lisää -STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Lisää valittu NewGRF-tiedosto peliin +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Lisää valittu NewGRF-tiedosto listalle STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Päivitä STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Päivitä saatavilla olevien NewGRF-tiedostojen lista STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Poista @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Siirrä STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Siirrä valittua NewGRF-tiedostoa listassa ylöspäin STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Siirrä alas STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Siirrä valittua NewGRF-tiedostoa listassa alaspäin +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Päivitä +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Päivitä NewGRF-tiedostot joista on asennettuna uudempi versio STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Lista asennetuista NewGRF-tiedostoista STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Aseta parametrit @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Sopivaa ti STR_NEWGRF_SETTINGS_DISABLED :{RED}Ei käytössä STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Epäyhteensopiva tämän OpenTTD-version kanssa +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Tallenna valmislistaksi +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Luettelo saatavilla olevista valmislistoista, valitse yksi kopioitavaksi alla olevaan tallenteeseen +STR_SAVE_PRESET_TITLE :{BLACK}Syötä nimi valmislistalle +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Valittu nimi tallennettavalle valmislistalle +STR_SAVE_PRESET_CANCEL :{BLACK}Peruuta +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Älä muuta valmislistaa +STR_SAVE_PRESET_SAVE :{BLACK}Tallenna +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Tallenna valmislista valitulle nimelle + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Muuta NewGRF-parametrejä STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Sulje @@ -2811,14 +2868,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF m # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Kohdistetaan spriteä {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seuraava sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mene seuraavaan normaaliin spriteen, hypäten yli pseudo/uudelleenväritetyt/fontti spritet ja mene alkuun kun päästään viimeiseen +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mene seuraavaan tavalliseen spriteen ja hyppää yli pseudo-/uudelleenväritetyt/fontti- spritet ja mene alkuun kun päästään viimeiseen STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mene spriteen STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Mene valittuun spriteen. Jos sprite ei ole tavallinen, jatka seuraavaan tavalliseen spriteen STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Edelinen sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jatka edelliseen tavalliseen spriteen, hypäten yli kaikki pseudo/uudelleenväritetyt/fontti spritet ja mene loppuun kun päästään ensimmäiseen. +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jatka edelliseen tavalliseen spriteen ja hyppää yli kaikki pseudo-/uudelleenväritetyt/fontti- spritet ja mene loppuun kun päästään ensimmäiseen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Valitun spriten näyttö. Sijaintia ei huomioida spriteä piirrettäessä STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liikuta spriteä ympäriinsä, muuttaen X- ja Y-sijainteja -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-sijainti: {NUM}, Y-sijainti: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Nollaa suhteelliset +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nollaa suhteelliset erotukset +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-erotus: {NUM}, Y-erotus: {NUM} (Absoluuttinen) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-erotus: {NUM}, Y-erotus: {NUM} (Suhteellinen) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Valitse sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Valitse sprite ruudulta @@ -2830,7 +2890,7 @@ STR_NEWGRF_ERROR_MSG_WARNING :{RED}Varoitus: STR_NEWGRF_ERROR_MSG_ERROR :{RED}Virhe: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Virhe: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Vakava NewGRF-virhe on tapahtunut: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} ei toimi OpenTTD:n ilmoittaman TTDPatch -version kanssa +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} ei toimi OpenTTD:n ilmoittaman TTDPatch-version kanssa STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} on TTD:n {STRING}-versiota varten STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ja {STRING} on suunniteltu toimimaan yhdessä STR_NEWGRF_ERROR_INVALID_PARAMETER :Virheellinen parametri: {1:STRING}: {STRING} ({NUM}) @@ -2875,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Puuttuvia STR_NEWGRF_BROKEN :{WHITE}NewGRF:n '{0:STRING}' käytös aiheuttaa todennäköisesti nykimistä ja/tai kaatumisia. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Se muutti vetävän vaunun '{1:ENGINE}' tilaa tallin ulkopuolella STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Se muutti kulkuneuvon '{1:ENGINE}' pituutta varikon ulkopuolella +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Se muutti kulkuneuvon '{1:ENGINE}' kapasiteettia, vaikka kulkuneuvo ei ollut varikolla tai uudelleensovitettavana STR_BROKEN_VEHICLE_LENGTH :{WHITE}Yhtiölle '{1:COMPANY}' kuuluvan junan '{0:VEHICLE}' pituus on virheellinen. Tämä johtuu luultavasti NewGRF:ien ongelmista. Peli saattaa nykiä tai kaatua STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' antaa väärää tietoa @@ -2889,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannataan NewGRF-tiedostoja STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannataan NewGRF-tiedostoja. Tiedostojen määrästä riippuen riippuen tässä voi kestää hetki... @@ -2926,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} kuljetettu STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (tarvitaan lisää) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (kuljetettu) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Kaupunki kasvaa {ORANGE}{COMMA}{BLACK} päivän{P "" ""} välein -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Kaupunki kasvaa {ORANGE}{COMMA}{BLACK} päivän{P "" ""} välein (rahoitettu) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Kaupunki kasvaa {ORANGE}{COMMA}{BLACK}{NBSP}päivän{P "" ""} välein +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Kaupunki kasvaa {ORANGE}{COMMA}{BLACK}{NBSP}päivän{P "" ""} välein (rahoitettu) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Kaupunki {RED}ei{BLACK} kasva STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Meluraja kaupungissa: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Keskitä näkymä kaupungin sijaintiin. Ctrl+Klik avaa uuden näkymäikkunan kaupungin sijaintiin @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Tietoa STR_GOAL_QUESTION_CAPTION_WARNING :Varoitus STR_GOAL_QUESTION_CAPTION_ERROR :Virhe -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Peruuta STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ei @@ -3006,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Aloita uudellee STR_GOAL_QUESTION_BUTTON_POSTPONE :Lykkää myöhemmäksi STR_GOAL_QUESTION_BUTTON_SURRENDER :Luovuta STR_GOAL_QUESTION_BUTTON_CLOSE :Sulje +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Tuet @@ -3026,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Edelline STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Siirry edelliselle sivulle STR_STORY_BOOK_NEXT_PAGE :{BLACK}Seuraava STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Siirry seuraavalle sivulle +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Virheellinen viittaus tavoitteeseen # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Asemien nimet - napsauta nimeä keskittääksesi päänäkymän asemaan. Ctrl+Klik avaa uuden näkymäikkunan aseman sijaintiin @@ -3040,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Minkää # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Lähdössä: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} asemalta {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} varattu ladattavaksi) @@ -3246,7 +3311,7 @@ STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} lentokonetta STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Junat - napsauta junaa saadaksesi tietoja. -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ajoneuvot - napsauta ajoneuvoja saadaksesi tietoja. +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ajoneuvot - napsauta ajoneuvoa saadaksesi tietoja. STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Laivat - napsauta laivaa saadaksesi tietoja. STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lentokoneet - napsauta lentokonetta saadaksesi tietoja. @@ -3265,7 +3330,7 @@ STR_VEHICLE_LIST_SEND_FOR_SERVICING :Lähetä huolto STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Lähetä varikolle STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Lähetä varikolle -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Lähetä varikolle +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Lähetä telakalle STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Lähetä varikolle STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Pysäytä kaikki listalla olevat kulkuneuvot klikkaamalla @@ -3284,12 +3349,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Muut autot STR_GROUP_DEFAULT_SHIPS :Muut laivat STR_GROUP_DEFAULT_AIRCRAFTS :Muut lentokoneet -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ryhmät - klikkaa ryhmää nähdäksesi kaikki kulkuneuvot tässä ryhmässä +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ryhmät - klikkaa ryhmää nähdäksesi kaikki kulkuneuvot tässä ryhmässä. Järjestä ryhmiä vetämällä ja pudottamalla. STR_GROUP_CREATE_TOOLTIP :{BLACK}Luo ryhmä STR_GROUP_DELETE_TOOLTIP :{BLACK}Poista valittu ryhmä STR_GROUP_RENAME_TOOLTIP :{BLACK}Nimeä valittu ryhmä STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Poista ryhmä automaattisesti korvattavien joukosta +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Poista ryhmä +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Haluatko varmasti poistaa tämän ryhmän ja sen alaryhmät? + STR_GROUP_ADD_SHARED_VEHICLE :Lisää jaettuja ajoneuvoja STR_GROUP_REMOVE_ALL_VEHICLES :Poista kaikki ajoneuvot @@ -3310,7 +3378,7 @@ STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Hinta: { STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Nopeus: {GOLD}{VELOCITY}{BLACK} Teho: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Nopeus: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Nopeus merellä: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Nopeus kanaalissa/joessa: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Nopeus kanaalissa/joella: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Käyttökustannus: {GOLD}{CURRENCY_LONG}/vuosi STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasiteetti: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(sovitettava) @@ -3327,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :Kaikki paitsi { STR_PURCHASE_INFO_MAX_TE :{BLACK}Suurin vetovoima: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Toimintasäde: {GOLD}{COMMA} ruutua -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Yksikön valintalista - napsauta kohteita saadaksesi tietoja. -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Ajoneuvon valintalista - napsauta ajoneuvoa saadaksesi tietoja. -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivan valintalista - napsauta laivaa saadaksesi tietoja. -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lentokonevalintalista - napsauta lentokonetta saadaksesi tietoja. +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivojen valintaluettelo. Napsauta laivaa saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa laivan tyypin +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lentokoneiden valintaluettelo. Napsauta lentokonetta saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa lentokoneen tyypin STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Osta yksikkö STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Osta ajoneuvo @@ -3352,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Nimeä a STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Nimeä laivatyyppi uudelleen. STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Nimeä lentokonetyyppi uudelleen. +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Piilota +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Piilota +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Piilota +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Piilota + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Näytä +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Näytä +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Näytä +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Näytä + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota junan tyyppi +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota ajoneuvon tyyppi +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota laivan tyyppi +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota lentokoneen tyyppi + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Nimeä juna(vaunu)n tyyppi uudelleen. STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Nimeä ajoneuvon tyyppi uudelleen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Nimeä laivatyyppi uudelleen. @@ -3456,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Ajoneuvo STR_REPLACE_VEHICLE_SHIP :Laiva STR_REPLACE_VEHICLE_AIRCRAFT :Lentokone +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Käytössä olevat kulkuneuvot +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Sarake kulkuneuvoille, jotka omistat +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Saatavilla olevat kulkuneuvot +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Sarake kulkuneuvoille, jotka voidaan uusia + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Valitse korvattava veturityyppi. STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Valitse vasemmalla näkyvän veturityypinn korvaava uusi veturityyppi. @@ -3533,7 +3621,7 @@ STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Poistuu STR_VEHICLE_STATUS_CRASHED :{RED}Kolaroitu! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Hajonnut STR_VEHICLE_STATUS_STOPPED :{RED}Pysäytetty -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Pysäytetään, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Pysähtyy, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ei virtaa STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Odottaa vapaata reittiä STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Seuraava määränpää liian kaukana @@ -3580,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Siirron arvo: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Huoltoväli: {LTBLUE}{COMMA} päivää{BLACK} Viimeisin huolto: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Huoltoväli: {LTBLUE}{COMMA}{NBSP}päivää{BLACK} Viimeisin huolto: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Huoltoväli: {LTBLUE}{COMMA}%{BLACK} Viime huolto: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Kasvata huoltoväliä kymmenellä. Ctrl+Klik kasvattaa huoltoväliä viidellä STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Pienennä huoltoväliä kymmenellä. Ctrl+Klik vähentää huoltoväliä viidellä @@ -3678,8 +3766,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Muuta ko STR_ORDER_REFIT :{BLACK}Sovita STR_ORDER_REFIT_TOOLTIP :{BLACK}Valitse mihin rahtityyppiin tämä käsky sovittaa. Ctrl+Klik poistaa sovituskäskyn -STR_ORDER_REFIT_AUTO :{BLACK}Automaattinen sovitus -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Valitse tällä määräyksellä automaattisesti sovitettava rahtityyppi. Ctrl+Klik poistaaksesi sovitusmääräyksen. Automaattinen sovitus suoritetaan vain, jos kulkuneuvo sallii sen. +STR_ORDER_REFIT_AUTO :{BLACK}Uudelleensovitus asemalla +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Valitse tällä määräyksellä sovitettava rahtityyppi. Ctrl+Klik poistaaksesi sovitusmääräyksen. Sovitus suoritetaan vain, jos kulkuneuvo sallii sen. STR_ORDER_DROP_REFIT_AUTO :Määrätty rahti STR_ORDER_DROP_REFIT_AUTO_ANY :Saatavilla oleva rahti @@ -3742,7 +3830,7 @@ STR_ORDER_NEAREST_DEPOT :lähin STR_ORDER_NEAREST_HANGAR :lähin varikko STR_ORDER_TRAIN_DEPOT :Junavarikko STR_ORDER_ROAD_VEHICLE_DEPOT :Varikko -STR_ORDER_SHIP_DEPOT :Varikko +STR_ORDER_SHIP_DEPOT :Telakka STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} @@ -3770,18 +3858,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ei lastin purk STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ei lastin purkua, mutta odota minkä tahansa lastin täyttymistä) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ei purkua eikä lastausta) -STR_ORDER_AUTO_REFIT :(Sovita automaattisesti rahdille {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Täysi lasti ja automaattinen sovitus rahdille {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Täysi lasti mitä tahansa rahtia sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_UNLOAD_REFIT :(Pura ja ota rahti sekä automaattinen sovitus rahdille {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Pura ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING}) +STR_ORDER_AUTO_REFIT :(Sovita rahdille {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Täysi lasti ja sovitus rahdille {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Täysi lasti mitä tahansa rahtia sekä sovita rahdille {STRING}) +STR_ORDER_UNLOAD_REFIT :(Pura ja ota rahti sekä sovita rahdille {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Pura ja odota täyttä lastia sekä sovita rahdille {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Pura ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING}) -STR_ORDER_TRANSFER_REFIT :(Siirrä ja ota rahti sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Siirrä ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Siirrä ja odota mitä tahansa täyttä lastia sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Ei purkua ja ota rahti sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ei purkua ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ei purkua ja odota mitä tahansa täyttä lastia sekä sovita automaattisesti rahdille {STRING}) +STR_ORDER_TRANSFER_REFIT :(Siirrä ja ota rahti sekä sovita rahdille {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Siirrä ja odota täyttä lastia sekä sovita rahdille {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Siirrä ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Ei purkua ja ota rahti sekä sovita rahdille {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ei purkua ja odota täyttä lastia sekä sovita rahdille {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ei purkua ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING}) STR_ORDER_AUTO_REFIT_ANY :saatavilla oleva rahti @@ -3807,13 +3895,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Aikataul STR_TIMETABLE_NO_TRAVEL :Ei kulkua STR_TIMETABLE_NOT_TIMETABLEABLE :Kulje (automaattinen; aikataulu seuraavan manuaalisen käskyn mukaisesti) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Kiertävä (ei aikataulua) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Kulje enimmillään {2:VELOCITY} (ei aikataulutettu) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Kulje (ilman aikataulua) enimmillään {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Kulje kohteeseen {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Kulje kohteeseen {STRING} enintään {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Kulje ({STRING}, ei aikataulua) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Kulje ({STRING}, ei aikataulua) enimmillään {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(pysy {STRING}, ei aikataulua) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(matkusta {STRING}, ei aikataulua) STR_TIMETABLE_STAY_FOR :ja odota {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :ja kulje {STRING} -STR_TIMETABLE_DAYS :{COMMA} päivä{P "" ä} -STR_TIMETABLE_TICKS :{COMMA} tunti{P "" a} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}päivä{P "" ä} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" iä} STR_TIMETABLE_TOTAL_TIME :{BLACK}Aikataulun kesto on {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Aikataulun kesto on vähintään {STRING} @@ -3939,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :Päiviä edelli STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}:n {STRING} readme-tiedosto STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}:n {STRING} muutosloki STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}:n {STRING} lisenssi +STR_TEXTFILE_WRAP_TEXT :{WHITE}Tekstin rivitys +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Rivitä teksti ikkunaan niin, että se näkyy kokonaan rullaamatta STR_TEXTFILE_VIEW_README :{BLACK}Näytä readme-tiedosto STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Muutosloki STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisenssi @@ -3998,7 +4092,7 @@ STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... kuva STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... kuva on liian suuri -STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Mittakaava-varoitus +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Mittakaavavaroitus STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Lähdekartan koon liiallinen muuttaminen ei ole suositeltavaa. Haluatko jatkaa? # Soundset messages @@ -4006,7 +4100,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Vain til # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Suuri kuvankaappaus -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Kuvankaappauksen resoluutio tulee olemaan {COMMA} x {COMMA} pikseliä. Kuvankaappauksen ottaminen voi kestää jonkin aikaa. Haluatko jatkaa? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Kuvankaappauksen tarkkuus tulee olemaan {COMMA} x {COMMA} pikseliä. Kuvankaappauksen ottaminen voi kestää jonkin aikaa. Haluatko jatkaa? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Kuvakaappaus tallennettu nimellä '{STRING}'. STR_ERROR_SCREENSHOT_FAILED :{WHITE}Kuvakaappaus epäonnistui! @@ -4049,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Kaivuual STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Merenpinta on jo saavutettu. STR_ERROR_TOO_HIGH :{WHITE}Liian korkea. STR_ERROR_ALREADY_LEVELLED :{WHITE}... alue on jo litteä +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Yläpuolella olevasta sillasta tulisi liian korkea. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Yhtiön nimeä ei voi muuttaa... @@ -4075,7 +4170,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... liia STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... liian lähellä toista kaupunkia. STR_ERROR_TOO_MANY_TOWNS :{WHITE}... liian monta kaupunkia. STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... kartalla ei ole enää tilaa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Kaupunki ei rakenna teitä. Voit sallia teiden rakentamisen valikosta Lisäasetukset->Talous->Kaupungit +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Kaupunki ei rakenna teitä. Voit sallia teiden rakentamisen valikosta Asetukset->Ympäristö->Kaupungit STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Tietyöt ovat käynnissä. STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kaupunkia ei voida poistaa...{}Asema tai varikko viittaa kaupunkiin tai kaupungin omistamaa ruutua ei voida poistaa STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... kaupungin keskustassa ei ole sopivaa paikkaa patsaalle @@ -4099,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... mets STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... voidaan rakentaa vain lumirajan yläpuolelle STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... voidaan rakentaa vain lumirajan alapuolelle +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Teollisuudelle '{STRING}' ei löytynyt sopivaa paikkaa +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Muuta kartan parametreja saadaksesi paremman kartan + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Rautatieasemaa ei voi rakentaa. STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Linja-autoasemaa ei voi rakentaa. @@ -4120,14 +4218,14 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Liian l STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Asemaa ei voi nimetä uudelleen. STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... kaupunki omistaa tien STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tie on väärin päin -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... läpiajettavissa pysäkeissä ei voi olla kulmia +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... läpiajettavissa pysäkeissä ei voi olla mutkia STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... läpiajettavissa pysäkeissä ei voi olla risteyksiä # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Aseman osaa ei voi poistaa... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Poista asema ensin STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Linja-autoasemaa ei voida poistaa... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kuorma-auto asemaa ei voida poistaa... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Lastauslaituria ei voida poistaa... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Ei voi poistaa asemaa. STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Ei voi poistaa rahtiasemaa. STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Pysäkki täytyy poistaa ensin @@ -4220,7 +4318,7 @@ STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... se p STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... veteen ei voi rakentaa. STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ei voida rakentaa merelle STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ei voida rakentaa kanaaliin -STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ei voida rakentaa jokeen +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ei voida rakentaa joelle STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Kanava täytyy purkaa ensin STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Tähän ei voi rakentaa akveduktia... @@ -4235,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Silta pi STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ei voi aloittaa ja lopettaa samasta paikkasta. STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Sillan päät eivät ole samalla korkeudella STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Silta on liian matalalla maastoa varten +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Silta on liian korkea tähän maastoon. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Alku- ja päätepisteen pitää olla linjassa. STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... sillan molempien päiden pitää sijaita maalla. STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... silta liian pitkä @@ -4261,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... omis STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ei voi luoda ryhmää. STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Ryhmää ei voi poistaa. STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Ryhmää ei voi nimetä. +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Pääryhmää ei voi määrittää... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ryhmän kaikkia ajoneuvoja ei voi poistaa. STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ei voi lisätä ajoneuvoa ryhmään. STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ei voi lisätä jaettuja ajoneuvoja ryhmään. @@ -4322,7 +4422,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Kulkuneu STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Aloita peli {DATE_SHORT} jälkeen tai käytä NewGRF:ää joka tarjoaa aikaisempia kulkuneuvoja # Specific vehicle errors -STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Junaa ei voi pakottaa jatkamaan opastimen ohi vaaratilanteessa... +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Junaa ei voi pakottaa jatkamaan punaisen opastimen ohi... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Junan suuntaa ei voi kääntää... STR_ERROR_TRAIN_START_NO_POWER :Junalla ei ole voimaa @@ -4377,10 +4477,10 @@ STR_BASEMUSIC_NONE_DESCRIPTION :Musiikkipaketti # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Korkea toimistorakennus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Tomistorakennus -STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Pientaloalue +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Pieni kerrostalo STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirkko STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Suuri toimistorakennus -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Kaupungintalot +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Kaupunkitalot STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotelli STR_TOWN_BUILDING_NAME_STATUE_1 :Patsas STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Suihkulähde @@ -4419,7 +4519,7 @@ STR_INDUSTRY_NAME_OIL_REFINERY :Öljynjalostamo STR_INDUSTRY_NAME_OIL_RIG :Öljylautta STR_INDUSTRY_NAME_FACTORY :Tehdas STR_INDUSTRY_NAME_PRINTING_WORKS :Kirjapaino -STR_INDUSTRY_NAME_STEEL_MILL :Teräsvalimo +STR_INDUSTRY_NAME_STEEL_MILL :Terästehdas STR_INDUSTRY_NAME_FARM :Maatila STR_INDUSTRY_NAME_COPPER_ORE_MINE :Kuparikaivos STR_INDUSTRY_NAME_OIL_WELLS :Öljykenttä @@ -4495,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (höyry) @@ -4520,7 +4620,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (sähk STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (sähkö) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Matkustajavaunu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postivaunu -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kivihiilivaunu +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Hiilivaunu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Öljyvaunu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Karjavaunu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Tavaravaunu @@ -4589,7 +4689,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Tavaravaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Viljavaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Raakapuuvaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Malmivaunu -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Teräskela +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Teräskelavaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Panssaroitu vaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Ruokavaunu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Paperivaunu @@ -4704,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug -m STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-matkustajalautta STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate-rahtilaiva STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell-rahtilaiva -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover-rahtilaiva +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover-rahtilaiva STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut-rahtilaiva STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (piilotettu) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/french.txt b/src/lang/french.txt index 73efd4f0ef..938b4980ae 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Boisson gazeuse # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passager{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passager{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de charbon -STR_QUANTITY_MAIL :{COMMA} sac{P "" s} posta{P l ux} +STR_QUANTITY_MAIL :{COMMA}{NBSP}sac{P "" s} posta{P l ux} STR_QUANTITY_OIL :{VOLUME_LONG} de pétrole -STR_QUANTITY_LIVESTOCK :{COMMA} tête{P "" s} de bétail -STR_QUANTITY_GOODS :{COMMA} caisse{P "" s} de biens +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}tête{P "" s} de bétail +STR_QUANTITY_GOODS :{COMMA}{NBSP}caisse{P "" s} de biens STR_QUANTITY_GRAIN :{WEIGHT_LONG} de céréales STR_QUANTITY_WOOD :{WEIGHT_LONG} de bois STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de minerai de fer STR_QUANTITY_STEEL :{WEIGHT_LONG} d'acier -STR_QUANTITY_VALUABLES :{COMMA} sac{P "" s} d'objets de valeur +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}sac{P "" s} d'objets de valeur STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de cuivre STR_QUANTITY_MAIZE :{WEIGHT_LONG} de maïs STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fruits -STR_QUANTITY_DIAMONDS :{COMMA} sac{P "" s} de diamants +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sac{P "" s} de diamants STR_QUANTITY_FOOD :{WEIGHT_LONG} de nourriture STR_QUANTITY_PAPER :{WEIGHT_LONG} de papier -STR_QUANTITY_GOLD :{COMMA} sac{P "" s} d'or +STR_QUANTITY_GOLD :{COMMA}{NBSP}sac{P "" s} d'or STR_QUANTITY_WATER :{VOLUME_LONG} d'eau STR_QUANTITY_WHEAT :{WEIGHT_LONG} de blé STR_QUANTITY_RUBBER :{VOLUME_LONG} de caoutchouc STR_QUANTITY_SUGAR :{WEIGHT_LONG} de sucre -STR_QUANTITY_TOYS :{COMMA} jouet{P "" s} -STR_QUANTITY_SWEETS :{COMMA} sac{P "" s} de bonbons +STR_QUANTITY_TOYS :{COMMA}{NBSP}jouet{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sac{P "" s} de bonbons STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de barbe à papa STR_QUANTITY_BUBBLES :{COMMA} bulle{P "" s} @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passager{P "" s} -STR_BAGS :{COMMA} sac{P "" s} -STR_TONS :{COMMA} tonne{P "" s} -STR_LITERS :{COMMA} litre{P "" s} -STR_ITEMS :{COMMA} unité{P "" s} -STR_CRATES :{COMMA} caisse{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}passager{P "" s} +STR_BAGS :{COMMA}{NBSP}sac{P "" s} +STR_TONS :{COMMA}{NBSP}tonne{P "" s} +STR_LITERS :{COMMA}{NBSP}litre{P "" s} +STR_ITEMS :{COMMA}{NBSP}unité{P "" s} +STR_CRATES :{COMMA}{NBSP}caisse{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Bleu foncé @@ -200,28 +200,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp STR_UNITS_POWER_METRIC :{COMMA}{NBSP}ch STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tonne{P "" s} courte{P "" s} +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonne{P "" s}{NBSP}courte{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonne{P "" s} STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litre{P "" s} STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings @@ -249,6 +249,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barre de STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barre de défilement - Fait défiler la liste horizontalement STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Démolir les constructions sur un carré de terrain.{}Ctrl pour sélectionner en diagonale.{}Shift pour afficher seulement le coût estimé. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Montrer les cachés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Montrer les cachés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Montrer les cachés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Montrer les cachés + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}En activant ce bouton, les véhicules ferroviaires cachés sont également affichés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}En activant ce bouton, les véhicules routiers cachés sont également affichés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}En activant ce bouton, les navires cachés sont également affichés +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}En activant ce bouton, les aéronefs cachés sont également affichés + # Query window STR_BUTTON_DEFAULT :{BLACK}Défaut STR_BUTTON_CANCEL :{BLACK}Annuler @@ -362,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Quitter ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Options du Jeu -STR_SETTINGS_MENU_CONFIG_SETTINGS :Configuration avancée +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Paramètres STR_SETTINGS_MENU_SCRIPT_SETTINGS :Configuration des scripts STR_SETTINGS_MENU_NEWGRF_SETTINGS :Paramètres NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Options de transparence @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Afficher/Cacher STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Activer/Désactiver la colorisation des blocs foireux ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1er STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1er +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -811,13 +840,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} est en attente au dépôt STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} est en attente au hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} a trop peu d'ordres dans son itinéraire STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} a un ordre vide STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} a des ordres en double STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} a une station invalide dans ses ordres -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} a dans ses ordres un aéroport dont la piste est trop courte STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} devient vieux STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} devient très vieux @@ -900,10 +928,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Géorgien STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranien (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Véhicules routiers STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Choisir le côté de la route pour la conduite STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conduite à gauche @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalans STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sauvegarde automatique STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Sélectionner l'intervalle de temps entre les sauvegardes automatiques +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Désactivée STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Tous les mois STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Tous les 3 mois STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Tous les 6 mois STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Tous les 12 mois +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Langue STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sélectionner la langue à utiliser pour l'interface @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Résolut STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Sélectionner la résolution d'écran à utiliser STR_GAME_OPTIONS_RESOLUTION_OTHER :autre -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format de la copie d'écran -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Choisir le format graphique de la copie d'écran +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Taille d'interface +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Choisir la taille d'élément d'interface à utiliser + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Taille double +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Taille quadruple STR_GAME_OPTIONS_BASE_GRF :{BLACK}Graphiques de base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Sélectionner les graphiques de base à utiliser @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Sélecti STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fichier{P "" s} corrompu{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informations additionnelles sur la musique de base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Échec de la récupération de la liste des résolutions prises en charge STR_ERROR_FULLSCREEN_FAILED :{WHITE}Échec du mode plein écran # Custom currency window @@ -1050,6 +1081,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Très plat STR_TERRAIN_TYPE_FLAT :Plat STR_TERRAIN_TYPE_HILLY :Collinaire STR_TERRAIN_TYPE_MOUNTAINOUS :Montagneux +STR_TERRAIN_TYPE_ALPINIST :Alpin STR_CITY_APPROVAL_PERMISSIVE :Laxiste STR_CITY_APPROVAL_TOLERANT :Tolérante @@ -1057,8 +1089,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostile STR_WARNING_NO_SUITABLE_AI :{WHITE}Aucune IA utilisable...{}Vous pouvez télécharger diverses IA via le système de «{NBSP}Contenu en ligne{NBSP}». -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Options avancées +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Paramètres STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtre{NBSP}: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Tout développer STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Tout réduire @@ -1071,21 +1103,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Paramètre de j STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Paramètre de compagnie (enregistré dans les sauvegardes{NBSP}; affecte uniquement les nouvelles parties) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Paramètre de compagnie (enregistré dans la sauvegarde{NBSP}; affecte uniquement la compagnie actuelle) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Afficher{NBSP}: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restreint la liste ci-dessous en ne montrant que les paramètres modifiés -STR_CONFIG_SETTING_RESTRICT_BASIC :Options de base -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Options avancées -STR_CONFIG_SETTING_RESTRICT_ALL :Paramètres expert / Tous les paramètres +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Catégorie{NBSP}: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type{NBSP}: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restreint la liste ci-dessous en utilisant des filtres prédéfinis +STR_CONFIG_SETTING_RESTRICT_BASIC :Basique (n'afficher que les paramètres importants) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancé (afficher la plupart des paramètres) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (afficher tous les paramètres, même les plus bizarres) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Paramètres avec une valeur différente du défaut STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Paramètres avec une valeur différente des paramètres de nouvelle partie STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restreint la liste ci-dessous à certains types de paramètres -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tous les paramètres +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tous les types de paramètres STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Paramètres du client (ne sont pas enregistrés dans les sauvegardes{NBSP}; affectent toutes les parties) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paramètres de jeu (enregistrés dans les sauvegardes{NBSP}; affectent uniquement les nouvelles parties) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paramètres de jeu (enregistrés dans les sauvegardes{NBSP}; affectent uniquement la partie actuelle) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paramètres de compagnie (enregistrés dans les sauvegardes{NBSP}; affectent uniquement les nouvelles parties) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paramètres de compagnie (enregistrés dans les sauvegardes{NBSP}; affectent uniquement la compagnie actuelle) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}la {SILVER}catégorie {BLACK}sur {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}le {SILVER}type {BLACK}sur {WHITE}tous les types +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}la{SILVER}catégorie {BLACK}sur {WHITE}{STRING} {BLACK}et le{SILVER} type {BLACK}sur {WHITE}tous les types +STR_CONFIG_SETTINGS_NONE :{WHITE}- Aucun - STR_CONFIG_SETTING_OFF :Désactivé STR_CONFIG_SETTING_ON :Activé @@ -1126,9 +1163,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activer/Désact STR_CONFIG_SETTING_CITY_APPROVAL :Attitude du conseil municipal envers la restructuration de la zone{NBSP}: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Définit comment le bruit et les dommages environnementaux des compagnies affectent leur réputation et leurs prochaines actions de constructions dans la zone -STR_CONFIG_SETTING_BUILDONSLOPES :Construction côtière et sur pentes{NBSP}: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Si activé, les voies et les stations peuvent être construites sur la plupart des pentes. Si désactivé, elles sont autorisées uniquement sur les pentes correspondant à la direction de la voie et ne requérant pas de fondations. -STR_CONFIG_SETTING_AUTOSLOPE :Terrassement sous les bâtiments, voies, etc. (Autoslope){NBSP}: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altitude maximum de la carte{NBSP}: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Définir l'altitude maximum autorisée pour les montagnes sur la carte +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Vous ne pouvez pas régler l'altitude maximum de la carte sur cette valeur. Au moins une montagne sur la carte est plus haute +STR_CONFIG_SETTING_AUTOSLOPE :Terrassement sous les bâtiments, voies, etc.{NBSP}: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Autoriser le terrassement sous les bâtiments et les voies sans les retirer STR_CONFIG_SETTING_CATCHMENT :Autoriser des zones de desserte plus réalistes{NBSP}: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Les zones de desserte ont des tailles différentes selon les types de stations et d'aéroports @@ -1152,16 +1190,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Interdire aux t STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Les virages à 90° se produisent lorsqu'une voie horizontale est directement suivie par une voie verticale, impliquant que le train tourne de 90° en traversant la bordure de la case au lieu des 45° habituels pour les autres combinaisons de voies.{}S'applique également à la rotation des navires. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permettre de joindre des stations non adjacentes{NBSP}: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Autoriser l'ajout à une station de morceaux ne touchant pas directement les morceaux existants. Un Ctrl-clic est requis pour placer les nouveaux morceaux. -STR_CONFIG_SETTING_IMPROVEDLOAD :Utiliser l'algorithme amélioré de chargement{NBSP}: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Si activé, les différents véhicules attendant à une station sont chargés successivement. Le chargement du véhicule suivant démarre quand il y a assez de marchandises pour complètement remplir le premier véhicule. -STR_CONFIG_SETTING_GRADUAL_LOADING :Charger les véhicules graduellement{NBSP}: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Charger graduellement les véhicules en utilisant les durées de chargement spécifiques aux véhicules, au lieu de tout charger en une fois avec une durée fixe dépendant uniquement de la quantité de marchandises chargée. STR_CONFIG_SETTING_INFLATION :Inflation{NBSP}: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activer l'inflation dans l'économie, où les coûts augmentent légèrement plus vite que les revenus. -STR_CONFIG_SETTING_SELECTGOODS :Livrer la cargaison seulement sur demande{NBSP}: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Livrer la marchandise uniquement à une station où un véhicule prêt à la charger s'est arrêté. Cela permet d'éviter d'avoir une mauvaise qualité de service pour les marchandises qui ne sont pas prises en charge par la station. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longueur maximum des ponts{NBSP}: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Longueur maximum pour la construction des ponts +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altitude maximum des ponts{NBSP}: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altitude maximum pour construire des ponts STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longueur maximum des tunnels{NBSP}: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Longueur maximum pour la construction des tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Méthode de construction manuelle des industries primaires{NBSP}: {STRING} @@ -1187,8 +1221,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Endroit du quai STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :{G=f}queue STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :{G=m}milieu STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :{G=f}tête -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Mise en file des véhicules routiers (+ effets quantiques){NBSP}: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Les véhicules routiers attendront à l'entrée des arrêts occupés jusqu'à ce qu'ils ne le soient plus STR_CONFIG_SETTING_AUTOSCROLL :Faire défiler la vue quand le pointeur est au bord{NBSP}: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Si activé, les vues commenceront a défiler quand la souris sera proche des bords de la fenêtre STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Désactivé @@ -1219,10 +1251,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Autoriser les a STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Autoriser la construction des arrêts de bus sur les routes des municipalités STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Autoriser les arrêts de bus sur les routes des concurrents{NBSP}: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Autoriser la construction des arrêts de bus sur les routes d'autres compagnies -STR_CONFIG_SETTING_ADJACENT_STATIONS :Autoriser la construction de stations adjacentes{NBSP}: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Autoriser des stations différentes à se toucher -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Utiliser plusieurs NewGRF de véhicules{NBSP}: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Option de compatibilité pour les anciens NewGRFs. Ne pas désactiver, à moins de savoir exactement ce que vous faites{NBSP}! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Il n'est pas possible de modifier ce paramètre quand il y a des véhicules STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Entretien de l'infrastructure{NBSP}: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Si activé, les infrastructures entraineront des coût d'entretien. Le coût augmente proportionnellement à la taille du réseau, affectant les grosses compagnies plus que les petites @@ -1253,35 +1281,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Temps d'afficha STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durée pour l'affichage des messages d'erreur dans une fenêtre rouge. Noter que certains messages d'erreur (critique) ne sont pas fermés automatiquement après ce délai, mais doivent être fermés manuellement STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} seconde{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Affichage des infobulles{NBSP}: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Délai avant que les infobulles soient affichées lorsque la souris survole certains éléments de l'interface. Les infobulles peuvent également être affectées au bouton droit de la souris -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Survoler pendant {COMMA} seconde{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Délai avant que les infobulles soient affichées lorsque la souris survole certains éléments de l'interface. Les infobulles peuvent également être affectées au bouton droit de la souris en réglant cette valeur à 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Survoler pendant {COMMA} milliseconde{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Clic droit STR_CONFIG_SETTING_POPULATION_IN_LABEL :Afficher la population d'une ville dans son label{NBSP}: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Afficher la population des villes dans leur label sur la carte STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Épaisseur des lignes dans les graphiques{NBSP}: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Épaisseur de la ligne dans les graphiques. Une ligne fine est lisible plus précisément, une ligne épaisse est plus facile à voir et les couleurs sont plus facile à distinguer +STR_CONFIG_SETTING_LANDSCAPE :Paysage{NBSP}: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Les paysages définissent les scénarios de jouabilité classique avec différentes marchandises et exigences pour la croissance des villes. Les NewGRFs et les scripts de jeux autorisent cependant un contrôle plus fin STR_CONFIG_SETTING_LAND_GENERATOR :Générateur de terrain{NBSP}: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Le générateur original dépend des graphiques de base, et compose des zones de paysage fixes. TerraGenesis est un générateur basé sur le bruit de Perlin avec des paramètres de contrôle plus fins STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Type de terrain{NBSP}: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Vallonnement du paysage +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densité des industries{NBSP}: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Définit combien d'industries doivent être générée et quel niveau doit être maintenu pendant la partie STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distance maximum depuis les bords pour les raffineries{NBSP}: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Les raffineries pétrolières ne sont construites que près du bord de la carte, ou sur la côte pour les cartes d'îles. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitude d'enneigement{NBSP}: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rugosité du terrain (TerraGenesis seulement){NBSP}: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Contrôle à quelle altitude la neige commence dans le climat sub-arctique.La neige affecte aussi la génération des industries et les exigences pour la croissance des villes +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rugosité du terrain{NBSP}: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choisir la fréquence des collines{NBSP}: Les paysages doux ont des collines moins nombreuses et plus éloignées. Les paysages rudes ont beaucoup de collines, ce qui peut sembler répétitif STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Très lisse STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lisse STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rugueux STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Très rugueux +STR_CONFIG_SETTING_VARIETY :Distribution de variété{NBSP}: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis seulement) Contrôle si la carte contient à la fois de la montagne et du terrain plat. Comme cela rend seulement la carte plus plate, les autres paramètres doivent être définis sur montagneux +STR_CONFIG_SETTING_RIVER_AMOUNT :Quantité de rivières{NBSP}: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choisir combien de rivières générer STR_CONFIG_SETTING_TREE_PLACER :Algorithme de placement des arbres{NBSP}: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Choisir la distribution des arbres sur la carte{NBSP}: 'Original' répartit les arbres uniformément, 'Amélioré' les plante en groupes STR_CONFIG_SETTING_TREE_PLACER_NONE :Aucun STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Amélioré +STR_CONFIG_SETTING_ROAD_SIDE :Véhicules routiers{NBSP}: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Choisir le côté de circulation STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotation de la carte d'altitude{NBSP}: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Anti-horaire STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Horaire STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Le terrain d'un scénario plat a pour altitude{NBSP}: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Autoriser le terrassement sur les bords de la carte{NBSP}: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Si désactivé, les bords de la carte seront toujours de l'océan. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Une ou plusieurs cases sur le bord Nord ne sont pas vides STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Une ou plusieurs cases sur l'un des bords ne sont pas de l'eau @@ -1302,7 +1344,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Défilement ré STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Contrôle comment la vue principale défile jusqu'à une position spécifique lors d'un clic sur la mini-carte ou pour atteindre un objet précis sur la carte. Si activé, la vue défile doucement, si désactivé elle saute directement à la cible STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montrer une infobulle de mesure lors de l'utilisation de divers outils de construction{NBSP}: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Affiche les distances et les différences de hauteur lors des opérations de construction -STR_CONFIG_SETTING_LIVERIES :Affichage des livrées des compagnies{NBSP}: {STRING} +STR_CONFIG_SETTING_LIVERIES :Affichage des livrées spécifiques aux types de véhicules{NBSP}: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Contrôle l'utilisation des livrées spécifiques au type de véhicule (ou, au contraire, celles spécifiques à la compagnie) STR_CONFIG_SETTING_LIVERIES_NONE :Aucune STR_CONFIG_SETTING_LIVERIES_OWN :Propre compagnie @@ -1332,17 +1374,15 @@ 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_AUTOSAVE :Sauvegarde automatique{NBSP}: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Sélectionner l'intervalle de temps entre les sauvegardes automatiques + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Utiliser le format de date {STRING} pour le nom des sauvegardes STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format de la date dans les noms des fichiers de sauvegarde STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :Long (31 Déc 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :Court (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Palette utilisée par défaut si non spécifiée par les NewGRFs{NBSP}: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Palette à utiliser par défaut pour les NewGRFs qui ne précisent pas laquelle il nécessite -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Palette DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Palette Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pause automatique en début de nouvelle partie{NBSP}: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Lorsqu'il est activé, la partie sera mise en pause automatiquement au démarrage, afin de permettre une étude approfondie de la carte STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Actions autorisées pendant la pause{NBSP}: {STRING} @@ -1351,7 +1391,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Aucune STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Toutes hors construction STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Toutes sauf celles modifiant le terrain STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Toutes -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utiliser la liste de véhicules avancée{NBSP}: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utiliser les groupes dans la liste de véhicules{NBSP}: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Active l'utilisation des listes de véhicule avancées pour grouper les véhicules STR_CONFIG_SETTING_LOADING_INDICATORS :Utiliser les indicateurs de chargement{NBSP}: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Choisir si les indicateurs de chargement doivent être affichés au dessus des véhicules qui chargent ou déchargent @@ -1366,7 +1406,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Type de rail à STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Premier disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Dernier disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Le plus utilisé -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Afficher les voies réservées{NBSP}: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Afficher les réservations de chemin sur les voies{NBSP}: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Donne une couleur différente aux voies réservées pour aider à résoudre les problèmes de trains refusant d'entrer dans des blocs basés sur le chemin STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Conserver les outils de construction actifs après usage{NBSP}: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Garde les outils de construction de ponts, tunnels, etc. ouverts après usage @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Les intervalles STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choisir si l'entretien des véhicule est activé par le temps passé depuis le dernier entretien ou par la fiabilité passant sous un pourcentage de la fiabilité maximum STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalle d'entretien par défaut pour les trains{NBSP}: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Défini l'intervalle d'entretien par défaut des nouveaux véhicules ferroviaires, si aucun intervalle d'entretien n'est définit pour le véhicule -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} jour{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}jour{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Désactivé STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalle d'entretien par défaut pour les véhicules routiers{NBSP}: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Défini l'intervalle d'entretien par défaut des nouveaux véhicules routiers, si aucun intervalle d'entretien n'est définit pour le véhicule @@ -1440,35 +1480,35 @@ STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Lorsqu'il est a STR_CONFIG_SETTING_DISABLE_ELRAILS :Désactiver les rails électriques{NBSP}: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Activer ce paramètre désactive le besoin d'avoir des voies électrifiées pour faire rouler des engins électriques -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Arrivée du premier véhicule dans la station du joueur: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Arrivée du premier véhicule dans la station du joueur{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Afficher un journal quand le premier véhicule arrive à une nouvelle station de la compagnie -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arrivée du premier véhicule dans la station d'un concurrent: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arrivée du premier véhicule dans la station d'un concurrent{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Afficher un journal quand le premier véhicule arrive à une nouvelle station d'un concurrent -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / Catastrophes: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / Catastrophes{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Afficher un journal quand des accidents ou des catastrophes se produisent -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informations corporatives: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informations corporatives{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Afficher un journal quand une nouvelle compagnie débute, ou quand des compagnies risquent la banqueroute -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Ouvertures d'industries: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Ouvertures d'industries{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Afficher un journal quand une industrie ouvre -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fermetures d'industries: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fermetures d'industries{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Afficher un journal quand une industrie ferme -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Changements économiques: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Changements économiques{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Afficher un journal au sujet des changements globaux de l'économie -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Changements de production des industries desservies par la compagnie: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Changements de production des industries desservies par la compagnie{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Afficher un journal lors du changement du niveau de production des industries desservies par la compagnie -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Changements de production des industries desservies par les concurrents: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Changements de production des industries desservies par les concurrents{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Afficher un journal lors du changement du niveau de production des industries desservies par les concurrents -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Changements de production des industries non desservies: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Changements de production des industries non desservies{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Afficher un journal lors du changement du niveau de production des industries qui ne sont desservies ni par la compagnie, ni par les concurrents -STR_CONFIG_SETTING_NEWS_ADVICE :Conseils / Informations sur les véhicules de la compagnie: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE :Conseils / Informations sur les véhicules de la compagnie{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Afficher les messages au sujet des véhicules requérant une attention -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nouveaux véhicules: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nouveaux véhicules{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Afficher un journal quand un nouveau type de véhicule devient disponible -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Changements d'acceptation de marchandises: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Changements d'acceptation de marchandises{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Afficher les messages au sujet des stations changeant l'acceptation de certaines marchandises -STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventions: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventions{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Afficher un journal au sujet des événements relatifs aux subventions -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informations générales: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informations générales{NBSP}: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Afficher le journal au sujet des événements généraux, comme l'achat de droits exclusifs ou le financement de la reconstruction des routes STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Aucun @@ -1516,7 +1556,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Autoriser les v STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Autoriser la construction des passages à niveau par les villes{NBSP}: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activer ce paramètre pour autoriser les villes à construire des passages à niveau STR_CONFIG_SETTING_NOISE_LEVEL :Permettre plus d'aéroports par ville, selon les nuisances sonores{NBSP}: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Avec ce paramètre désactivé, il peut y avoir deux aéroports dans chaque ville. Avec ce paramètre désactivé, le nombre d'aéroports dans une ville est limité par le bruit qu'elle accepte, celui-ci dépend de la population, de la taille de l'aéroport et de la distance +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Avec ce paramètre désactivé, il peut y avoir deux aéroports dans chaque ville. Avec ce paramètre activé, le nombre d'aéroports dans une ville est limité par le bruit qu'elle accepte, celui-ci dépend de la population, de la taille de l'aéroport et de la distance STR_CONFIG_SETTING_TOWN_FOUNDING :Fonder des villes en cours de jeu{NBSP}: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activer ce paramètre permet aux joueurs de fonder de nouvelles villes dans la partie STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Interdit @@ -1564,31 +1604,29 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 sur {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Aucune STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicateur initial pour la taille des métropoles{NBSP}: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Taille moyenne des métropoles par rapport aux villes normales au début de la partie -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Retirer les éléments absurdes lors de la construction des routes{NBSP}: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Supprime les voies sans issues pendant la reconstruction routière financée -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Réactualiser le graphique de la distribution tous les {STRING} jour{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Réactualiser le graphique de la distribution tous les {STRING}{NBSP}jour{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Intervalle entre la recalculation des liens du graphique. À chaque itération, une seule composante du graphique est recalculée. Donc, une valeur X pour ce réglage ne signifie pas que le graphique est réactualisé entièrement tous les X jours. Plus l'intervalle est court, plus de temps CPU est nécessaire pour la recalculation. Plus il est long, et plus de temps sera nécessaire pour que la distribution s'effectue sur de nouvelles routes. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Prendre {STRING} jour{P 0:2 "" s} pour recalculer le graphe de distribution +STR_CONFIG_SETTING_LINKGRAPH_TIME :Prendre {STRING}{NBSP}jour{P 0:2 "" s} pour recalculer le graphe de distribution STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Durée maximale (en jours) de la réactualisation d'une composante du graphique. À chaque itération, un thread est initié, qui a une durée maximale définie par ce réglage. Plus celui-ci est court, plus la probabilité que le thread ne termine pas sa tâche à temps est élevée. Le jeu s'interrompt alors jusqu'à la fin de la recalculation ("lag"). Plus le réglage est long, et moins rapidement la distribution sera réactualisée en cas de changement de routes. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymétrique STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symétrique -STR_CONFIG_SETTING_DISTRIBUTION_PAX :Type de distribution pour les passagers: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Type de distribution pour les passagers{NBSP}: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symétrique" signifie qu'autant de passagers iront d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'un nombre arbitraire de passagers peut être envoyé dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour les passagers. -STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Type de distribution pour le courrier: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Type de distribution pour le courrier{NBSP}: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symétrique" signifie qu'autant de courrier ira d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de courrier peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour le courrier. -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Type de distribution pour les cargaisons de classe ARMOURED: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Type de distribution pour les cargaisons de classe ARMOURED{NBSP}: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de cargaison ARMOURED contient des biens de valeur dans les climats tempéré, des diamants dans le climat subtropical, et de l'or dans le climat subarctique. Les NewGRFs peuvent changer ça. "symétrique" signifie qu'autant de ces cargaisons iront d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de ces cargaisons peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour ces cargaisons. Il est conseillé de choisir "asymétrique" ou "manuel" dans le climat subarctique, car les banques n'enverront pas d'or en retour vers les mines d'or. Dans les climats tempéré et subtropical, on peut choisir aussi "symétrique", car les banques peuvent renvoyer en retour des biens de valeurs aux banques qui en envoient à l'origine. -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symétrique" signifie qu'autant de cargaison ira d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison. Le mieux ici est logiquement de choisir "asymétrique" ou "manuel". -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Précision de la distribution: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison{NBSP}: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Précision de la distribution{NBSP}: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Plus ce réglage est élevé, plus la réactualisation du graphique de distribution occupe de temps CPU. S'il est trop élevé, cela peut produire de la latence ("lag"). Au contraire, plus la valeur est basse, plus la distribution sera imprécise et l'on risque de voir des cargaisons ne pas aller vers la destination attendue. -STR_CONFIG_SETTING_DEMAND_DISTANCE :Effet de la distance sur la demande: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :Effet de la distance sur la demande{NBSP}: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si cette valeur est supérieure à 0, la distance entre la station d'origine A d'une cargaison et une possible destination B a un impact sur la quantité de cargaison envoyée de A vers B. Plus la distance est grande entre les deux, moins de cargaison sera envoyée. Plus cette valeur est élevée, moins de cargaison sera envoyée vers des stations lointaines, et plus vers les stations plus proches. -STR_CONFIG_SETTING_DEMAND_SIZE :Quantité de cargaison renvoyée en mode symétrique: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Quantité de cargaison renvoyée en mode symétrique{NBSP}: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Définir ici une valeur inférieure à 100% rapproche le comportement de la distribution symétrique de celui d'une distribution asymétrique. Moins de cargaison sera envoyée en retour de celle envoyée par une autre. Si cette valeur est réglée à 0% la distribution devient totalement asymétrique. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation des chemins courts avant utilisation des chemins à forte capacité: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation des chemins courts avant utilisation des chemins à forte capacité{NBSP}: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Il y a souvent plusieurs routes possibles entre deux stations. Cargodist s'efforce d'utiliser d'abord le chemin le plus court jusqu'à saturation, ensuite les chemins un peu moins courts, et ainsi de suite. La saturation est déterminée par une estimation de la capacité et de la fréquentation prévue. Une fois que tous les chemins sont saturés, s'il y a encore une demande, il va surcharger tous les chemins, en privilégiant ceux à plus haute capacité. Mais la plupart du temps, la capacité n'est pas évaluée précisément. Ce réglage permets de spécifier jusqu'à quel pourcentage un chemin court doit être initialement saturé avant de passer au prochain chemin moins court. Il vaut mieux le régler à moins de 100% pour éviter que les stations soient surchargées en cas de surestimation de la capacité. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unité de vitesse{NBSP}: {STRING} @@ -1622,32 +1660,34 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrique (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unité de hauteur{NBSP}: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quand des hauteurs sont affichées dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quand une hauteur est affichée dans l'interface utilisateur, utiliser l'unité sélectionnée STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impérial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrique (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphiques +STR_CONFIG_SETTING_SOUND :{ORANGE}Son +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Général +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vues +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Informations / Annonces +STR_CONFIG_SETTING_COMPANY :{ORANGE}Compagnie +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Comptabilité STR_CONFIG_SETTING_VEHICLES :{ORANGE}Véhicules -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Économie -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribution des cargaisons +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physique +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routage +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Catastrophes / Accidents +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Création du terrain +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environnement +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autorités +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Villes +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribution des marchandises STR_CONFIG_SETTING_AI :{ORANGE}Compétiteurs -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Options d'affichage -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction -STR_CONFIG_SETTING_SOUND :{ORANGE}Effets sonores -STR_CONFIG_SETTING_NEWS :{ORANGE}Journaux et messages -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaux -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Gestion des cargaisons STR_CONFIG_SETTING_AI_NPC :{ORANGE}Intelligence artificielle -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Renouvellement automatique -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Entretien -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routage -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trains -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Villes -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industries STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1696,7 +1736,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Mode mul STR_INTRO_GAME_OPTIONS :{BLACK}Options STR_INTRO_HIGHSCORE :{BLACK}Meilleurs scores -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Options avancées +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Paramètres STR_INTRO_NEWGRF_SETTINGS :{BLACK}Paramètres NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Vérifier le contenu en ligne STR_INTRO_SCRIPT_SETTINGS :{BLACK}Configuration des scripts @@ -1716,7 +1756,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Sélecti STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Afficher les options du jeu STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Afficher le tableau des meilleurs scores -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Afficher les options avancées +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Afficher les paramètres STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Afficher la configuration des NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Vérifier les contenus nouveaux ou mis à jour téléchargeables STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Afficher la configuration des scripts @@ -1756,6 +1796,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jouer e STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magique (enlèvement des industries et des objets fixes){NBSP}: {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Les tunnels peuvent se croiser{NBSP}: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Les jets ne s'écraseront plus (aussi fréquemment) sur les petits aéroports{NBSP}: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Modifier l'altitude maximum de la carte{NBSP}: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Modifier l'altitude maximum des montagnes sur la carte STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Environnement «{NBSP}Tempéré{NBSP}» STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Environnement «{NBSP}Arctique{NBSP}» STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Environnement «{NBSP}Tropical{NBSP}» @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Tramway pour fr STR_FACE_CAPTION :{WHITE}Sélection du visage STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuler le choix du nouveau visage STR_FACE_OK_TOOLTIP :{BLACK}Valider le nouveau visage +STR_FACE_RANDOM :{BLACK}Nouvelle amorce STR_FACE_MALE_BUTTON :{BLACK}Homme STR_FACE_MALE_TOOLTIP :{BLACK}Choisir un visage masculin @@ -1924,13 +1967,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protége STR_NETWORK_START_SERVER_UNADVERTISED :Non STR_NETWORK_START_SERVER_ADVERTISED :Oui STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients max.{NBSP}: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients maximum{NBSP}: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'être remplis STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compagnie{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. compagnies{NBSP}: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Nombre de compagnies maximum{NBSP}: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limiter le serveur à un certain nombre de compagnies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectateur{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. spectateurs{NBSP}: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Nombre de spectateurs maximum{NBSP}: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limiter le serveur à un certain nombre de spectateurs STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Langue utilisée{NBSP}: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Les autres joueurs sauront quelle langue est parlée sur ce serveur @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectateurs STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Entrer le montant que vous voulez donner +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectateur # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne pas sauver le mot de passe entré @@ -2272,7 +2316,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construire un dépôt ferroviaire (pour acheter et entretenir des trains).{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Construire un point de contrôle sur les rails.{}Ctrl pour joindre des points de contrôle entre eux.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construire une gare.{}Ctrl pour joindre des stations entre elles.{}Shift pour afficher seulement le coût estimé. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construire des signaux.{}Ctrl pour inverser le type des signaux (sémaphore/lumineux).{}Faire glisser pour construire le long d'une section de voie linéaire.{}Ctrl-glisser pour construire des signaux jusqu'à la prochaine jonction.{}Ctrl-clic pour inverser le mode d'ouverture de la fenêtre de sélection des signaux.{}Shift pour afficher seulement le coût estimé. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construire des signaux. Ctrl pour inverser le type des signaux (sémaphore/lumineux).{}Faire glisser pour construire le long d'une section de voie linéaire.{}Ctrl-glisser pour construire des signaux jusqu'à la prochaine jonction ou le prochain signal{}Ctrl-clic pour inverser le mode d'ouverture de la fenêtre de sélection des signaux.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construire un pont ferroviaire.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construire un tunnel ferroviaire.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alterner entre construire et retirer des voies, des signaux, des points de contrôle et des gares.{}Ctrl pour retirer également la voie lors du retrait des points de contrôle et des gares. @@ -2547,6 +2591,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF{N STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargaison acceptée{NBSP}: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vitesse limite de la voie{NBSP}: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vitesse limite de la route{NBSP}: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Roches @@ -2643,7 +2688,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-2013 L'équipe OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 L'équipe OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sauvegar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sauvegarder la partie en cours avec le nom choisi STR_SAVELOAD_LOAD_BUTTON :{BLACK}Charger STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Charger la partie sélectionnée +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Charger la carte d'altitude sélectionnée STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Détails STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Pas d'informations disponibles STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}{NBSP}: {WHITE}{STRING} @@ -2677,13 +2723,12 @@ STR_MAPGEN_BY :{BLACK}{NBSP}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nb. de villes{NBSP}: STR_MAPGEN_DATE :{BLACK}Date{NBSP}: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nb. d'industries{NBSP}: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitude maximum de la carte +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augmenter l'altitude maximum des montagnes sur la carte de 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Réduire l'altitude maximum des montagne sur la carte de 1 STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Alt. d'enneigement{NBSP}: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Augmenter l'altitude d'enneigement STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baisser l'altitude d'enneigement -STR_MAPGEN_RANDOM_SEED :{BLACK}Amorce{NBSP}: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Cliquer pour saisir une amorce -STR_MAPGEN_RANDOM :{BLACK}Nouvelle amorce -STR_MAPGEN_RANDOM_HELP :{BLACK}Modifier l'amorce utilisée pour la création du terrain STR_MAPGEN_LAND_GENERATOR :{BLACK}Générateur{NBSP}: STR_MAPGEN_TREE_PLACER :{BLACK}Ajout des arbres{NBSP}: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Type de terrain{NBSP}: @@ -2710,7 +2755,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nom de l STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Taille{NBSP}: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM}{NBSP}×{NBSP}{NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Entrer une amorce +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Modifier l'altitude maximum de la carte STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Modifier l'altitude d'enneigement STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifier l'année de départ @@ -2765,6 +2810,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Monter STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Monter le module NewGRF sélectionné dans la liste{NBSP}: cela réduit son influence relative (certains de ses paramètres sont plus susceptibles d'être écrasés par ceux équivalents provenant de modules situés plus bas dans la liste) STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Descendre STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Descendre le module NewGRF sélectionné dans la liste{NBSP}: cela augmente son influence relative (certains de ses paramètres sont moins susceptibles d'être écrasés par ceux équivalents provenant de modules situés plus bas dans la liste) +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Mettre à jour +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Mettre à jour les NewGRFs pour lesquels vous avez une version installée plus récente STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Une liste des modules NewGRF installés STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Changer les paramètres @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Module cor STR_NEWGRF_SETTINGS_DISABLED :{RED}Désactivé STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible avec cette version d'OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Sauvegarder la présélection +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liste des présélections disponibles, en sélectionner une pour la copier sous le nom de sauvegarde ci-dessous +STR_SAVE_PRESET_TITLE :{BLACK}Entrer un nom pour la présélection +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nom actuellement sélectionné pour la présélection à sauvegarder +STR_SAVE_PRESET_CANCEL :{BLACK}Annuler +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ne pas modifier la présélection +STR_SAVE_PRESET_SAVE :{BLACK}Sauvegarder +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Sauvegarder la présélection sous le nom actuellement sélectionné + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Modifier les paramètres NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fermer @@ -2812,14 +2869,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramèt # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alignement du sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite suivant -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Se rendre au prochain sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Se rendre au prochain sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant du dernier vers le premier STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Aller au sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Se rendre au sprite indiqué. Si ce n'est pas un sprite normal, aller au prochain sprite normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite précédent -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Se rendre au précédent sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Se rendre au précédent sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant du premier vers le dernier STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation du sprite actuellement séléctionné. L'alignement est ignoré lors de l'affichage de ce sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Déplacer le sprite, en modifiant les décalages X et Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Réinitialiser les relatifs +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Réinitialiser les décalages relatifs courants +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} (Absolu) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} (Relatif) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Choisir un sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Choisir un des sprites affichés sur l'écran @@ -2876,6 +2936,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Modules ma STR_NEWGRF_BROKEN :{WHITE}Le comportement du NewGRF "{0:STRING}" peut provoquer des erreurs de synchronisation et/ou des plantages STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Il a modifié l'état de wagon motorisé pour "{1:ENGINE}" en dehors du dépôt STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Il a modifié la longueur de véhicule pour "{1:ENGINE}" en dehors du dépôt +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Il a changé la capacité pour '{1:ENGINE}' hors d'un dépôt ou d'un réaménagement STR_BROKEN_VEHICLE_LENGTH :{WHITE}Le train "{VEHICLE}" appartenant à "{COMPANY}" a une longueur invalide. Cela est probablement dû à des problèmes avec des NewGRFs, et peut provoquer des erreurs de synchronisation ou planter le jeu. STR_NEWGRF_BUGGY :{WHITE}Le module NewGRF "{0:STRING}" fournit une information incorrecte @@ -2890,6 +2951,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Analyse des NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Analyse des NewGRFs. Cela peut prendre du temps... @@ -2927,8 +2991,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} livré STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (encore nécessaires) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (livrés) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}La ville croît {P 0 chaque "tous les"} {ORANGE}{COMMA}{BLACK} jour{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La ville croît {P 0 chaque "tous les"} {ORANGE}{COMMA}{BLACK} jour{P "" s} (financé) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}La ville croît {P 0 chaque "tous les"} {ORANGE}{COMMA}{BLACK}{NBSP}jour{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La ville croît {P 0 chaque "tous les"} {ORANGE}{COMMA}{BLACK}{NBSP}jour{P "" s} (financé) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}La ville {RED}ne croît pas{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Nuisances sonores en ville{NBSP}: {ORANGE}{COMMA}{BLACK} − max.{NBSP}: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrer la vue sur la ville. Ctrl-clic pour ouvrir une nouvelle vue sur la ville. @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informations STR_GOAL_QUESTION_CAPTION_WARNING :Attention STR_GOAL_QUESTION_CAPTION_ERROR :Erreur -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Annuler STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Non @@ -3007,6 +3071,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Redémarrer STR_GOAL_QUESTION_BUTTON_POSTPONE :Reporter STR_GOAL_QUESTION_BUTTON_SURRENDER :Abandonner STR_GOAL_QUESTION_BUTTON_CLOSE :Fermer +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subventions @@ -3027,6 +3092,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Précéd STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Aller à la page précédente STR_STORY_BOOK_NEXT_PAGE :{BLACK}Suivante STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Aller à la page suivante +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Référence d'objectif invalide # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nom des stations - Cliquer sur un nom pour centrer la vue principale sur la station. Ctrl-clic pour ouvrir une nouvelle vue sur la station. @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Pas de m # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}En attente{NBSP}: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} venant de {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} réservé au chargement) @@ -3059,10 +3124,10 @@ STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Cargaiso STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Regrouper par -STR_STATION_VIEW_WAITING_STATION :Station: En attente -STR_STATION_VIEW_WAITING_AMOUNT :Quantité: En attente -STR_STATION_VIEW_PLANNED_STATION :Station: Prévu -STR_STATION_VIEW_PLANNED_AMOUNT :Quantité: Prévu +STR_STATION_VIEW_WAITING_STATION :Station{NBSP}: En attente +STR_STATION_VIEW_WAITING_AMOUNT :Quantité{NBSP}: En attente +STR_STATION_VIEW_PLANNED_STATION :Station{NBSP}: Prévu +STR_STATION_VIEW_PLANNED_AMOUNT :Quantité{NBSP}: Prévu STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} depuis {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} par {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} vers {STATION} @@ -3285,12 +3350,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Véhicules rout STR_GROUP_DEFAULT_SHIPS :Navires non groupés STR_GROUP_DEFAULT_AIRCRAFTS :Aéronefs non groupés -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groupes - Cliquer sur un groupe pour lister tous les véhicules de ce groupe +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groupes - Cliquer sur un groupe pour lister tous les véhicules de ce groupe. Glisser et déposer les groupes pour les hiérarchiser. STR_GROUP_CREATE_TOOLTIP :{BLACK}Créer un groupe de véhicules STR_GROUP_DELETE_TOOLTIP :{BLACK}Supprimer le groupe sélectionné STR_GROUP_RENAME_TOOLTIP :{BLACK}Renommer le groupe sélectionné STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Cliquer pour protéger ce groupe contre l'auto-remplacement global +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Supprimer un groupe +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Êtes-vous sûr de vouloir supprimer ce groupe et ses descendants{NBSP}? + STR_GROUP_ADD_SHARED_VEHICLE :Ajouter des véhicules partagés STR_GROUP_REMOVE_ALL_VEHICLES :Retirer tous les véhicules @@ -3328,10 +3396,10 @@ STR_PURCHASE_INFO_ALL_BUT :Tous sauf {CARG 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Choix du véhicule - Cliquer sur un véhicule pour obtenir des informations -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Choix du véhicule routier - Cliquer sur un véhicule pour obtenir des informations -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Choix du navire - Cliquer sur un navire pour obtenir des informations -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Choix de l'aéronef - Cliquer sur un aéronef pour obtenir des informations +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Choix du navire. Cliquer sur un navire pour obtenir des informations. Ctrl-clic pour basculer le masquage du type de navire +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Choix de l'aéronef. Cliquer sur un aéronef pour obtenir des informations. Ctrl-clic pour basculer le masquage du type d'aéronef STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Acheter STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Acheter @@ -3353,6 +3421,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renommer STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renommer le type de navire STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renommer le type d'aéronef +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Cacher +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Cacher +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Cacher +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Cacher + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Afficher +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Afficher +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Afficher +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Afficher + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Basculer cacher/afficher le type de véhicule ferroviaire +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Basculer cacher/afficher le type de véhicule routier +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Basculer cacher/afficher le type de navire +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Basculer cacher/afficher le type d'aéronef + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renommer le type de véhicule ferroviaire STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renommer le type de véhicule routier STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renommer type de navire @@ -3457,6 +3540,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Véhicule routi STR_REPLACE_VEHICLE_SHIP :Navire STR_REPLACE_VEHICLE_AIRCRAFT :Aéronef +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Véhicules utilisés +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Colonne avec les véhicules que vous possédez +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Véhicules disponibles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Colonne avec les véhicules disponibles pour le remplacement + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Choisir le type de véhicule à remplacer STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Choisir le nouveau type de véhicule devant remplacer celui sélectionné à gauche @@ -3581,7 +3669,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacit STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Crédits de transfert{NBSP}: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle d'entretien{NBSP}: {LTBLUE}{COMMA} jours{BLACK} − Dernier entretien{NBSP}: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle d'entretien{NBSP}: {LTBLUE}{COMMA}{NBSP}jours{BLACK} Dernier entretien{NBSP}: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalle d'entretien{NBSP}: {LTBLUE}{COMMA}{NBSP}%{BLACK} − Dernier entretien{NBSP}: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Augmenter l'intervalle d'entretien de 10.{}Ctrl-clic pour l'augmenter de 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Diminuer l'intervalle d'entretien de 10.{}Ctrl-clic pour le diminuer de 5. @@ -3679,8 +3767,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Modifier STR_ORDER_REFIT :{BLACK}Réaménager STR_ORDER_REFIT_TOOLTIP :{BLACK}Choisir pour quelle cargaison réaménager avec cet ordre.{}Ctrl-clic pour retirer l'instruction de réaménagement. -STR_ORDER_REFIT_AUTO :{BLACK}Réaménagement automatique -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Sélectionner pour quel type de cargaison cet ordre va réaménager automatiquement.{}Ctrl-Clic pour retirer l'instruction de réaménagement. Le réaménagement automatique ne sera fait que si le véhicule l'autorise. +STR_ORDER_REFIT_AUTO :{BLACK}Réaménagement aux stations +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Sélectionner pour quel type de cargaison cet ordre va réaménager.{}Ctrl-Clic pour retirer l'instruction de réaménagement. Le réaménagement aux stations ne sera fait que si le véhicule l'autorise. STR_ORDER_DROP_REFIT_AUTO :Cargaison fixée STR_ORDER_DROP_REFIT_AUTO_ANY :Cargaison disponible @@ -3771,18 +3859,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ne pas déchar STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ne pas décharger et attendre pleine charge pour un seul type) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ne pas décharger et ne pas charger) -STR_ORDER_AUTO_REFIT :(Réaménager automatiquement pour {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Charger complétement avec réaménagement automatique pour {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Charger complétement pour un seul type avec réaménagement automatique pour {STRING}) -STR_ORDER_UNLOAD_REFIT :(Décharger et charger avec réaménagement automatique pour {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Décharger et attendre pleine charge avec réaménagement automatique pour {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Décharger et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transférer et charger avec réaménagement automatique pour {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transférer et attendre pleine charge avec réaménagement automatique pour {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transférer et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Ne pas décharger et charger avec réaménagement automatique pour {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne pas décharger et attendre pleine charge avec réaménagement automatique pour {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne pas décharger et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING}) +STR_ORDER_AUTO_REFIT :(Réaménager pour {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Charger complétement avec réaménagement pour {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Charger complétement pour un seul type avec réaménagement pour {STRING}) +STR_ORDER_UNLOAD_REFIT :(Décharger et charger avec réaménagement pour {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Décharger et attendre pleine charge avec réaménagement pour {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Décharger et attendre pleine charge pour un seul type avec réaménagement pour {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transférer et charger avec réaménagement pour {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transférer et attendre pleine charge avec réaménagement pour {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transférer et attendre pleine charge pour un seul type avec réaménagement pour {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Ne pas décharger et charger avec réaménagement pour {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne pas décharger et attendre pleine charge avec réaménagement pour {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne pas décharger et attendre pleine charge pour un seul type avec réaménagement pour {STRING}) STR_ORDER_AUTO_REFIT_ANY :cargaison disponible @@ -3808,13 +3896,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horaire STR_TIMETABLE_NO_TRAVEL :Pas de voyage STR_TIMETABLE_NOT_TIMETABLEABLE :Voyager (automatique{NBSP}; horaire au prochain ordre manuel) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Voyager (sans horaire) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Déplacement à {2:VELOCITY} max. (non planifié) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Voyager (non planifié) à {2:VELOCITY} max. STR_TIMETABLE_TRAVEL_FOR :Voyager pendant {STRING} -STR_TIMETABLE_TRAVEL_FOR_SPEED :Déplacement de {STRING} à {VELOCITY} max. +STR_TIMETABLE_TRAVEL_FOR_SPEED :Voyager pendant {STRING} à {VELOCITY} max. +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Voyager (pendant {STRING}, non planifié) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Voyager (pendant {STRING}, non planifié) à {VELOCITY} max. +STR_TIMETABLE_STAY_FOR_ESTIMATED :(rester pendant {STRING}, non planifié) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(voyager pendant {STRING}, non planifié) STR_TIMETABLE_STAY_FOR :et rester pendant {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :et voyager pendant {STRING} -STR_TIMETABLE_DAYS :{COMMA} jour{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}jour{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Cet horaire prendra {STRING} pour s'achever STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Cet horaire prendra au moins {STRING} pour s'achever (horaire incomplet) @@ -3940,6 +4032,8 @@ STR_AI_SETTINGS_START_DELAY :Nombre de jours STR_TEXTFILE_README_CAPTION :{WHITE}Lisez-moi du module {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Journal des modifications pour le module {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licence du module {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Retour à la ligne automatique +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Insérer des retours à la ligne dans le texte de la fenêtre afin qu'il s'affiche entièrement sans faire défiler STR_TEXTFILE_VIEW_README :{BLACK}Voir le Lisez-moi STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Journal des modifications STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence @@ -4050,6 +4144,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}L'excava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... déjà au niveau de la mer STR_ERROR_TOO_HIGH :{WHITE}... trop élevé STR_ERROR_ALREADY_LEVELLED :{WHITE}... déjà à niveau +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Le pont au dessus de lui serait ensuite trop haut. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Impossible de changer le nom de compagnie... @@ -4076,7 +4171,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... trop STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... trop près d'une autre ville STR_ERROR_TOO_MANY_TOWNS :{WHITE}... trop de villes STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... il n'y a plus d'emplacement sur la carte -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La ville ne construira pas de routes. Vous pouvez activer la construction des routes sous Options avancées->Économie->Villes +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La ville ne construira pas de routes. Vous pouvez activer la construction des routes sous Paramètres->Environnement->Villes STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Route en travaux STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Impossible de supprimer cette ville...{}Une station ou un dépôt fait référence à cette ville ou une propriété municipale ne peut pas être supprimée. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... aucun emplacement convenable disponible pour une statue dans ce centre-ville @@ -4100,6 +4195,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... les STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... peut seulement être construit au dessus de l'altitude d'enneigement STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... peut seulement être construit en dessous de l'altitude d'enneigement +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Il n'y avait pas d'emplacements appropriés pour les industries '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Modifier les paramètres de la génération de la carte pour obtenir une meilleure carte + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Impossible de construire la gare ici... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Impossible de construire un arrêt d'autobus... @@ -4236,6 +4334,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Vous dev STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Impossible de commencer et de terminer au même endroit STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Les extrémités du pont ne sont pas au même niveau STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Le pont est trop bas pour le terrain +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Le pont est trop haut pour ce terrain. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Le début et la fin doivent être alignés STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... les deux extrémités du pont doivent être sur la terre ferme STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... pont trop long @@ -4262,6 +4361,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... il v STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossible de créer le groupe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossible de supprimer ce groupe... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossible de renommer le groupe... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossible de définir le groupe parent... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Impossible de retirer tous les véhicules de ce groupe... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossible d'ajouter le véhicule à ce groupe... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Impossible d'ajouter les véhicules partagés à ce groupe... @@ -4317,6 +4417,8 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Impossib STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... véhicule détruit +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Aucun véhicule ne sera disponible +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Modifier votre configuration NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Il n'y a pas encore de véhicules disponibles STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Commencer un nouvelle partie après {DATE_SHORT} ou utiliser un NewGRF qui propose des véhicules plus tôt @@ -4494,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapeur) @@ -4703,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Ferry de voyage STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Ferry de voyageurs Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Navire cargo Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Navire cargo Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navire cargo Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navire cargo MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Navire cargo Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4797,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (caché) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4832,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4844,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 4fb0882d2c..e9af51cf68 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -283,30 +283,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.dat :Deoch ghucagach # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} {P taistealach thaistealach taistealaich taistealach} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}{P taistealach thaistealach taistealaich taistealach} STR_QUANTITY_COAL :{WEIGHT_LONG} de ghual -STR_QUANTITY_MAIL :{COMMA} {P bhaga bhaga bagaichean baga} dhe phost +STR_QUANTITY_MAIL :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} dhe phost STR_QUANTITY_OIL :{VOLUME_LONG} dhe dh'ola -STR_QUANTITY_LIVESTOCK :{COMMA} dhe sprèidh -STR_QUANTITY_GOODS :{COMMA} {P chreata chreata creataichean creata} dhe bhathar +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}dhe sprèidh +STR_QUANTITY_GOODS :{COMMA}{NBSP}{P chreata chreata creataichean creata} dhe bhathar STR_QUANTITY_GRAIN :{WEIGHT_LONG} dhe ghràn STR_QUANTITY_WOOD :{WEIGHT_LONG} dhe dh'fhiodh STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} dhe chlach-iarainn STR_QUANTITY_STEEL :{WEIGHT_LONG} dhe stàilinn -STR_QUANTITY_VALUABLES :{COMMA} {P bhaga bhaga bagaichean baga} dhe sheilbh +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} dhe sheilbh STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} dhe chlach-chopair STR_QUANTITY_MAIZE :{WEIGHT_LONG} dhe chruithneachd Innseanach STR_QUANTITY_FRUIT :{WEIGHT_LONG} dhe mheasan -STR_QUANTITY_DIAMONDS :{COMMA} {P bhaga bhaga bagaichean baga} dhe dhaoimeanan +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} dhe dhaoimeanan STR_QUANTITY_FOOD :{WEIGHT_LONG} dhe bhiadh STR_QUANTITY_PAPER :{WEIGHT_LONG} dhe phàipear -STR_QUANTITY_GOLD :{COMMA} {P bhaga bhaga bagaichean baga} dhe dh'òr +STR_QUANTITY_GOLD :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} dhe dh'òr STR_QUANTITY_WATER :{VOLUME_LONG} dhe dh'uisge STR_QUANTITY_WHEAT :{WEIGHT_LONG} dhe chruithneachd STR_QUANTITY_RUBBER :{VOLUME_LONG} dhe rubair STR_QUANTITY_SUGAR :{WEIGHT_LONG} dhe shiùcar -STR_QUANTITY_TOYS :{COMMA} {P dèideag dhèideig dèideagan dèideag} -STR_QUANTITY_SWEETS :{COMMA} {P bhaga bhaga bagaichean baga} dhe mhìlseanan +STR_QUANTITY_TOYS :{COMMA}{NBSP}{P dèideag dhèideig dèideagan dèideag} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} dhe mhìlseanan STR_QUANTITY_COLA :{VOLUME_LONG} dhe chola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} dhe chanach-siùcair STR_QUANTITY_BUBBLES :{COMMA} {P bhuilgean bhuilgean builgeanan builgean} @@ -353,12 +353,12 @@ STR_ABBREV_NONE :{TINY_FONT}Gun STR_ABBREV_ALL :{TINY_FONT}Uile # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} {P taistealach thaistealach taistealaich taistealach} -STR_BAGS :{COMMA} {P bhaga bhaga bagaichean baga} -STR_TONS :{COMMA} {P tunna thunna tunnaichean tunna} -STR_LITERS :{COMMA} {P liotair liotair liotairean liotair} -STR_ITEMS :{COMMA} {P nì nì nithean nì} -STR_CRATES :{COMMA} {P chreat chreat creataichean creat} +STR_PASSENGERS :{COMMA}{NBSP}{P taistealach thaistealach taistealaich taistealach} +STR_BAGS :{COMMA}{NBSP}{P bhaga bhaga bagaichean baga} +STR_TONS :{COMMA}{NBSP}{P tunna thunna tunnaichean tunna} +STR_LITERS :{COMMA}{NBSP}{P liotair liotair liotairean liotair} +STR_ITEMS :{COMMA}{NBSP}{P nì nì nithean nì} +STR_CRATES :{COMMA}{NBSP}{P chreat chreat creataichean creat} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Gorm @@ -379,37 +379,37 @@ STR_COLOUR_GREY :Liath STR_COLOUR_WHITE :Geal # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} {P tunna thunna tunnaichean tunna} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} {P tunna thunna tunnaichean tunna} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}{P tunna thunna tunnaichean tunna} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}{P tunna thunna tunnaichean tunna} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} {P ghalan ghalan galanan galan} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} {P liotair liotair liotairean liotair} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}{P ghalan ghalan galanan galan} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}{P liotair liotair liotairean liotair} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Sreang criathraige: @@ -436,6 +436,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bàr sgr STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bàr sgrolaidh - sgrolaich gu deas/gu clì air an liosta STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Leag togalaichean agus msaa. air ceàrnag dhe thìr. Taghaidh Ctrl an roinn gu trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Seall an fheadhainn fhalaichte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Seall an fheadhainn fhalaichte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Seall an fheadhainn fhalaichte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Seall an fheadhainn fhalaichte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ma chuireas tu am putan seo an comas, thèid na carbadan-rèile falaichte a shealltainn cuideachd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ma chuireas tu am putan seo an comas, thèid na carbadan-rathaid falaichte a shealltainn cuideachd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ma chuireas tu am putan seo an comas, thèid na longan falaichte a shealltainn cuideachd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ma chuireas tu am putan seo an comas, thèid na carbadan-adhair falaichte a shealltainn cuideachd + # Query window STR_BUTTON_DEFAULT :{BLACK}Bunaiteach STR_BUTTON_CANCEL :{BLACK}Sguir dheth @@ -549,7 +560,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Fàg an-seo ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Roghainnean a' gheama -STR_SETTINGS_MENU_CONFIG_SETTINGS :Roghainnean adhartach +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Roghainnean STR_SETTINGS_MENU_SCRIPT_SETTINGS :Roghainnean IF/sgriobt geama STR_SETTINGS_MENU_NEWGRF_SETTINGS :Roghainnean NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Roghainnean trìd-shoilleireachd @@ -658,7 +669,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toglaich bogsai STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toglaich dathadh nam blocaichean salach ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1ad STR_ORDINAL_NUMBER_2ND :2na STR_ORDINAL_NUMBER_3RD :3a @@ -674,22 +685,40 @@ STR_ORDINAL_NUMBER_12TH :12na STR_ORDINAL_NUMBER_13TH :13s STR_ORDINAL_NUMBER_14TH :14mh STR_ORDINAL_NUMBER_15TH :15mh -STR_ORDINAL_NUMBER_16TH :16mh -STR_ORDINAL_NUMBER_17TH :17mh -STR_ORDINAL_NUMBER_18TH :18mh -STR_ORDINAL_NUMBER_19TH :19mh -STR_ORDINAL_NUMBER_20TH :20mh -STR_ORDINAL_NUMBER_21ST :21ad -STR_ORDINAL_NUMBER_22ND :22na -STR_ORDINAL_NUMBER_23RD :23s -STR_ORDINAL_NUMBER_24TH :24mh -STR_ORDINAL_NUMBER_25TH :25mh -STR_ORDINAL_NUMBER_26TH :26mh -STR_ORDINAL_NUMBER_27TH :27mh -STR_ORDINAL_NUMBER_28TH :28mh -STR_ORDINAL_NUMBER_29TH :29mh -STR_ORDINAL_NUMBER_30TH :30mh -STR_ORDINAL_NUMBER_31ST :31mh +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1ad +STR_DAY_NUMBER_2ND :2na +STR_DAY_NUMBER_3RD :3a +STR_DAY_NUMBER_4TH :4mh +STR_DAY_NUMBER_5TH :5mh +STR_DAY_NUMBER_6TH :6mh +STR_DAY_NUMBER_7TH :7mh +STR_DAY_NUMBER_8TH :8mh +STR_DAY_NUMBER_9TH :9mh +STR_DAY_NUMBER_10TH :10mh +STR_DAY_NUMBER_11TH :11ad +STR_DAY_NUMBER_12TH :12na +STR_DAY_NUMBER_13TH :13s +STR_DAY_NUMBER_14TH :14mh +STR_DAY_NUMBER_15TH :15mh +STR_DAY_NUMBER_16TH :16mh +STR_DAY_NUMBER_17TH :17mh +STR_DAY_NUMBER_18TH :18mh +STR_DAY_NUMBER_19TH :19mh +STR_DAY_NUMBER_20TH :20mh +STR_DAY_NUMBER_21ST :21ad +STR_DAY_NUMBER_22ND :22na +STR_DAY_NUMBER_23RD :23s +STR_DAY_NUMBER_24TH :24mh +STR_DAY_NUMBER_25TH :25mh +STR_DAY_NUMBER_26TH :26mh +STR_DAY_NUMBER_27TH :27mh +STR_DAY_NUMBER_28TH :28mh +STR_DAY_NUMBER_29TH :29mh +STR_DAY_NUMBER_30TH :30mh +STR_DAY_NUMBER_31ST :31mh ############ range for days ends ############ range for months starts @@ -796,10 +825,10 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Iomlan: STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}An àireamh dhe charbadan a rinn prothaid an-uiridh. Gabhaidh seo a-steach carbadan-rathaid, trèanaichean, longan is carbadan-adhair STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}An àireamh dhe stèiseanan a chaidh a fhrithealadh o chionn ghoirid. théid stèiseanan rèile, stèiseanan bus, stadan bus, puirt-adhair is mar sin air adhart a chunntadh fa leth fiù ’s ma bhuineas iad ris an aon stèisean STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Am prothaid aig a' charbad leis an teachd a-steach as lugha (cha tèid sùil a thoirt ach air carbadan a tha co-dhiù dà bhliadhna a dh'aois) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd san ràith leis a' phrothaid as lugha am measg an dusan ràith mu dheireadh -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd san ràidh leis a' phrothaid as motha am measg an dusan ràith mu dheireadh -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Na h-aonadan dhe charago air an lìbhrigeadh sna ceithir ràithean mu dheireadh -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}An àireamh dhe sheòrsaichean carago a chaidh a lìbhrigeadh san ràith mu dheireadh +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd sa chairteal leis a' phrothaid as lugha am measg an dusan cairteal mu dheireadh +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd sa chairteal leis a' phrothaid as motha am measg an dusan cairteal mu dheireadh +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Na h-aonadan dhe charago air an lìbhrigeadh sna ceithir cairtealan dheireadh +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}An àireamh dhe sheòrsaichean carago a chaidh a lìbhrigeadh sa chairteal mu dheireadh STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}An t-airgead a tha aig a' chompanaidh seo sa bhanca STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}An t-airgead a tha aig a' chompanaidh mar iosad STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Na puingean iomlan a-mach às na puingean comasach @@ -934,8 +963,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Seall a STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toglaich sealladh a' mhapa-àirde STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Na seall seilbh nan companaidh air a' mhapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Seall a h-uile sealbh nan companaidh air a' mhapa -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Na seall carago sam bith air a' mhapa -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Seall na h-uile carago air a' mhapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Na seall carago sam bith air a’ mhapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Seall na h-uile carago air a’ mhapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Seall am brath no aithisg naidheachd mu dheireadh @@ -994,7 +1023,7 @@ STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Tha duilgheadasan solair ag adhbharachadh gun do dh'ainmich {STRING} gun tèid a {G 0 dùnadh dhùnadh} a dh'aithghearr! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Tha dìth chraobhan faisg {G 0 air oirre} ag adhbharachadh gun do dh'ainmich {STRING} gun tèid a {G 0 dùnadh dhùnadh} a dh'aithghearr! -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Aonadh Airgid na h-Eòrpa!{}{}Tha an t-Eòro ga chur air bhog mar an t-aon airgeadra airson tar-ghnìomhan cumanta san dùthaich agad! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Aonadh Airgid na h-Eòrpa!{}{}Tha an t-Eòro ga chur air bhog mar an aon airgeadra airson tar-ghnìomhan cumanta san dùthaich agad! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Crìonadh eaconamaidh an t-saoghail!{}{}tha eagal air na h-eòlaichean ionmhais gu bheil dubh staing romhainn le crìonadh an eaconamaidh! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Crìonadh an eaconamaidh seachad!{}{}Tha meudachadh na malairt a' cur earbsa sna gnìomhachasan le neartachadh an eaconamaidh! @@ -1012,13 +1041,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tha {VEH STR_NEWS_SHIP_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa chala STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Chan eil òrduighean gu leòr air a' chlàr-ama aig {VEHICLE} STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Tha òrdugh falamh aig {VEHICLE} STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Tha òrdugh dùbailte aig {VEHICLE} STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Tha stèisean mì-dhligheach sna h-òrduighean aig {VEHICLE} -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}Tha port-adhair am measg nan òrduighean aig {VEHICLE} aig a bheil raon-laighe ro ghoirid STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Tha {VEHICLE} a' fàs aosta STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Tha {VEHICLE} a' fàs glè aosta @@ -1101,10 +1129,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Cairtbheil STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iorànach (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Carbadan-rathaid STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Tagh taobh an rathaid air a dhràibheas na carbadan STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Draibheadh air an taobh chlì @@ -1140,11 +1164,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalanach STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Fèin-shàbhaladh STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tagh dè cho tric ’s a thèid an geama fèin-shàbhaladh +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dheth STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3s mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6mh mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach bliadhna +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Cànan STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tagh cànan an eadar-aghaidh a chleachdas tu @@ -1156,8 +1182,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Dùmhlac STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Tagh dùmhlachd-bhreacaidh na sgrìn a chleachdas tu STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Fòrmat ghlacaidhean-sgrìn -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Tagh am fòrmat ghlacaidhean-sgrìn a chleachdas tu +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Meud na h-eadar-aghaidh +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Tagh am meud airson rud san eadar-aghaidh + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Àbhaisteach +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dà uiread a mheud +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Ceithir uiread a mheud STR_GAME_OPTIONS_BASE_GRF :{BLACK}Seata grafaigeachd bunasach STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu @@ -1173,6 +1203,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Tagh an STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} coirbte STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata chiùil bhunasach +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Cha deach leinn liosta dhe na dùmhlaidhean-breacaidh ris an cuirear taic fhaighinn STR_ERROR_FULLSCREEN_FAILED :{WHITE}Dh'fhàillig leis a' mhodh làn-sgrìn # Custom currency window @@ -1251,6 +1282,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Glè rèidh STR_TERRAIN_TYPE_FLAT :Rèidh STR_TERRAIN_TYPE_HILLY :Cnuic STR_TERRAIN_TYPE_MOUNTAINOUS :Beanntan +STR_TERRAIN_TYPE_ALPINIST :Mòr-bheanntan STR_CITY_APPROVAL_PERMISSIVE :Coibhneil STR_CITY_APPROVAL_TOLERANT :Ceadachail @@ -1258,8 +1290,8 @@ STR_CITY_APPROVAL_HOSTILE :Nàimhdeil STR_WARNING_NO_SUITABLE_AI :{WHITE}Chan eil IF freagarrach ri fhaighinn...{}’S urrainn dhut roghainn dhe IFan a luchdadh a-nuas leis an t-siostam “Susbaint air loidhne" -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Roghainnean adhartach +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Roghainnean STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sreang criathraige: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Leudaich a h-uile STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Co-theannaich a h-uile @@ -1272,21 +1304,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Roghainnean a' STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' chompanaidh seo) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Seall: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Cuingichidh seo an liosta gu h-ìosal gus nach tèid a shealltainn ach roghainnean air an atharrachadh -STR_CONFIG_SETTING_RESTRICT_BASIC :Roghainnean bunasach -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Roghainnean adhartach -STR_CONFIG_SETTING_RESTRICT_ALL :Roghainnean an eòlaiche / na h-uile roghainn +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Roinn-seòrsa: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Seòrsa: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Cuingichidh seo an liosta gu h-ìosal le criathradh ro-shocraichte +STR_CONFIG_SETTING_RESTRICT_BASIC :Bunasach (na seall ach roghainnean cudromach) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Adhartach (a’ mhòrchuid dhe na roghainnean) +STR_CONFIG_SETTING_RESTRICT_ALL :Eòlaiche (a h-uile roghainn, a’ gabhail a-steach an fheadhainn neònach) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Roghainnean le luach diofraichte bhon luach bhunaiteach STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Roghainnean le luach diofraichte bho luach nan geamannan ùra agad STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Cuingichidh seo an liosta gu h-ìosal gus nach tèid a shealltainn ach seòrsaichean sònraichte dhe roghainn -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Na h-uile roghainn +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Na h-uile seòrsa roghainn STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Roghainnean a' chliant (cha tèid an sàbhaladh le geamannan; buaidh air a h-uile geama) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' gheama seo) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' chompanaidh seo) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Seall na h-uile toradh luirg ’s tu a’ suidheachadh{}{SILVER}Roinn-seòrsa {BLACK}air {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Seall na h-uile toradh luirg ’s tu a’ suidheachadh{}{SILVER}Seòrsa {BLACK}air {WHITE}Gach seòrsa +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Seall na h-uile toradh luirg ’s tu a’ suidheachadh{}{SILVER}Roinn-seòrsa {BLACK}air {WHITE}{STRING} {BLACK}agus {SILVER}Seòrsa {BLACK}air {WHITE}Gach seòrsa +STR_CONFIG_SETTINGS_NONE :{WHITE}- Chan eil gin - STR_CONFIG_SETTING_OFF :Dheth STR_CONFIG_SETTING_ON :Air @@ -1327,9 +1364,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toglaich dunaid STR_CONFIG_SETTING_CITY_APPROVAL :Beachdan comhairle a' bhaile air leasachadh raointean: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Tagh am meud dhe dh'fhuaim is milleadh na h-àrainneachd le companaidhean a tha a dhìth mus bi buaidh air luachadh a' bhaile is barrachd togail san sgìre -STR_CONFIG_SETTING_BUILDONSLOPES :Ceadaich gun tèid togail air slèibhtean is an oirthir: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ma tha seo air, faodar slighean is stèiseanan a thogail air a' mhòr chuid dhe shlèibhtean. Ma tha seo dheth, chan fhaodar an togail ach air slèibhtean leis an aon chomhair ’s a tha aig an t-slighe is aig nach eil feum air bonn togalaich -STR_CONFIG_SETTING_AUTOSLOPE :Ceadaich atharrachadh crutha-tìre fo thogalaichean, slighean agus msaa. (fèin-sliabh): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Àirde as motha a’ mhapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Suidhich an àirde as motha aig beanntan a bhios ceadaichte air a’ mhapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Chan urrainn dhut àirde as motha a’ mhapa a shuidheachadh air an luach seo. Tha beinn air a’ mhapa a tha nas àirde. +STR_CONFIG_SETTING_AUTOSLOPE :Ceadaich atharrachadh crutha-tìre fo thogalaichean, slighean agus msaa.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ceadaich atharrachadh crutha-tìre fo thogalaichean is slighean gun a bhith gan toirt air falbh STR_CONFIG_SETTING_CATCHMENT :Ceadaich raointean tionail le meud a tha nas fhìor-riochdail: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Bi meud eadar-dhealaichte aig raointean tionail a-rèir seòrsa an stèisein no puirt-adhair @@ -1341,9 +1379,9 @@ STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} {P 0 le STR_CONFIG_SETTING_SMOKE_AMOUNT :Meud dhe smùid is sradan nan carbadan: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Suidhich an uiread dhe smùid no sradagan nan carbadan STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modail luathachaidh nan trèanaichean: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan trèanaichean. Cuiridh am modail “Tùsail” an t-aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca a leithid faide is spàirn tarraing +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan trèanaichean. Cuiridh am modail “Tùsail” an aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca a leithid faide is spàirn tarraing STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modail luathachaidh nan carbadan-rathaid: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan carbadan-rathaid. Cuiridh am modail “Tùsail” an t-aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca, mar eisimpleir “spàirn tarraing” +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan carbadan-rathaid. Cuiridh am modail “Tùsail” an aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca, mar eisimpleir “spàirn tarraing” STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Caisead nan slèibhtean airson trèanaichean: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Caisead aig na leacan slèibhe dha thrèanaichean. Nì luachan nas àirde an dìreadh nas dorra STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% @@ -1353,16 +1391,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Bac trèanaiche STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tachraidh tionndadh 90 nuair a bhios slighe còmhnard is inghearach dìreach an dèidh càch a chèile, mar sin bhiodh trèan a' tionndadh le 90 ceum nuair a ruigeas i oir na leacaige an àite nan tionndaidhean àbhaisteach le 45 ceum aig co-cheanglaidhean shlighean eile. Tha seo fìor airson rèideas tionndaidh nan longan cuideachd STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ceadaich aonadh aig stèiseanan nach eil dìreach ri taobh càch a chèile: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Ceadaich gun tèid pàirtean a chur ri stèisean nach eil dìreach ri taobh nam pàirtean a tha ann mu thràth. Feumaidh tu Ctrl+Briogadh a chleachdadh nuair a chuireas tu na pàirtean ùra ann -STR_CONFIG_SETTING_IMPROVEDLOAD :Cleachd algairim luchdaidh leasaichte: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ma tha seo air, thèid carbadan a bhios a' feitheamh aig stèisean a luchdadh an dèidh càch a chèile. Cha tòisich luchdadh an ath charbaid nuair a bhios carago gu leòr ann gus a' chiad charbad a lìonadh -STR_CONFIG_SETTING_GRADUAL_LOADING :Luchdaich carbadan beag air bheag: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Luchdaich carbadan beag air bheag is ùine an luchdaidh a' crochadh air seòrsa a' charbaid an àite a bhith a' luchdadh a h-uile rud aig an aon àm le ùine luchdaidh shuidhichte a tha a' crochadh air seòrsa a' charago a-mhàin STR_CONFIG_SETTING_INFLATION :Atmhorachd: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Cuir atmhorachd an comas san eaconamaidh is bidh cosgaisean a' dìreadh beagan nas luaithe na pàighidhean -STR_CONFIG_SETTING_SELECTGOODS :Na lìbhrig carago dha stèisean ach ma tha iarrtas ann: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Na lìbhrig carago dha stèisean ach ma chaidh iarraidh aig carbad a bhios a' luchdadh. Le seo, chan fhaigh thu rangachadh dona airson carago nach tèid a fhrithealadh aig an stèisean STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Faide as motha nan drochaidean: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Chan urrainn dhut drochaidean a thogail a tha nas fhaide na seo +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Àirde as motha dhrochaidean: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :An àirde as motha gus drochaidean a thogail STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Faide as motha nan tunailean: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Chan urrainn dhut tunail a thogail a tha nas fhaide na seo STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modh togail a làimh aig prìomh ghnìomhachasan: {STRING} @@ -1388,8 +1422,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tagh far an sta STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :toiseach STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meadhan STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ceann thall -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ciutha nan carbadan-rathaid (le èifeachdan quantum): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Thoir air carbad-rathaid stad air beulaibh stèiseanan rathaid sa bheil carbad eile gus am falbh am fear eile STR_CONFIG_SETTING_AUTOSCROLL :Panaich an uinneag nuair a bhios an luchag aig oir na sgrìn: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Nuair a bhios seo air, tòisichidh pùirt-seallaidh air sgroladh nuair a bhios an luchag faisg air oir na h-uinneige STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :À comas @@ -1420,10 +1452,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ceadaich stèis STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Ceadaich gun tèid stèiseanan ri taobh an rathaid a thogail air rathaidean a bhuineas ri baile STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Ceadaich stèiseanan ri taobh an rathaid air rathaidean a bhuineas ri co-fharpaisiche: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Ceadaich gun tèid stèiseanan ri taobh an rathaid a thogail air rathaidean a bhuineas ri companaidh eile -STR_CONFIG_SETTING_ADJACENT_STATIONS :Ceadaich togail stèiseanan ri taobh càch a chèile: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Ceadaich gum bean stèiseanan eadar-dhealaichte ri chèile -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Cuir seataidhean iomadach NewGRF an comas: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Roghainn co-chòrdalachd airson NewGRFan seana. Na cuir seo à comas mura h-eil thu eòlach air na tha thu a' dèanamh! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cha ghabh an roghainn seo atharrachadh nuair a bhios carbad ann STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cumail suas a' bhun-structair: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Nuair a bhios seo air, bidh cumail suas a' bhun-structair a' cosg airgid. Fàsaidh na cosgaisean nas luaithe na meud an lìonraidh, mar sin bheir an roghainn seo barrachd buaidh air companaidhean mòra @@ -1454,40 +1482,54 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :An ùine a mhai STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :An ùine a mhaireas brath mearachd ann an uinneag dearg. Thoir an aire nach dùin cuid dhe na brathan as cudromaiche leotha fhèin is gum feum thu an toirt air falbh a làimh. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} {P 0 diog dhiog diogan diog} STR_CONFIG_SETTING_HOVER_DELAY :Seall gliocasan-sgrìn: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Dèan dàil mus tèid gliocasan-sgrìn a shealltainn nuair a chumas mi an luchag os cionn eileamaid na h-eadar-aghaidh. Mar roghainn eile, gabhaidh gliocasan-sgrìn nasgadh ri putan deas na luchaige -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Cùm an luchag os a chionn fad {COMMA} {P 0 diog dhiog diogan diog} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Dèan dàil mus tèid gliocasan-sgrìn a shealltainn nuair a chumas mi an luchag os cionn eileamaid na h-eadar-aghaidh. Mar roghainn eile, thèid gliocasan-sgrìn nasgadh ri putan deas na luchaige ma chuireas tu an luach air 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Cùm an luchag os a chionn fad {COMMA} {P 0 mhille-dhiog mhille-dhiog mille-dhiogan mille-dhiog} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Briogadh deas STR_CONFIG_SETTING_POPULATION_IN_LABEL :Seall àireamh-shluaigh ann an leubail a' bhaile: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Seall àireamh-shluaigh aig bailtean san leubail aca air a' mhapa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tiughad nan loidhnichean ann an grafan: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Leud na loidhne ann an grafan. Gabhaidh loidhne thana fhaicinn nas pongaile ach tha loidhne thiugh nas fhasa fhaicinn is dathan nas fhasa a mhothachadh +STR_CONFIG_SETTING_LANDSCAPE :Cruth-tìre: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Mìnichidh cruthan-tìre cnàmh-sgeulan bunasach a’ gheama le carago ’s riatanasan fàs nam bailtean eadar-dhealaichte. Ceadaichidh NewGRF agus sgriobtaichean geama barrachd smachd co-dhiù STR_CONFIG_SETTING_LAND_GENERATOR :Gineadair tìre: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Tha an t-inneal-gintinn tùsail an eisimeil air an t-seata ghrafaigeachd thùsail agus cuiridh e cruthan stèidhichte ri chèile. Tha TerraGenesis ’na ghineadair stèidhichte air Perlin noise agus tha roghainnean smachd nas mionaidiche aige STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Tùsail STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Seòrsa a’ chrutha-thìre: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis a-mhàin) Pailteas nan cnoc +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Dlùths nan gnìomhachasan: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Suidhich an t-uiread dhe ghnìomhachasan a thèid a ghintinn ’s an ìre air a thèid an cumail rè a’ gheama STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Astar as motha eadar an oir is fìneadairean-ola: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Cha tèid fìneadairean-ola a thogail ach faisg air crìochan a' mhapa, seo an oirthir le mapaichean eilein STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Àirde an loidhne sneachda: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garbhachd a' chrutha-tìre (TerraGenesis a-mhàin): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Stiùirich an àirde air a thòisicheas an sneachd air tìr fho-artach. Bidh buaidh aig sneachd air gintinn nan gnìomhachasan agus riatanasan fàs nam bailtean +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garbhachd a' chrutha-tìre: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis a-mhàin) Tagh dè cho pailt a bhios cnuic: Bidh cnuic gann aig tìr rèidh. Bidh pailteas dhe chnuic air tìr gharbh agus coltas ath-aithriseil air, ’s dòcha STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Glè rèidh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Rèidh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garbh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Glè gharbh +STR_CONFIG_SETTING_VARIETY :Sgaoileadh caochlaidh: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis a-mhàin) Stiùirich am bi an dà chuid beanntan ’s tìr rèidh air a’ mhapa gus nach bi. O nach adhbharaich an roghainn seo ach tìr nas rèidhe, cuir na roghainnean eile air beanntan +STR_CONFIG_SETTING_RIVER_AMOUNT :Uiread nan aibhnean: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Tagh an t-uiread dhe h-aibhnean a thèid a ghintinn STR_CONFIG_SETTING_TREE_PLACER :Algairim ionad nan craobh: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Tagh sgaoileadh nan craobhan air a’ mhapa: Sgapaidh “Tùsail” na craobhan gu cunbhalach agus cuiridh “Leasaichte” ann am buidhnean iad STR_CONFIG_SETTING_TREE_PLACER_NONE :Chan eil gin STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Tùsail STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Leasaichte +STR_CONFIG_SETTING_ROAD_SIDE :Carbadan-rathaid: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Tagh an taobh air an draibhear STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Cuairteachadh a' mhapa-àirde: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tuathal STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Deiseil STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Ìre na h-àirde a bhios aig mapa cnàmh-sgeòil rèidh: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Cuir cruth-tìre nan leacan ri crìochan a' mhapa an comas: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ma tha seo dheth, bidh crìochan a' mhapa nan cuantan an-còmhnaidh STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Tha co-dhiù aon leac aig oir a tuath nach eil falamh STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Tha co-dhiù aon leac aig oir nach eil na uisge STR_CONFIG_SETTING_STATION_SPREAD :Sgaoileadh as motha aig stèisean: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :An raon as motha sa dh'fhaodas an t-aon stèisean a sgaoileadh. Thoir an aire gun dèan luachan mòra an geama nas slaodaiche +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :An raon as motha sa dh'fhaodas an aon stèisean a sgaoileadh. Thoir an aire gun dèan luachan mòra an geama nas slaodaiche STR_CONFIG_SETTING_SERVICEATHELIPAD :Càraich heileacoptairean gu fèin-obrachail aig puirt-heileacoptair: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Càraich heileacoptairean gach turas a thèid iad air tìr, fiù ’s mura h-eil hangar aig a' phort-adhair STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ceangail am bàr-inneal crutha-tìre ri bàraichean-inneal rèile/rathaid/uisge/puirt-adhair: {STRING} @@ -1503,7 +1545,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgroladh mìn n STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Tagh mar a ghluaiseas am prìomh-shealladh gu ionad sònraichte. Ma tha seo dheth, thèid leum dhan ionad a chaidh a thaghadh sa bhad STR_CONFIG_SETTING_MEASURE_TOOLTIP :Seall gliocasan-sgrìn tomhais le innealan togail: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Seall faide eadar leacan is diofar an àirde nuair a nì thu slaodadh fhad ’s a bhios tu a' togail rudeigin -STR_CONFIG_SETTING_LIVERIES :Seall dathan na companaidh: {STRING} +STR_CONFIG_SETTING_LIVERIES :Seall dathan a-rèir seòrsa a' charbaid: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stiùirich cleachdadh nan dathan a-rèir seòrsa a' charbaid (seach a-rèir na companaidh) STR_CONFIG_SETTING_LIVERIES_NONE :Na seall idir STR_CONFIG_SETTING_LIVERIES_OWN :Aig a' chompanaidh agam fhèin @@ -1533,17 +1575,15 @@ 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_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 + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Fòrmat cinn-latha {STRING} airson ainmean nan geamannan air an sàbhaladh STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Fòrmat a' chinn-latha ann an ainmean faidhle nan geamannan air an sàbhaladh STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :fada (31d Dùbh 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :goirid (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Pailead bunaiteach airson NewGRFan gun phailead aca fhèin: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pailead dhathan bunasach a thèid a chleachdadh le NewGRFan nach sònraich dè am fear a tha a dhìth -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Pailead DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Pailead Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Cuir geamannan air ùr-thòiseachadh nan stad gu fèin-obrachail: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Nuair a bhios seo air, stadaidh an geama gu fèin-obrachail nuair a thòisicheas tu geama ùr. Bheir seo cothrom dhut gus am mapa a sgrùdadh air do shocair STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Na tha ceadaichte nuair a bhios an geama na stad: {STRING} @@ -1552,7 +1592,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Na ceadaich gn STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :A h-uile gnìomh ach togail STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :A h-uile gnìomh ach atharrachadh a' chrutha-tìre STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Na h-uile gnìomh -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Cleachd liosta nan carbadan adhartach: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Cleachd buidhnean air liosta nan carbadan: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Cuir liostaichean adhartach nan carbadan an comas gus carbadan a chur ann am buidhnean STR_CONFIG_SETTING_LOADING_INDICATORS :Seall taisbeanairean luchdaidh: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Tagh an tèid taisbeanairean luchdaidh a shealltainn os cionn charbadan a bhios a' luchdadh no dì-luchdadh @@ -1567,7 +1607,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :An seòrsa rèi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Seòrsa as sine STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Seòrsa as ùire STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Ga chleachdadh mar as trice -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Seall slighean glèidhte: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Seall slighean-rèile glèidhte: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Cuiridh seo dath eile air slighean glèidhte gus cuideachadh le duilgheadasan gun diùlt trèan dol a-steach dha bhlocaichean stèidhichte air slighean STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Cùm innealan togail gnìomhach an dèidh an cleachdaidh: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Cùm na h-innealan togail airson drochaidean, tunailean agus msaa. fosgailte nuair a chaidh an cleachdadh @@ -1626,7 +1666,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tha tricead a' STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Tagh an tèid carbad a chur gus obair-chàraidh fhaighinn a-rèir an turais mu dheireadh a fhuair iad càradh air no nuair a bhios earbsachd air lùghdachadh le ceudad sònraichte dhen earbsachd as motha STR_CONFIG_SETTING_SERVINT_TRAINS :Tricead bunaiteach na h-obrach-càraidh air trèanaichean: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-rèile ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} {P 0 latha latha làithean latha}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 latha latha làithean latha}/% STR_CONFIG_SETTING_SERVINT_DISABLED :À comas STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Tricead bunaiteach na h-obrach-càraidh air carbadan-rathaid: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-rathaid ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid @@ -1765,90 +1805,90 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a-mach à {CO STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Chan eil gin STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Iomadaichear meud nam bailtean aig an toiseach: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Am meud cuibheasach dhe mhòr-bhailtean an coimeas ri bailtean àbhaisteach aig toiseach a' gheama -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Thoir air falbh eileamaidean-rathaid gun chiall nuair a thèid rathaid a thogail: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Thoir cùil-dhùinte nan rathaidean air falbh nuair a thèid togail rathaidean a mhaoineachadh -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Ùraich graf an sgaoilidh gach {STRING} {P 0:2 latha latha làithean latha} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Ùraich graf an sgaoilidh gach {STRING}{NBSP}{P 0:2 latha latha làithean latha} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :An ùine eadar dà ath-àireamhachadh dhe ghraf nan ceangal. Àireamhaichidh gach ath-àireamhachadh na planaichean airson co-phàirt dhen ghraf. Is ciall dha seo nach tèid an graf air fad ùrachadh gach X latha nuair a bhios an luach seo suidhichte air X, ach nach tèid ach co-phàirt ath-àireamhachadh. Mar as giorra a shuidhicheas tu e, ’s ann nas motha dhe ùine an CPU a bhios a dhìth airson an àireamhachadh. Mar as fhaide a shuidhicheas tu e, ’s ann nas fhaide a bheir e gus an tòisich sgaoileadh a' charago air slighean ùra. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Thoir {STRING} {P 0:2 latha latha làithean latha} airson graf an sgaoilidh ath-àireamhachadh +STR_CONFIG_SETTING_LINKGRAPH_TIME :Thoir {STRING}{NBSP}{P 0:2 latha latha làithean latha} airson graf an sgaoilidh ath-àireamhachadh STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :An ùine a bheir gach ath-àireamhachadh aig co-phàirt dhe ghraf nan ceangal. Nuair a thòisichear air ath-àireamhachadh, thèid sreath ùr a ghintinn a ruitheas fad na h-àireimh seo dhe làithean. Mar as giorra a shuidhicheas tu seo, ’s ann nas coltaiche a bhios e nach bi sreath deiseil nuair a bu chòir. Stadaidh an geama an uairsin gus am bidh an sreath deiseil (“dàil”). Mas as fhaide a shuidhicheas tu seo, ’s ann nas fhaide a bheir e gus an tèid an sgaoileadh ùrachadh nuair a dh'atharraicheas slighe. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :a làimh STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :neo-chothromach STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :co-chothromach STR_CONFIG_SETTING_DISTRIBUTION_PAX :Am modh sgaoilidh airson taistealaich: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Is ciall dha “co-chothromach” gun tèid cha mhòr an t-aon uiread dhe thaistealaich a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream dhe thaistealaich a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson taistealaich. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Is ciall dha “co-chothromach” gun tèid cha mhòr an aon uiread dhe thaistealaich a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream dhe thaistealaich a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson taistealaich. STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Am modh sgaoilidh airson post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Is ciall dha “co-chothromach” gun tèid cha mhòr an t-aon uiread dhe phost a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream dhe phost a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson post. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Is ciall dha “co-chothromach” gun tèid cha mhòr an aon uiread dhe phost a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream dhe phost a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson post. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Am modh sgaoilidh airson an t-seòrsa carago ARMAILTE: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Tha an seòrsa carago ARMAILTE a' gabhail a-steach seilbh fo gnàth-shìde mheasarra, daoimeanan fo gnàth-shìde fho-thropaigeach is òr fo gnàth-shìde fho-artach. Dh'fhaoidte gun atharraich NewGRF seo. Is ciall dha “co-chothromach” gun tèid cha mhòr an t-aon uiread dhe charago a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson a' charago ud. Cha chreid sinn nach eil thu airson seo a shuidheachadh air “neo-chothromach” no “a làimh” nuair a bhios tu a' cluich le cruth-tìre fo-artach on nach cuir bancaichean òr air ais gu mèinnean òir. Le cruth-tìre measarra no fo-thropaigeach, 's urrainn dhut “co-chothromach” a thaghadh cuideachd on a chuireas bancaichean seilbh air ais dhan bhanca eile. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Tha an seòrsa carago ARMAILTE a’ gabhail a-steach seilbh fo chruth-tìre measarra, daoimeanan fo chruth-tìre fo-thropaigeach is òr fo chruth-tìre fo-artach. Dh’fhaoidte gun atharraich NewGRF seo. Is ciall dha “co-chothromach” gun tèid timcheall an aon uireid dhe charago a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson a’ charago ud. Mholamaid gun suidhich thu seo air “neo-chothromach” no “a làimh” nuair a bhios tu a’ cluich le cruth-tìre fo-artach on nach cuir bancaicean òr air ais gu mèinnean òir. Le cruth-tìre measarra no fo-thropaigeach, ’s urrainn dhut “co-chothromach” a thaghadh cuideachd on a chuireas bancaichean seilbh air ais dhan bhanca eile. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Am modh sgaoilidh airson seòrsaichean eile dhe charago: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Is ciall dha “co-chothromach” gun tèid cha mhòr an t-aon uiread dhe charago a chur o stèisean A gu stèisean B ’s a thèid a chur o stèisean B gu stèisean A. Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson a' charago ud. Cha chreid sinn nach eil thu airson seo a shuidheachadh air “neo-chothromach” no “a làimh”. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Is ciall dha “neo-chothromach” gun tèid uiread air thuaiream a chur dhan dà chomhair. Is ciall dha “a làimh” nach tèid sgaoileadh fèin-obrachail sam bith a dhèanamh airson a' charago ud. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Pongalachd an sgaoilidh: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mar as àirde a shuidhicheas tu seo, ’s ann nas motha dhe dh'ùine CPU a bheir àireamhachadh air graf nan ceangal. Ma bhios seo a' toirt ro fhada, ’s dòcha gum mothaich thu dàil. Co-dhiù, ma shuidhicheas tu air luach ìseal e, cha bhi an sgaoileadh pongail is mothaichidh tu nach tèid carago a chur dhan àite an robh thu an dùil. STR_CONFIG_SETTING_DEMAND_DISTANCE :Am buaidh aig an t-astar air iarrtasan: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ma chuireas tu luach nas àirde na 0 ann, bidh buaidh aig an t-astar eadar an stèisean tùsail A aig carago air choireigin is stèisean cinn-uidhe B air a' mheud dhe charago a thèid a chur o A gu B. Mar as fhaide air falbh o B 's a tha A, 's ann as lugha dhe charago a thèid a chur. Mar as àirde a shuidhicheas tu an luach seo, 's ann as lugha dhe charago a thèid a chur gu stèiseanan a bhios fad air falbh agus 's ann as motha dhe charago a thèid a chur gu stèiseanan a tha faisg. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ma chuireas tu luach nas àirde na 0 ann, bidh buaidh aig an t-astar eadar an stèisean tùsail A aig carago air choireigin is stèisean cinn-uidhe B air a’ mheud dhe charago a thèid a chur o A gu B. Mar as fhaide air falbh o B ’s a tha A, ’s ann as lugha dhe charago a thèid a chur. Mar as àirde a shuidhicheas tu an luach seo, ’s ann as lugha dhe charago a thèid a chur gu stèiseanan a bhios fad air falbh agus ’s ann as motha dhe charago a thèid a chur gu stèiseanan a tha faisg. STR_CONFIG_SETTING_DEMAND_SIZE :Na thèid a thilleadh dhe charago leis a' mhodh co-chothromach: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ma shuidhicheas tu seo air nas lugha na 100%, bidh giùlan an sgaoilidh co-chothromaich nas coltaiche ris an sgaoileadh neo-chothromach. Cha tèid sparradh air an aon uiread dhe charago tilleadh ma tha uiread sònraichte dhe charago ga cur gu stèisean. Ma shuidhicheas tu seo air 0%, bidh an t-aon ghiùlan aig an dà chuid sgaoileadh co-chothromach is neo-chothromach. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ma shuidhicheas tu seo air nas lugha na 100%, bidh giùlan an sgaoilidh co-chothromaich nas coltaiche ris an sgaoileadh neo-chothromach. Cha tèid sparradh air an aon uiread dhe charago tilleadh ma tha uiread sònraichte dhe charago ga cur gu stèisean. Ma shuidhicheas tu seo air 0%, bidh an aon ghiùlan aig an dà chuid sgaoileadh co-chothromach is neo-chothromach. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Lìonadh nan slighean giorra mus tèid slighean le mòran ruim a chleachdadh: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Gu tric, tha iomadh slighe eadar dà stèisean ann. Lìonaidh an sgaoileadh carago an t-slighe as giorra an toiseach is an dàrna slighe as giorra an uairsin is mar sin air adhart. Thèid a mheasadh a bheil slighe làn gus nach eil le tuairmse air na ghabhas an t-slighe ris is air a' chleachdadh a th' air a' phlana. Nuair a bhios na h-uile slighe air an lìonadh is rum a dhìth fhathast, thèid luchd a bharrachd a chur air gach slighe is an fheadhainn aig a bheil mòran rum a thaghadh an toiseach. Co-dhiù, cha dèan an algairim tuairmse buileach ceart air an rum mar as trice. Leigidh an roghainn seo leat sònrachadh dè an ceudad aig slighe as giorra a thèid a cleachdadh sa chiad dol a-mach mus tèid an ath shlighe as fhaide a thaghadh. Dèan nas lugha na 100% e ach nach bidh na stèiseanan ro làn nuair a thèid rum a mheas ro mhòr. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Aonadan luaiths: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Nuair a thèid luaths a shealltainn san eadar-aghaidh, seall e sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Nuair a thèid luaths a shealltainn san eadar-aghaidh, seall e leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Impireil (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Meatrach (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Aonadan lùth carabaid: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Nuair a thèid lùth carabaid a shealltainn san eadar-aghaidh, seall e sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Nuair a thèid lùth carabaid a shealltainn san eadar-aghaidh, seall e leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Impireil (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Meatrach (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Aonadan cuideim: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Nuair a thèid cuideam a shealltainn san eadar-aghaidh, seall e sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Nuair a thèid cuideam a shealltainn san eadar-aghaidh, seall e leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Impireil (t ghoirid/tunna) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Meatrach (t/tunna) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Aonadan tomhais-lìonaidh: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Nuair a thèid tomhas-lìonaidh a shealltainn san eadar-aghaidh, seall e sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Nuair a thèid tomhas-lìonaidh a shealltainn san eadar-aghaidh, seall e leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Impireil (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Meatrach (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Aonadan spàirn tàirnge: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Nuair a thèid spàirn tàirnge a shealltainn san eadar-aghaidh, seall i sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Nuair a thèid spàirn tàirnge a shealltainn san eadar-aghaidh, seall i leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Impireil (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Meatrach (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Aonadan àirde: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Nuair a thèid àirde a shealltainn san eadar-aghaidh, seall i sna h-aonadan a thagh thu +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Nuair a thèid àirde a shealltainn san eadar-aghaidh, seall i leis na h-aonadan a thagh thu STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impireil (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meatrach (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Eadar-aghaidh STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Ionadaileadh -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Togail +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafaigeachd +STR_CONFIG_SETTING_SOUND :{ORANGE}Fuaim +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Eadar-aghaidh +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Coitcheann +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Puirt-sheallaidh +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Togail +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Comhairlean / Fiosrachadh +STR_CONFIG_SETTING_COMPANY :{ORANGE}Companaidh +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cunntasachd STR_CONFIG_SETTING_VEHICLES :{ORANGE}Carbadan -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stèiseanan -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Eaconamaidh -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Sgaoileadh carago +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fiosaigeachd +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Lorg shlighean +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Cuingeachaidhean +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Dunaidh / Tubaistean +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Gintinn saoghail +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Àrainneachd +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Ùghdarrasan +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bailtean +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gnìomhachasan +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Sgaoileadh carago STR_CONFIG_SETTING_AI :{ORANGE}Co-farpaisichean -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Taisbeanadh -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Eadar-ghnìomh -STR_CONFIG_SETTING_SOUND :{ORANGE}Èifeachdan fuaime -STR_CONFIG_SETTING_NEWS :{ORANGE}Naidheachdan is brathan -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Comharran -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Làimhseachadh carago STR_CONFIG_SETTING_AI_NPC :{ORANGE}Cluicheadairean coimpiutair -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Fèin-nuadhachadh -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Obair-ghlèidhidh -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Lorg shlighean -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trèanaichean -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bailtean -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Gnìomhachasan STR_CONFIG_SETTING_PATHFINDER_OPF :Tùsail STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1897,7 +1937,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Ioma-chl STR_INTRO_GAME_OPTIONS :{BLACK}Roghainnean a' gheama STR_INTRO_HIGHSCORE :{BLACK}Clàr nan sgòran àrda -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Roghainnean adhartach +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Roghainnean STR_INTRO_NEWGRF_SETTINGS :{BLACK}Roghainnean NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Susbaint air loidhne STR_INTRO_SCRIPT_SETTINGS :{BLACK}Roghainnean sgriobt IF/Geama @@ -1917,7 +1957,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Tagh an STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Seall roghainnean a' gheama STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Seall clàr nan sgòran àrda -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Seall na roghainnean adhartach +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Roghainnean an t-seallaidh STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Seall na roghainnean NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Thoir sùil airson susbainte ùire no air a h-ùrachadh ri luchdadh a-nuas STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Seall roghainnean sgriobt IF/geama @@ -1957,6 +1997,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}A' clui STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer draoidheach (thoir air falbh gnìomhachasan, oibseactan do-ghluasad): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Faodaidh tunailean dol tarsainn càch a chèile: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Cha tachair tubaist (gu tric) le steall-phlèan air port-adhair beag: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Deasaich àirde as motha a’ mhapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{BLACK}Deasaich an àirde as motha dhe bheanntan air a’ mhapa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Cruth-tìre measarra STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Cruth-tìre fo-artach STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Cruth-tìre fo-thropaigeach @@ -2005,6 +2047,7 @@ STR_LIVERY_FREIGHT_TRAM :Trama carago STR_FACE_CAPTION :{WHITE}Taghadh aodainn STR_FACE_CANCEL_TOOLTIP :{BLACK}Sguir dhen taghadh aodainn ùir STR_FACE_OK_TOOLTIP :{BLACK}Gabh ris an taghadh aodainn ùir +STR_FACE_RANDOM :{BLACK}Cuir sìol air thuaiream STR_FACE_MALE_BUTTON :{BLACK}Fireannach STR_FACE_MALE_TOOLTIP :{BLACK}Tagh aodann fireannaich @@ -2244,6 +2287,7 @@ STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Amharcaichean STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Cuir a-steach na tha thu airson toirt seachad +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Amharc # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Na sàbhail am facal-faire air a chur a-steach @@ -2473,7 +2517,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Tog rath STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Tog trèan-lann (gus trèanaichean a cheannach no obair-chàraidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Dèan puing-thurais dhe rèile. Ceanglaidh Ctrl puingean-turais ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Tog stèisean. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Tog comharran rèile. Toglaidh Ctrl eadar comharran saimeafoir/solais{}Slaod gus comharran a thogail rè slighe rèile dìrich. Togaidh Ctrl comharran gu ruige an ath ghobhail{}Toglaidh Ctrl+briogadh a bheil uinneag taghadh nan comharran fosgailte. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Tog comharran rèile. Toglaidh Ctrl eadar comharran saimeafoir/solais{}Slaod gus comharran a thogail rè slighe rèile dìrich. Togaidh Ctrl comharran gu ruige an ath ghobhail no comharra{}Toglaidh Ctrl+briogadh a bheil uinneag taghadh nan comharran fosgailte. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Tog drochaid rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Tog tunail rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toglaich togail/toirt air falbh airson slighe-rèile, comharran, puingean-turais is stèiseanan. Cùm Ctrl sìos gus rèile nam puingean-turais is stèiseanan a thoirt air falbh cuideachd @@ -2513,13 +2557,13 @@ STR_STATION_CLASS_WAYP :Puingean-turais STR_BUILD_SIGNAL_CAPTION :{WHITE}Roghainn nan comharran STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Comharra bloca (saimeafor){}Seo an seòrsa comharra as bunasaiche is chan fhaod ach aon trèan a bhith san aon bhloca aig an aon àm STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Comharra a-steach (saimeafor){}Bidh seo uaine fhad ’s a tha comharra a-mach uaine san ath roinn dhen t-slighe. Mura h-eil, bidh e dearg -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Comharra a-mach (saimeafor){}Tha an t-aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Comharra a-mach (saimeafor){}Tha an aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Comharra aonaichte (saimeafor){}’S e comharra a-steach is a-mach a th' anns a' chomharra aonaichte seo aig an aon àm. Mar sin, ’s urrainn dhut “craobhan" mòra dhe ro-chomharran a thogail STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Comharra slighe (saimeafor){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Faodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Comharra slighe aon-shligheach (saimeafor){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Chan fhaodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Comharra bloca (dealain){}Seo an seòrsa comharra as bunasaiche is chan fhaod ach aon trèan a bhith san aon bhloca aig an aon àm STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Comharra a-steach (dealain){}Bidh seo uaine fhad ’s a tha comharra a-mach uaine san ath roinn dhen t-slighe. Mura h-eil, bidh e dearg -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Comharra a-mach (dealain){}Tha an t-aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Comharra a-mach (dealain){}Tha an aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Comharra aonaichte (dealain){}’S e comharra a-steach is a-mach a th' anns a' chomharra aonaichte seo aig an aon àm. Mar sin, ’s urrainn dhut “craobhan" mòra dhe ro-chomharran a thogail STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Comharra slighe (dealain){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Faodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Comharra slighe aon-shligheach (dealain){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Chan fhaodar dol seachad air comharran slighe àbhaisteach on chùlaibh @@ -2757,6 +2801,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carago air a ghabhail ris: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Crìoch-luaiths rèile: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Crìoch-astair rathaid: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Creagan @@ -2871,7 +2916,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-2013 An sgioba OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 An sgioba OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama @@ -2890,6 +2935,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sàbhail STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sàbhail an geama làithreach leis an ainm a thagh thu STR_SAVELOAD_LOAD_BUTTON :{BLACK}Luchdaich STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Luchdaich an geama a thagh thu +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Luchdaich am mapa-àirde air a thaghadh STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Fiosrachadh a' gheama STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Chan eil fiosrachadh ri làimh STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2905,13 +2951,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Bailtean: STR_MAPGEN_DATE :{BLACK}Ceann-latha: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gnìomhachasan: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Àirde as motha a’ mhapa +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Meudaich an àirde as motha dhe bheanntan air a’ mhapa le a h-aon +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Lùghdaich an àirde as motha dhe bheanntan air a’ mhapa le a h-aon STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Àirde na loidhne-shneachda: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Gluais an loidhne-shneachda suas aon cheum STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Gluais an loidhne-shneachda sìos aon cheum -STR_MAPGEN_RANDOM_SEED :{BLACK}Sìol air thuaiream: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Briog gus sìol air thuaiream a chur a-steach -STR_MAPGEN_RANDOM :{BLACK}Cuir sìol air thuaiream -STR_MAPGEN_RANDOM_HELP :{BLACK}Atharraich an sìol air thuaiream a thèid a chleachdadh gus cruth-tìre a ghintinn STR_MAPGEN_LAND_GENERATOR :{BLACK}Gineadair crutha-thìre: STR_MAPGEN_TREE_PLACER :{BLACK}Algairim chraobhan: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Seòrsa a' chrutha-thìre: @@ -2938,7 +2983,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm a' STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Meud: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Cuir a-steach sìol air thuaiream +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Atharraich an àirde as motha air mapa STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Atharraich àirde na loidhne-shneachda STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna-tòiseachaidh @@ -2993,6 +3038,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Gluais s STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Gluais am faidhle NewGRF a thagh thu suas san liosta STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Gluais sìos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Gluais am faidhle NewGRF a thagh thu sìos san liosta +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Àrdaich +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Àrdaich faidhlichean NewGRF dhen a bheil tionndadh as ùire stàlaichte agad STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Liosta dhe na faidhlichean NewGRF a tha stàlaichte STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Suidhich paramadairean @@ -3017,6 +3064,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Cha deach STR_NEWGRF_SETTINGS_DISABLED :{RED}À comas STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Neo-chòrdail ris an tionndadh seo dhe OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Sàbhail ro-shocrachadh +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liosta dhe na ro-shocrachaidhean ri làimh, tagh fear gus lethbhreac dheth a chur gun ainm sàbhalaidh gu h-ìosal +STR_SAVE_PRESET_TITLE :{BLACK}Cuir a-steach ainm an ro-shocrachaidh +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}An t-ainm a chaidh a thaghadh an-dràsta gus an ro-shocrachadh a shàbhaladh ann +STR_SAVE_PRESET_CANCEL :{BLACK}Sguir dheth +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Na atharraich an ro-shocrachadh +STR_SAVE_PRESET_SAVE :{BLACK}Sàbhail +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Sàbhail an ro-shocrachadh dhan ainm air a thaghadh an-dràsta + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Atharraich paramadairean NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Dùin @@ -3040,14 +3097,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramada # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}A' co-thaobhachadh sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An t-ath sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Lean air adhart dhan ath sprite àbhaisteach, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an deireadh +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Lean air adhart dhan ath sprite àbhaisteach, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an deireadh gun chiad sprite STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Rach dhan sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Rach dhan sprite a thagh thu. Mura h-e sprite àbhaisteach a th' ann, lean air adhart dhan ath-sprite àbhaisteach STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}An sprite roimhe -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lean air adhart dhan sprite àbhaisteach roimhe, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an toiseach +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lean air adhart dhan sprite àbhaisteach roimhe, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an toiseach gun sprite mu dheireadh STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Riochdachadh air an sprite a thagh thu an-dràsta. Thèid an co-thaobhadh a chur dhan dàrna taobh nuair a thèid an sprite a tharraing STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Gluais an sprite mu thimcheall, ag atharrachadh nam frith-àireamhan aig X is Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Ath-shuidhich na frith-àireamhean dàimheach +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Ath-shuidhich na frith-àireamhean dàimheach làithreach +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} (absaloideach) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} (dàimheach) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Tagh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Tagh sprite bho àite sam bith air an sgrìn @@ -3104,6 +3164,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Tha faidhl STR_NEWGRF_BROKEN :{WHITE}Tha e coltach gun adhbharaich an NewGRF “{0:STRING}" dì-shioncronachadh is/no tuisleadh STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Dh'atharraich a staid a' charbaid-cumhachd airson “{1:ENGINE}" nuair nach robh e ann an trèan-lann STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Dh'atharraich e faide a' charbaid/na trèan airson “{1:ENGINE}" nuair nach robh e/i ann an garaids/trèan-lann +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Dh’atharraich e tomhas-lìonaidh carbaid airson “{1:ENGINE}” fhad ’s nach robh e ann an garaid, trèana-lann, cala no hangar no ga mhùthadh STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tha faide mì-dhligheach aig an trèan “{VEHICLE}" le “{COMPANY}". Tha e coltach gu bheil duilgheadasan le NewGRF as coireach. Dh'fhaoidte gun dì-shioncronaich no gun tuislich an geama STR_NEWGRF_BUGGY :{WHITE}Tha an NewGRF “{0:STRING}" a' toirt seachad fiosrachadh mealltach @@ -3118,6 +3179,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} dhe STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}A' sganadh NewGRFan STR_NEWGRF_SCAN_MESSAGE :{BLACK}A' sganadh NewGRFan. A' crochaidh air na tha dhiubh ann, dh'fhaoidte gun toir seo greis... @@ -3155,8 +3219,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{BLACK}Feum air STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} air a lìbhrigeadh STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (a dhìth fhathast) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (air lìbhrigeadh) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK} latha -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK} latha (maoinichte) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK}{NBSP}latha +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK}{NBSP}latha (maoinichte) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{RED}Chan eil {BLACK}am baile a' fàs STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Cuingeachaidhean fuaime sa bhaile: {ORANGE}{COMMA}{BLACK} air a char as motha: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' bhaile @@ -3216,7 +3280,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Fiosrachadh STR_GOAL_QUESTION_CAPTION_WARNING :Rabhadh STR_GOAL_QUESTION_CAPTION_ERROR :Mearachd -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Sguir dheth STR_GOAL_QUESTION_BUTTON_OK :Ceart ma-thà STR_GOAL_QUESTION_BUTTON_NO :Chan eil @@ -3235,6 +3299,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Ath-thòisich STR_GOAL_QUESTION_BUTTON_POSTPONE :Cuir na dhàil STR_GOAL_QUESTION_BUTTON_SURRENDER :Gèill STR_GOAL_QUESTION_BUTTON_CLOSE :Dùin +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Tarrailean @@ -3255,6 +3320,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Air ais STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Rach dhan duilleag roimhpe STR_STORY_BOOK_NEXT_PAGE :{BLACK}Air adhart STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Rach dhan ath-dhuilleag +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Iomradh cinn-uidhe mì-dhligheach # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ainmean nan stéiseanan - briog air ainm gus am prìomh-shealladh a mheadhanachadh air an stèisean. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad an stèisein @@ -3269,7 +3335,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Chan eil # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}A' feitheamh: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} bho {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} glèidhte airson luchdadh) @@ -3513,12 +3578,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Carbadan-rathai STR_GROUP_DEFAULT_SHIPS :Longan gun bhuidheann STR_GROUP_DEFAULT_AIRCRAFTS :Carbadan-adhair gun bhuidheann -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Buidhnean - briog air buidheann gus a h-uile carbad a tha sa bhuidheann seo a shealltainn +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Buidhnean - briog air buidheann gus a h-uile carbad a tha sa bhuidheann seo a shealltainn. Slaod buidhnean ’s leig às iad gus an rangachd atharrachadh. STR_GROUP_CREATE_TOOLTIP :{BLACK}Briog gus buidheann a chruthachadh STR_GROUP_DELETE_TOOLTIP :{BLACK}Sguab às dhan bhuidheann a thagh thu STR_GROUP_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air a' bhuidheann a thagh thu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Briog gus am buidheann seo a dhìon bhon fhèin-leasachadh uile-choitcheann +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Sguab am buidheann às +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}A bheil thu cinnteach gu bheil thu airson am buidheann seo ’s a shliochd a sguabadh às? + STR_GROUP_ADD_SHARED_VEHICLE :Cuir carbadan co-roinnte ris STR_GROUP_REMOVE_ALL_VEHICLES :Thoir a h-uile carbad air falbh @@ -3556,10 +3624,10 @@ STR_PURCHASE_INFO_ALL_BUT :Na h-uile ach { 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-rèile - briog air carbad airson fiosrachaidh -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-rathaid - briog air carbad airson fiosrachaidh -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Roghainn nan long - briog air long airson fiosrachaidh -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-adhair - briog air carbad airson fiosrachaidh +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liosta airson longan a thaghadh. Briog air long airson fiosrachaidh. Ctrl+briog gus toglachadh an tèid seòrsa na luinge fhalach gus nach tèid +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liosta airson carbadan-adhair 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_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad @@ -3581,6 +3649,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Thoir ai STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe long STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-adhair +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Falaich +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Falaich +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Falaich +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Falaich + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Seall +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Seall +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Seall +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Seall + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglaich falach/sealltainn seòrsa a’ charbaid-rèile +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglaich falach/sealltainn seòrsa a’ charbaid-rathaid +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglaich falach/sealltainn seòrsa na luinge +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglaich falach/sealltainn seòrsa a’ charbaid-adhair + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-rèile STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-rathaid STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe long @@ -3685,6 +3768,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Carbad-rathaid STR_REPLACE_VEHICLE_SHIP :{G=f}Long STR_REPLACE_VEHICLE_AIRCRAFT :Carbad-adhair +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Carbadan ’gan cleachdadh +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Colbh le carbadan a tha leatsa +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Carbadan ri làimh +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Colbh le carbadan ri làimh airson cur ’na àite + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Tagh seòrsa an einnsein airson leasachadh STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Tagh an seòrsa ùr dhen einnsean a bu toil leat a chleachdadh an àite an fhir a thagh thu air an taobh chlì @@ -3809,7 +3897,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Tomhas-l STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Creideas tar-aisig: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tricead na h-obrach-glèidhidh: {LTBLUE}{COMMA} {P latha latha làithean latha}{BLACK} An obair-ghlèidhidh mu dheireadh: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tricead na h-obrach-glèidhidh: {LTBLUE}{COMMA}{NBSP}{P latha latha làithean latha}{BLACK} An obair-ghlèidhidh mu dheireadh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tricead na h-obrach-glèidhidh: {LTBLUE}{COMMA}%{BLACK} An obair-ghlèidhidh mu dheireadh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Meudaich tricead na h-obrach-glèidhidh le 10. Meudaichidh Ctrl+briogadh tricead na h-obrach-glèidhidh le 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Lùghdaich tricead na h-obrach-glèidhidh le 10. Lùghdaichidh Ctrl+briogadh tricead na h-obrach-glèidhidh le 5 @@ -3907,8 +3995,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Atharrai STR_ORDER_REFIT :{BLACK}Mùth STR_ORDER_REFIT_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago ’s tu airson mùthadh air a shon leis an òrdugh seo. Dèan Ctrl+briogadh gus an t-òrdugh mùthaidh a thoirt air falbh -STR_ORDER_REFIT_AUTO :{BLACK}Fèin-mhùth -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago ’s tu airson fèin-mhùthadh air a shon leis an òrdugh seo. Dèan Ctrl+briogadh gus an t-òrdugh mùthaidh a thoirt air falbh. Cha tèid fèin-mhùthadh a dhèanamh ach ma tha an carbad comasach +STR_ORDER_REFIT_AUTO :{BLACK}Mùth aig stèisean +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago ’s tu airson mùthadh air a shon leis an òrdugh seo. Dèan Ctrl+briogadh gus an t-òrdugh mùthaidh a thoirt air falbh. Cha tèid mùthadh a dhèanamh aig stèisean ach ma tha an carbad comasach air STR_ORDER_DROP_REFIT_AUTO :Carago stèidhichte STR_ORDER_DROP_REFIT_AUTO_ANY :Carago ri làimh @@ -3999,15 +4087,15 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Na dì-luchdai STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Na dì-luchdaich is feitheamh air carago sam bith iomlan) STR_ORDER_NO_UNLOAD_NO_LOAD :(Na dì-luchdaich is na luchdaich) -STR_ORDER_AUTO_REFIT :(Fèin-mhùth airson {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Luchdadh iomlan le fèin-mhùthadh airson {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Luchdadh iomlan aig carago sam bith le fèin-mhùthadh airson {STRING}) -STR_ORDER_UNLOAD_REFIT :(Dì-luchdaich is gabh ri carago le fèin-mhùthadh airson {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dì-luchdaich is feitheamh air luchdadh iomlan le fèin-mhùthadh airson {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dì-luchdaich is feitheamh air luchdadh sam bith iomlan le fèin-mhùthadh airson {STRING}) -STR_ORDER_TRANSFER_REFIT :(Tar-aisig is gabh ri carago le fèin-mhùthadh airson {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Tar-aisig is feitheamh air carago iomlan le fèin-mhùthadh airson {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Tar-aisig is feitheamh air carago sam bith iomlan le fèin-mhùthadh airson {STRING}) +STR_ORDER_AUTO_REFIT :(Mùth airson {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Luchdadh iomlan le mùthadh airson {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Luchdadh iomlan aig carago sam bith le mùthadh airson {STRING}) +STR_ORDER_UNLOAD_REFIT :(Dì-luchdaich is gabh ri carago le mùthadh airson {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dì-luchdaich is feitheamh air luchdadh iomlan le mùthadh airson {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dì-luchdaich is feitheamh air luchdadh sam bith iomlan le mùthadh airson {STRING}) +STR_ORDER_TRANSFER_REFIT :(Tar-aisig is gabh ri carago le mùthadh airson {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Tar-aisig is feitheamh air carago iomlan le mùthadh airson {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Tar-aisig is feitheamh air carago sam bith iomlan le mùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Na dì-luchdaich is gabh ri carago le fèin-mhùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Na dì-luchdaich is feitheamh air carago iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Na dì-luchdaich is feitheamh air carago sam bith iomlan le fèin-mhùthadh airson {STRING}) @@ -4039,10 +4127,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Siubhail (gun c STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Siubhal le {2:VELOCITY} as motha (gun chlàr-ama) STR_TIMETABLE_TRAVEL_FOR :Siubhail fad {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Siubhail fad {STRING} le {VELOCITY} as motha +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Siubhail (fad {STRING} gun chlàr-ama) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Siubhail (fad {STRING} gun chlàr-ama) le {VELOCITY} air a char as luaithe +STR_TIMETABLE_STAY_FOR_ESTIMATED :(fuirich fad {STRING} gun chlàr-ama) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(siubhail fad {STRING} gun chlàr-ama) STR_TIMETABLE_STAY_FOR :is fuirich fad {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :is siubhail fad {STRING} -STR_TIMETABLE_DAYS :{COMMA} {P latha latha làithean latha} -STR_TIMETABLE_TICKS :{COMMA} {P diog dhiog diogan diog} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}{P latha latha làithean latha} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}{P diog dhiog diogan diog} STR_TIMETABLE_TOTAL_TIME :{BLACK}Bheir an clàr-ama seo {STRING} airson coileanadh STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Bheir an clàr-ama seo {STRING} air a char as lugha airson coileanadh (cuid dheth gun chlàr-ama) @@ -4106,13 +4198,13 @@ STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Nuair a STR_AI_DEBUG_MATCH_CASE :{BLACK}Aire do litrichean mòra is beaga STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toglaich an tèid aire a thoirt do litrichean mòra is beaga nuair a thèid teachdaireachdan loga an IF a choimeas ris an t-sreang brisidh STR_AI_DEBUG_CONTINUE :{BLACK}Lean air adhart -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Cuir a' dol is lean air an IF +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Cuir a’ dol is lean air an IF STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Seall às-chur dì-bhugaidh aig an IF seo STR_AI_GAME_SCRIPT :{BLACK}Sgriobt geama STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Thoir sùil air loga aig an sgriobt geama STR_ERROR_AI_NO_AI_FOUND :Cha deach IF freagarrach a lorg airson luchdadh.{}Seo IF caochaige nach dèan dad.{}’S urrainn dhut caochladh dhe IF luchdadh a-nuas leis an t-siostam “Susbaint air loidhne" -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Thuislich aon dhe na sgriobtan a bha a' ruith. Feuch an cuir thu aithisg dha ùghdar an sgriobt le glacadh-sgrìn dhen uinneag dì-bhugaidh aig an IF/sgriobt geama +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Thuislich aon dhe na sgriobtan a bha a’ ruith. Feuch an cuir thu aithisg dha ùghdar an sgriobt le glacadh-sgrìn dhen uinneag dì-bhugaidh aig an IF/sgriobt geama STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Chan eil an uinneag dì-bhugaidh aig an IF/sgriobt geama ri làimh ach airson an fhrithealaiche # AI configuration window @@ -4168,6 +4260,8 @@ STR_AI_SETTINGS_START_DELAY :An àireamh dhe STR_TEXTFILE_README_CAPTION :{WHITE}“Leugh mi” {STRING} aig {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Loga atharraichean {STRING} aig {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Ceadachas {STRING} aig {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Paisg teacsa +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Paisg teacsa ach am freagair e dhan uinneag gun fheum air sgroladh STR_TEXTFILE_VIEW_README :{BLACK}Seall “Leugh mi” STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Loga nan atharraichean STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ceadachas @@ -4202,7 +4296,7 @@ STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ga shàb STR_ERROR_AUTOSAVE_FAILED :{WHITE}Dh’fhàillig leis an fhèin-shàbhaladh STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Cha ghabh an draibh leughadh STR_ERROR_GAME_SAVE_FAILED :{WHITE}Dh’fhàillig le sàbhaladh a’ gheama{}{STRING} -STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Cha ghabh sguabadh às dhan fhaidhle +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Cha ghabh am faidhle sguabadh às STR_ERROR_GAME_LOAD_FAILED :{WHITE}Dh’fhàillig le luchdadh a’ gheama{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mearachd taobh a-staigh: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Tha an geama air shàbhaladh briste - {STRING} @@ -4214,24 +4308,24 @@ STR_GAME_SAVELOAD_NOT_AVAILABLE :Eaconamaidh->Bailtean +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Cha tog am baile rathad sam bith. ’S urrainn dhut togail rathaidean a chur an comas le Roghainnean->Àrainneachd->Bailtean STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Rathad ga ath-thogail -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Cha ghabh sguabadh às dhan bhaile seo...{}Tha stèisean no port no garaids no trèan-lann no cala no hangar a' toirt iomradh air a' bhaile no tha leac ann a tha leis a' bhaile is nach gabh toirt air falbh +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Cha ghabh am baile seo sguabadh às...{}Tha stèisean no port no garaids no trèan-lann no cala no hangar a' toirt iomradh air a' bhaile no tha leac ann a tha leis a' bhaile is nach gabh toirt air falbh STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... chan eil ionad freagarrach airson ìomhaigh ann am meadhan a' bhaile seo # Industry related errors @@ -4328,6 +4423,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... cha STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... cha ghabh seo togail ach os cionn na loidhne-sneachda STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... cha ghabh seo togail ach fon loidhne-shneachda +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Chan eil àite iomchaidh gus gnìomhachas “{STRING}” a chur ann +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Atharraich na roghainnean aig gineadair a’ mhapa gus mapa nas fhearr fhaighinn + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Cha ghabh stèisean-rèile togail an-seo... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Cha ghabh stèisean bus togail... @@ -4464,6 +4562,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Feumaidh STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Chan urrainn dhut tòiseachadh is crìochnachadh air an aon àite STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Chan eil an dà cheann aig an drochaid air an aon àirde STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tha an drochaid ro ìosal airson a' chrutha-tìre seo +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Tha an drochaid ro àrd airson a’ chrutha-thìre seo. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Feumaidh an toiseach is a' chrìoch a bhith air an aon loidhne STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... feumaidh an dà cheann aig an drochaid a bhith air tìr STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... tha an drochaid ro fhada @@ -4488,8 +4587,9 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... tha # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Cha ghabh am buidheann cruthachadh... -STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Cha ghabh sguabadh às dhan bhuidheann seo... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Cha ghabh am buidheann seo sguabadh às... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Cha ghabh ainm a' bhuidhinn atharrachadh... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Cha ghabh am buidheann pàraint a shuidheachadh... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Cha ghabh na h-uile carbad toirt air falbh bhon bhuidheann seo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Chan urrainn dhut an carbad seo a chur ris a' bhuidheann seo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Chan urrainn dhut carbadan co-roinnte a chur ris a' bhuidheann... @@ -4545,6 +4645,8 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Cha ghab STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... chaidh an carbad a mhilleadh +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Cha bhi carbad sam bith ri làimh +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Atharraich an rèiteachadh NewGRF agad STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Chan eil carbad ri fhaighinn fhathast STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Tòisich geama ùr às dèidh {DATE_SHORT} no chleachd NewGRF a bheir carbadan tràtha dhut @@ -4561,7 +4663,7 @@ STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Tha an c STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Chan eil barrachd rum airson òrduighean ann STR_ERROR_TOO_MANY_ORDERS :{WHITE}Tha cus òrduighean ann STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Cha ghabh òrdugh ùr cur a-steach... -STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Cha ghabh sguabadh às dhan òrdugh seo... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Cha ghabh an t-òrdugh seo sguabadh às... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Cha ghabh an t-òrdugh seo atharrachadh... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Cha ghabh an t-òrdugh seo gluasad... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Cha ghabh leum gearradh thar an òrduigh seo... @@ -4585,7 +4687,7 @@ STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Chan eil STR_ERROR_TOO_MANY_SIGNS :{WHITE}... tha cus sanasan ann STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Chan urrainn dhut sanas a chur an-seo... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Cha ghabh ainm an t-sanais atharrachadh... -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Cha ghabh sguabadh às dhan t-sanas... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Cha ghabh an sanas sguabadh às... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Geama saoghail mas-fhìor stèidhichte air Transport Tycoon Deluxe @@ -5181,6 +5283,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (falaichte) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5216,8 +5319,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5229,9 +5330,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 338c50547f..026a8fcc53 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -249,6 +249,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desprazamento - despraza a lista a esquerda/dereita STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. nun cadrado de terreo. Ctrl selecciona a área en diagonal. Shift alterna construir/amosar custo estimado +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Amosar os agochados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Amosar os agochados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Amosar os agochados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Amosar os agochados + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Habilitando este botón, os trens agochados serán tamén amosados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Habilitando este botón, os vehículos rodados ocultos serán tamén amosados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Habilitando este botón, os barcos agochados serán tamén amosados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Habilitando este botón, as aeronaves agochadas serán amosadas + # Query window STR_BUTTON_DEFAULT :{BLACK}Por defecto STR_BUTTON_CANCEL :{BLACK}Cancelar @@ -362,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Saír ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opcións do xogo -STR_SETTINGS_MENU_CONFIG_SETTINGS :Configuración avanzada +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Opcións STR_SETTINGS_MENU_SCRIPT_SETTINGS :Configuración da IA/scripts STR_SETTINGS_MENU_NEWGRF_SETTINGS :Configuración NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcións de transparencia @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Activa/desactiv STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Activa/desactiva o coloreado de bloques modificados ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1º STR_ORDINAL_NUMBER_2ND :2º STR_ORDINAL_NUMBER_3RD :3º @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12º STR_ORDINAL_NUMBER_13TH :13º STR_ORDINAL_NUMBER_14TH :14º STR_ORDINAL_NUMBER_15TH :15º -STR_ORDINAL_NUMBER_16TH :16º -STR_ORDINAL_NUMBER_17TH :17º -STR_ORDINAL_NUMBER_18TH :18º -STR_ORDINAL_NUMBER_19TH :19º -STR_ORDINAL_NUMBER_20TH :20º -STR_ORDINAL_NUMBER_21ST :21º -STR_ORDINAL_NUMBER_22ND :22º -STR_ORDINAL_NUMBER_23RD :23º -STR_ORDINAL_NUMBER_24TH :24º -STR_ORDINAL_NUMBER_25TH :25º -STR_ORDINAL_NUMBER_26TH :26º -STR_ORDINAL_NUMBER_27TH :27º -STR_ORDINAL_NUMBER_28TH :28º -STR_ORDINAL_NUMBER_29TH :29º -STR_ORDINAL_NUMBER_30TH :30º -STR_ORDINAL_NUMBER_31ST :31º +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1º +STR_DAY_NUMBER_2ND :2º +STR_DAY_NUMBER_3RD :3º +STR_DAY_NUMBER_4TH :4º +STR_DAY_NUMBER_5TH :5º +STR_DAY_NUMBER_6TH :6º +STR_DAY_NUMBER_7TH :7º +STR_DAY_NUMBER_8TH :8º +STR_DAY_NUMBER_9TH :9º +STR_DAY_NUMBER_10TH :10º +STR_DAY_NUMBER_11TH :11º +STR_DAY_NUMBER_12TH :12º +STR_DAY_NUMBER_13TH :13º +STR_DAY_NUMBER_14TH :14º +STR_DAY_NUMBER_15TH :15º +STR_DAY_NUMBER_16TH :16º +STR_DAY_NUMBER_17TH :17º +STR_DAY_NUMBER_18TH :18º +STR_DAY_NUMBER_19TH :19º +STR_DAY_NUMBER_20TH :20º +STR_DAY_NUMBER_21ST :21º +STR_DAY_NUMBER_22ND :22º +STR_DAY_NUMBER_23RD :23º +STR_DAY_NUMBER_24TH :24º +STR_DAY_NUMBER_25TH :25º +STR_DAY_NUMBER_26TH :26º +STR_DAY_NUMBER_27TH :27º +STR_DAY_NUMBER_28TH :28º +STR_DAY_NUMBER_29TH :29º +STR_DAY_NUMBER_30TH :30º +STR_DAY_NUMBER_31ST :31º ############ range for days ends ############ range for months starts @@ -811,13 +840,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} está a esperar no depósito STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} está a esperar no hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ten moi poucas ordes no programa STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ten unha orde nula STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ten ordes duplicadas STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ten unha estación inválida nas súas ordes -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está a volverse vello STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está a volverse moi vello @@ -900,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari xeorxiano STR_GAME_OPTIONS_CURRENCY_IRR :Real iraniano (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehículos de estrada STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selecciona o lado da estrada polo que circularán os vehículos STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducir pola esquerda @@ -939,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalán STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autogravado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona o intervalo entre autogravados +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Apagado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona a lingua para a interface @@ -955,8 +980,11 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resoluci STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona a resolución de pantalla a empregar STR_GAME_OPTIONS_RESOLUTION_OTHER :outra -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato capturas de pantalla -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selecciona o formato a empregar nas capturas de pantalla +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño da interface +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleciona o tamaño de elementos da interface a usar + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobre tamaño STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conxunto básico de gráficos STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona o conxunto de gráficos básico a empregar @@ -972,6 +1000,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccio STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} arquivo{P "" s} corrupto{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de música base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Erro ao obter a lista de resolucións soportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}O modo de pantalla completa fallou # Custom currency window @@ -1050,6 +1079,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Moi chan STR_TERRAIN_TYPE_FLAT :Chan STR_TERRAIN_TYPE_HILLY :Accidentado STR_TERRAIN_TYPE_MOUNTAINOUS :Montañoso +STR_TERRAIN_TYPE_ALPINIST :Alpinista STR_CITY_APPROVAL_PERMISSIVE :Permisiva STR_CITY_APPROVAL_TOLERANT :Tolerante @@ -1057,8 +1087,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostil STR_WARNING_NO_SUITABLE_AI :{WHITE}Non hai IA adecuada dispoñíbel...{}Podes descargar varias IAs a través do sistema de contidos online -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Configuración avanzada +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Opcións STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrar texto: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir todos STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Minimizar todos @@ -1071,7 +1101,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Configuración STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Configuración da compañía (almacénase nas partidas gravadas; afecta só ás novas partidas) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Configuración da compañía (almacénase nas partidas gravadas; afecta só á partida actual) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mostrar: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restrinxe a seguinte lista amosando só os valores alterados STR_CONFIG_SETTING_RESTRICT_BASIC :Configuración básica STR_CONFIG_SETTING_RESTRICT_ADVANCED :Configuración avanzada @@ -1126,8 +1155,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa os desas STR_CONFIG_SETTING_CITY_APPROVAL :Actitude das autoridades locáis cara a restruturacións de áreas: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolle ata que punto o ruido e danos medioambientais producidos polas compañias afectan á súa valoración municipal e ás próximas actividades construtivas na súa área -STR_CONFIG_SETTING_BUILDONSLOPES :Permiti-la construción en pendentes e costas: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Se está activado, as vías e estacións poden ser construidas na maioría das pendentes. Se se desactiva, só se permite a súa construción en pendentes coa mesma dirección +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima do mapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Establecer a altura máxima permitida para os montes do mapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Non podes establecer a altura máxima do mapa a este valor. Canda menos un monte do mapa é maior STR_CONFIG_SETTING_AUTOSLOPE :Permitir modificacións do terreo baixo edificios, vías, etc. (autopendente): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite modificar o terreo baixo edificacións e vías sen retiralos STR_CONFIG_SETTING_CATCHMENT :Permitir áreas de captación máis realistas: {STRING} @@ -1152,16 +1182,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir xiros STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Os xiros de 90 graos ocorren cando unha vía horizontal vai seguida directamente dun tramo vertical no cadro adxancete, facendo que o tren vire 90 graos cando pasa o límite do cadro en vez dos 45 graos habituais noutras combinacións de vías. Esto tamén se aplica ao radio de xiro dos barcos STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir a unión de estacións non adxacentes {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite engadir partes a unha estación sen que estén en contacto directo coas partes existente. Necesita facer Ctrl+Click ao colocar as partes novas -STR_CONFIG_SETTING_IMPROVEDLOAD :Usa-lo algoritmo de carga mellorado: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Se se activa, os múltiples vehículos esperando unha estación son cargados secuencialmente. Só se inicia a carga do vehículo seguinte se hai carga suficiente para encher completamente o primeiro vehículo -STR_CONFIG_SETTING_GRADUAL_LOADING :Cargar vehículos gradualmente: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Os vehículos cargan gradualmente usando os tempos de carga específicos de cada un, en vez de cargar todo dunha vez nun tempo fixado que dependa só da cantidade de produto cargado STR_CONFIG_SETTING_INFLATION :Inflación: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activa a inflación na economía, onde os custos medran sensibelmente máis rápido ca os pagos -STR_CONFIG_SETTING_SELECTGOODS :Descarga-la carga só cando haxa demanda: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Só se leva a carga ás estacións cando un vehículo o solicitara. Esto evita rendementos baixos para as cargas que non teñen servizo nunha estación STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Luz máxima das pontes: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :A máxima lonxitude das pontes +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de pontes: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima para pontes construídas STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Lonxitude máxima de túnel: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :A máxima lonxitude dos túneis STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de construción manual de industrias primarias: {STRING} @@ -1187,8 +1213,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Lugar onde un t STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :extremo cercano STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :medio STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :extremo lonxano -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cola para vehículos de estrada (con efecto cuantificador): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Fai que os vehículos de carretera agarden fronte ás paradas ocupadas ata que quedan libres STR_CONFIG_SETTING_AUTOSCROLL :Desplaza-la fiestra cando o ratón esté no borde: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Cando se activa, a vista desprazarase cando o punteiro se achegue ao borde da ventá STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Descativado @@ -1219,10 +1243,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permiti-la cons STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite a construcción de estacións pasantes sobre as rúas propiedade da cidade STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir estacións pasantes sobre estradas propiedade dos competidores: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite a construción de estacións pasantes sobre estradas propiedade das outras compañías -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permiti-la construción de estacións contiguas: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permite que diferentes estacións poidan estar en contacto directo -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Activar múltiples sets NewGRF de vehículos: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opción de compatibilidade para NewGRFs antigos. Non desactives isto, salvo que saibas exactamente o que estás a facer! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non é posíbel mudar esta opción cando hai vehículos STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mantemento de infraestrutura: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cando se activa, a infraestrutura provoca custos de mantemento. O custo aumenta sobre-proporcionadamente co tamaño da rede, e afecta máis ás compañías máis grandes cás pequenas @@ -1268,20 +1288,26 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distancia máxi STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :As refinarías de petróleo só se constrúen preto do borde do mapa, isto é na costa para mapas de illas STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Cota de neve: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Desigualdade do terreo (só TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(só TerraGenesis) Escolle a frequencia de montes: Suaviza as paisaxes tendo menos montes e máis espallados. Paisaxes escarpadas teñen moitos outos, que poderían semellar repetitivos STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Moi suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Escabroso STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Moi escabroso +STR_CONFIG_SETTING_VARIETY :Distribución da variedade: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(só TerraGenesis) Controla se o mapa contén áreas montañosas ou chás. Como isto só fai o mapa máis chán, outras opcións deberan ser establecidas a montañosas +STR_CONFIG_SETTING_RIVER_AMOUNT :Cantidade de ríos: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolle cantos ríos xerar STR_CONFIG_SETTING_TREE_PLACER :Algoritmo de colocación de árbores: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Escolle a distribución das árbores no mapa: 'Orixinal' pranta ábores uniformemente espalladas, 'Mellorado' as pranta en grupos STR_CONFIG_SETTING_TREE_PLACER_NONE :Ningún STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Orixinal STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Mellorado +STR_CONFIG_SETTING_ROAD_SIDE :Vehículos rodados: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Escolle o senso de circulación STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotación do mapa de alturas: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Antihorario STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Horario STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Nivel de altitude dun escenario plano: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Activa-lo terreo nos bordes do mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Se se desactiva, os bordes do mapa sempre serán océano STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Un ou máis cadros no borde Norte non están baleiros STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Un ou máis cadros nun dos bordes non é auga @@ -1332,17 +1358,15 @@ 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_AUTOSAVE :Autogravado: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona o intervalo entre gravados automáticos das partidas + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Empregar o formato de data {STRING} para os nomes das partidas gravadas STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato da data nos nomes das partidas gravadas STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longo (31 Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta a empregar por defecto para NewGRFs que non especifican unha paleta: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta a empregar por defecto para NewGRFs que non especifican a paleta que necesitan -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automáticamente ó comezo dunha nova partida: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Cando estea activado, a partida pausarase automaticamente ao comezo dun novo xogo, permitindo un estudo detallado do mapa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Permitir {STRING} durante pausa @@ -1564,8 +1588,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 entre {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ningunha STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial do tamaño da cidade: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Relación entre o tamaño medio das cidades e o dos pobos ao inicio da partida -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Elimina-los elementos absurdos das estradas en construción: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Eliminar tramos de estrada sen saída durante a reconstrución financiada das estradas STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrica @@ -1615,27 +1637,17 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localización -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construción +STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de son +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construción STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos -STR_CONFIG_SETTING_STATIONS :{ORANGE}Estacións -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economía -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribución da carga +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Encamiñamento +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Cidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribución da carga STR_CONFIG_SETTING_AI :{ORANGE}Competidores -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Mostrar opcións -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacción -STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de son -STR_CONFIG_SETTING_NEWS :{ORANGE}Novas e mensaxes -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinais -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Xestión da carga STR_CONFIG_SETTING_AI_NPC :{ORANGE}Xogadores da computadora -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenovar -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}En servizo -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Encamiñamento -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trens -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Cidades -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias STR_CONFIG_SETTING_PATHFINDER_OPF :Orixinal STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1684,7 +1696,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multixog STR_INTRO_GAME_OPTIONS :{BLACK}Opcións da partida STR_INTRO_HIGHSCORE :{BLACK}Táboa das máximas puntuacións -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Configuración avanzada +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Opcións STR_INTRO_NEWGRF_SETTINGS :{BLACK}Configuración NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Comprobar contido online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Configuración dos scripts de IA @@ -1704,7 +1716,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Seleccio STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra-las opcións da partida STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostrar táboa das máximas puntuacións -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostrar a configuración avanzada +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Opcións de visualización STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra-la configuración de NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Buscar contidos novos e actualizados para descargar STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Motra-la configuración dos scripts de IA @@ -1744,6 +1756,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Xogando STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadora máxica (elimina industrias, obxectos non eliminables): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Os túneis poden cruzarse entre eles: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Os avións jet non se estrelarán (frecuentemente) nos aeroportos pequenos: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Trocar a altura máxima do mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Trocar a altura máxima dos montes do mapa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Paisaxe temperada STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Paisaxe subártica STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Paisaxe subtropical @@ -1792,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Tranvía de car STR_FACE_CAPTION :{WHITE}Selección de cara STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancela-la selección dunha nova cara STR_FACE_OK_TOOLTIP :{BLACK}Acepta-la selección da nova cara +STR_FACE_RANDOM :{BLACK}Aleatorio STR_FACE_MALE_BUTTON :{BLACK}Home STR_FACE_MALE_TOOLTIP :{BLACK}Seleccionar caras masculinas @@ -2631,7 +2646,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-2013 O equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 O equipo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida @@ -2665,13 +2680,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nº de cidades: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nº de industrias: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altura máxima do mapa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumenta a altura máxima dos montes do mapa en un +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Diminiuir a altura máxima dos montes do mapa en un STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Cota de neve: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Subir a cota de neve unha altura STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baixar a cota de neve unha altura -STR_MAPGEN_RANDOM_SEED :{BLACK}Semente aleatoria: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Pincha para introducir unha semente aleatoria -STR_MAPGEN_RANDOM :{BLACK}Aleatorio -STR_MAPGEN_RANDOM_HELP :{BLACK}Cambia-la semente aleatoria usada para a xeración de terreo STR_MAPGEN_LAND_GENERATOR :{BLACK}Xerador de terreo: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritmo para árbores: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreo: @@ -2698,7 +2712,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaño: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Introduce unha semente aleatoria +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Cambiar altura máxima do mapa STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambiar a altura da cota de neve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Cambia-lo ano de inicio @@ -2753,6 +2767,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Subir STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move-lo arquivo NewGRF seleccionado arriba na lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Baixar STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move-lo arquivo NewGRF seleccionado abaixo na lista +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualizar +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Actualizar arquivos NewGRF para os cales tes unha versión máis nova instalada STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Unha lista dos arquivos NewGRF instalados. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establecer parámetros @@ -2777,6 +2793,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Arquivo co STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible con esta versión de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Grava os preaxustes +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de preaxustes dispoñibles, selecciona unha para copiala no nome de gravación de embaixo +STR_SAVE_PRESET_TITLE :{BLACK}Engade un nome para o preestablecido +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome seleccionado actualmente para o preestablecido a gravar +STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Non troques o preestablecido +STR_SAVE_PRESET_SAVE :{BLACK}Gravar +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Gravar o establecido ao nome seleccionado actualmente + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Cambiar os parámetros de NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Pechar @@ -2807,7 +2833,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir ao sprite anterior, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar ao inicio STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representación do sprite seleccionado. A aliñación ignórase ao debuxar este sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move-lo sprite, cambiando os valores de X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desp. X: {NUM}, Desp. Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Seleccionar sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Seleccionar un sprite en calquera parte da pantalla @@ -2878,6 +2903,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Escaneando NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escaneando NewGRFs. Dependendo da cantidade esto pode tardar un chisco... @@ -2910,7 +2937,7 @@ STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poboaci STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasaxeiros último mes: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correo último mes: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para o crecemento da cidade: -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necesario{P "" s} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necesario STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necesarios en inverno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregados STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (todavía requeridos) @@ -2976,7 +3003,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Información STR_GOAL_QUESTION_CAPTION_WARNING :Aviso STR_GOAL_QUESTION_CAPTION_ERROR :Erro -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Non @@ -2995,6 +3022,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Reiniciar STR_GOAL_QUESTION_BUTTON_POSTPONE :Pospoñer STR_GOAL_QUESTION_BUTTON_SURRENDER :Renderse STR_GOAL_QUESTION_BUTTON_CLOSE :Pechar +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencións @@ -3027,7 +3055,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non qued # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Agardando: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} en ruta dende {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para cargar) @@ -3277,6 +3304,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Borrar o STR_GROUP_RENAME_TOOLTIP :{BLACK}Renomear o grupo seleccionado STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Pincha para protexer a este grupo da autosubstitución global + STR_GROUP_ADD_SHARED_VEHICLE :Engadir vehículos compartidos STR_GROUP_REMOVE_ALL_VEHICLES :Borrar tódolos vehículos @@ -3339,6 +3367,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renomea- STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renomear tipo de barco STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renomea-lo tipo de avión +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Agochar +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Agochar +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Agochar +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Agochar + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Visualización +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Visualización +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Visualización +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Visualización + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Trocar agochar/amosar tipo de tren +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Trocar agochar/amosar tipo de vehículo rodado +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Trocar agochar/amosar tipo de barco +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Tocar agochar/amosar o tipo de aeronave + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renomea-lo tipo de vehículo de ferrocarril STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renomea-lo tipo de vehículo de estrada STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renomear tipo de barco @@ -3443,6 +3486,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vehículo de es STR_REPLACE_VEHICLE_SHIP :Barco STR_REPLACE_VEHICLE_AIRCRAFT :Aeronave +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehículos en uso +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Columna con vehículos que ti posúes +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehículos dispoñibles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Columna con vehículos dispoñibles para reemprazar + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecciona o tipo de máquina a substituír STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecciona o tipo da nova máquina que queres usar en lugar do tipo de máquina seleccionado á esquerda @@ -4036,6 +4084,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A excava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... xa está ao nivel do mar STR_ERROR_TOO_HIGH :{WHITE}... demasiado alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... xa é plana +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Despois a ponte sobre él será demasiado alta. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non se pode cambia-lo nome da compañía... @@ -4086,6 +4135,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... o bo STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... só se pode construír sobre a cota de neve STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só se pode construír baixo a cota de neve +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Non habían lugares axeitados para industrias '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia os parámetros de xeración de mapas para obter un mapa mellor + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Non se pode construír a estación de ferrocarril aí... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Non se pode construí-la estación de autobús... @@ -4222,6 +4274,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Debes de STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Non pode empezar e rematar na mesma posición STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Os estribos da ponte non están o mesmo nivel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A ponte é demasiado baixa para o terreo +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}A ponte é demasiado alta para este terreo. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}O inicio e o final deben estar aliñados STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambos extremos da ponte deben estar en terra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte demasiado longa @@ -4480,7 +4533,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diésel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diésel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diésel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor) @@ -4689,7 +4742,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Barca Pasaxeiro STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Barca de Pasaxeiros Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Barco de Mercadorías Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Barco de Mercadorías Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco Mercadorías Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco Mercadorías MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Barco de Mercadorías Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4783,6 +4836,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (agochado) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4818,8 +4872,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4830,9 +4882,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/german.txt b/src/lang/german.txt index 6ebe6d7376..d1d0414b53 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :{G=w}Limonade # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} Passagier{P "" e} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}Passagier{P "" e} STR_QUANTITY_COAL :{WEIGHT_LONG} Kohle -STR_QUANTITY_MAIL :{COMMA} Posts{P ack äcke} +STR_QUANTITY_MAIL :{COMMA}{NBSP}Posts{P ack äcke} STR_QUANTITY_OIL :{VOLUME_LONG} Öl -STR_QUANTITY_LIVESTOCK :{COMMA} Stück Vieh -STR_QUANTITY_GOODS :{COMMA} Warenkiste{P "" n} +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}Stück Vieh +STR_QUANTITY_GOODS :{COMMA}{NBSP}Warenkiste{P "" n} STR_QUANTITY_GRAIN :{WEIGHT_LONG} Getreide STR_QUANTITY_WOOD :{WEIGHT_LONG} Holz STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} Eisenerz STR_QUANTITY_STEEL :{WEIGHT_LONG} Stahl -STR_QUANTITY_VALUABLES :{COMMA} {P Sack Säcke} Wertsachen +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}{P Sack Säcke} Wertsachen STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} Kupfererz STR_QUANTITY_MAIZE :{WEIGHT_LONG} Mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} Früchte -STR_QUANTITY_DIAMONDS :{COMMA} {P Sack Säcke} Diamanten +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}{P Sack Säcke} Diamanten STR_QUANTITY_FOOD :{WEIGHT_LONG} Nahrungsmittel STR_QUANTITY_PAPER :{WEIGHT_LONG} Papier -STR_QUANTITY_GOLD :{COMMA} {P Sack Säcke} Gold +STR_QUANTITY_GOLD :{COMMA}{NBSP}{P Sack Säcke} Gold STR_QUANTITY_WATER :{VOLUME_LONG} Wasser STR_QUANTITY_WHEAT :{WEIGHT_LONG} Weizen STR_QUANTITY_RUBBER :{VOLUME_LONG} Kautschuk STR_QUANTITY_SUGAR :{WEIGHT_LONG} Zucker -STR_QUANTITY_TOYS :{COMMA} Spielzeug{P "" e} -STR_QUANTITY_SWEETS :{COMMA} {P Sack Säcke} Bonbons +STR_QUANTITY_TOYS :{COMMA}{NBSP}Spielzeug{P "" e} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}{P Sack Säcke} Bonbons STR_QUANTITY_COLA :{VOLUME_LONG} Cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} Zuckerwatte STR_QUANTITY_BUBBLES :{COMMA} Luftblase{P "" n} @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}KEIN STR_ABBREV_ALL :{TINY_FONT}ALLE # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} Passagier{P "" e} -STR_BAGS :{COMMA} S{P ack äcke} -STR_TONS :{COMMA} Tonne{P "" n} -STR_LITERS :{COMMA} Liter{P "" ""} -STR_ITEMS :{COMMA} Stück{P "" ""} -STR_CRATES :{COMMA} Kiste{P "" n} +STR_PASSENGERS :{COMMA}{NBSP}Passagier{P "" e} +STR_BAGS :{COMMA}{NBSP}S{P ack äcke} +STR_TONS :{COMMA}{NBSP}Tonne{P "" n} +STR_LITERS :{COMMA}{NBSP}Liter{P "" ""} +STR_ITEMS :{COMMA}{NBSP}Stück{P "" ""} +STR_CRATES :{COMMA}{NBSP}Kiste{P "" n} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dunkelblau @@ -192,37 +192,37 @@ STR_COLOUR_GREY :Grau STR_COLOUR_WHITE :Weiß # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}PS -STR_UNITS_POWER_METRIC :{COMMA}PS -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}PS +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}PS +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} Tonne{P "" n} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} Tonne{P "" n} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}Tonne{P "" n} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}Tonne{P "" n} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} Gallone{P "" n} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} Liter -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}Gallone{P "" n} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}Liter +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kp +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kp STR_UNITS_FORCE_SI :{COMMA} kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} Fuß -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}Fuß +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Auswahl-Text: @@ -249,6 +249,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bildlauf STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bildlaufleiste: In der Liste nach links und rechts blättern STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Gebäude etc. von einem Planquadrat abreißen. Strg wählt ein diagonales Gebiet aus. Shift schaltet zwischen Bauen und Kostenvoranschlag um +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Alle einblenden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Alle einblenden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Alle einblenden +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Alle einblenden + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Zeigt auch ausgeblendete Schienenfahrzeuge an +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Zeigt auch ausgeblendete Straßenfahrzeuge an +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Zeigt auch ausgeblendete Schiffe an +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zeigt auch ausgeblendete Flugzeuge an + # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Abbrechen @@ -362,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Beenden ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spieleinstellungen -STR_SETTINGS_MENU_CONFIG_SETTINGS :Erweiterte Einstellungen +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Einstellungen STR_SETTINGS_MENU_SCRIPT_SETTINGS :KI- / Skripteinstellungen STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-Einstellungen STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparenzeinstellungen @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hüllquader anz STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Neugezeichnete Felder farbig markieren ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -811,13 +840,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wartet im Depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wartet im Hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hat zu wenige Aufträge STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hat einen ungültigen Auftrag STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hat Ziele mehrfach im Fahrplan STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hat eine ungültige Station im Fahrplan -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} hat in den Aufträgen einen Flughafen mit zu kurzer Landebahn STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} wird alt STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} wird sehr alt @@ -900,10 +928,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lar STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Fahrzeuge STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wähle, auf welcher Straßenseite der Verkehr fahren soll STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Linksverkehr @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanisch STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosicherung STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Abstand zwischen den automatischen Spielesicherungen wählen +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Jeden Monat STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Alle 3 Monate STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Alle 6 Monate STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Alle 12 Monate +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprache STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sprache für die Spieloberfläche auswählen @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Bildschi STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Bildschirmauflösung auswählen STR_GAME_OPTIONS_RESOLUTION_OTHER :Andere -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshotformat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Format auswählen, in dem Screenshots abgespeichert werden sollen +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Größe der Bedienelemente +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wähle die Größe der Bedienelemente + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doppelt +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Vierfach STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisgrafiken STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zu benutzendes Set an Basisgrafiken auswählen @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Ein Musi STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fehlerhafte Datei{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Zusätzliche Informationen über das Musikset +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Eine Liste unterstützter Auflösungen konnte nicht ermittelt werden STR_ERROR_FULLSCREEN_FAILED :{WHITE}Vollbildmodus nicht möglich # Custom currency window @@ -1050,6 +1081,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Sehr flach STR_TERRAIN_TYPE_FLAT :Flach STR_TERRAIN_TYPE_HILLY :Hügelig STR_TERRAIN_TYPE_MOUNTAINOUS :Bergig +STR_TERRAIN_TYPE_ALPINIST :Alpin STR_CITY_APPROVAL_PERMISSIVE :Hoch STR_CITY_APPROVAL_TOLERANT :Mäßig @@ -1057,8 +1089,8 @@ STR_CITY_APPROVAL_HOSTILE :Gering STR_WARNING_NO_SUITABLE_AI :{WHITE}Keine KI gefunden...{}Verschiedene KI sind via 'Erweiterungen herunterladen' verfügbar -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Erweiterte Einstellungen +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Einstellungen STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Suchtext: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles ausklappen STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles einklappen @@ -1071,11 +1103,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Karten-Einstell STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firmen-Einstellung (in Spielständen gespeichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firmen-Einstellung (im Spielstand gespeichert; beeinflußt nur aktuelle Firma) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Zeige: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beschränkt die Liste auf geänderte Einstellungen -STR_CONFIG_SETTING_RESTRICT_BASIC :Grundlegende Einstellungen -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweiterte Einstellungen -STR_CONFIG_SETTING_RESTRICT_ALL :Alle Einstellungen +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Art: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Vordefinierte Filter auf die untenstehende Liste anwenden +STR_CONFIG_SETTING_RESTRICT_BASIC :Grundlegend (Zeigt nur die wichtigsten Einstellungen) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweitert (Zeigt die meisten Einstellungen) +STR_CONFIG_SETTING_RESTRICT_ALL :Alle (Zeigt alle Einstellungen, auch die abwegigen) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Einstellungen mit Werten verschieden von OpenTTDs Standardwerten STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Einstellungen mit einem Wert verschieden von den eigenen Einstellungen für neue Spiele @@ -1086,6 +1119,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spiel-spezifisc STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spiel-spezifische Einstellungen (im Spielstand gespeichert; beeinflußt nur aktuelles Spiel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmeneinstellungen (im Spielstand gesichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmeneinstellungen (im Spielstand gesichert; beeinflußt nur die aktuelle Firma) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Um alle Suchergebnisse anzuzeigen, setze{}{SILVER}Kategorie {BLACK}auf {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Um alle Suchergebnisse anzuzeigen, setze{}{SILVER}Typ {BLACK}auf {WHITE}Alle Arten von Einstellungen +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Zeige alle Suchergebnisse an indem{}{SILVER}Kategorie {BLACK}auf {WHITE}{STRING} {BLACK}und {SILVER}Art {BLACK}auf {WHITE}Alle Arten von Einstellungen +STR_CONFIG_SETTINGS_NONE :{WHITE}- Keine - STR_CONFIG_SETTING_OFF :Aus STR_CONFIG_SETTING_ON :An @@ -1123,11 +1160,12 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Zügen das Umdr STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Falls aktiv, werden Züge in Durchgangsbahnhöfen nicht umdrehen, auch wenn ein kürzerer Pfad zum nächsten Zielbahnhof mittels Umdrehen verfügbar ist STR_CONFIG_SETTING_DISASTERS :Katastrophen: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ein- oder Ausschalten von Katastrophen, durch die gelegentlich Fahrzeuge oder Infrastruktur blockiert oder zerstört werden können -STR_CONFIG_SETTING_CITY_APPROVAL :Toleranz der Stadtverwaltung bei Landschaftsumgestaltungen: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Toleranz der Stadtverwaltung gegenüber Landschaftsumgestaltungen: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Auswählen, wie stark Lärm und Umweltschäden die Stadtbewertung einer Firma sinken lassen. Bei einer zu schlechten Bewertung werden dann in dieser Stadt keine Bauvorhaben mehr genehmigt -STR_CONFIG_SETTING_BUILDONSLOPES :Das Bauen an Hängen und Küsten erlauben: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Falls aktiviert, können Transportwege und Stationen an die meisten Hänge gebaut werden. Falls deaktiviert, dürfen sie nur dann an einen Hang gebaut werden, wenn dafür keine Fundamente errichtet werden müssen +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximale Höhe auf der Karte: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Setze die maximal erlaubte Höhe für Berge auf der Karte +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Die maximale Höhe der Karte kann nicht auf diesen Wert gesetzt werden. Mindestens ein Berg auf der Karte ist höher. STR_CONFIG_SETTING_AUTOSLOPE :Landschaftsbau unter Gebäuden, Gleisen, usw. erlauben: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaube Erdbauarbeiten unter Gebäuden oder Infrastruktur ohne sie zu entfernen STR_CONFIG_SETTING_CATCHMENT :Verschiedene Stationstypen haben unterschiedlich große Einzugsgebiete: {STRING} @@ -1152,16 +1190,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Zügen und Schi STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-Grad-Kurven entstehen, wenn horizontale Streckenabschnitte unmittelbar auf vertikale Strecken im angrenzenden Feld folgen, so dass der Zug an Stelle der üblichen 45° um eine 90°-Kurve fahren muss. Dies bezieht sich auch auf den Wenderadius von Schiffen STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Erlaube, nicht direkt benachbarte Stationen zu verbinden: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Erlaube den Bau von Stationsteilen, die nicht unmittelbar an andere Stationsfelder angrenzen. Nutze Strg+Klick, um diese mit einer existierenden Station zu verbinden. -STR_CONFIG_SETTING_IMPROVEDLOAD :Verbessertes Beladeverfahren nutzen: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Belade Fahrzeuge nacheinander, wenn mehrere Fahrzeuge an einer Station auf Ladung warten. Das Beladen des zweiten Fahrzeugs wird nur dann vorgenommen, wenn genügend Fracht vorhanden ist, um das erste Fahrzeug komplett zu beladen -STR_CONFIG_SETTING_GRADUAL_LOADING :Fahrzeuge schrittweise beladen: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lade Fahrzeuge schrittweise unter Nutzung der fahrzeugspezifischen Ladezeiten, anstatt alles auf einmal zu festgelegten Zeiten, die nur von der Frachtmenge abhängen, zu laden. STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Inflation einschalten. Beim Spielen mit Inflation steigen die Kosten geringfügig schneller als die Transporteinnahmen -STR_CONFIG_SETTING_SELECTGOODS :Stationen werden nur mit Fracht beliefert, wenn ein Fahrzeug sie von dort abholt: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Liefere nur Fracht an Stationen, wenn sie dort auch nachgefragt wird. Dies verhindert schlechte Bewertungen für nicht bediente Frachtarten STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximallänge für Brücken: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximale Länge für Brücken +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximale Brückenhöhe: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximale Brückenhöhe STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximallänge für Tunnel: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximale Länge für Tunnel STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manueller Bau von Rohstoffindustrien: {STRING} @@ -1187,8 +1221,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Die Position, a STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :am Anfang STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :in der Mitte STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :am Ende -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Fahrzeugwarteschlange (mit Überlagerung): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Lässt Straßenfahrzeuge so lange vor einer besetzten Haltestelle warten, bis sie frei wird STR_CONFIG_SETTING_AUTOSCROLL :Spielfeld scrollen, wenn die Maus am Bildrand anstößt: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Falls aktiv wird der Kartenausschnit scrollen, wenn die Maus nahe dem Fensterrand ist STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ausgeschaltet @@ -1219,10 +1251,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Bus- und Lkw-Ha STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Erlaubt die Errichtung von Bus- und Lkw-Haltestellen auf städtischen Straßen STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Bus- und Lkw-Haltestellen auf Straßen von Mitbewerbern erlauben: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Erlaube die Errichtung von Bus- und Lkw-Haltestellen auf Straßen, die Mitbewerbern gehören -STR_CONFIG_SETTING_ADJACENT_STATIONS :Bau angrenzender Stationen erlauben: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Den Bau von aneinandergrenzenden Stationen erlauben -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Mehrere NewGRF-Fahrzeugsets erlauben: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitätseinstellung für veraltete NewGRFs. NICHT deaktivieren, wenn der Einfluss dieser Einstellung nicht genau bekannt ist! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Diese Einstellung kann nicht geändert werden solange Fahrzeuge im Spiel sind STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Instandhaltung der Infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Unterhaltskosten für Infrastruktur einschalten. Die Unterhaltskosten wachsen mit zunehmender Netzwerkgröße überproportional an, so dass sie größere Firmen stärker belasten als kleinere @@ -1253,35 +1281,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Anzeigedauer f STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Anzeigedauer für Fehlermeldungen in einem roten Fenster. Bedenke, dass einige (kritische) Fehlermeldungen nicht automatisch nach dieser Dauer geschlossen werden sondern manuell geschlossen werden müssen STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} Sekunde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY :Zeige kurzen Hilfetext: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Einstellen, wie lange man zum Aufruf von Hilfetexten zur Erklärung der Funktionen im Spiel mit dem Mauszeiger über der gewünschten Stelle stehenbleiben muss, oder, als Alternative, dass die Hilfetexte bei einem Rechtsklick sofort angezeigt werden sollen -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Nach {COMMA} Sekunde{P 0 "" n} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Einstellen, wie lange man zum Aufruf von Hilfetexten zur Erklärung der Funktionen im Spiel mit dem Mauszeiger über der gewünschten Stelle stehenbleiben muss. Alternativ werden die Hilfetexte bei einem Rechtsklick sofort angezeigt, wenn dieser Wert auf 0 gesetzt wird. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Nach {COMMA} Millisekunde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rechtsklick STR_CONFIG_SETTING_POPULATION_IN_LABEL :Zeige die Einwohnerzahl von Städten neben ihrem Namen: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zeige die Einwohneranzahl neben den Städtenamen auf der Karte an STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linienstärke in Diagrammen: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Strichdicke der Linien in Diagrammen. Dünnere Linien sind genauer ablesbar, dickere Linien sind besser sichtbar und erlauben es, Farben leichter zu unterscheiden +STR_CONFIG_SETTING_LANDSCAPE :Landschaftstyp: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landschaftstype definiert grundlegende Spielscenarien in Bezug auf verfügbare Fracht und Wachstumsvoraussetzungen für Städte. NewGRFs und Spielskripte erlauben weitgehendere Kontrolle dieser Parameter STR_CONFIG_SETTING_LAND_GENERATOR :Algorithmus zur Landschaftserzeugung: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Der orginale Generator hängt von den verwendeten Basisgrafiken ab und setzt vorgefertigte Landschaftsformen zusammen. terraGenesis ist ein auf Perlinrauschen basierter Generator mit erweiterten Einstellmöglichkeiten STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Landschaftstyp: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(nur TerraGenesis) Hügeligkeit der Landschaft +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industriedichte: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Wähle wieviele Industrien generiert werden sollen und welche Anzahl während des Spiels angestrebt wird zu erhalten STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalabstand vom Kartenrand für Ölraffinerien: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ölraffinerien werden nur in der Nähe des Kartenrands gebaut, bei inselreichen Karten nahe der Küste STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Schneegrenze auf: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rauheit (nur TerraGenesis): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wähle die Höhe der Schneefallgrenze im subarktischen Klima. Schnee beeinflusst auch die Platzierung von Industrien und Voraussetzungen für Städtewachstum +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rauheit des Geländes: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(nur TerraGenesis) Wähle die Häufigkeit von Hügeln: Rollende Landschaften haben wenige, weit verteilte Hügel. Zerklüftete Landschaften haben viele Hügel, was wiederum sich wiederholend aussehen kann STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sehr eben STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Eben -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rau -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sehr rau +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :zerklüftet +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sehr zerklüftet +STR_CONFIG_SETTING_VARIETY :Größe der Geländeformen: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(nur TerraGenesis) Beinflusst, ob die Karte sowohl bergige als auch ebene Gegenden enthält. Weil dieses die Karte nur ebener macht, sollten andere Einstellungen auf bergig gesetzt werden +STR_CONFIG_SETTING_RIVER_AMOUNT :Anzahl Flüsse: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Wähle die Anzahl zu erzeugender Flüsse STR_CONFIG_SETTING_TREE_PLACER :Algorithmus zur Baumplatzierung: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Wähle die Verteilung der Bäume auf der Karte: 'Original' pflanzt die Bäume gleichmäßig verteilt, 'Verbessert' pflanzt sie in Gruppen STR_CONFIG_SETTING_TREE_PLACER_NONE :Keiner STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Verbessert +STR_CONFIG_SETTING_ROAD_SIDE :Straßenfahrzeuge: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Die Seite des Straßenverkehrs auswählen STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Drehung der Reliefkarte: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nach links STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Nach rechts STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Höhenstufe des Spielfeldes in einem flachen Szenario: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Landschaftsbau am Spielfeldrand erlauben: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Wenn aktiviert, können sowohl Wasser- als auch Landflächen am Kartenrand liegen. Ansonsten wird das Spielfeld am Rand immer von Wasser begrenzt. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ein oder mehrere Felder am nördlichen Spielfeldrand sind nicht leer STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Eines oder mehrere Felder am Spielfeldrand sind nicht Wasser @@ -1332,17 +1374,15 @@ 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_AUTOSAVE :Autosave: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Wähle das Interval zwischen automatischen Speicherungen + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Verwende {STRING} Datumsformat beim Benennen der Spielstände STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Lege das Datumsformat für Spielstandsdateien fest STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langes (25. Dez 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kurzes (25-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-25) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard-Palette für NewGRFs, die keine Paletteninformationen angeben: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalette für NewGRFs, die keine Palette definieren -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-Palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows-Palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatische Pause bei Spielstart: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Starte ein Spiel im Pausenmodus; dies erlaubt vor Spielstart, die Karte ausführlich zu betrachten. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Erlauben während angehaltenen Spiels: {STRING} @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Wartungsinterva STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Lege fest, ob Fahrzeuge zur Wartung geschickt werden basierend auf der verstrichenen Zeit seit der letzten Wartung oder dem Absinken der Zuverlässigkeit auf einen gewissen Prozentsatz der maximalen Zuverlässigkeit des Fahrzeugtyps STR_CONFIG_SETTING_SERVINT_TRAINS :Standard-Wartungsintervall für Züge: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Setze das Standardwartungsintervall für Schienenfahrzeuge. Dieses Wartungsintervall wird von allen Zügen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} Tag{P 0 "" e}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Tag{P 0 "" e}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiviert STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard-Wartungsintervall für Straßenfahrzeuge: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Setze das Standardwartungsintervall für Straßenfahrzeuge. Dieses Wartungsintervall wird von allen Fahrzeugen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist @@ -1564,12 +1604,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 von {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :keine STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Größe von Großstädten bei Spielbeginn: {STRING}x STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Durchschnittliche Größe von Großstädten relativ zu normalen Städten bei Spielbeginn -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Entferne absurde Straßenteile während Straßenreparaturen: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Entferne Sackgassen, wenn Straßenbauarbeiten finanziert werden -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Neuberechnung der Warenverteilung alle: {STRING} Tag{P "" e} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Neuberechnung der Warenverteilung alle: {STRING}{NBSP}Tag{P 0:2 "" e} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Zeit zwischen zwei Neuberechnungen des Verteilungsgraphen. Jede Neuberechnung berechnet die Verteilungspläne für eine Komponente des Graphen. Das heißt dass ein Wert X für diese Einstellung nicht zu einer Neuberechnung der gesamten Verteilung alle X Tage führt, sofern es mehrere getrennte Komponenten gibt. Je kleiner der Wert, desto rechenaufwändiger ist die Berechnung. Je größer er ist, desto länger dauert es bis Änderungen an den Fahrplänen sich auf die Verteilung auswirken. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Laufzeit für jede Neuberechnung der Warenverteilung: {STRING} Tag{P 0:2 "" e} +STR_CONFIG_SETTING_LINKGRAPH_TIME :Laufzeit für jede Neuberechnung der Warenverteilung: {STRING}{NBSP}Tag{P 0:2 "" e} STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Laufzeit für jede Neuberechnung des Verteilungsgraphen. Für jede Neuberechnung wird ein Thread gestartet, der diese Zeit bekommt, um fertig zu werden. Wenn die Zeit gering ist, ist die Wahrscheinlichkeit hoch, dass er zum gegebenen Zeitpunkt noch nicht fertig ist. Das manifestiert sich darin, dass das Spiel "stehen bleibt", bis der Thread fertig wird. Wenn die Zeit sehr lang ist, dauert es länger bis Änderungen an den Fahrplänen sich auf die Verteilung auswirken. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuell STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisch @@ -1588,7 +1626,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Einfluss der En STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Wenn hier ein Wert größer als 0 gewählt wird, so spielt die Entfernung zwischen dem Ursprung und den möglichen Zielen eine Rolle bei der Verteilung von Waren. Je größer die Entfernung und je höher der Wert, desto geringer der Anteil der Waren, die zu der entsprechenden Station geschickt werden. STR_CONFIG_SETTING_DEMAND_SIZE :Einfluss der Beliebtheit der Zielhaltestelle auf die Transportnachfrage bei symmetrischen Verbindungen: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Wenn hier weniger als 100% gesetzt wird, so verhält sich die symmetrische Verteilung mehr wie die asymmetrische. Das heißt weniger Waren werden für eine gegebene Menge in einer Richtung reisender Waren zurück geschickt. Wenn hier 0 angegeben wird, verhält sich die symmetrische wie die asymmetrische Verteilung. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Auslastung der kürzeren Verbindungenen bevor längere Verbindungen gewählt werden: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Auslastung der kürzeren Verbindungen bevor längere Verbindungen gewählt werden: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Häufig gibt es mehrere Verbindungen um von einer Station zu einer anderen zu kommen. Zuerst wird der Algorithmus die kürzesten Verbindungen auslasten, dann die längeren usw. Wenn alle Verbindungen ausgelastet sind, verteilt er die verbliebene Nachfrage gleichmäßig. Diese Einstellung besagt, ab welcher Auslastung eine Verbinudng als "voll" gilt und der Algorithmus in der ersten Runde die nächst längere wählt. Da die Kapazität der Verbindungen geschätzt wird, ist es sinnvoll, hier weniger als 100% anzugeben, um etwas "Luft" für Fehlschätzungen zu lassen. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Geschwindigkeitseinheit: {STRING} @@ -1627,27 +1665,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Oberfläche STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisierung -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik +STR_CONFIG_SETTING_SOUND :{ORANGE}Sound +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Oberfläche +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Allgemein +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Kartenansichten +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nachrichten und Hinweise +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Finanzen STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fahrzeuge -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationen -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Wirtschaft -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Warenverteilung +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physik +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wegsuche +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beschränkungen +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Unfälle und Katastrophen +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Spielfeld-Erzeugung +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Umgebung +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Öffentliche Verwaltungen +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Städte +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrien +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Warenverteilung STR_CONFIG_SETTING_AI :{ORANGE}Mitbewerber -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Darstellung -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktion -STR_CONFIG_SETTING_SOUND :{ORANGE}Soundeffekte -STR_CONFIG_SETTING_NEWS :{ORANGE}Nachrichten -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signale -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Frachtbehandlung STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspieler -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatische Erneuerung -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Wartung -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wegsuche -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Züge -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Städte -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrien STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1696,7 +1736,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Mehrspie STR_INTRO_GAME_OPTIONS :{BLACK}Spieleinstellungen STR_INTRO_HIGHSCORE :{BLACK}Bestenliste -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Erweiterte Einstellungen +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Einstellungen STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen STR_INTRO_ONLINE_CONTENT :{BLACK}Erweiterungen herunterladen STR_INTRO_SCRIPT_SETTINGS :{BLACK}KI- / Skripteinstellungen @@ -1716,7 +1756,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Spielzeu STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Spieleinstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zeige die Bestenliste -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Erweiterte Einstellungen anzeigen und/oder ändern +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Einstellungen anzeigen STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Prüfe, ob neue oder aktualisierte Erweiterungen zum Herunterladen bereitstehen STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zeige KI- und Skripteinstellungen @@ -1756,6 +1796,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiele STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Mächtigeres Abrisswerkzeug (entfernt Industrien und unbewegliche Objekte): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnel dürfen sich kreuzen: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Düsenflugzeuge stürzen auf kleinen Flughäfen nicht häufiger ab: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Ändere die maximale Höhe auf der Karte: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Die Maximalhöhe von Bergen auf der Karte ändern STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gemäßigt STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktisch STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisch @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Frachtstraßenb STR_FACE_CAPTION :{WHITE}Gesicht auswählen STR_FACE_CANCEL_TOOLTIP :{BLACK}Gesichtswahl abbrechen STR_FACE_OK_TOOLTIP :{BLACK}Gesichtswahl übernehmen +STR_FACE_RANDOM :{BLACK}Zufällig STR_FACE_MALE_BUTTON :{BLACK}Männlich STR_FACE_MALE_TOOLTIP :{BLACK}Wähle männliches Gesicht aus @@ -1924,13 +1967,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Ein Pass STR_NETWORK_START_SERVER_UNADVERTISED :Nein STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Teilnehmer -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max. Teilnehmeranzahl: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximale Teilnehmeranzahl: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Auswahl der maximal erlaubten Anzahl von Teilnehmern. Nicht alle Slots müssen belegt werden STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} Firm{P a en} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. Firmenanzahl: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximale Firmenanzahl: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrenzt den Server auf eine bestimmte Anzahl an Firmen STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} Zuschauer -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. Zuschaueranzahl: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximale Zuschaueranzahl: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrenzt den Server auf eine gewisse Anzahl an Zuschauern STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Gesprochene Sprache: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Damit andere Spieler wissen, welche Sprache auf diesem Server gesprochen wird @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Teilnehmer STR_NETWORK_SPECTATORS :Zuschauer STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wieviel Geld soll übergeben werden? +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Zuschauer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Eingegebenes Passwort nicht speichern @@ -2546,7 +2590,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Name des STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Angenommene Frachtarten: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Erlaubte Höchstgeschwindigkeit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Höchstgeschwindigkeit Schiene: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Höchstgeschwindigkeit Straße: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Felsen @@ -2643,7 +2688,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-2013 OpenTTD-Team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD-Team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Speicher STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Speichere das Spiel unter dem gewählten Namen STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laden STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ausgewählten Spielstand laden +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Ausgewähltes Höhenrelief laden STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spielstand-Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keine Informationen verfügbar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2677,13 +2723,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Städteanzahl: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industriedichte: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximalhöhe der Karte: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Die Maximalhöhe von Bergen auf der Karte um eins erhöhen +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Die Maximalhöhe von Bergen auf der Karte um eins verringern STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Schneegrenze: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Schneegrenze um eine Stufe erhöhen STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Schneegrenze um eine Stufe senken -STR_MAPGEN_RANDOM_SEED :{BLACK}Zufallsstartwert: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Zufallsstartwert eingeben -STR_MAPGEN_RANDOM :{BLACK}Zufällig -STR_MAPGEN_RANDOM_HELP :{BLACK}Ändere den Zufallsstartwert für die Landschaftsgenerierung STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Baumalgorithmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Landschaftstyp: @@ -2710,7 +2755,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Reliefka STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Größe: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Zufallsstartwert eingeben +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maximalhöhe der Karte ändern STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Höhe der Schneegrenze ändern STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Startjahr ändern @@ -2765,6 +2810,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Nach obe STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach oben verschieben STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Nach unten STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach unten verschieben +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Update +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}NewGRF-Dateien updaten für die eine neuere Version installiert ist STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Eine Liste der installierten NewGRF-Dateien STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parameter setzen @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Zugehörig STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktiviert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nicht mit dieser Version von OpenTTD kompatibel +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Voreinstellung speichern +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liste der verfügbaren Voreinstellungen. Eine wählen, um deren Namen zum Speichern auszuwählen +STR_SAVE_PRESET_TITLE :{BLACK}Namen der Voreinstellung eingeben +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Name, der zum Speichern der Voreinstellung verwendet wird +STR_SAVE_PRESET_CANCEL :{BLACK}Abbrechen +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Voreinstellung nicht ändern +STR_SAVE_PRESET_SAVE :{BLACK}Speichern +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Voreinstellung unter dem ausgewählten Namen speichern + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF Parameter ändern STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Schließen @@ -2819,7 +2876,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorherig STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gehe zum vorherigen normalen Sprite und überspringe alle Pseudo-, Recolour- und Schriftsprites (springt ggf. vom letzten bis zum ersten Sprite) STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Darstellung des aktuellen Sprites. Die Ausrichtung wird beim Zeichnen des Sprites ignoriert STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bewege die Sprites und ändere dadurch die X- und Y-Offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite auswählen STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wähle ein Sprite vom Bildschirm aus @@ -2876,6 +2932,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Fehlende D STR_NEWGRF_BROKEN :{WHITE}Verhalten des NewGRFs '{STRING}' wird voraussichtlich zu Synchronisationsfehlern und/oder Absturz des Spiels führen STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ändert die Antriebseigenschaften für '{1:ENGINE}' außerhalb von Depots STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Verändert die Fahrzeuglänge von '{1:ENGINE}' außerhalb eines Depots +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ändert die Ladekapazität für '{1:ENGINE}' ohne Umrüst-Auftrag außerhalb von Depots STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zug '{VEHICLE}' der Firma '{COMPANY}' hat eine ungültige Länge. Vermutlich ein NewGRF Problem. Spiel kann desynchronisieren oder abstürzen STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' liefert falsche Informationen @@ -2890,6 +2947,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRFs werden eingelesen STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRFs werden eingelesen. Je nach deren Anzahl könnte dies eine Weile dauern... @@ -2927,8 +2987,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} geliefert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (noch benötigt) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (geliefert) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten Tag -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten Tag (finanziert) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten{NBSP}Tag +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten{NBSP}Tag (finanziert) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Die Stadt wächst {RED}nicht{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Lärmbelastung in der Stadt: {ORANGE}{COMMA}{BLACK} Grenzwert: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht zur Stadt scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Stadt @@ -2988,7 +3048,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Hinweis STR_GOAL_QUESTION_CAPTION_WARNING :Warnung STR_GOAL_QUESTION_CAPTION_ERROR :Fehler -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Abbruch STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nein @@ -3007,6 +3067,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Neustart STR_GOAL_QUESTION_BUTTON_POSTPONE :Verschieben STR_GOAL_QUESTION_BUTTON_SURRENDER :Aufgeben STR_GOAL_QUESTION_BUTTON_CLOSE :Schließen +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subventionen @@ -3027,6 +3088,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Zurück STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Die vorherige Seite anzeigen STR_STORY_BOOK_NEXT_PAGE :{BLACK}Vor STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Die nächste Seite anzeigen +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ungültiger Verweis auf ein Spielziel # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnamen - Klick auf den Namen zentriert Hauptansicht auf die Station. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Station @@ -3041,7 +3103,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Keine Fr # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Es warten: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} von {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserviert zum Beladen) @@ -3291,6 +3352,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Ausgewä STR_GROUP_RENAME_TOOLTIP :{BLACK}Ausgewählte Gruppe umbenennen STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Diese Gruppe von der automatischen Fahrzeugersetzung ausschließen +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Gruppe löschen +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Sicher, dass diese Gruppe inklusive aller Untergruppen gelöscht werden soll? + STR_GROUP_ADD_SHARED_VEHICLE :Gemeinsame Fahrzeuge hinzufügen STR_GROUP_REMOVE_ALL_VEHICLES :Liste leeren @@ -3328,10 +3392,10 @@ STR_PURCHASE_INFO_ALL_BUT :Alles außer {C STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zugkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Reichweite: {GOLD}{COMMA} Felder -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Schienenfahrzeugsliste - Einzelheiten durch Anklicken des Fahrzeuges -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeugsliste - Klicke auf ein Fahrzeug für Einzelheiten -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schiffsliste - für Einzelheiten auf das Schiff klicken -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeugliste - Klick auf das Flugzeug zeigt weitere Einzelheiten an +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schiffsliste - für Einzelheiten auf das Schiff klicken. Strg+Klick schaltet um zwischen Verstecken und Zeigen des Schiffstyps +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeugliste - Klick auf das Flugzeug zeigt weitere Einzelheiten an. Strg+Klick schaltet um zwischen Verstecken und Zeigen des Fahrzeugtyps STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Fahrzeug kaufen STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Fahrzeug kaufen @@ -3353,6 +3417,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Fahrzeug STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Schiff umbenennen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Flugzeug umbenennen +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ausblenden +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ausblenden +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ausblenden +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ausblenden + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Einblenden +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Einblenden +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Einblenden +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Ausblenden + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Blende das Schienenfahrzeug aus / ein +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Blende das Straßenfahrzeug aus / ein +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Blende das Schiff aus / ein +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Blende das Flugzeug aus / ein + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zugtyp umbenennen STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Fahrzeug umbenennen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Schiff umbenennen @@ -3406,7 +3485,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Fahrzeug STR_DEPOT_CLONE_SHIP :{BLACK}Schiff kopieren STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Flugzeug kopieren -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Kauft eine Kopie des Zuges mit allen Waggons. Klicke diese Schaltfläche und dann auf einen Zug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Kauft eine Kopie des Zuges mit allen Wagons. Klicke diese Schaltfläche und dann auf einen Zug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Kauft eine Kopie des Fahrzeuges. Klicke auf diese Schaltfläche und dann auf ein Fahrzeug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Kauft eine Kopie des Schiffes. Klicke diese Schaltfläche und dann auf eine Schiff innerhalb oder außerhalb der Werft. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Kauft eine Kopie des Flugzeuges. Klicke auf diese Schaltfläche und dann auf ein Flugzeug innerhalb oder außerhalb des Hangars. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um @@ -3457,6 +3536,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Straßenfahrzeu STR_REPLACE_VEHICLE_SHIP :Schiff STR_REPLACE_VEHICLE_AIRCRAFT :Flugzeug +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Verwendete Fahrzeuge +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Spalte mit Fahrzeugen aus dem eigenen Besitz +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Verfügbare Fahrzeuge +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Spalte mit verfügbaren Ersatzfahrzeugen + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Zu ersetzenden Fahrzeugtyp auswählen STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Fahrzeugtyp auswählen, der anstelle des links gewählten Typs verwendet werden soll @@ -3581,7 +3665,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapazit STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer-Einnahmen: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}Tag{P "" e} {BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}{NBSP}Tag{P "" e} {BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}%{BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Wartungsintervall um 10 erhöhen. Strg+Klick erhöht um 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Wartungsintervall um 10 verringern. Strg+Klick verringert um 5 @@ -3679,8 +3763,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ändert STR_ORDER_REFIT :{BLACK}Umrüsten STR_ORDER_REFIT_TOOLTIP :{BLACK}Frachtart auswählen, auf die umgerüstet werden soll. Strg+Klick, um einen Umrüstungsauftrag wieder zu entfernen -STR_ORDER_REFIT_AUTO :{BLACK}Automatisches Umrüsten -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Auswählen, auf welche Frachtart automatisch umgerüstet wird. Strg+Klick um Auftrag zum Umrüsten zu entfernen. Automatisches Umrüsten wird vorgenommen, wenn das Fahrzeug es zuläßt. +STR_ORDER_REFIT_AUTO :{BLACK}Umrüstung im Bahnhof +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Auswählen, auf welche Frachtart umgerüstet wird. Strg+Klick um Auftrag zum Umrüsten zu entfernen. Umrüsten wird vorgenommen, wenn das Fahrzeug es zuläßt. STR_ORDER_DROP_REFIT_AUTO :Vorgegebene Fracht STR_ORDER_DROP_REFIT_AUTO_ANY :Verfügbare Fracht @@ -3771,18 +3855,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nicht entladen STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nicht entladen, aber voll beladen mit beliebiger Fracht) STR_ORDER_NO_UNLOAD_NO_LOAD :(Weder entladen noch beladen) -STR_ORDER_AUTO_REFIT :(Automatische Umrüstung auf {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Volladen mit automatischer Umrüstung auf {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Volladen einer Frachtart und automatischer Umrüstung auf {STRING}) -STR_ORDER_UNLOAD_REFIT :(Entladen und laden mit automatischer Umrüstung auf {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entladen und warten auf volle Zuladung einer Frachtart mit automatischer Umrüstung auf {STRING}) -STR_ORDER_TRANSFER_REFIT :(Umladen und laden mit automatischer Umrüstung auf {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Umladen und warten auf volle Zuladung einer Frachtart mit automatischer Umrüstung auf {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Nicht entladen und laden mit automatischer Umrüstung auf {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nicht entladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nicht entladen und warten auf volle Zuladung einer Fracht mit automatischer Umrüstung auf {STRING}) +STR_ORDER_AUTO_REFIT :(Umrüstung auf {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Volladen mit Umrüstung auf {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Volladen einer Frachtart und Umrüstung auf {STRING}) +STR_ORDER_UNLOAD_REFIT :(Entladen und laden mit Umrüstung auf {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit Umrüstung auf {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entladen und warten auf volle Zuladung einer Frachtart mit Umrüstung auf {STRING}) +STR_ORDER_TRANSFER_REFIT :(Umladen und laden mit Umrüstung auf {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit Umrüstung auf {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Umladen und warten auf volle Zuladung einer Frachtart mit Umrüstung auf {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Nicht entladen und laden mit Umrüstung auf {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nicht entladen und warten auf volle Zuladung mit Umrüstung auf {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nicht entladen und warten auf volle Zuladung einer Fracht mit Umrüstung auf {STRING}) STR_ORDER_AUTO_REFIT_ANY :verfügbare Fracht @@ -3808,13 +3892,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Fahrplan STR_TIMETABLE_NO_TRAVEL :Nicht unterwegs STR_TIMETABLE_NOT_TIMETABLEABLE :Unterwegs (automatisch; Fahrplan abhängig vom nächsten manuellen Auftrag) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Unterwegs (ohne Fahrplan) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Fahrt mit höchstens {2:VELOCITY} (ohne Fahrplan) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Fahrt (ohne Fahrplan) mit höchstens {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :{STRING} unterwegs STR_TIMETABLE_TRAVEL_FOR_SPEED :Fahrt zu {STRING} mit höchstens {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Fahre ({STRING}, ohne Fahrplan) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Fahre ({STRING}, ohne Fahrplan) mit höchstens {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(warte {STRING}, ohne Fahrplan) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(fahre {STRING}, ohne Fahrplan) STR_TIMETABLE_STAY_FOR :und {STRING} lang bleiben STR_TIMETABLE_AND_TRAVEL_FOR :und {STRING} lang unterwegs -STR_TIMETABLE_DAYS :{COMMA} Tag{P "" e} -STR_TIMETABLE_TICKS :{COMMA} Tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}Tag{P "" e} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}Tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Dieser Fahrplan benötigt {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Dieser Fahrplan benötigt mindestens {STRING} (nicht alle geplant) @@ -3940,6 +4028,8 @@ STR_AI_SETTINGS_START_DELAY :Wartezeit in Ta STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}-Liesmich von {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} Änderungen von {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}-Lizenz von {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Text umbrechen +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Text des Fensters so umbrechen, dass es ohne Scrollen hineinpasst STR_TEXTFILE_VIEW_README :{BLACK}Liesmich anzeigen STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Änderungen STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lizenz @@ -4050,6 +4140,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Die Auss STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ist bereits auf Meereshöhe STR_ERROR_TOO_HIGH :{WHITE}... zu hoch STR_ERROR_ALREADY_LEVELLED :{WHITE}... ist schon flach +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Anschließend wäre die Brücke darüber zu hoch. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Firmenname kann nicht geändert werden... @@ -4076,7 +4167,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... zu d STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... zu dicht an einer anderen Stadt STR_ERROR_TOO_MANY_TOWNS :{WHITE}... zu viele Städte STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... es ist kein Platz mehr auf dem Spielfeld -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Städte bauen im Moment keine Straßen. Städtischer Straßenbau kann mittels Erweiterte Einstellungen->Wirtschaft->Städte eingestellt werden +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Städte bauen im Moment keine Straßen. Städtischer Straßenbau kann mittels Einstellungen->Umgebung->Städte eingestellt werden STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Straßenarbeiten sind im Gange STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Stadt kann nicht gelöscht werden...{}Eine Station oder ein Depot bezieht sich auf diese Stadt oder ein Feld im städtischen Besitz kann nicht entfernt werden. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... es gibt keinen geeigneten Standort für die Statue im Zentrum dieser Stadt @@ -4100,6 +4191,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... Wald STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kann nur oberhalb der Schneegrenze errichtet werden STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann nur unterhalb der Schneegrenze errichtet werden +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Es konnten für die Industrie '{STRING}' keine geeigneten Standorte gefunden werden +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Ändere die Karteneinstellungen, um eine bessere Karte zu erzeugen + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Bahnhof kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Bushaltestelle kann nicht gebaut werden... @@ -4236,6 +4330,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Die Brü STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Anfang und Ende können nicht im selben Feld liegen STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brückenköpfe nicht auf der selben Höhe STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Die Brücke ist zu niedrig für diese Umgebung +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Brücke ist zu hoch für dieses Terrain. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Anfang und Ende müssen auf einer Linie liegen STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... Brücke muss an beiden Seiten auf Land enden STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... Brücke zu lang @@ -4262,6 +4357,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ist STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Gruppe kann nicht erstellt werden... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Gruppe kann nicht gelöscht werden... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Gruppe kann nicht umbenannt werden... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Übergeordnete Gruppe kann nicht gesetzt werden... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Entfernen aller Fahrzeuge dieser Gruppe nicht möglich... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Fahrzeug kann nicht zu dieser Gruppe hinzugefügt werden... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Fahrzeuge mit gemeinsamen Fahrplan können nicht zur Gruppe hinzugefügt werden... @@ -4496,7 +4592,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Dampf) @@ -4530,7 +4626,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Sicherheitstransporter -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Lebensmitteltransporter +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Nahrungstransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Wassertanker @@ -4560,7 +4656,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Sicherheitstransporter -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Lebensmitteltransporter +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Nahrungstransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Wassertanker @@ -4592,7 +4688,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Sicherheitstransporter -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Lebensmitteltransporter +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Nahrungstransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Wassertanker @@ -4705,7 +4801,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagierschiff STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Frachter STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Frachter -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Frachter +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Frachter STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Frachter STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4799,6 +4895,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ausgeblendet) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4931,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4941,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/greek.txt b/src/lang/greek.txt index f36e281513..90892a02ea 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -158,30 +158,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.subs :{G=n}Αναψυ # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} επιβάτ{P ης ες} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}επιβάτ{P ης ες} STR_QUANTITY_COAL :{WEIGHT_LONG} άνθρακα -STR_QUANTITY_MAIL :{COMMA} σάκο{P ς ι} με αλληλογραφία +STR_QUANTITY_MAIL :{COMMA}{NBSP}σάκο{P ς ι} με αλληλογραφία STR_QUANTITY_OIL :{VOLUME_LONG} πετρελαίου -STR_QUANTITY_LIVESTOCK :{COMMA} τεμάχι{P ο α} ζώων -STR_QUANTITY_GOODS :{COMMA} κιβώτι{P ο α} αγαθών +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}τεμάχι{P ο α} ζώων +STR_QUANTITY_GOODS :{COMMA}{NBSP}κιβώτι{P ο α} αγαθών STR_QUANTITY_GRAIN :{WEIGHT_LONG} σιτηρών STR_QUANTITY_WOOD :{WEIGHT_LONG} ξύλου STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} μεταλλεύματος σιδήρου STR_QUANTITY_STEEL :{WEIGHT_LONG} χάλυβα -STR_QUANTITY_VALUABLES :{COMMA} σάκ{P ος οι} με πολύτιμα είδη +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}σάκ{P ος οι} με πολύτιμα είδη STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} μεταλλεύματος χαλκού STR_QUANTITY_MAIZE :{WEIGHT_LONG} καλαμποκιού STR_QUANTITY_FRUIT :{WEIGHT_LONG} φρούτων -STR_QUANTITY_DIAMONDS :{COMMA} σάκ{P ος οι} με διαμάντια +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}σάκ{P ος οι} με διαμάντια STR_QUANTITY_FOOD :{WEIGHT_LONG} τροφίμων STR_QUANTITY_PAPER :{WEIGHT_LONG} χαρτιού -STR_QUANTITY_GOLD :{COMMA} σάκ{P ος οι} με χρυσό +STR_QUANTITY_GOLD :{COMMA}{NBSP}σάκ{P ος οι} με χρυσό STR_QUANTITY_WATER :{VOLUME_LONG} νερού STR_QUANTITY_WHEAT :{WEIGHT_LONG} σιταριού STR_QUANTITY_RUBBER :{VOLUME_LONG} λάστιχου STR_QUANTITY_SUGAR :{WEIGHT_LONG} ζάχαρης -STR_QUANTITY_TOYS :{COMMA} παιχνίδι{P "" α} -STR_QUANTITY_SWEETS :{COMMA} σάκ{P ος οι} με γλυκά +STR_QUANTITY_TOYS :{COMMA}{NBSP}παιχνίδι{P "" α} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}σάκ{P ος οι} με γλυκά STR_QUANTITY_COLA :{VOLUME_LONG} κόλας STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} μαλλιού της γριάς STR_QUANTITY_BUBBLES :{COMMA} φυσαλίδ{P α ες} @@ -228,12 +228,12 @@ STR_ABBREV_NONE :{TINY_FONT}ΤΠ STR_ABBREV_ALL :{TINY_FONT}ΟΛΑ # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} επιβάτ{P ης ες} -STR_BAGS :{COMMA} σάκκ {P ος οι} -STR_TONS :{COMMA} τόνο{P ς οι} -STR_LITERS :{COMMA} λίτρ{P ο α} -STR_ITEMS :{COMMA} αντικείμεν{P ο α} -STR_CRATES :{COMMA} κουτ{P ί ιά} +STR_PASSENGERS :{COMMA}{NBSP}επιβάτ{P ης ες} +STR_BAGS :{COMMA}{NBSP}σάκκ {P ος οι} +STR_TONS :{COMMA}{NBSP}τόνο{P ς οι} +STR_LITERS :{COMMA}{NBSP}λίτρ{P ο α} +STR_ITEMS :{COMMA}{NBSP}αντικείμεν{P ο α} +STR_CRATES :{COMMA}{NBSP}κουτ{P ί ιά} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Σκούρο Μπλε @@ -254,36 +254,44 @@ STR_COLOUR_GREY :Γκρι STR_COLOUR_WHITE :Λευκό # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} χλμ/ώρα -STR_UNITS_VELOCITY_SI :{COMMA} μ/δ +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}χλμ/ω +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} τόνο{P ς ι} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}τόνο{P ς ι} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}τόνο{P ς ι} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}λ -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}γαλ +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}λ +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} λίτρ{P ο α} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}γαλόν{P "ι" "ια"} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}λίτρ{P ο α} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} πόδια -STR_UNITS_HEIGHT_SI :{COMMA} μ +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}πόδια +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}μ +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Φιλτράρισμα λίστας: STR_LIST_FILTER_OSKTITLE :{BLACK}Εισαγώγη κειμένου για φιλτράρισμα STR_LIST_FILTER_TOOLTIP :{BLACK}Εισάγετε μια λέξη για φιλτράρισμα της λίστας +STR_TOOLTIP_GROUP_ORDER :{BLACK}Επιλέξτε κατάταξη ομαδοποίησης STR_TOOLTIP_SORT_ORDER :{BLACK}Επιλογή σειράς ταξινόμησης (καθοδικά/ανοδικά) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Επιλογή κριτηρίου ταξινόμησης STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Επιλέξτε κριτήρια φιλτραρίσματος @@ -295,12 +303,24 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Κλεί STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε STR_TOOLTIP_SHADE :{BLACK}Σκίαση παραθύρου - Εμφάνιση μόνο της μπάρας τιτλου STR_TOOLTIP_DEBUG :{BLACK}Εμφάνιση πληροφοριών αποσφαλμάτωσης για NewGRF -STR_TOOLTIP_STICKY :{BLACK}Σημείωση αυτού του παραθύρου να μην κλείνει από το πλήκτρο 'Κλείσιμο Όλων των Παραθύρων' +STR_TOOLTIP_DEFSIZE :{BLACK}Κλιμακώνει το παράθυρο στο προκαθορισμένο μέγεθος. Με Ctrl+Click αποθηκεύεται το τρέχον μέγεθος ως προκαθορισμένο +STR_TOOLTIP_STICKY :{BLACK}Σημειώστε αυτό το παραθύρο ωστέ να μην κλείνει από το πλήκτρο «Κλείσιμο Όλων των Παραθύρων». Πατήστε Ctrl+Κλικ για να αποθηκεύσετε την κατάσταση απο επιλογή STR_TOOLTIP_RESIZE :{BLACK}Κάντε κλίκ και σύρετε για να αλλάξετε το μέγεθος του παραθύρου STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Εναλλαγή μεγάλου/μικρού παραθύρου STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Μπάρα Κύλισης - μετακινεί την λίστα πάνω/κάτω STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Μπάρα κίνησης - κινεί τη λίστα αριστερά/δεξιά -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Κατεδάφιση κτιρίων κλπ. σε συγκεκριμένο τετράγωνο. Το Ctrl επιλέγει την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Κατεδάφιση κτιρίων κλπ. σε συγκεκριμένο τετράγωνο. Με Ctrl επιλέγεται μια επιφάνεια διαγώνια. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Εμφάνιση κρυφών +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Εμφάνιση κρυφών +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Εμφάνιση κρυφών +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Εμφάνιση κρυφών + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ενεργοποιώντας αυτό το κουμπί, εμφανίζονται και τα κρυφά βαγόνια +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ενεργοποιώντας αυτό το κουμπί, εμφανίζονται και τα κρυφά οχήματα δρόμου +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ενεργοποιώντας αυτό το κουμπί, εμφανίζονται και τα κρυφά πλοία +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ενεργοποιώντας αυτό το κουμπί, εμφανίζονται και τα κρυφά αεροσκάφη # Query window STR_BUTTON_DEFAULT :{BLACK}Προεπιλογή @@ -339,16 +359,18 @@ STR_SORT_BY_LENGTH :Μήκος STR_SORT_BY_LIFE_TIME :Υπόλοιπη διάρκεια ζωής STR_SORT_BY_TIMETABLE_DELAY :Καθυστέρηση δρομολογίου STR_SORT_BY_FACILITY :Τύπος σταθμού +STR_SORT_BY_WAITING_TOTAL :Σύνολο εμπορεύματος εν αναμονή +STR_SORT_BY_WAITING_AVAILABLE :Διαθέσιμο εμπόρευμα εν αναμονή STR_SORT_BY_RATING_MAX :Υψηλότερη βαθμολογία φορτίου STR_SORT_BY_RATING_MIN :Χαμηλότερη βαθμολογία φορτίου STR_SORT_BY_ENGINE_ID :EngineID (κλασική ταξινόμηση) STR_SORT_BY_COST :Κόστος STR_SORT_BY_POWER :Δύναμη STR_SORT_BY_TRACTIVE_EFFORT :Δύναμη έλξης -STR_SORT_BY_INTRO_DATE :Ημερομηνία Παρουσιάσης -STR_SORT_BY_RUNNING_COST :Λειτουργικό Κόστος -STR_SORT_BY_POWER_VS_RUNNING_COST :Ισχύς/Λειτουργικό Κόστος -STR_SORT_BY_CARGO_CAPACITY :Χωρητικότητα Φορτίου +STR_SORT_BY_INTRO_DATE :Ημερομηνία παρουσιάσης +STR_SORT_BY_RUNNING_COST :Λειτουργικό κόστος +STR_SORT_BY_POWER_VS_RUNNING_COST :Ισχύς/Λειτουργικό κόστος +STR_SORT_BY_CARGO_CAPACITY :Χωρητικότητα φορτίου STR_SORT_BY_RANGE :Εύρος STR_SORT_BY_POPULATION :Πληθυσμός STR_SORT_BY_RATING :Εκτίμηση @@ -364,12 +386,13 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Εμφά STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Εμφάνιση λίστας σταθμών της εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Εμφάνιση οικονομικών πληροφοριών εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Εμφάνιση γενικών πληροφοριών της εταιρίας +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Εμφάνιση λίστας στόχων STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Εμφάνιση γραφημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Εμφάνιση πίνακα κατάταξης των εταιριών STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Χρηματοδοτήστε την κατασκευή νέας βιομηχανίας STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Εμφάνιση λίστας τρένων της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Εμφάνιση λίστας με τα οδικά οχήματα της εταιρίας. Το Ctrl+Κλικ εναλλάσσει το άνοιγμα της λίστας ομάδων/οχημάτων -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Εμφάνιση λίστας με τα πλοία της εταιρίας. Το Ctrl+Κλικ εναλλάσσει το ανοίγμα της λίστας ομάδων/οχημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Εμφάνιση λίστας με τα οδικά οχήματα της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Εμφάνιση λίστας με τα πλοία της εταιρίας. Με Ctrl+Κλικ εναλλάσσει το άνοιγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Εμφανίστε λίστα με τα αεροσκάφη της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Μεγέθυνση εικόνας STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Σμίκρυνση εικόνας @@ -411,7 +434,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Έξοδος ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Επιλογές παιχνιδιού -STR_SETTINGS_MENU_CONFIG_SETTINGS :Προχωρημένες ρυθμίσεις +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Ρυθμίσεις STR_SETTINGS_MENU_SCRIPT_SETTINGS :Ρυθμίσεις ΑΙ και Δέσμης Ενεργειών STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ρυθμίσεις NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Επιλογές διαφάνειας @@ -437,6 +460,7 @@ STR_FILE_MENU_EXIT :Έξοδος # map menu STR_MAP_MENU_MAP_OF_WORLD :Χάρτης του κόσμου STR_MAP_MENU_EXTRA_VIEW_PORT :Πρόσθετη εμφάνιση +STR_MAP_MENU_LINGRAPH_LEGEND :Υπόμνημα Ροής Φορτίου STR_MAP_MENU_SIGN_LIST :Λίστα πινακίδων ############ range for town menu starts @@ -472,13 +496,13 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Χρηματο ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Κατασκευή σιδηρόδρομου STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Κατασκευή ηλεκτροδοτουμένου σιδηρόδρομου -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Κατασκευή μονόγραμμου +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Κατασκευή μονοτρόχιου STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Κατασκευή Maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Κατασκευή δρόμου -STR_ROAD_MENU_TRAM_CONSTRUCTION :Κατασκευή τροχιόδρομου (τραμ) +STR_ROAD_MENU_TRAM_CONSTRUCTION :Κατασκευή τροχιόδρομου ############ range ends here ############ range for waterways construction menu starts @@ -519,7 +543,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Εναλλαγ STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Εναλλαγή χρωματισμού λερωμένων τετραγωνίδιων ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1ος STR_ORDINAL_NUMBER_1ST.date :1η STR_ORDINAL_NUMBER_2ND :2ος @@ -550,38 +574,71 @@ STR_ORDINAL_NUMBER_14TH :14ος STR_ORDINAL_NUMBER_14TH.date :14η STR_ORDINAL_NUMBER_15TH :15ος STR_ORDINAL_NUMBER_15TH.date :15η -STR_ORDINAL_NUMBER_16TH :16ος -STR_ORDINAL_NUMBER_16TH.date :16η -STR_ORDINAL_NUMBER_17TH :17ος -STR_ORDINAL_NUMBER_17TH.date :17η -STR_ORDINAL_NUMBER_18TH :18ος -STR_ORDINAL_NUMBER_18TH.date :18η -STR_ORDINAL_NUMBER_19TH :19ος -STR_ORDINAL_NUMBER_19TH.date :19η -STR_ORDINAL_NUMBER_20TH :20ος -STR_ORDINAL_NUMBER_20TH.date :20η -STR_ORDINAL_NUMBER_21ST :21ος -STR_ORDINAL_NUMBER_21ST.date :21η -STR_ORDINAL_NUMBER_22ND :22ος -STR_ORDINAL_NUMBER_22ND.date :22η -STR_ORDINAL_NUMBER_23RD :23ος -STR_ORDINAL_NUMBER_23RD.date :23η -STR_ORDINAL_NUMBER_24TH :24ος -STR_ORDINAL_NUMBER_24TH.date :24η -STR_ORDINAL_NUMBER_25TH :25ος -STR_ORDINAL_NUMBER_25TH.date :25η -STR_ORDINAL_NUMBER_26TH :26ος -STR_ORDINAL_NUMBER_26TH.date :26η -STR_ORDINAL_NUMBER_27TH :27ος -STR_ORDINAL_NUMBER_27TH.date :27η -STR_ORDINAL_NUMBER_28TH :28ος -STR_ORDINAL_NUMBER_28TH.date :28η -STR_ORDINAL_NUMBER_29TH :29ος -STR_ORDINAL_NUMBER_29TH.date :29η -STR_ORDINAL_NUMBER_30TH :30ος -STR_ORDINAL_NUMBER_30TH.date :30η -STR_ORDINAL_NUMBER_31ST :31ος -STR_ORDINAL_NUMBER_31ST.date :31η +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1ος +STR_DAY_NUMBER_1ST.date :1η +STR_DAY_NUMBER_2ND :2ος +STR_DAY_NUMBER_2ND.date :2η +STR_DAY_NUMBER_3RD :3ος +STR_DAY_NUMBER_3RD.date :3η +STR_DAY_NUMBER_4TH :4ος +STR_DAY_NUMBER_4TH.date :4η +STR_DAY_NUMBER_5TH :5ος +STR_DAY_NUMBER_5TH.date :5η +STR_DAY_NUMBER_6TH :6ος +STR_DAY_NUMBER_6TH.date :6η +STR_DAY_NUMBER_7TH :7ος +STR_DAY_NUMBER_7TH.date :7η +STR_DAY_NUMBER_8TH :8ος +STR_DAY_NUMBER_8TH.date :8η +STR_DAY_NUMBER_9TH :9ος +STR_DAY_NUMBER_9TH.date :9η +STR_DAY_NUMBER_10TH :10ος +STR_DAY_NUMBER_10TH.date :10η +STR_DAY_NUMBER_11TH :11ος +STR_DAY_NUMBER_11TH.date :11η +STR_DAY_NUMBER_12TH :12ος +STR_DAY_NUMBER_12TH.date :12η +STR_DAY_NUMBER_13TH :13ος +STR_DAY_NUMBER_13TH.date :13η +STR_DAY_NUMBER_14TH :14ος +STR_DAY_NUMBER_14TH.date :14η +STR_DAY_NUMBER_15TH :15ος +STR_DAY_NUMBER_15TH.date :15η +STR_DAY_NUMBER_16TH :16ος +STR_DAY_NUMBER_16TH.date :16η +STR_DAY_NUMBER_17TH :17ος +STR_DAY_NUMBER_17TH.date :17η +STR_DAY_NUMBER_18TH :18ος +STR_DAY_NUMBER_18TH.date :18η +STR_DAY_NUMBER_19TH :19ος +STR_DAY_NUMBER_19TH.date :19η +STR_DAY_NUMBER_20TH :20ος +STR_DAY_NUMBER_20TH.date :20η +STR_DAY_NUMBER_21ST :21ος +STR_DAY_NUMBER_21ST.date :21η +STR_DAY_NUMBER_22ND :22ος +STR_DAY_NUMBER_22ND.date :22η +STR_DAY_NUMBER_23RD :23ος +STR_DAY_NUMBER_23RD.date :23η +STR_DAY_NUMBER_24TH :24ος +STR_DAY_NUMBER_24TH.date :24η +STR_DAY_NUMBER_25TH :25ος +STR_DAY_NUMBER_25TH.date :25η +STR_DAY_NUMBER_26TH :26ος +STR_DAY_NUMBER_26TH.date :26η +STR_DAY_NUMBER_27TH :27ος +STR_DAY_NUMBER_27TH.date :27η +STR_DAY_NUMBER_28TH :28ος +STR_DAY_NUMBER_28TH.date :28η +STR_DAY_NUMBER_29TH :29ος +STR_DAY_NUMBER_29TH.date :29η +STR_DAY_NUMBER_30TH :30ος +STR_DAY_NUMBER_30TH.date :30η +STR_DAY_NUMBER_31ST :31ος +STR_DAY_NUMBER_31ST.date :31η ############ range for days ends ############ range for months starts @@ -754,17 +811,19 @@ STR_SMALLMAP_CAPTION :{WHITE}Χάρτ STR_SMALLMAP_TYPE_CONTOURS :Περιγράμματα STR_SMALLMAP_TYPE_VEHICLES :Οχήματα STR_SMALLMAP_TYPE_INDUSTRIES :Βιομηχανίες +STR_SMALLMAP_TYPE_ROUTEMAP :Ροή Φορτίου STR_SMALLMAP_TYPE_ROUTES :Διαδρομές STR_SMALLMAP_TYPE_VEGETATION :Βλάστηση STR_SMALLMAP_TYPE_OWNERS :Ιδιοκτήτες STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Εμφανίστε περιγράμματα εδάφους στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Εμφανίστε οχήματα στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Εμφανίστε βιομηχανίες στον χάρτη +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Εμφάνιση ροής φορτίων στο χάρτη STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Εμφανίστε μεταφορικούς οδούς στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Εμφανίστε βλάστηση στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Εμφανίστε ιδιοκτήτες γης στον χάρτη -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Επιλέξτε μια βιομηχανία για εναλλαγή εμφάνισής της. Το Ctrl+Κλικ απενεργοποιεί όλους τους τύπους εκτός του επιλεγμένου. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των τύπων -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Επιλέξτε μια εταιρεία για εναλλαγή εμφάνισης της περιουσίας της. Το Ctrl+Κλικ απενεργοποιεί όλες τις εταιρείες εκτός της επιλεγμένης. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των εταιρειών +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Επιλέξτε μια βιομηχανία για εναλλαγή εμφάνισής της. Με Ctrl+Κλικ απενεργοποιούνται όλοι οι τύποι εκτός του επιλεγμένου. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των τύπων +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Επιλέξτε μια εταιρεία για εναλλαγή εμφάνισης της περιουσίας της. Με Ctrl+Κλικ απενεργοποιούνται όλες οι εταιρείες εκτός της επιλεγμένης. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των εταιρειών STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Δρόμοι STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Σιδηρόδρομοι @@ -798,6 +857,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Εναλλαγή ονομάτων πόλεων στον χάρτη STR_SMALLMAP_CENTER :{BLACK}Κεντράρισμα του μικρού χάρτη στη τρέχουσα θέση STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Απενεργοποίηση όλων @@ -808,6 +868,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Εμφά STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Εναλλάγη εμφάνισης υψομετρικού χάρτη STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Απόκρυψη όλων των ιδιοκτησιών των εταιριών στον χάρτη STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Εμφάνιση όλων των ιδιοκτησιών των εταιριών στον χάρτη +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Απόκρυψη όλων των φορτίων στο χάρτη +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Εμφάνιση όλων των φορτίων στο χάρτη # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος ή αναφοράς νέων @@ -827,7 +889,7 @@ STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLAC STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο τρένο φτάνει στον στάθμο {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο λεωφορείο φτάνει στη στάση {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο φορτηγό φτάνει στον σταθμό {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο επιβάτικο τραμ φτάνει στη στάση {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο επιβατικό τραμ φτάνει στη στάση {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο εμπορευματικό τραμ φτάνει στον σταθμό {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο πλοίο φτάνει στο λιμάνι {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο αεροσκάφος φτάνει στο {STATION}! @@ -884,13 +946,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Το {VE STR_NEWS_SHIP_IS_WAITING :{WHITE}Το {VEHICLE} περιμένει στο ναυπήγειο STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Το {VEHICLE} περιμένει στο υπόστεγο αεροσκαφών -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Το {VEHICLE} έχει πολύ λίγες εντολές στο πρόγραμμα STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Το {VEHICLE} έχει μη έγκυρη εντολή STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Το {VEHICLE} έχει διπλή εντολή STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Το {VEHICLE} έχει μη έγκυρο σταθμό στις εντολές του -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}Το όχημα {VEHICLE} έχει στους προορισμούς του ένα αεροδρόμιο με πολύ μικρό αεροδιάδρομο STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Το {VEHICLE} αρχίζει να παλιώνει STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Το {VEHICLE} ξεπερνά το όριο ηλικίας @@ -973,10 +1034,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Γεοργια STR_GAME_OPTIONS_CURRENCY_IRR :Ιρανικό Ριάλ (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Οχήματα δρόμου STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Επιλογή πλευράς δρόμου όπου τα οχήματα οδηγούν STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Οδηγούν από αριστερά @@ -1012,11 +1069,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Καταλαν STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Αυτόματη αποθήκευση STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλογή διάκενου ανάμεσα στις αυτόματες αποθηκεύσεις +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ανενεργό STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Κάθε μήνα STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Κάθε 3 μήνες STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Κάθε 6 μήνες STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Κάθε 12 μήνες +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Γλώσσα STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Επιλογή της γλώσσας του παιχνιδιού @@ -1028,8 +1087,10 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ανάλ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Διαλέξτε την ανάλυση της οθόνης που θέλετε STR_GAME_OPTIONS_RESOLUTION_OTHER :άλλη -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Τύπος αρχείου στιγμιότυπου οθόνης -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Επιλογή του τύπου αρχείου για το στιγμιότυπο οθόνης + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Κανονικό +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Διπλό μέγεθος +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Τετραπλό μέγεθος STR_GAME_OPTIONS_BASE_GRF :{BLACK}Βασικό σετ γραφικών STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί @@ -1045,6 +1106,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Επιλ STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} κατεστραμμέν{P ο α} αρχεί{P ο α} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ μουσικής +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Αποτυχία ανάκτησης λίστας υποστηριζόμενων αναλύσεων STR_ERROR_FULLSCREEN_FAILED :{WHITE}Θέση του παιχνιδιού σε λειτουργία πλήρης οθόνης απέτυχε # Custom currency window @@ -1130,8 +1192,8 @@ STR_CITY_APPROVAL_HOSTILE :Εχθρική STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν είναι διαθέσιμο κανένα κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Διαδικτυακού Περιεχομένου» -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Προηγμένες Ρυθμίσεις +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ρυθμίσεις STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Φιλτράρισμα: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Επέκταση όλων STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Σύμπτυξη όλων @@ -1144,21 +1206,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Ρύθμιση STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ρύθμιση εταιρείας (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ρύθμιση εταιρείας (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο την τρέχουσα εταιρεία) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Προβολή: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα προβάλλοντας μόνο αλλαγμένες ρυθμίσεις -STR_CONFIG_SETTING_RESTRICT_BASIC :Βασικές ρυθμίσεις -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Προχωρημένες ρυθμίσεις -STR_CONFIG_SETTING_RESTRICT_ALL :Προχωρημένες ρυθμίσεις / όλες οι ρυθμίσεις +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Κατηγορία: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Τύπος: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Περιορίζει την παρακάτω λίστα με τη χρήση προκαθορισμένων φίλτρων +STR_CONFIG_SETTING_RESTRICT_BASIC :Βασικές (εμφάνιση μόνο σημαντικών ρυθμίσεων) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Για προχωρημένους (εμφάνιση των περισσότερων ρυθμίσεων) +STR_CONFIG_SETTING_RESTRICT_ALL :Για ειδικούς (εμφάνιση όλων των ρυθμίσεων, ακομη και παράξενων) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ρυθμίσεις με διαφορετική τιμή από την προκαθωρισμένη STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ρυθμίσεις με διαφορετική τιμή από τις ρυθμίσεις νέου παιχνιδιού σας STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα σε συγκεκριμένους τύπους ρυθμίσεων -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Όλες οι ρυθμίσεις +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Όλοι οι τύποι ρυθμίσεων STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Ρυθμίσεις πελάτη (δεν διατηρούνται στις αποθηκεύσεις· επηρεάζουν όλα τα παιχνίδια) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο τα νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο το τρέχον παιχνίδι) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Ρυθμίσεις εταιρίας (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο τα νέα παιχνίδια) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ρυθμίσεις εταιρίας (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο την τωρινή εταιρία) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ρυθμίσεις εταιρίας (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο την τρέχουσα εταιρία) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Εμφάνιση όλων των αποτελεσμάτων αναζήτησης ανά ρύθμιση{}{SILVER}Κατηγορία {BLACK}εώς {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Εμφάνιση όλων των αποτελεσμάτων αναζήτησης ανά ρύθμιση{}{SILVER}Τύπος {BLACK}εώς {WHITE}Όλοι οι τύποι ρυθμίσεων +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Εμφάνιση όλων των αποτελεσμάτων αναζήτησης ανά ρύθμιση{}{SILVER}Κατηγορία {BLACK}εώς {WHITE}{STRING} {BLACK}και {SILVER}Τύπος {BLACK}εώς {WHITE}Όλοι οι τύποι ρυθμίσεων +STR_CONFIG_SETTINGS_NONE :{WHITE}- Κανένα - STR_CONFIG_SETTING_OFF :Ανενεργό STR_CONFIG_SETTING_ON :Ενεργή @@ -1195,11 +1262,11 @@ STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Όταν είν STR_CONFIG_SETTING_TRAIN_REVERSING :Απαγορεύεται η αντιστροφή τρένων στους σταθμούς: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Όταν είναι ενεργοποιημένο, τα τρένα δεν θα κάνουν όπισθεν σε μη-τελικούς σταθμούς, ακόμα και εάν υπάρχει κοντινότερη διαδρομή προς τον επόμενή τους προορισμό όταν κάνουν όπισθεν STR_CONFIG_SETTING_DISASTERS :Καταστροφές: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL :Στάση δημοτικού συμβουλίου προς τον μετασχηματισμό της περιοχής: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Στάση δημοτικού συμβουλίου ως προς τον μετασχηματισμό της περιοχής: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :Επιτρέπεται το κτίσιμο σε πλαγιές και ακτές: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Όταν είναι ενεργοποιημένο, οι σιδηροτροχιές και σταθμοί μπορούν να κτισθούν στις περισσότερες κλίσεις. Όταν είναι απενεργοποιημένο, επιτρέπονται μόνο όπου αντιστοιχούν στην κατεύθυνση της σιδηροτροχιάς και γι' αυτό δεν χρειάζονται θεμέλια -STR_CONFIG_SETTING_AUTOSLOPE :Να επιτρέπεται η διαμόρφωση εδάφους κάτω από κτίρια, γραμμές, κλπ. (αυτόματη κλίση): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Μέγιστο ύψος χάρτη: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Ορισμός του μέγιστου επιτρεπτού ύψους βουνών στο χάρτη +STR_CONFIG_SETTING_AUTOSLOPE :Να επιτρέπεται η διαμόρφωση εδάφους κάτω από κτίρια, γραμμές, κλπ.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Επιτρέπεται η διαμόρφωση του εδάφους κάτω από κτίρια και σιδηροτροχιές χωρίς αυτά να αφαιρούνται STR_CONFIG_SETTING_CATCHMENT :Επιτρέπονται πιο ρεαλιστικά ταξινομημένες περιοχές συλλογής : {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Διαφορετικοί σταθμοί και αεροδρόμια έχουν περιοχές κάλυψης διαφορετικού μεγέθους @@ -1223,23 +1290,19 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Απαγόρε STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τραίνο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών. Αυτό έχει επίσης εφαρμογή στην ακτίνα στροφής των πλοίων STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Να επιτρέπεται η συνένωση μη παρακείμενων σταθμών: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Επιτρέπεται η προσθήκη τμημάτων σε σταθμό χωρίς αυτά να αγγίζουν τα ήδη υπάρχοντα τμήματα. Χρειάζεται Ctrl+Κλικ κατά την τοποθέτηση των νέων τμημάτων -STR_CONFIG_SETTING_IMPROVEDLOAD :Χρησιμοποίηση βελτιωμένου αλγόριθμου φόρτωσης: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Όταν είναι ενεργό, τα οχήματα που περιμένουν σε ένα σταθμό φορτώνονται με τη σειρά. Η φόρτωση του επόμενου οχήματος αρχίζει μόνο όταν υπάρχει αρκετό φορτίο σε αναμονή ώστε να γεμίσει πλήρως το πρώτο όχημα -STR_CONFIG_SETTING_GRADUAL_LOADING :Φόρτωση οχημάτων σταδιακά: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Σταδιακή φόρτωση των οχημάτων χρησιμοποιώντας τους χρόνους φόρτωσής τους, αντί της φόρτωσης όλων δια μιας σε ορισμένο χρόνο που εξαρτάται μόνο από την ποσότητα του φορτίου που φορτώθηκε STR_CONFIG_SETTING_INFLATION :Πληθωρισμός: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ενεργοποίηση του πληθωρισμού στην οικονομία, όπου τα κόστη αυξάνονται ελάχιστα ταχύτερα από τις πληρωμές -STR_CONFIG_SETTING_SELECTGOODS :Παράδοση φορτίου σε σταθμό μόνο όταν υπάρχει ζήτηση: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Παραδίδονται σε σταθμό μόνο τα φορτία που ζητήθηκαν από όχημα που φορτώνει. Αυτό αποτρέπει τις χαμηλές αξιολογήσεις για φορτία που δεν εξυπηρετούνται από το σταθμό STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Μέγιστο μήκος γέφυρας: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο γεφυρών +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Μέγιστο ύψος γέφυρας: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Μέγιστο ύψος για το χτίσιμο γεφυρών STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Μέγιστο μήκος σήραγγας: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο συράγγων STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Χειροκίνητη μέθοδος κατασκευής βιομηχανιών πρώτων υλών: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Μέθοδος χρηματοδότησης πρωτογενούς βιομηχανίας. «Καμία» σημαίνει ότι δεν γίνεται να χρηματοδοτηθεί καμία βιομηχανία, «Αναζήτηση» σημαίνει ότι η χρηματοδότηση είναι εφικτή, αλλά η κατασκευή πραγματοποιείται σε τυχαίο σημείο του χάρτη και είναι πιθανό να αποτύχει, «Όπως οι άλλες βιομηχανίες» σημαίνει πως οι πρωτογενείς βιομηχανίες είναι εφικτό να κατασκευαστούν από εταιρείες όπως οι δευτερογενείς βιομηχανίες σε οποιαδήποτε θέση θέλουν STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Καμία STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Όπως οι άλλες βιομηχανίες -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Αναζήτηση +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Διερεύνηση προοπτικών STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Επίπεδη περιοχή γύρω από βιομηχανίες: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κτισθούν γραμμές, κλπ STR_CONFIG_SETTING_MULTIPINDTOWN :Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανά πόλη: {STRING} @@ -1258,8 +1321,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Το προεπ STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :κοντινό άκρο STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :στη μέση STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :μακρινό άκρο -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ουρά οχημάτων (με κβαντικά εφέ): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Υποχρεώνεται το όχημα να περιμένει μπροστά από τις κατειλημμένες στάσεις μέχρι να ελευθερωθούν STR_CONFIG_SETTING_AUTOSCROLL :Μετακίνηση παραθύρου όταν το ποντίκι είναι στην άκρη: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Όταν είναι ενεργή, η εμφάνιση θα κυλά όταν το ποντίκι είναι κοντά στην άκρη του παραθύρου STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένη @@ -1290,10 +1351,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Επιτρέπ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που είναι ιδιοκτησία των πόλεων STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Επιτρέπονται οι στάσεις σε δρόμους που ανήκουν σε ανταγωνιστές: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που ανοίκουν σε ανταγωνιστές -STR_CONFIG_SETTING_ADJACENT_STATIONS :Επιτρέπεται η κατασκευή παρακείμενων σταθμών: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Επιτρέπεται να ακουμπούν μεταξύ τους διαφορετικοί σταθμοί -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Επιτρέπεται η χρήση πολλαπλών μηχανών από τα NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Επιλογή συμβατότητας για παλιά NewGRF. Μην την απενεργοποιήσετε, εκτός αν ξέρετε καλά τι κάνετε! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Δεν είναι δυνατή η αλλαγή αυτής της ρύθμισης όταν υπάρχουν οχήματα. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Συντήρηση υποδομής: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένη, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει δυσανάλογα με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες @@ -1314,7 +1371,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Τα οχήμα STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Όταν είναι ενεργοποιημένη, όλα τα μοντέλα οχημάτων παραμένουν διαθέσιμα για πάντα μετά την παρουσίασή τους STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Αυτόματη ανανέωση όταν ένα όχημα παλιώνει: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα που πλησιάζουν το τέλος της ζωής τους αντικαθίσταται αυτόματα όταν πληρούνται οι προϋποθέσεις αντικατάστασής του -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν κάποιο όχημα είναι {STRING} μέγιστης ηλικίας +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν το όχημα είναι {STRING} μέγιστης ηλικίας STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Σχετική ηλικία κατά την οποία κάποιο όχημα θα πρέπει να εξεταστεί για αυτόματη ανανέωση STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} μήν{P 0 α ες} πριν STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} μήν{P 0 α ες} μετά @@ -1324,17 +1381,20 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Διάρκει STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Διάρκεια εμφάνισης μηνύματων σφάλματος σε κόκκινο παράθυρο. Σημειώστε ότι μερικά (κρίσιμα) μηνύματα σφάλματος δεν κλείνουν αυτόματα μετά από αυτόν τον χρόνο, αλλά πρέπει να κλείσουν χειροκίνητα STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} δευτερόλεπτ{P 0 ο α} STR_CONFIG_SETTING_HOVER_DELAY :Εμφάνιση αναδυόμενων μηνυμάτων: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο κέρσορας βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις μπορούν να συνδεθούν με το δεξί κουμπί του ποντικιού -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο κέρσορας βρίσκεται από πάνω για {COMMA} δευτερόλεπτ{P 0 ο α} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο δείκτης του ποντικιού βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις συνδέονται με το δεξί κουμπί του ποντικιού όταν η τιμή αυτού του πεδίου είναι 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο δείκτης του ποντικιού να βρίσκεται από πάνω για {COMMA} δευτερόλεπτ{P 0 ο α} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Δεξί κουμπί STR_CONFIG_SETTING_POPULATION_IN_LABEL :Εμφάνιση πληθυσμού πόλης στο όνομα της πόλης: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Εμφάνιση του πληθυσμού των πόλεων στην ετικέτα τους πάνω στο χάρτη STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Πάχος γραμμών στα γραφήματα: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Πάχος γραμμών στα γραφήματα. Οι λεπτές γραμμές διαβάζονται με μεγαλύτερη ακρίβεια, οι παχύτερες είναι πιο ευδιάκριτες και τα χρώματα ξεχωρίσουν ευκολότερα +STR_CONFIG_SETTING_LANDSCAPE :Τοπίο: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Γεννήτρια γης: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Αυθεντική STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Σχηματισμός εδάφους: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Πυκνότητα βιομηχανιών: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Μέγιστη απόσταση από την άκρη του χάρτη για τα Διυλιστήρια: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Τα Διυλιστήρια κατασκευάζονται κοντά στην άκρη του χάρτη, η οποία είναι ακτή σε νησιωτικούς χάρτες STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Κορυφογραμμή χιονιού: {STRING} @@ -1343,16 +1403,18 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Πολύ Απα STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Απαλή STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ανώμαλη STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Πολύ Ανώμαλη +STR_CONFIG_SETTING_RIVER_AMOUNT :Πλήθος ποταμών: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Επιλέξτε πόσα ποτάμια να δημιουργηθούν STR_CONFIG_SETTING_TREE_PLACER :Αλγόριθμος τοποθέτησης δέντρων: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Κανένας STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Αυθεντικός STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Βελτιωμένος +STR_CONFIG_SETTING_ROAD_SIDE :Οχήματα δρόμου: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Επιλέξτε την πλευρά οδήγησης STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Περιστροφή χάρτη υψομετρίας: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Αριστερόστροφη STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Δεξιόστροφη STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Το επίπεδο ύψους που παίρνει ένα σενάριο: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Επιτρέπεται η διαμόρφωση του εδάφους στις άκρες του χάρτη: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Όταν είναι απενεργοποιημένη, τα όρια του χάρτη θα είναι πάντα ωκεανός STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ένα ή περισσότερα τετραγωνίδια στην βόρεια άκρη δεν είναι κενά STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ένα ή περισσότερα τετραγωνίδια σε μια από τις άκρες δεν είναι νερό @@ -1402,17 +1464,15 @@ 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_AUTOSAVE :Αυτόματο σώσιμο: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Επιλέξτε το διάστημα ανάμεσα σε δυο διαδοχικά σωσίματα του παιχνιδιου + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της {STRING} ημερολογιακής μορφής στα ονόματα αποθηκευμένων παιχνιδιών STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Μορφή της ημερομηνίας στα αρχεία αποθήκευσης παιχνιδιών STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :μακριά (31 Δεκ 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :σύντομη (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Η προεπιλεγμένη παλέτα για NewGRF δεν ορίζει ορθά παλέτα: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Η προκαθορισμένη παλέτα που θα χρησιμοποιείται για τα NewGRF που δεν έχουν ορίσει ποια χρειάζονται -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Παλέτα DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Παλέτα Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Αυτόματη παύση κατά την εκκίνηση ενός νέου παιχνιδιού: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Όταν είναι ενεργοποιημένο, τα νέα παιχνίδια ξεκινούν σε παύση αυτόματα, επιτρέποντας καλύτερη μελέτη του χάρτη STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Όταν το παιχνίδι είναι σε παύση επιτρέπονται: {STRING} @@ -1421,7 +1481,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Καμία εν STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Όλες οι μη κατασκευαστικές ενέργειες STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Όλες εκτός από τις ενέργειες διαμόρφωσης τοπίου STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Όλες οι ενέργειες -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Χρήση της προχωρημένης λίστας οχημάτων: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Χρήση ομάδων στη λίστα οχημάτων: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ενεργοποίηση χρήσης των προχωρημένων καταλόγων οχημάτων για την ομαδοποίηση των οχημάτων STR_CONFIG_SETTING_LOADING_INDICATORS :Χρήση δεικτών φόρτωσης: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Επιλέξτε εάν οι δείκτες φόρτωσης εμφανίζονται πάνω από τα οχήματα που φορτώνουν ή ξεφορτώνουν @@ -1436,7 +1496,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Επιλογή STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Πρώτος διαθέσιμος STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Τελευταίος διαθέσιμος STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Περισσότερο χρησιμοποιούμενος -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Εμφάνιση κλεισμένων γραμμών: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Εμφάνιση δεσμέυσεων διαδρομών για γραμμές τραίνου: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Δίνεται ένα διαφορετικό χρώμα στις κατειλημμένες ράγες για να σας βοηθήσουν με προβλήματα όταν τα τραίνα αρνούνται να εισέλθουν σε τμήματα με βάση τροχιές STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Διατήρηση των οικοδομικών εργαλείων ενεργών μετά από χρήση τους: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρηση ανοικτών των εργαλείων για γέφυρες, σήραγγες, κλπ μετά από τη χρήση @@ -1447,25 +1507,26 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Παίζει ή STR_CONFIG_SETTING_SOUND_NEWS :Εφημερίδα: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Παίζει ήχο όταν εμφανίζονται εφημερίδες STR_CONFIG_SETTING_SOUND_NEW_YEAR :Στο τέλος του χρόνου: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου συνοψίζοντας την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο STR_CONFIG_SETTING_SOUND_CONFIRM :Οικοδομή: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά +STR_CONFIG_SETTING_SOUND_DISASTER :Καταστροφές/ατυχήματα: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Παίζει ήχους για ατυχήματα και συμφορές STR_CONFIG_SETTING_SOUND_VEHICLE :Οχήματα: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Παίζει τα ηχητικά εφέ των οχημάτων STR_CONFIG_SETTING_SOUND_AMBIENT :Περιβαλλοντικά: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τους περιβαλλοντικούς ήχους των βιομηχανιών των πόλεων, και του τοπίου γενικότερα +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τους περιβαλλοντικούς ήχους των βιομηχανιών, των πόλεων, και του τοπίου γενικότερα STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Απενεργοποίηση των υποδομών για τα οχήματα που δεν είναι διαθέσιμα: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές είναι διαθέσιμες μόνο όταν υπάρχουν διαθέσιμα οχήματα, αποτρέποντας σπατάλη χρόνου και χρημάτων σε μη χρησιμοποιήσιμες υποδομές STR_CONFIG_SETTING_MAX_TRAINS :Μέγιστος αριθμός τρένων ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Μέγιστος αριθμός τραίνων που μπορεί να έχει μια εταιρεία -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστα οχήματα ανά εταιρία: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστος αριθμός οχημάτων δρόμου ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Μέγιστος αριθμός οδικών οχημάτων που μπορεί να έχει μια εταιρεία -STR_CONFIG_SETTING_MAX_AIRCRAFT :Μέγιστα αεροσκάφη ανά εταιρία: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Μέγιστος αριθμός αεροσκαφών ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Μέγιστος αριθμός αεροσκαφών που μπορεί να έχει μια εταιρεία -STR_CONFIG_SETTING_MAX_SHIPS :Μέγιστα πλοία ανά εταιρία: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Μέγιστος αριθμός πλοίων ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Μέγιστος αριθμός πλοίων που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Απενεργοποίηση τρένων για τον υπολογιστή: {STRING} @@ -1485,14 +1546,14 @@ STR_CONFIG_SETTING_AI_PROFILE_HARD :Δύσκολο STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Επιτρέπονται AI σε παιχνίδια πολλών παικτών: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Επιτρέπεται η συμμετοχή παικτών υπολογιστή AI σε παιχνίδια πολλαπλών παικτών -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#εντολές πριν την παύση δεσμών ενεργειών: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#εντολών πριν την παύση δεσμών ενεργειών: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Μέγιστος αριθμός βημάτων υπολογισμού που κάνει κάποιο σενάριο σε κάθε σειρά STR_CONFIG_SETTING_SERVINT_ISPERCENT :Τα διαστήματα μεταξύ συντήρησης είναι σε ποσοστά: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Επιλέξτε εάν η επισκευή των οχημάτων εξαρτάται από τον χρόνο που πέρασε από την τελευταία επισκευή ή από την μείωση της αξιοπιστίας κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας STR_CONFIG_SETTING_SERVINT_TRAINS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα τραίνα: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οχήματα τραίνων, όταν δεν δίνεται άλλο διάστημα για το όχημα -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} ημέρ{P 0 α ες}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ημέρ{P 0 α ες}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Απενεργοποιημένο STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Προκαθορισμένο διάστημα μεταξύ συντηρήσεων για οδικά οχήματα: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οδικά οχήματα, όταν δεν δίνεται άλλο διάστημα για το όχημα @@ -1516,17 +1577,27 @@ STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Προβάλλ STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Πληροφορίες εταιρίας: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Προβάλλει εφημερίδα όταν αρχίζει νέα εταιρεία ή όταν οι εταιρίες ρισκάρουν χρεωκοπία STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Έναρξη των βιομηχανιών: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Εμφάνιση εφημερίδας όταν ανοίγουν νέες βιομηχανίες STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Κλείσιμο βιομηχανιών: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Εμφάνιση εφημερίδας όταν κλείνουν βιομηχανίες STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Οικονομικές αλλαγές: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Εμφάνιση εφημερίδας σε αλλαγές παγκόσμιων οικονομικών μεγεθών STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Αλλαγή της παραγωγής των βιομηχανιών που εξυπηρετούνται από την εταιρία: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από την εταιρία STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή(-ές): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από ανταγωνιστές STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Άλλες διαφοροποιήσεις στη παραγωγή: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που δεν εξυπηρετείται από την εταιρία ή ανταγωνιστές STR_CONFIG_SETTING_NEWS_ADVICE :Συμβουλές / πληροφορίες για τα εταιρικά οχήματα: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Εμφάνιση μηνημάτων όταν κάποιο όχημα χρήζει προσοχής STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Νέα οχήματα: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Εμφάνιση εφημερίδας όταν ένας νέος τύπος οχήματος γίνεται διαθέσιμος STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Αλλαγές στην αποδοχή φορτίου: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Εμφάνιση μηνημάτων σε μεταβολές στην αποδοχή φορτίων από ένα σταθμό STR_CONFIG_SETTING_NEWS_SUBSIDIES :Επιχορηγήσεις: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Πρόβαλλε εφημερίδα σχετικά με συμβάντα που σχετίζονται με επιδοτήσεις STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Γενικές πληροφορίες: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Εμφάνιση εφημερίδας σε γενικά συμβάντα, όπως αγορά αποκλειστικών δικαιωμάτων ή χρηματοδότηση ανακατασκευής δρόμων STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένα STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Περιλήψεις @@ -1545,25 +1616,25 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Όταν σύρ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ορισμός απόστασης στην οποία θα τοποθετούνται σήματα σε μια γραμμή και μέχρι το επόμενο εμπόδιο (σήμα, διακλάδωση), αν σύρονται τα σήματα STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} τετραγωνίδι{P 0 ο α} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές ευκολότερη +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας ευκολότερη την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο κτίσιμο σηματοφόρων πριν από το: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ενεργοποίηση του μενού σηματοδοτών: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Εμφανίζεται ένα παράθυρο για την επιλογή του τύπου του σήματος που θα τοποθετηθεί, αντί για την απλή μετατροπή από τον έναν τύπο στον άλλο χωρίς παράθυρο, με πάτημα πάνω σε τοποθετημένα σήματα κρατώντας το Ctrl +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Εμφάνιση παραθύρου για την επιλογή του τύπου σήματος που θα τοποθετηθεί, αντί για μετάβαση από τον έναν τύπο στον άλλο χωρίς παράθυρο, με Ctrl+κλικ σε ήδη τοποθετημένα σήματα STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Τύπος σηματοδότη που θα χρησιμοποιείται ως προεπιλογή: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Προκαθορισμένος τύπος σημάτων που χρησιμοποιείται STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Σηματοδότες τμήματος STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Σηματοδότες τροχιάς STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Σηματοδότες μονόδρομης τροχιάς STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Περιήγηση στους τύπους σηματοδότησης: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Επιλέξτε τους τύπους σημάτων μεταξύ των οποίων θα γίνονται οι αλλαγές, όταν πατάτε πάνω σε ένα τοποθετημένο σήμα κρατώντας το Ctrl +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Επιλέξτε τους τύπους σημάτων μεταξύ των οποίων θα γίνονται οι αλλαγές, όταν κάνετε κλικ σε ένα τοποθετημένο σήμα κρατώντας πατημένο το Ctrl STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Μόνο σηματοδότες τμήματος STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Μόνο σηματοδότες τροχιάς STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Όλοι STR_CONFIG_SETTING_TOWN_LAYOUT :Σχέδιο δρόμων για νέες πόλεις: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Μορφή οδικών δικτύων για τις πόλεις -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :αρχική +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Αρχική STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Καλύτεροι δρόμοι STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :πλέγμα 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3 @@ -1573,7 +1644,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Επιτρέπ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν το κτίσιμο ισόπεδων διασταυρώσεων: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις STR_CONFIG_SETTING_NOISE_LEVEL :Επιτρέπεται η πόλη να ελέγχει το επίπεδο θορύβου των αεροδρομίων: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Με αυτήν τη ρύθμιση απενεργοποιημένη, γίνεται να υπάρχουν δύο αεροδρόμια σε κάθε πόλη. Με αυτήν τη ρύθμιση ενεργοποιημένη, ο αριθμός των αεροδρομίων σε μια πόλη περιορίζεται από την αποδοχή του θορύβου από την πόλη, η οποία εξαρτάται από τον πληθυσμό, το μέγεθος του αεροδρομίου και από την απόστασή του από την πόλη +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Με αυτήν τη ρύθμιση απενεργοποιημένη, γίνεται να υπάρχουν δύο αεροδρόμια σε κάθε πόλη. Με αυτήν τη ρύθμιση ενεργοποιημένη, ο αριθμός των αεροδρομίων σε μια πόλη περιορίζεται από την αποδοχή του θορύβου από την πόλη, η οποία εξαρτάται από τον πληθυσμό, το μέγεθος του αεροδρομίου και την απόστασή του από την πόλη STR_CONFIG_SETTING_TOWN_FOUNDING :Ίδρυση πόλεων στο παιχνίδι: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στους παίκτες να ιδρύσουν νέες πόλεις στο παιχνίδι STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Δεν επιτρέπεται @@ -1621,35 +1692,52 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 σε {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Καμία STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Αρχικός πολλαπλασιαστής μεγέθους πόλης: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Μέσο μέγεθος μεγάλων πόλεων σε σχέση με τις κανονικές στην αρχή του παιχνιδιού -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Να αφαιρούνται παράλογα στοιχεία δρόμων κατά την κατασκευή τους: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Αφαίρεση αδιέξοδων άκρων κατά την χρηματοδοτούμενη ανακατασκευή δρόμων - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Περιβάλλον Λειτουργίας -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Κατασκευή +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :χειροκίνητη +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :μη συμμετρική +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :συμμετρική +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Τρόπος διανομής επιβατών: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Τρόπος διανομής αλληλογραφίας: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Τρόπος διανομής για το ΘΩΡΑΚΙΣΜΕΝΟ είδος φορτίου: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Τρόπος διανομής άλλων ειδών φορτίου: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Ακρίβεια διανομής: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :Επίδραση της απόστασης στη ζήτηση προϊόντων: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Μονάδες μέτρησης ταχύτητας: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Αυτοκρατορικό (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Μετρικό (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Μονάδες ισχύος οχημάτων: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Αυτοκρατορικό (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Μετρικό (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Μονάδες μέτρησης βάρους: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Μονάδες μέτρησης όγκου: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Αυτοκρατορικό (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Μετρικό (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Μετρικό (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Μονάδες μέτρησης ύψους: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Μετρικές (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Τοπικοποίηση +STR_CONFIG_SETTING_SOUND :{ORANGE}Ήχος +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Περιβάλλον Λειτουργίας +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Κατασκευή STR_CONFIG_SETTING_VEHICLES :{ORANGE}Οχήματα -STR_CONFIG_SETTING_STATIONS :{ORANGE}Σταθμοί -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Οικονομία +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Δρομολογήσεις +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Πόλεις +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Βιομηχανίες STR_CONFIG_SETTING_AI :{ORANGE}Ανταγωνιστές -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Επιλογές εμφάνισης -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Αλληλεπιδράσεις -STR_CONFIG_SETTING_SOUND :{ORANGE}Ηχητικά εφέ -STR_CONFIG_SETTING_NEWS :{ORANGE}Νέα και μηνύματα -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Σηματοδότες -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Χειρισμός εμπορευμάτων STR_CONFIG_SETTING_AI_NPC :{ORANGE}Παίκτες υπολογιστή -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Αυτόματη ανανέωση -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Έλεγχος οχημάτων -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Δρομολογήσεις -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Τρένα -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Πόλεις -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Βιομηχανίες STR_CONFIG_SETTING_PATHFINDER_OPF :Αρχικό STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1697,13 +1785,13 @@ STR_INTRO_MULTIPLAYER :{BLACK}Παιχ STR_INTRO_GAME_OPTIONS :{BLACK}Επιλογές Παιχνιδιού STR_INTRO_HIGHSCORE :{BLACK}Πίνακας Βαθμολογιών -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Προηγμένες Ρυθμίσεις +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ρυθμίσεις STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ρυθμίσεις NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Διαδικτυακό Περιεχόμενο STR_INTRO_SCRIPT_SETTINGS :{BLACK}Ρυθμίσεις AI και Δέσμης Ενεργειών STR_INTRO_QUIT :{BLACK}Έξοδος -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Έναρξη νέου παιχνιδιού. Το Ctrl+Κλικ παρακάμπτει τη ρύθμιση του χάρτη +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Έναρξη νέου παιχνιδιού. Με Ctrl+Κλικ παρακάμπτεται η ρύθμιση του χάρτη STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Φόρτωση αποθηκευμένου παιχνιδιού STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Εκκίνηση νέου παιχνιδιού με χρήση χάρτη υψομετρίας STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Έναρξη νέου παιχνιδιού, χρησιμοποιώντας ένα προσαρμοσμένο σενάριο @@ -1717,7 +1805,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Επιλ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Εμφάνιση επιλογών παιχνιδιού STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Εμφάνιση του πίνακα βαθμολογιών -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Εμφάνιση προηγμένων ρυθμίσεων +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ρυθμίσεις οθόνης STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Έλεγχος για νέο και ανανεωμένο περιεχόμενο για λήψη STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων για AI και της δέσμης ενεργειών του παιχνιδιού @@ -1749,14 +1837,16 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Είσ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το σενάριο; # Cheat window -STR_CHEATS :{WHITE}Cheats -STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε χρησιμοποιήσει αυτό το cheat εκ των προτέρων +STR_CHEATS :{WHITE}Απατεωνιές +STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε ξαναχρησιμοποιήσει αυτή την απατεωνιά STR_CHEATS_WARNING :{BLACK}Προσοχή! Είστε έτοιμοι να προδώσετε τους φίλους ανταγωνιστές σας. Θυμηθείτε ότι αυτή η ντροπή θα μείνει για πάντα. STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Τα τούνελ μπορούν να διασταυρώνονται: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Τα jet δε θα συγκρούονται (συχνά) σε μικρά αεροδρόμια: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Μεταβολή του μέγιστου ύψους του χάρτη: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Μεταβολή του μέγιστου ύψους βουνών στο χάρτη STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Εύκρατο τοπίο STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Πολικό τοπίο STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Υποτροπικό τοπίο @@ -1781,14 +1871,14 @@ STR_LIVERY_DEFAULT :Πρότυπο STR_LIVERY_STEAM :Ατμοκίνητη Μηχανή STR_LIVERY_DIESEL :Πετρελαιοκίνητη Μηχανή STR_LIVERY_ELECTRIC :Ηλεκτροκίνητη Μηχανή -STR_LIVERY_MONORAIL :Μηχανή Monorail +STR_LIVERY_MONORAIL :Μηχανή Μονοτρόχιου STR_LIVERY_MAGLEV :Μηχανή Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Επιβατικό Βαγόνι (Ατμού) STR_LIVERY_PASSENGER_WAGON_DIESEL :Επιβατικό Βαγόνι (Πετρελαίου) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Επιβατικό Βαγόνι (Ηλεκτρικό) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Επιβατικό Βαγόνι (Monorail) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Επιβατικό Βαγόνι (Μονοτρόχιο) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Επιβατικό Βαγόνι (Maglev) STR_LIVERY_FREIGHT_WAGON :Εμπορικό Βαγόνι STR_LIVERY_BUS :Λεωφορείο @@ -1805,6 +1895,7 @@ STR_LIVERY_FREIGHT_TRAM :Εμπορικ STR_FACE_CAPTION :{WHITE}Επιλογή Προσώπου STR_FACE_CANCEL_TOOLTIP :{BLACK}Ακύρωση επιλογής νέου προσώπου STR_FACE_OK_TOOLTIP :{BLACK}Αποδοχή νέου προσώπου +STR_FACE_RANDOM :{BLACK}Τυχαίος STR_FACE_MALE_BUTTON :{BLACK}Αρσενικό STR_FACE_MALE_TOOLTIP :{BLACK}Επιλογή αρσενικών προσώπων @@ -1860,6 +1951,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Αλλα # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Παιχνίδι πολλών παικτών +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Όχι +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ναι STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Όνομα παίκτη: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Αυτό είναι το όνομα με το οποίο θα σας αναγνωρίζουν οι άλλοι παίκτες @@ -1918,6 +2011,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Το ό STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Θέση κωδικού STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Προστατέψτε το παιχνίδι με έναν κωδικό εάν δε θέλετε να είναι δημοσίως προσβάσιμο +STR_NETWORK_START_SERVER_UNADVERTISED :Όχι +STR_NETWORK_START_SERVER_ADVERTISED :Ναι STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} συμπαίκτ{P ης ες} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Μέγιστος αριθμός συμμετεχόντων: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Επιλέξτε τον μέγιστο αριθμό συμμετεχόντων. Δεν είναι ανάγκη να γεμίσουν όλες οι θέσεις @@ -2038,6 +2133,7 @@ STR_NETWORK_CLIENT :Πελάτης STR_NETWORK_SPECTATORS :Θεατές STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Εισάγετε το πόσο των χρημάτων που θέλετε να δώσετε +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Θεατής # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Να μην αποθηκευτεί ο κωδικός @@ -2083,7 +2179,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Λανθ STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Ο διακομιστής είναι γεμάτος STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Έχει απαγορευτεί η είσοδος σας από τον διακομιστή STR_NETWORK_ERROR_KICKED :{WHITE}Έχετε εκδιωχθεί από το παιχνίδι -STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση cheats δεν επιτρέπεται σε αυτό το διακομιστή +STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση απατεωνιών δεν επιτρέπεται σε αυτόν τον διακομιστή STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Αποστείλατε πάρα πολλές εντολές στον διακομιστή STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Χρειαστήκατε πολύ χρόνο για να συμπληρώσετε τον κωδικό STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ο υπολογιστής σας είναι πολύ αργός για να διατηρήσει συγχρόνιση με τον διακομιστή @@ -2102,7 +2198,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :έγινε λή STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :λάθος έκδοση STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :το όνομα είναι ήδη σε χρήση STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :λανθασμένος κωδικός -STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :λάθος company-id στο DoCommand +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :λάθος εταιρία στο DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :εκδιωχθήκατε από τον διακομιστή STR_NETWORK_ERROR_CLIENT_CHEATER :προσπάθησε να χρησιμοποιησει cheat STR_NETWORK_ERROR_CLIENT_SERVER_FULL :διακομιστής γεμάτος @@ -2230,6 +2326,8 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Εναλ STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα # Linkgraph legend window +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Όλες +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Καμία # Linkgraph legend window and linkgraph legend in smallmap @@ -2252,15 +2350,15 @@ STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτί # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου -STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου Monorail +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Κατασκευή Μονοτρόχιου Σιδηρόδρομου STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Κατασκευή Σιδηροδρόμου Maglev -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηρόδρομου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Κατασκευή σιδηροδρομικής γραμμής χρησιμοποιώντας την Αυτόματη Σιδηροτροχιά. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηρόδρομου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση σιδηρόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Κατασκευή σιδηροδρομικής γραμμής χρησιμοποιώντας την Αυτόματη Σιδηροτροχιά. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση σιδηρόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Κατασκευή αμαξοστάσιου (για αγορά και επισκευή τρένων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Μετατροπή σιδηροτροχιάς σε σημείο καθοδήγησης. Το Ctrl ενεργοποιεί συνένωση σημείων καθοδήγησης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Κατασκευή σταθμού τρένων. Το Ctrl ενεργοποιεί συνένωση σταθμών.Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Κατασκευή σηματοδοτών. Το Ctrl εναλλάσσει σηματοφόρους/σηματοδότες{}Το σύρσιμο κατασκευάζει σηματοδότες σε μια ευθεία σιδηροδρόμου. Το Ctrl κατασκευάζει μέχρι την επομένη διασταύρωση{}Το Ctrl+Κλικ εναλλάσσει το άνοιγμα του παραθύρου επιλογής σηματοδοτών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Μετατροπή σιδηροτροχιάς σε σημείο καθοδήγησης. Με Ctrl ενεργοποιείται η συνένωση σημείων καθοδήγησης. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Κατασκευή σταθμού τρένων. Με Ctrl ενεργοποιείται η συνένωση σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Κατασκευή σηματοδοτών. Με Ctrl εναλλάσσονται σηματοφόροι/σηματοδότες{}Με σύρσιμο κατασκευάζονται σηματοδότες κατά μήκος μιας ευθείας σιδηροτροχιάς. Με το Ctrl πατημένο, κατασκευάζονται σηματοδότες μέχρι την επομένη διασταύρωση ή τον επόμενο σηματοδότη{}Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα του παραθύρου επιλογής σηματοδοτών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Κατασκευή τούνελ σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για σιδηρόδρομους, σηματοδότες, σημείων καθοδήγησης και σταθμών. Κρατώντας πατημένο το Ctrl αφαιρεί και τον σιδηρόδρομο από τα σημεία καθοδήγησης και σταθμούς @@ -2268,7 +2366,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Μετα STR_RAIL_NAME_RAILROAD :Σιδηρόδρομος STR_RAIL_NAME_ELRAIL :Ηλεκτροδοτημένη σιδηροτροχιά -STR_RAIL_NAME_MONORAIL :Monorail +STR_RAIL_NAME_MONORAIL :Μονοτρόχιος STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window @@ -2333,40 +2431,40 @@ STR_BRIDGE_TUBULAR_SILICON :Σιλικόν # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Δρόμου -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Τροχιόδρομου (τραμ) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Κατασκευή κομματιού δρόμου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Κατασκευή κομματιού τροχιόδρομου (τραμ). Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Κατασκευή οδικού δικτύου με χρήση της λειτουργίας Αυτόματου Δρόμου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Κατασκευή γραμμής τραμ με χρήση της λειτουργίας Αυτόματης Γραμμής. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Τροχιόδρομου +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Κατασκευή κομματιού δρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση δρόμου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Κατασκευή κομματιού τροχιοδρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση τροχιόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Κατασκευή οδικού δικτύου με χρήση της λειτουργίας Αυτόματου Δρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση δρόμου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Κατασκευή τροχιοδρόμου με χρήση της λειτουργίας Αυτόματης Γραμμής. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων τραμ (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Κατασκευή σταθμού λεωφορείων. Το Ctrl ενεργοποιεί συνένωση σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Κατασκευή επιβατικού σταθμού τραμ. Το Ctrl ενεργοποιεί συνένωση επιβατικών σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Κατασκευή σταθμού φόρτωσης φορτηγών. Το Ctrl ενεργοποιεί συνένωση σταθμών φόρτωσης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Κατασκευή εμπορευματικού σταθμού τραμ. Το Ctrl ενεργοποιεί συνένωση εμπορευματικών σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Κατασκευή σταθμού λεωφορείων. Με Ctrl ενεργοποιείται η συνένωση σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Κατασκευή επιβατικού σταθμού τραμ. Με Ctrl ενεργοποιείται η συνένωση επιβατικών σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Κατασκευή σταθμού φόρτωσης φορτηγών. Με Ctrl ενεργοποιείται η συνένωση σταθμών φόρτωσης. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Κατασκευή εμπορευματικού σταθμού τραμ. Με Ctrl ενεργοποιείται συνένωση εμπορευματικών σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ενεργοποίηση/Απενεργοποίηση μονόδρομων STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατασκευή γέφυρας τροχιόδρομου (τραμ). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατασκευή γέφυρας τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή τούνελ δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιόδρομου (τραμ). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Σταθμού Οχημάτων STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου οχημάτων -STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Αμαξοστασίου Τροχιόδρομου (τραμ) -STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου τροχιόδρομου (τραμ) +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Αμαξοστασίου Τραμ +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου τραμ # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Προσανατολισμός Στάσης Λεωφορείου STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό της στάσης των λεωφορείων STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Προσανατολισμός Σταθμού Φόρτωσης Φορτηγών STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του σταθμού φόρτωσης φορτηγών -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Επιβατικού Σταθμού Τροχιόδρομου (τραμ) -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του επιβατικού σταθμού τροχιόδρομου (τραμ) -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Εμπορευματικού Σταθμού Τροχιόδρομου -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του εμπορευματικού σταθμού τροχιόδρομου (τραμ) +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Επιβατικού Σταθμού Τραμ +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του επιβατικού σταθμού τραμ +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Εμπορευματικού Σταθμού Τραμ +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του εμπορευματικού σταθμού τραμ # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Κατασκευή Καναλιού Νερού @@ -2374,7 +2472,7 @@ STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Κανά STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Κτίσιμο καναλιών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Κατασκευή υδατοφράκτη. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Κατασκευάστε ναυπηγείο πλοίων (για αγορά και επισκευή πλοίων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Κατασκευή λιμένα πλοίων. Το Ctrl ενεργοποιεί συνένωση λιμένων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Κατασκευή λιμένα πλοίων. Με Ctrl ενεργοποιείται η συνένωση λιμένων. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Τοποθετήστε μια σημαδούρα που μπορεί να χρησιμοποιηθεί ως σημείο καθοδήγησης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Κατασκευή καναλιού. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Προσδιορισμός θαλάσσιας επιφάνειας.{}Δημιουργία καναλιού, εκτός εάν το πλήκτρο Ctrl είναι κρατημένο στο επίπεδο της θάλασσας, όπου θα πλημμυρίσει τις παρακείμενες περιοχές @@ -2389,7 +2487,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Λιμά # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Αεροδρόμια -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Κατασκευή αεροδρομίου. Το Ctrl ενεργοποιεί συνένωση αεροδρομίων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Κατασκευή αεροδρομίου. Με Ctrl ενεργοποιείται η συνένωση αεροδρομίων. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Επιλογή Αεροδρομίου @@ -2534,7 +2632,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Όνομ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Αποδεκτά εμπορεύματα: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Όριο ταχύτητας: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Όριο ταχύτητας σιδηροτροχιάς: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Όριο ταχύτητας δρόμου: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Πέτρες @@ -2574,7 +2673,7 @@ STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Δρόμος μ STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Δρόμος με δέντρα STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Αμαξοστάσιο οχημάτων STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Διασταύρωση δρόμου/σιδηροτροχιάς -STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Τροχιόδρομος (τραμ) +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Τροχιόδρομος # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (υπό κατασκευή) @@ -2631,7 +2730,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-2013 Η ομάδα του OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Η ομάδα του OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού @@ -2655,7 +2754,7 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Δεν STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_OSKTITLE :{BLACK}Δώστε το όνομα του αποθηκευμένου παιχνιδιού +STR_SAVELOAD_OSKTITLE :{BLACK}Δώστε το όνομα του παιχνιδιού προς αποθήκευση # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Δημιουργία Κόσμου @@ -2665,13 +2764,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων: STR_MAPGEN_DATE :{BLACK}Ημερομηνία: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Αριθμός βιομηχανιών: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Μέγιστο ύψος χάρτη +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Αύξηση του μέγιστου ύψους βουνών του χάρτη κατά ένα +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Μείωση του μέγιστου ύψους βουνών του χάρτη κατά ένα STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Ύψος γραμμής χιονιού: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα πάνω STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα κάτω -STR_MAPGEN_RANDOM_SEED :{BLACK}Τυχαίος σπόρος: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Κάνετε κλικ για να δώσετε ένα σπόρο τυχαίας παραγωγής -STR_MAPGEN_RANDOM :{BLACK}Τυχαίος -STR_MAPGEN_RANDOM_HELP :{BLACK}Αλλαγή του σπόρου τυχαίας παραγωγής για την Δημιουργία Εδάφους STR_MAPGEN_LAND_GENERATOR :{BLACK}Δημιουργός εδάφους: STR_MAPGEN_TREE_PLACER :{BLACK}Αλγόριθμος δέντρων: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Τύπος εδάφους: @@ -2696,9 +2794,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Χειρ STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Περιστροφή χάρτη υψομετρίας: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Όνομα χάρτη υψομετρίας: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Μέγεθος: -STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Δώστε έναν σπόρο τυχαίας παραγωγής +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Αλλαγή μέγιστου ύψους χάρτη STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Άλλαγη του ύψους της γράμμης χιονιού STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Αλλαγή έτους έναρξης @@ -2777,6 +2875,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Δεν β STR_NEWGRF_SETTINGS_DISABLED :{RED}Απενεργοποιημένο STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Μη συμβατό με αυτήν την έκδοση του OpenTTD +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Κλείσιμο @@ -2804,10 +2904,9 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέ STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Μετακίνηση στο στοιχείο STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Μετακίνηση στο sprite. Εάν το sprite δεν είναι κανονικό sprite, συνεχίζει στο επόμενο κανονικό sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Προηγούμενο στοιχείο -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στην αρχή +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Προχώρησε στο προηγούμενο κανονικό sprite, προσπερνώντας οποιαδήποτε ψευδό/επαναχρωματιζόμενα/γραμματοσειράς sprites και ξαναεκτέλεσε τη διαδικασία από το πρώτο sprite ως το τελεταίο STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Επανεμφάνιση του επιλεγμένου sprite. Η ευθυγράμμιση αγνοείται όταν γίνεται η σχεδίαση του sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Μετακίνηση του sprite τριγύρω, αλλάζοντας τα στίγματα Χ και Υ -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Στίγμα Χ: {NUM}, Στίγμα Υ: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Επιλογή sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Επιλογή ενός sprite από οπουδήποτε στη οθόνη @@ -2832,14 +2931,14 @@ STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωσ STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Απρόοπτο sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Άγνωστη ιδιότητα Action 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Προσπάθεια να χρησιμοποιήσει άκυρο ID (sprite {3:NUM}) -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} περιέχει ένα κατεστραμμένο sprite. Όλα τα κατεστραμμένα sprites θα εμφανίζονται ως κόκκινα ερωματικό (?) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :Το {YELLOW}{STRING} περιέχει ένα αλλοιωμένο sprite. Όλα τα αλλοιωμένα sprites θα εμφανίζονται ως κόκκινα ερωτηματικά (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Περιέχει πολλαπλές καταχωρήσεις Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Διάβασε πέρα από το τέλος του ψευδό-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών -STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών{}Επειδή παίζετε {YELLOW}μη σταθερή έκδοση του OpenTTD{WHITE}, μπορεί να χρειαστείτε {YELLOW}ασταθή έκδοση των βασικών γραφικών{WHITE} +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών{}Επειδή παίζετε {YELLOW}δοκιμαστική έκδοση του OpenTTD{WHITE}, μπορεί να χρειάζεται να έχετε εγκατεστημένη {YELLOW}δοκιμαστική έκδοση των βασικών γραφικών{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Οι ζητημένοι πόροι GRF δεν είναι διαθέσιμοι (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Το {1:STRING} απενεργοποιήθηκε από το {2:STRING} -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Άγνωστη/άκυρη μορφή σχεδίου sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Άκυρη/άγνωστη μορφή σχεδίου sprite (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Προσοχή! @@ -2864,6 +2963,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Λείπο STR_NEWGRF_BROKEN :{WHITE}Η συμπεριφορά του NewGRF «{0:STRING}» είναι πιθανό να προκαλέσει αποσυγχρονισμούς ή/και απρόοπτα κλεισίματα STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Άλλαξε την κατάσταση *** για «{1:ENGINE}» όταν δεν είναι μέσα σε αμαξοστάσιο STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Άλλαξε το μήκος του οχήματος «{1:ENGINE}» ενώ δεν βρισκόταν μέσα σε αμαξοστάσιο +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Άλλαξε τη χωριτικότητα όχηματος για τη «{1:ENGINE}» όταν δεν είναι σε αμαξοστάσιο ή διαδικασία μετατροπής STR_BROKEN_VEHICLE_LENGTH :{WHITE}Το τρένο «{VEHICLE}» που ανήκει στην εταιρία «{COMPANY}» έχει μη έγκυρο μήκος. Πιθανόν να προέρχεται από προβλήματα με NewGRF. Το παιχνίδι μπορεί να αποσυγχρονιστεί ή να κλείσει απρόοπτα. STR_NEWGRF_BUGGY :{WHITE}Το NewGRF «{0:STRING}» δίνει λάθος πληροφορίες @@ -2878,6 +2978,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <μη STR_NEWGRF_INVALID_ENGINE :<μη έγκυρο μοντέλο μηχανής> STR_NEWGRF_INVALID_INDUSTRYTYPE :<μη έγκυρη βιομηχανία> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<μη έγκυρο όχημα> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Σαρώνονται ΝewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Σαρώνονται τα NewGRF. Ανάλογα με το μέγεθος, αυτό μπορεί να απαιτήσει κάποιο χρόνο... @@ -2915,11 +3018,11 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} παραδόθηκε STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ακόμη απαιτείται) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (παραδόθηκε) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK} ημέρ{P α ες} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK} ημέρ{P α ες} (χρηματοδοτούμενη) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK}{NBSP}ημέρ{P α ες} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK}{NBSP}ημέρ{P α ες} (χρηματοδοτούμενη) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Η πόλη {RED}δεν{BLACK} επεκτείνεται STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Επίπεδο θορύβου στη πόλη: {ORANGE}{COMMA}{BLACK} μέγιστο: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία της πόλης. Το Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία της πόλης. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Τοπική αρχή STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Εμφάνιση πληροφοριών για την τοπική αρχή STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος της πόλης @@ -2962,6 +3065,8 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Δωρ STR_GOALS_GLOBAL_TITLE :{BLACK}Καθολικοί στόχοι: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Κανένας - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Εταιρικοί στόχοι: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στον στόχο για να επικεντρωθεί η οθόνη στη βιομηχανία/πόλη/τετραγωνίδιο. Με Ctrl+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιου @@ -2971,7 +3076,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Πληροφο STR_GOAL_QUESTION_CAPTION_WARNING :Προειδοποίηση STR_GOAL_QUESTION_CAPTION_ERROR :Σφάλμα -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Ακύρωση STR_GOAL_QUESTION_BUTTON_OK :Εντάξει STR_GOAL_QUESTION_BUTTON_NO :Όχι @@ -2990,6 +3095,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Επανεκκ STR_GOAL_QUESTION_BUTTON_POSTPONE :Αναβολή STR_GOAL_QUESTION_BUTTON_SURRENDER :Παράδοση STR_GOAL_QUESTION_BUTTON_CLOSE :Κλείσιμο +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Χρηματοδοτήσεις @@ -3001,10 +3107,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας/πόλης # Story book window +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Σελίδα {NUM} +STR_STORY_BOOK_PREV_PAGE :{BLACK}Προηγούμενη +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Μεταβαίνει στη προηγούμενη σελίδα +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Επόμενη +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Μεταβαίνει στην επόμενη σελίδα # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ονόματα σταθμών - κάνετε κλικ στο όνομα για κεντράρισμα στο σταθμό. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Κρατήστε πατημένο το Ctrl για να επιλέξετε περισσότερα από ένα αντικείμενα +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Κρατήστε πατημένο το Ctrl για να επιλέξετε περισσότερο από ένα αντικείμενο STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Σταθμ{P ός οί} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3015,7 +3127,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Κανέ # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Αναμονή: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} από μεταφορά από τον σταθμό {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} {P προορίζεται προορίζωνται} για φόρτωση @@ -3029,7 +3140,11 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} από {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} μέσω {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} προς {STATION} ############ range for rating starts @@ -3241,6 +3356,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Διαγ STR_GROUP_RENAME_TOOLTIP :{BLACK}Μετονομασία της επιλεγμένης ομάδας STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Κάντε κλικ για προστατέψετε αυτήν την ομάδα από την γενική αυτόματη αντικατάσταση + STR_GROUP_ADD_SHARED_VEHICLE :Προσθήκη κοινόχρηστων οχημάτων STR_GROUP_REMOVE_ALL_VEHICLES :Αφαίρεση όλων των οχημάτων @@ -3249,7 +3365,7 @@ STR_GROUP_RENAME_CAPTION :{BLACK}Μετο # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Νέα Οχήματα Σιδηρόδρομου STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Νέα Οχήματα Ηλεκτροδοτουμένου Σιδηρόδρομου -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήματα Monorail +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήματα Μονοτρόχιου STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Νέα Οχήματα Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Νέα Οχήματα Σιδηρόδρομου @@ -3278,10 +3394,10 @@ STR_PURCHASE_INFO_ALL_BUT :Όλοι εκτ STR_PURCHASE_INFO_MAX_TE :{BLACK}Μέγ. Δύναμη Έλξης: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Εύρος: {GOLD}{COMMA} τετραγωνίδια -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων βαγονιών τρένων - κάντε κλικ σε ένα βαγόνι για πληροφορίες -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων οχήματα δρόμου - κάντε κλικ σε ένα όχημα για πληροφορίες -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων πλοίων - κάντε κλικ σε ένα πλοίο για πληροφορίες -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων αεροσκαφών - κάντε κλικ σε ένα αεροσκάφος για πληροφορίες +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλογής βαγονιού τρένου. Κάντε κλικ σε ένα βαγόνι για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου βαγονιού +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλογής οχήματος δρόμου. Κάντε κλικ σε ένα όχημα για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου οχήματος +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλογής πλοίου. Κάντε κλικ σε ένα πλοίο για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου πλοίου +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλογής αεροσκάφους. Κάντε κλικ σε ένα αεροσκάφος για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου αεροσκάφους STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος @@ -3303,6 +3419,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Μετο STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο πλοίου STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο αεροσκάφους +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Απόκρυψη +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Απόκρυψη +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Απόκρυψη +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Απόκρυψη + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Εμφάνιση +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Εμφάνιση +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Εμφάνιση +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Εμφάνιση + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου βαγονιού +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου οχήματος δρόμου +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου πλοίου +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου αεροσκάφους + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Μετονομασία τύπου τρένου STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Μετονομασία τύπου οχήματος δρόμου STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Μετονομασία τύπου πλοίου @@ -3356,7 +3487,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Κλων STR_DEPOT_CLONE_SHIP :{BLACK}Κλωνοποίηση Πλοίου STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Κλωνοποίηση Αεροσκάφους -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τραίνο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift +Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τραίνο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του οχήματος. Πατήστε αυτό το κουμπί και μετά σε κάποιο όχημα μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του πλοίου. Πατήστε αυτό το κουμπί και μετά σε κάποιο πλοίο μέσα ή έξω από το ναυπηγείο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του αεροσκάφους. Πατήστε αυτό το κουμπί και μετά σε κάποιο αεροσκάφος μέσα στο ή έξω από το υπόστεγο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά @@ -3394,7 +3525,7 @@ STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσ STR_ENGINE_PREVIEW_AIRCRAFT.geniki :{G=n}αεροπλάνου STR_ENGINE_PREVIEW_SHIP :{G=n}πλοίου STR_ENGINE_PREVIEW_SHIP.geniki :{G=n}πλοιού -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}μηχανής monorail +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}μηχανής μονοτρόχιου STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.geniki :{G=f}μηχανής monorail STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}μηχανής maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :{G=f}μηχανής maglev @@ -3413,6 +3544,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Όχημα Δρ STR_REPLACE_VEHICLE_SHIP :Πλοίο STR_REPLACE_VEHICLE_AIRCRAFT :Αεροσκάφος +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Οχήματα σε χρήση +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Στήλη οχημάτων που σας ανήκουν +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Διαθέσιμα οχήματα +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Στήλη με οχήματα διαθέσιμα προς αντικατάσταση + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Επιλέξτε τον τύπο μηχανής για αντικατάσταση STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Επιλέξτε τον νέο τύπο μηχανής που θέλετε να χρησιμοποιηθεί στην θέση του επιλεγμένου τύπου μηχανής στα αριστερά @@ -3435,8 +3571,8 @@ STR_REPLACE_HELP_RAILTYPE :{BLACK}Επιλ STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Εμφανίζει ποια μηχανή στα αριστερά θα αντικατασταθεί, εάν υπάρχει STR_REPLACE_RAIL_VEHICLES :Οχήματα Σιδηροδρόμου STR_REPLACE_ELRAIL_VEHICLES :Οχήματα Ηλεκτρικού Σιδηροδρόμου -STR_REPLACE_MONORAIL_VEHICLES :Οχήματα Monorail -STR_REPLACE_MAGLEV_VEHICLES :Βαγόνια Maglev +STR_REPLACE_MONORAIL_VEHICLES :Οχήματα Μονοτρόχιου +STR_REPLACE_MAGLEV_VEHICLES :Οχήματα Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο @@ -3537,7 +3673,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Χωρη STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Έσοδα μεταφοράς: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}μέρες{BLACK} Τελευταία επισκευή: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Διάστημα μεταξύ επισκευών: {LTBLUE}{COMMA}{NBSP}μέρες{BLACK} Τελευταία επισκευή: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}%{BLACK} Τελευταία επισκευή: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Αύξηση διαστημάτων επισκευών κατά 10. Με Ctrl+Κλικ αυξάνονται τα διαστήματα ανάμεσα των επισκευών κατά 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Μείωση διαστημάτων επισκευών κατά 10. Με Ctrl+Κλικ μειώνεται τα διαστήματα επισκευών κατά 5 @@ -3769,7 +3905,7 @@ STR_TIMETABLE_TRAVEL_FOR :Ταξίδεψ STR_TIMETABLE_TRAVEL_FOR_SPEED :Ταξίδεψε για {STRING} με κατά περισσότερο {VELOCITY} STR_TIMETABLE_STAY_FOR :και μείνε για {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :και ταξίδεψε για {STRING} -STR_TIMETABLE_DAYS :{COMMA} μέρ{P α ες} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}μέρ{P α ες} STR_TIMETABLE_TICKS :{COMMA} στιγμ{P ή ές} STR_TIMETABLE_TOTAL_TIME :{BLACK}Το δρομολόγιο αυτό θα χρειαστεί τουλάχιστον {STRING} για να ολοκληρωθεί @@ -3938,7 +4074,7 @@ STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Το αρχεί STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Το αρχείο δεν είναι εγγράψιμο STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Έλεγχος ακεραιότητας δεδομένων απέτυχε STR_GAME_SAVELOAD_NOT_AVAILABLE :<μη διαθέσιμο> -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Το παιχνίδι έχει σωθεί σε έκδοση χωρίς υποστήριξη τροχιόδρομου. Όλα τα τραμ έχουν αφαιρεθεί +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Το παιχνίδι έχει αποθηκευτεί σε έκδοση χωρίς υποστήριξη για τραμ. Όλα τα τραμ έχουν αφαιρεθεί # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Η δημιουργία του χάρτη εγκαταλείφτηκε...{}... δεν υπάρχουν κατάλληλες τοποθεσίες για πόλεις @@ -4005,6 +4141,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Η εκ STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ήδη στο επίπεδο της θάλασσας STR_ERROR_TOO_HIGH :{WHITE}... πολύ ψηλά STR_ERROR_ALREADY_LEVELLED :{WHITE}... ήδη επίπεδο +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Μετά την αλλαγή, η γέφυρα από πάνω του θα είναι πολύ ψηλή # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα της εταιρίας... @@ -4055,6 +4192,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... δά STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο πάνω από τη γραμμή του χιονιού STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο κάτω από τη γραμμή του χιονιού +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Δεν υπήρχαν διαθέσιμες τοποθεσίες για βιομηχανίες τύπου '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Αλλαγή παραμέτρων δημιουργίας χάρτη για καλύτερα αποτελέσματα + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τρένων εδώ... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Αδύνατο να κτιστεί στάση λεωφορείων... @@ -4162,7 +4302,7 @@ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Δε γ STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει πρώτα να αφαιρεθεί ο δρόμος STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... οι μονόδρομοι δεν μπορούν να έχουν διασταυρώσεις STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Αδύνατο να κτιστεί δρόμος εδώ... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κτιστεί γραμμή τραμ εδώ... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κτιστεί τροχιοδρόμος εδώ... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύνατο να αφαιρεθεί δρόμος από εδώ... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος @@ -4238,7 +4378,7 @@ STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Δεν STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Δεν μπορεί να ονομαστεί το αεροσκάφος... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το τρένο... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το όχημα... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Το όχημα δεν μπορεί να ξεκινήσει ή σταματήσει... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το πλοίο... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το αεροσκάφος... @@ -4272,6 +4412,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Δεν STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... το όχημα καταστράφηκε +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Αλλάξτε τις ρύθμισεις NewGRF σας # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Δεν μπορεί το τρένο να περάσει σήμα με κίνδυνο... @@ -4451,7 +4592,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Πετρελαίου STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Πετρελαίου STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Ατμοκίνητο) @@ -4531,10 +4672,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Βαγόνι Π STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Βαγόνι Μπαταριών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Βαγόνι Αναψυκτικών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Βαγόνι Πλαστικού -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Leviathan» (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Cyclops» (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Pegasus» (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Chimaera» (Ηλεκτρικό) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Leviathan» (Ηλεκτρική) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Cyclops» (Ηλεκτρική) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Pegasus» (Ηλεκτρική) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Chimaera» (Ηλεκτρική) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Επιβατικό Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Βαγόνι Αλληλογραφίας @@ -4660,7 +4801,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Επιβατη STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Επιβατηγό Πλοίο Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Πλοίο Εμπορευμάτων Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Πλοίο Εμπορευμάτων Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Πλοίο Εμπορευμάτων Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Πλοίο Εμπορευμάτων MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Πλοίο Εμπορευμάτων Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4754,6 +4895,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (κρυφό) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4777,6 +4919,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4788,8 +4931,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4800,9 +4941,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 1c8c2b64f6..1c2fa4e0c4 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -109,7 +109,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.plural :משקאות מ # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעים"} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}נוסע{P "" ים} STR_QUANTITY_COAL :{WEIGHT_LONG} של פחם STR_QUANTITY_MAIL :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של דואר STR_QUANTITY_OIL :{VOLUME_LONG} של נפט @@ -213,21 +213,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}כ"ס STR_UNITS_POWER_METRIC :{COMMA}כ"ס STR_UNITS_POWER_SI :{COMMA}קילו וואט +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}ט' STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}ט' STR_UNITS_WEIGHT_SHORT_SI :{COMMA}ק"ג +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} טו{P ן נות} STR_UNITS_WEIGHT_LONG_METRIC :{P 0 "טון " ""}{COMMA}{P "" " טונות"} STR_UNITS_WEIGHT_LONG_SI :{COMMA} ק"ג +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}גל' STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}ל' STR_UNITS_VOLUME_SHORT_SI :{COMMA}מ'³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} גלו{P ן ים} STR_UNITS_VOLUME_LONG_METRIC :{P 0 "ליטר " ""}{COMMA}{P "" " ליטרים"} STR_UNITS_VOLUME_LONG_SI :{COMMA} ³מטר +STR_UNITS_FORCE_IMPERIAL :{COMMA} ליברות כוח +STR_UNITS_FORCE_METRIC :{COMMA} ק"ג STR_UNITS_FORCE_SI :{COMMA} קילו ניוטן STR_UNITS_HEIGHT_IMPERIAL :{COMMA} רגל +STR_UNITS_HEIGHT_METRIC :{COMMA} מ' STR_UNITS_HEIGHT_SI :{COMMA} מ' # Common window strings @@ -235,6 +242,7 @@ STR_LIST_FILTER_TITLE :{BLACK}מחרו STR_LIST_FILTER_OSKTITLE :{BLACK}הכנס מחרוזת סינון STR_LIST_FILTER_TOOLTIP :{BLACK}הכנס מילת מפתח לסינון הרשימה לפיה +STR_TOOLTIP_GROUP_ORDER :{BLACK}בחר סדר קיבוץ STR_TOOLTIP_SORT_ORDER :{BLACK}(בחר(י) סדר מיון (עולה\יורד STR_TOOLTIP_SORT_CRITERIA :{BLACK}בחר\י קרטריון מיון STR_TOOLTIP_FILTER_CRITERIA :{BLACK}בחר קריטריון סינון @@ -246,13 +254,17 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}סגור STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}כותרת החלון - גרור להזזה STR_TOOLTIP_SHADE :{BLACK}הצל חלון - הצג רק את שורת הכותרת STR_TOOLTIP_DEBUG :{BLACK}הצג מידע דיבאג של newGRF -STR_TOOLTIP_STICKY :{BLACK}'סמן חלון זה כחלון מוגן מפני מקש 'סגור את כל החלונות +STR_TOOLTIP_DEFSIZE :{BLACK}שנה את גודל החלון לברירת המחדל. Ctrl+לחיצה לשמירה של גודל החלון כברירת המחדל +STR_TOOLTIP_STICKY :{BLACK}'סמן חלון זה כחלון מוגן מפני מקש 'סגור את כל החלונות. Ctrl+Click לשמירה כברירת מחדל STR_TOOLTIP_RESIZE :{BLACK}לחץ ומשוך כדי לשנות את גודל החלון STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}החלף בין גודל חלון קטן/גדול STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}כפתור גלילה - גולל רשימה מעלה/מטה STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}פס הגלילה - גלילה של רשימות ימינה\שמאלה STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}הסרת בניינים וכו' במשבצת קרקע. מקש Ctrl מסמן את האזור באופן אלכנסוני. מקש Shift מעביר בין בנייה לבין הצגה של הערכת העלות +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}בחירת מחדל STR_BUTTON_CANCEL :{BLACK}ביטול @@ -290,18 +302,21 @@ STR_SORT_BY_LENGTH :אורך STR_SORT_BY_LIFE_TIME :זמן חיים נותר STR_SORT_BY_TIMETABLE_DELAY :עיכוב בלוח זמנים STR_SORT_BY_FACILITY :סוג תחנה +STR_SORT_BY_WAITING_TOTAL :מטען כולל בהמתנה +STR_SORT_BY_WAITING_AVAILABLE :מטען זמין בהמתנה STR_SORT_BY_RATING_MAX :דירוג מטען גבוה ביותר STR_SORT_BY_RATING_MIN :דירוג מטען נמוך ביותר STR_SORT_BY_ENGINE_ID :מספר קטר STR_SORT_BY_COST :מחיר STR_SORT_BY_POWER :כח STR_SORT_BY_TRACTIVE_EFFORT :מאמץ גרירה -STR_SORT_BY_INTRO_DATE :תאריך התחלת ייצור +STR_SORT_BY_INTRO_DATE :תאריך ייצור STR_SORT_BY_RUNNING_COST :עלות הפעלה -STR_SORT_BY_POWER_VS_RUNNING_COST :כח/עלות הפעלה +STR_SORT_BY_POWER_VS_RUNNING_COST :הספק\עלות הפעלה STR_SORT_BY_CARGO_CAPACITY :קיבולת סחורה STR_SORT_BY_RANGE :טווח STR_SORT_BY_POPULATION :אכלוסיה +STR_SORT_BY_RATING :דרוג # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}השהה משחק @@ -314,6 +329,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}הצג STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}הצג רשימת תחנות החברה STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}הצג מידע כספי על החברה STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}הצג מידע כללי על החברה +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}הצג את סיפור החברה +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}הצג רשימת מטרות STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}הצג גרפים STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}הצג את טבלת ליגת החברות STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ממן בניה של תעשייה חדשה או הצג את רשימת כל התעשיות @@ -361,7 +378,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :יציאה ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :אפשרויות המשחק -STR_SETTINGS_MENU_CONFIG_SETTINGS :הגדרות מתקדמות STR_SETTINGS_MENU_SCRIPT_SETTINGS :הגדרות סקריפטים של משחק/שחקני מחשב STR_SETTINGS_MENU_NEWGRF_SETTINGS :הגדרות GRF חדש STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :אפשרויות שקיפות @@ -387,6 +403,7 @@ STR_FILE_MENU_EXIT :יציאה # map menu STR_MAP_MENU_MAP_OF_WORLD :מפת העולם STR_MAP_MENU_EXTRA_VIEW_PORT :השקפה נוספת +STR_MAP_MENU_LINGRAPH_LEGEND :מקרא זרימת מטענים STR_MAP_MENU_SIGN_LIST :רשימת שלטים ############ range for town menu starts @@ -469,7 +486,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :הדלק/כבה STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :הפעל/כבה צביעת בלוקים לא מעודכנים ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -485,22 +502,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -673,17 +708,20 @@ STR_SMALLMAP_CAPTION :{WHITE}{STRING} STR_SMALLMAP_TYPE_CONTOURS :קווי מיתאר STR_SMALLMAP_TYPE_VEHICLES :כלי תעבורה STR_SMALLMAP_TYPE_INDUSTRIES :תעשיות +STR_SMALLMAP_TYPE_ROUTEMAP :זרימת מטענים STR_SMALLMAP_TYPE_ROUTES :דרכים STR_SMALLMAP_TYPE_VEGETATION :צמחייה STR_SMALLMAP_TYPE_OWNERS :בעלים STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}הצג מתאר פני השטח STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}הצג כלי רכב STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}הצג תעשיות +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}הצג זרימת מטענים במפה STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}הצג נתיבי תעבורה STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}הצג צמחיה STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}הצג פרטי בעלות על קרקע STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}הקלק על סוג תעשיה כדי לאפשר או לבטל את הצגתה. קליק תוך לחיצה על מקש Ctrl מבטל את כל הסוגים פרט לזה הנבחר. קליק נוסף תוך לחיצה על מקש Ctrl יאפשר את כל סוגי התעשיות STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}הקלק על חברה כדי לאפשר או לבטל את הצגת נכסיה. קליק תוך לחיצה על מקש Ctrl מבטל את כל החברות פרט לזו הנבחרת. קליק נוסף תוך לחיצה על מקש Ctrl יאפשר את כל החברות +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :א{BLACK}לחץ על מטען כדי להציג את מאפייניו. Ctrl+לחיצה מציג רק את המטען הנבחר. Ctrl+לחיצה נוספת להצגת המטענים STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}כבישים STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}מסילות @@ -717,6 +755,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}הצג/הסתר שמות ערים STR_SMALLMAP_CENTER :{BLACK}מרכז את המפה הקטנה על המיקום הנוכחי STR_SMALLMAP_INDUSTRY :{TINY_FONT}({1:NUM}){0:STRING} +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}השתק את כולן @@ -727,6 +766,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}הצג STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}שנה מצב הצגה של מפת גבהים STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}הצג נכסיה של אף חברה על גבי המפה STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}הצג את כל נכסי החברות על גבי המפה +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}אל תציג מטענים במפה +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}הצג את כל המטענים במפה # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}הצג הודעה או חדשות אחרונים @@ -803,19 +844,17 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}ממתינה במבדוק {VEHICLE} STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}ממתין בסככת המטוסים {VEHICLE} -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}ל{VEHICLE} חסר(ים) יעד(ים) במסלול הנסיעה של STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}ל{VEHICLE} יעד שאינו קיים עוד עבור STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}ל{VEHICLE} כפילות ברשימת היעדים של STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} יעד בלתי חוקי במסלול הנסיעה של -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}מתיישן {VEHICLE} STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}מתיישן מאוד {VEHICLE} STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}מתיישן מאוד, וזקוק להחלפה בדחיפות {VEHICLE} STR_NEWS_TRAIN_IS_STUCK :אינה יכולה למצוא נתיב המשך {WHITE}{VEHICLE} -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} הל{P "ך" "כה"} לאיבוד +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} הל לאיבוד STR_NEWS_VEHICLE_IS_UNPROFITABLE :ריווחי {WHITE}{VEHICLE} שנה שעברה הם {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE}אינ{G 0 "ו" "ה"} יכול{G 0 "" "ה"} להגיע אל היעד הבא כי הוא מחוץ לטווח @@ -888,12 +927,10 @@ STR_GAME_OPTIONS_CURRENCY_LTL :(LTL) ליטא STR_GAME_OPTIONS_CURRENCY_KRW :(KRW) וון דרום קוריאני STR_GAME_OPTIONS_CURRENCY_ZAR :(ZAR) ראנד דרום אפריקאי STR_GAME_OPTIONS_CURRENCY_CUSTOM :אחר... +STR_GAME_OPTIONS_CURRENCY_GEL :לארי גאורגי (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :ריאל איראני (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}רכבי כביש STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}בחר את צד הכביש בו יסעו כלי הרכב STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :סע בצד שמאל @@ -929,11 +966,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :רומאית STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}שמירה אוטומטית STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}בחר פרק זמן בין שמירות אוטומטיות +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :כבוי STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :מידי חודש STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :כל 3 חודשים STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :כל 6 חודשים STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :כל 12 חודשים +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}שפה STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}בחר את שפת הממשק @@ -945,8 +984,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}רזלו STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}בחר את רזולוציית המסך STR_GAME_OPTIONS_RESOLUTION_OTHER :אחר -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}פורמט עבור צילומי מסך -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}בחר את הפורמט של צילום המסך + STR_GAME_OPTIONS_BASE_GRF :{BLACK}ערכת גרפיקה בסיסית STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}בחר בערכת גרפיקה בסיסית לשימוש @@ -962,6 +1000,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}בחר STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} קובץ פגום{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת המוזיקה הבסיסית +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}שגיאה ביצירת רשימה של רזולוציות אפשריות STR_ERROR_FULLSCREEN_FAILED :{WHITE}נכשל בשינויי למסך מלא # Custom currency window @@ -1047,8 +1086,7 @@ STR_CITY_APPROVAL_HOSTILE :עויין STR_WARNING_NO_SUITABLE_AI :{WHITE}אין בינות מלאכותיות מתאימות...{}באפשרותך להוריד בינות מלאכותיות בעזרת מערכת ה'תוכן המקוון' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}הגדרות מתקדמות +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}מחרוזת סינון: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}הרחב הכל STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}צמצם הכל @@ -1061,21 +1099,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :הגדרת מש STR_CONFIG_SETTING_TYPE_COMPANY_MENU :הגדרת חברה (מאוחסנת במשחק שמור; משפיעה על משחקים חדשים בלבד) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :הגדרת חברה (מאוחסנת במשחק שמור; משפיעה על החברה הנוכחית בלבד) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}הצג: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה להלן כך שתציג רק הגדרות שהשתנו -STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות -STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות -STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה / כל ההגדרות +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}קטגוריה: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}סוג: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה להלן תוך שימוש בסינון שהוגדר מראש. +STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות (הצג רק הגדרות חשובות) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות (הצג את רוב ההגדרות) +STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה (הצג את כל ההגדרות, כולל הגדרות משונות) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :הגדרות בעלות ערך השונה מברירת המחדל STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :הגדרות בעלות ערך השונה מזה אשר בהגדרות המשחק החדש שלך STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה הבאה להגדרות מסוימות STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :כל ההגדרות -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :הגדרות משתמש(לא נמצא בשמורים; משפיע על כל המשחקים) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :הגדרות משחק (נמצא בשמורים; משפיע רק על משחקים חדשים) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :הגדרות משחק (נמצא בשמורים; משפיע רק על משחק נוכחי) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :הגדרות חברה (נמצא בשמורים; משפיע רק על משחקים חדשים) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :הגדרות חברה (נמצא בשמורים; משפיע רק על חברה נוכחית) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :הגדרות משתמש (לא מאוחסנות במשחקים שמורים; משפיעות על כל המשחקים) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :הגדרות משחק (מאוחסנות במשחקים שמורים; משפיעות רק על משחקים חדשים) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :הגדרות משחק (מאוחסנות במשחק שמור; משפיעות רק על משחק נוכחי) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :הגדרות חברה (מאוחסנות במשחקים שמורים; משפיעות רק על משחקים חדשים) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :הגדרות חברה (מאוחסנות במשחק שמור; משפיעות רק על חברה נוכחית) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}הצג את תוצאות החיפוש בהגדרת {SILVER}הקטגוריה {} {BLACK} ל{WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}הצג את תוצאות החיפוש בהגדרת {SILVER}הסוג {} {BLACK}ל{WHITE}כל סוגי ההגדרות +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}הצג את תוצאות החיפוש בהגדרת{SILVER}הקטגוריה{} {BLACK}ל{WHITE}{STRING} {BLACK}וגם את {SILVER}הסוג {BLACK}ל{WHITE}כל סוגי ההגדרות +STR_CONFIG_SETTINGS_NONE :{WHITE}- אין - STR_CONFIG_SETTING_OFF :כבוי STR_CONFIG_SETTING_ON :דלוק @@ -1108,17 +1151,18 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :קבע כמה STR_CONFIG_SETTING_CONSTRUCTION_COSTS :עלויות בנייה: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :קבע את רמת העלויות של בנייה ורכישה STR_CONFIG_SETTING_RECESSIONS :מיתונים: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :אם מאופשר מיתונים עלולים להתרחש מדי כמה שנים. בעת מיתון כל הייצור קטן יותר באופן משמעותי (הוא חוזר לרמתו הקודמת בסוף המיתון) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :אם מאופשר מיתונים עלולים להתרחש מדי כמה שנים. בתקופת מיתון כל הייצור קטן יותר באופן משמעותי (הוא חוזר לרמתו הקודמת בסוף המיתון) STR_CONFIG_SETTING_TRAIN_REVERSING :מנע החלפת כיוון רכבות בתחנות: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :אם מאופשר רכבות לא יחליפו כיוון בתחנות שאינן סופיות, אם עקב החלפת כיוון יש נתיב קצר יותר אל יעדן הבא +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :אם מאופשר רכבות לא יחליפו כיוון בתחנות שאינן סופיות, גם אם עקב החלפת כיוון יש נתיב קצר יותר אל היעד הבא STR_CONFIG_SETTING_DISASTERS :אסונות: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :אפשר/מנע אסונות אשר עלולים מדי פעם לחסום או להרוס כלי רכב או תשתיות STR_CONFIG_SETTING_CITY_APPROVAL :יחס מועצת העיר כלפי שינוי מבנה אזורי: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :בחר באיזו מידה רעש ונזק סביבתי ע"י חברות משפיעים על הדירוג העירוני שלהן ופעולות בנייה עתידיות באזור -STR_CONFIG_SETTING_BUILDONSLOPES :אפשר לבנות על מידרונות וחופים: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :אם מאופשר, ניתן לבנות מסילות ותחנות על גבי רוב המדרונות. אם מבוטל, ניתן לבנות אותם רק על מדרונות המתאימים לכיוון המסילה וכך אינם דורשים יסודות -STR_CONFIG_SETTING_AUTOSLOPE :{STRING} :'אפשר יצירת מילוי עפר תחת מבנים, פסי רכבת וכו +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :גובה מפה מקסימלי: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :קבע את הגובה המקסימלי להרים במפה +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}לא ניתן לקבוע את הגובה המקסימלי במפה לערך זה. קיים לפחות הר אחד גבוה יותר +STR_CONFIG_SETTING_AUTOSLOPE :אפשר יצירת מילוי עפר תחת מבנים, פסי רכבת וכו': {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :אפשר שינוי פני השטח מתחת לבניינים ולמסילות ללא הסרתם STR_CONFIG_SETTING_CATCHMENT :אפשר לאזורי אגירת מים להיראות יותר ריאליסטיים: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :אזורי אגירה בגדלים שונים עבור סוגים שונים של תחנות ונמלי תעופה @@ -1142,14 +1186,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :אסור על STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :סיבוב של 90 מעלות מתרחש כאשר מסילה אנכית באה מיד אחרי מסילה אופקית במשבצת סמוכה, וכך מאלצת את הרכבת לבצע פנייה של 90 מעלות בעת חציית גבול המשבצות במקום פניית 45 הרגילה עבור צירופי מסילות אחרים. הנ"ל תקף גם לגבי רדיוס הסיבוב של אוניות STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{STRING} :אפשר חיבור בין תחנות שאינן צמודות זו לזו STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :אפשר הוספת חלקים לתחנה מבלי לגעת ישירות בחלקים הקיימים. דורש קליק בצירוף לחיצה על מקש Ctrl בעת מיקום החלקים החדשים -STR_CONFIG_SETTING_IMPROVEDLOAD :השתמש באלגוריתם טעינה משופר: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :אם מאופר, מספר רכבים הממתינים בתחנה מוטענים בזה אחר זה. טעינת הרכב הבא מתחילה רק כאשר ממתין די מטען לצורך מילוי הרכב הראשון -STR_CONFIG_SETTING_GRADUAL_LOADING :טען כלי רכב בהדרגה: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :טען רכבים בהדרגה באמצעות זמני טעינה ייחודיים לכל רכב, במקום לטעון הכל בבת אחת עם פרק זמן קבוע התלוי רק בכמות המטען הטעונה STR_CONFIG_SETTING_INFLATION :אנפלציה: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :אפשר אינפלציה בכלכלה, כך שהעלויות עולות מעט מהר יותר מאשר התשלומים -STR_CONFIG_SETTING_SELECTGOODS :מסור סחורה לתחנה רק כאשר יש ביקוש: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :מסור מטען לתחנה רק אם התבקש ע"י כלי רכב טוען. זה מונע דירוגים רעים עבור מטענים אשר אינם מקבלים שירות בתחנה STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :אורך גשר מירבי: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :אורך מירבי לבניית גשרים STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :אורך מנהרה מירבי: {STRING} @@ -1158,7 +1196,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :{STRING} :שי STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :אופן מימון תעשיה עיקרית. "ללא" משמע שלא ניתן לממן כאלו. "סיקור" משמע שניתן לממן כאלו, אך הבנייה מתרחשת בנקודה אקראית על גבי המפה ועלולה אף להיכשל. "כמו תעשיות אחרות" משמע שתעשיות גולמיות ניתנות לבנייה ע"י חברות כמו תעשיות עיבוד, בכל מקום שהן רוצות STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ללא STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :כמו שאר התעשיות -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :חיפוש אחר התעשיות +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :איתור מחצבים STR_CONFIG_SETTING_INDUSTRY_PLATFORM :אזרו שטוח סביב תעשיות: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :כמות המקום השטוח סביב תעשיה. זה מבטיח שיהיה מקום פנוי סביב תעשיה לבניית מסילות וכו' STR_CONFIG_SETTING_MULTIPINDTOWN :{STRING} :אפשר יצירת מספר תעשיות זהות בשטחה של עיר אחת @@ -1177,8 +1215,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :מקום בו STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :קצה קרוב STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :אמצע STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :קצה רחוק -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING ::(כלי רכב ממתינים(עם אפקט קונט {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :גרום לרכבי כביש להמתין מול תחנות מלאות עד שהן מתפנות STR_CONFIG_SETTING_AUTOSCROLL :{STRING} :גלילת תצוגה בעת שסמן העכבר נמצא בסמוך לקצוות STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :כאשר מאופשר, חלונות תצוגה יתחילו לגלול כאשר העכבר קרוב לקצה החלון STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :מבוטל @@ -1209,10 +1245,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{STRING} :אפ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות עיירות STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :אפשר נסיעה דרך תמרורי-עצירה על דרכים בבעלות מתחרים: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות חברות אחרות -STR_CONFIG_SETTING_ADJACENT_STATIONS :{STRING} :אפשר בניית תחנות בשכנות -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :אפשר לתחנות שונות לדעת זו בזו -STR_CONFIG_SETTING_DYNAMIC_ENGINES :אפשר מספר ערכות מנוע GRF חדשות: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :אפשרות תאימות עבור NewGRF-ים ישנים. אל תבטל/י אפשרות זו, אלא אם את/ה יודע/ת בדיוק מה את/ה עושה! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}שינוי הגדרה זו אינה אפשרית כאשר קיימים כלי רכב STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :תחזוקת תשתיות: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :כאשר מאופשר, תשתיות גורמות לעלויות תחזוקה. העלות גדלה באופן שהוא מעבר ליחסי לעומת גודל הרשת, וכך משפיע יותר על חברות גדולות מאשר על חברות קטנות @@ -1243,39 +1275,51 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :משך הצגת STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :פרק הזמן להצגת הודעות שגיאה בחלון אדום. יש לשים לב כי כמה הודעות שגיאה (קריטיות) אינן נסגרות אוטומטית אחרי פרק זמן זה, אלא יש לסגור אותן ידנית STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{P 0 "שנייה " ""}{COMMA}{P "" " שניות"} STR_CONFIG_SETTING_HOVER_DELAY :הצג רמזים צצים: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :השהייה טרם הצגת רמזים צצים כאשר העכבר מרחף מעל חלק ממשק. לחלופין, ניתן לקשר רמזים צצים לכפתור העכבר הימני -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :רחף למשך {P 0 "שניה " ""}{COMMA}{P "" " שניות"} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :השהייה טרם הצגת רמזים צצים כאשר העכבר מרחף מעל חלק ממשק. לחלופין, ניתן לקשר רמזים צצים לכפתור העכבר הימני כאשר מוגדר 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :רחף למשך {P 0 "מילישניה " ""}{COMMA}{P "" " מילישניות"} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :קליק ימני STR_CONFIG_SETTING_POPULATION_IN_LABEL :הראה את אוכלוסיית העיר בתוך תוית השם של העיר: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :הצג את אוכלוסייתן של עיירות בתווית שלהן על גבי המפה STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :עובי קווים בגרפים: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :עובי הקו בגרפים. קו דק ניתן לקריאה באופן מדויק יותר, אולם קל יותר לראות קו עבה ולהבחין בין הצבעים של קוים עבים -STR_CONFIG_SETTING_LAND_GENERATOR :יוצר אדמה: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR :מחולל פני שטח: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :המחולל המקורי מבוסס על הגרפיקה הבסיסית, ויוצר פני שטח אחידים. בורא הקרקע מבוסס על אלגוריתם רעש פרלין עם אפשרויות עריכה עדינות STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :מקורי STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :בורא הקרקע +STR_CONFIG_SETTING_TERRAIN_TYPE :סוג המשטח: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(בורא הקרקע בלבד) הרריות המשטח +STR_CONFIG_SETTING_INDUSTRY_DENSITY :צפיפות תעשיות: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :בחר כמה תעשיות יווצרו ומהי הרמה שתישמר לאורך המשחק STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :מרחק מירבי מן הקצה עבור מזקקות נפט: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :מזקקות נפט נבנות רק בקרבת גבול המפה, כלומר חוף הים עבור מפות בצורת אי STR_CONFIG_SETTING_SNOWLINE_HEIGHT :גובה קו השלג: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :רמת חספוס השטח (בבורא האדמה בלבד) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :בחר מהו הגובה בו מתחיל השלג באקלים קר. שלג משפיע גם על הדרישות ביצירת תעשייה וגידול ערים +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :רמת חספוס השטח: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(בורא הקרקע בלבד) בחר את תדירות הגבעות: למשטחים חלקים פחות גבעות שמפוזרות במרחב. למשטחים מחוספסים יש הרבה גבעות, שעלולות להיראות מחזוריות STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :חלק מאוד STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :חלק STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :מחוספס STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :מחוספס מאוד +STR_CONFIG_SETTING_VARIETY :הפצה מגוונת: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(עבור בורא הקרקע בלבד) בחר האם המפה תכיל גם הרים וגם אזורים שטוחים. מכיוון שכך המפה שטוחה יותר, יש לקבוע את ההגדרות הנוספות להררי +STR_CONFIG_SETTING_RIVER_AMOUNT :כמות הנהרות: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :בחר את כמות הנהרות STR_CONFIG_SETTING_TREE_PLACER :אלגוריתם של נוטע העצים: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :בחר את הפיזור של העצים על המפה: 'מקורי' שותל עצים בצורה אחידה, 'משופר' שותל אותם בקבוצות STR_CONFIG_SETTING_TREE_PLACER_NONE :בכלל לא STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :מקורי STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :משופר +STR_CONFIG_SETTING_ROAD_SIDE :כלי רכב: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :בחר את צד הנסיעה STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :סיבוב מפת גבהים: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :נגד כיוון השעון STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :בכיוון השעון STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{STRING} :עומק הקרקע עבור מפה שטוחה -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{STRING} :אפשר יצירת קרקע בשולי המפה -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :אם מבוטל, גבולות המפה תמיד יהיו אוקיינוס STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}לפחות משבצת אחת בקצה הצפוני אינה ריקה STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}לפחות משבצת אחת באחד הקצוות אינה מכוסה מים -STR_CONFIG_SETTING_STATION_SPREAD :התפרסות תחנה מירבית: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :פריסה מירבית לתחנה: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :שטח מירבי עליו יכולים להתפרס חלקיה השונים של תחנה בודדת. יש לשים לב כי ערכים גבוהים יאטו את המשחק STR_CONFIG_SETTING_SERVICEATHELIPAD :{STRING}טיפול אוטומטי במסוקים במנחת STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :תחזק מסוקים אחרי כל נחיתה, אפילו אם אין מוסך בנמל התעופה @@ -1292,7 +1336,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :{STRING} :גל STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :שלוט כיצד התצוגה הראשית נגללת למיקום מסוים כאשר מקליקים על המפה הקטנה אן כאשר נותנים הוראה לגלול לעצם מסוים על גבי המפה. אם מאופשר, חלון התצוגה נגלל באופן חלק, אם מבוטל הוא מוקפץ ישירות אל נקודת המטרה STR_CONFIG_SETTING_MEASURE_TOOLTIP :{STRING} :'הצג מידות בעת בניית כבישים/מסילות וכיוב STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :הצג מרחק במשבצות והבדלי גבהים בעת גרירה תוך כדי פעולות בנייה -STR_CONFIG_SETTING_LIVERIES :{STRING} :הצג את צבעי החברה +STR_CONFIG_SETTING_LIVERIES :הצג צבעים מיוחדים לכלי רכב: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :שלוט בשימוש בצבעים ייחודיים לסוגי כלי רכב (בניגוד לצבעים ייחודיים לחברה) STR_CONFIG_SETTING_LIVERIES_NONE :לא STR_CONFIG_SETTING_LIVERIES_OWN :החברה שלי @@ -1322,17 +1366,15 @@ 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_AUTOSAVE :שמירה אוטומטית: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :בחר פרק זמן בין שמירות אוטומטיות + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :השתמש במבנה התאריך {STRING} בשביל שמות קבצי השמירה. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :פורמט התאריך בשמות קבצים של משחקים שמורים STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ארוך (31 בדצמבר 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :קצר (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :לוח צבעים ברירת מחדל שיש להניח עבור NewGRF-ים אשר אינם מפרטים לוח צבעים: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :לוח צבעים ברירת מחדל לשימוש עבור NewGRF-ים אשר אינם מפרטים איזה לוח צבעים הם צריכים -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :לוח צבעים DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :לוח צבעים Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :עצור משחק אוטומטית אחרי התחלת משחק חדש: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :כאשר מאופשר, המשחק יושהה אוטומטית בעת התחלת משחק חדש, דבר המאפשר בחינה מדוקדקת יותר של המפה STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :כאשר המחשק מושהה הרשה: {STRING} @@ -1341,7 +1383,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :שום פעול STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :כל הפעולות שאינן פעולות בנייה STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :כל הפעולות שאינן משנות את פני השטח STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :כל הפעולות -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :השתמש ברשימת כלי הרכב המתקדמת: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :השתמש בקבוצות ברשימת כלי הרכב: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :אפשר שימוש ברשימות כלי הרכב המתקדמות לצורך חלוקת כלי רכב לקבוצות STR_CONFIG_SETTING_LOADING_INDICATORS :{STRING} :הצג מצביעי הטענה STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :בחר האם מדדי טעינה יוצגו מעל רכבים בעת טעינתם או פריקתם @@ -1356,7 +1398,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :סוג מסיל STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :הראשון הזמין STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :האחרון הזמין STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :הנפוץ ביותר -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :{STRING} :הדגש מסלולים שבשימוש +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :הדגש מסלולים שבשימוש: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :תן צבע שונה למסילות שמורות כדי לסייע בבעיות עם רכבות המסרבות להיכנס לגושים מבוססי מסלול STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :{STRING}: שמור על כלי הבנייה פעילים לאחר השימוש STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :השאר את כלי הבנייה עבור גשרים, מנהרות וכו' פתוחים אחרי השימוש @@ -1370,7 +1412,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :השמע צלי STR_CONFIG_SETTING_SOUND_NEW_YEAR :סוף שנה: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :השמע צליל בסוף שנה המסכם את תפקוד החברה בהשוואה לשנה הקודמת STR_CONFIG_SETTING_SOUND_CONFIRM :בנייה: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :השמע צליל בעת בנייה מוצלחת או פעולות אחרות +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :השמע צליל בעת הצלחת בנייה או פעולות אחרות STR_CONFIG_SETTING_SOUND_CLICK :הקשה על כפתורים: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :השמע צפצוף בהקשת כפתורים STR_CONFIG_SETTING_SOUND_DISASTER :אסונות/תאונות: {STRING} @@ -1382,13 +1424,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :השמע קול STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :מנע בניית תשתיות כאשר אין כלי רכב מתאימים זמינים: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :כאשר מאופשר, תשתיות זמינות רק כאשר ישנם גם כלי רכב זמינים, דבר המונע בזבוז זמן וכסף על תשתיות בלתי שמישות -STR_CONFIG_SETTING_MAX_TRAINS :{STRING} :מספר רכבות מירבי לשחקן +STR_CONFIG_SETTING_MAX_TRAINS :מספר רכבות מירבי לשחקן: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :מספר מירבי של רכבות בהן חברה יכולה להחזיק -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :{STRING} :מספר משאיות/אוטובוסים מירבי לשחקן +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :מספר משאיות/אוטובוסים מירבי לשחקן: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :מספר מירבי של רכבי כביש בהם חברה יכולה להחזיק -STR_CONFIG_SETTING_MAX_AIRCRAFT :{STRING} :מספר כלי טייס מירבי לשחקן +STR_CONFIG_SETTING_MAX_AIRCRAFT :מספר כלי טייס מירבי לשחקן: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :מספר מירבי של מטוסים בהם חברה יכולה להחזיק -STR_CONFIG_SETTING_MAX_SHIPS :{STRING} :מספר כלי שייט מירבי לשחקן +STR_CONFIG_SETTING_MAX_SHIPS :מספר כלי שייט מירבי לשחקן: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :מספר מירבי של אוניות בהן חברה יכולה להחזיק STR_CONFIG_SETTING_AI_BUILDS_TRAINS :מנע הפעלת רכבות ע”י שחקני המחשב: {STRING} @@ -1482,7 +1524,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :בחר את ה STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{STRING} :בנה רמזורים מכאניים לפני STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :קבע את השנה בה רמזורים חשמליים ישמשו במסילות. לפני שנה זו יהיו בשימוש רמזורים מכניים (פעולתם זהה, הם רק נראים אחרת) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{STRING} :אפשר ממשק ויזואלי עבור רמזורים -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :הצג חלון לבחירת סוג הרמזור להצבה, במקום רק מעבר בין האפשרויות ללא חלון באמצעות הקלקה על "בנה רמזורים" תוך לחיצה על מקש Ctrl +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :הצג חלון לבחירת סוג הרמזור להצבה, במקום רק מעבר בין האפשרויות באמצעות Ctrl+לחיצה על רמזורים בנויים STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{STRING} :ברירת מחדל לבניית רמזורי רכבת STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :סוג רמזור לשימוש בברירת מחדל STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :רמזורי בלוק @@ -1554,35 +1596,71 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ב-{COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ללא STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :{STRING} :מכפיל התחלתי של גודל העיירות STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :גודל ממוצע של ערים יחסית לעיירות רגילות בתחילת המשחק -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :הסר רכיבי-דרך לא הגיוניים במהלך בניית דרכים: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :הסר קצות כבישים ללא מוצא בעת סלילה מחדש ממומנת של כבישים - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}ממשק חזותי -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}בנייה +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :עדכן את הגרף מדי {STRING} {P 0:2 יום ימים} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :זמן לחישוב מחדש של גרף הקישור. כל חישוב מחדש מחשב את התכניות של פריט יחיד בגרף. כלומר, בהגדרה של ערך X אין הכרח שכל הגרף יתעדכן מדי X ימים. רק פריט ממנו יתעדכן. ערך קטן יותר דורש יותר זמן מעבד לחישוב. ערך גבוה קובע זמן ארוך יותר עד שחלוקת המטען מתחילה בנתיב חדש. +STR_CONFIG_SETTING_LINKGRAPH_TIME :המתן {STRING} י{P 0:2 ום מים} לחישוב מחדש של גרף החלוקה +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :הזמן לחישוב מחדש של נקודה בגרף. החישוב מורשה לרוץ במשך מספר ימים זה. בקביעת זמן קצר, החישוב עלול שלא להסתיים במועד. המשחק נעצר עד הסיום (השהיה). בקביעת זמן ארוך, עדכון הערך יתעכב זמן ארוך יותר לאחר שינוי מסלולים. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ידני +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :אסימטרי +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :סימטרי +STR_CONFIG_SETTING_DISTRIBUTION_PAX :אופן החלוקה עבור נוסעים: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"סימטרי" הכוונה שמספר הנוסעים מתחנה א' לתחנה ב' הוא פחות או יותר אותו מספר הנוסעים מתחנה ב' לתחנה א'. "אסימטרי" הכוונה שמספר נוסעים שרירותי יכול ליסוע כל אחד מהכיוונים. "ידני" הכוונה שאין חלוקה אוטומטית עבור נוסעים. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :אופן החלוקה עבור דואר: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"סימטרי" הכוונה שכמות הדואר מתחנה א' לתחנה ב' הוא פחות או יותר אותה כמות הדואר מתחנה ב' לתחנה א'. "אסימטרי" הכוונה שכמויות דואר שרירותיות יכולות להישלח לכל אחד מהכיוונים. "ידני" הכוונה שאין חלוקה אוטומטית עבור דואר. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :אופן החלוקה עבור מחלקה משוריינת: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :מחלקה משוריינת מובילה חפצי ערך באקלים ממוזג, יהלומים באקלים טרופי וזהב באקלים קר. קבצי שדרוג גראפי עלולים לשנות חלוקה זו. "סימטרי" הכוונה שכמות המטען מתחנה א' לתחנה ב' הוא פחות או יותר אותה כמות המטען מתחנה ב' לתחנה א'. "אסימטרי" הכוונה שכמויות מטען שרירותיות יכולות להישלח לכל אחד מהכיוונים. "ידני" הכוונה שאין חלוקה אוטומטית עבור המטען. באקלים קר מומלץ לקבוע למצב אסימטרי או ידני כי בנקים לא שולחים זהב חזרה למכרות יהלומים. באקלים ממוזג או טרופי ניתן לבחור גם במצב סימטרי כאשר בנקים ישלחו חפצי ערך חזרה למקור של אותם חפצי ערך. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :אופן החלוקה עבור מטענים אחרים: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"אסימטרי" הכוונה שכמויות מטען שרירותיות יכולות להישלח לכל אחד מהכיוונים. "ידני" הכוונה שאין חלוקה אוטומטית עבור המטען. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :דיוק החלוקה: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :יחידות מהירות: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :כאשר מוצגת מהירות השתמש ביחידות הנבחרות +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :בריטית (מייל לשעה) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :מטרי (קמ"ש) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :בינלאומית (מטר לשניה) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :יחידות הספק כלי תחבורה: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :כאשר מוצג הספק כלי תחבורה השתמש ביחידות הנבחרות +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :בריטית (כ"ס) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :מטרי (כ"ס) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :בינלאומית (קילו וואט) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :יחידות משקל: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :כאשר מוצגים משקלים השתמש ביחידות הנבחרות +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :בריטית (טון) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :מטרי (טון) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :בינלאומית (קילוגרם) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :יחידות נפח: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :כאשר מוצגים נפחים השתמש ביחידות שנבחרו +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :בריטית (גלון) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :מטרי (ליטר) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :בינלאומית (מטר מעוקב) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :יחידות כח גרר: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :כאשר מוצג כח גרר השתמש ביחידות הנבחרות +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :בריטית (ליברות כח) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :מטרי (קילוגרם כוח) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :בינלאומית (קילו ניוטון) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :יחידות גובה: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :כאשר מוצגים גבהים השתמש ביחידות שנבחרו +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :בריטית (רגל) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :מטרי (מטר) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (מטר) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}הגדרות מיקום +STR_CONFIG_SETTING_SOUND :{ORANGE}צלילים +STR_CONFIG_SETTING_INTERFACE :{ORANGE}ממשק חזותי +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}בנייה STR_CONFIG_SETTING_VEHICLES :{ORANGE}כלי תחבורה -STR_CONFIG_SETTING_STATIONS :{ORANGE}תחנות -STR_CONFIG_SETTING_ECONOMY :{ORANGE}כלכלה +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}ניתוב +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}ערים +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}תעשיות +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}התפלגות המטען STR_CONFIG_SETTING_AI :{ORANGE}מתחרים -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}הצג הגדרות -STR_CONFIG_SETTING_INTERACTION :{ORANGE}אינטראקציה -STR_CONFIG_SETTING_SOUND :{ORANGE}צלילים -STR_CONFIG_SETTING_NEWS :{ORANGE}חדשות והודעות -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}רמזורים -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}טיפול במטען STR_CONFIG_SETTING_AI_NPC :{ORANGE}שחקני מחשב -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}חידוש אוטומטי -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}טיפולים -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}ניתוב -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}רכבות -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}ערים -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}תעשיות STR_CONFIG_SETTING_PATHFINDER_OPF :מקורי STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1629,7 +1707,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}משחק STR_INTRO_GAME_OPTIONS :{BLACK}אפשרויות STR_INTRO_HIGHSCORE :{BLACK}טבלת ניקוד מירבי -STR_INTRO_ADVANCED_SETTINGS :{BLACK}הגדרות מתקדמות STR_INTRO_NEWGRF_SETTINGS :{BLACK}(NewGRF)הגדרות שדרוג גראפי STR_INTRO_ONLINE_CONTENT :{BLACK} בדוק תוכן מקוון STR_INTRO_SCRIPT_SETTINGS :{BLACK}הגדרות סקריפטים של משחק/שחקני מחשב @@ -1649,7 +1726,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}ארץ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}הצג הגדרות משחק STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}הצג טבלת ניקוד מירבי -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}הצג הגדרות מתקדמות STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}הצג הגדרות שדרוג גראפי STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} חפש תוכן חדש/מעודכן להורדה STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} הצג הגדרות סקריפטים של משחק/שחקני מחשב @@ -1689,6 +1765,8 @@ STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}טרקטור אימתני (הסרת מפעלים, רכיבים שאי אפשר להזיז): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{ORANGE}{STRING}{LTBLUE} :מנהרות יכולות לחצות זו את זו STR_CHEAT_NO_JETCRASH :{LTBLUE}מטוסי סילון לא יתרסקו (לעיתים קרובות) בשדות תעופה קטנים: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}ערוך את הגובה המקסימלי במפה: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :ערוך את הגובה המקסימלי של הרים במפה STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :אקלים ממוזג STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :אקלים קר STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :אקלים טרופי @@ -1737,6 +1815,7 @@ STR_LIVERY_FREIGHT_TRAM :חשמלית מ STR_FACE_CAPTION :{WHITE}בחירת תווי פנים STR_FACE_CANCEL_TOOLTIP :{BLACK}בטל פנים חדשות STR_FACE_OK_TOOLTIP :{BLACK}אישור תווי פנים +STR_FACE_RANDOM :{BLACK}אקראית STR_FACE_MALE_BUTTON :{BLACK}גבר STR_FACE_MALE_TOOLTIP :{BLACK}בחר תווי פנים של גברים @@ -1754,7 +1833,7 @@ STR_FACE_LOAD_DONE :{WHITE}הפני STR_FACE_FACECODE :{BLACK}תוי פנים מספר STR_FACE_FACECODE_TOOLTIP :{BLACK}צפה/שנה מספר סידורי של תוי הפנים STR_FACE_FACECODE_CAPTION ::{WHITE}צפה/שנה מספר סידורי של תוי הפנים -STR_FACE_FACECODE_SET :{WHITE}המפר הסידורי של תוי הפנים הוחלף +STR_FACE_FACECODE_SET :{WHITE}המספר הסידורי של תוי הפנים הוחלף STR_FACE_FACECODE_ERR :{WHITE}לא ניתן לקבוע מספר פנים של השחקן - חייב להיות מספר בין 0 ל-4,294,967,295! STR_FACE_SAVE :{BLACK}שמור STR_FACE_SAVE_TOOLTIP :{BLACK}שמור את הפנים לקובץ @@ -1835,7 +1914,7 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}רענן STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}אתר שרת STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}סרוק את הרשת לאיתור שרת STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}הוסף שרת -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}מוסיף שרת לרשימה שתמיד יבדק למשחקים פעילים. +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}מוסיף שרת לרשימה שתמיד תבדק למשחקים פעילים. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}הפעל שרת STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}הפעל שרת חדש @@ -1851,13 +1930,13 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}קבע STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}הגן על המשחק שלך עם סיסמה אם אתה לא רוצה שהוא יהיה זמין לכולם STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} לקוח{P "" "ות"} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}מקסימום לקוחות: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}מספר מקסימלי של לקוחות: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK} :מספר משתתפים מירבי STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} חבר{P "ה" "ות"} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}מקסימום חברות: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}מספר מקסימלי של חברות: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}הגבל את השרת למספר מסויים של חברות STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} צופ{P "ה" "ים"} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK} :מספר צופים מירבי +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}מספר צופים מירבי: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}הגבלת השרת למספר צופים מסויים STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}שפת דיבור: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}שחקנים אחרים ידעו איו שפה מדוברת בשרת @@ -1970,6 +2049,7 @@ STR_NETWORK_CLIENT :לקוח STR_NETWORK_SPECTATORS :צופים STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}הכנס סכום כסף שברצונך לתת +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}צופה # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}בטל שמירת הסיסמה החדשה @@ -1982,7 +2062,7 @@ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}השתמ STR_COMPANY_VIEW_JOIN :{BLACK}הצטרף STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}הצטרף ושחק כשותף בחברה STR_COMPANY_VIEW_PASSWORD :{BLACK}ססמה -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}הגן על חברתך בסיסמה בכדי למנוע הצטרפות בלתי-מורשים +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}הגן על חברתך בסיסמה בכדי למנוע הצטרפות משתמשים בלתי-מורשים STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}קבע סיסמה לחברה # Network chat @@ -2146,18 +2226,19 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}לא, צ # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}הגדרות שקיפות -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK} שנה שקיפות עבור שלטי תחנות -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}שנה שקיפות עבור עצים -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}שנה שקיפות עבור בניינים -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}שנה שקיפות עבור תעשיות -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}שנה שקיפות עבור מבני תחבורה -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}שנה שקיפות עבור גשרים -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}שנה שקיפות עבור מבנים כגון מיגדלור/אנטנה -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}שנה שקיפות עבור עמודי חשמל -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}שנה שקיפות עבור מצביעי הטענה +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK} שנה שקיפות עבור שלטי תחנות. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}שנה שקיפות עבור עצים. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}שנה שקיפות עבור בניינים Ctrl+לחיצה לנעילה +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}שנה שקיפות עבור תעשיות. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}שנה שקיפות עבור מבני תחבורה כמו תחנות, מוסכים ונקודות ציון. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}שנה שקיפות עבור גשרים. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}שנה שקיפות עבור מבנים כגון מיגדלור ואנטנה. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}שנה שקיפות עבור עמודי חשמל. Ctrl+לחיצה לנעילה +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}שנה שקיפות עבור מצביעי הטענה. Ctrl+לחיצה לנעילה STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}הסתר במקום הפוך לשקוף # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}מקרא זרימת מטענים # Linkgraph legend window and linkgraph legend in smallmap @@ -2183,16 +2264,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :בניית מס STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :בניית מסילות חד פסיות STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :בניית מסילות מגנטיות -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}בניית מסילת רכבת. Ctrl בורר בניית/הסרת מסילת רכבת -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}בנה מסילה במצב בנייה אוטומטי. Ctrl בורר בניית/הסרת מסילת רכבת -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}בניית מוסך רכבות (לרכישה וטיפול ברכבות) -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}הפוך מסילה לנקודת ציון. Ctrl מאפשר איחוד נקודות ציון -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}בניית תחנת רכבת. Ctrl מאפשר איחוד תחנות -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}בניית רמזורי רכבת. Ctrl בורר בין איתות דגלים ואיתות תאורה{}גרירה בונה אותות לאורך מסילת רכבת ישרה. Ctrl בונה אותות עד להצטלבות הבאה{}Ctrl+לחיצה בורר פתיחת חלון בחירת איתותים -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}בניית גשרים למסילות -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}חציבת מנהרות למסילות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}בניית מסילת רכבת. Ctrl בורר בניית/הסרת מסילת רכבת. Shift בורר בנייה/הצגה של הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}בנה מסילה במצב בנייה אוטומטי. Ctrl בורר בניית/הסרת מסילת רכבת. Shift בורר בנייה/הצגה של הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}בניית מוסך רכבות (לרכישה וטיפול ברכבות). Shift בורר בנייה/הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}הפוך מסילה לנקודת ציון. Ctrl מאפשר איחוד נקודות ציון. Shift בורר בנייה/הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}בניית תחנת רכבת. Ctrl מאפשר איחוד תחנות. Shift בורר בנייה/הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}בניית רמזורי רכבת. Ctrl בורר בין איתות דגלים ואיתות תאורה{}גרירה בונה אותות לאורך מסילת רכבת ישרה. Ctrl בונה אותות עד להצטלבות הבאה{}Ctrl+לחיצה בורר פתיחת חלון בחירת איתותים. Shift בורר בנייה/הצגה של הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}בניית גשרים למסילות. Shift בורר בנייה/הצגה של הערכת עלות +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}חציבת מנהרות למסילות. Shift בורר בנייה/הצגה של הערכת עלות STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}החלף מצב בנייה/הסרה של פסי רכבת, רמזורים, נקודות ציון ותחנות. החזקת Ctrl מסירה גם פסי רכבת מנקודות ציון ותחנות רכבת -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}שנה/שדרג את המסילה +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}שנה/שדרג את המסילה. Shift בורר בנייה/הצגה של הערכת עלות STR_RAIL_NAME_RAILROAD :מסילת ברזל STR_RAIL_NAME_ELRAIL :מסילת ברזל חשמלית @@ -2226,19 +2307,19 @@ STR_STATION_CLASS_WAYP :נקודות ד # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}בחירת רמזורים -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}(רמזורי בלוק (מכאניים{NBSP}{}אלו הרמזורים הפשוטים ביותר, מאפשרים לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}(רמזורי כניסה (מכאניים {}{NBSP}ירוקים כל עוד יש לפחות רמזור יציאה ירוק הקטע המסילה העוקב. אחרת-אדומים -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}(רמזורי יציאה (מכאניים {}{NBSP} מתנהגים בדומה לרמזורי הבלוק, אבל מחייבים שינוי האור ברמזור בעת כניסה -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}רמזורים משולבים (מכאניים){}מתפקדים כרמזורי כניסה ויציאה במשולב. דבר זה מאפשר יצירת "עצים" מורכבים של רמזורים -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}(רמזורי נתיב (מכאניים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}(רמזורי נתיב חד-סיטרי (מכאניים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}(רמזורי בלוק (חשמליים{NBSP}{}אלו הרמזורים הפשוטים ביותר, מאפשרים לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}(רמזורי כניסה (חשמליים {}{NBSP}ירוקים כל עוד יש לפחות רמזור יציאה ירוק הקטע המסילה העוקב. אחרת-אדומים -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}(רמזורי יציאה (חשמליים {}{NBSP} מתנהגים בדומה לרמזורי הבלוק, אבל מחייבים שינוי האור ברמזור בעת כניסה -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}רמזורים משולבים (חשמליים){}מתפקדים כרמזורי כניסה ויציאה במשולב, מאפשרים יצירת "עצים" מורכבים של רמזורים -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}(רמזורי נתיב (חשמליים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}(רמזורי נתיב חד-סיטרי (חשמליים{}{NBSP}מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}החלפת סוג הרמזור – בחר סוג חדש ולחץ על רמזור קיים להחלפה +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}רמזור בלוק (מכאניים){}זהו הרמזורי הפשוט ביותר, מאפשר לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}רמזור כניסה (סמפור) {}ירוקים כל עוד יש לפחות רמזור יציאה ירוק מקטע המסילה העוקב. אחרת מראה אדום +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}רמזור יציאה (סמפור){} מתנהג בדומה לרמזור הבלוק, אבל נחוץ להצגת הצבע הנכון ברמזורי כניסה ורמזורים משולבים +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}רמזור משולב (סמפור){}מתפקד כרמזור כניסה ויציאה במשולב. דבר זה מאפשר יצירת "עצים" מורכבים של רמזורים מקדימים +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}רמזור נתיב (סמפור){} מאפשר ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח. ניתן לחלוף על פני רמזור נתיב מאחורה +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}רמזור נתיב חד-סטרי (סמפור){} רמזור נתיב מאפשר ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה. לא ניתן לחלוף על פני רמזורי נתיב חד-סטריים מאחור +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}רמזור בלוק (חשמלי){}זהו הרמזור הפשוט ביותר, מאפשר לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}רמזור כניסה (חשמלי){}ירוק כל עוד יש לפחות רמזור יציאה ירוק אחד בקטע המסילה העוקב. אחרת-אדום +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}רמזור יציאה (חשמלי){} מתנהג בדומה לרמזור בלוק, אבל נחוץ לשינוי הצבע הנכון ברמזורי כניסה ורמזורים משולבים +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}רמזור משולב (חשמלי){}הרמזור המשולב מתפקד כרמזור כניסה ויציאה במשולב. מאפשרים יצירת "עצים" מורכבים של רמזורים מקדימים +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}רמזור נתיב (חשמלי){}רמזור נתיב מאפשר ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח. ניתן לחלוף על פני רמזורי נתיב רגילים מאחור +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}רמזור נתיב חד-סטרי (חשמלי){}רמזור נתיב מאפשר ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה. לא ניתן לחלוף על פני רמזורי נתיב חד סטריים מאחור +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}החלפת סוג הרמזור{}בחר סוג חדש ולחץ על רמזור קיים להחלפה. Ctrl+לחיצה בורר את הוריאציה של הסוג הנוכחי. Shift+לחיצה מראה הערכת עלות להחלפה STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}צפיפות הרמזורים הנוצרים בעת גרירה STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}הקטן צפיפות STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}הגדל צפיפות @@ -2262,21 +2343,21 @@ STR_BRIDGE_TUBULAR_SILICON :צינורי, # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}סלילת כבישים STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}בניה של רכבת קלה\חשמלית -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}סלול קטע כביש. Ctrl בורר בניית/הסרת כביש -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}בנה קטע מסילת חשמלית. Ctrl בורר בניית/הסרת מסילת חשמלית -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}סלול כביש באופן אוטומטי. Ctrl בורר בניית/הריסת כביש -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}בנה מסילת חשמלית באופן אוטומטי. Ctrl בורר בניית/הסרת מסילת חשמלית -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}בנה מוסך לרכבים (כדי לבנות ולתקן משאיות ואוטובוסים) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}בנה מוסך לחשמלית (כדי לבנות ולתקן חשמליות) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}בנה תחנת אוטובוס. Ctrl מאפשר איחוד תחנות -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}בנה תחנת נוסעים לחשמלית. Ctrl מאפשר איחוד תחנות -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}בנה תחנת העמסה למשאיות. Ctrl מאפשר איחוד תחנות -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}בנה תחנת משאות לחשמלית. Ctrl מאפשר איחוד תחנות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}סלול קטע כביש. Ctrl בורר בניית/הסרת כביש. Shift בורר הערכת עלות של בנייה/הסרה +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}בנה קטע מסילת חשמלית. Ctrl בורר בניית/הסרת מסילת חשמלית. Shift בורר הערכת עלות של בנייה/הסרה +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}סלול כביש באופן אוטומטי. Ctrl בורר בניית/הריסת כביש. Shift בורר בנייה/הצגת הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}בנה מסילת חשמלית באופן אוטומטי. Ctrl בורר בניית/הסרת מסילת חשמלית. Shift בורר בנייה/הצגת הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}בנה מוסך לכלי רכב (כדי לבנות ולתקן משאיות ואוטובוסים). Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}בנה מוסך לחשמלית (לרכישה ושירות חשמליות). Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}בנה תחנת אוטובוס. Ctrl מאפשר איחוד תחנות. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}בנה תחנת נוסעים לחשמלית. Ctrl מאפשר איחוד תחנות. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}בנה תחנת העמסה למשאיות. Ctrl מאפשר איחוד תחנות. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}בנה תחנת משאות לחשמלית. Ctrl מאפשר איחוד תחנות. Shift בורר בנייה/הצגה של הערכת עלות STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}הפעל\כבה כבישים חד סיטריים -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}בנה גשר כביש -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}בנה גשר לחשמלית -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}בנה מנהרה לכביש -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}בנה מנהרה לחשמלית +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}בנה גשר כביש. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}בנה גשר לחשמלית. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}בנה מנהרה לכביש. Shift בורר בנייה/הצגה של הערכת עלות +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}בנה מנהרה לחשמלית. Shift בורר בנייה/הצגה של הערכת עלות STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}שנה מצב בנה/הסר כבישים STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}שנה מצב בנה\מחק למבני חשמלית @@ -2291,22 +2372,22 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}כיוו STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}בחר כיוון תחנת אוטובוס STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}כיוון תחנת משאיות STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}בחר כיוון תחנת טעינה למשאיות -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}התמצאות חשמלית לנוסעים +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}כוון תחנת חשמלית לנוסעים STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}בחר את כיוון התחנה -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}כיוון חשמלית משא +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}כוון תחנת חשמלית משא STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}בחר את כיוון התחנה # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}בניית נתיבי מים STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}נתיבי מים -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}בנה תעלות -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}בניית שערים ימיים -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}בניית מבדוק אוניות (לבניה וטיפול בכלי שייט) -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}בניית רציף לכלי שייט. Ctrl מאפשר איחוד תחנות -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}מקם מצוף שיכול לשמש כנקודת ציון לכלי שייט -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}בנה מוביל-מים +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}בנה תעלות. Shift בורר בנייה/הצגה של הערכת עלות +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}בניית תא שיט. Shift בורר בנייה/הצגה של הערכת עלות +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}בניית מבדוק אוניות (לרכישה ושירות כלי שייט). Shift בורר בניה/הצגה של הערכת עלות +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}בניית מזח לכלי שייט. Ctrl מאפשר איחוד תחנות. Shift בורר בניה/הצגה של הערכת עלות +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}מקם מצוף שיכול לשמש כנקודת ציון לכלי שייט. Shift בורר בניה/הצגה של הערכת עלות +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}בנה מוביל-מים. Shift בורר בניה/הצגה של הערכת עלות STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}הגדר את שטח המים.{}הכן תעלה, אלא אם כן CTRL לחוץ בגובה הים, ואז זה יציף את הסביבה במקום -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}מקם נחלים. +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}מקם נחלים # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}כיוון המבדוק @@ -2317,7 +2398,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}מזח # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}שדות תעופה -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}בנה שדה תעופה. Ctrl מאפשר איחוד תחנות +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}בנה שדה תעופה. Ctrl מאפשר איחוד תחנות. Shift בורר בניה/הצגה של הערכת עלות # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}בחירת שדה תעופה @@ -2344,14 +2425,14 @@ STR_STATION_BUILD_NOISE :{GOLD}{COMMA}{B # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}שינוי פני השטח -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}הנמכת משבצת קרקע -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}הגבהת משבצת קרקע -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}שיטוח הקרקע -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}קנה אדמה לשימוש עתידי +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}הנמכת פינת קרקע. גרירה מנמיכה את הפינה הראשונה שנבחרה ומיישרת את השטח הנבחר לגובה החדש. Ctrl בוחר שטח באלכסון. Shift בורר בניה/הצגה של הערכת עלות +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}הגבהת משבצת קרקע.גרירה מגביהה את הפינה הראשונה שנבחרה ומיישרת את השטח הנבחר לגובה החדש. Ctrl בוחר שטח באלכסון. Shift בורר בניה/הצגה של הערכת עלות +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}שיטוח הקרקע לגובה של הפינה הראשונה שנבחרה. Ctrl בוחר שטח באלכסון. Shift בורר בניה/הצגה של הערכת עלות +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}קנה אדמה לשימוש עתידי. Shift בורר בניה/הצגה של הערכת עלות # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}פירט נבחר -STR_OBJECT_BUILD_TOOLTIP :{BLACK}בחר פריט לבנייה +STR_OBJECT_BUILD_TOOLTIP :{BLACK}בחר פריט לבנייה. Shift בורר בניה/הצגה של הערכת עלות STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}בחר את סוג הפריט לבנייה STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}צפיה מקדימה של האובייקט STR_OBJECT_BUILD_SIZE :{BLACK}גודל: {GOLD}{NUM} x {NUM} משבצת @@ -2361,9 +2442,9 @@ STR_OBJECT_CLASS_TRNS :אנטנות # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}עצים -STR_PLANT_TREE_TOOLTIP :{BLACK}בחר סוג עץ לנטיעה +STR_PLANT_TREE_TOOLTIP :{BLACK}בחר סוג עץ לנטיעה. במידה ויש עץ במשבצת, יתווספו עצים נוספים מסוגים שונים ללא קשר לסוג הנבחר STR_TREES_RANDOM_TYPE :{BLACK}עצים מסוג אקראי -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}נטע עצים מסוג אקראי במקום זה +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}נטע עצים מסוג אקראי במקום זה. Shift בורר בניה/הצגה של הערכת עלות STR_TREES_RANDOM_TREES_BUTTON :{BLACK}עצים אקראיים STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}שתול עצים באופן אקראי על פני השטח @@ -2376,15 +2457,15 @@ STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}הקטן STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}צור קרקע אקראית STR_TERRAFORM_SE_NEW_WORLD :{BLACK}צור תרחיש חדש STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}אפס קרקע -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}מחק מהמפה את כל רכוש השחקן +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}מחק מהמפה את כל הרכוש שבבעלות החברה STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}אפס קרקע -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}האם אתה בטוח שאתה רוצה למחוק את כל רכושו של השחקן? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}האם אתה בטוח שאתה רוצה למחוק את כל רכוש החברה? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}יצירת ערים STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}עיירה חדשה -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}ייסד עיר חדשה +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}ייסד עיר חדשה. Shift+לחיצה מציג הערכת עלות STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}עיר אקראית STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ייסד עיר במקום אקראי STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}ערים אקראיות @@ -2463,6 +2544,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}{LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK} :מקבל {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({1:STRING} {0:COMMA}/8 ) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}מגבלת מהירות על המסילה: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}הגבלת מהירות בכביש: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :סלעים @@ -2559,7 +2641,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעל STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - {NBSP}זכויות יוצרים מקוריות STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק @@ -2578,8 +2660,9 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}שמור STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}שמור את המשחק הנוכחי עם השם שנבחר STR_SAVELOAD_LOAD_BUTTON :{BLACK}טען STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}טען את המשחק שנבחר +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}טען את מפת הגבהים שנבחרה STR_SAVELOAD_DETAIL_CAPTION :{BLACK}פרטי משחק -STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}אין מידע זמין. +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}אין מידע זמין STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2593,14 +2676,13 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK} :מספר העיירות STR_MAPGEN_DATE :{BLACK} :תאריך STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK} :מספר התעשיות +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}גובה מפה מקסימלי: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}הגדל את הגובה המקסימלי של הרים במפה ביחידה אחת +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}הקטן את הגובה המקסימלי במפה ביחידה אחת STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}גובה קו השלג STR_MAPGEN_SNOW_LINE_UP :{BLACK}הגבה את קו השלג STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}הנמך את קו השלג -STR_MAPGEN_RANDOM_SEED :{BLACK} :מספר אקראי -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}הכנס מספר אקראי כלשהוא -STR_MAPGEN_RANDOM :{BLACK}אקראית -STR_MAPGEN_RANDOM_HELP :{BLACK}בחר מספר אקראי שישמש בסיס ליצירת הקרקע -STR_MAPGEN_LAND_GENERATOR :{BLACK} :יצירת קרקע +STR_MAPGEN_LAND_GENERATOR :{BLACK} :מחולל פני שטח STR_MAPGEN_TREE_PLACER :{BLACK}אלגוריתם העצים: STR_MAPGEN_TERRAIN_TYPE :{BLACK} :סוג הקרקע STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK} :כמות ימים/אגמים @@ -2626,7 +2708,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK} :שם STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}גודל: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} על {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}מספר אקראי +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}שינוי הגובה המקסימלי במפה STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}שנה את גובה קו השלג STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}שנה את שנת הפתיחה @@ -2681,6 +2763,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}העבר STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}מעביר את הקובץ שנבחר כלפי מעלה ברשימה STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}העבר למטה STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}מעביר את הקובץ שנבחר כלפי מטה ברשימה +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}עדכן +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}עדכן קבצי NewGRF שלהם הגרסה המותקנת חדשה יותר STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK} רשימת קבצי שדרוג גראפי מותקנים STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}קבע ערכים @@ -2705,6 +2789,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}לא נמ STR_NEWGRF_SETTINGS_DISABLED :{RED}מושתק STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}אינו תואם גרסא זו של OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}שמור סביבה גראפית +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}הצג את כל הסביבות הגראפיות, בחר אחת כדי להעתיק את שמה לשמירה +STR_SAVE_PRESET_TITLE :{BLACK}הכנס שם לסביבה הגראפית +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}השם הנבחר לשמירת הסביבה הגראפית +STR_SAVE_PRESET_CANCEL :{BLACK}ביטול +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}אל תשנה את הסביבה הגראפית +STR_SAVE_PRESET_SAVE :{BLACK}שמור +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}שמור את הסביבה הגראפית עם השם שנבחר + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}שנה/י פרמטרים של NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}סגור @@ -2732,10 +2826,9 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}עבור STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}דלג לספרייט STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}עבור לספרייט הנתון. אם הוא אינו ספרייט רגיל, עבור לספרייט הרגיל הראשון שבא אחריו STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}הספרייט הקודם -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקודם, כאשר נדלג על כל הספרייטים המיוחדים ונחזור בסוף לתחילת הרשימה +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקודם, כאשר נדלג על כל הספרייטים המיוחדים ונחזור מתחילת הרשימה לסופה STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}הייצוג של הספרייט הנבחר. בעת ציור הספרייט, נתעלם מהיישור שלו STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}הזז את הספרייט, תוך שינוי מיקום על צירי ה-X וה-Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X היסט: {NUM}, Y היסט: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}בחר ספרייט STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}בחר ספרייט מנקודה כלשהיא במסך @@ -2755,12 +2848,12 @@ STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} חי STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} חייב להיטען אחרי {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} דורש גרסת {STRING} של OpenTTD ומעלה. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :קובץ השדרוג הגראפי אותו יועד לתרגם -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :יותר מידי קבצי שדרוג גראפי פתוחים בן זמנית +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :יותר מידי קבצי שדרוג גראפי פתוחים STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {1:STRING} as static NewGRF with {STRING} could cause desyncs. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :ספרייט לא מצופה (ספרייט {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :מאפיין Action 0 לא ידוע {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :ניסיון שימוש ב-ID לא תקין (ספרייט {3:NUM}) -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?). +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} מכיל אלמנט גרפי שגוי. כל האלמנטים הגרפיים השגויים יוצגו כסימן שאלה אדום (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :מכיל מספר רשומות Action 8 (ספרייט {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :קראת אחר סוף הפסאודו-ספרייט (ספרייט {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית @@ -2771,7 +2864,7 @@ STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :מבנה פור # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}!אזהרה -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}הנך עומד לבצע שינוייך במהלך ריצת המשחק. פעולה זו עלולה לגרום לקריסה. האם אתה בטוח לחלוטין שברצונך להמשיך? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}הנך עומד לבצע שינויים במהלך ריצת המשחק. פעולה זו עלולה לגרום לקריסה. נא לא לדווח על בעיות אלה.{} האם אתה בטוח לחלוטין שברצונך להמשיך? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}הקובץ לא נמצא, הוטען קובץ תואם @@ -2789,14 +2882,14 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}נמצ STR_NEWGRF_LIST_MISSING :{RED}חסרים קבצים # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}התנהגות ה-NewGRF '{STRING}' עלולה לגרום לקריסה ו/או חוסר סנכרון במשחק. +STR_NEWGRF_BROKEN :{WHITE}התנהגות ה-NewGRF '{STRING}' עלולה לגרום לקריסה ו/או חוסר סנכרון STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}שינה את מצב קרון מונע עבור '{1:ENGINE}' כאשר לא נמצא במוסך -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}זה שינה את אורך הרכב ל'{1:ENGINE}' כאשר לא במוסך. -STR_BROKEN_VEHICLE_LENGTH :{WHITE}רכבת '{VEHICLE}' השייכת לחברת '{COMPANY}' בעלת אורך לא חוקי. דבר זה נגמר ככל הנראה בעקבות בעיות ב-NEWGRF.המשחק עלול לצאת מסנכרון או לקרוס. +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}זה שינה את אורך הרכב ל'{1:ENGINE}' כאשר לא במוסך +STR_BROKEN_VEHICLE_LENGTH :{WHITE}רכבת '{VEHICLE}' השייכת לחברת '{COMPANY}' בעלת אורך לא חוקי. דבר זה נגרם ככל הנראה בעקבות בעיות ב-NEWGRF. המשחק עלול לצאת מסנכרון או לקרוס -STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' סיפק מידע לא נכון. -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}מידע מטען/התאמה מחדש עבור '{1:ENGINE}' שונה מרשימת הרכישה לאחר הבניה. דבר זה עלול לגרום מילוי/חידוש אוטומטי לכישלון התאמה מחדש בצורה נכונה. -STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' גרם ללולאה אינסופית בהתקשרות חזרה של הייצור. +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' סיפק מידע לא נכון +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}מידע מטען/התאמה מחדש עבור '{1:ENGINE}' שונה מרשימת הרכישה לאחר הבניה. דבר זה עלול לגרום לכישלון חידוש אוטומטי/החלפה בצורה נכונה +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' גרם ללולאה אינסופית בהתקשרות חזרה של הייצור STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}קריאה חוזרת {1:HEX} החזירה תוצאה לא מוכרת / לא תקינה {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs @@ -2806,6 +2899,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} של < STR_NEWGRF_INVALID_ENGINE :<דגם כלי רכב לא תקין> STR_NEWGRF_INVALID_INDUSTRYTYPE :<תעשייה לא תקינה> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<כלי תחבורה שגוי> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}סורק NewGRF-ים STR_NEWGRF_SCAN_MESSAGE :{BLACK}סורק NewGRF-ים. כתלות בכמות זה עלול לארוך זמן מה... @@ -2887,9 +2983,12 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}רכו STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}שחד את הרשות המקומית כדי להגדיל את הדרוג שלך בעיר תוך כדי סיכון להתפס ולשלם קנס חמור.{}עלות: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} מטרות +STR_GOALS_SPECTATOR_CAPTION :{WHITE}מטרות גלובליות STR_GOALS_GLOBAL_TITLE :{BLACK}מטרות גלובליות: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- אין - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- לא זמין - STR_GOALS_COMPANY_TITLE :{BLACK}מטרות חברה: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}הקלק על מטרה כדי למרכז את התצוגה הראשית על תעשיה/עיירה/משבצת. קליק תוך כדי לחיצה על מקש Ctrl פותח חלון תצוגה חדש במיקום התעשיה/העיירה/המשבצת @@ -2899,7 +2998,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :מידע STR_GOAL_QUESTION_CAPTION_WARNING :אזהרה STR_GOAL_QUESTION_CAPTION_ERROR :שגיאה -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :ביטול STR_GOAL_QUESTION_BUTTON_OK :אישור STR_GOAL_QUESTION_BUTTON_NO :לא @@ -2918,6 +3017,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :אתחל STR_GOAL_QUESTION_BUTTON_POSTPONE :דחה STR_GOAL_QUESTION_BUTTON_SURRENDER :היכנע STR_GOAL_QUESTION_BUTTON_CLOSE :סגור +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}סובסידיות @@ -2929,11 +3029,12 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}לחץ על שירות כדי להתמקד על עיר/תעשייה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום העיר/תעשייה # Story book window +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}מטרה לא תקינה # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}שמות תחנות - לחץ על השם כדי להתמקד בתחנה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום התחנה STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}לחץ והחזק מקש קונטרל כדי לבחור יותר מפריט אחד -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {P 0 "תחנה " ""}{COMMA}{P "" " תחנות"} +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {P 1 "תחנה " ""}{COMMA}{P "" " תחנות"} STR_STATION_LIST_STATION :{YELLOW} {1:STATION_FEATURES}{0:STATION} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- כלום - @@ -2943,7 +3044,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}שום # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}ממתינים: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} בדרך מ{STATION}) @@ -2957,7 +3057,28 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}דירוג STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}הצג את דירוג השירות - +STR_STATION_VIEW_GROUP :{BLACK}קבץ לפי +STR_STATION_VIEW_WAITING_STATION :תחנה: בהמתנה +STR_STATION_VIEW_WAITING_AMOUNT :כמות: בהמתנה +STR_STATION_VIEW_PLANNED_STATION :תחנה: מתוכננת +STR_STATION_VIEW_PLANNED_AMOUNT :כמות: מתוכננת +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} מ{STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} דרך {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} אל {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} מתחנה לא ידועה +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} אל תחנה כלשהי +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} דרך תחנה כלשהי +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} מתחנה זו +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} עוצר בתחנה זו +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} ליעד זה +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} ללא עצירה + +STR_STATION_VIEW_GROUP_S_V_D :מקור-דרך-יעד +STR_STATION_VIEW_GROUP_S_D_V :מקור-יעד-דרך +STR_STATION_VIEW_GROUP_V_S_D :דרך-מקור-יעד +STR_STATION_VIEW_GROUP_V_D_S :דרך-יעד-מקור +STR_STATION_VIEW_GROUP_D_S_V :יעד-מקור-דרך +STR_STATION_VIEW_GROUP_D_V_S :מקור-דרך-יעד ############ range for rating starts STR_CARGO_RATING_APPALLING :מחריד @@ -3049,7 +3170,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}הקם STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}צפה במטה STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}צפה במטה החברה STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}שנה מיקום המטה -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}מקם מחדש את מטה החברה תמורת 1% משווי החברה +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}מקם מחדש את מטה החברה עבור 1% משווי החברה. Shift+לחיצה מציג הערכת עלות ללא מיקום מחדש של המטה STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}פרטים STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}צפה בספירות מפורטות של תשתיות @@ -3064,8 +3185,8 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}שנה STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}קנה 25% ממניות החברה STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}מכור 25% ממניות החברה שברשותך -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}קנה 25% ממניות חברה זו -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}מכור 25% ממניות חברה זו +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}קנה 25% ממניות חברה זו. Shift+לחיצה מציג הערכת עלות ללא רכישת המניה +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}מכור 25% ממניות חברה זו. Shift+לחיצה מציג הערכת הכנסות ללא מכירת המניה STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :שם החברה STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :שם המנהל @@ -3162,12 +3283,13 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :רכבים לא STR_GROUP_DEFAULT_SHIPS :כלי שייט לא משוייכים STR_GROUP_DEFAULT_AIRCRAFTS :כלי טייס לא משוייכים -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}קבוצות כלים – לחץ על קבוצה לצפייה בכל הכלים השייכים אליה +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}קבוצות – לחץ על קבוצה לצפייה בכל הכלים השייכים אליה. גרור כדי לסדר הירארכיה. STR_GROUP_CREATE_TOOLTIP :{BLACK}לחץ ליצירת קבוצה חדשה STR_GROUP_DELETE_TOOLTIP :{BLACK}מחק את הקבוצה שנבחרה STR_GROUP_RENAME_TOOLTIP :{BLACK}שנה את שם הקבוצה STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}לחץ על מנת להגן על הכלים בקבוצה בפני החלפה אוטומטית + STR_GROUP_ADD_SHARED_VEHICLE :הוסף כלים STR_GROUP_REMOVE_ALL_VEHICLES :הסר את כל הכלים מהקבוצה @@ -3192,7 +3314,7 @@ STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}מהחר STR_PURCHASE_INFO_RUNNINGCOST ::לשנה {GOLD}{CURRENCY_LONG}{BLACK} :עלות תפעולית STR_PURCHASE_INFO_CAPACITY :{GOLD}{1:STRING} {0:CARGO_LONG}{BLACK} :קיבולת STR_PURCHASE_INFO_REFITTABLE :(ניתן להתאמה) -STR_PURCHASE_INFO_DESIGNED_LIFE :{GOLD}{1:COMMA}{BLACK} :(משך חיים(שנים {GOLD}{0:NUM}{BLACK} :תוכנן +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}מודל: {GOLD}{NUM}{BLACK} משך חיים: {GOLD}{COMMA} שנ{P ה ים} STR_PURCHASE_INFO_RELIABILITY :{GOLD}{COMMA}%{BLACK} :אמינות מירבית STR_PURCHASE_INFO_COST :{GOLD}{CURRENCY_LONG}{BLACK} :מחיר STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}משקל: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) @@ -3215,10 +3337,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}רכוש STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי שייט STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי טייס -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את קרון הרכבת שמודגש -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הרכב שמודגש -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי השייט שמודגש -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הטייס שמודגש +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את קרון הרכבת שמודגש. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הרכב שמודגש. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי השייט שמודגש. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הטייס שמודגש. Shift+לחיצה מציג הערכת עלות ללא רכישה STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}שנה שם STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}שנה שם @@ -3230,6 +3352,11 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}שנה STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}החלף שם סוג כלי השייט STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}החלף שם סוג כלי הטיס + + +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :הסתר/הצג סוג של כלי שיט +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}הסתר/הצג סוג של כלי טיס + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}שנה את שם סוג קרון הרכבת STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}שנה את שם סוג כלי הרכב STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}החלף שם סוג כלי השייט @@ -3283,10 +3410,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}שכפל STR_DEPOT_CLONE_SHIP :{BLACK}שכפל כלי שייט STR_DEPOT_CLONE_AIRCRAFT :{BLACK}שכפל כלי טייס -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של הרכבת וכל קרונותיה. לחץ על כפתור זה ולאחר מכן על רכבת בתוך או מחוץ לתחנה. Ctrl+לחיצה יעתיק גם את הוראות הרכבת -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי רכב. לחץ על כפתור זה ולאחר מכן על כלי רכב בתוך או מחוץ למוסך. Ctrl+לחיצה יעתיק גם את הוראות כלי הרכב -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי שייט חדש. לחץ על כפתור זה ולאחר מכן על כלי שייט בתוך או מחוץ למבדוק. Ctrl+לחיצה יעתיק גם את הוראות כלי השייט -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}פעולה זו תרכוש העתק נוסף של כלי הטייס. לחץ על כפתור זה ולאחר מכן על כלי טייס בתוך או מחוץ למוסך-המטוסים. Ctrl+לחיצה יעתיק גם את הוראות כלי הטייס +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של הרכבת וכל קרונותיה. לחץ על כפתור זה ולאחר מכן על רכבת בתוך או מחוץ למוסך. Ctrl+לחיצה לשיתוף הוראות הרכבת. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי רכב. לחץ על כפתור זה ולאחר מכן על כלי רכב בתוך או מחוץ למוסך. Ctrl+לחיצה יעתיק גם את הוראות כלי הרכב. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי שייט חדש. לחץ על כפתור זה ולאחר מכן על כלי שייט בתוך או מחוץ למבדוק. Ctrl+לחיצה יעתיק גם את הוראות כלי השייט. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}פעולה זו תרכוש העתק נוסף של כלי הטייס. לחץ על כפתור זה ולאחר מכן על כלי טייס בתוך או מחוץ למוסך-המטוסים. Ctrl+לחיצה משתף את הוראות כלי הטייס. Shift+לחיצה מציג הערכת עלות ללא רכישה STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}מקד את החלון הראשי על מיקום מוסך הרכבות. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום המוסך STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על מיקום מוסך כלי הרכב. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום המוסך @@ -3334,6 +3461,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :רכב STR_REPLACE_VEHICLE_SHIP :כלי שייט STR_REPLACE_VEHICLE_AIRCRAFT :כלי טייס + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}בחר את סוג המנוע/קטר שברצונך להחליף STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}בחר את הקטר/מנוע שברצונך לבנות במקום הקטר/מנוע הקיים @@ -3360,7 +3488,7 @@ STR_REPLACE_MONORAIL_VEHICLES :רכבות חד STR_REPLACE_MAGLEV_VEHICLES :רכבות פס-מגנטי STR_REPLACE_REMOVE_WAGON :{ORANGE}{STRING}{BLACK} : הסרת קרונות -STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}הסר קרונות מהסוף על מנת לשמור על האורך המקורי של הרכבת +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}שמור על האורך המקורי של הרכבת בעת שימוש בהחלפה אוטומטית, במידה והקטר מאריך את הרכבת הסר קרונות מתחילת הרכבת # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -3375,10 +3503,10 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}.שלח STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}שלח את כלי השייט למבדוק STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sשלח את כלי הטייס לסככת המטוסים -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}פעולה זו תיצור עותק נוסף של הרכבת וכל קרונותיה. Ctrl+לחיצה יעתיק גם את ההוראות -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}.פעולה זו תיצור עותק נוסף של כלי הרכב. Ctrl+לחיצה תעתיק גם את ההוראות -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}פעולה זו תיצור עותק של כלי השייט. Ctrl+לחיצה תעתיק גם את ההוראות -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}פעולה זו תיצור עותק של כלי הטייס. Ctrl+לחיצה תעתיק גם את ההוראות +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}פעולה זו תיצור עותק נוסף של הרכבת וכל קרונותיה. Ctrl+לחיצה ישתף את ההוראות. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}פעולה זו תיצור עותק נוסף של כלי הרכב. Ctrl+לחיצה תשתף את ההוראות. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}פעולה זו תיצור עותק של כלי השייט. Ctrl+לחיצה תשתף את ההוראות. Shift+לחיצה מציג הערכת עלות ללא רכישה +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}פעולה זו תיצור עותק של כלי הטייס. Ctrl+לחיצה תשתף את ההוראות. Shift+לחיצה מציג הערכת עלות ללא רכישה STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}הכרח את הרכבת להמשיך מבלי להמתין לרמזור @@ -3521,7 +3649,7 @@ STR_ORDERS_CAPTION :{WHITE}(יעד STR_ORDERS_TIMETABLE_VIEW :{BLACK}לוח זמנים STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}עבור להצגת לוח זמנים -STR_ORDERS_LIST_TOOLTIP :{BLACK}רשימת יעדים - לחץ על יעד על מנת להדגישו +STR_ORDERS_LIST_TOOLTIP :{BLACK}רשימת יעדים - לחץ על יעד על מנת להדגישו. Ctrl+לחיצה מתמקד ביעד STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3552,8 +3680,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}שנה STR_ORDER_REFIT :{BLACK}התאם מחדש STR_ORDER_REFIT_TOOLTIP :{BLACK}בחר את סוג המיטען אליו יותאם הכלי ביעד זה -STR_ORDER_REFIT_AUTO :{BLACK}אבזור מחדש אוטומטי -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}בחרלאיזה סוג מטען לאבזר מחדש בפקודה זו. הקלק בשילוב לחיצה על מקש Ctrl כדי להסיר את הוראת האבזור מחדש. אבזור מחדש יתרחש רק אם כלי הרכב מאפשר זאת +STR_ORDER_REFIT_AUTO :{BLACK}אבזור מחדש בתחנה +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}בחרלאיזה סוג מטען לאבזר מחדש בפקודה זו. Ctrl+לחיצה כדי להסיר את הוראת האבזור מחדש. אבזור מחדש יתרחש רק אם כלי הרכב מאפשר זאת STR_ORDER_DROP_REFIT_AUTO :מטען קבוע STR_ORDER_DROP_REFIT_AUTO_ANY :מטען זמין @@ -3569,7 +3697,7 @@ STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}נתונ STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :אחוז טעינה STR_ORDER_CONDITIONAL_RELIABILITY :אמינות STR_ORDER_CONDITIONAL_MAX_SPEED :מהירות מירבית -STR_ORDER_CONDITIONAL_AGE ::(גיל הכלי (שנים +STR_ORDER_CONDITIONAL_AGE :גיל (שנים) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :זקוק לטיפול STR_ORDER_CONDITIONAL_UNCONDITIONALLY :תמיד STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :זמן חיים נותר (שנים) @@ -3601,7 +3729,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :עבור דרך STR_ORDER_GO_TO_NEAREST_HANGAR :עבור דרך סככת המטוסים הקרובה STR_ORDER_CONDITIONAL :דילוג מותנה על יעד STR_ORDER_SHARE :שתף פקודות -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}הכנס הוראה חדשה לפני ההוראה המודגשת, או הוסף הוראה לסוף הרשימה. Ctrl גורם להוראות של תחנות להיות 'טען מטען כלשהו במלואו', נקודות ציון להיות 'ללא עצירה' והוראות מוסכים להיות 'בשירות' +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}הכנס הוראה חדשה לפני ההוראה המודגשת, או הוסף הוראה לסוף הרשימה. Ctrl גורם להוראות של תחנות להיות 'טען מטען כלשהו במלואו', נקודות ציון להיות 'ללא עצירה' והוראות מוסכים להיות 'בשירות'. 'שתף הוראות' או Ctrl מאפשר שיתוף הוראות עם כלי הרכב הנבחר. לחיצה על כלי רכב מעתיקה את ההוראות ממנו. הוראה למוסך מבטלת את הטיפולים האוטומטיים של כלי הרכב STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}הצג את כל הרכבים אשר עבורם יעד זה הוא מצומד @@ -3639,7 +3767,7 @@ STR_ORDER_TRANSFER :(העבר מט STR_ORDER_TRANSFER_FULL_LOAD :(העבר מטען קיים והמתן להעמסה מלאה) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(העבר מטען קיים והמתן עד להעמסה מלאה של כל סוג מטען) STR_ORDER_TRANSFER_NO_LOAD :(העבר מטען קיים ועזוב ריק) -STR_ORDER_NO_UNLOAD :(אל תפרוק, העמס מטען זמין) +STR_ORDER_NO_UNLOAD :(אל תפרוק והעמס מטען זמין) STR_ORDER_NO_UNLOAD_FULL_LOAD :(אל תפרוק והמתן להעמסה מלאה) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(אל תפרוק, המתן עד להעמסה כוללת ומלאה) STR_ORDER_NO_UNLOAD_NO_LOAD :(אל תפרוק ואל תעמיס) @@ -3651,8 +3779,8 @@ STR_ORDER_UNLOAD_REFIT :(פרוק וק STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(פרוק והמתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(פרוק והמתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_TRANSFER_REFIT :(העבר וקח מטען עם אבזור מחדש אוטומטי ל-{STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(העבר ומתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(העבר ומתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(העבר והמתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(העבר והמתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_REFIT :(ללא פריקה וקח מטען עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(ללא פריקה והמתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(ללא פריקה והמתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) @@ -3699,6 +3827,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}לוח STR_TIMETABLE_STATUS_START_AT :{BLACK}לוח זמנים זה יתחיל ב-{STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}תאריך התחלה +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}בחר תאריך כנקודת ההתחלה ללוח הזמנים. Ctrl+לחיצה קובע את נקודת ההתחלה של לוח זמנים זה ומפזר בצורה אחידה בין כל כלי התחבורה המשותפים בלוח זמנים זה לפי סדרם, במידה וכל ההוראות כפופות ללוח הזמנים. STR_TIMETABLE_CHANGE_TIME :{BLACK}שנה זמן STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}שנה את פרק הזמן לשהייה ביעד שנבחר @@ -3736,17 +3865,17 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}בחר # AI debug window -STR_AI_DEBUG :{WHITE}דה-באג לבינה מלאכותית +STR_AI_DEBUG :{WHITE}דה-באג למשחק/בינה מלאכותית STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}שם הבינה המלאכותית -STR_AI_DEBUG_SETTINGS :{BLACK}הגדרות בינה מלאכותית +STR_AI_DEBUG_SETTINGS :{BLACK}הגדרות STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}שנה את הגדרות הבינה המלאכותית STR_AI_DEBUG_RELOAD :{BLACK}טען מחדש בינה מלאכותית STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK} הטען מחדש את הסקריפט ואתחל בינה מלאכותית STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}אפשר/בטל עצירה כאשר הודעת לוג של AI מתאימה למחרוזת העצירה STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}עצירה פועלת: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}עצירה פועלת -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}כאשר הודעת לוג של ה-AI מתאימה למחרוזת זו, המשחק יופסק. +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}כאשר הודעת לוג של הבינה המלאכותית מתאימה למחרוזת זו, המשחק יופסק STR_AI_DEBUG_MATCH_CASE :{BLACK}התאם רישיות STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}בחר התאמת רישיות בהשוואת הודעות לוג של AI כנגד מחרוזת העצירה STR_AI_DEBUG_CONTINUE :{BLACK}המשך @@ -3756,11 +3885,11 @@ STR_AI_GAME_SCRIPT :{BLACK}סקרי STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}בדוק את הלוג של סקריפט המשחק STR_ERROR_AI_NO_AI_FOUND :לא נמצאה בינה מלאכותית מתאימה לטעינה.{}בינה מלאכותית זו הינה מדומה ולא תעשה כלום.{}באפשרותך להוריד מספר אלגורתמים של בינה מלאכותית בעזרת מערכת 'תוכן מקוון'. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}אחד מאלגורתמי הבינה המלאכותית קרס. אנא דווח זאת ליוצר האלגוריתם וצרף צילום מסך של מסך ה-Debug. +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}אחד מאלגורתמי הבינה המלאכותית קרס. אנא דווח זאת ליוצר האלגוריתם וצרף צילום מסך של מסך הדה-באג. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}חלון הדה-באג זמין רק עבור השרת # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}הגדרות משחק +STR_AI_CONFIG_CAPTION :{WHITE}הגדרות משחק/בינה מלאכותית STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}סקריפט המשחק אשר יטען במשחק הבא STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}שחקני המחשב אשר יטענו במשחק הבא STR_AI_CONFIG_HUMAN_PLAYER :שחקן אנושי @@ -3794,7 +3923,7 @@ STR_AI_LIST_VERSION :{LTBLUE}גרס STR_AI_LIST_URL :{LTBLUE}קישור: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}אשר -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK} בחר סוג בינה מלאכותית שהודגש +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK} בחר בינה מלאכותית שהודגשה STR_AI_LIST_CANCEL :{BLACK}בטל STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}אל תשנה את התסריט @@ -3812,6 +3941,8 @@ STR_AI_SETTINGS_START_DELAY :מספר הימ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "קרא אותי" של {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} רשימת שינויים של {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} רשיון של {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}גלישת טקסט +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}אפשר גלישת טקסט של החלון כך שכולו יוצג ללא צורך בגלילה STR_TEXTFILE_VIEW_README :{BLACK}צפה ב-"קרא אותי" STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}רשימת שינויים STR_TEXTFILE_VIEW_LICENCE :{BLACK}רשיון @@ -3851,16 +3982,16 @@ STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :קובץ לא STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :קןבץ לא כתיב STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :בדיקת שלמות נתונים נכשלה STR_GAME_SAVELOAD_NOT_AVAILABLE :<לא זמין> -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}המשחק נשמר ללא תמיכה בחשמליות. כל החשמליות הוסרו. +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}המשחק נשמר בגירסה ללא תמיכה בחשמליות. כל החשמליות הוסרו. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}יצירת המפה בוטלה...{}... אין מיקומי ערים מתאימים STR_ERROR_NO_TOWN_IN_SCENARIO ::{WHITE}אין ערים בתרחיש זה... STR_ERROR_PNGMAP :{WHITE}לא יכול לטעון שטח אדמה מקובץ... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... הקובץ לא נמצא. -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... לא יכול להמיר את סוג התמונה. צריך תמונת PNG של 8 או 24-ביט. -STR_ERROR_PNGMAP_MISC :{WHITE}... משהו לא הלך כשורה. מצטער. (כנראה קובץ מקולקל) +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... הקובץ לא נמצא +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... לא יכול להמיר את סוג התמונה. צריך תמונת PNG של 8 או 24-ביט +STR_ERROR_PNGMAP_MISC :{WHITE}... משהו לא הלך כשורה. (כנראה קובץ לא תקין) STR_ERROR_BMPMAP :{WHITE}לא יכול לטעון קרקע מתמונת BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... לא יכול להמיר סוג תמונה @@ -3871,7 +4002,7 @@ STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}אזהר STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}?שינוי גדול של גודל המפה המקורית אינו מומלץ. להמשיך # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}נמצאה ערכת צלילים לגיבוי בלבד. אם ברצונך לשמוע צלילים במשחק, יש להתקין ערכת צלילים בעזרת מערכת הורדת תוכן. +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}נמצאה ערכת צלילים לגיבוי בלבד. אם ברצונך לשמוע צלילים במשחק, יש להתקין ערכת צלילים בעזרת מערכת הורדת תוכן # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}צילום מסך ענק @@ -3944,7 +4075,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... קר STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... קרוב מידי לעיר אחרת STR_ERROR_TOO_MANY_TOWNS :{WHITE}... יותר מידי ערים STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... אין יותר מקום על המפה -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}עיר זאת לא תבנה כבישים. באפשרותך לאפשר בניית כבישים בעזרת תפריט הגדרות מתקמדות->כלכלה->ערים. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}העיר לא תבנה כבישים. באפשרותך לאפשר בניית כבישים בעזרת תפריט הגדרות מתקמדות->כלכלה->ערים STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}עבודות כביש בפעולה STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}לא ניתן למחוק עיר זו...{}תחנה או מוסך מקושר לעיר או שמשבצת בבעלות העיר לא ניתנת להסרה STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... אין אף מיקום מתאים לפסל במרכז עיירה זו @@ -3960,7 +4091,7 @@ STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... ני STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... ניתן לבנות בערים עם אוכלוסייה בעלת לפחות 1200 איש STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... יכול להבנות רק ליד אזורי יערות הגשם STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... יכול להבנות רק ליד אזורי מדבר -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... יכול להבנות רק בערים +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... יכול להבנות רק בערים (במקום בתים) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... ניתן לבנייה רק בקרבת מרכז עיירה STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... ניתן לבנות רק באיזורים נמוכים STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... יכול להיות ממוקם בסמוך לשולי המפה בלבד @@ -3968,6 +4099,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... יע STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... ניתן/ת לבנייה רק מעל לקו השלג STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... ניתן/ת לבנייה רק מתחת לקו השלג + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}לא ניתן לבנות תחנת רכבת כאן... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}לא ניתן לבנות תחנת אוטובוס... @@ -4104,6 +4236,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}יש ל STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}לא ניתן להתחיל ולסיים באותה הנקודה STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}צדדי הגשר לא באותו הגובה STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}גשר נמוך מידי עבור השטח +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}גשר גבוה מדי עבור פני השטח. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}התחלה וסיום חייבים להיות באותו הקו STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... קצות הגשר צריכים להיות על קרקע STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... גשר ארוך מידי @@ -4185,6 +4318,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}לא נ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... הרכב נהרס +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}כלי תחבורה לא יהיו זמינים +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}שנה הגדרות NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}כלי תחבורה עדיין לא זמינים +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}התחל משחק חדש אחרי {DATE_SHORT} או השתמש ב-NewGRF המכיל כלי תחבורה קדומים # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}לא ניתן להכריח את הרכבת לעבור ברמזור בעת סכנה... @@ -4354,7 +4491,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :(קירבי-פ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :(אם-גי-אס' 250 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :'פלודיפוט' (קיטור) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :'פאוורנאוט' (קיטור) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :'מייטי מובר' (קיטור) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :מייטי מובר (קיטור) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :(פלודיפוט' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :'פאוורנאוט' (דיזל) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :(וויילס' 2-8-0 (קיטור' @@ -4561,10 +4698,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :מעבורת נ STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :'רחפת 'באקוול 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :'מעבורת נוסעים 'צו'גר צ'וג STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :'מעבורת נוסעים 'שיברשייק -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :'ספינת משא 'יאט -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :'ספינת משא 'באקוול' -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ספינת משא 'מייטי מובר' -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :ספינת משא 'פאוורנאוט' +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :ספינת משא יאט +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :ספינת משא באקוול +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ספינת משא מייטי מובר +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :ספינת משא פאוורנאוט STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :'סמפסון יו-52' STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :'קולמן קאונט' STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :'אף-אף-פי דארט' @@ -4657,6 +4794,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (מוסתר) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4680,6 +4818,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4691,8 +4830,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4703,9 +4840,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 26d1860512..f954c0cd48 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -158,30 +158,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.t :szénsavas ital # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} utas +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}utas STR_QUANTITY_COAL :{WEIGHT_LONG} szén -STR_QUANTITY_MAIL :{COMMA} csomag levél +STR_QUANTITY_MAIL :{COMMA}{NBSP}csomag levél STR_QUANTITY_OIL :{VOLUME_LONG} olaj -STR_QUANTITY_LIVESTOCK :{COMMA} állat -STR_QUANTITY_GOODS :{COMMA} láda áru +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}állat +STR_QUANTITY_GOODS :{COMMA}{NBSP}láda áru STR_QUANTITY_GRAIN :{WEIGHT_LONG} búza STR_QUANTITY_WOOD :{WEIGHT_LONG} fa STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} vasérc STR_QUANTITY_STEEL :{WEIGHT_LONG} acél -STR_QUANTITY_VALUABLES :{COMMA} csomag értéktárgy +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}csomag értéktárgy STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} rézérc STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukorica STR_QUANTITY_FRUIT :{WEIGHT_LONG} gyümölcs -STR_QUANTITY_DIAMONDS :{COMMA} zsák gyémánt +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}zsák gyémánt STR_QUANTITY_FOOD :{WEIGHT_LONG} étel STR_QUANTITY_PAPER :{WEIGHT_LONG} papír -STR_QUANTITY_GOLD :{COMMA} zsák arany +STR_QUANTITY_GOLD :{COMMA}{NBSP}zsák arany STR_QUANTITY_WATER :{VOLUME_LONG} víz STR_QUANTITY_WHEAT :{WEIGHT_LONG} búza STR_QUANTITY_RUBBER :{VOLUME_LONG} gumi STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukor -STR_QUANTITY_TOYS :{COMMA} játék -STR_QUANTITY_SWEETS :{COMMA} zsák cukorka +STR_QUANTITY_TOYS :{COMMA}{NBSP}játék +STR_QUANTITY_SWEETS :{COMMA}{NBSP}zsák cukorka STR_QUANTITY_COLA :{VOLUME_LONG} kóla STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} vattacukor STR_QUANTITY_BUBBLES :{COMMA} buborék @@ -228,12 +228,12 @@ STR_ABBREV_NONE :{TINY_FONT}SÁ STR_ABBREV_ALL :{TINY_FONT}ÖS # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} utas -STR_BAGS :{COMMA} csomag -STR_TONS :{COMMA} tonna -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} darab -STR_CRATES :{COMMA} láda +STR_PASSENGERS :{COMMA}{NBSP}utas +STR_BAGS :{COMMA}{NBSP}csomag +STR_TONS :{COMMA}{NBSP}tonna +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}darab +STR_CRATES :{COMMA}{NBSP}láda # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Sötétkék @@ -254,37 +254,37 @@ STR_COLOUR_GREY :Szürke STR_COLOUR_WHITE :Fehér # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mi/h -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mi/h +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}LE -STR_UNITS_POWER_METRIC :{COMMA}LE -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}LE +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}LE +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tonna -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonna -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonna +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonna +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter -STR_UNITS_VOLUME_LONG_SI :{COMMA} köbméter +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}köbméter -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kp -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kp +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} láb -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}láb +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés: @@ -305,12 +305,23 @@ STR_TOOLTIP_SHADE :{BLACK}Ablak ö STR_TOOLTIP_DEBUG :{BLACK}NewGRF nyomonkövetés információ mutatása STR_TOOLTIP_DEFSIZE :{BLACK}Az alapértelmezett ablakméret visszaállítása. Ctrl+kattintással a jelenlegi méretet alapértelmezett méretként állíthatod be. STR_TOOLTIP_STICKY :{BLACK}Ez az ablak akkor se záródjon be, ha az "Összes ablak bezárása" gombot megnyomjuk. Ctrl+kattintással ez az állapot alapértelmezettként állítható be. -STR_TOOLTIP_RESIZE :{BLACK}Fogd és húzd hogy átméretezd az ablakot +STR_TOOLTIP_RESIZE :{BLACK}Fogd és húzd, hogy átméretezd az ablakot STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Kicsi/nagy ablakméret közötti váltás STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - fel/le görgeti a listát STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - jobbra/balra görgeti a listát STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Építmények lerombolása egy mezőről. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Rejtett mutatása +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Rejtett mutatása +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Rejtett mutatása +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Rejtett mutatása + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ezzel a gombbal a rejtett vasúti járművek is megjelennek +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ezzel a gombbal a rejtett közúti járművek is megjelennek +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ezzel a gombbal a rejtett hajók is megjelennek +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ezzel a gombbal a rejtett repülőgépek is megjelennek + # Query window STR_BUTTON_DEFAULT :{BLACK}Alapértelmezett STR_BUTTON_CANCEL :{BLACK}Mégsem @@ -423,8 +434,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :Kilépés ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Beállítások -STR_SETTINGS_MENU_CONFIG_SETTINGS :Haladó beállítások +STR_SETTINGS_MENU_GAME_OPTIONS :Alapbeállítások +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Beállítások STR_SETTINGS_MENU_SCRIPT_SETTINGS :MI / Játékszkript beállítások STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF beállítások STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Átlátszósági beállítások @@ -533,7 +544,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Befoglaló dobo STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Koszos épületek színezésének be/kikapcsolása ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -549,22 +560,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -874,13 +903,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} a dokkban vár STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} a hangárban vár -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} menetrendje túl kevés utasításból áll STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} érvénytelen utasítással rendelkezik STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} duplikált utasítással rendelkezik STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} utasításai között nem létező állomás szerepel -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} utasításlistájában olyan reptér van, aminek túl rövid a kifutópályája STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} elöregedett STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} nagyon elöregedett @@ -922,7 +950,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Látkép STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A látkép pozícióját a fő nézetre másolja # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Beállítások +STR_GAME_OPTIONS_CAPTION :{WHITE}Alapbeállítások STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása @@ -963,10 +991,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Grúz Lari (GEL STR_GAME_OPTIONS_CURRENCY_IRR :Iráni Riál (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Közúti járművek STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}A közúti közlekedés oldalának kiválasztása STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Balra hajtás @@ -1002,11 +1026,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalán STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatikus mentés STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Az automatikus mentések közötti időtartam kiválasztása +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Nincs STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Minden hónapban STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 havonta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 havonta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 havonta +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Nyelv STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Válassz nyelvet @@ -1018,8 +1044,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Képerny STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Játékhoz használt felbontás kiválasztása STR_GAME_OPTIONS_RESOLUTION_OTHER :egyéb -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Képmentés formátuma -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Képmentésekhez használandó formátum kiválasztása +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Felület mérete +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Használni kívánt felületméret kiválasztása + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normál +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dupla méret +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Négyszeres méret STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikus alapcsomag STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása @@ -1035,6 +1065,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Használ STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} hibás fájl STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}További információk a zenei alapcsomagról +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nem sikerült a támogatott felbontások lekérdezése STR_ERROR_FULLSCREEN_FAILED :{WHITE}Teljes képernyős módra váltás sikertelen # Custom currency window @@ -1112,7 +1143,8 @@ STR_SUBSIDY_X4 :4x STR_TERRAIN_TYPE_VERY_FLAT :Nagyon sík STR_TERRAIN_TYPE_FLAT :Sík STR_TERRAIN_TYPE_HILLY :Dombos -STR_TERRAIN_TYPE_MOUNTAINOUS :Hegyes +STR_TERRAIN_TYPE_MOUNTAINOUS :Hegyvidéki +STR_TERRAIN_TYPE_ALPINIST :Alpesi STR_CITY_APPROVAL_PERMISSIVE :Engedékeny STR_CITY_APPROVAL_TOLERANT :Toleráns @@ -1120,11 +1152,11 @@ STR_CITY_APPROVAL_HOSTILE :Ellenséges STR_WARNING_NO_SUITABLE_AI :{WHITE}Nincsen megfelelő MI...{}Letölthetsz néhány MI-t a tartalomletöltő rendszeren keresztül -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Haladó beállítások +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Beállítások STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Szűrő kifejezés: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Összes szétnyitása -STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Összes összezárása +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Összes összecsukása STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(leírás nem elérhető) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Alapértelmezett érték: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Beállítás típusa: {ORANGE}{STRING} @@ -1134,21 +1166,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Játék beáll STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Vállalat beállítás (mentésben tárolva; csak az új játékokat befolyásolja) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Vállalat beállítás (mentésben tárolva; csak a jelenlegi vállalatot befolyásolja) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mutat: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Leszűkíti a listát a módosított értékekkel rendelkező opciókra -STR_CONFIG_SETTING_RESTRICT_BASIC :Alapbeállítások -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Haladó beállítások -STR_CONFIG_SETTING_RESTRICT_ALL :Szakértő beállítások / minden beállítás +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategória: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Típus: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Leszűkíti a listát a megadott szűrők segítségével +STR_CONFIG_SETTING_RESTRICT_BASIC :Alap (csak a fontos beállítások) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Haladó (majdnem mindegyik beállítás mutatása) +STR_CONFIG_SETTING_RESTRICT_ALL :Szakértő (minden beállítás, még az egészen furák is) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Beállítások az eredetitől eltérő értékekkel STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Beállítosok amelyeknek a jelenlegi értéke eltér az eredetitől STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Lista szűkítése a beállítások szerint -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Minden beállítás +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Minden beállítástípus STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliens beállítások (nincs mentésben tárolva; minden játékot érintenek) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Játék beállítások (mentésben tárolva; csak az új játékokat érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Játék beállítások (mentésben tárolva; csak a jelenlegi játékot érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Vállalat beállítások (mentésben tárolva; csak az új játékokat érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Vállalat beállítások (mentésben tárolva; csak a jelenlegi vállalatot érintik) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Az összes eredmény mutatása:{}A {SILVER}kategória {BLACK}legyen {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Az összes eredmény mutatása:{}A {SILVER}típus {BLACK}legyen {WHITE}Minden beállítástípus +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Az összes eredmény mutatása:{}A {SILVER}kategória {BLACK}legyen {WHITE}{STRING} {BLACK}, a {SILVER}típus {BLACK}pedig {WHITE}Minden beállítástípus +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nincs találat - STR_CONFIG_SETTING_OFF :Ki STR_CONFIG_SETTING_ON :Be @@ -1181,7 +1218,7 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Támogatott kap STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Építkezési költségek: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Építkezések és beszerzésk költségeinek szintje STR_CONFIG_SETTING_RECESSIONS :Gazdasági válságok: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ha bekapcsolod, gazdasági válság fog kitörni néhány évente. A válság alatt az összes ipar jelentősen kevesebbet termel. (A válság végével a termelés vissza áll az eredeti szintre.) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ha bekapcsolod, gazdasági válság fog kitörni néhány évente. A válság alatt az összes ipar jelentősen kevesebbet termel. (A válság végével a termelés visszaáll az eredeti szintre.) STR_CONFIG_SETTING_TRAIN_REVERSING :Vonatok állomáson történő megfordulásának tiltása: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ha engedélyezve van, a vonatok nem fordulnak vissza egy (nem vég-) állomáson, még ha lenne egy rövidebb út is visszafordulva STR_CONFIG_SETTING_DISASTERS :Katasztrófák: {STRING} @@ -1189,8 +1226,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ha engedélyezv STR_CONFIG_SETTING_CITY_APPROVAL :Városi tanács hozzáállása a területének az átépítéséhez: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Válaszd ki, hogy mennyi zaj és környezeti kár okozása befolyásolja a cég megítélését egy városban, mely hatással van a cég további építési lehetőségeire a város területén belül -STR_CONFIG_SETTING_BUILDONSLOPES :Lejtőre és partokra építés: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Bekapcsolva utak, vasutak és állomások lejtőre is építhetőek. Kikapcsolva csak olyan lejtőre építhetőek, melyek megegyeznek a lejtő irányával és nem igényelnek egyéb létesítményeket +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximális térképmagasság: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :A térképen található hegyek maximális magasságának beállítása +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nem állíthatod erre az értékre a maximális térképmagasságot. Legalább egy hegy magasabb ennél STR_CONFIG_SETTING_AUTOSLOPE :Épületek, vágányok stb. alatti tereprendezés engedélyezése: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tájrendezés engedélyezése épületek és utak alatt azok eltávolítása nélkül STR_CONFIG_SETTING_CATCHMENT :Élethűbben méretezett állomási vonzáskörzetek bekapcsolása: {STRING} @@ -1215,16 +1253,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Vonatok és haj STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 fokos kanyarok akkor fordulnak elő, ha egy vízszintes pályaelemet egy függőleges elem követ közvetlenül a következő mezőn, ami által a vonat egy 90 fokos kanyart tesz a szokásos 45 fokos helyett. Ez ugyanígy előfordulhat hajók esetében is STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Nem közvetlen szomszédos állomások egyesítése: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Állomásrészek hozzáadásának engedélyezése úgy, hogy az nem érinti közvetlenül a meglévő részeket. Ctrl+kattintás szükséges hozzá az új részek elhelyezése közben -STR_CONFIG_SETTING_IMPROVEDLOAD :Járművek egymás utáni telerakodása (egyidejű helyett): {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ha engedélyezett, az egyszerre az állomáson tartózkodó járművek egymás után kerülnek berakodásra. A következő jármű berakodása csak akkor kezdődik el, ha van elegendő áru az előző jármű teljes megtöltésére -STR_CONFIG_SETTING_GRADUAL_LOADING :Járművek fokozatos rakodása: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Járművek fokozatos rakodása meghatározott rakodási időkkel ahelyett, hogy minden egyszerre lenne berakodva egy adott ideig az áru mennyiségétől függően STR_CONFIG_SETTING_INFLATION :Infláció: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Infláció engedélyezése a gazdaságban, ahol a költségek jobban emelkednek, mint a bevételek -STR_CONFIG_SETTING_SELECTGOODS :Csak igény esetén kerüljön rakomány az állomásra: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Csak akkor kerül az állomásra az áru, ha arra igény van egy berakandó jármű által. Ez megelőzi a rossz értékelés kialakulását azokra az árufajtákra, amik nem kerülnek az állomáson kiszolgálásra STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Hidak maximális hossza: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Az építendő hidak maximális hossza +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximális hídmagasság: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Hidak építésének maximális magassága STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Alagutak maximális hossza: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Az építendő alagutak maximális hossza STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Kézi nyersanyaglelőhely-létesítési módszer: {STRING} @@ -1250,8 +1284,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :A hely, ahol a STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :elején STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :közepén STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :távoli végén -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Közúti járművek sorbanállása: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Közúti járművek megállítása foglalt útszakasz előtt, míg az fel nem szabadul STR_CONFIG_SETTING_AUTOSCROLL :Ablakmozgatás, ha az egér a képernyő szélén van: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Bekapcsolva görgetődik a látkép, ha az egér az ablak széléhez közel van STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :kikapcsolva @@ -1282,10 +1314,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Áthaladó meg STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Áthaladó megállóhelyek építésének engedélyezése települési tulajdonú utakon STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Áthaladó megállóhelyek engedélyezése ellenfél tulajdonában lévő utakon: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Áthaladó megállóhelyek építésének engedélyezése olyan utakon, melyek más vállalatok birtokában vannak -STR_CONFIG_SETTING_ADJACENT_STATIONS :Érintkező állomások építésének engedélyezése: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Különböző állomások érintkezésének engedélyezése -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Több NewGRF járműgarnitúra engedélyezése: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitási lehetőség régi NewGRF-ekhez. Ne kapcsold ki, ha nem tudod mit csinálsz! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}A beállítást nem lehet megváltoztatni, ha van használatban jármű STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Az infrastruktúra fenntartási költségének engedélyezése: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Bekapcsolva az infrastruktúrának fenntartási költsége van. A költség hatványozottan nő a hálózatnagysággal, nagyobb hatással a nagyobb vállalatokra mint a kisebbekre @@ -1316,35 +1344,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Hibaüzenetek i STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :A piros ablakban megjelenő hibaüzenetek kijelzésének időtartama. Bizonyos (kritikus) hibaüzenetek nem záródnak be automatikusan egy idő után, hanem kézzel kell őket bezárni STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} másodperc STR_CONFIG_SETTING_HOVER_DELAY :Leírás megjelenítése: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Késleltetés mielőtt megjelenne az eszközleírás az egér ráhúzása után egy felületi elemen. A leírás elérhető még az egér jobb gombjával is -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Várakozás {COMMA} másodpercig +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Késleltetés, mielőtt megjelenne az eszközleírás az egér ráhúzása után egy felületi elemen. A leírás elérhető még az egér jobb gombjával is, ha ennek értéke 0-ra van állítva. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :{COMMA} ezredmásodperc után STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Jobb klikk STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mutassa a település lakosságát a feliratban: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Település lakosságszámának kijelzése a címkéjén STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :A vonalak vastagsága a grafikonokon: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Vonalak szélessége a grafikonokon. A vékony vonal precízebben olvasható, míg a vastagabb jobban látható és a színek jobban megkülönböztethetőek +STR_CONFIG_SETTING_LANDSCAPE :Táj: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :A tájak alapvető játékbeállításokat határoznak meg különféle árukkal és településnövekedési tényezőkkel. A NewGRF-ek és a játékszkriptek segítségével ez még tovább hangolható. STR_CONFIG_SETTING_LAND_GENERATOR :Terep generálás: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Az eredeti térképgenerátor az alap grafikus csomagtól függ, és fix formájú tájakat állít össze. A TerraGenesis egy Perlin zajon alapuló térképgenerátor, nagyobb konfigurálhatósággal. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Eredeti STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Tereptípus: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :A térkép domborzata +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Gazdasági épületek száma: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Mennyi gazdasági épület legyen, és mennyire legyenek fenntartva a játék folyamán STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Olajfúró tornyok maximális távolsága a térkép szélétől: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olajfinomítók csak a térkép határaihoz közel építhetőek, ami sziget jellegű térképeknél a partvidék STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hóhatár magassága: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :A terep durvasága (csak TerraGenesisnél) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Ezzel a beállítással szabályozhatod a szub-arktikus táj hóhatárát. A hó befolyással lehet a gazdasági épületek generálására és a települések növekedésére. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :A terep durvasága: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(csak TerraGenesis esetén) Kiválaszthatod a hegyek mennyiségét: a sima térképeken kevesebb, de kiterjedtebb hegy van, míg a durva térképeken sok hegy van, amik kissé ismétlődőnek tűnhetnek. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Nagyon sima STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Sima STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Durva STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Nagyon durva +STR_CONFIG_SETTING_VARIETY :Változatosság eloszlása: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(csak TerraGenesis esetén) Bekapcsolása esetén a térképen lesznek hegyvidékes és sík területek is. Mivel ettől a térkép csak simább lesz, ezért javasolt a 'Hegyes' beállítás használata a tereptípushoz. +STR_CONFIG_SETTING_RIVER_AMOUNT :A folyók mennyisége: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Mennyi folyó legyen a térképen STR_CONFIG_SETTING_TREE_PLACER :Fa-elhelyező módszer: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Válaszd ki a fák eloszlását a térképen: Az 'Eredeti' esetén a fák egyenletesen lesznek szétszórva, a 'Javított' esetén pedig csoportokban STR_CONFIG_SETTING_TREE_PLACER_NONE :Nincs STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Eredeti STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Javított +STR_CONFIG_SETTING_ROAD_SIDE :Közúti járművek: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Melyik oldalon közlekedjenek a közúti járművek STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Magasságtérkép forgatása: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Órairánnyal szemben STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Órairányban STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :A sík térképhez hozzáadandó magasság: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :A térkép határain lévő mezők tájrendezésének engedélyezése: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Kikapcsolva a térkép határain mindig óceán lesz STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Az északi határnál egy vagy több mező nem üres STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Az egyik határnál egy vagy több mező nem víz @@ -1395,17 +1437,15 @@ 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_AUTOSAVE :Automatikus mentés: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Az automatikus mentések között eltelő idő + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Játékmentés dátumformátuma: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :A játékmentésekben használt dátum formátuma STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :hosszú (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :rövid (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Alapértelmezett paletta NewGRF-eknek ha nincs meghatározva: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Alapértelmezett paletta, melyet a NewGRF-ek használnak amennyiben nincs meghatározva, hogy melyikre van szükségük -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paletta -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paletta - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatikus szünettel kezdés új játék esetén: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Bekapcsolva a játék szünettel kezdődik, időt hagyva a térkép közelebbi tanulmányozására STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Szünetben engedélyezett: {STRING} @@ -1488,7 +1528,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Javítási inte STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :A járművek javítási módjának kiválasztása, hogy az utolsó javítás óta eltelt idő, vagy a maximális megbízhatósághoz képesti százalékos csökkenés alapján kerüljelek javításra STR_CONFIG_SETTING_SERVINT_TRAINS :Alapértelmezett javítási intervallum vonatoknak: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új vonatoknak, ha nincs külön javítási intervallum beállítva a járműre -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} nap/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}nap/% STR_CONFIG_SETTING_SERVINT_DISABLED :kikapcsolva STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Alapértelmezett javítási intervallum közúti járműveknek: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Alapértelmezett javítási intervallum beállítása új közúti járműveknek, ha nincs külön javítási intervallum beállítva a járműre @@ -1627,12 +1667,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a {COMMA}-bó STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :nincs STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kezdeti városméret-szorzó: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Átlagos városméret a normál településekhez képest a játék kezdetén -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Abszurd útrészletek automatikus eltávolítása útépítés közben: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Zsákutcák eltávolítása támogatott útfelújítások ideje alatt -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :A szétosztási gráf frissítése {STRING} naponként +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :A szétosztási gráf frissítése {STRING}{NBSP}naponként STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :A kapcsolati gráf egyes újraszámításai között eltelő idő. Minden számítás a gráf egy adott komponensére vonatkozik. Egy adott X beállítás esetén nem fog a teljes gráf X naponként frissülni, csak egy komponense. Minél rövidebb ez az idő, annál több CPU időre lesz szükség a számítás elvégzéséhez. Minél hosszabb ez az idő, annál több ideig fog tartani, mire a szétosztás megindul az új útvonalakon. -STR_CONFIG_SETTING_LINKGRAPH_TIME :A szétosztási gráf újraszámolására szánt idő: {STRING} nap +STR_CONFIG_SETTING_LINKGRAPH_TIME :A szétosztási gráf újraszámolására szánt idő: {STRING}{NBSP}nap STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :A kapcsolati gráf egy komponensének újraszámítására szánt idő. Az újraszámítás egy külön szálon indul el, és a megadott számú napig fut. Minél rövidebb ez az időtartam, annál valószínűbb, hogy a számítás nincs kész az idő lejártakor, ekkor a játék megáll a számítás befejeződéséig (ettől a játék akadhat). Minél hosszabb ez az időtartam, annál több idő kell a szétosztás frissüléséhez, amikor megváltoznak az útvonalak. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :kézi STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :aszimmetrikus @@ -1642,9 +1680,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :A "szimmetrikus STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Levelek szétosztása: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :A "szimmetrikus" azt jelenti, hogy megközelítóleg ugyanannyi levél megy majd A-ból B-be, mint B-ből A-ba. Az "aszimmetrikus" beállítás esetén a különbözö irányokba tetszőleges mennyiségű levél mehet. "Kézi" esetben a levelek nem lesznek automatikusan szétosztva. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :A PÁNCÉLOZOTT rakománytípus szétosztása: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A PÁNCÉLOZOTT rakománytípus a mérsékelt égövi tájon az értéktárgyakat, szubtrópusi tájon a gyémántot, szubarktikus tájon pedig az aranyat jelenti, ezeken a NewGRF-ek változtathatnak. A "szimmetrikus" azt jelenti, hogy megközelítóleg ugyanannyi rakomány megy majd A-ból B-be, mint B-ből A-ba. Az "aszimmetrikus" beállítás esetén a különbözö irányokba tetszőleges mennyiségű rakomány mehet. "Kézi" esetben a rakományok nem lesznek automatikusan szétosztva. Szubarktikus és szubtrópusi esetben az "aszimmetrikus" vagy "kézi" beállítás javasolt, mivel a bankok nem fognak aranyat, ill. gyémántot visszaküldeni a bányáknak. Mérsékelt égövi esetben a "szimmetrikus" is jó választás, ebben az esetben a bankok a fogadott mennyiségnek megfelelően fognak értéktárgyakat visszaküldeni a küldő banknak. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A PÁNCÉLOZOTT rakománytípus a mérsékelt égövi tájon az értéktárgyakat, szubtrópusi tájon a gyémántot, szubarktikus tájon pedig az aranyat jelenti, ezeken a NewGRF-ek változtathatnak. A "szimmetrikus" azt jelenti, hogy megközelítóleg ugyanannyi rakomány megy majd A-ból B-be, mint B-ből A-ba. Az "aszimmetrikus" beállítás esetén a különbözö irányokba tetszőleges mennyiségű rakomány mehet. "Kézi" esetben a rakományok nem lesznek automatikusan szétosztva. Szubarktikus esetben az "aszimmetrikus" vagy "kézi" beállítás javasolt, mivel a bankok nem fognak aranyat, ill. gyémántot visszaküldeni a bányáknak. Mérsékelt és szubtropikus égövi esetben a "szimmetrikus" is jó választás, ebben az esetben a bankok a fogadott mennyiségnek megfelelően fognak értéktárgyakat visszaküldeni a küldő banknak. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Egyéb rakománytípusok szétosztása: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :A "szimmetrikus" azt jelenti, hogy megközelítóleg ugyanannyi rakomány megy majd A-ból B-be, mint B-ből A-ba. Az "aszimmetrikus" beállítás esetén a különbözö irányokba tetszőleges mennyiségű rakomány mehet. "Kézi" esetben a rakományok nem lesznek automatikusan szétosztva. Javasolt az "aszimmetrikus" vagy a "kézi" beállítás. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Az "aszimmetrikus" beállítás esetén a különbözö irányokba tetszőleges mennyiségű rakomány mehet. "Kézi" esetben a rakományok nem lesznek automatikusan szétosztva. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :A szétosztás pontossága: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Magasabb beállítás esetén a kapcsolati gráf kiszámítása több időt fog igénybe venni. A játék akadozhat, ha ez a számítás túl sok időbe telik. Alacsony beállítás esetén viszont a szétosztás pontatlan lehet, a rakományok váratlan célokat kaphatnak. STR_CONFIG_SETTING_DEMAND_DISTANCE :A távolság hatása a küldött mennyiségekre: {STRING} @@ -1655,62 +1693,64 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION :A rövidebb uta STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Gyakran több útvonal is van két adott állomás között. A Cargodist először a legrövidebb útvonalat telíti be, majd a második legrövidebb útvonalat, miután az első útvonal már telített, és így tovább. A telítettséget a kapacitás becslése és a tervezett kihasználtság határozza meg. Amennyiben az összes útvonal telített, és még mindig van igény, az összes útvonalat terhelni fogja, elsősorban a legnagyobb kapacitásúakat. Viszont a legtöbb esetben az algoritmus nem fogja pontosan megbecsülni a kapacitást. Ezen opció segítségével beállíthatjuk, hogy milyen telítettségi szintig legyen kihasználva a rövidebb útvonal a hosszabb útvonal használatba vétele előtt. Állítsd 100%-nál kisebbre, hogy elkerüld a túlterhelődő állomásokat abban az esetben, ha a kapacitás túl lenne becsülve! STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Sebesség mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :A sebességek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :A sebességértékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Angolszász (mi/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrikus (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Teljesítmény mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :A teljesítmények a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :A teljesítményértékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Angolszász (LE) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrikus (LE) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Tömeg mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :A tömegek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :A tömegértékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Angolszász (angolszász tonna) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrikus (t/tonna) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Űrtartalom mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Az űrtartalmak a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Az űrtartalomértékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Angolszász (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrikus (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Vonóerő mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :A vonóerők a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :A vonóerőértékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Angolszász (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrikus (kp) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Hosszúság mértékegysége: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :A hosszúságok a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :A magassági értékek a kiválasztott mértékegységben fognak megjelenni a felhasználói felületen STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Angolszász (láb) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrikus (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Megjelenítés STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Honosítás -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Építkezés +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Megjelenés +STR_CONFIG_SETTING_SOUND :{ORANGE}Hang effektek +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Felület +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Általános +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Nézet +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Építkezés +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Hírüzenetek / Figyelmeztetések +STR_CONFIG_SETTING_COMPANY :{ORANGE}Vállalat +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Pénzügyek STR_CONFIG_SETTING_VEHICLES :{ORANGE}Járművek -STR_CONFIG_SETTING_STATIONS :{ORANGE}Állomások -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Gazdaság -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Rakományok szétosztása (úticélok) +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Útvonalkeresés +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Korlátozások +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katasztrófák / Balesetek +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Térképgenerálás +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Környezet +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Önkormányzatok +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Települések +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gazdasági épületek +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Rakományok szétosztása (úticélok) STR_CONFIG_SETTING_AI :{ORANGE}Ellenfelek -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Megjelenítési beállítások -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Irányítás -STR_CONFIG_SETTING_SOUND :{ORANGE}Hang effektek -STR_CONFIG_SETTING_NEWS :{ORANGE}Hírek és üzenetek -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Jelzők -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Rakomány kezelés STR_CONFIG_SETTING_AI_NPC :{ORANGE}Számítógép által vezérelt ellenfelek -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automata felújítás -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Javítás -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Útvonalkeresés -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vonatok -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Települések -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Gazdasági épületek STR_CONFIG_SETTING_PATHFINDER_OPF :Eredeti STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1757,9 +1797,9 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Játék STR_INTRO_SCENARIO_EDITOR :{BLACK}Pályaszerkesztő STR_INTRO_MULTIPLAYER :{BLACK}Hálózati játék -STR_INTRO_GAME_OPTIONS :{BLACK}Beállítások +STR_INTRO_GAME_OPTIONS :{BLACK}Alapbeállítások STR_INTRO_HIGHSCORE :{BLACK}Rekord tábla -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Haladó beállítások +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Beállítások STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások STR_INTRO_ONLINE_CONTENT :{BLACK}Letölthető tartalmak STR_INTRO_SCRIPT_SETTINGS :{BLACK}MI / Játékszkript beállítások @@ -1777,9 +1817,9 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Szubarkt STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Szubtrópusi táj kiválasztása STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Játékvilág táj kiválasztása -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}A játék beállításainak megjelenítése +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}A játék alapvető beállításainak (pl. nyelv, grafikus alapcsomag, stb.) megjelenítése STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rekord tábla megjelenítése -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Haladó beállítások megjelenítése +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}A beállítások megjelenítése STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások megjelenítése STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Új és frissített tartalmak megtekintése és letöltése STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}MI és játékszkript beállítások megjelenítése @@ -1819,6 +1859,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Irány STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Csodabuldózer (lerombol gazdasági épületeket, mozgathatatlan objektumokat): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Alagutak keresztezhessék egymást: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet-repülők nem fognak (gyakran) lezuhanni a kis repülőtereken: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Maximális térképmagasság szerkesztése: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}A térképen található hegyek maximális magasságának szerkesztése STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Mérsékelt táj STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Szubarktikus táj STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Szubtrópusi táj @@ -1867,6 +1909,7 @@ STR_LIVERY_FREIGHT_TRAM :Teherszállít STR_FACE_CAPTION :{WHITE}Arcválasztás STR_FACE_CANCEL_TOOLTIP :{BLACK}Új arc elvetése STR_FACE_OK_TOOLTIP :{BLACK}Új arc elfogadása +STR_FACE_RANDOM :{BLACK}Új véletlen alapszám STR_FACE_MALE_BUTTON :{BLACK}Férfi STR_FACE_MALE_TOOLTIP :{BLACK}Férfi arcok kiválasztása @@ -2106,6 +2149,7 @@ STR_NETWORK_CLIENT :Kliens STR_NETWORK_SPECTATORS :Megfigyelők STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Add meg a küldeni kívánt pénz mennyiségét +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Megfigyelő # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne mentsd el a megadott jelszót @@ -2335,7 +2379,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Vasúti járműtelep építése (vonatok vételére és karbantartására). Shift lenyomásával becsült építési költséget mutat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ellenőrző pont építése vágányra. A Ctrl lenyomásával az ellenőrző pontok egyesíthetőek. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Vasútállomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Vasúti jelzők építése. Ctrl gombbal váltás az alak- és fényjelzők között{}Húzással a sínek mentén végig jelzők épülnek. Húzva Ctrl gombbal a következő pályakiágazásig épít jelzőket{}Ctrl+kattintással válthatod a megnyitandó jelzőépítés-kezelő ablakot. Shift lenyomásával megmutatja a becsült építési költséget +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Vasúti jelzők építése. Ctrl gombbal váltás az alak- és fényjelzők között{}Húzással a sínek mentén végig jelzők épülnek. Húzva Ctrl gombbal a következő pályakiágazásig vagy jelzőig épít jelzőket{}Ctrl+kattintással válthatod a megnyitandó jelzőépítés-kezelő ablakot. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Vasúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Vasúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Váltás építés/feleszedés között vasúti pályák, jelzők, ellenőrző pontok és vasútállomások esetében. Ctrl nyomvatartásával az ellenőrző pontokon és állomásokon a vasúti pályát is eltávolítja @@ -2497,7 +2541,7 @@ STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj a STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Földterület megvétele későbbi használatra. Shift lenyomásával megmutatja a várható költséget # Object construction window -STR_OBJECT_BUILD_CAPTION :{WHITE}Objektum kiválaszás +STR_OBJECT_BUILD_CAPTION :{WHITE}Objektum kiválasztása STR_OBJECT_BUILD_TOOLTIP :{BLACK}Építendő objektum kiválasztása. Shift lenyomásával megmutatja a várható költséget STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Építendő objektum típusának kiválasztása STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektum előnézete @@ -2610,6 +2654,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vasúti pályasebesség: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Közúti sebességkorlátozás: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kövek @@ -2706,7 +2751,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-2013 Az OpenTTD csapat +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 Az OpenTTD csapat # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése @@ -2725,6 +2770,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Ment STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}A játék elmentése a választott néven STR_SAVELOAD_LOAD_BUTTON :{BLACK}Betölt STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Betölti a kiválasztott játékmentést +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Betölti a kiválasztott magasságtérképet STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Részletek STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nincs elérhető információ STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2740,13 +2786,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Várossűrűség: STR_MAPGEN_DATE :{BLACK}Dátum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gazd. épületek száma: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum térképmagasság: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}A hegyek maximális magasságának növelése a térképen eggyel +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}A hegyek maximális magasságának csökkentése a térképen eggyel STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hóhatár: STR_MAPGEN_SNOW_LINE_UP :{BLACK}A hóhatár megnövelése eggyel STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}A hóhatár csökkentése eggyel -STR_MAPGEN_RANDOM_SEED :{BLACK}Véletlen alapszám: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kattints ide a véletlen alapszám beírásához -STR_MAPGEN_RANDOM :{BLACK}Új véletlen alapszám -STR_MAPGEN_RANDOM_HELP :{BLACK}Megváltoztatja a térképgenerálásnál használt véletlen alapszámot STR_MAPGEN_LAND_GENERATOR :{BLACK}Térkép generátor: STR_MAPGEN_TREE_PLACER :{BLACK}Fa algoritmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tereptípus: @@ -2773,7 +2818,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Magassá STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Méret: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Irj be egy tetszőleges számot +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Térkép maximális magasságának megváltozatása STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Hóhatár megváltoztatása STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Kezdő év megváltoztatása @@ -2828,6 +2873,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Fel STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}A kiválasztott NewGRF-et felfelé mozgatja a listán STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Le STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}A kiválasztott NewGRF-et lefelé mozgatja a listán +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Verziófrissítés +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Frissíti azokat a NewGRF-eket, amelyekből van telepítve újabb verzió STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A feltelepített NewGRF fájlok listája. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Paraméterek beállítása @@ -2852,6 +2899,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Fájl nem STR_NEWGRF_SETTINGS_DISABLED :{RED}Kikapcsolva STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nem kompatibilis az OpenTTD ezen verziójával +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Lista mentése +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Az elérhető listák, kattints az egyikre, hogy lemásold a lenti mezőbe +STR_SAVE_PRESET_TITLE :{BLACK}A lista neve +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}A lista mentéséhez kiválasztott név +STR_SAVE_PRESET_CANCEL :{BLACK}Mégse +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ne mentse a listát +STR_SAVE_PRESET_SAVE :{BLACK}Mentés +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}A lista mentése a megadott névvel + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF paraméterek megváltoztatása STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Bezárás @@ -2875,14 +2932,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Elhelyezési sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Következő sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Továbbhaladás a következő normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat bezárva a végével +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Továbbhaladás a következő normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat, a végén folytatva az elsővel STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ugrás a spritehoz STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ugrás a megadott spritehoz. Ha a sprite nem normál sprite, továbbhaladás a következő normál spritehoz STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Előző sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Továbbhaladás az előző normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat bezárva az elejével +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Továbbhaladás az előző normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat, az elején folytatva az utolsóval STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}A jelenleg kiválasztott sprite ábrázolása. Az elhelyezkedés kikapcsolt sprite-rajzolás közben STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sprite elmozdítása, módosítva az X és Y offszeteket -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offszet: {NUM}, Y offszet: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Eltolás visszaállítása +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}A jelenlegi relatív eltolás visszaállítása +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X eltolás: {NUM}, Y eltolás: {NUM} (Abszolút) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X eltolás: {NUM}, Y eltolás: {NUM} (Relatív) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite felszedése STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Szedj fel egy spriteot akárhonnan a képernyőről @@ -2911,7 +2971,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Több Action 8 bejegyzést tartalmaz (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Ál-sprite távoli végének olvasása (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}A jelenleg használt grafikus alapcsomagból hiányzik számos sprite.{}Kérlek frissítsd a grafikus alapcsomagot -STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}A használt alap grafikus csomagból néhány egység hiányzik.{}Kérjük frissítsd az alap grafikus csomagot.{}Ha az {YELLOW}OpenTTD fejlesztői változatát{WHITE} használod, lehet hogy a {YELLOW}fejlesztői alap grafikus csomagot{WHITE} kellene használnod +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}A használt alap grafikus csomagból néhány egység hiányzik.{}Kérjük frissítsd az alap grafikus csomagot.{}Mivel az {YELLOW}OpenTTD fejlesztői változatát{WHITE} használod, lehet, hogy a {YELLOW}fejlesztői alap grafikus csomagot{WHITE} kellene használnod STR_NEWGRF_ERROR_GRM_FAILED :Kért GRF források nem elérhetőek (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} kikapcsolva {STRING} által STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Érvénytelen/ismeretlen sprite szerkezet formátum (sprite {3:NUM}) @@ -2939,6 +2999,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Hiányzó STR_NEWGRF_BROKEN :{WHITE}A '{0:STRING}' viselkedése valószínűleg ütközést vagy összeomlást okoz STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Megváltoztatta '{1:ENGINE}' meghajtott vagon állapotát mikor nem volt bent a járműtelepen STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Megváltoztatta '{1:ENGINE}' jármű hosszát mikor nem volt a járműtelepen +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Megváltoztatta a '{1:ENGINE}' kapacitását, amikor az nem a garázsban vagy átalakítás alatt áll STR_BROKEN_VEHICLE_LENGTH :{WHITE}A '{1:COMPANY}' vállalat '{0:VEHICLE}' jelű vonatának érvénytelen a hossza. Ezt a NewGRF-ek okozhatják. A játék elszállhat vagy lefagyhat STR_NEWGRF_BUGGY :{WHITE}A(z) '{0:STRING}' NewGRF helytelen információt tartalmaz @@ -2953,6 +3014,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <ér STR_NEWGRF_INVALID_ENGINE :<érvénytelen jármű modell> STR_NEWGRF_INVALID_INDUSTRYTYPE :<érvénytelen gazdasági épület> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<érvénytelen jármű> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF-ek beolvasása STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF-ek beolvasása. Mennyiségtől függően eltarthat egy ideig... @@ -2990,8 +3054,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} szállítva STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (több szükséges) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (szállítva) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}A település {ORANGE}{COMMA}{BLACK} naponta növekszik -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}A település {ORANGE}{COMMA}{BLACK} naponta növekszik (támogatást kapott) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}A település {ORANGE}{COMMA}{BLACK}{NBSP}naponta növekszik +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}A település {ORANGE}{COMMA}{BLACK}{NBSP}naponta növekszik (támogatást kapott) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}A település {RED}nem{BLACK} növekszik STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Zajszint a városban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a városra állítja. Ctrl+kattintás esetén új nézetet nyit a város pozíciójára @@ -3051,7 +3115,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Információ STR_GOAL_QUESTION_CAPTION_WARNING :Figyelmeztetés STR_GOAL_QUESTION_CAPTION_ERROR :Hiba -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Mégse STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nem @@ -3070,6 +3134,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Újrakezd STR_GOAL_QUESTION_BUTTON_POSTPONE :Elhalaszt STR_GOAL_QUESTION_BUTTON_SURRENDER :Felad STR_GOAL_QUESTION_BUTTON_CLOSE :Bezár +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Támogatások @@ -3090,6 +3155,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Előző STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Előző oldal STR_STORY_BOOK_NEXT_PAGE :{BLACK}Következő STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Következő oldal +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Érvénytelen cél referencia # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Állomásnevek - kattints egy névre az állomás megnézéséhez. Ctrl+kattintásra új látképet nyit az állomás pozíciójára @@ -3104,7 +3170,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Semmilye # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Várakozik: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ideszállítva {STATION} állomásról) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} lefoglalva berakodáshoz) @@ -3348,12 +3413,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Csoportosítatl STR_GROUP_DEFAULT_SHIPS :Csoportosítatlan hajók STR_GROUP_DEFAULT_AIRCRAFTS :Csoportosítatlan repülők -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Csoportok - Kattints a csoport nevére a járművek listázásához +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Csoportok - Kattints a csoport nevére a járművek listázásához. Húzással a csoportokat hierarchiába rendezheted. STR_GROUP_CREATE_TOOLTIP :{BLACK}Csoport létrehozásához kattints ide STR_GROUP_DELETE_TOOLTIP :{BLACK}Kijelölt csoport törlése STR_GROUP_RENAME_TOOLTIP :{BLACK}Kijelölt csoport átnevezése STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Csoport teljes listás automata csere alóli mentessége +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Csoport törlése +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Biztosan törölni akarod ezt a csoportot minden alcsoportjával együtt? + STR_GROUP_ADD_SHARED_VEHICLE :Megosztott jármű hozzáadása STR_GROUP_REMOVE_ALL_VEHICLES :Összes jármű eltávolítása @@ -3391,10 +3459,10 @@ STR_PURCHASE_INFO_ALL_BUT :Mindenre, kivé 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vasúti jármű kiválasztása - kattints egy járműre az adataihoz -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Közúti jármű kiválasztása - kattints egy járműre az adataihoz -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Hajó kiválasztása - kattints egy hajóra az adataihoz -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgép kiválasztása - kattints egy repülőgépre az adataihoz +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ő +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Hajó kiválasztása - kattints egy hajóra az adataihoz. Ctrl+kattintással a hajótípus elrejthető/felfedhető +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgép kiválasztása - kattints egy repülőgépre az adataihoz. Ctrl+kattintással a repülőgéptípus elrejthető/felfedhető STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Megvesz @@ -3416,6 +3484,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}A közú STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}A hajó márkanevének megváltoztatása STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}A repülőgép márkanevének megváltoztatása +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Elrejtés +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Elrejtés +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Elrejtés +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Elrejtés + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Megjelenítés +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Megjelenítés +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Megjelenítés +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Megjelenítés + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vasúti járműtípus elrejtése/felfedése +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Közúti járműtípus elrejtése/felfedése +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Hajótípus elrejtése/felfedése +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Repülőgéptípus elrejtése/felfedése + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása @@ -3469,7 +3552,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Jármű STR_DEPOT_CLONE_SHIP :{BLACK}Hajó másolása STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Repülőgép másolása -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy teljes vonat másolatát. Kattints ide, majd a másolandó vonatra. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy teljes vonat másolatát annak összes kocsijával. Kattints erre a gombra, majd a vonatra kívül vagy belül a járműtelepen. Kattints ide, majd a másolandó vonatra. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ide kattintva megveheted egy közúti jármű másolatát. Kattints ide, majd a másolandó járműre a járműtelepen belül vagy kívül. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy hajó másolatát. Kattints ide, majd a másolandó hajóra. Ctrl+Kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ide kattintva elkészítheted egy repülőgép másolatát. Kattints ide, majd a másolandó repülőgépre. Ctrl+kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül @@ -3507,7 +3590,7 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :egysínű mozdo 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} Erő: {POWER} Maximális Vonóerő: {6:FORCE}{}Üzemeltetési költségeit: {4:CURRENCY_LONG}/év{}Capacity: {5: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 @@ -3520,6 +3603,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Közúti járm STR_REPLACE_VEHICLE_SHIP :Hajók STR_REPLACE_VEHICLE_AIRCRAFT :Repülőgépek +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Járművek használatban +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Oszlop tulajdonolt járművekkel +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Elérhető járművek +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Oszlop cserére alkalmas járművekkel + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Cserélendő járműtípus kiválasztása STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}A bal oldalon kiválasztott járműtípus helyett kívánt új járműtípus kiválasztása @@ -3644,7 +3732,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacit STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Szállítási díj: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Javítási időköz: {LTBLUE}{COMMA} nap{BLACK} Utolsó javítás: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Javítási időköz: {LTBLUE}{COMMA}{NBSP}nap{BLACK} Utolsó javítás: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Javítási intervallum: {LTBLUE}{COMMA}%{BLACK} Utolsó javítás: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Javítási időköz növelése 10-zel. Ctrl+kattintás 5-tel növeli STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Javítási időköz csökkentése 10-zel. Ctrl+Kattintás 5-tel csökkenti @@ -3835,11 +3923,11 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ki nem rakodá STR_ORDER_NO_UNLOAD_NO_LOAD :(Nincs ki- és berakodás) STR_ORDER_AUTO_REFIT :(Átalakítás {STRING} szállítására) -STR_ORDER_FULL_LOAD_REFIT :(Kirakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Kirakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) +STR_ORDER_FULL_LOAD_REFIT :(Mindenből teljes berakodás és átalakítás {STRING} rakományra) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_UNLOAD_REFIT :(Kirakodás, rakományfelvétel és átalakítás {STRING} rakományra) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Ki nem rakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Ki nem rakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Kirakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Kirakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_REFIT :(Elszállítás, rakományfelvétel és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Elszállítás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Elszállítás, mindenből teljes berakodás és átalakítás {STRING} rakományra) @@ -3874,10 +3962,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Következő cé STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Menet {2:VELOCITY} max. sebességgel (nincs menetrend) STR_TIMETABLE_TRAVEL_FOR :Menetidő: {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Menetidő: {STRING} {VELOCITY} max. sebességgel +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Menet ({STRING}ig, időzítetlen) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Menet ({STRING}ig, időzítetlen) {VELOCITY} max. sebességgel +STR_TIMETABLE_STAY_FOR_ESTIMATED :(ottmarad {STRING}ig, időzítetlen) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :({STRING} utazás, időzítetlen) STR_TIMETABLE_STAY_FOR :állomásra és maradj ott {STRING}ig STR_TIMETABLE_AND_TRAVEL_FOR :és a menetidő: {STRING} -STR_TIMETABLE_DAYS :{COMMA} nap -STR_TIMETABLE_TICKS :{COMMA} tick +STR_TIMETABLE_DAYS :{COMMA}{NBSP}nap +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick STR_TIMETABLE_TOTAL_TIME :{BLACK}A menetrend teljesítési ideje: {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}A menetrend teljesítési ideje legalább: {STRING} (nincs minden időzítve) @@ -4003,6 +4095,8 @@ STR_AI_SETTINGS_START_DELAY :Az előző MI i STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} readme-je STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}A(z) {STRING} {STRING} változásainak listája STR_TEXTFILE_LICENCE_CAPTION :{WHITE}A(z) {STRING} {STRING} licence +STR_TEXTFILE_WRAP_TEXT :{WHITE}Szöveg törése +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Szöveg törése az ablakban, hogy minden kiférjen és ne kelljen görgetni STR_TEXTFILE_VIEW_README :{BLACK}Readme megtekintése STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Változások listája STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenc @@ -4113,6 +4207,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Az ásá STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Már tengerszinten van STR_ERROR_TOO_HIGH :{WHITE}Túl magas STR_ERROR_ALREADY_LEVELLED :{WHITE}... már sík +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Ezután a híd túl magas lenne. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nem változtathatod meg a vállalat nevét... @@ -4139,7 +4234,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... túl STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... túl közel van egy másik településhez STR_ERROR_TOO_MANY_TOWNS :{WHITE}... túl sok a település STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nincs több hely a térképen -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}A település nem fog utakat építeni. Az útépítést a Haladó beállítások->Gazdaság->Városok menüben engedélyezheted +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}A település nem fog utakat építeni. Az útépítést a Haladó beállítások->Környezet->Települések menüben engedélyezheted STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Útkarbantartás folyamatban STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nem törölheted ezt a várost...{}Egy állomás vagy járműtelep hivatkozik a városra, vagy egy városi tulajdonú mező nem eltávolítható STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nincs megfelelő hely egy szobornak a város központjában @@ -4163,6 +4258,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... erd STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... csak a hóhatár fölé építhető STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... csak a hóhatár alá építhető +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nem volt megfelelő hely '{STRING}' elhelyezésére +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Változtasd meg a térképgenerálás paramétereit, hogy jobb térképet kapj + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nem építhetsz ide vasútállomást... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nem építhetsz ide buszmegállót... @@ -4299,6 +4397,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Előbb l STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nem kezdődhet és végződhet ugyanott STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Hídfők nem egy szinten vannak STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A híd túl alacsony a terepre +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}A híd túl magas erre a terepre. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}A kezdetének és a végének egy vonalban kell lennie STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... a híd mindkét végének szárazföldön kell lennie STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... a híd túl hosszú @@ -4325,6 +4424,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... már STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Csoport létrehozás sikertelen... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Csoport törlése sikertelen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Csoport átnevezése sikertelen... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nem teheted ezt a csoportot a másik alcsoportjává... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Csoport járműveinek törlése sikertelen... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Jármű hozzáadása a csoporthoz sikertelen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Megosztott jármű csoporthoz való hozzáadása sikertelen... @@ -4380,6 +4480,8 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nem vál STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... jármű megsemmisült +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Egyáltalán nincsenek elérhető járművek +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Változtasd meg a NewGRF konfigurációdat! STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Még nincsenek elérhető járművek STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Indíts új játékot {DATE_SHORT} után, vagy használj olyan NewGRF-et, ami tartalmaz megfelelően korai járműveket! @@ -4901,6 +5003,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (rejtett) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4936,8 +5039,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4948,9 +5049,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index c632a4526e..01b330bce2 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -240,6 +240,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrunsl STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rennislá - rennir lista til vinstri/hægri STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Eyða byggingum o.s.frv. á lóðarreiti. Ctrl velur svæðið skáhalt. Haldið Shift inni til að sýna áætlaðan kostnað +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Sjálfgildi STR_BUTTON_CANCEL :{BLACK}Hætta við @@ -349,7 +352,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :Hætta ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Stillingar -STR_SETTINGS_MENU_CONFIG_SETTINGS :Ítarlegar stillingar STR_SETTINGS_MENU_SCRIPT_SETTINGS :Gervigreind/leikjaforskrift STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gegnsæisstillingar @@ -457,7 +459,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Sýna/fela afm STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Sýna/fela litun á endurteiknuðum hlutum ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3 @@ -473,22 +475,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -791,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíður í þjónustumiðstöð STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíður í flugskýlinu -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hefur of fáar skipanir á áætlun STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hefur ógilda skipun STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hefur endurteknar skipanir STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hefur ógilda stöð í skipunum sínum -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er tekinn að eldast STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er tekinn að eldast mikið @@ -880,10 +898,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari (Gel) STR_GAME_OPTIONS_CURRENCY_IRR :Íranskt ríal (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Aksturstefna STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Aksturstefna bifreiða STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vinstristefna @@ -919,11 +933,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalónsk STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sjálfvirk vistun STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tíðni sjálfvirkra vistana +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aldrei STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Mánaðarlega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ársfjórðungslega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hálfsárslega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Árlega +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Tungumál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tungumál viðmóts @@ -935,8 +951,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjáupp STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Stilla skjáupplausn STR_GAME_OPTIONS_RESOLUTION_OTHER :annað -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Snið skjámynda -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Snið á skjámyndaskrám + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina @@ -1037,8 +1052,7 @@ STR_CITY_APPROVAL_HOSTILE :Fjandsamleg STR_WARNING_NO_SUITABLE_AI :{WHITE}Engin nothæf gervigreind í boði...{}Þú getur hlaðið niður mörgum gervigreindum í gegnum 'Ná í viðbætur af netinu' viðmótið -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Ítarlegar stillingar +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sía: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Þenja út STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Draga saman @@ -1051,7 +1065,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Leikjastillinga STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á nýja leiki) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á núverandi fyrirtæki) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Sýna: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Takmarkar listan hér fyrir neðan við breyttar stillingar STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnstillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ítarlegar stillingar @@ -1106,8 +1119,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Kveikja eða sl STR_CONFIG_SETTING_CITY_APPROVAL :Viðhörf bæjaryfirvalda til endurskipulagningar: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Veldu hversu mikil áhrif hávaði og umhverfisspjöll frá fyrirtækjum hafa áhrif á mat bæja á fyrirtækinu og frekari framkvæmdir innan bæjarmarkanna -STR_CONFIG_SETTING_BUILDONSLOPES :Leyfilegt að byggja í halla og á strönd: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ef þessi stilling er virk er hægt að byggja spor og stöðvar í flestum brekkum. Ef hún er óvirk er það bara hægt í brekkum sem snúa í sömu átt og sporin og því þurfa þau engar undirstöður STR_CONFIG_SETTING_AUTOSLOPE :Leyfa landslagsbreytingar undir byggingum, sporum o.fl. (landfylling): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Leyfa mótun á landslagi undir byggingum og sporum án þess að þurfa að fjarlægja STR_CONFIG_SETTING_CATCHMENT :Raunverulegri stærð svæðis sem stöðvar ná yfir: {STRING} @@ -1132,14 +1143,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Banna lestum og STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 gráðu beygjur verða þegar lárétt spor liggja saman við lóðrétt spor, þannig að lestin beygir 90 gráður þegar hún fer milli reita í staðinn fyrir 45 gráður fyrir aðrar samsetningar spora. Þetta á einnig við um beygjuradíus skipa STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Leyfa sameiningu stöðva sem ekki tengjast á korti: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gerir mögulegt að bæta við stöð án þess að reitirnir liggi saman. Það þarf að halda Ctrl+Smella þegar bætt er við stöðina -STR_CONFIG_SETTING_IMPROVEDLOAD :Nota endurbættan algóriþma við hleðslu: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ef þetta er virkt þá eru farartækin sem bíða á stöðinni hlaðinn eftir röð. Hleðsla á næsta farartæki byrjar aðeins þegar það bíður nógur farmur til að fylla fyrsta ökutækið -STR_CONFIG_SETTING_GRADUAL_LOADING :Ferma farartæki smám saman: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Smám saman hlaða farartækin eftir ákveðnum tíma sem miðast við hvert farartæki, í staðinn fyrir að hlaða öllu í einu á ákveðnum tíma sem miðast við magn farmsins STR_CONFIG_SETTING_INFLATION :Verðbólga: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Hafa verðbólgu, þá eykst kostnaður aðeins hraðar en greiðslur -STR_CONFIG_SETTING_SELECTGOODS :Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Aðeins afhlaða farm á stöðvar sem taka á móti fluttum farmi. Það kemur í veg fyrir að farmur fái slæma einkunn á stöð sem ekki tekur við viðkomandi farmi STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Hámarkslengd á brúm: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Hámarkslengd á brúm sem á að byggja STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Hámarkslengd á göngum: {STRING} @@ -1167,8 +1172,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Sjálfgefin sti STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :upphaf STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :miðju STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :enda -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Bifreiðir bíða í röð (með skömmtunaráhrifum): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Bílar verða að bíða fyrir aftan vegahindranir þar til þær hafa verið fjarlægðar STR_CONFIG_SETTING_AUTOSCROLL :Færa sjónarhorn þegar músin nálgast brún gluggans: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ef þessi stilling er virk þá færist landslagið til hliðar ef músin er við jaðra gluggans STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Óvirkt @@ -1199,10 +1202,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leyfa stoppist STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Leyfa byggingu stoppistöðvar sem keyrt er í gegnum, á vegum í eigu bæja STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Leyfa stoppistöðvar sem keyrt er í gegnum, á vegum í eigu samkeppnisaðila: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Leyfa byggingu stoppistöðva sem keyrt er í gegnum, á vegum í eigu samkeppnisaðila -STR_CONFIG_SETTING_ADJACENT_STATIONS :Heimila sambyggingu stöðva: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Leyfa ólíkum stöðvum að snerta hvor aðra -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Virkja mörg NewGRF vélasöfn: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Samhæfni kostur fyrir gamla NewGRF. Ekki slökkva á þessu, nema þú vitir nákvæmlega hvað þú ert að gera! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ekki er hægt að breyta þessari stillingu þegar til eru farartæki STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Viðhald á innviðum: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ef þessi stilling er virk kostar að reka innviði fyrirtækisins. Kostnaður eykst í auknu hlutfalli við stærð fyrirtækisins, því eru áhrifin meiri á stór fyrirtæki en lítil @@ -1260,8 +1259,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Snúningur hæ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Rangsælis STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Réttsælis STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Hæð jafnslétts lands yfir sjávarmáli: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Leyfa landslagsbreytingar á jöðrum korts: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ef þessi stilling er óvirk eru jaðrar kortsins alltaf sjór STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Einn eða fleiri reitir við norðurjaðarinn eru ekki tómir STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Einn eða fleiri reitir við eina hlið kortsins hafa ekki vatn @@ -1312,17 +1309,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrun með hægri músarhnappi: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Virkja að hægt sé að færa sjónarhornið með því að færa það með vinstri músar takkanum. Þetta er sérstaklega gott þegar notast er við snerti-skjá til að færa sjónarhornið + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nota dagsetningar á {STRING} formi fyrir vistaða leiki. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Snið á dagsetningu í nöfnum á vistuðum leikjum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :löngu (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :stuttu (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Sjálfgefið litaspjald fyrir NewGRF sem tilgreina ekki litaspjald: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Sjálfgefið litaspjald til að nota með NewGRF sem skilgreina ekki hvaða litaspjald það notar -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS litaspjald -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows litaspjald - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Setja leik á bið þegar nýr leikur er hafinn: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ef þessi stilling er virk mun leikurinn fara sjálfvirkt á bið þegar nýr leikur hefst. Það gefur færi á að skoða kortið betur STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Þegar leikurinn er á bið skal leyfa: {STRING} @@ -1544,8 +1537,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 af {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Enginn STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Upphaflegur margfaldari bogarstærðar: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Meðalstærð borga miðað við bæi, við upphaf leiks -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjarlægja fráleita vegahluti þegar vegagerð stendur yfir: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Þegar bæir hafa verið styrktir til að endurnýja vegina sýna á þá að fjarlægja ónotaða vegenda @@ -1554,25 +1545,15 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Þegar bæir ha -STR_CONFIG_SETTING_GUI :{ORANGE}Viðmót -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Bygging +STR_CONFIG_SETTING_SOUND :{ORANGE}Hljóð +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Viðmót +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Bygging STR_CONFIG_SETTING_VEHICLES :{ORANGE}Farartæki -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stöðvar -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Efnahagur +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Leiðarvísun farartækja +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bæir +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Iðnaður STR_CONFIG_SETTING_AI :{ORANGE}Mótherji -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Skjá-valmöguleikar -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Viðmót -STR_CONFIG_SETTING_SOUND :{ORANGE}Hljóð -STR_CONFIG_SETTING_NEWS :{ORANGE}Fréttir og skilaboð -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Umferðarmerki -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Meðhöndlun farms STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gervigreind -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Sjálfvirk endurnýjun -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Viðhald farartækja -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Leiðarvísun farartækja -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Lestir -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bæir -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Iðnaður STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunalegt STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1621,7 +1602,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}Fjölspi STR_INTRO_GAME_OPTIONS :{BLACK}Stillingar STR_INTRO_HIGHSCORE :{BLACK}Stigatafla -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ítarlegar stillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Stillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Ná í viðbætur af netinu STR_INTRO_SCRIPT_SETTINGS :{BLACK}GG/forskriftar stillingar @@ -1641,7 +1621,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Leikfang STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Stilla OpenTTD STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Birta stigatöflu -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Birta ítarlegar stillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Sýna NewGRF stillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Skoða viðbætur sem hægt er að ná í af netinu STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Birta stillingar fyrir gervigreind/forskrift @@ -1729,6 +1708,7 @@ STR_LIVERY_FREIGHT_TRAM :Farmsporvagn STR_FACE_CAPTION :{WHITE}Andlitsval STR_FACE_CANCEL_TOOLTIP :{BLACK}Hætta við andlitsval STR_FACE_OK_TOOLTIP :{BLACK}Samþykkja andlitsval +STR_FACE_RANDOM :{BLACK}Nýtt raðnúmer STR_FACE_MALE_BUTTON :{BLACK}Karlmaður STR_FACE_MALE_TOOLTIP :{BLACK}Velja karlmannsandlit @@ -1962,6 +1942,7 @@ STR_NETWORK_CLIENT :Notandi STR_NETWORK_SPECTATORS :Áhorfendur STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sláðu inn peningaupphæð sem þú vilt láta af hendi rakna +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Áhorfandi # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ekki vista innslegið lykilorð @@ -2555,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-2013 OpenTTD hópurinn +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 OpenTTD hópurinn # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik @@ -2592,10 +2573,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Fjöldi STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hæð snjólínu: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Hækka snjólínu upp um eitt þrep STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lækka snjólínu niður um eitt þrep -STR_MAPGEN_RANDOM_SEED :{BLACK}Raðnúmer lands: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Smelltu til að skrifa inn raðnúmer -STR_MAPGEN_RANDOM :{BLACK}Nýtt raðnúmer -STR_MAPGEN_RANDOM_HELP :{BLACK}Fá tilviljanakennt raðnúmer fyrir myndun lands STR_MAPGEN_LAND_GENERATOR :{BLACK}Landmyndun: STR_MAPGEN_TREE_PLACER :{BLACK}Planta trjám: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Gerð lands: @@ -2622,7 +2599,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nafn hæ STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stærð: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Sláðu inn slembistofn STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Breyta hæð snjólínu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Breyta upphafsári @@ -2701,6 +2677,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Viðeigand STR_NEWGRF_SETTINGS_DISABLED :{RED}Óvirkt STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ósamhæft við þessa útgáfu af OpenTTD +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Breyta NewGRF stillingum STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Loka @@ -2731,7 +2709,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Fyrri hr STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fara á fyrri venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftast í listen þegar upphafi er náð. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Framsetning á valinni hreyfimynd. Samstillingu er sleppt við teikningu á þessari hreyfimynd. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Færðu hreyfimyndina, breytir X og Y hliðrun -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X hliðrun: {NUM}, Y hliðrun: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Veldu hreyfimynd STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Veldu hreyfimynd hvaðan sem er af skjánum @@ -2802,6 +2779,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} af STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanna NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanna NewGRF. Tíminn fer eftir fjölda... @@ -2895,7 +2874,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Upplýsingar STR_GOAL_QUESTION_CAPTION_WARNING :Varúð STR_GOAL_QUESTION_CAPTION_ERROR :Villa -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Hætta við STR_GOAL_QUESTION_BUTTON_OK :Í lagi STR_GOAL_QUESTION_BUTTON_NO :Nei @@ -2914,6 +2893,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Byrja aftur STR_GOAL_QUESTION_BUTTON_POSTPONE :Fresta STR_GOAL_QUESTION_BUTTON_SURRENDER :Gefast upp STR_GOAL_QUESTION_BUTTON_CLOSE :Loka +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Samstarfssamningar @@ -2939,7 +2919,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Enginn f # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Bíður: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} frá {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} frátekin fyrir hleðslu) @@ -3167,6 +3146,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Eyða v STR_GROUP_RENAME_TOOLTIP :{BLACK}Endurnefna valinn hóp STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Smelltu til að halda þessum hóp frá sjálfvirkri uppfærslu + STR_GROUP_ADD_SHARED_VEHICLE :Bæta við deildu farartæki STR_GROUP_REMOVE_ALL_VEHICLES :Fjarlægja öll farartæki @@ -3229,6 +3209,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Endurnef STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Endurnefna skipategund STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Endurnefna tegund flugvélar + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Endurskíra lestargerð STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Endurnefna tegund bifreiðar STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Endurnefna skipategund @@ -3333,6 +3316,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Bifreið STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Flugvél + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Veldu vagntegund til að skipta út STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velja vagntegund sem þú myndir vilja nota í staðin fyrir vagntegundina sem valinn er vinstra megin @@ -3975,6 +3959,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skó STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... er aðeins hægt að byggja fyrir ofan snælínu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... er aðeins hægt að byggja fyrir neðan snælínu + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Get ekki byggt lestarstöð hér... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Get ekki byggt strætóstoppistöð... @@ -4192,6 +4177,8 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Get ekki STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... ökutæki er eyðilagt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Engin farartæki verða í boði +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Breyta NewGRF stillingunum þínum # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Get ekki látið lest fara framhjá hættumerki... @@ -4367,7 +4354,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dísel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dísel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Gufu) @@ -4576,7 +4563,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Fa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Farþegaferja STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Farmskip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Farmskip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Farmskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Farmskip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Farmskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4704,8 +4691,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4716,9 +4701,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index cc6db1540d..6a1a669d81 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -29,7 +29,7 @@ STR_JUST_NOTHING :Tidak ada STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Penumpang STR_CARGO_PLURAL_COAL :Batubara -STR_CARGO_PLURAL_MAIL :Barang Pos +STR_CARGO_PLURAL_MAIL :Surat STR_CARGO_PLURAL_OIL :Minyak STR_CARGO_PLURAL_LIVESTOCK :Ternak STR_CARGO_PLURAL_GOODS :Barang Jadi @@ -63,7 +63,7 @@ STR_CARGO_PLURAL_FIZZY_DRINKS :Minuman Berdesi STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Penumpang STR_CARGO_SINGULAR_COAL :Batubara -STR_CARGO_SINGULAR_MAIL :Barang Pos +STR_CARGO_SINGULAR_MAIL :Surat STR_CARGO_SINGULAR_OIL :Minyak STR_CARGO_SINGULAR_LIVESTOCK :Ternak STR_CARGO_SINGULAR_GOODS :Barang Jadi @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Minuman Berdesi # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} penumpang +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}penumpang STR_QUANTITY_COAL :{WEIGHT_LONG} batubara -STR_QUANTITY_MAIL :{COMMA} kantong barang pos +STR_QUANTITY_MAIL :{COMMA}{NBSP}kantong surat STR_QUANTITY_OIL :{VOLUME_LONG} minyak -STR_QUANTITY_LIVESTOCK :{COMMA} ekor ternak -STR_QUANTITY_GOODS :{COMMA} peti barang jadi +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}ekor ternak +STR_QUANTITY_GOODS :{COMMA}{NBSP}peti barang jadi STR_QUANTITY_GRAIN :{WEIGHT_LONG} gandum STR_QUANTITY_WOOD :{WEIGHT_LONG} kayu STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} bijih besi STR_QUANTITY_STEEL :{WEIGHT_LONG} baja -STR_QUANTITY_VALUABLES :{COMMA} kantong barang berharga +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}kantong barang berharga STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bijih tembaga STR_QUANTITY_MAIZE :{WEIGHT_LONG} jagung STR_QUANTITY_FRUIT :{WEIGHT_LONG} buah-buahan -STR_QUANTITY_DIAMONDS :{COMMA} kantong intan +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}kantong intan STR_QUANTITY_FOOD :{WEIGHT_LONG} makanan STR_QUANTITY_PAPER :{WEIGHT_LONG} kertas -STR_QUANTITY_GOLD :{COMMA} kantong emas +STR_QUANTITY_GOLD :{COMMA}{NBSP}kantong emas STR_QUANTITY_WATER :{VOLUME_LONG} air STR_QUANTITY_WHEAT :{WEIGHT_LONG} gandum STR_QUANTITY_RUBBER :{VOLUME_LONG} karet STR_QUANTITY_SUGAR :{WEIGHT_LONG} gula -STR_QUANTITY_TOYS :{COMMA} mainan -STR_QUANTITY_SWEETS :{COMMA} kantong manisan +STR_QUANTITY_TOYS :{COMMA}{NBSP}mainan +STR_QUANTITY_SWEETS :{COMMA}{NBSP}kantong manisan STR_QUANTITY_COLA :{VOLUME_LONG} kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} arum manis STR_QUANTITY_BUBBLES :{COMMA} gelembung @@ -132,7 +132,7 @@ STR_QUANTITY_N_A :N/A STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PN STR_ABBREV_COAL :{TINY_FONT}BB -STR_ABBREV_MAIL :{TINY_FONT}BP +STR_ABBREV_MAIL :{TINY_FONT}SR STR_ABBREV_OIL :{TINY_FONT}MY STR_ABBREV_LIVESTOCK :{TINY_FONT}TR STR_ABBREV_GOODS :{TINY_FONT}BR @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}TANP STR_ABBREV_ALL :{TINY_FONT}SMA # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} penumpang -STR_BAGS :{COMMA} kantong -STR_TONS :{COMMA} ton -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} unit -STR_CRATES :{COMMA} peti +STR_PASSENGERS :{COMMA}{NBSP}penumpang +STR_BAGS :{COMMA}{NBSP}kantong +STR_TONS :{COMMA}{NBSP}ton +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}unit +STR_CRATES :{COMMA}{NBSP}peti # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Biru tua @@ -191,12 +191,12 @@ STR_COLOUR_GREY :Abu-abu STR_COLOUR_WHITE :Putih # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mil/j -STR_UNITS_VELOCITY_METRIC :{COMMA} km/jam -STR_UNITS_VELOCITY_SI :{COMMA} meter/detik +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mil/j +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/jam +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}meter/detik -STR_UNITS_POWER_IMPERIAL :{COMMA}dk -STR_UNITS_POWER_METRIC :{COMMA}dk +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}dk +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}dk STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Batang G STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Batang Geser - Geser daftar ke kiri/kanan STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Runtuhkan bangunan, dll dalam area kotak. Ctrl untuk memilih secara diagonal. Shift untuk menampilkan perkiraan biaya +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Tampilkan yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Tampilkan yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Tampilkan yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Tampilkan yang tersembunyi + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Mengaktifkan tombol ini akan menampilkan juga kereta yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Mengaktifkan tombol ini akan menampilkan juga kendaraan yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Mengaktifkan tombol ini akan menampilkan juga kapal yang tersembunyi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mengaktifkan tombol ini akan menampilkan juga pesawat yang tersembunyi + # Query window STR_BUTTON_DEFAULT :{BLACK}Standar STR_BUTTON_CANCEL :{BLACK}Batal @@ -293,10 +304,10 @@ STR_SORT_BY_ENGINE_ID :IDMesin (klasik STR_SORT_BY_COST :Biaya STR_SORT_BY_POWER :Daya STR_SORT_BY_TRACTIVE_EFFORT :Gaya traksi -STR_SORT_BY_INTRO_DATE :Tanggal Peluncuran +STR_SORT_BY_INTRO_DATE :Tanggal perkenalan STR_SORT_BY_RUNNING_COST :Biaya Operasional -STR_SORT_BY_POWER_VS_RUNNING_COST :Daya/Biaya Ops. -STR_SORT_BY_CARGO_CAPACITY :Kapasitas kargo +STR_SORT_BY_POWER_VS_RUNNING_COST :Daya/Biaya operasional +STR_SORT_BY_CARGO_CAPACITY :Kapasitas muatan STR_SORT_BY_RANGE :Jangkauan STR_SORT_BY_POPULATION :Populasi STR_SORT_BY_RATING :Peringkat @@ -304,7 +315,7 @@ STR_SORT_BY_RATING :Peringkat # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Hentikan sementara permainan STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Percepat maju waktu permainan -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Pilihan +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsi STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Simpan, batalkan, keluar permainan STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Tampilkan peta, tambahan viewport atau daftar pengenal STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Tampilkan daftar kota @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Keluar ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Pengaturan permainan -STR_SETTINGS_MENU_CONFIG_SETTINGS :Pengaturan lanjutan +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Pengaturan STR_SETTINGS_MENU_SCRIPT_SETTINGS :Pengaturan AI / Skrip Permainan STR_SETTINGS_MENU_NEWGRF_SETTINGS :Pengaturan NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Pengaturan Transparansi @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hidup/Matikan k STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Menampilkan pewarnaan dari area kotor ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -758,14 +787,14 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Masyarakat bergembira . . .{}Kapal pertama tiba di {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Masyarakat bergembira . . .{}Pesawat pertama tiba di {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Kecelakaan Kereta!{}{COMMA} mati dalam ledakan setelah kecelakaan -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Terjadi Tabrakan Kendaraan!{}Seorang sopir meninggal dalam ledakan setelah ditabrak kereta +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Kecelakaan Kereta!{}{COMMA} tewas dalam ledakan setelah kecelakaan +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Terjadi Tabrakan Kendaraan!{}Seorang sopir tewas dalam ledakan setelah ditabrak kereta STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Terjadi Tabrakan Kendaraan!{}{COMMA} orang meninggal dalam ledakan setelah ditabrak kereta -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Kecelakaan Pesawat!{}{COMMA} orang mati dalam kebakaran di {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Kecelakaan Pesawat!{}Pesawat kehabisan bahan bakar, {COMMA}orang mati dalam lautan api! +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Kecelakaan Pesawat!{}{COMMA} orang tewas dalam kebakaran di {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Kecelakaan Pesawat!{}Pesawat kehabisan bahan bakar, {COMMA}orang tewas dalam lautan api! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Bencana Zeppelin di {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Kendaraan hancur pada kecelakaan 'UFO'! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Kendaraan hancur dalam kecelakaan 'UFO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Kilang minyak meledak didekat {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Pabrik hancur akibat hubungan pendek arus listik di dekat {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' mendarat di dekat {TOWN}! @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} sedang menunggu di galangan STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} sedang menunggu di hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Daftar perintah {VEHICLE} terlalu sedikit STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} memiliki perintah yang terabaikan STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} memiliki perintah ganda STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} memiliki perintah menuju stasiun yg salah -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} memiliki dalam perintahnya sebuah bandara berlandasan yang terlalu pendek STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} mulai menua STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} sudah sangat tua @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (G STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kendaraan jalan raya STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Pilih lajur yang dilalui bus/truk STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Berkendara di lajur kiri @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Simpan Otomatis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih selang waktu permainan otomatis disimpan +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Mati STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Setiap bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Setiap 3 bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Setiap 6 bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Setiap 12 bulan +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Bahasa STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pilih antar muka bahasa yang akan dipergunakan @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolusi STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pilih resolusi layar yang diinginkan STR_GAME_OPTIONS_RESOLUTION_OTHER :lainnya -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format tangkapan layar -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Pilih format hasil tangkapan layar +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Ukuran antarmuka +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Pilih ukuran elemen antarmuka yang akan digunakan + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Kali dua +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Kali empat STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set Grafik Dasar STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih grafik dasar yang digunakan @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih mu STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} berkas rusak STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informasi tambahan tentang musik dasar +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tidak bisa mendapatkan daftar resolusi layak STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus layar penuh gagal # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Sangat Datar STR_TERRAIN_TYPE_FLAT :Datar STR_TERRAIN_TYPE_HILLY :Berbukit STR_TERRAIN_TYPE_MOUNTAINOUS :Pegunungan +STR_TERRAIN_TYPE_ALPINIST :Pemanjat Gunung STR_CITY_APPROVAL_PERMISSIVE :Selalu boleh STR_CITY_APPROVAL_TOLERANT :Toleran @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Bermusuhan STR_WARNING_NO_SUITABLE_AI :{WHITE}Tidak terdapat pemain AI ...{}anda dapat mengunduh beberapa macam AI lewat "Cari Konten" -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Pengaturan lanjutan +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Pengaturan STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Penyaring kata: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Perluas semua STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Persempit semua @@ -1070,11 +1102,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Setting permain STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Setting perusahaan (disimpan dalam penyimpanan; hanya mempengaruhi permainan baru) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Setting perusahaan (disimpan dalam penyimpanan; hanya mempengaruhi permainan saat ini) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Perlihatkan: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Hambat daftar dibawah, hanya tampilkan aturan yang diubah -STR_CONFIG_SETTING_RESTRICT_BASIC :Pengaturan dasar -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pengaturan lanjut -STR_CONFIG_SETTING_RESTRICT_ALL :Pengaturan mahir / semua aturan +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Jenis: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Batasi daftar dibawah ini menggunakan filter yang telah ditetapkan +STR_CONFIG_SETTING_RESTRICT_BASIC :Pengaturan dasar (hanya pengaturan yang penting) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pengaturan lanjut (lebih banyak pengaturan) +STR_CONFIG_SETTING_RESTRICT_ALL :Pengaturan mahir (tampilkan semua, termasuk yang tak biasa) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Pengaturan dengan nilai berbeda dari nilai asli STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Pengaturan dengan nilai berbeda dari pengaturan permainan baru @@ -1085,6 +1118,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Pengaturan perm STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Pengaturan permainan (ikut tersimpan; hanya memiliki efek pada permainan aktif) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Pengaturan perusahaan (ikut tersimpan; hanya memiliki efek pada permainan baru) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Pengaturan perusahaan (ikut tersimpan; hanya memiliki efek pada perusahaan aktif) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Tampilkan semua pencarian berdasarkan pengaturan{}{SILVER}Kategori {BLACK}sampai {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Tampilkan semua hasil pencarian dengan pengaturan{}{SILVER}Jenis {BLACK}ke {WHITE} Semua jenis pengaturan +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Tampilkan semua hasil pencarian berdasarkan pengaturan{}{SILVER}Kategori {BLACK}sampai {WHITE}{STRING} {BLACK}dan {SILVER}Jenis {BLACK}sampai {WHITE}Semua jenis pengaturan +STR_CONFIG_SETTINGS_NONE :{WHITE}- Tidak ada - STR_CONFIG_SETTING_OFF :Tidak STR_CONFIG_SETTING_ON :Ya @@ -1121,12 +1158,13 @@ STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jika dinyalakan STR_CONFIG_SETTING_TRAIN_REVERSING :Melarang pemutaran kereta di stasiun: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Jika diaktifkan, kereta tidak akan berputar selain di stasiun ujung, termasuk jika ada jalan yang lebih pendek kalau berbalik STR_CONFIG_SETTING_DISASTERS :Bencana: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :mengaktifkan bencana yang mungkin memblok atau menghancurkan kendaraan atau infrastruktur +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Mengaktifkan bencana yang mungkin dapat menghalangi atau menghancurkan kendaraan / infrastruktur STR_CONFIG_SETTING_CITY_APPROVAL :Sikap pemerintah kota terhadap restrukturasi area: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Pilih seberapa banyak dampak kebisingan dan lingkungan oleh perusahaan terhadap peringkat kota karena pembangunan di daerah -STR_CONFIG_SETTING_BUILDONSLOPES :Ijinkan pembangunan di lereng dan pantai: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Jika diaktifkan, rel dan stasiun bisa dibangun diatas kebanyakan slop. Jika dimatikan, hanya bisa dibangun di slop yang mengikuti arah rel +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Tinggi peta maksimum: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Atur ketinggian pegunungan maksimum yang diijinkan untuk peta ini +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kamu tidak bisa mengubah ketinggian peta maksimum di angka itu. Setidaknya ada satu gunung di peta yang lebih tinggi STR_CONFIG_SETTING_AUTOSLOPE :Ijinkan pembentukan slop dibawah bangunan, rel, dsb. (otomatiskan): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ijinkan pembentukan tanah dibawah bangunan dan trek tanpa merusaknya STR_CONFIG_SETTING_CATCHMENT :Ijinkan ukuran jangkauan wilayah lebih realistik: {STRING} @@ -1151,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Kereta dan kapa STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Belokan 90 derajat terjadi ketika rel horizontal diikuti langsung oleh rel vertikal di ubin berikutnya, jadi membuatnya berputar balik di ujung ubin daripada memutar 45 derajat di kombinasi rel lain. Ini juga berlaku pada radius belokan kapal. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ijinkan menggabung stasiun meski tidak menempel: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Ijinkan penambahan bagian dari stasiun tanpa menyentuh bagian yang sudah ada. Perlu Ctrl+Klik ketika menambahkan bagian baru. -STR_CONFIG_SETTING_IMPROVEDLOAD :Gunakan algoritma pengangkutan terbaru : {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Jika diaktifkan, beberapa kendaraan di stasiun dimuat secara berurutan. Pemuatan kendaraan berikutnya hanya dimulai ketika ada kargo cukup menunggu untuk benar-benar mengisi kendaraan pertama -STR_CONFIG_SETTING_GRADUAL_LOADING :Angkut secara bertahap: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Muat kendaraan secara bertahap menggunakan jangka waktu spesifik kendaraan, bukan memuat dengan jangka waktu tetap berdasarkan jumlah kargo STR_CONFIG_SETTING_INFLATION :Inflasi: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Perbolehkan inflasi dalam ekonomi, dimana biaya naik sedikit lebih cepat daripada pembayaran -STR_CONFIG_SETTING_SELECTGOODS :Menerima kargo di suatu stasiun hanya jika dibutuhkan: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Hanya kirimkan kargo ke stasiun yang membutuhkan dari kendaraan. Ini mencegah peringkat jelek dari kargo yang tidak diterima di stasiun STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Panjang maksimum jembatan: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Panjang maksimum untuk membuat jembatan +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimum tinggi jembatan: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Tinggi maksimum untuk pembangunan jembatan STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Panjang maksimum terowongan: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Panjang maksimum untuk membangun terowongan STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metode pembangunan Industri primer : {STRING} @@ -1175,7 +1209,7 @@ STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalnya, sebu STR_CONFIG_SETTING_SIGNALSIDE :Tunjukan sinyal: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Pilih sisi rel yang akan diletakkan sinyal STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Di kiri -STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Di sisi pengemudi +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Di sisi mengemudi STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Di kanan STR_CONFIG_SETTING_SHOWFINANCES :Tampilkan laporan keuangan pada akhir tahun: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Jika diaktifkan, jendela keuangan akan ditampilkan setiap akhir tahun untuk lebih mudah memeriksa keadaan keuangan @@ -1186,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tempat kereta a STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :hampir selesai STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :tengah STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :jauh di belakang -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Kendaraan jalan raya mengantri (dengan efek kuantum): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Buat kendaraan menunggu didepan pemberhentian yang penuh sampai kosong STR_CONFIG_SETTING_AUTOSCROLL :Geser tampilan saat mouse ada di tepi: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ketika diaktifkan, viewport akan bergeser saat mouse berada pada tepi viewport STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Dimatikan @@ -1218,13 +1250,9 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ijinkan termina STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Membolehkan konstruksi halte di jalan kota STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Ijinkan terminal drive-thru pada jalan milik pesaing: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Membolehkan konstruksi halte di jalan yang dimiliki perusahaan lain -STR_CONFIG_SETTING_ADJACENT_STATIONS :Ijinkan membangun stasiun berdampingan: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Membolehkan stasiun berbeda untuk berhubungan satu sama lain -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktifkan beberapa pengaturan mesin NewGRF : {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Pilihan kompatibilitas untuk NewGRF lama. Jangan mematikan ini, sampai anda tahu apa yang anda lakukan! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Tidak diijinkan mengubah setting ini karena kendaraan sudah ada -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Perawaran Infrastruktur: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan, infrastruktur membutuhkan biaya perawatan. Biaya tumbuh secara proporsional dengan ukuran jaringan, lebih berefek pada perusahaan besar dari pada perusahaan kecil +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Pemeliharaan Infrastruktur: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan, infrastruktur membutuhkan biaya pemeliharaan. Biaya berkembang secara proporsional sesuai dengan ukuran jaringan, lebih berdampak pada perusahaan besar dari pada perusahaan kecil STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Bandara tidak kedaluarsa: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Menyalakan setelan ini membuat semua jenis bandara tetap ada selamanya sejak pendesainanya @@ -1260,27 +1288,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Tampilkan popul STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Ketebalan garis pada grafik: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Tebalnya garis pada grafis. Garis tipis akan mudah dibaca ,garis tipis juga lebih terlihat +STR_CONFIG_SETTING_LANDSCAPE :Bentang Darat: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Bentang darat akan menegaskan skenario bermain dasar dengan muatan berbeda dan kebutuhan pertumbuhan kota. Data NewGRF dan Game Script lain membolehkan lebih banyak pengaturan. STR_CONFIG_SETTING_LAND_GENERATOR :Pembangkit dataran: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Pembuat yang orisinil tergantung pada kelompok grafik yang dasar, dan membuat bentang darat yang tertentu. TerraGenesis adalah pembuat yang berbasis Perlin Noise, dengan pengaturan kuasa yang lebih spesifik STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Asli STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Jenis medan: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(hanya TerraGenesis) Kondisi pegunungan bentang darat +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Kepadatan industri: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Mengatur berapa banyak industri seharusnya diperbuat and tingkat yang harus dipertahankan selama permainan STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Jarak maksimal kilang minyak dari batas: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Kilang minyak hanya dibangun pada tepi peta atau pantai STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Tinggi garis salju: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Kekasaran daratan(hanya TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Mengatur ketinggian di mana salju akan muncul. Salju juga akan mempengaruhi pengembangan industri dan persyaratan untuk pertumbuhan kota +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Kekasaran daratan: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(hanya TerraGenesis) Memilih frekuensi bukit: Bentang darat rata punya bukit yang lebih sedikit dan lebih lebar. Bentang darat bergunung punya lebih banyak bukit, dan ini mungkin akan terlihat lebih membosankan STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sangat halus STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Halus STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Kasar STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sangat Kasar +STR_CONFIG_SETTING_VARIETY :Distribusi variasi: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(hanya TerraGenesis) Menentukan apakah bentang darat berisi area bergunung dan rata. Karena ini hanya akan mengakibatkan bentang darat yang lebih rata, pengaturan yang lain seharusnya ditetap 'bergunung' +STR_CONFIG_SETTING_RIVER_AMOUNT :Jumlahnya sungai: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Memilih berapa banyak sungai untuk membuat STR_CONFIG_SETTING_TREE_PLACER :Algoritma penempatan pepohonan: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Memilih distribusi pohon-pohon di bentang darat: 'Orisinil' menanam pohon-pohon tersebar rata-rata, 'Telah ditingkatkan' menanam pohon-pohon berkelompok-kelompok STR_CONFIG_SETTING_TREE_PLACER_NONE :Tidak ada STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Orisinil STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Telah ditingkatkan +STR_CONFIG_SETTING_ROAD_SIDE :Kendaraan jalan raya: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Memilih sisi mengemudi STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Perputaran peta Heightmap: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Melawan arah jam STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Searah jam STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Tinggi dataran pada peta skenario datar : {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Ijinkan pembentukan lansekap pada pinggir peta: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Jika dimatikan, batas peta selalu perairan STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Kotak pada ujung utara tidak kosong STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Kotak pada salah satu ujung peta bukanlah perairan @@ -1331,17 +1373,15 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Non-aktifkan STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Geser dgn klik-kiri: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktifkan penggeseran peta dengan menyeret menggunakan tombol kiri mouse. Hal ini sangat berguna apabila menggunakan layar sentuh. +STR_CONFIG_SETTING_AUTOSAVE :Simpan otomatis: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Memilih jarak waktu antara menyimpan data game + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gunakan format tanggal {STRING} untuk berkas simpanan STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format tanggal di nama berkas permainan tersimpan STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :panjang (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :pendek (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Palette standard digunakan untuk NewGRFs yang tidak punya setting: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Palet standar digunakan untuk NewGRF yang tidak menentukan yang mana itu perlu -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Selalu hentikan sementara permainan saat memulai : {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Jika diaktifkan, permainan akan berhenti sejenak secara otomatis ketika permainan baru dimulai, memungkinkan untuk lebih mempelajari peta STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Saat berhenti, ijinkan: {STRING} @@ -1487,7 +1527,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Saat menyeret, STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Setel jarak sinyal yang akan dibuat di rel sampai obyek lain (sinyal, belokan,dll), jika sinyal di seret STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kotak STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Saat menyeret, buat jarak antara sinyal: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Pilih letak penempatan sinyal saat membangun sinyal dengan Ctrl+klik. Jika dimatikan, sinyal ditempatkan di sekitar jembatan dan terowongan. Jika diaktifkan, sinyal akan ditempatkan disetiap rel ''N'', membuat penempatan sinyal di rel paralel lebih mudah +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Pilih perilaku penempatan sinyal ketika Ctrl + menyeret sinyal. Jika dinonaktifkan, sinyal ditempatkan di sekitar terowongan atau jembatan untuk menghindari membentang panjang tanpa sinyal. Jika diaktifkan, sinyal ditempatkan pada setiap ubin, sehingga penyelarasan sinyal pada trek paralel menjadilebih mudah. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Gunakan sinyal semaphore sebelum: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Setel tahun saat sinyal elektris digunakan untuk kereta. Sebelum tahun ini, sinyal non-elektris akan digunakan (fungsinya sama, tapi dengan penampilan berbeda) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktifkan antarmuka sinyal: {STRING} @@ -1515,7 +1555,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Perbolehkan kot STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Kota yang diperbolehkan untuk membangun perlintasan tingkat: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Mengaktifkan setelan ini akan memperbolehkan kota membuat perlintasan rel kereta STR_CONFIG_SETTING_NOISE_LEVEL :Ijinkan kota mengatur tingkat kebisingan bandara : {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Jika diaktifkan, pembuatan bandara di kota tergantung dari jarak,kebisingan bandara dan populasi kota. Jika dimatikan, di kota hanya boleh ada dua bandara +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Jika dimatikan, di setiap kota hanya boleh ada dua bandara. Jika diaktifkan, pembuatan bandara di kota dibatasi oleh batas kebisingan bandara, yang bergantung pada populasi kota, juga jarak dan ukuran bandara. STR_CONFIG_SETTING_TOWN_FOUNDING :Mendirikan kota pada permainan: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Mengaktifkan setting ini akan membolehkan pemain mendirikan kota dalam permainan STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Dilarang @@ -1563,8 +1603,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 dalam {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Tidak ada STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Faktor kali ukuran kota awal: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Ukuran rata-rata kota besar terhadap kota kecil saat permainan dimulai -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Buang elemen jalan yang aneh saat membangun: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Menghilangkan ujung jalan buntu saat rekonstruksi jalan STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Perbarui grafik distribusi setiap {STRING} hari STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Waktu diantara dua penghitungan linkgraph berurutan. Setiap penghitungan hanya menghitung satu komponen perencanaan dari grafik. Namun, angka yang diberikan untuk seting ini bukan berarti seluruh grafik akan diperbaharui dalam angka hari yang sama, hanya beberapa bagian. Semakin sedikit semakin banyak proses CPU yang diperlukan untuk menghitung. Semakin banyak semakin lama waktu sebelum cargo distribution dimulai pada rute baru. @@ -1575,10 +1613,10 @@ STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetris STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetris STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modus distribusi untuk penumpang: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simetris" berarti kira-kira jumlah penumpang yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah penumpang yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk penumpang. -STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus distribusi untuk barang pos: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simetris" berarti kira-kira jumlah barang pos yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah barang pos yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk barang pos. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus distribusi untuk surat: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simetris" berarti kira-kira jumlah surat yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah surat yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk surat. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modus distribusi untuk kelas kargo BERLAPIS BAJA: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Kelas kargo BERLAPIS BAJA mengandung barang berharga di temperata, intan di sub tropis atau emas di iklim sub arktik. NewGRFs mungkin mengubah itu. "simetris" berarti bahwa kira-kira sama jumlah kargo itu akan pergi dari stasiun A ke stasiun B sebagai dari B ke A. "asimetris" berarti sewenang-wenang jumlah kargo itu bisa pergi di kedua arah. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk kargo itu. Disarankan untuk diaturkan ini ke asimetris atau manual ketika bermain sub arktik, sebagai bank tidak mengirim emas apapun kembali ke tambang emas. Untuk temperata dan sub tropis anda juga bisah pilih simetris sebagian bank akan mengirim barang berharga kembali ke bank orisinil dari beberapa banyak barang berharga. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Kelas kargo BERLAPIS BAJA meliputi barang berharga pada iklim sedang, intan pada sub tropis atau emas pada iklim sub arktik. NewGRF mungkin mengubah itu. "simetris" berarti bahwa jumlah kargo kira-kira akan terkirim sama dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah kargo terkirim bisa berbeda pada kedua arah. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk kargo itu. Disarankan untuk memilih asimetris atau manual ketika bermain sub arktik, karena bank tidak mengirim emas kembali ke tambang emas. Untuk iklim tropis dan sub tropis anda juga bisah pilih simetris karena bank akan mengirim kembali beberapa barang berharga ke bank asalnya. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modus distribusi untuk kelas kargo yang lain: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simetris" berarti bahwa kira-kira sama jumlah kargo akan pergi dari stasiun A ke stasiun B sebagai dari B ke A. "asimetris" berarti sewenang-wenang jumlah kargo bisa pergi di kedua arah. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk kargo. Anda mungkin mau mengaturkan ini untuk "asimetris" atau manual. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Ketepatan distribusi: {STRING} @@ -1587,7 +1625,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Efek jarak kepa STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jika anda mengatur nilai lebih tinggi daripada 0, jarak antara stasiun asal A untuk sebagian kargo dan tujuan mungkin B akan dapat efek untuk jumlah kargo dikirim dari A ke B. Semakin jauh B dari A semakin kurang kargo akan dikirim. Semakin tinggi anda mengatur itu, semakin kurang kargo akan dikirim ke stasiun jauh dan semakin banyak kargo akan dikirim ke stasiun dekat. STR_CONFIG_SETTING_DEMAND_SIZE :Jumlah kargo yang akan kembali untuk modus simetris: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Mengaturkan ini kurang dari 100% membuat distribusi simetris bertindak lebih seperti yang asimetris. Lebih kurang kargo akan di paksa dikirim kembali jika jumlah tertentu dikirim ke stasiun. Jika anda mengatur itu ke 0% distribusi simetris bertindak seperti yang asimetris. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Penuhnya lintasan pendek sebelum menggunakan lintasan besar: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Penjenuhan lintasan pendek sebelum menggunakan lintasan besar: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Biasanya terdapat banyak lintasan antara dua stasiun. Cargodist akan mengisi hingga penuh lintasan yang paling pendek terlebih dahulu, kemudian memenuhkan lintasan terpendek berikutnya dan seterusnya. Penuhnya suatu lintasan akan ditentukan mengikuti perkiraan kapasitas dan penggunaan terencana. Jika semua lintasan sudah penuh, sementara masih ada permintaan, Cargodist akan membebankannya kepada sebarang lintasan, terutama lintasan-lintasan berkapasitas besar. Walau demikian, sering kali algoritma tidak akan memperkirakan kapasitas dengan akurat. Setting ini memungkinkanmu untuk menentukan prosentase maksimum isian sebuah lintasan sebelum mengisi lintasan berikutnya. Aturlah nilainya di bawah 100% untuk menghindarkan stasiun dari kelebihan pengunjung manakala ada kesalahan perkiraan kapasitas. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Satuan kecepatan: {STRING} @@ -1626,27 +1664,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Antaramuka STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisasi -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksi +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik +STR_CONFIG_SETTING_SOUND :{ORANGE}Efek suara +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Antaramuka +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Umum +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Jendela +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksi +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Berita / Penasihat +STR_CONFIG_SETTING_COMPANY :{ORANGE}Perusahaan +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Akuntansi STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kendaraan -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasiun -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomi -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribusi Kargo +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pengarahan +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Keterbatasan +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Bencana / Kecelakaan +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Pembuatan Bentang Darat +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Linkungan Dunia +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Berwenang +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Kota +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industri +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribusi Kargo STR_CONFIG_SETTING_AI :{ORANGE}Pesaing -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Tampilkan Pilihan -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaksi -STR_CONFIG_SETTING_SOUND :{ORANGE}Efek suara -STR_CONFIG_SETTING_NEWS :{ORANGE}Berita dan pesan -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinyal -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Penanganan Kargo STR_CONFIG_SETTING_AI_NPC :{ORANGE}Pemain Komputer -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Perbaruan Otomatis -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Perbaikan -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pengarahan -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Kereta -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Kota -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industri STR_CONFIG_SETTING_PATHFINDER_OPF :Asli STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Bermain STR_INTRO_GAME_OPTIONS :{BLACK}Pengaturan Permainan STR_INTRO_HIGHSCORE :{BLACK}Tabel nilai tertinggi -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Pengaturan lanjutan +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Pengaturan STR_INTRO_NEWGRF_SETTINGS :{BLACK}Pengaturan NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Cari konten STR_INTRO_SCRIPT_SETTINGS :{BLACK}Pengaturan AI / Permainan @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Pilih ga STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Tampilkan opsi permainan STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Tampilkan tabel nilai tertinggi -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Tampilkan Pengaturan lanjutan +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Tampilkan pengaturan STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Tampilkan setelan NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Cari konten baru dan pembaruan untuk diunduh STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Tampilkan pengaturan permainan dan AI @@ -1755,7 +1795,9 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Bermain STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Buldozer ajaib (hancurkan industri, objek tidak bergerak): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Terowongan boleh menerobos terowongan lain: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Pesawat tak akan (sering) celaka di bandara kecil: {ORANGE} {STRING} -STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Lanskap 'Temperata' +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Ubah ketinggian peta maksimum: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Ubah ketinggian maksimum gunung di peta +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Lanskap 'Sedang' STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Lansekap 'Sub Arktik' STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Lansekap 'Sub Tropis' STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Lansekap 'Taman Bermain' @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Trem Barang STR_FACE_CAPTION :{WHITE}Pilihan Wajah STR_FACE_CANCEL_TOOLTIP :{BLACK}Batalkan pemilihan wajah baru STR_FACE_OK_TOOLTIP :{BLACK}Terima pilihan wajah baru +STR_FACE_RANDOM :{BLACK}Acak angka STR_FACE_MALE_BUTTON :{BLACK}Pria STR_FACE_MALE_TOOLTIP :{BLACK}Pilih wajah pria @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :Klien STR_NETWORK_SPECTATORS :Penonton STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Masukkan jumlah uang yang akan diberikan +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Pengamat # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata sandi yang telah dimasukkan @@ -2271,7 +2315,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bangun r STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bangun depo (untuk pembelian dan perbaikan kereta). Shift untuk menampilkan perkiraan biaya STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ubah rel menjadi waypoint. Ctrl untuk mengaktifkan penggabungan waypoint. Shift untuk menampilkan perkiraan biaya STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bangun stasiun kereta. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Membangun sinyal kereta. Ctrl - berganti sinyal bendera-lampu. Drag - membuat sinyal sepanjang rel. Shift untuk menampilkan perkiraan biaya +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Membuat sinyal kereta. Ctrl - berganti sinyal bendera/lampu{}Drag - membuat sinyal sesuai arah sepanjang rel. Ctrl - membuat sinyal sampai persimpangan/sinyal berikutnya{}Ctrl+Klik - mengubah pemilihan sinyal di jendela. Shift - untuk menampilkan perkiraan biaya STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Membangun Jembatan kereta. Shift untuk menampilkan perkiraan biaya STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Membangun terowongan kereta. Shift untuk menampilkan perkiraan biaya STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Membangun/bongkar rel kereta, sinyal, waypoint, dan stasiun. Tekan Ctrl juga dapat membongkar rel pada waypoint dan stasiun @@ -2304,7 +2348,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Membangu STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pilih kelas stasiun yang akan ditampilkan STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pilih jenis stasiun yang akan dibangun -STR_STATION_CLASS_DFLT :Stasiun asli/"default" +STR_STATION_CLASS_DFLT :Stasiun standar STR_STATION_CLASS_WAYP :Waypoint # Signal window @@ -2344,7 +2388,7 @@ STR_BRIDGE_TUBULAR_SILICON :Pipa, Silikon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalan -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalan Trem +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalur Trem STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bangun bagian jalan. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalan. Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bangun jalur trem. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalur trem. Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bangun jalan menggunakan mode Autoroad. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalan. Shift untuk menampilkan perkiraan biaya @@ -2352,7 +2396,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bangun j STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bangun bengkel (untuk pembelian dan perbaikan kendaraan). Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bangun bengkel (untuk pembelian dan perbaikan trem). Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bangun terminal bus. Ctrl untuk mengaktifkan penggabungan terminal. Shift untuk menampilkan perkiraan biaya -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bangun stasion trem penumpang. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bangun halte trem penumpang. Ctrl untuk mengaktifkan penggabungan halte. Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bangun terminal bongkar muat. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bangun stasiun trem. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktif/Non Aktifkan jalan satu arah @@ -2370,12 +2414,12 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Arah ben STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tentukan arah bengkel trem menghadap # Road vehicle station construction window -STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientasi stasiun Bus +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientasi Terminal Bus STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Pilih arah terminal bus STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientasi stasiun truk STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Pilih arah terminal bongkar muat truk -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientasi stasiun trem penumpang -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah stasiun trem penumpang +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientasi halte trem penumpang +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah halte trem penumpang STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Arah stasiun trem angkutan barang STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah stasiun trem angkutan barang @@ -2546,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Muatan diterima: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Batasan kecepatan rel: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Batasan kecepatan jalan: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Bebatuan @@ -2642,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-2013 Tim OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Tim OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Simpan STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Simpan permainan saat ini, gunakan nama yang terpilih STR_SAVELOAD_LOAD_BUTTON :{BLACK}Muat STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Membuka permainan yang telah dipilih +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Muat heightmap yang dipilih STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Rincian Permainan STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Tidak ada informasi yang tersedia STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2669,20 +2715,19 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_OSKTITLE :{BLACK}Masukkan nama dari permainan tersimpan # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Pembuatan peta +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Pembuatan Bentang Darat STR_MAPGEN_MAPSIZE :{BLACK}Ukuran Peta: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Pilih ukuran peta dalam petak. Jumlah dari petak yang tersedia akan sedikit lebih kecil STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Jumlah Kota: STR_MAPGEN_DATE :{BLACK}Tgl: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Jumlah industri: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Ketinggian peta maksimum: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Naikkan satu ketinggian maksimum gunung di peta +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Turunkan satu ketinggian maksimum gunung di peta STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Tinggi garis salju: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Naikkan ketinggian garis salju satu angka STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Turunkan ketinggian garis salju satu angka -STR_MAPGEN_RANDOM_SEED :{BLACK}Angka masukkan: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik untuk mengisi umpan angka acak -STR_MAPGEN_RANDOM :{BLACK}Acak angka -STR_MAPGEN_RANDOM_HELP :{BLACK}Ganti angka umpan pengacakan untuk menghasilkan pulau STR_MAPGEN_LAND_GENERATOR :{BLACK}Algoritma pulau: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritma pohon: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Jenis dataran: @@ -2709,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nama Pet STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Luas: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Masukkan angka umpan pengacakan +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Ubah ketinggian peta maksimal STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ubah ketinggian garis salju STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ganti Tahun Permulaan @@ -2727,11 +2772,11 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Ubah ket # Map generation progress STR_GENERATION_WORLD :{WHITE}Membuat Peta ... STR_GENERATION_ABORT :{BLACK}Batalkan -STR_GENERATION_ABORT_CAPTION :{WHITE}Membatalkan Pembuatan Peta +STR_GENERATION_ABORT_CAPTION :{WHITE}Membatalkan Pembuatan Bentang Darat STR_GENERATION_ABORT_MESSAGE :{YELLOW}Apakah anda ingin membatalkan pembuatan? STR_GENERATION_PROGRESS :{WHITE}{NUM}% selesai STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}Membuat dunia +STR_GENERATION_WORLD_GENERATION :{BLACK}Pembuatan Bentang Darat STR_GENERATION_RIVER_GENERATION :{BLACK}Pembuatan Sungai STR_GENERATION_TREE_GENERATION :{BLACK}Membuat pepohonan STR_GENERATION_OBJECT_GENERATION :{BLACK}Membuat objek tak bergerak @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Keatas STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Pindahkan berkas NewGRF yang terpilih kebagian atas daftar STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Kebawah STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Pindahkan berkas NewGRF yang terpilih kebagian bawah daftar +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Memperbarukan +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Menatar data NewGRF bagi data yang sudah diperbarui STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Daftar file NewGRF yang terinstal STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Atur parameter @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Berkas yan STR_NEWGRF_SETTINGS_DISABLED :{RED}Non-aktifkan STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Tidak kompatibel dengan versi OpenTTD ini +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Menyimpan pengaturan +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Daftar pengaturan yang tersedia, memilih salah satu untuk menyalin kepada nama penyimpanan di bawah +STR_SAVE_PRESET_TITLE :{BLACK}Memasukkan nama untuk pengaturan +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nama yang sedang dipilih bagi penyimpanan pengaturan +STR_SAVE_PRESET_CANCEL :{BLACK}Batal +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Jangan mengubah pengaturan awal +STR_SAVE_PRESET_SAVE :{BLACK}Menyimpan +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Menyimpan presetnya pada nama yang sedang dipilih + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ubah parameter NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tutup @@ -2818,7 +2875,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lanjutkan ke sprite normal sebelumnya, lewati sembarang sprite bayangan/warna ulang/huruf dan pembungkus saat mulai STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Mewakili sprite yang sedang dipilih. Penjajaran diabaikan ketika sprite ini digambar STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pindahkan sprite, mengubah offset X dan Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih sebuah sprite di manapun pada layar @@ -2875,6 +2931,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Berkas hil STR_NEWGRF_BROKEN :{WHITE}Biasanya NewGRF '{0:STRING}' dapat menyebabkan de-sinkron dan atau crash STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ini akan mengubah keadaan gerbong listrik '{1:ENGINE}' saat tidak berada di depo STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ini akan mengubah panjang kereta sebanyak '{1:ENGINE}' ketika tidak berada di dalam depo +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Mengubah kapasitas kendaraan '{1:ENGINE}' ketika tidak di dalam depot atau reparasi STR_BROKEN_VEHICLE_LENGTH :{WHITE}Kereta '{VEHICLE}' milik '{COMPANY}' memiliki ukuran yang tidak sesuai. Hal ini mungkin disebabkan oleh masalah dengan NewGRF. Permainan mungkin akan rusak atau macet STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' memberikan informasi yang salah @@ -2889,6 +2946,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} dari STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Memindai NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Memindai berkas NewGRF. Lamanya waktu tergantung dari jumlah berkas... @@ -2919,7 +2979,7 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi: {ORANGE}{COMMA}{BLACK} Rumah: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Penumpang bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} -STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Dokumen bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Surat bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo untuk pertumbuhan kota: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} Butuh {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} dibutuhkan saat musim dingin @@ -2987,7 +3047,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informasi STR_GOAL_QUESTION_CAPTION_WARNING :Peringatan STR_GOAL_QUESTION_CAPTION_ERROR :Kesalahan -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Batal STR_GOAL_QUESTION_BUTTON_OK :Oke STR_GOAL_QUESTION_BUTTON_NO :Tidak @@ -3006,6 +3066,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :Tunda STR_GOAL_QUESTION_BUTTON_SURRENDER :Menyerah STR_GOAL_QUESTION_BUTTON_CLOSE :Tutup +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidi @@ -3026,6 +3087,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Sebelumn STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Menuju ke halaman sebelumnya STR_STORY_BOOK_NEXT_PAGE :{BLACK}Berikutnya STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Menuju ke halaman berikutnya +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referensi sasaran yang tidak berlaku # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nama-nama stasiun - klik pada nama untuk mengarahkan pandangan utama pada stasiun. Ctrl+Click akan membuka viewport baru pada lokasi stasiun @@ -3040,7 +3102,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Tidak ad # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Menunggu: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} dari {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} direservasi untuk memuat) @@ -3067,7 +3128,7 @@ STR_STATION_VIEW_VIA :{YELLOW}{CARGO_ STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} ke {STATION} STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} dari stasiun tidak diketahui STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} ke stasiun manapun -STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} melewati sebarang stasiun +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} melalui stasiun apapun STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} dari stasiun ini STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} berhenti pada stasiun ini STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} ke stasiun ini @@ -3123,7 +3184,7 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Biaya Ops STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Biaya Operasional Kendaraan STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Biaya Ops. Pesawat STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Biaya Ops. Kapal Laut -STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Perawatan Properti +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Pemeliharaan Properti STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Pendapatan Kereta STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Pendapatan Kendaraan STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Pendapatan Pesawat @@ -3287,9 +3348,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Pesawat tanpa k STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Kelompok - Klik salah satu untuk melihat daftar kendaraan pada kelompok tersebut STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik untuk membuat kelompok STR_GROUP_DELETE_TOOLTIP :{BLACK}Hapus kelompok terpilih -STR_GROUP_RENAME_TOOLTIP :{BLACK}Ubah Nama kelompok terpilih +STR_GROUP_RENAME_TOOLTIP :{BLACK}Ubah nama kelompok terpilih STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik untuk memproteksi kelompok ini dari perintah penggantian otomatis +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Hapus Kelompok +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Apakah anda yakin untuk menghapus kelompok ini dan turunannya ? + STR_GROUP_ADD_SHARED_VEHICLE :Tambah kendaraan dgn perintah bersama STR_GROUP_REMOVE_ALL_VEHICLES :Jual semua @@ -3352,6 +3416,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Ganti na STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Ubah nama jenis kapal STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Ubah nama jenis pesawat +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyikan +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyikan +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyikan +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyikan + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Tampilkan +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Tampilkan +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Tampilkan +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Tampilkan + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menampilkan/Sembunyikan jenis kendaraan kereta +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menampilkan/Sembunyikan jenis kendaraan bus/truk +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menampilkan/Sembunyikan jenis kendaraan kapal +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menampilkan/Sembunyikan jenis kendaraan pesawat + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Ubah nama jenis kereta STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Ganti nama jenis kendaraan STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Ubah nama jenis kapal @@ -3405,7 +3484,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Gandakan STR_DEPOT_CLONE_SHIP :{BLACK}Gandakan STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Gandakan -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ini akan membeli satu unit kereta yang sama termasuk gerbongnya. Klik tombol ini lalu klik kereta yang ingin digandakan baik didalam maupun diluar depo. Ctrl+Click untuk berbagi perintah. Shift untuk menampilkan perkiraan biaya +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ini akan menggandakan kereta yang sama termasuk gerbongnya. Klik tombol ini lalu klik kereta yang ingin digandakan baik didalam maupun diluar depo. Ctrl+Klik untuk berbagi perintah. Shift+Klik untuk menampilkan perkiraan biaya tanpa membelinya STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ini akan membeli satu unit kendaraan yang sama. Klik tombol ini lalu klik kendaraan yang ingin digandakan, baik didalam maupun diluar bengkel.Ctrl+Click untuk berbagi perintah. Shift untuk menampilkan perkiraan biaya tanpa membeli STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ini akan membeli satu unit kapal yang sama . Klik tombol ini dan kemudian pada satu kapal di dalam atau diluar galangan. Ctrl+Click untuk berbagi perintah. Shift untuk menampilkan perkiraan biaya STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ini akan membeli satu unit pesawat yang sama. Klik tombol ini dan kemudian pada satu pesawat didalam atau diluar hangar. Ctrl+Click untuk berbagi perintah. Shift untuk menampilkan perkiraan biaya @@ -3456,6 +3535,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Kendaraan Jalan STR_REPLACE_VEHICLE_SHIP :Kapal STR_REPLACE_VEHICLE_AIRCRAFT :Pesawat +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Kendaraan sedang digunakan +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolom berisi kendaraan yang kamu miliki +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Kendaraan tersedia +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolom berisi kendaraan yang tersedia untuk penggantian + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Pilih jenis kendaraan yang akan diganti STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Pilih jenis mesin yang ingin digunakan sebagai pengganti mesin terpilih di sisi kiri @@ -3569,7 +3653,7 @@ STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Kecepata 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} -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Keuntungan thn ini: {LTBLUE}{CURRENCY_LONG} (thn lalu: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Keuntungan tahun ini: {LTBLUE}{CURRENCY_LONG} (tahun lalu: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Reliabilitas: {LTBLUE}{COMMA}% {BLACK}Mogok sejak perbaikan terakhir : {LTBLUE}{COMMA} kali STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Dibuat: {LTBLUE}{NUM}{BLACK} Nilai: {LTBLUE}{CURRENCY_LONG} @@ -3810,6 +3894,10 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Perjalanan belu STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Bergerak dengan kecepatan maks. {2:VELOCITY} (not timetabled) STR_TIMETABLE_TRAVEL_FOR :Berjalan selama {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Bergerak {STRING} dengan maks. kecepatan {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Berjalan (untuk {STRING}, tidak berjadwal) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Berjalan (untuk {STRING}, tidak berjadwal) dengan {VELOCITY} maksimum +STR_TIMETABLE_STAY_FOR_ESTIMATED :(menetap untuk {STRING}, tidak berjadwal) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(perjalan untuk {STRING}, tidak berjadwal) STR_TIMETABLE_STAY_FOR :dan tinggal selama {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :dan berjalan selama {STRING} STR_TIMETABLE_DAYS :{COMMA} hari @@ -3939,6 +4027,8 @@ STR_AI_SETTINGS_START_DELAY :Jalankan AI set STR_TEXTFILE_README_CAPTION :{WHITE}keterangan {STRING} dari {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Catatan perubahan {STRING} dari {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Lisensi {STRING} dari {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Mengebatkan teks +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Mengebatkan teks dari jendela sehingga akan muat tanpa menggulir STR_TEXTFILE_VIEW_README :{BLACK}Lihat readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Catatan Perubahan STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisensi @@ -3991,7 +4081,7 @@ STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... disa STR_ERROR_PNGMAP :{WHITE}Tidak dapat memuat lansekap dari PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... berkas tidak ada STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... tak dapat mengkonversi. Diperlukan PNG 8 atau 24-bit -STR_ERROR_PNGMAP_MISC :{WHITE}... sepertinya ada yang salah. Maaf. (mungkin berkasnya rusak) +STR_ERROR_PNGMAP_MISC :{WHITE}... maaf, terjadi kesalahan (mungkin berkasnya rusak) STR_ERROR_BMPMAP :{WHITE}Tidak dapat memuat lansekap dari BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... tak dapat mengkonversi jenis gambar @@ -4049,6 +4139,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Penggali STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Telah sama dengan ketinggian laut STR_ERROR_TOO_HIGH :{WHITE}Terlalu tinggi STR_ERROR_ALREADY_LEVELLED :{WHITE}... sudah rata +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Jembatan diatas situ akan terlalu tinggi pada akhirnya. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Tidak dapat mengubah nama perusahaan @@ -4099,6 +4190,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... huta STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... hanya bisa dibangun diatas garis salju STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... hanya dapat dibangun di bawah batas salju +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Tidak ada tempat yang sesuai untuk industri '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Ubah pembuatan peta untuk memperoleh peta yang lebih baik + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Tidak dapat membangun stasiun kereta disini STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Tidak dapat membangun terminal bus... @@ -4127,16 +4221,16 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... term STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Tidak dapat menghapus bagian dari stasiun... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Harus menghapus stasiun dulu STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Tidak dapat membongkar terminal Bus... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Tidak dapat membongkar stasiun truk... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Tidak dapat membongkar stasiun bongkar-muat... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Tidak dapat membongkar halte trem... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Tidak dapat membongkar stasiun kargo trem... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Terminal harus di hancurkan dulu. STR_ERROR_THERE_IS_NO_STATION :{WHITE}...tidak ada stasiun di sini STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Harus menghancurkan jalur rel stasiun terlebih dahul -STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Harus menghancurkan stasiun bis terlebih dahulu +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Harus menghancurkan terminal bus terlebih dahulu STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Harus menghancurkan stasiun truk terlebih dahulu -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan terminal penumpang trem terlebih dahulu +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan halte penumpang trem terlebih dahulu STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan terminal kargo trem terlebih dahulu STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Harus menghancurkan pelabuhan terlebih dahulu STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Harus menghancurkan bandara terlebih dahulu @@ -4206,9 +4300,9 @@ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Tidak da STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Harus membongkar jalan terlebih dahulu STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... jalan satu arah tak bisa memiliki simpangan STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Tidak dapat membangun jalan disini... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Tidak dapat membangun jalan trem disini... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Tidak dapat membangun jalur trem disini... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Tidak dapat membongkar jalan di sini... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tidak dapat membongkar jalan trem disini... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tidak dapat membongkar jalur trem disini... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... tidak ada jalan STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... tidak ada jalur trem @@ -4235,6 +4329,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Harus me STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Tidak dapat awal dan akhir pada spot/titik lokasi yang sama STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Ujung jembatan tidak pada level yang sama STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Jembatan lebih rendah dari daratan +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Jembatan terlalu tinggi untuk medan ini. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Awal dan akhir harus segaris STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... kedua ujung jembatan harus berada di daratan STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... jembatan terlalu panjang @@ -4261,6 +4356,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... anda STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Tidak data membuat kelompok... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Tidak dapat menghapus kelompok ini... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Tidak dapat mengganti nama kelompok... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Tidak dapat menetapkan kelompok induk... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Tidak dapat memindahkan semua kendaraan dari kelompok ini... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Tidak dapat menambah Kendaraan dalam kelompok ini... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Tidak dapat menambah Kendaraan yang dapat dipakai bersama ke dalam grup... @@ -4495,7 +4591,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS '250' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Uap) @@ -4519,7 +4615,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Listri STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Listrik) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Listrik) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Gerbong Penumpang -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Gerbong Barang Pos +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Gerbong Surat STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Gerbong Batubara STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Gerbong Tangki Minyak STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Gerbong Ternak @@ -4549,7 +4645,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Listri STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Listrik) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Gerbong Penumpang -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Gerbong Dokumen +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Gerbong Surat STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Gerbong Batubara STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Gerbong Tangki Minyak STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Gerbong Ternak @@ -4581,7 +4677,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Listrik) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Gerbong Penumpang -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Gerbong Dokumen +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Gerbong Surat STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Gerbong Batubara STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Gerbong Tangki Minyak STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Gerbong Ternak @@ -4617,12 +4713,12 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Bus Ploddyphut STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Truk Batubara Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Truk Batubara Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Truk Batubara DW -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Truk Dokumen MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Truk Dokumen Reynard -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Truk Dokumen Perry -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Truk Dokumen MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Truk Dokumen Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Truk Dokumen Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Truk Pos MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Truk Pos Reynard +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Truk Pos Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Truk Pos MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Truk Pos Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Truk Pos Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Truk Tangki minyak Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Truk Tangki minyak Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Truk Tangki minyak Perry @@ -4704,7 +4800,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Ferry Penumpang STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Ferry Penumpang Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Kapal Kargo Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Kapal Kargo Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal Kargo MightyMover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal Barang MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Kapal Kargo Powernaught STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4798,6 +4894,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (tersembunyi) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4930,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4940,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 66afd92ea7..e839503f5b 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -95,37 +95,37 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Deoch Súilíne # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} paisinéir{P amháin "" í í ""} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}paisinéir{P amháin "" í í ""} STR_QUANTITY_COAL :{WEIGHT_LONG} guail -STR_QUANTITY_MAIL :{COMMA} mála{P "" "" "" "" ""} poist +STR_QUANTITY_MAIL :{COMMA}{NBSP}{P mh mh mh m m}ála poist STR_QUANTITY_OIL :{VOLUME_LONG} ola -STR_QUANTITY_LIVESTOCK :{COMMA} {P m mh m m m}ír{P "" "" "" "" ""} de bheo-stoc -STR_QUANTITY_GOODS :{COMMA} {P ch ch ch gc c}ráta{P "" "" "" "" ""} earraí +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}{P m mh m m m}ír de bheo-stoc +STR_QUANTITY_GOODS :{COMMA}{NBSP}{P ch ch ch gc c}ráta earraí STR_QUANTITY_GRAIN :{WEIGHT_LONG} arbhair STR_QUANTITY_WOOD :{WEIGHT_LONG} adhmaid STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} amhiarainn STR_QUANTITY_STEEL :{WEIGHT_LONG} de chruach -STR_QUANTITY_VALUABLES :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} d'earraí luachmhara +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}{P mh mh mh m m}ála d'earraí luachmhara STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de mhian chopair STR_QUANTITY_MAIZE :{WEIGHT_LONG} d'arbhar Indiach STR_QUANTITY_FRUIT :{WEIGHT_LONG} de thorthaí -STR_QUANTITY_DIAMONDS :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} de dhiamaint +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}{P mh mh mh m m}ála de dhiamaint STR_QUANTITY_FOOD :{WEIGHT_LONG} de bhia STR_QUANTITY_PAPER :{WEIGHT_LONG} de pháipéar -STR_QUANTITY_GOLD :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} d'ór +STR_QUANTITY_GOLD :{COMMA}{NBSP}{P mh mh mh m m}ála d'ór STR_QUANTITY_WATER :{VOLUME_LONG} d'uisce STR_QUANTITY_WHEAT :{WEIGHT_LONG} de chruinneacht STR_QUANTITY_RUBBER :{VOLUME_LONG} de rubar STR_QUANTITY_SUGAR :{WEIGHT_LONG} de shiúcra -STR_QUANTITY_TOYS :{COMMA} {P bh bh bh mb b}réagán -STR_QUANTITY_SWEETS :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} of sweets +STR_QUANTITY_TOYS :{COMMA}{NBSP}{P bh bh bh mb b}réagán +STR_QUANTITY_SWEETS :{COMMA}{NBSP}{P mh mh mh m m}ála de mhilseáin STR_QUANTITY_COLA :{VOLUME_LONG} de chóla STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} d'fhéasóg Daideo -STR_QUANTITY_BUBBLES :{COMMA} {P sh sh sh s s}súilín{P "" "" "" "" ""} +STR_QUANTITY_BUBBLES :{COMMA} {P sh sh sh s s}úilín STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de thaifí STR_QUANTITY_BATTERIES :{COMMA} {P ch ch ch gc c}eallra{P "" "" "" "" ""} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de phlaisteach -STR_QUANTITY_FIZZY_DRINKS :{COMMA} {P dh dh dh nd n}eoch súilíneach +STR_QUANTITY_FIZZY_DRINKS :{COMMA} {P dh dh dh nd d}eoch súilíneach STR_QUANTITY_N_A :N/B # Two letter abbreviation of cargo name @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}TD STR_ABBREV_ALL :{TINY_FONT}GACH # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} {P ph ph ph bp p}aisinéir -STR_BAGS :{COMMA} {P m mh m m m}álaí -STR_TONS :{COMMA} {P t th t dt t}ona -STR_LITERS :{COMMA} {P l l l l l}ítear -STR_ITEMS :{COMMA} {P m mh m m m}ír -STR_CRATES :{COMMA} {P ch ch ch gc c}ráta +STR_PASSENGERS :{COMMA}{NBSP}{P ph ph ph bp p}aisinéir +STR_BAGS :{COMMA}{NBSP}{P m mh m m m}álaí +STR_TONS :{COMMA}{NBSP}{P th th th dt t}ona +STR_LITERS :{COMMA}{NBSP}lítear +STR_ITEMS :{COMMA}{NBSP}{P m mh m m m}ír +STR_CRATES :{COMMA}{NBSP}{P ch ch ch gc c}ráta # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Gorm Dorcha @@ -191,35 +191,44 @@ STR_COLOUR_GREY :Liath STR_COLOUR_WHITE :Bán # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} m/u -STR_UNITS_VELOCITY_METRIC :{COMMA} km/u -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}m/u +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/u +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tona{P "" "" "" "" ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tona +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}{P "th" "th" "th" "dt" "th"}ona +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lítear{P "" "" "" "" ""} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galún +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}lítear +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} tr -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}tr +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Teaghrán scagtha: STR_LIST_FILTER_OSKTITLE :{BLACK}Iontráil teaghráin scagaire STR_LIST_FILTER_TOOLTIP :{BLACK}Iontráil eochairfhocal chun an liosta a scagadh di +STR_TOOLTIP_GROUP_ORDER :{BLACK}Roghnaigh an t-ord grúpála STR_TOOLTIP_SORT_ORDER :{BLACK}Roghnaigh ord sórtála (ardaitheach/íslitheach) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Roghnaigh critéir sórtála STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Roghnaigh critéir scagtha @@ -231,16 +240,28 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Dún an STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Teideal fuinneoige - tarraing é seo chun fuinneog a bhogadh STR_TOOLTIP_SHADE :{BLACK}Cuir fuinneog faoi scáth - ná taispeáin ach an barra teidil STR_TOOLTIP_DEBUG :{BLACK}Taispeáin faisnéis dífhabhtaithe NewGRF -STR_TOOLTIP_STICKY :{BLACK}Marcáil an fhuinneog seo mar cheann nach féidir a dhúnadh leis an eochair 'Dún gach fuinneog' +STR_TOOLTIP_DEFSIZE :{BLACK}Athraigh méid na fuinneoige chuig an méid réamhshocraithe. Ctrl+Cliceáil chun an méid reatha a stóráil mar réamhshocrú +STR_TOOLTIP_STICKY :{BLACK}Marcáil an fhuinneog seo mar cheann nach féidir a dhúnadh leis an eochair 'Dún gach fuinneog'. Ctrl+Cliceáil chun an staid a shábháil mar réamhshocrú freisin STR_TOOLTIP_RESIZE :{BLACK}Cliceáil agus tarraing chun méid na fuinneoige seo a athrú STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Scoránaigh méid fuinneoige mór/beag STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbharraí - déantar liosta a scrollú suas/síos STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbharraí - déantar liosta a scrollú ar dheis/ar chlé STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Leag foirgnimh msh. ar chearnóg talún +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Taispeáin cinn fholaithe +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Taispeáin cinn fholaithe +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Taispeáin cinn fholaithe +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Taispeáin cinn fholaithe + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ach an cnaipe seo a chumasú, taispeántar na feithiclí traenach folaithe freisin +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ach an cnaipe seo a chumasú, taispeántar na feithiclí bóthair folaithe freisin +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ach an cnaipe seo a chumasú, taispeántar na loing fholaithe freisin +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ach an cnaipe seo a chumasú, taispeántar na haerárthaigh folaithe freisin + # Query window STR_BUTTON_DEFAULT :{BLACK}Réamhshocrú -STR_BUTTON_CANCEL :{BLACK}Cealaigh +STR_BUTTON_CANCEL :{BLACK}Cuir ar ceal STR_BUTTON_OK :{BLACK}OK # On screen keyboard window @@ -275,6 +296,8 @@ STR_SORT_BY_LENGTH :Fad STR_SORT_BY_LIFE_TIME :Saolré fágtha STR_SORT_BY_TIMETABLE_DELAY :Moill san amchlár STR_SORT_BY_FACILITY :Cineál stáisiúin +STR_SORT_BY_WAITING_TOTAL :Lasta iomlán ag fanacht +STR_SORT_BY_WAITING_AVAILABLE :Lasta ar fáil atá ag fanacht STR_SORT_BY_RATING_MAX :Rátáil lastais is airde STR_SORT_BY_RATING_MIN :Rátáil lastais is ísle STR_SORT_BY_ENGINE_ID :ID an Innill (sórtáil chlaisiceach) @@ -283,10 +306,11 @@ STR_SORT_BY_POWER :Cumhacht STR_SORT_BY_TRACTIVE_EFFORT :Iarracht tarraingthe STR_SORT_BY_INTRO_DATE :Dáta a tugadh isteach é STR_SORT_BY_RUNNING_COST :Costas le Rith -STR_SORT_BY_POWER_VS_RUNNING_COST :Cumhacht/Costas le Rith +STR_SORT_BY_POWER_VS_RUNNING_COST :Cumhacht/Costas coinneála STR_SORT_BY_CARGO_CAPACITY :Méid an Lastais STR_SORT_BY_RANGE :Raon STR_SORT_BY_POPULATION :Daonra +STR_SORT_BY_RATING :Rátáil # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Cuir an cluiche ar sos @@ -295,10 +319,12 @@ STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Roghanna STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Sábháil cluiche, fág cluiche, scoir STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Taispeáin léarscáil, amharc breise nó liosta comharthaí STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Taispeáin liosta na mbailte -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Taispeáin fordheontais +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Taispeáin fóirdheontais STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Taispeáin liosta de stáisiúin na cuideachta STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Taispeáin faisnéis airgeadais faoin gcuideachta STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Taispeáin faisnéis ginearálta faoin gcuideachta +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Taispeáin an leabhar scéalta +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Taispeáin an liosta spriocanna STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Taispeáin graif STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Taispeáin tábla sraithe na gcuideachtaí STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Tabhair maoiniú do thionscal nua nó liosta de gach tionscal @@ -315,12 +341,12 @@ STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Tóg aer STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Oscail an barra uirlisí tírdhreacha chun talamh a ardú/ísliú, crainnte a chur, srl. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Taispeáin an fhuinneoig fuaime/ceoil STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Taispeáin an teachtaireacht/tuairisc nuachta deiridh, taispeáin roghanna do theachtaireachtaí -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Faisnéis faoin talamh, consól, dífhabhtú AI, seatanna scáileáin, maidir le OpenTTD +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Faisnéis faoin bpíosa talún, consól, dífhabhtú scripteanna, seatanna scáileáin, maidir le OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Athraigh barraí uirlisí # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Sábháil scéal, lódáil scéal, fág eagarthóir na scéalta, scoir -STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}Oscail TTD +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Eagarthóir Scéalta STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Cuir an dáta tosaigh siar bliain amháin STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Cuir an dáta tosaigh ar aghaidh bliain amháin @@ -346,8 +372,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :Scoir ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Roghanna an chluiche -STR_SETTINGS_MENU_CONFIG_SETTINGS :Ardsocruithe -STR_SETTINGS_MENU_SCRIPT_SETTINGS :Socruithe scripte AI/Cluiche +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Socruithe +STR_SETTINGS_MENU_SCRIPT_SETTINGS :Socruithe AI/Scripteanna cluiche STR_SETTINGS_MENU_NEWGRF_SETTINGS :Socruithe NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Roghanna trédhearcachta STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Taispeántar ainmneacha bailte @@ -372,6 +398,7 @@ STR_FILE_MENU_EXIT :Scoir # map menu STR_MAP_MENU_MAP_OF_WORLD :Léarscáil den domhan STR_MAP_MENU_EXTRA_VIEW_PORT :Fuinneog amhairc bhreise +STR_MAP_MENU_LINGRAPH_LEGEND :Eochair an tSreafa Lastais STR_MAP_MENU_SIGN_LIST :Liosta na gcomharthaí ############ range for town menu starts @@ -380,7 +407,7 @@ STR_TOWN_MENU_FOUND_TOWN :Aimsíodh baile ############ range ends here ############ range for subsidies menu starts -STR_SUBSIDIES_MENU_SUBSIDIES :Fordheontais +STR_SUBSIDIES_MENU_SUBSIDIES :Fóirdheontais ############ range ends here ############ range for graph menu starts @@ -395,10 +422,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Rátaí íocaí ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tábla sraithe na gcuideachtaí STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Rátáil feidhmíochta mionsonraithe +STR_GRAPH_MENU_HIGHSCORE :Tábla na n-ardscór ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Liosta de na tionscail +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Slabhraí na dtionscal STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Déan maoiniú ar thionscal nua ############ range ends here @@ -441,7 +470,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Stair na dteach STR_ABOUT_MENU_LAND_BLOCK_INFO :Faisnéis faoin limistéar talún STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Scoránaigh consól -STR_ABOUT_MENU_AI_DEBUG :Dífhabhtú scripteanna AI/Cluiche +STR_ABOUT_MENU_AI_DEBUG :Dífhabhtú AI/Scripteanna Cluiche STR_ABOUT_MENU_SCREENSHOT :Seat scáileáin STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Seat scáileáin zúmáilte isteach go hiomlán STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Seat scáileáin le zúm réamhshocraithe @@ -452,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Scoránaigh bos STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Scor anaigh dath na mbloc salacha ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1ú STR_ORDINAL_NUMBER_2ND :2ú STR_ORDINAL_NUMBER_3RD :3ú @@ -468,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12ú STR_ORDINAL_NUMBER_13TH :13ú STR_ORDINAL_NUMBER_14TH :14ú STR_ORDINAL_NUMBER_15TH :15ú -STR_ORDINAL_NUMBER_16TH :16ú -STR_ORDINAL_NUMBER_17TH :17ú -STR_ORDINAL_NUMBER_18TH :18ú -STR_ORDINAL_NUMBER_19TH :19ú -STR_ORDINAL_NUMBER_20TH :20ú -STR_ORDINAL_NUMBER_21ST :21ú -STR_ORDINAL_NUMBER_22ND :22ú -STR_ORDINAL_NUMBER_23RD :23ú -STR_ORDINAL_NUMBER_24TH :24ú -STR_ORDINAL_NUMBER_25TH :25ú -STR_ORDINAL_NUMBER_26TH :26ú -STR_ORDINAL_NUMBER_27TH :27ú -STR_ORDINAL_NUMBER_28TH :28ú -STR_ORDINAL_NUMBER_29TH :29ú -STR_ORDINAL_NUMBER_30TH :30ú -STR_ORDINAL_NUMBER_31ST :31ú +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1ú +STR_DAY_NUMBER_2ND :2ú +STR_DAY_NUMBER_3RD :3ú +STR_DAY_NUMBER_4TH :4ú +STR_DAY_NUMBER_5TH :5ú +STR_DAY_NUMBER_6TH :6ú +STR_DAY_NUMBER_7TH :7ú +STR_DAY_NUMBER_8TH :8ú +STR_DAY_NUMBER_9TH :9ú +STR_DAY_NUMBER_10TH :10ú +STR_DAY_NUMBER_11TH :11ú +STR_DAY_NUMBER_12TH :12ú +STR_DAY_NUMBER_13TH :13ú +STR_DAY_NUMBER_14TH :14ú +STR_DAY_NUMBER_15TH :15ú +STR_DAY_NUMBER_16TH :16ú +STR_DAY_NUMBER_17TH :17ú +STR_DAY_NUMBER_18TH :18ú +STR_DAY_NUMBER_19TH :19ú +STR_DAY_NUMBER_20TH :20ú +STR_DAY_NUMBER_21ST :21ú +STR_DAY_NUMBER_22ND :22ú +STR_DAY_NUMBER_23RD :23ú +STR_DAY_NUMBER_24TH :24ú +STR_DAY_NUMBER_25TH :25ú +STR_DAY_NUMBER_26TH :26ú +STR_DAY_NUMBER_27TH :27ú +STR_DAY_NUMBER_28TH :28ú +STR_DAY_NUMBER_29TH :29ú +STR_DAY_NUMBER_30TH :30ú +STR_DAY_NUMBER_31ST :31ú ############ range for days ends ############ range for months starts @@ -533,8 +580,8 @@ STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLA STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Íocaíocht as 10 n-aonad (nó 10,000 lítear) de lastas a sheachadadh fad 20 cearnóg STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Cumasaigh gach STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Díchumasaigh gach -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Taispeáin gach lastas ar ghraf rátaí íocaíochta lastais -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ná taispeáin lastas ar bith ar ghraf rátaí íocaíochta lastais +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Taispeáin gach lastas ar ghraf na rátaí íocaíochta lastais +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ná taispeáin lastas ar bith ar ghraf na rátaí íocaíochta lastais STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Scoránaigh an graf don chineál lastais air/as STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -577,7 +624,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Iasacht: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Iomlán: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Líon na bhfeithiclí a rinne brabús anuraidh, Áirítear leis seo feithiclí bóithre, traenacha, longa agus aerárthaigh -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Líon na gcodanna stáisiún a ndearnadh seirbhísiú orthu le déanaí. Áirítear gach cuid de stáisiún (m.sh. stáisiún traenach, stad bus, aerfort), fiú amháin má tá siad ceangailte mar stáisiún amháin +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Líon na stáisiún ar tugadh lastas chomh fada leo le déanaí. Áirítear stáisiún traenach, stadanna bus, aerfort agus mar sin de ar leithligh, fiú amháin más cuid d'aon stáisiún amháin iad STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Brabús na feithicle a bhfuil an t-ioncam is ísle aici (ní thógtar san áireamh ach feithiclí atá níos mó ná 2 bhliain d'aois) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}An méid airgead a rinneadh sa ráithe ina raibh an brabús is ísle le 12 ráithe anuas STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}An méid airgid a rinneadh sa ráithe ina raibh an brabús is airde le 12 ráithe anuas @@ -656,15 +703,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Léarsc STR_SMALLMAP_TYPE_CONTOURS :Camchuair STR_SMALLMAP_TYPE_VEHICLES :Feithiclí STR_SMALLMAP_TYPE_INDUSTRIES :Tionscail +STR_SMALLMAP_TYPE_ROUTEMAP :Sreabhadh Lastais STR_SMALLMAP_TYPE_ROUTES :Bealaí STR_SMALLMAP_TYPE_VEGETATION :Fásra STR_SMALLMAP_TYPE_OWNERS :Úinéirí STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Taispeáin camchuaireanna na talún ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Taispeáin feithiclí ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Taispeáin tionscail ar an léarscáil +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Taispeáin an sreabhadh lastais ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Taispeáin bealaí iompair ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Taispeáin fásra ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Taispeáin úinéirí talún ar an léarscáil +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Cliceáil ar thionscail lena thaispeáint/folú. Déanann Ctrl+Cliceáil gach tionscal seachas an ceann roghnaithe a dhíchumasú. Ctrl+Cliceáil arís air chun gach cineál tionscail a chumasú +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Cliceáil ar chuideachta chun a maoine a thaispeáint nó gan a thaispeáint. Ctrl+Cliceáil chun gach cuideachta seachas an ceann roghnaithe a dhíchumasú. Ctrl+Cliceáil air arís chun gach cuideachta a chumasú +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}{BLACK}Cliceáil ar lastas chun a maoine a thaispeáint nó gan a thaispeáint. Ctrl+Cliceáil chun gach lastas seachas an ceann roghnaithe a dhíchumasú. Ctrl+Cliceáil air arís chun gach lastas a chumasú STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Bóithre STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Iarnróid @@ -698,6 +750,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Scoránaigh ainmneacha na mbailte air/as ar an léarscáil STR_SMALLMAP_CENTER :{BLACK}Láraigh an léarscáil beag ar an suíomh reatha STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Díchumasaigh gach @@ -708,6 +761,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Taispeá STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Scoránaigh an mapa airde a thaipeáint STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ná taispeáin maoin ar bith na cuideachta ar an léarscáil STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Taispeáin maoin uile na cuideachta ar an léarscáil +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ná taispeáin aon lastas ar an léarscáil +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Taispeáin gach lastas ar an léarscáil # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Taispeáin an teachtaireacht nó an tuairic nuachta deiridh @@ -780,17 +835,16 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Tagann laghdú ar tháirgeadh {STRING} ag {INDUSTRY} de {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san iosta -STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tá feithicil {VEHICLE} ag fanacht san iosta +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san iosta STR_NEWS_SHIP_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san iosta STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san haingear -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Níl a ndóthain orduithe ag {VEHICLE} sa sceideal STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Tá ordú folamh ag {VEHICLE} STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Tá orduithe dúbailte ag {VEHICLE} STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Tá stáisiún neamhbhailí ag {VEHICLE} ina chuid orduithe -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}Tá aerfort a bhfuil rúidbhealach róghearr aige in orduithe {VEHICLE} STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Tá {VEHICLE} ag fáil sean STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Tá {VEHICLE} ag fáil an-sean @@ -798,6 +852,7 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Tá {VEH STR_NEWS_TRAIN_IS_STUCK :{WHITE}Ní féidir le {VEHICLE} bealach a aimsiú le leanúint ar aghaidh. STR_NEWS_VEHICLE_IS_LOST :{WHITE}Tá {VEHICLE} caillte. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Rinne {VEHICLE} brabús de {CURRENCY_LONG} anuraidh +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}Ní féidir le {VEHICLE} an chéad cheann scríbe eile a bhaint amach mar tá sé as raon STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Stop {VEHICLE} mar gheall gur theip ar athfheistiú a ordaíodh STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Theip ar uath-athnuachan ar {VEHICLE}{}{STRING} @@ -811,15 +866,17 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Ní ghla STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}Glacann {STATION} le {STRING} anois STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}Glacann {STATION} le {STRING} agus le {STRING} anois -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Fordheontas a tairiscíodh imithe as dáta:{}{}Ní thabharfar fordheontas ar {STRING} ó {STRING} go {STRING} anois. -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Fordheontas tarraingte siar:{}{}Ní thabharfar fordheontas ar sheirbhís {STRING} ó {STRING} go {STRING} a thuilleadh. -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Déantar fordheontas seirbhíse a thairiscint:{}{}Tabharfaidh an t-údarás aitiúil fordheontas bliana don chéad seirbhís {STRING} ó {STRING} go {STRING}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Tabharfar 50% breise ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí dúbailte ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi thrí ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi cheathair ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Fóirdheontas a tairiscíodh imithe as dáta:{}{}Ní thabharfar fóirdheontas ar {STRING} ó {STRING} go {STRING} anois. +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Fóirdheontas tarraingte siar:{}{}Ní thabharfar fóirdheontas ar sheirbhís {STRING} ó {STRING} go {STRING} a thuilleadh. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Déantar fóirdheontas seirbhíse a thairiscint:{}{}Tabharfaidh an t-údarás aitiúil fóirdheontas bliana don chéad seirbhís {STRING} ó {STRING} go {STRING}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Bronnadh fóirdheontas seirbhíse ar {STRING}!{}{}Tabharfar 50% breise ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Bronnadh fóirdheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí dúbailte ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Bronnadh fóirdheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi thrí ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Bronnadh fóirdheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi cheathair ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Anord tráchta in {TOWN}!{}{}Beidh 6 mhí de chrá croí do thiománaithe de bharr clár atógáil bóithre arna maoiniú ag {STRING}! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monaplacht ar iompar! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Síníonn údarás áitiúil {TOWN} conradh le {STRING} le haghaidh cearta eisiacha iompair ar feadh bliana! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Amharc {COMMA} @@ -862,13 +919,14 @@ STR_GAME_OPTIONS_CURRENCY_TRY :Lira na Tuirce STR_GAME_OPTIONS_CURRENCY_SKK :Koruna na Slováice (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real na Brasaíle (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Krooni na hEastóine (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas na Liotuáine (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Won na Cóiré Theas (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand na hAfraice Theas (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saincheaptha... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari na Seoirsia (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial na hIaráine (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Feithiclí Bóithre STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh an taobh den bhóthair ar a mbeidh feithiclí ag tiomáint STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Tiomáin ar chlé @@ -904,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalónach STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Uathshábháil STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh eatramh idir uathshábhálacha an chluiche +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :As STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3 mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6 mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach 12 mí +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Teanga STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Roghnaigh an teanga comhéadain le húsáid @@ -920,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Taifeach STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Roghnaigh an taifeach scáileáin le húsáid STR_GAME_OPTIONS_RESOLUTION_OTHER :eile -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formáid seatanna scáileáin -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Roghnaigh an formáid le húsáid do sheatanna scáileáin +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Méid an chomhéadain +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh méid na heiliminte comhéadain a úsáidfear + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Gnáth +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Méid dúbailte +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Méid cheathrúil STR_GAME_OPTIONS_BASE_GRF :{BLACK}Sraith graifice bunaidh STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Roghnaigh an sraith grafaice bunaidh le húsáid @@ -937,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Roghnaig STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad truaillithe STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin tsraith ceoil bunaidh +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Teipeadh liosta de na taifigh a dtacaítear leo a fháil STR_ERROR_FULLSCREEN_FAILED :{WHITE}Theip ar an mód lánscáileáin # Custom currency window @@ -1015,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :An-réidh STR_TERRAIN_TYPE_FLAT :Réidh STR_TERRAIN_TYPE_HILLY :Cnocach STR_TERRAIN_TYPE_MOUNTAINOUS :Sléibhtiúil +STR_TERRAIN_TYPE_ALPINIST :Ailpíneach STR_CITY_APPROVAL_PERMISSIVE :Tugtar cead STR_CITY_APPROVAL_TOLERANT :Fulangach @@ -1022,21 +1088,44 @@ STR_CITY_APPROVAL_HOSTILE :Naimhdeach STR_WARNING_NO_SUITABLE_AI :{WHITE}Níl aon AI oiriúnach ar fáil...{}Is féidir leat roinnt AI a íoslódáil tríd an gcóras 'Inneachar Ar Líne' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Ardsocruithe - - -STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Srian ar an liosta thíos le cineálacha áirithe a leagan síos -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Ulig na Suímh -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Suímh Cliant(nil stóráil i Sábhálann; tionchar gach cliche) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Suímh Cliche(stóráil i Sábhálann; ni tionchar ach cliche nua) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Suímh Cliche(stóráil i Sábhálann; ni tionchar ach an cliche faoi láthair) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Suímh Cuideachta (stóráil i Sábhálann; ni tionchar ach an cuideachta faoi láthair) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Suímh Cuideachta (stóráil i saibhail; ni tionchar ach chuideachta reatha) +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Socruithe +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Teaghrán scagtha: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Fairsingigh gach ceann +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Leacaigh gach ceann +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(níl aon mhíniú ar fáil) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Luach réamhshocraithe: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Cineál socrú: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Socrú cliaint (ní sábháiltear nuair a sábháiltear cluiche; tá feidhm aige ar gach cluiche) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Socrú cluiche (sábháiltear i gcluichí sábháilte; tionchar ar chluichí nua amháin) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Socrú cluiche (stóráilte i gcluiche sábháilte; tionchar ar an gcluiche reatha amháin) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Socrú cuideachta (stóráilte i gcluiche sábháilte; tionchar ar chluichí nua amháin) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Socrú cuideachta (stóráilte i gcluiche sábháilte; tionchar ar an gcuideachta reatha amháin) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Catagóir: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Cineál: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Cuirtear srian ar an liosta thíos ag úsáid scagairí réamhshocraithe +STR_CONFIG_SETTING_RESTRICT_BASIC :Bunúsach (ná taispeáin ach socruithe tábhachtacha) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ardleibhéil (taispeáin formhór na socruithe) +STR_CONFIG_SETTING_RESTRICT_ALL :Saineolaí (taispeáin gach socrú, cinn aisteacha ina measc) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Socruithe a bhfuil luach acu nach é an réamhshocrú é +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Socruithe a bhfuil luach acu nach é an luach atá ag do shocruithe do chluiche nua + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Déantar an liosta thíos a theorannú go cineálacha áirithe socruithe +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Gach cineál socrú +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Socruithe Cliant (níl siad stóráilte i gcluiche sábháilte; tionchar ar gach cluiche) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Socruithe cluiche (stóráilte i gcluichí sábháilte; tionchar ar cluichí nua amháin) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Socruithe Cluichte (stóráilte i gcluiche sábháilte; tionchar ar an gcluiche reatha amháin) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Socruithe Cuideachta (stóráilte i gcluiche sábháilte; tionchar ar chluichí nua amháin) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Socruithe Cuideachta (stóráilte i gcluiche sábháilte; tionchar acu ar an gcuideachta reatha amháin) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Taispeáin gach toradh cuardaigh de réir socrú{}{SILVER}Catagóir {BLACK}go {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Taispeáin gach toradh cuardaigh de réir socrú{}{SILVER}Cineál {BLACK}go {WHITE}Gach cineál socrú +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Taispeáin gach toradh cuardaigh de réir socrú{}{SILVER}Catagóir {BLACK}go {WHITE}{STRING} {BLACK}agus {SILVER}Cineál {BLACK}go {WHITE}Gach cineál socrú +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ceann ar bith - STR_CONFIG_SETTING_OFF :As STR_CONFIG_SETTING_ON :Air -STR_CONFIG_SETTING_DISABLED :díchumasaithe +STR_CONFIG_SETTING_DISABLED :Díchumasaithe STR_CONFIG_SETTING_COMPANIES_OFF :As STR_CONFIG_SETTING_COMPANIES_OWN :Do chuideachta féin @@ -1050,138 +1139,273 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Ar chlé STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sa lár STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Ar dheis - -STR_CONFIG_SETTING_BUILDONSLOPES :Ceadaigh tógáil a dhéanamh ar fhánaí agus ar chóstaí: {STRING} -STR_CONFIG_SETTING_AUTOSLOPE :Ceadaigh athrú talún faoi fhoirgnimh, ráillí iarnróid srl. (uathfhánú): {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Iasacht tosaigh uasta: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Uasmhéid is féidir le cuideachta a chur ar iasacht (gan boilsciú a chur san áireamh) +STR_CONFIG_SETTING_INTEREST_RATE :Ráta úis: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Ráta úis ar iasachtaí; rialaíonn sé seo boilsciú freisin, má tá sé cumasaithe +STR_CONFIG_SETTING_RUNNING_COSTS :Costais choinneála: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Socraigh leibhéal na gcostas cothabhála agus coinneála atá ag feithiclí agus bonneagar +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Luas tógála: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Cuir teorainn le líon na ngníomhartha tógála atá ag AInna +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Cliseadh feithiclí: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Rialaigh chomh minic agus a fhéadfaidh feithiclí nach ndéantar seirbhísiú ceart ort cliseadh +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Iolraitheoir na bhfóirdheontas: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Socraigh an méid a íoctar ar naisc atá faoi fhóirdheontas +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costais tógála: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Socraigh leibhéal na gcostas tógála agus ceannaigh +STR_CONFIG_SETTING_RECESSIONS :Cúluithe eacnamaíochta: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Má dhéantar seo a chumasú, féadfaidh cúluithe a bheith ann gach cúpla bliain. Le linn cúlú, bíonn an táirgeadh ar fad cuid mhaith níos ísle (téann sé ar ais chuig an leibhéal roimhe sin nuair a bheidh an cúlú thart) +STR_CONFIG_SETTING_TRAIN_REVERSING :Ná ceadaigh cúlú traenacha i stáisiúin: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Má tá sé cumasaithe, ní rachaidh traenacha ar cúl i stáisiúin nach ceannstáisiúin iad, fiú má tá bealach níos giorra chuig an chéad cheann scríbe eile má dhéanann siad sin +STR_CONFIG_SETTING_DISASTERS :Tubaistí: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Cuir tubaistí, ar féidir leo feithiclí nó bonneagar a bhlocáil nó a scriosadh anois is arís, ar siúl nó as +STR_CONFIG_SETTING_CITY_APPROVAL :Dearcadh chomhairle an bhaile i leith athstruchtúrú limistéir: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Roghnaigh a mhéid a mbeidh tionchar ag torann agus damáiste don chomhshaol a dhéanann cuideachtaí ar a rátáil sa bhaile agus ar imeachtaí tógála eile sa cheantar + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Airde uasta na léarscáile: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Socraigh an airde uasta atá ceadaithe do shléibhte ar an léarscáil +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Ní féidir leat airde uasta na léarscáile a shocrú ag an luach seo. Tá sliabh amháin ar a laghad ar an léarscáil níos airde +STR_CONFIG_SETTING_AUTOSLOPE :Ceadaigh athrú talún faoi fhoirgnimh, ráillí iarnróid srl.: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ceadaigh tírdhreachú faoi fhoirgneamh agus ráillí gan iad a bhaint STR_CONFIG_SETTING_CATCHMENT :Ceadaigh ceantair stáisiún ar mhéid níos realaíoch: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Ceadaigh tuilleadh bóithre, droichid agus tolláin ar le baile iad a bhaint: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Fág go mbeidh sé níos éasca bonneagar agus foirgnimh ar le bailte iad a bhaint +STR_CONFIG_SETTING_TRAIN_LENGTH :Uasfhad na dtraenacha: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Socraigh uasfhad na dtraenacha +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} tíl STR_CONFIG_SETTING_SMOKE_AMOUNT :Méid deataigh/splancacha na bhfeithiclí: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Socraigh cé mhéid deataigh nó líon na splancacha a thabharfaidh feithiclí uathu STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Samhail luasghéaraithe do thraenacha: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Roghnaigh samhail fisice do luasghéarú na dtraenacha. Faoin mód 'bunaidh', gearrtar an pionós céanna ar fhánaí do gach feithicil. Faoin mód 'réalaíoch' bíonn an pionós a ghearrtar as fánaí agus cuair ag brath ar airíonna éagsúla, amhail fad agus iarracht na tarraingthe STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Samhail luasghéaraithe d'fheithiclí bóthair: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Roghnaigh samhail fisice do luasghéarú na bhfeithiclí bóthair. Faoin mód 'bunaidh' gearrtar an pionós céanna ar gach feithicil ar fhánaí. Faoin mód 'réalaíoch' bíonn an pionós a ghearrtar ar fhánaí ag brath ar airíonna éagsúla an innill, 'iarracht na tarraingthe' mar shampla +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Géire na fána i gcás traenacha: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :A ghéire agus atá tíl ar a bhfuil fána i gcás traenach. Fagfaidh luachanna níos airde go mbeidh sé níos deacra cnoc a dhreapadh +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Géire na fána i gcás feithiclí bóthair: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :A ghéire agus atá tíl ar a bhfuil fána i gcás feithicle bóthair. Fagfaidh luachanna níos airde go mbeidh sé níos deacra cnoc a dhreapadh STR_CONFIG_SETTING_FORBID_90_DEG :Cuir cosc ar thraenacha agus ar longa casadh 90° a dhéanamh: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tarlaíonn casadh 90 céim nuair atá píosa iarnróid ingearach ag teacht díreach tar éis píosa iarnróid cothrománach ar an tíl in aice leis, rud a chiallaíonn go gcasann an traein 90 céim ag dul thar thaobh na tíle, seachas 45 céim mar a dhéantar nuair a chuirtea tíleanna le chéile ar chaíonna eile. Bíonn sé seo i gceist maidir leis an spás a thógann sé ar longa casadh freisin STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ceadaigh stáisiúin a changal nach bhfuil taobh lena gcéile: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :Úsáid an algartam lódála feabhsaithe: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Lódáil feithiclí de réir a chéile: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tabhair cead codanna a chur le stáisiún gan teagmháil dhíreach a bheith acu leis na codanna atá ann cheana. Is gá Ctrl+Cliceáil a dhéanamh agus na codanna nua á gcur síos STR_CONFIG_SETTING_INFLATION :Boilsciú: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Ná déan lastas a sheachadadh chuig stáisiún ach má tá éileamh ann: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modh tógála tionscail de láimh go príomhúil: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ceann ar bith -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :cosúil le tionscail eile -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :cuardach +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Cumasaigh boilsciú sa gheilleagar, áit ina mbeidh costais ag méadú beagán níos tapúla ná íocaíochtaí +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Uasfhad na ndroichead: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Uasfhad i dtaca le droichid a thógáil +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Airde uasta na ndroichead: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Airde uasta i dtaca le droichid a thógáil +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Uasfhad na dtollán: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Uasfhad i dtaca le tolláin a thógáil +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :An modh chun tionscail phríomhúla a thógáil de láimh: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :An modh a úsáidfear chun tionscal príomhúil a mhaoiniú. Ciallaíonn 'ceann ar bith' nach féidir aon cheann a mhaoiniú, ciallaíonn 'taiscéaladh' gur féidir maoiniú a dhéanamh, ach go ndéanfar an tógáil ar áit randamach ar an léarscáil, agus d'fhéadfadh teip a bheith ann freisin, ciallaíonn 'cosúil le tionscail eile' gur féidir le cuideachtaí tionscail na n-amhábhar a thógáil cosúil le tionscail phróiseála aon áit is mian leo +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ceann ar bith +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Cosúil le tionscail eile +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Cuardach (mianraí srl.) +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Limistéar réidh thart ar thionscail: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Méid na talún réidh thart timpeall ar thionscal. Cinntíonn sé seo go mbeidh spás folamh ann fós thart timpeall ar thionscal chun ráillí, srl. a thógáil STR_CONFIG_SETTING_MULTIPINDTOWN :Ceadaigh tionscail cosúla iolracha in aon bhaile amháin: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Go hiondúil, ní bhíonn comhairle baile ag iarraidh go mbeidh níos mó ná tionscal amháin de gach cineál ann. Leis an socrú seo, ceadófar roinnt tionscail den chineál céanna a bheith in aon bhaile amháin +STR_CONFIG_SETTING_SIGNALSIDE :Taispeáin comharthaí: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Roghnaigh cén taobh den iarnród ar a chuirfear comharthaí +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Ar chlé +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Ar thaobh na tiomána +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Ar dheis STR_CONFIG_SETTING_SHOWFINANCES :Taispeáin an fhuinneoig airgeadais ag deireadh na bliana: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Má tá sé cumasaithe, preabann an fhuinneog airgeadais aníos ag deireadh gach bliana le gur féidir stádas airgeadais na cuideachta a scrúdú go héasca STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Bíonn orduithe nua 'gan-stad' mar réamhshocrú: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Stopann orduithe traenach nua ag {STRING} an ardáin mar reamhshocrú +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :An áit ag a stopfaidh traein ar an ardán mar réamhshocrú. Ciallaíonn 'taobh is gaire' in aice leis an pointe iontrála, ciallaíonn 'an lár' lár an ardáin, agus ciallaíonn 'taobh is faide' an áit is faide ón bpointe iontrála. Tabhair faoi deara nach bhfuil i gceist leis an socrú seo ach réamhshocrú d'orduithe nua. Is féidir orduithe aonair a shocrú go sainráite ag aon cheann de na socruithe STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :taobh abhus STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :lár STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :taobh thall -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Scuainí feithiclí bóthair (le maisíochtaí candamacha): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Peanáil an fhuinneog agus an luch ag an taobh: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Má tá sé cumasaithe, tosóidh fuinneoga amhair ag scrollú nuair atá cursóir na luchóige in aice le taobh na fuinneoige +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Díchumasaithe +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Príomhfhuinneog amhairc, lánscáileán amháin +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Príomhfhuinneog amhairc +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Gach fuinneog amhairc STR_CONFIG_SETTING_BRIBE :Ceadaigh breabanna a thabhairt don údarás áitiúil: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tabhair cead do chuideachtaí iarracht a dhéanamh breab a thabhairt d'údarás áitiúil baile. Má thugann cigire an breab faoi dearra, ní bheidh an chuideachta in ann aon ghníomh a dhéanamh sa bhaile ar feadh sé mhí STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ceadaigh cearta eisiach iompair a cheannach: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Má cheannaíonn cuideachta cearta eisiacha iompair i mbaile, ní gheobhaidh stáisiúin iomaitheoirí (idir stáisiúin phaisinéirí agus lastais) lastas ar bith ar feadh bliain iomlán +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Ceadaigh maoiniú foirgneamh: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tabhair cead do chuideachtaí airgead a thabhairt do bhailte chun tithe nua a mhaoiniú STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Ceadaigh maoiniú do thógáil bóithre áitiúla: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tabhair cead do chuideachtaí airgead a thabhairt do bhailte chun atógáil a dhéanamh ar bhóithre chun sabaitéireacht a dhéanamh ar sheirbhísí ar bhóthar sa bhaile STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Ceadaigh airgead a sheoladh chuig cuideachtaí eile: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tabhair cead airgead a aistriú idir chuideachtaí sa mhód ilimreoirí STR_CONFIG_SETTING_FREIGHT_TRAINS :Iolraitheoir meáchain don lastas le traenacha troma a ionsamhladh: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED :Fachtóir luais na n-eitleán: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Socraigh luas coimhneasta na n-aerárthach i gcomparáid le cineálacha eile feithiclí, chun an méid ioncaim ó iompar aerárthaigh a laghdú +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Líon na dtimpistí eitleáin: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ceann ar bith -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :laghdaithe -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :gnáth +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Socraigh an dóchúlacht go dtarlóidh timpiste aerárthaigh +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ceann ar bith +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Laghdaithe +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Gnáth STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ceadaigh stadanna bóthair 'tiomáin tríd' ar bhóithre ar le bailte iad: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Ceadaigh stopann bóthair 'tiomáin tríd' a thógáil ar bhóithre ar le bailte iad STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Ceadaigh stopanna bóthair 'tiomáin tríd' ar bhóithre ar le hiomaitheoirí iad: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Ceadaigh tógáil taobh le stáisiúin: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Cumasaigh níos mó ná sraith innill NewGRF amháin: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tabhair cead stadanna bóthair 'tiomáin tríd' a thógáil ar bhóithre atá faoi úinéireacht cuideachtaí eile STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ní féidir an socrú seo a athrú nuair atá feithiclí ann STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cothabháil bonneagair: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Má tá sé cumasaithe, bíonn costais chothabhála ar bhonneagar. Méadaíonn an costas níos tapúla ná méid an líonra, rad a fhágann go mbíonn tionchar níos mó aige ar chuideachtaí móra ná ar chuideachtaí beaga STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Ní imíonn aerfoirt as dáta riamh: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Má dhéantar an socrú seo a chumasú beidh gach cineál aerfoirt ar fáil go deo tar éis é a thabhairt isteach STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Tabhair rabhadh má tá an fheithicil caillte: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Taispeáin teachtaireachtaí maidir le feithiclí nach bhfuil in ann bealach a aimsiú chuig an gceann scríbe ar ordaíodh dóibh dul ann STR_CONFIG_SETTING_ORDER_REVIEW :Féach ar orduithe feithicile: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :níl -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :déan é, ach ná tóg feiticlí stoptha san áireamh +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Má dhéantar é a chumasú, déantear orduithe na bhfeithiclí a sheiceáil go tráthrialta, agus tuairiscítear fadhbanna soiléire i dteachtaireacht nuachta má aimsítear iad +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Níl +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Déan é, ach ná tóg feiticlí stoptha san áireamh STR_CONFIG_SETTING_ORDER_REVIEW_ON :ar gach feithicil STR_CONFIG_SETTING_WARN_INCOME_LESS :Tabhair rabhadh má tá ioncam feithicile diúltach: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Má dhéantar é a chumasú, seoltar teachtaireacht nuachta más rud é nach ndearna feithicil brabús ar bith i mbliain féilire STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Ní imíonn feithiclí as dáta riamh: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Má dhéantar é a chumasú beidh gach cineál feithicle ar fáil go deo tar éis é a thabhairt isteach STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Déan uathathnuachan ar an bhfeithicil nuair a éiríonn sé sean: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Má tá sé cumasaithe, déantar feithicil atá ag teacht chuig deireadh a ré a ionadú go huathoibríoch má tá na coinníollacha athnuachana comhlíonta +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Uath-athnuaigh nuair atá feithicil {STRING} den aois uasta +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :An aois choibhneasta nuair is ceart feithicil a chur san áireamh chun uath-athnuachan a dhéanamh uirthi +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} {P mh mh mh m m}í roimh +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} {P mh mh mh m m}í tar éis STR_CONFIG_SETTING_AUTORENEW_MONEY :Uathathnuachan: uasmhéid airgead a theastaíonn le hathnuachan: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :An t-íosmhéid airgead nach mór a bheith sa bhanc fós sula seiceálfar ar cheart feithiclí a athnuachan +STR_CONFIG_SETTING_ERRMSG_DURATION :Fad ama na teachtaireachta earráide: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :An fad a thaispeánfar teachtaireachtaí earráide i bhfuinneog dhearg. Tabhair faoi deara nach ndúnfar teachtaireachtaí (criticiúla) áirithe go huathoibríoch tar éis an fad ama se, agus nach mór iad a dhúnadh de láimh +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} {P sh sh sh s s}oicind +STR_CONFIG_SETTING_HOVER_DELAY :Taispeáin leideanna uirlise: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :An mhoill sula dtaispeántar leideanna uirlise agus an luchóg os cionn eilimint den chomhéadan. Mar mhalairt, ceanglaítear leideanna uirlise don deaschlic luchóige má shocraítear an luach seo ag 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ainligh ar feadh {COMMA} {P mh mh mh m m}illisoicind +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Deaschlic STR_CONFIG_SETTING_POPULATION_IN_LABEL :Taispéain daonra an bhaile i lipéad ainm an bhaile: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Taispeáin daonra bailte sa lipéad atá acu ar an léarscáil STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tiús na línte sna graif: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Leithead na líne sna graif. Is féidir líne thanaí a léamh go beacht, agus tá líne níos tiubhe níos éasca le feiceáil agus tá sé níos éasca na dathanna a idirdhealú óna gcéile +STR_CONFIG_SETTING_LANDSCAPE :Tírdhreach: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Gineadóir talún: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Bunaidh STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Cineál tír-raoin: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis amháin) Chomh cnocach agus atá an tír-raon +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Dlús na dtionscal: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Socraigh líon na dtionscal is ceart a ghiniúint agus cén leibhéal is ceart a choinneáil i rith an chluiche +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Uasfhad ón taobh i gcás Scaglanna ola: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ní thógtar scaglanna ola ach in aice le teorainn na léarscáile, sé sin ag an gcósta i gcás léarscáileanna ar oileán iad STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Airde na líne sneachta: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Chomh garbh agus atá an tír-raon (TerraGenesis amháin) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Rialaigh an leibhéal ar a dtosaíonn sneachta ar thírdhreach fo-artach. Bíonn tionchar ag sneachta freisin ar ghiniúint tionscail agus riachtanais bailte ó thaobh fáis de +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Chomh garbh agus atá an tír-raon: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :An-mhín STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Mín STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garbh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :An-gharbh +STR_CONFIG_SETTING_VARIETY :Dáileadh éagsúlachta: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis amháin) Rialaigh an mbeidh limistéir sléibhtiúla agus réidh araon ar an léarscáil. Toisc nach ndéantar an léarscáil ach níos cothroime leis an socrú seo, ba cheart na socruithe eile a shocrú go sléibhtiúil +STR_CONFIG_SETTING_RIVER_AMOUNT :Méid na n-aibhneacha: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Roghnaigh líon na n-aibhneacha a chruthófar STR_CONFIG_SETTING_TREE_PLACER :Algartam le crainnte a chur: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Roghnaigh an chaoi a scaipfear crainnte ar an léarscáil: Le 'bunaidh' cuirfear crainnte agus iad scaipthe go haonfhoirmeach. le 'feabhsaithe' cuirtear iad i ngrúpaí STR_CONFIG_SETTING_TREE_PLACER_NONE :Ceann ar bith STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Bunaidh STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Feabhsaithe +STR_CONFIG_SETTING_ROAD_SIDE :Feithiclí bóthair: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Roghnaigh taobh na tiomána STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rothlú an mhapa airde: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tuathal STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Deiseal STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Leibhéal airde a fhaighann léarscáil scéil réidh: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Ceadaigh athrú talún ar na tíleanna ag teorainneacha na léarscáile: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Tá tíl amháin nó níos mó ag an taobh thuaidh nach bhfuil folamh STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Tá tíl amháin nó níos mó ag ceann de na taobhanna nach uisce é +STR_CONFIG_SETTING_STATION_SPREAD :Leathadh amach uasta na stáisiún: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :An limistéar uasta ar féidir codanna de stáisiún amháin a leathadh amach air. Tabhair faoi deara go gcuirfidh luachanna móra moill ar an gcluiche STR_CONFIG_SETTING_SERVICEATHELIPAD :Déan seirbhísiú ar héileacaptair ag héileapadanna go huathoibríoch: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Déan seirbhísiú ar heileacaptair tar éis gach tuirlingte, fiú mura bhfuil iosta ag an aerfort STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ceangail an barra uirlisí tírdhreacha leis na barraí uirlisí iarnróid/bóíthre/uisce/aerfort: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Dath na talún a úsáidtear sa léarscáil bheag: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Dath an tír-raoin ar an léarscáil bheag STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Ciaruaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Corcairghorm STR_CONFIG_SETTING_REVERSE_SCROLLING :Aisiompaigh an treo scrollaithe: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :An méid a tharlaíonn agus an léarscáil á scrollú leis an gcnaipe luchóige deas. Má bhíonn sé díchumasaithe, bogann an luchóg leis an gceamara. Má bhíonn sé cumasaithe, bogann an luchóg an léarscáil STR_CONFIG_SETTING_SMOOTH_SCROLLING :Scrollú mín do na fuinneoga amhairc: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Taispeáin leid uirlise tomhais agu uirlisí tógála áirithe in úsáid: {STRING} -STR_CONFIG_SETTING_LIVERIES :Taispeáin libhréithe na gcuideachtaí: {STRING} +STR_CONFIG_SETTING_LIVERIES :Taispeáin libhréithe sonracha d'fheithiclí: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Rialaigh úsáid libhréithe a bhaineann go sonrach leis an gcineál feithicle d'fheithiclí (seachas libhréithe a bhaineann go sonrach le cuideachta) STR_CONFIG_SETTING_LIVERIES_NONE :Ná taispeáin STR_CONFIG_SETTING_LIVERIES_OWN :Do chuideachta féin STR_CONFIG_SETTING_LIVERIES_ALL :Gach cuideachta STR_CONFIG_SETTING_PREFER_TEAMCHAT :Tús áite do chomhrá foirne le : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Feidhm an rotha scrollaithe: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Cumasaigh scrollú le rothaí luchóige déthoiseacha STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zúmáil an léarscáil STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scrollaigh an léarscáil STR_CONFIG_SETTING_SCROLLWHEEL_OFF :As STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Luas roth scrollaithe an léarscáil: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Rialaigh íogaireacht scrollú an rotha luchóige +STR_CONFIG_SETTING_OSK_ACTIVATION :Méarchlár scáileáin: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Díchumasaithe +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Cliceáil dhúbailte +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Cliceáil amháin (agus fócas aige) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Cliceáil amháin (láithreach) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Aithris deaschliceála: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Roghnaigh an modh a úsáidfear chun athris a dhéanamh ar dheaschliceáil an chnaipe luchóige STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Ordú+Cliceáil STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Cliceáil STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :As STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollú le cléchliceáil: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :Uathshábháil: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Roghnaigh an t-eatramh idir uathshábhálacha cluichí + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Úsáid an formáid dáta {STRING} d'ainmneacha na gcluichí sábháilte +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formáid an dáta i gcomhadainmneacha na gcluichí sábháilte STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :fada (31 Noll 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :gearr (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Pailéad DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Pailéad Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Cuir cluiche ar sos go huathoibríoch agus cluiche nua á thosú: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Má tá sé cumasaithe, cuirfear an cluiche ar sos go huathoibríoch nuair a thosófar cluiche nua, chun deis a thabhairt staidéar níos grinne a dhéanamh ar an léarscáil STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Agus an cluiche ar sos, ceadaigh: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :gníomh ar bith -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :gach gníomh neamh-thógála -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :gach rud ach gníomhartha a mhionathraíonn an tírdhreach -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :gach gníomh -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bain úsáid as ardliosta na bhfeithiclí {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Roghnaigh cad iad na gníomhaíochta atá ceadaithe agus an cluiche ar sos +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Gníomh ar bith +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Gach gníomh neamh-thógála +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Gach rud ach gníomhartha a mhionathraíonn an tírdhreach +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Gach gníomh +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Úsáid grúpaí i liosta na bhfeithiclí {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Cumasaigh úsáid a bhaint as na liostaí ardleibhéil feithiclí chun feithiclí a ghrúpáil STR_CONFIG_SETTING_LOADING_INDICATORS :Úsáid táscairí lódála: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Roghnaigh cibé acu an dtaispeánfar táscairí lódála os cionn feithiclí atá ag lódáil nó ag dílódáil nó nach dtaispeánfar STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Taispeáin an t-amchlár i dticeanna seachas i laethanta: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Taispeáin amanna taistil i dtáblaí ama i dticeanna cluiche seachas laethanta STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Taispeáin am teacht isteach agus fágála in amchláir: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Taispeáin na hamanna teacht isteach agus imeachta a bhfuiltear ag súil leo sna hamchláir STR_CONFIG_SETTING_QUICKGOTO :Orduithe feithiclí a chruthú go scioptha: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Réamh-roghnaigh 'téigh chuig cursóir' nuair a dhéantar fuinneog na n-orduithe a oscailt STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Cineál ráille réamhshocraithe (tar éis cluiche nua/cluiche a lódáil): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :An cineál iarnróid a roghnófar tar éis cluiche a thosú nó a lodáil. 'an chéad cheann atá ar fáil': roghnaíonn seo an cineál iarnróid is sine. 'an ceann deireanach atá ar fáil': roghnaíonn seo an cineál iarnróid is nuaí. 'an ceann is mó úsáide': roghnaíonn seo an cineál is mó atá in úsáid faoi láthair STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :An chéad cheann atá ar fáil STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :An cheann deiridh atá ar fáil STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Ceann is mó a úsáidtear -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Taispeáin iarnróid forchoimeádta: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Taispeáin cosáin forchoimeádta iarnróid: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Tabhair dath difriúil ar iarnróid forchoimeádta le cabhrú le fadhbanna le traenacha a dhiúltaíonn dul isteach i mbloic atá bunaithe ar chosáin STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Fág uirlisí tógála gníomhach i ndiaidh úsáide: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Coinnigh na huirlisí tógála do dhroichid, tolláin srl. oscailte tar éis a n-úsáide STR_CONFIG_SETTING_EXPENSES_LAYOUT :Speansais an ghrúpa i bhfuinneog airgeadais cuideachta: {STRING} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Sainigh an leagan amach a bheidh ar fhuinneog speansais chuideachta + +STR_CONFIG_SETTING_SOUND_TICKER :Ticear nuachta: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Seinn fuaim do na teachtaireachtaí nuachta achomair +STR_CONFIG_SETTING_SOUND_NEWS :Nuachtán: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Seinn fuiam nuair a thaispeántar nuachtáin +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Deireadh na bliana: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Seinn fuaim ag deireadh na bliana nuair a thugtar achoimre ar fheidhmíocht cuideachta i rith na bliana sin i gcomparáid leis an mbliain roimhe STR_CONFIG_SETTING_SOUND_CONFIRM :foirgníochta: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Seinn éifeacht fuaime ar tógálacha rathúil nó gníomhartha eile STR_CONFIG_SETTING_SOUND_CLICK :cnaipe brúite: {STRING} @@ -1195,50 +1419,105 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Seinn maisíoch STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Díchumasaigh tógáil bonneagair nuair nach bhfuil aon fheithicil oiriúnach ar fáil: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Uaslíon na dtraenacha in aghaidh na cuideachta: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Uaslíon na dtraenacha is féidir a bheith ag cuideachta STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Uaslíon na bhfeithiclí bóthair in aghaidh na cuideachta: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Uaslíon na bhfeithiclí bóthair is féidir a bheith ag cuideachta STR_CONFIG_SETTING_MAX_AIRCRAFT :Uaslíon na n-eitleán in aghaidh na cuideachta: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Uaslíon na n-aerárthach is féidir a bheith ag cuideachta STR_CONFIG_SETTING_MAX_SHIPS :Uaslíon na long in aghaidh na cuideachta: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Uaslíon na long is féidir a bheith ag cuideachta STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Díchumasaigh traenacha don ríomhare: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Má dhéantar an socrú seo a chumasú ní bheidh ríomhimreoir in ann traenacha a thógáil STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Díchumasaigh feithiclí bóthair don ríomhaire: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Má dhéantar an socrú seo a chumasú ní bheidh ríomhimreoir in ann feithiclí bóthair a thógáil STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Díchumasaigh aerárthaigh don ríomhare: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Má dhéantar an socrú seo a chumasú ní bheidh ríomhimreoir in ann aerárthaigh a thógáil STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Díchumasaigh longa don ríomhare: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Má dhéantar an socrú seo a chumasú ní bheidh ríomhimreoir in ann longa a thógáil +STR_CONFIG_SETTING_AI_PROFILE :Próifíl socruithe réamhshocraithe: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Roghnaigh cén próifíl socruithe a úsáidfear do AInna fánacha nó na luachanna tosaigh nuair a chuirfear AI nó Script Cluiche nua leis +STR_CONFIG_SETTING_AI_PROFILE_EASY :Éasca +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Méanach +STR_CONFIG_SETTING_AI_PROFILE_HARD :Deacair STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Ceadaigh AIanna i gcluiche ilimreora: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Ceadaigh do ríomhimreoirí AI a bheith páirteach i gcluichí ilimreora +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :tá #opcodes roimh scripteanna curtha ar fionraí: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Uaslíon na gcéimeanna ríofa is féidir le script a dhéanamh in aon chasadh amháin STR_CONFIG_SETTING_SERVINT_ISPERCENT :Eatraimh seirbhísithe i gcéatadán: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Roghnaigh an ndéanfar seirbhísiú feithiclí bunaithe ar an am atá imithe thart ón seirbhísiú deireanach nó bunaithe ar iontaofacht a bheith tite céatadán áirithe ón iontaofacht uasta +STR_CONFIG_SETTING_SERVINT_TRAINS :Eatramh seirbhísithe réamhshocraithe do thraenacha: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe d'fheithiclí iarnróid nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}lá/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Díchumasaithe +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Eatramh seirbhísithe réamhshocraithe d'fheithiclí bóthair: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe d'fheithiclí bóthair nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Eatramh seirbhíse réamhshocraithe d'aerárthaigh: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe d'aerárthaigh nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil +STR_CONFIG_SETTING_SERVINT_SHIPS :Eatramh seirbhíse réamhshocraithe do longa: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe do longa nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil STR_CONFIG_SETTING_NOSERVICE :Díchumasaigh seirbhísiú nuair nach mbíonn aon bhriseadh síos: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Má tá sé cumasaithe, ní dhéantar feithiclí a sheirbhísí má rud é nach féidir leo briseadh síos STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Cumasaigh teorainneacha luais vaigíní: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Má tá sé cumasaithe, úsáid teorainneacha luais na vaigíní freisin chun luas uasta traenacha a shocrú STR_CONFIG_SETTING_DISABLE_ELRAILS :Díchumasaigh ráillí leictreacha: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Tagann an chéad fheiticil isteach i stáisiún imreora: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Taispeáin nuachtán nuair a thagann an chéad traein isteach ag stáisiún imreora nua STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Tagann an chéad fheithicil isteach i stáisiún iomaitheora: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Taispeáin nuachtán nuair a thagann an chéad fheithicil isteach ag stáisiún nua iomaitheora STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Timpistí / tubaistí: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Taispeáin nuachtán nuair a thiteann timpistí nó tubaistí amach STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Faisnéis cuideachta: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Taispeáin nuachtán nuair a thosaíonn cuideachta nua, nó nuair atá cuideachta i mbaol féimheachta STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Tionscail ag oscailt: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Taispeáin nuachtán nuair a osclaítear tionscal nua STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Tionscail ag dúnadh: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Taispeáin nuachtán nuair a dhúnann tionscal STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Athruithe sa gheilleagar: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Taispeáin nuachtán maidir le hathruithe domhanda ar an ngeilleagar STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Athruithe sa táirgeadh i measc tionscail a mbíonn an chuideachta ag freastal orthu: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Taispeáin nuachtán nuair a athraíonn leibhéal táirgeachta tionscail a mbíonn an chuideachta ag freastal orthu STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Athruithe sa táirgeadh i measc tionscail a mbíonn iomaitheoir(í) ag freastal orthu: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Taispeáin nuachtán nuair a athraíonn leibhéal táirgeachta tionscail a mbíonn iomaitheoirí ag freastal orthu STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Athruithe eile i dtáirgeadh tionscail: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Taispeáin nuachtán nuair a athraíonn leibhéal táirgeachta tionscail nach mbíonn an chuideachta ná a hiomaitheoirí ag freastal orthu STR_CONFIG_SETTING_NEWS_ADVICE :Comhairle / faisnéis maidir le feithiclí na cuideachta: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Taispeáin teachtaireachtaí maidir le feithiclí ar gá aire a thabhairt dóibh STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Feithiclí nua: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Taispeáin nuachtán nuair a bhíonn cineál nua feithicle ar fáil den chéad uair STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Athruithe ar an lastas a nglactar leis: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES :Fordheontais: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Faisnéis ginearálta: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Taispeáin teachtaireachtaí maidir le stáisiúin a athraíonn na lastais a nglacann siad leo +STR_CONFIG_SETTING_NEWS_SUBSIDIES :Fóirdheontais: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Taispeáin nuachtáin maidir le cúrsaí a bhaineann le fóirdheontais +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Faisnéis ghinearálta: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Taispeáin nuachtán maidir le himeachtaí ginearálta, mar shampla cearta eisiacha a cheannach nó maoiniú a thabhairt chun bóithre a thógáil STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :As STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Achoimre STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Iomlán STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Bíonn nuacht daite ann don chéad uair in: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :An bhliain a thosaítear ar fhógraí nuachtáin daite a chlóbhualadh. Roimh an bhliain sin, úsáidtear dubh/bán monacrómach STR_CONFIG_SETTING_STARTING_YEAR :Bliain tosaigh: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Cumasaigh geilleagar níos míne (tuilleadh athruithe, agus iad níos lú): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Má dhéantar é a chumasú, athraíonn táirgeadh na dtionscal níos minice, agus i gcéimeanna níos lú. Is iondúil nach mbíonn aon tionchar ag an socrú seo má chuirtear na cineálacha tioinscail ar fáil in NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Ceadaigh scaireanna a cheannach ó chuideachtaí eile: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Má tá sé cumasaithe, tá cead scaireanna i gcuideachta a cheannach agus a dhíol. Ní bheidh scaireanna ar fáil ach do chuideachtaí a bhfuil aois áirithe bainte amach acu +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :An céatadán den bhrabús a íocfar ar chuid den turas i gcórais fhriothálacha: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Agus tú ag tarraingt, cuir síos comharthaí gach: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Socraigh an fad ag a dtógfar comharthaí ar iarnród suas go dtí an chéad chonstaic eile (comhartha, acomhal), agus comharthaí á dtarraingt +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} {P thíl thíl thíl dtíl tíl} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Agus tú ag tarraingt, coinnigh fad seasta idir comharthaí: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Roghnaigh an chaoi a chuirfear síos comharthaí agus comhartaí á dtarraingt le Ctrl coinnithe síos. Má tá sé cumasaithe, cuirfear comharthaí thart timpeall ar tholláin nó droicid sa chaoi nach mbeidh píosaí fada ann gan aon chomhartha orthu. Má tá sé cumasaithe, cuirfear síos comhartha gach n tíl, rud a fhágann go mbeidh sé níos éasca comharthaí ar iarnróid chomhthreomhara a ailíniú STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Tóg séamafóir go huathoibríoch roimh: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Socraigh an bliain ina n-úsáidfear comharthaí leictreacha ar iarnróid. Roimh an bhliain sin, úsáidfear comharthaí nach comharthaí leictreacha iad (tá an fheidhm cheanainn céanna acu, ach cuma dhifriúil orthu) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Cumasaigh GUI na gcomharthaí: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Cineál comhartha le tógáil mar réamhshocrú: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :An cineál comharthaí a úsáidfear mar réamhshocrú STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Comharthaí bloc STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Comharthaí cosán STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Comharthaí cosán aonbhealaigh @@ -1248,6 +1527,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Comharthaí cos STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Gach STR_CONFIG_SETTING_TOWN_LAYOUT :Leagan amach na mbóithre do bhailte nua: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Leagan amach an ghréasáin bóithre i mbailte STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :bunaidh STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :bóithre níos fearr STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :greille 2x2 @@ -1255,8 +1535,10 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :greille 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :randamach STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Ceadaítear do bhailte bóithre a thógáil: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Ceadaítear do bhailte crosairí comhréidh a thógáil: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Má dhéantar an socrú seo a chumasú, beidh bailte in ann crosairí comhréidh a thógáil STR_CONFIG_SETTING_NOISE_LEVEL :Ceadaigh leibhéal fuaime rialaithe ag an mbaile d'aerfoirt: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Bailte a bhunú sa chluiche: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Má dhéantar an socrú seo a chumasú beidh imreoirí in ann bailte nua a bhunú sa chluiche STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :coiscthe STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :ceadaithe STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :ceadaithe, leagan amach bailte saincheaptha @@ -1267,53 +1549,144 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :i bhforaois bh STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :gach áit STR_CONFIG_SETTING_TOOLBAR_POS :Suíomh an phríomhbharra uirlisí: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Suíomh cothrománach an phríomhbharra uirlise ag barr an scáileáin STR_CONFIG_SETTING_STATUSBAR_POS :Suíomh an bharra stádais: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Suíomh cothrománach an bharra stádais ag bun an scáileáin +STR_CONFIG_SETTING_SNAP_RADIUS :Ga léime na bhfuinneog: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :An fad idir fhuinneoga sula ndéanfar an fhuinneog atá á bogadh a ailíniú le fuinneoga in aice léi go huathoibríoch +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} {P ph ph ph bp p}icteilín +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Díchumasaithe STR_CONFIG_SETTING_SOFT_LIMIT :Uaslíon na bhfuinneog neamh-ghreamaitheach: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Líon na bhfuinneog neamhghreamaitheach is féidir a bheith oscailte sula ndúnfar seanfhuinneoga go huathoibríoch chun spás a dhéanamh d'fhuinneoga nua +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :díchumasaithe +STR_CONFIG_SETTING_ZOOM_MIN :Zúmáil uasta i leibhéil: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX :Leibhéal uasta zúmala amach: {STRING} +STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Gnáth +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Ráta fáis na mbailte: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Ráta ag a bhfásann baile STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ceann ar bith STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Mall STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Gnáth STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Scioptha STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :An-scioptha +STR_CONFIG_SETTING_LARGER_TOWNS :Líon na mbailte a ndéanfar cathratha díobh: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 as {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ceann ar bith STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Iolraitheoir tosaigh mhéid na gcathracha: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Bain gnéithe bóthair áiféiseacha agus bóithre á dtógáil: {STRING} - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Comhéadan -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Tógáil +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Nuashonraigh an graf dáileacháin gach {STRING}{NBSP}lá +STR_CONFIG_SETTING_LINKGRAPH_TIME :Tóg {STRING}{NBSP}lá chun an graf dáileacháin a athríomh +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :de láimh +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :neamhshiméadrach +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :siméadrach +STR_CONFIG_SETTING_DISTRIBUTION_PAX :An mód dáileacháin do phaisinéirí: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :An mód dáileacháin do phost: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :An mód dáileacháin don aicme lastais ARMÚRTHA: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :An mód dáileacháin d'aicmí eile lastais: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Cruinneas an dáileacháin: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :An tionchar atá ag fad ar éilimh: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Méid den lastas a thagann ar ais don mhód siméadrach: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Aonaid luais: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Aon áit a thaispeántar luas sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe é +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Impiriúil (msu) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Méadrach (km/u) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Aonaid chumhachta feithiclí: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Aon áit a thaispeántar cumhacht feithicle sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe í +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Impiriúil (ec) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Méadrach (ec) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Aonaid mheáchain: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Aon áit a thaispeántar meáchan sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe é +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Impiriúil (t/tonna gearr) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Méadrach (t/tonna) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Aonaid toirte: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Aon áit a thaispeántar toirt sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe í +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Impiriúil (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Méadrach (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Aonaid iarracht na tarraingthe: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Aon áit a thaispeántar iarracht na tarraingthe (ar a dtugtar fórsa tarraingthe freisin) sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe í +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Impiriúil (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Méadrach (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Aonaid airde: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Aon áit a thaispeántar airde sa chomhéadan úsáideora, taispeain sna haonaid roghnaithe í +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impiriúil (tr) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Méadrach (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Logánú +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafaicí +STR_CONFIG_SETTING_SOUND :{ORANGE}Fuaim +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Comhéadan +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Ginearálta +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Painéil amhairc +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Tógáil +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuacht / Comhairleoirí +STR_CONFIG_SETTING_COMPANY :{ORANGE}Cuideachta +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cuntasaíocht STR_CONFIG_SETTING_VEHICLES :{ORANGE}Feithiclí -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stáisiúin -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Geilleagar +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisic +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ródú +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Teorainneacha +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Tubaistí / Timpistí +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Domhan a chruthú +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Timpeallacht +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Údaráis +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bailte +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Tionscail +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dáileadh lastais STR_CONFIG_SETTING_AI :{ORANGE}Iomaitheoirí -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Roghanna taispeána -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Idirghníomhú -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Comharthaí -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Láimhseáil lastais STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ríomh-imreoirí -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Uathathnuachan -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Seirbhísiú -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ródú -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Traenacha -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bailte -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Tionscail +STR_CONFIG_SETTING_PATHFINDER_OPF :Bunaidh STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Molta) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Aimsitheoir bealaigh do thraenacha: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear do thraenacha STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Aimsitheoir bealaigh d'fheithiclí bóthair: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear d'fheithiclí bóthair STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Aimsitheoir bealaigh do longa: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear do longa STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Aisiompú uathoibríoch ag comharthaí: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Ceadaigh do thraenacha aisiompú ag comhartha, más rud é go raibh siad ag fanacht ann píosa fada STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Athraigh luach an tsocraithe # Config errors +STR_CONFIG_ERROR :{WHITE}Earráid leis an gcomhad cumraíochta... +STR_CONFIG_ERROR_ARRAY :{WHITE}... earráid san eagar '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... luach neamhbhailí '{STRING}' ag '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... carachtair chun deiridh ag deireadh an socraithe '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ag déanamh neamhaird den NewGRF '{STRING}': ID GRF dúbailte le '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ag tabhairt neamhaird ar NewGRF neamhbhailí '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :níor aimsíodh é +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :neamhshábháilte don úsáid statach +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :córas NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :neamh-chomhoiriúnach leis an leagan OpenTTD seo +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :anaithnid +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... níl leibheál comhbhrú '{STRING}' bailí +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... níl formáid an chluiche sábháilte '{STRING}' ar fáil. Ag tiontú ar '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ag tabhairt neamhaird ar an tsraith Bhunghrafaice '{STRING}': níor aimsíodh í +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ag tabhairt neamhaird ar an tsraith Bhunfhuaimeanna '{STRING}': níor aimsíodh í +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ag tabhairt neamhaird ar an tsraith Bhuncheoil '{STRING}': níor aimsíodh í +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Easpa chuimhne +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Teipeadh {BYTES} a shannadh don taisce sprideanna. Laghdaíodh an taisce sprideanna go {BYTES}. Laghdófar feidhmíocht OpenTTD dá bharr. Chun an méid cuimhne atá riachtanach a laghdú, is féidir leat grafaicí 32bpp agus/nó leibhéil zúmála isteach a dhíchumasú # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1326,9 +1699,11 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Eagarth STR_INTRO_MULTIPLAYER :{BLACK}Ilimreoirí STR_INTRO_GAME_OPTIONS :{BLACK}Roghanna an Chluiche -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ardsocruithe +STR_INTRO_HIGHSCORE :{BLACK}Tábla na nArdscór +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Socruithe STR_INTRO_NEWGRF_SETTINGS :{BLACK}Socruithe NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Seiceáil Inneachar Ar Líne +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Socruithe AI/Script Cluiche STR_INTRO_QUIT :{BLACK}Scoir STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Tosaigh cluiche nua. Scipeáltar cumrú an léarscáil le Ctrl+Cliceáil @@ -1344,11 +1719,14 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Roghnaig STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Roghnaigh stíl tírdhreacha 'tír na mbréagán' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Taispeáin roghanna an chluiche -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Taispeáin ardsocruithe +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Taispeáin tábla na n-ardscór +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Socruithe taispeána STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Taispeáin socruithe NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Seiceáil le haghaidh inneachar nua agus nuashonruithe le híoslódáil +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Taispeáin socruithe AI/Script cluiche STR_INTRO_TOOLTIP_QUIT :{BLACK}Téigh amach as 'OpenTTD' +STR_INTRO_TRANSLATION :{BLACK}Tá {NUM} {P th th th dt t}eaghrán in easnamh san aistriúchán seo. Is féidir leat cabhrú chun OpenTTD a fheabhsú má chláraíonn tú mar aistritheoir. Féach léighmé.txt chun mionsonraí a fháil. # Quit window STR_QUIT_CAPTION :{WHITE}Scoir @@ -1382,6 +1760,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ag imir STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Ollscartaire draíochta (bain tionscail, nithe dobhogtha): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Is féidir le tolláin dul trasna a gcéile: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Ní bheidh timpistí ag scairdeitleáin (go minic) ag aerfoirt bheaga: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Cuir airde uasta na léarscáile in eagar: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Cuir leibhéal uasta na sléibhte ar an léarscáil in eagar STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Tírdhreach measartha STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Tírdhreach fo-artach STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tírdhreach fo-theochriosach @@ -1428,8 +1808,9 @@ STR_LIVERY_FREIGHT_TRAM :Tram Lastais # Face selection window STR_FACE_CAPTION :{WHITE}Aghaidh a Roghnú -STR_FACE_CANCEL_TOOLTIP :{BLACK}Cealaigh roghnúchán aghaidhe nua +STR_FACE_CANCEL_TOOLTIP :{BLACK}Cuir roghnúchán aghaidhe nua ar ceal STR_FACE_OK_TOOLTIP :{BLACK}Glac leis an aghaidh nua +STR_FACE_RANDOM :{BLACK}Déan randamú STR_FACE_MALE_BUTTON :{BLACK}Fear STR_FACE_MALE_TOOLTIP :{BLACK}Roghnaigh aghaidheanna fir @@ -1485,6 +1866,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Athraigh # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ilimreoirí +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Fógartha +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Roghnaigh idir cluiche fógartha (idirlín) agus cluiche neamhfhógartha (Líonra Achair Logánta, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Níl +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Tá STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ainm imreora: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Seo an t-ainm faoina mbeidh imreoirí eile in ann tú a aithint @@ -1543,6 +1928,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Taispeá STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Socraigh pasfhocal STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Cosain do chluiche le pasfhocal más mian leat nach mbeidh rochtain phoiblí air +STR_NETWORK_START_SERVER_UNADVERTISED :Níl +STR_NETWORK_START_SERVER_ADVERTISED :Tá STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} {P ch ch ch gc c}lia{P "" "" "" "" i}nt STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Cliaint uasta: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Roghnaigh uaslíon na gcliant. Ní gá gach áit a líonadh @@ -1663,6 +2050,7 @@ STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Féachadóirí STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Iontráil an méid airgid is mian leat a thabhairt +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Féachadóir # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ná sábháil an pasfhocal a iontráladh @@ -1710,6 +2098,10 @@ STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Tá cosc STR_NETWORK_ERROR_KICKED :{WHITE}Ciceáladh amach as an gcluiche thú STR_NETWORK_ERROR_CHEATER :{WHITE}Ní cheadaítear caimiléireacht ar an bhfreastalaí seo STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Bhí tú ag seoladh an iomarca orduithe chuig an bhfreastalaí +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Thóg tú an iomarca ama an pasfhocal a chur isteach +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tá do ríomhaire rómhall le coinneáil suas leis an bhfreastalaí +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Thóg do ríomhaire rófhada chun an léarscáil a íoslódáil +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Thóg do ríomhaire rófhada chun dul isteach sa fhreastalaí ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :earráid ghinearálta @@ -1728,6 +2120,10 @@ STR_NETWORK_ERROR_CLIENT_KICKED :ciceáilte ag a STR_NETWORK_ERROR_CLIENT_CHEATER :ag iarraidh caimiléireacht a úsáid STR_NETWORK_ERROR_CLIENT_SERVER_FULL :freastalaí lán STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :ag seoladh an iomarca orduithe +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ní bhfuarthas pasfhocal in am +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :am istigh ginearálta +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :thóg sé rófhada chun an léarscáil a íoslódáil +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :thóg sé rófhada chun an léarscáil a phróiseáil ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Seans gur cailleadh an nasc @@ -1740,10 +2136,12 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Cluiche ar sos STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Cluiche fós ar sos ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Cluiche fós ar sos ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Cluiche fós ar sos ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Tá an cluiche fós ar sos ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Deireadh an tsosa ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :líon na n-imreoirí STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :cliaint á nascadh STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :de láimh +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script an chluiche ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :ag fágáil STR_NETWORK_MESSAGE_CLIENT_JOINED :*** Tháinig {STRING} isteach sa chluiche @@ -1771,7 +2169,13 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Roghnaig STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcáil an t-inneachar ar fad atá ina uasghrádú d'inneachar reatha mar inneachar le híoslódáil STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Díroghnaigh gach STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcáil an t-inneachar ar fad le nach n-íoslódálfar é +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cuardaigh suíomhanna gréasáin seachtracha +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cuardaigh inneachar nach bhfuil ar fáil ar sheirbhís inneachair OpenTTD ar shuíomhanna gréasáin nach bhfuil baint acu le OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Tá tú ag imeacht ó OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Bíonn téarmaí agus cionníolacha éagsúla i bhfeidhm maidir le hinneachar a íoslódáil ó shuíomhanna gréasáin seachtracha.{}Beidh ort féachaint sna suíomhanna seachtracha chun treoracha a fháil conas an t-inneachar a shuiteáil in OpenTTD.{}An mian leat leanúint ar aghaidh? STR_CONTENT_FILTER_TITLE :{BLACK}Scagaire clibe/ainm: +STR_CONTENT_OPEN_URL :{BLACK}Tabhair cuairt ar an suíomh gréasáin +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Tabhair cuairt ar an suíomh gréasáin don inneachar seo STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Íoslódáil STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Toaigh ag íoslódáil an t-inneachar roghnaithe STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Méid iomlán na híoslódála: {WHITE}{BYTES} @@ -1803,6 +2207,8 @@ STR_CONTENT_TYPE_SCENARIO :Scéal STR_CONTENT_TYPE_HEIGHTMAP :Mapa airde STR_CONTENT_TYPE_BASE_SOUNDS :Fuaimeanna bunaidh STR_CONTENT_TYPE_BASE_MUSIC :Ceol bunaidh +STR_CONTENT_TYPE_GAME_SCRIPT :Script cluiche +STR_CONTENT_TYPE_GS_LIBRARY :Leabharlann scripteanna cluiche # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Ag íoslódáil inneachar... @@ -1818,6 +2224,10 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... cail STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... níl an comhad inscríofa STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Níorbh fhéidir an comhad íoslódáilte a dhíchomhbhrú +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Grafaicí ar lár +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Tá grafaicí ag teastáil le go n-oibreoidh OpenTTD ach níorbh fhéidir teacht orthu. An dtugann tú cead do OpenTTD na grafaicí seo a íoslódáil agus a shuiteáil? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Tugann, íoslódáil na grafaicí +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ní thugann, scoir de OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Roghanna Trédhearcachta @@ -1833,8 +2243,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Scorána STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Socraigh go bhfuil nithe dofheicthe seachas trédhearcach # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Eochair an tSreafa Lastais +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Gach ceann +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ceann ar bith +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Roghnaigh na cuideachtaí a thaispeánfar # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}neamhúsáidte +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}ar maos +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}thar acmhainn # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Aibhsigh an limistéar clúdaigh @@ -1869,6 +2286,10 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Tóg tol STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Athraigh idir tógáil/baint le haghaidh ráillí iarnróid, comharthaí, pointí bealaigh agus stáisiúin. Coinnigh síos Ctrl chun ráillí a bhaint ó phointí bealaigh agus ó stáisiúin freisin STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Tiontaigh/Uasghrádaigh an cineál ráille +STR_RAIL_NAME_RAILROAD :Iarnród +STR_RAIL_NAME_ELRAIL :Iarnród leictrithe +STR_RAIL_NAME_MONORAIL :Aonráille +STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Treoshuíomh an Iosta Traenach @@ -2106,6 +2527,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Taispeá STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Taispeáin na tionscadail a dhéanann lastas a sholáthar agus a ghlacann leis STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Nasc leis an léarscáil bheag STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Roghnaigh na tionscail a thaispeántar ar an léarscáil bheag chomh maith +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Roghnaigh lastas +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Roghnaigh an lastas is mian leat a thaispeáint +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Roghnaigh tionscal +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Roghnaigh an tionscal is mian leat a thaispeáint # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Faisnéis faoin bPíosa Talún @@ -2130,6 +2555,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Lastas a ghlactar leis: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Teorainn luais iarnróid: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Teorainn luais na mbóithre: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Carraigeacha @@ -2140,6 +2566,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Garrantaí STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Talamh faoi shneachta STR_LAI_CLEAR_DESCRIPTION_DESERT :Fásach +STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} ráille +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} ráille ar a bhfuil comharthaí bloc +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} ráille ar a bhfuil réamhchomharthaí +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} ráille ar a bhfuil comharthaí amach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} ráille ar a bhfuil comharthaí teaglama +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} ráille ar a bhfuil comharthaí cosáin +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil comharthaí cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} ráille ar a bhfuil comharthaí bloic agus réamhchomharthaí +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} ráille ar a bhfuil comharthaí bloic agus amach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} ráille ar a bhfuil comharthaí bloic agus teaglama +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} ráille ar a bhfuil comharthaí bloic agus cosáin +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil comharthaí bloic agus cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} ráille ar a bhfuil réamhchomharthaí agus comharthaí amach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} ráille ar a bhfuil réamhchomharthaí agus comharthaí teaglama +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} ráille ar a bhfuil réamhchomharthaí agus comharthaí cosáin +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil réamhchomharthaí agus comharthaí cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} ráille ar a bhfuil comharthaí amach agus teaglama +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} ráille ar a bhfuil comharthaí amach agus cosáin +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil comharthaí amach agus cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} ráille ar a bhfuil comharthaí teaglama agus cosáin +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil comharthaí teaglama agus cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} ráille ar a bhfuil comharthaí cosáin agus cosáin aonbhealaigh +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} iosta traenach STR_LAI_ROAD_DESCRIPTION_ROAD :Bóthair STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Bóthair le soilse sráide @@ -2203,7 +2652,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-2013 An fhoireann OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 An fhoireann OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche @@ -2211,6 +2660,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}Lódáil STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sábháil Scéal STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Lódáil Scéal STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Lódáil Mapa airde +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Sábháil Mapa airde STR_SAVELOAD_HOME_BUTTON :{BLACK}Cliceáil anseo le léim chuig an comhadlann réamhshocraithe sábhála/lódála reatha STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} saor STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liosta na dtiomántán, na gcomhadlann agus na gcomhad cluichí sábháilte @@ -2221,6 +2671,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sábhái STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sábháil an cluiche reatha, ag úsáid an t-ainm roghnaithe STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lódáil STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lódáil an cluiche roghnaithe +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Lódáil an mapa airde roghnaithe STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Sonraí an Chluiche STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Níl aon fhaisnéis le fáil. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2236,17 +2687,17 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Líon na mbailte: STR_MAPGEN_DATE :{BLACK}Dáta: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Líon na dtionscal: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Airde uasta na léarscáile +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Méadaigh airde uasta na sléibhte ar an léarscáil de leibhéal amháin +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Laghdaigh airde uasta na sléibhte ar an léarscáil de leibhéal amháin STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Airde na líne sneachta: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Bog airde na líne sneachta suas ceann amháin STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Bog airde na líne sneachta síos ceann amháin -STR_MAPGEN_RANDOM_SEED :{BLACK}Síol randamach: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Cliceáil chun síol randamach a iontráil -STR_MAPGEN_RANDOM :{BLACK}Déan randamú -STR_MAPGEN_RANDOM_HELP :{BLACK}Athraigh an síol randamach a úsáidtear chun an Tír-Raon a chruthú STR_MAPGEN_LAND_GENERATOR :{BLACK}Talamh a chruthú: STR_MAPGEN_TREE_PLACER :{BLACK}Algartam na gcrann: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Cineál tír-raoin: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Leibhéal na farraige: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Aibhneacha: STR_MAPGEN_SMOOTHNESS :{BLACK}Míne: STR_MAPGEN_VARIETY :{BLACK}Éagsúlacht: STR_MAPGEN_GENERATE :{WHITE}Cruthaigh @@ -2268,7 +2719,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm an STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Méid: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Iontráil síol randamach +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Athraigh airde uasta na léarscáile STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Athraigh airde na líne sneachta STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Athraigh an bhliain tosaigh @@ -2291,11 +2742,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}An bhfu STR_GENERATION_PROGRESS :{WHITE}{NUM}% críochnaithe STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Domhan a chruthú +STR_GENERATION_RIVER_GENERATION :{BLACK}Giniúint aibhneacha STR_GENERATION_TREE_GENERATION :{BLACK}Crainn a chruthú STR_GENERATION_OBJECT_GENERATION :{BLACK}Cruthú oibiachtaí STR_GENERATION_CLEARING_TILES :{BLACK}Limistear garbh agus carraigeach a chruthú STR_GENERATION_SETTINGUP_GAME :{BLACK}Cluiche á chumrú STR_GENERATION_PREPARING_TILELOOP :{BLACK}Lúb tíleanna á rith +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Script reatha STR_GENERATION_PREPARING_GAME :{BLACK}Cluiche á ullmhú # NewGRF settings @@ -2321,9 +2774,12 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Bog Suas STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Bog an comhad NewGRF roghnaithe suas an liosta STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Bog Síos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Bog an comhad NewGRF roghnaithe síos an liosta +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Uasghrádaigh +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Nuashonraigh comhaid NewGRF a bhfuil leagan níos nuaí díobh suiteáilte agat STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Liosta de na comhaid NewGRF atá suiteáilte. Cliceáil ar chomhad chun a pharaiméadair a athrú STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Socraigh paraiméadair +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Taispeáin paraiméadair STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Scoránaigh an pailéad STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Déan an pailéad den NewGRF roghnaithe a scoránú.{}Déan é seo má bhíonn cuma bhándearg ar na grafaicí ón NewGRF seo sa chluiche STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Cuir athruithe i bhfeidhm @@ -2344,6 +2800,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Níor aims STR_NEWGRF_SETTINGS_DISABLED :{RED}Díchumasaithe STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Neamhchomhoiriúnach leis an leagan seo de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Sábháil réamhshocrú +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liosta de na réamhshocraithe atá ar fáil, roghnaigh ceann chun é a chóipeáil chuig an t-ainm sábháilte thíos +STR_SAVE_PRESET_TITLE :{BLACK}Iontráil ainm don réamhshocrú +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}An t-ainm atá roghnaithe faoi láthair don réamhshocrú a shábhálfar +STR_SAVE_PRESET_CANCEL :{BLACK}Cuir ar ceal +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ná hathraigh an réamhshocrú +STR_SAVE_PRESET_SAVE :{BLACK}Sábháil +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Sábháil an réamhshocrú faoin ainm atá roghnaithe faoi láthair + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Athraigh na paraiméadair NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Dún @@ -2374,7 +2840,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite r STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Téigh ar aghaigh chuig an gnáth-sprite roimhe, ag scipeáil thar aon bhréag-sprite nó sprite athdathaithe/clófhoirne agus ag timfhilleadh ag an tús STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Léiriú den sprite atá roghnaithe faoi láthair. Déantar neamhaird den ailíniú agus an sprite seo á tharraingt STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bog an sprite timpeall, ag athrú an seach-chur X agus Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}seach-chur X: {NUM}, seach-chur Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Roghnaigh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Roghnaigh sprite ó áit ar bith ar an scáileán @@ -2396,8 +2861,17 @@ STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING}: Tá STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :an comhad GRF a bhí sé deartha a aistriú STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tá an iomarca NewGRF lódáilte. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :D'fhéadfaí go mbeidh díshioncronú ann má dhéantar {1:STRING} a lódáil mar NewGRF statach le {STRING}. +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprid nach rabhthas ag súil léi (sprid {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Airí Ghmíomhaíocht 0 anaithnid {4:HEX} (sprid {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Iarracht ID neamhbhailí a úsáid (sprid {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tá sprite truaillithe in {STRING}. Taispeánfar gach sprite truaillithe mar chomhartha ceiste (?) dearg. +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Tá iontrálacha iolraccha Ghníomhaíocht 8 ann (sprid {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Léadh tar éis deireadh an pseudo-sprid (sprid {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tá roinnt sprite in easnamh sa tsraith bhunúsach grafaicí atá in úsáid faoi láthair.{}Déan úasghrádú ar an tsraith bhunúsach grafaicí le do thoil +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Tá roinnt sprideanna in easnamh sa tacar bunghraificí atá in úsáid faoi láthair.{}Nuashonraigh an tacar bunghraificí.{}Toisc go bhfuil tú ag imirt ar {YELLOW}roghbhlúire forbróirí (development snapshot) OpenTTD{WHITE}, seans go mbeidh {YELLOW}roghbhlúire forbróirí de na bunghraificí{WHITE} ag teastáil uait +STR_NEWGRF_ERROR_GRM_FAILED :Níl na hacmhainní GRF a iarradh ar fáil (sprid {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Bhí {1:STRING} díchumasaithe ag {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formáid neamhbhailí/anaithnid do leagan amach na spride (sprid {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Rabhadh! @@ -2422,11 +2896,13 @@ STR_NEWGRF_LIST_MISSING :{RED}Comhaid ar STR_NEWGRF_BROKEN :{WHITE}Tá seans maith ann go mbeidh díshioncronú agus/nó tuairteálacha de thoradh ar iompar an NewGRF '{0:STRING}'. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}D'athraigh sé an staid vaigín cumhachtaithe le haghaidh '{1:ENGINE}' nuair nach bhfuil sé in iosta. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}D'athraigh sé fad na feithicle le haghaidh '{1:ENGINE}' nuair nach bhfuil sé laistigh d'iosta. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}D'athraigh sé toilleadh na feithicle i gcomhair '{1:ENGINE}' nuair nach raibh sí laistigh d'iosta ná á hathfheistiú STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tá fad neamhbhailí ag '{VEHICLE}' le '{COMPANY}'. Is dócha gur fadhbanna le NewGRFanna is cúis leis. Is féidir go ndíshioncronófar an cluiche nó go gclisfidh sé STR_NEWGRF_BUGGY :{WHITE}Cuireann an NewGRF '{0:STRING}' faisnéis mícheart ar fáil. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Tá an fhaisnéis lastais/athfheistithe le haghaidh '{1:ENGINE}' difriúil ón liosta ceannacháin i ndiaidh tógála. B'fhéidir go dteipfidh uath-athnuachan/uath-ionadú athfheistiú i gceart dá bharr. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Chruthaigh '{1:STRING}' lúb éigríochta san aisghlaoch táirgeachta. +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tháinig toradh anaithnid/neamhbhailí {2:HEX} ón aisghlaoch {1:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : @@ -2435,7 +2911,14 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window +STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRFanna á scanadh +STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRFanna á scanadh. Ag brath ar an líon acu atá ann, seans go dtógfaidh sé tamall... +STR_NEWGRF_SCAN_STATUS :{BLACK}Scanadh {NUM} NewGRF as líon measta {NUM} NewGRF{P "" anna anna anna anna} +STR_NEWGRF_SCAN_ARCHIVES :Cartlanna á scanadh # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Liosta Comhartaí - {COMMA} {P Ch Ch Ch gC C}omhartha @@ -2465,6 +2948,12 @@ STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post an STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Lastas atá ag teastáil le go bhfásfaidh an baile: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ag teastáil STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ag teastáil sa Gheimhreadh +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} seachadta +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (fós ag teastáil) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (seachadta) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Fásann an baile gach {ORANGE}{COMMA}{BLACK}{NBSP}lá{P "" "" "" "" ""} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Fásann an baile gach {ORANGE}{COMMA}{BLACK}{NBSP}lá{P "" "" "" "" ""} (maoinithe) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}{RED}Níl{BLACK} an baile ag fás STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Teorainn torainn sa bhaile: {ORANGE}{COMMA}{BLACK} uasmhéid: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Cuir suíomh an bhaile i lár an phríomh-amhairc. Osclaítar amharc nua ar shuíomh an bhaile le Ctrl+Cliceáil STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Údarás áitiúil @@ -2506,7 +2995,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Ceannai STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Tabhair breab don údarás áitiúil chun do rátáil a mhéadú, leis an mbaol ann go mbeidh pionós trom ort má bheirtear ort.{}Costas: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}Spriocanna {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Spriocanna Uilíocha +STR_GOALS_GLOBAL_TITLE :{BLACK}Spriocanna uilíocha: STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Ceann ar bith - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Neamhbhainteach - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_COMPANY_TITLE :{BLACK}Spriocanna na cuideachta: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliceáil ar an sprioc chun an príomhamharc a lárú ar an tionscal/baile/tíle. Ctrl+Cliceáil chun fuinneog amhairc nua a oscailt ar shuíomh an tionscail/an bhaile/na tíle # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Ceist @@ -2514,18 +3012,47 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Faisnéis STR_GOAL_QUESTION_CAPTION_WARNING :Rabhadh STR_GOAL_QUESTION_CAPTION_ERROR :Earráid -### Start of Goal Question button list +############ Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Cuir ar ceal +STR_GOAL_QUESTION_BUTTON_OK :OK +STR_GOAL_QUESTION_BUTTON_NO :Níl +STR_GOAL_QUESTION_BUTTON_YES :Tá +STR_GOAL_QUESTION_BUTTON_DECLINE :Diúltaigh +STR_GOAL_QUESTION_BUTTON_ACCEPT :Glac leis +STR_GOAL_QUESTION_BUTTON_IGNORE :Déan neamhaird de +STR_GOAL_QUESTION_BUTTON_RETRY :Atriail +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Roimhe +STR_GOAL_QUESTION_BUTTON_NEXT :Ar aghaidh +STR_GOAL_QUESTION_BUTTON_STOP :Stop +STR_GOAL_QUESTION_BUTTON_START :Tosaigh +STR_GOAL_QUESTION_BUTTON_GO :Téigh +STR_GOAL_QUESTION_BUTTON_CONTINUE :Lean ar aghaidh +STR_GOAL_QUESTION_BUTTON_RESTART :Atosaigh +STR_GOAL_QUESTION_BUTTON_POSTPONE :Cuir siar +STR_GOAL_QUESTION_BUTTON_SURRENDER :Géill +STR_GOAL_QUESTION_BUTTON_CLOSE :Dún +############ End of Goal Question button list # Subsidies window -STR_SUBSIDIES_CAPTION :{WHITE}Fordheontais -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Fordheontais le fáil do sheirbhísí chun: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} a thabhairt ó{STRING} go {STRING}{YELLOW} (roimh {DATE_SHORT}) +STR_SUBSIDIES_CAPTION :{WHITE}Fóirdheontais +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Fóirdheontais le fáil do sheirbhísí chun: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} a thabhairt ó {STRING} go {STRING}{YELLOW} (roimh {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Ceann ar bith - -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbhísí a fhaigheann fordheontas: +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbhísí a fhaigheann fóirdheontas: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} a thabhairt ó {STRING} go {STRING}{YELLOW} ({COMPANY}{YELLOW}, go dtí {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliceáil ar sheirbhís chun an t-amharc a lárú ar thionscal/bhaile. Déantar amharc nua a oscailt ar shuíomh an tionscail/bhaile le Ctrl+Cliceáil # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Leabhar Scéalta {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Leabhar Scéalta Uilíoch +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Leathanach {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Léim chuig leathanach ar leith trína roghnú sa liosta anuas seo. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Roimhe +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gabh chuig an leathanach roimhe +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Ar aghaidh +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gabh chuig an chéad leathanach eile +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Tagairt neamhbhailí spriocanna # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ainmneacha na stáisiún - cliceáil ar ainm chun an t-amharc a lárú ar stáisiún. Osclaítear amharc nua ar shuíomh an stáisiúin le Ctrl+Cliceáil @@ -2540,19 +3067,44 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Níl las # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ag fanacht: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ar an mbealach ó {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} forchoimeádta i gcomhair lódála) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Glactar le 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_RATINGS_BUTTON :{BLACK}Rátálacha STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Taispeáin rátálacha na stáisiún - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Soláthar míosúil agus rátáil áitiúil: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grúpáil de réir +STR_STATION_VIEW_WAITING_STATION :Stáisiún: Ag fanacht +STR_STATION_VIEW_WAITING_AMOUNT :Méid: Ag fanacht +STR_STATION_VIEW_PLANNED_STATION :Stáisiún: Beartaithe +STR_STATION_VIEW_PLANNED_AMOUNT :Méid: Beartaithe +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} ó {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} chuig {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} ó stáisiún anaithnid +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} chuig stáisiún ar bith +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via stáisiún ar bith +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} ón stáisiún seo +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} a stopann ag an stáisiún seo +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} chuig an stáisiún seo +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} gan stad + +STR_STATION_VIEW_GROUP_S_V_D :Foinse-Via-Ceann scríbe +STR_STATION_VIEW_GROUP_S_D_V :Foinse-Ceann scríbe-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Foinse-Ceann scríbe +STR_STATION_VIEW_GROUP_V_D_S :Via-Ceann scríbe-Foinse +STR_STATION_VIEW_GROUP_D_S_V :Ceann scríbe-Foinse-Via +STR_STATION_VIEW_GROUP_D_V_S :Ceann scríbe-Via-Foinse ############ range for rating starts STR_CARGO_RATING_APPALLING :Uafásach @@ -2575,6 +3127,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Taispeá STR_STATION_VIEW_RENAME_STATION_CAPTION :Athainmnigh stáisiún/limistéar lódála +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Dún an t-aerfort +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Cuir cosc ar aerárthaigh tuirlingt ag an aerfort seo # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2609,10 +3163,11 @@ STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Iarmhéi STR_FINANCES_LOAN_TITLE :{WHITE}Iasacht STR_FINANCES_MAX_LOAN :{WHITE}Iasacht Uasta: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} -STR_FINANCES_BORROW_BUTTON :{BLACK}Tabhair ar iasacht{CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Méadaigh méid na hiasachta. Tógtar an oiread agus is féidir a fháil ar iasacht le Ctrl+Cliceáil -STR_FINANCES_REPAY_BUTTON :{BLACK}Aisíoc{CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Aisíoc cuid den íosacht. Déantar an oiread agus is féidir den iasacht a aisíoc le Ctrl+Cliceáil +STR_FINANCES_BORROW_BUTTON :{BLACK}Faigh {CURRENCY_LONG} ar iasacht +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Méadaigh méid na hiasachta. Ctrl+Cliceáil chun an oiread agus is féidir a fháil ar iasacht +STR_FINANCES_REPAY_BUTTON :{BLACK}Aisíoc {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Aisíoc cuid den íosacht. Ctrl+Cliceáil chun an oiread agus is féidir den iasacht a aisíoc +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Bonneagar # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2628,6 +3183,13 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ceann ar bith STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Luach na cuideachta: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}(is le {1:COMPANY} {0:COMMA}%) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Bonneagar: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} {P ph ph ph bp p}íosa iarnróid +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} {P ph ph ph bp p}íosa bóthair +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} {P th th th dt t}íl uisce +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} {P th th th dt t}íl stáisiúin +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} {P "" "" "" n- ""}aerfort +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Rud ar bith STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Tóg CC STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Tóg ceanncheathrú na cuideachta @@ -2635,6 +3197,8 @@ STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Breathan STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Breathnaigh ar cheanncheathrú na cuideachta STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Athlonnaigh an CC STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Tóg ceanncheathrú na cuideachta in áit eile ar chostas 1% de luach na cuideachta +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Sonraí +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Taispeáin líon mionsonraithe na bpíosaí bonneagair STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Aghaigh Nua STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Roghnaigh aghaidh nua don bhainisteoir @@ -2656,6 +3220,18 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ainm an Bhainis STR_BUY_COMPANY_MESSAGE :{WHITE}Tá cuideachta iompair á lorg againn chun seilbh a ghlacadh ar ár gcuideachta.{}{}An bhfuil fonn ort seilbh a ghlacadh ar {COMPANY} ar chostas {CURRENCY_LONG}? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Bonneagar {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Píosaí iarnróid: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Comharthaí +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Píosaí bóthair: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Bóthar +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Trambhealach +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Tíleanna uisce: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canálacha +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stáisiúin: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Tíleanna stáisiúin +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerfoirt +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/bl # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Tionscail @@ -2671,6 +3247,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Táirgea STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (iompraíodh {COMMA}%) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an tionscail. Osclaítear amharc nua ar shuíomh an tionscail le Ctrl+Cliceáil STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Leibhéal táirgeachta: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'fhógair an tionscal go ndúnfaidh sé gan mhoill! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING} @@ -2739,6 +3316,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Scrios a STR_GROUP_RENAME_TOOLTIP :{BLACK}Athainmnigh an grúpa roghnaithe STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Cliceáil chun an grúpa seo a chosaint ón uathionadú uilíoch +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Scrios Grúpa +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Am bhfuil tú cinnte gur mhaith leat an grúpa seo agus aon fhoghrúpaí a scriosadh?? + STR_GROUP_ADD_SHARED_VEHICLE :Cuir le feithiclí comhroinnte STR_GROUP_REMOVE_ALL_VEHICLES :Bain gach feithicil @@ -2758,6 +3338,8 @@ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aerárthaigh Nu STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Costas: {GOLD}{CURRENCY_LONG}{BLACK} Meáchan: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Luas: {GOLD}{VELOCITY}{BLACK} Cumhacht: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Luas: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Luas ar aigéan: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Luas ar chanáil/abhainn: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Costas Coinneála: {GOLD}{CURRENCY_LONG}/bl STR_PURCHASE_INFO_CAPACITY :{BLACK}Toilleadh: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(is féidir athfheistiú) @@ -2772,6 +3354,7 @@ STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Is féid STR_PURCHASE_INFO_ALL_TYPES :Gach cineál lastais STR_PURCHASE_INFO_ALL_BUT :Gach rud seachas {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Iarracht uasta tarraingthe: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Raon: {GOLD}{COMMA} tíl STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liosta chun feithicil traenach a roghnú - cliceáil ar fheithicil le faisnéis a fháil STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liosta chun feithicil bóthair a roghnú - cliceáil ar fheithicil le faisnéis a fháil @@ -2798,6 +3381,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Athainmn STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál loinge STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál aerárthaigh +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Folaigh +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Folaigh +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Folaigh +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Folaigh + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Taispeáin +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Taispeáin +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Taispeáin +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Taispeáin + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Athraigh idir an cineál feithicle traenacha a fholú nó a thaispeáint +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Athraigh idir an cineál feithicle bóthair a fholú nó a thaispeáint +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Athraigh idir an cineál loinge a fholú nó a thaispeáint +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Athraigh idir an cineál aerárthaigh a fholú nó a thaispeáint + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Athainmnigh an cineál feithicle traenach STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Athainmnigh an cineál feithicle bóthair STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Athainmnigh an cineál loinge @@ -2888,10 +3486,12 @@ STR_ENGINE_PREVIEW_SHIP :long STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :inneall gluaiste aonráille STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :inneall gluaiste maglev -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost:as {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 :{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 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ionadaigh{STRING} - {STRING} @@ -2900,13 +3500,21 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Feithicil Bóth STR_REPLACE_VEHICLE_SHIP :Long STR_REPLACE_VEHICLE_AIRCRAFT :Aerárthach +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Feithiclí atá in úsáid +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Colún le feithiclí ar leatsa iad +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Feithiclí atá ar fáil +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Colún leis na feithiclí atá ar fáil chun ionadú a dhéanamh + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Roghnaigh an cineál innill le hathsholáthar STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Roghnaigh an cineál nua innill is mian leat a úsáid in ionad an chineáil innill atá roghnaithe ar chlé STR_REPLACE_VEHICLES_START :{BLACK}Tosaigh ag athsholáthar Feithiclí +STR_REPLACE_VEHICLES_NOW :Ionadaigh gach feithicil anois +STR_REPLACE_VEHICLES_WHEN_OLD :Ionadaigh seanfheithiclí amháin STR_REPLACE_HELP_START_BUTTON :{BLACK}Brúigh le tús a chur leis an gcineál innill atá roghnaithe ar chlé a athsholáthar leis an gcineál innill atá roghnaithe ar dheis STR_REPLACE_NOT_REPLACING :{BLACK}Níl athsholáthar ar bun STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Níl aon fheithicil roghnaithe +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} má tá sé sean STR_REPLACE_VEHICLES_STOP :{BLACK}Stad ag athsholáthar Feithiclí STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Brúigh chun deireadh a chur le hathsholáthar den chineál innill atá roghnaithe ar chlé @@ -2977,6 +3585,7 @@ STR_VEHICLE_STATUS_STOPPED :{RED}Stoptha STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Ag stopadh, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Gan chumhacht STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ag fanacht ar chosán saor +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Rófhada chuig an chéad cheann scríbe eile STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ag déanamh ar {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Gan ordú, {VELOCITY} @@ -3005,6 +3614,7 @@ 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} @@ -3061,7 +3671,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Toillead STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Athfeistigh) STR_REFIT_TITLE :{GOLD}Roghnaigh an lastas le hiompar: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}{}{BLACK}Costas an aisfheistithe: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}{}{BLACK}Ioncam ón athfheistiú: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costas athfheistithe: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ioncam ón athfheistiú: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Roghnaigh na feithiclí le hathfheistiú. Is féidir níos mó ná feithicil amháin a roghnú trí tharraingt leis an luch. Roghnófar an fheithicil iomlán má chliceáltar ar spás folamh. Roghnófar feithicil agus an slabhra ina dhiaidh le Ctrl+Cliceáil STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a iompróidh an traein @@ -3115,6 +3727,10 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Athraigh STR_ORDER_REFIT :{BLACK}Athfheistigh STR_ORDER_REFIT_TOOLTIP :{BLACK}Roghnaigh an cineál lastais le hathfheistiú chuig san ordú seo. Bainfear an t-ordú athfheistithe le Ctrl+Cliceáil +STR_ORDER_REFIT_AUTO :{BLACK}Athfheistigh ag stáisiún +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a ndéanfar athfeistiú chuige san ordú seo. Ctrl+Cliceáil chun an t-ordú athfheistithe a bhaint. Ní dhéanfar athfheistiú ag stáisiún ach amháin má cheadaíonn an fheithicil sin +STR_ORDER_DROP_REFIT_AUTO :Lastas seasta +STR_ORDER_DROP_REFIT_AUTO_ANY :Lastas atá ar fáil STR_ORDER_SERVICE :{BLACK}Seirbhísigh STR_ORDER_DROP_GO_ALWAYS_DEPOT :Téigh i gcónaí @@ -3131,6 +3747,7 @@ STR_ORDER_CONDITIONAL_MAX_SPEED :Luas uasta STR_ORDER_CONDITIONAL_AGE :Aois na feithicle (blianta) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Seirbhís ag teastáil STR_ORDER_CONDITIONAL_UNCONDITIONALLY :I gcónaí +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Saolré fágtha (blianta) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Conas sonraí na feithicle a chur i gcomparáid leis an luach a tugadh STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :cothrom le @@ -3202,12 +3819,26 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ná dílódái STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ná dílódáil agus fan ar lasta iomlán ar bith) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ná dílódáil agus ná lódáil) - +STR_ORDER_AUTO_REFIT :(Athfheistigh go {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Lastas iomlán le hathfheistiú go {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Lastas iomlán de lastas ar bith le hathfheistiú go {STRING}) +STR_ORDER_UNLOAD_REFIT :(Dílódáil agus tóg lastas le hathfheistiú go {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dílódáil agus fan ar lastas iomlán le hathfheistiú go {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dílódáil agus fan ar aon lód iomlán le hathfheistiú go {STRING}) +STR_ORDER_TRANSFER_REFIT :(Aistrigh agus tóg lastas le hathfheistiú go {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Aistrigh agus fan ar lód iomlán le hathfeistiú go {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Aistrigh agus fan ar aon lód iomlán le hathfheistiú go {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Ná dílódáil agus tóg lastas le hathfeistiú go {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ná dílódáil agus fan ar lód iomlán le hathfheistiú go {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ná dílódáil agus fan ar aon lód iomlán le hathfeistiú go {STRING}) + +STR_ORDER_AUTO_REFIT_ANY :lastas atá ar fáil STR_ORDER_STOP_LOCATION_NEAR_END :[taobh is gaire] STR_ORDER_STOP_LOCATION_MIDDLE :[lár] STR_ORDER_STOP_LOCATION_FAR_END :[taobh is faide] +STR_ORDER_OUT_OF_RANGE :{RED} (Tá an chéad cheann scríbe eile as raon) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Léim chuig ordú {COMMA} STR_ORDER_CONDITIONAL_NUM :Léim chuig ordú {COMMA} nuair {STRING} {STRING} {COMMA} @@ -3225,9 +3856,13 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Amchlár STR_TIMETABLE_NO_TRAVEL :Ná taisteal STR_TIMETABLE_NOT_TIMETABLEABLE :Taisteal (uathoibríoch; curtha ar an gclár ama ag an chéad ordú de láimh eile) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Taisteal (gan amchlár) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Taisteal le {2:VELOCITY} ar a mhéad (gan amchlár) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Taisteal (gan amchlár) ag {2:VELOCITY} ar a mhéad STR_TIMETABLE_TRAVEL_FOR :Taisteal ar feadh {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Taisteal ar feadh {STRING} le {VELOCITY} ar a mhéad +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Taisteal (ar feadh {STRING}, gan amchlár) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Taisteal (ar feadh {STRING}, gan amchlár) ag {VELOCITY} ar a mhéad +STR_TIMETABLE_STAY_FOR_ESTIMATED :(fan ar feadh {STRING}, gan amchlár) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(taisteal ar feadh {STRING}, gan amchlár) STR_TIMETABLE_STAY_FOR :agus fan ar feadh {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :agus taisteal ar feadh {STRING} STR_TIMETABLE_DAYS :{COMMA} lá{P "" "" "" "" ""} @@ -3243,6 +3878,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Níor th STR_TIMETABLE_STATUS_START_AT :{BLACK}Tosóidh an t-amchlár seo ag {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Dáta tosaigh +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Roghnaigh dáta mar phointe tosaigh don amchlár seo. Ctrl+Cliceáil chun pointe tosaigh an amchlár a shocrú agus gach feithicil a chomhroinneann an t-ordú seo a dháileadh go cothrom bunaithe ar a hordú coibhneasta, fiú má tá amchlár iomlán ann don ordú sin STR_TIMETABLE_CHANGE_TIME :{BLACK}Athraigh Am STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Athraigh an méid ama ar chóir don ordú aibhsithe a thógáil @@ -3280,9 +3916,9 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Roghnaig # AI debug window -STR_AI_DEBUG :{WHITE}Dífhabhtú AI +STR_AI_DEBUG :{WHITE}Dífhabhtú AI/Scripteanna Cluiche STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ainm an AI +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ainm na scripte STR_AI_DEBUG_SETTINGS :{BLACK}Socruithe an AI STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Athraigh socruithe an AI STR_AI_DEBUG_RELOAD :{BLACK}Athlódáil an AI @@ -3296,6 +3932,8 @@ STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Déan sc STR_AI_DEBUG_CONTINUE :{BLACK}Lean ar aghaidh STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Cuir deireadh leis an sos agus lean leis an AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Amharc ar aschur dífhabhtaithe an AI seo +STR_AI_GAME_SCRIPT :{BLACK}Script Cluiche +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Seiceáil loga na Scripte Cluiche STR_ERROR_AI_NO_AI_FOUND :Níor aimsíodh AI feiliúnach le lódáil.{}Is AI caoch é an AI seo agus ní dhéanfaidh sé aon rud.{}Is féidir leat roinnt AI a íoslódáil leis an gcóras 'Inneachar Ar Líne'.. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Thuairteáil ceann de na AIanna atá ar rith. Déan é seo a thuairisciú d'údar an AI le do thoil, le seat scáileáin den Fhuinneog Dífhabhtaithe AI ag gabháil leis. @@ -3303,20 +3941,32 @@ STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Níl an # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Cumrú AI +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}An Script Cluiche a lódálfar sa chéad chluiche eile +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Na AInna a lódálfar sa chéad chluiche eile STR_AI_CONFIG_HUMAN_PLAYER :Imreoir Daonna STR_AI_CONFIG_RANDOM_AI :AI Randamach +STR_AI_CONFIG_NONE :(ceann ar bith) STR_AI_CONFIG_MOVE_UP :{BLACK}Bog Suas STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Bog an AI roghnaithe suas an liosta STR_AI_CONFIG_MOVE_DOWN :{BLACK}Bog Síos STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Bog an AI roghnaithe síos sa liosta +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script Cluiche +STR_AI_CONFIG_AI :{SILVER}AInna +STR_AI_CONFIG_CHANGE :{BLACK}Roghnaigh {STRING} STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :AI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Script Cluiche +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Lódáil script eile STR_AI_CONFIG_CONFIGURE :{BLACK}Cumraigh STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Cumraigh paraiméadair an AI # Available AIs window +STR_AI_LIST_CAPTION :{WHITE}{STRING} atá ar fáil +STR_AI_LIST_CAPTION_AI :AInna +STR_AI_LIST_CAPTION_GAMESCRIPT :Scripteanna Cluichí STR_AI_LIST_TOOLTIP :{BLACK}Cliceáil chun AI a roghnú STR_AI_LIST_AUTHOR :{LTBLUE}Údar: {ORANGE}{STRING} @@ -3325,19 +3975,25 @@ STR_AI_LIST_URL :{LTBLUE}URL: {O STR_AI_LIST_ACCEPT :{BLACK}Glac leis STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Roghnaigh an AI aibhsithe -STR_AI_LIST_CANCEL :{BLACK}Cealaigh +STR_AI_LIST_CANCEL :{BLACK}Cuir ar ceal STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ná hathraigh an AI # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}Paraiméadair {STRING} +STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script an Chluiche STR_AI_SETTINGS_CLOSE :{BLACK}Dún STR_AI_SETTINGS_RESET :{BLACK}Athshocraigh STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Líon na laethanta a thógfaidh sé chun an AI seo a thosú tar éis an ceann roimhe (a bheag nó a mhór): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} léigh mé de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} loga athruithe de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} ceadúnas de {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Timthriall téacs +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Timthriall téacs na fuinneoige sa chaoi go mbeidh sé ar fad ann gan gá duit scrollú STR_TEXTFILE_VIEW_README :{BLACK}Amharc ar léigh mé STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Loga na n-athruithe STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ceadúnas @@ -3350,6 +4006,8 @@ STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHI STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% +STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Costas: {CURRENCY_LONG} @@ -3358,6 +4016,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Ioncam: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Aistrigh: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Aistrigh: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Aistriú: {CURRENCY_LONG}{WHITE} / {GREEN}Ioncam: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Aistriú: {CURRENCY_LONG}{WHITE} / {GREEN}Ioncam: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Aistriú: {CURRENCY_LONG}{WHITE} / {RED}Costas: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Aistriú: {CURRENCY_LONG}{WHITE} / {RED}Costas: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Costas Measta: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ioncam Measta: {CURRENCY_LONG} @@ -3389,6 +4051,7 @@ STR_ERROR_PNGMAP_MISC :{WHITE}... chua STR_ERROR_BMPMAP :{WHITE}Ní féidir tírdhreach a lódáil ó BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... níorbh fhéidir an cineál íomhá a thiontú. +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... tá an íomhá rómhór STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Rabhadh faoin scála STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ní mholtar duit méid na léarscáile foinsí a athrú an iomarca. Lean leis an nginiúint? @@ -3397,6 +4060,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ní mho STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Níor aimsíodh ach sraith fuaimeanna tacachumais. Má tá fuaimeanna uait, suiteáil sraith fuaimeanna sa chóras íoslódála inneachair. # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Seat scáileán ollmhór +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Beidh taifeach {COMMA} x {COMMA} pictilín ag an seat scáileáin. D'fhéadfadh sé go dtógfaidh sé píosa an seat scáileáin a thógáil. An mian leat leanúint ar aghaidh? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Sábháladh an seat scáileáin mar '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Theip ar an seat scáileáin! @@ -3420,6 +4085,7 @@ STR_ERROR_OWNED_BY :{WHITE}... is l STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... is le cuideachta eile an limistéar STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... baineadh an teorainn tírdhreachaithe amach STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... baineadh teorainn glanta na dtíleanna amach +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... teorainn chun crainnte a chur bainte amach STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Caithfidh ainm uathúil a bheith ann STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}Tá {1:STRING} sa bhealach STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ní cheadaítear é seo le linn sosa @@ -3428,6 +4094,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ní chea STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Ní cheadaíonn údarás áitiúil {TOWN} é seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Diúltaíonn údarás áitiúil {TOWN} cead a thabhairt chun aerfort eile a thógáil sa bhaile seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Diúltaíonn údarás áitiúil {TOWN} cead don aerfort mar gheall ar imní faoi thorann +STR_ERROR_BRIBE_FAILED :{WHITE}Fuair cigire réigiúnach amach faoin iarracht a rinne tú breab a thabhairt # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Ní féidir talamh a ardú anseo... @@ -3437,6 +4104,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Dhéanfa STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ag leibhéal na farraige cheana féin STR_ERROR_TOO_HIGH :{WHITE}... ró-ard STR_ERROR_ALREADY_LEVELLED :{WHITE}... tá sé réidh cheana féin +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Ina dhiaidh sin bheadh an droichead os a chionn ró-ard. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ní féidir ainm na cuideachta a athrú... @@ -3484,6 +4152,11 @@ STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... ní STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... ní féidir é a thógáil ach i gceantar íseal STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... ní féidir é a chur ach in aice le taobhanna na léarscáile STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ní féidir foraois a chur ach taobh thuas den líne sneachta amháin +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... ní féidir iad a thógáil ach os cionn na líne sneachta +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... ní féidir iad a thógáil ach faoin líne sneachta + +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Ní raibh aon áit oiriúnach i gcomhair tionscail '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Athraigh na paraiméadair don ghiniúint léarscáile chun léarscáil níos fearr a fháil # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ní féidir stáisiún iarnróid a thógáil anseo... @@ -3604,6 +4277,8 @@ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ní féi STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ní féidir aibhneacha a chur anseo... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... ní mór é a thógáil ar uisce STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... ní féidir tógáil ar uisce +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ní féidir tógáil ar an bhfarraige mhór +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ní féidir tógáil ar chanáil STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... Nil tu abalta togadh ar an uise STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Ní mór canáil a scriosadh ar dtús STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ní féidir uiscerian a thógáil anseo... @@ -3619,6 +4294,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Ní mór STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ní féidir tosú agus críochnú san áit céanna STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Níl cinn an droichid ag an leibhéal céanna STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tá an droichead ró-íseal don tír-raon +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Tá an droichead ró-ard don tír-raon seo. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Ní mór an tús agus an deireadh a bheith i líne STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ní mór go mbeadh an dá thaobh den droichead ar thalamh STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... droichead rófhada @@ -3645,6 +4321,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... is l STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ní féidir an grúpa a chruthú... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Ní féidir an grúpa seo a scriosadh... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Ní féidir an grúpa a athainmniú... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Ní féidir máthairghrúpa a shocrú... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ní féidir gach feithicil a bhaint ón ngrúpa seo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ní féidir an fheithicil a chur leis an ngrúpa seo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ní féidir feithiclí comhroinnte a chur le grúpa... @@ -3700,10 +4377,15 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ní féi STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... tá an fheithicil scriosta +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ní bheidh aon fheithicil ar fáil ar chor ar bith +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Athraigh do chumraíocht NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Níl aon fheithicil ar fáil fós +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Tosaigh cluiche nua ó {DATE_SHORT} ar aghaidh nó úsáid NewGRF lena gcuirtear feithiclí luath ar fáil # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ní féidir iallach a chur ar thraein dul thar comhartha agus contúirt ann... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ní féidir treo na traenach a aisiompú... +STR_ERROR_TRAIN_START_NO_POWER :Níl aon chumhacht ag an traein STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Ní féidir iallach a chur ar fheithicil bóthair casadh timpeall... @@ -3726,6 +4408,7 @@ STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Ní féi STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Ní féidir comhroinnt liosta na n-orduithe a stopadh... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Ní féidir liosta orduithe a chóipeáil... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... rófhada ón gceann scríbe roimhe seo +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... níl raon fada go leor ag an aerárthach # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ní féidir amchlár a thabhairt d'fheithicil... @@ -3742,6 +4425,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ní féi STR_DESKTOP_SHORTCUT_COMMENT :Cluiche ionsamhlúcháin bunaithe ar Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Pacáiste fuaimeanna gan aon fhuaimeanna ann. +STR_BASEMUSIC_WIN_DESCRIPTION :Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Pacáiste ceoil gan aon cheol iarbhír ann. ##id 0x2000 # Town building names @@ -3865,7 +4556,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Choo-Choo Ploddyphut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Choo-Choo Powernaut -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Choo-Choo Mightymover +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Choo-Choo MightyMover STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Díosail STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Díosail STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Gal) @@ -4074,7 +4765,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Bád Farantóir STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Bád Farantóireachta Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Lastlong Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Lastlong Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Lastlong Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Lastlong MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Lastlong Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4125,8 +4816,8 @@ STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} -STR_FORMAT_BUOY_NAME :{TOWN} Baoi -STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Baoi #{COMMA} +STR_FORMAT_BUOY_NAME :Baoi {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Baoi {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(Cuideachta {COMMA}) STR_FORMAT_GROUP_NAME :Grúpa {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} @@ -4139,7 +4830,7 @@ STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Iosta Feithicl STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Iosta Feithiclí Bóthair {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Iosta Long {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Iosta Long {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Haingear +STR_FORMAT_DEPOT_NAME_AIRCRAFT :Haingear {STATION} STR_UNKNOWN_STATION :stáisiún anaithnid STR_DEFAULT_SIGN_NAME :Comhartha @@ -4168,6 +4859,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (folaithe) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4191,6 +4883,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4202,8 +4895,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4214,9 +4905,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 31b738c610..3060ed353c 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -97,30 +97,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Bevande fr # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passegger{P o i} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passegger{P o i} STR_QUANTITY_COAL :{WEIGHT_LONG} di carbone -STR_QUANTITY_MAIL :{COMMA} sacc{P o hi} postal{P e i} +STR_QUANTITY_MAIL :{COMMA}{NBSP}sacc{P o hi} postal{P e i} STR_QUANTITY_OIL :{VOLUME_LONG} di petrolio -STR_QUANTITY_LIVESTOCK :{COMMA} cap{P o i} di bestiame -STR_QUANTITY_GOODS :{COMMA} cass{P a e} di beni +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}cap{P o i} di bestiame +STR_QUANTITY_GOODS :{COMMA}{NBSP}cass{P a e} di beni STR_QUANTITY_GRAIN :{WEIGHT_LONG} di grano STR_QUANTITY_WOOD :{WEIGHT_LONG} di legname STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} di ferro STR_QUANTITY_STEEL :{WEIGHT_LONG} di acciaio -STR_QUANTITY_VALUABLES :{COMMA} bors{P a e} di valori +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bors{P a e} di valori STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} di rame STR_QUANTITY_MAIZE :{WEIGHT_LONG} di mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} di frutta -STR_QUANTITY_DIAMONDS :{COMMA} sacc{P o hi} di diamanti +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sacc{P o hi} di diamanti STR_QUANTITY_FOOD :{WEIGHT_LONG} di cibo STR_QUANTITY_PAPER :{WEIGHT_LONG} di carta -STR_QUANTITY_GOLD :{COMMA} sacc{P o hi} di oro +STR_QUANTITY_GOLD :{COMMA}{NBSP}sacc{P o hi} di oro STR_QUANTITY_WATER :{VOLUME_LONG} di acqua STR_QUANTITY_WHEAT :{WEIGHT_LONG} di frumento STR_QUANTITY_RUBBER :{VOLUME_LONG} di gomma STR_QUANTITY_SUGAR :{WEIGHT_LONG} di zucchero -STR_QUANTITY_TOYS :{COMMA} giocattol{P o i} -STR_QUANTITY_SWEETS :{COMMA} sacc{P o hi} di caramelle +STR_QUANTITY_TOYS :{COMMA}{NBSP}giocattol{P o i} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sacc{P o hi} di caramelle STR_QUANTITY_COLA :{VOLUME_LONG} di Cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} di zucchero filato STR_QUANTITY_BUBBLES :{COMMA} bollicin{P a e} @@ -167,12 +167,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}TUT # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passegger{P o i} -STR_BAGS :{COMMA} sacc{P o hi} -STR_TONS :{COMMA} tonnellat{P a e} -STR_LITERS :{COMMA} litr{P o i} -STR_ITEMS :{COMMA} oggett{P o i} -STR_CRATES :{COMMA} cass{P a e} +STR_PASSENGERS :{COMMA}{NBSP}passegger{P o i} +STR_BAGS :{COMMA}{NBSP}sacc{P o hi} +STR_TONS :{COMMA}{NBSP}tonnellat{P a e} +STR_LITERS :{COMMA}{NBSP}litr{P o i} +STR_ITEMS :{COMMA}{NBSP}oggett{P o i} +STR_CRATES :{COMMA}{NBSP}cass{P a e} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Blu scuro @@ -193,37 +193,37 @@ STR_COLOUR_GREY :Grigio STR_COLOUR_WHITE :Bianco # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA} hp -STR_UNITS_POWER_METRIC :{COMMA} hp -STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonnellat{P a e} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonnellat{P a e} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l -STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P e i} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P o i} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P e i} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr{P o i} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} piedi -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}piedi +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtro: @@ -250,6 +250,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra di STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra di scorrimento - scorre l'elenco a sinistra/destra STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolisce edifici etc. su un riquadro di terra. CTRL seleziona l'area diagonalmente. MAIUSC alterna fra costruzione e stima dei costi +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostra nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostra nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostra nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostra nascosti + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Mostra anche i tipi di veicolo ferroviario che sono stati nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostra anche i tipi di automezzo che sono stati nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Mostra anche i tipi di nave che sono stati nascosti +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mostra anche i tipi di aeromobile che sono stati nascosti + # Query window STR_BUTTON_DEFAULT :{BLACK}Predefinito STR_BUTTON_CANCEL :{BLACK}Annulla @@ -363,7 +374,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Esci ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opzioni gioco -STR_SETTINGS_MENU_CONFIG_SETTINGS :Impostazioni avanzate +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Impostazioni STR_SETTINGS_MENU_SCRIPT_SETTINGS :Impostazioni IA e Script STR_SETTINGS_MENU_NEWGRF_SETTINGS :Impostazioni NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opzioni trasparenza @@ -472,38 +483,56 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Attiva/disattiv STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Attiva/disattiva colorazione blocchi invalidati ############ range ends here -############ range for days starts (also used for the place in the highscore window) -STR_ORDINAL_NUMBER_1ST :1 -STR_ORDINAL_NUMBER_2ND :2 -STR_ORDINAL_NUMBER_3RD :3 -STR_ORDINAL_NUMBER_4TH :4 -STR_ORDINAL_NUMBER_5TH :5 -STR_ORDINAL_NUMBER_6TH :6 -STR_ORDINAL_NUMBER_7TH :7 -STR_ORDINAL_NUMBER_8TH :8 -STR_ORDINAL_NUMBER_9TH :9 -STR_ORDINAL_NUMBER_10TH :10 -STR_ORDINAL_NUMBER_11TH :11 -STR_ORDINAL_NUMBER_12TH :12 -STR_ORDINAL_NUMBER_13TH :13 -STR_ORDINAL_NUMBER_14TH :14 -STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :1* +STR_ORDINAL_NUMBER_2ND :2* +STR_ORDINAL_NUMBER_3RD :3* +STR_ORDINAL_NUMBER_4TH :4* +STR_ORDINAL_NUMBER_5TH :5* +STR_ORDINAL_NUMBER_6TH :6* +STR_ORDINAL_NUMBER_7TH :7* +STR_ORDINAL_NUMBER_8TH :8* +STR_ORDINAL_NUMBER_9TH :9* +STR_ORDINAL_NUMBER_10TH :10* +STR_ORDINAL_NUMBER_11TH :11* +STR_ORDINAL_NUMBER_12TH :12* +STR_ORDINAL_NUMBER_13TH :13* +STR_ORDINAL_NUMBER_14TH :14* +STR_ORDINAL_NUMBER_15TH :15* +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -812,13 +841,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} ha raggiunto il deposito STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ha raggiunto l'hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} non ha abbastanza ordini pianificati STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ha un ordine vuoto STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ha alcuni ordini duplicati STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ha una stazione non valida nei suoi ordini -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} ha nei suoi ordini un aeroporto con una pista troppo corta STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} sta invecchiando STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} sta invecchiando molto @@ -901,10 +929,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraniano (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automezzi STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Seleziona il lato della strada sul quale devono guidare i veicoli STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Guida a sinistra @@ -940,11 +964,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalani STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvataggi automatici STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleziona l'intervallo fra i salvataggi automatici della partita +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :No STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Ogni mese STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ogni 3 mesi STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Ogni 6 mesi STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Ogni 12 mesi +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleziona la lingua da utilizzare per l'interfaccia @@ -956,8 +982,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Risoluzi STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Seleziona la risoluzione dello schermo da utilizzare STR_GAME_OPTIONS_RESOLUTION_OTHER :Altra -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato screenshot -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selezionare il formato da usare per gli screenshot +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Dimensione interfaccia +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione deglie elementi dell'interfaccia grafica + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normale +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doppia +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla STR_GAME_OPTIONS_BASE_GRF :{BLACK}Pacchetto grafico di base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Seleziona il pacchetto grafico di base da utilizzare @@ -973,6 +1003,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selezion STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} file corrott{P o i} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informazioni aggiuntive sul pacchetto musicale di base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Errore nel recupero della lista delle risoluzioni supportate STR_ERROR_FULLSCREEN_FAILED :{WHITE}Attivazione modalità schermo intero non riuscita # Custom currency window @@ -1051,6 +1082,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Molto pianeggia STR_TERRAIN_TYPE_FLAT :Pianeggiante STR_TERRAIN_TYPE_HILLY :Collinare STR_TERRAIN_TYPE_MOUNTAINOUS :Montuoso +STR_TERRAIN_TYPE_ALPINIST :Alpino STR_CITY_APPROVAL_PERMISSIVE :Permissivo STR_CITY_APPROVAL_TOLERANT :Tollerante @@ -1058,8 +1090,8 @@ STR_CITY_APPROVAL_HOSTILE :Ostile STR_WARNING_NO_SUITABLE_AI :{WHITE}Nessuna IA adatta disponibile...{}È possibile scaricare numerose IA tramite il sistema 'Contenuti online' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Impostazioni avanzate +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Impostazioni STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtro: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Espandi tutti STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Comprimi tutti @@ -1072,11 +1104,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Impostazione di STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Impostazione della compagnia (conservata nei salvataggi; influenza solo le nuove partite) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Impostazione della compagnia (conservata nel salvataggio; influenza solo la compagnia corrente) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mostra: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Limita la lista sottostante alle sole impostazioni con valore modificato -STR_CONFIG_SETTING_RESTRICT_BASIC :Impostazioni di base -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Impostazioni avanzate -STR_CONFIG_SETTING_RESTRICT_ALL :Tutte le impostazioni (utenti esperti) +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Limita la lista sottostante usando i filtri predefiniti +STR_CONFIG_SETTING_RESTRICT_BASIC :Di base (solo le impostazioni principali) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanzate (la maggior parte delle impostazioni) +STR_CONFIG_SETTING_RESTRICT_ALL :Per esperti (tutte le impostazioni, incluse quelle speciali) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Impostazioni con un valore diverso da quello predefinito STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Impostazioni con un valore diverso di quello impostato a inizio partita @@ -1087,6 +1120,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Impostazioni di STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Impostazioni di gioco (conservate nel salvataggio; influenzano solo la partita corrente) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Impostazioni della compagnia (conservate nei salvataggi; influenzano solo le nuove partite) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Impostazioni della compagnia (conservate nel salvataggio; influenzano solo la compagnia corrente) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Per mostrare tutti i risultati impostare la{}{SILVER}Categoria {BLACK}su {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Per mostrare tutti i risultati impostare il{}{SILVER}Tipo {BLACK}su {WHITE}Tutti i tipi di impostazioni +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Per mostrare tutti i risultati impostare la{}{SILVER}Categoria {BLACK}su {WHITE}{STRING} {BLACK}e il {SILVER}Tipo {BLACK}su {WHITE}Tutti i tipi di impostazioni +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nessuna - STR_CONFIG_SETTING_OFF :No STR_CONFIG_SETTING_OFF.ms :No @@ -1149,8 +1186,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Controlla l'att STR_CONFIG_SETTING_CITY_APPROVAL :Atteggiamento della città in merito alle modifiche: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Seleziona il modo in cui il rumore e i danni all'ambiente da parte delle compagnie possono influenzare la valutazione delle città e le successive operazioni di costruzione nell'area controllata -STR_CONFIG_SETTING_BUILDONSLOPES :Consenti la costruzione su pendii e coste: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Se abilitato, binari e stazioni possono essere costruiti sulla maggior parte dei pendii. Se disabilitato, è permesso costruirli solo su pendii rivolti nella stessa direzione, per i quali non è necessario costruire fondamenta +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altezza massima mappa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Imposta l'altezza massima consentita per le montagne sulla mappa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Impossibile impostare l'altezza massima della mappa a questo valore. Almeno una delle montagne della mappa è più alta STR_CONFIG_SETTING_AUTOSLOPE :Consenti rimodellazione terreno sotto a edifici, rotaie, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Consente la rimodellazione del terreno sotto edifici e rotaie senza doverli rimuovere STR_CONFIG_SETTING_CATCHMENT :Consenti aree di copertura più realistiche: {STRING} @@ -1175,16 +1213,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Impedisci a tre STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Le curve a 90 gradi avvengono quando un binario orizzontale è seguito direttamente da un binario verticale nel riquadro adiacente, facendo sì che un treno che attraversa il bordo fra i riquadri curvi di 90 gradi invece dei 45 gradi delle altre combinazioni di binari. L'impostazione si applica anche al raggio di virata delle navi STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Consenti di unire stazioni non direttamente adiacenti: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Consente di aggiungere nuove parti a una stazione senza toccare direttamente le parti esistenti. Richiede l'uso di CTRL+clic per posizionare le nuove parti -STR_CONFIG_SETTING_IMPROVEDLOAD :Usa l'algoritmo di caricamento migliorato: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Se abilitato, più veicoli fermi a una stazione sono caricati in modo sequenziale. Il caricamento di un veicolo inizia solo quando è presente in attesa una quantità di carico sufficiente da riempire il veicolo precedente -STR_CONFIG_SETTING_GRADUAL_LOADING :Carica i veicoli gradualmente: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Carica i veicoli gradualmente utilizzando la durata di caricamento specifica del veicoli, invece di caricare tutto insieme con un tempo fisso dipendente solo dalla quantità di carico STR_CONFIG_SETTING_INFLATION :Inflazione: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Abilita l'inflazione nell'economia, facendo crescere i costi leggermente più in fretta dei compensi -STR_CONFIG_SETTING_SELECTGOODS :Scarica il carico in una stazione solo se richiesto: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Consegna i carichi a una stazione in cui ha caricato almeno un veicolo. In questo modo si evita una cattiva valutazione per i carichi che non sono processati a una stazione STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Lunghezza massima dei ponti: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Lunghezza massima per la costruzione dei ponti +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altezza massima dei ponti: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altezza massima per la costruzione dei ponti STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Lunghezza massima dei tunnel: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Lunghezza massima per la costruzione dei tunnel STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Costruzione delle industrie primarie: {STRING} @@ -1210,8 +1244,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Seleziona il va STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :all'inizio STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :al centro STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :alla fine -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Accodamento automezzi fuori da una stazione occupata: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Fa attendere gli automezzi davanti alle fermate occupate finché non si liberano STR_CONFIG_SETTING_AUTOSCROLL :Scorri visuali quando il mouse è su un bordo: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Se abilitato, le visuali iniziano a scorrere quando il mouse è vicino al bordo della finestra STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Disabilitato @@ -1242,10 +1274,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Consenti fermat STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Consente la costruzione di fermate stradali passanti sulle strade di proprietà della città STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Consenti fermate passanti sulle strade di proprietà degli avversari: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Consente la costruzione di fermate stradali passanti sulle strade di proprietà delle altre compagnie -STR_CONFIG_SETTING_ADJACENT_STATIONS :Consenti la costruzione di stazioni adiacenti: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Consente a stazioni diverse di toccarsi -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Abilita pacchetti di locomotive NewGRF multipli: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opzione per la compatibilità con i vecchi NewGRF. Si raccomanda di non disabilitarla, a meno di non essere a conoscenza degli effetti STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non è possibile modificare questa impostazione quando esistono veicoli STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenzione infrastrutture: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Se abilitata, le infrastrutture causano dei costi di manutenzione. I costi crescono in modo più che proporzionale alla dimensione della rete, influenzando maggiormente le compagnie più grandi rispetto alle piccole @@ -1276,35 +1304,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Durata dei mess STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durata di visualizzazione dei messaggi d'errore nelle finestre rosse. Note: alcuni messaggi d'errore (critici) non sono chiusi automaticamente anche allo scadere del tempo, ma devono essere chiusi manualmente STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} second{P 0 o i} STR_CONFIG_SETTING_HOVER_DELAY :Mostra suggerimenti: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Ritardo con cui i suggerimenti sono mostrati al passaggio del mouse su un elemento del'interfaccia. In alternativa, i messaggi possono essere attivati col pulsante destro del mouse -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Al passaggio del mouse dopo {COMMA} second{P 0 o i} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Ritardo con cui i suggerimenti sono mostrati al passaggio del mouse su un elemento del'interfaccia. In alternativa, i messaggi possono essere attivati col pulsante destro del mouse impostando questo valore a 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Al passaggio del mouse dopo {COMMA} millisecond{P 0 o i} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Al clic col pulsante destro STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra la popolazione di una città nell'etichetta del nome: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mosta la popolazione delle città nella loro etichetta sulla mappa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Spessore delle linee nei grafici: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Larghezza delle linee nei grafici. Le linee sottili sono più leggibili, quelle più spesse sono più facili da vedere e i colori più facili da distinguere +STR_CONFIG_SETTING_LANDSCAPE :Paesaggio: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :I paesaggi definiscono scenari di gioco di base che differiscono per i carichi disponibili e per i requisiti di crescita delle città. NewGRF e Script offrono tuttavia un controllo più fine su questi aspetti STR_CONFIG_SETTING_LAND_GENERATOR :Generatore terreno: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Il generatore originale dipende dal pacchetto grafico di base e si limita a comporre insieme frammenti di paesaggio di forma fissa. TerraGenesis è un generatore basato sul Rumore di Perlin che offre impostazioni più fini STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo di terreno: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Solo TerraGenesis) Tipo di dislivelli presenti nel paesaggio +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densità delle industrie: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Determina quante industrie sono generate e attorno a quale livello sono mantenute nel corso della partita STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Massima distanza delle raffinerie dal bordo della mappa: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Le raffinerie sono costruite solo vicino ai bordi della mappa, ovvero sulla costa nel caso di mappe insulari STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altezza delle nevi perenni: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregolarità del terreno (solo TerraGenesis): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Determina la quota alla quale appare la neve nei paesaggi sub-artici. La neve ha anche l'effetto di influenzare la generazione delle industrie e i requisiti per la crescita delle città +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregolarità del terreno: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Solo TerraGenesis) Seleziona la frequenza delle colline. I paesaggi morbidi presentano poche colline di forma allargata. I paesaggi accidentati hanno molte colline, che potrebbero apparire ripetitive STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Molto morbido STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Morbido STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Accidentato STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Molto accidentato +STR_CONFIG_SETTING_VARIETY :Varietà del terreno: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Solo TerraGenesis) Determina in quale misura la mappa affianca aree montuose ed aree pianeggianti. Poiché questa impostazione agisce abbassando progressivamente la quota del terreno, le altre impostazioni dovrebbero essere impostate per un terreno montuoso +STR_CONFIG_SETTING_RIVER_AMOUNT :Quantità di fiumi: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Seleziona la quantità di fiumi generati STR_CONFIG_SETTING_TREE_PLACER :Algoritmo di piazzamento degli alberi: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Seleziona la modalità di distribuzione degli alberi sulla mappa: 'Originale' pianta gli alberi spargendoli in modo uniforme, 'Migliorato' li pianta in gruppi STR_CONFIG_SETTING_TREE_PLACER_NONE :Nessuno STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originale STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Migliorato +STR_CONFIG_SETTING_ROAD_SIDE :Automezzi: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Seleziona il lato di guida STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotazione heightmap: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Antioraria STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Oraria -STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitudine delle mappe pianeggiante: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Consenti la rimodellazione del riquadri di terreno ai bordi della mappa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Se disabilitato, ai bordi della mappa è sempre presente dell'acqua +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitudine delle mappe pianeggianti: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Uno o più riquadri sul lato nord non sono vuoti STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Uno o più riquadri su uno dei bordi non sono d'acqua @@ -1325,7 +1367,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Scorrimento mor STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlla il modo in cui la visuale principale scorre verso una specifica posizione quando si fa clic sulla minimappa o si ordina di visualizzare un oggetto specifico sulla mappa. Se abilitata, la visuale scorre in modo morbido. Se disabilitata, salta direttamente al punto prescelto STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra un tooltip di misura durante la costruzione: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostra le distanze in riquadri e le differenze di altezza quando si trascina durante le operazioni di costruzione -STR_CONFIG_SETTING_LIVERIES :Mostra le livree delle compagnie: {STRING} +STR_CONFIG_SETTING_LIVERIES :Mostra le livree specifiche per tipo di veicolo: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controlla l'utilizzo delle livree specifiche per il tipo di veicolo (invece di quelle specifiche della compagnia) STR_CONFIG_SETTING_LIVERIES_NONE :Nessuna STR_CONFIG_SETTING_LIVERIES_OWN :Propria compagnia @@ -1355,17 +1397,15 @@ 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_AUTOSAVE :Salvataggi automatici: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleziona l'intervallo fra i salvataggi automatici della partita + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Formato data nei nomi dei salvataggi: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato della data nei nomi dei file delle partite salvate STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :Lungo (31 Dic 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :Corto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Tavolozza predefinita da utilizzare per i NewGRF che non ne specificano alcuna: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Tavolozza predefinita da utilizzare per i NewGRF che non ne specificano alcuna -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Tavolozza DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Tavolozza Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Metti in pausa all'inizio di una nuova partita: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Se abilitata, il gioco andrà automaticamente in pausa all'inizio di una nuova partita, permettendo di esaminare meglio la mappa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Azioni consentite durante la pausa: {STRING} @@ -1374,7 +1414,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nessuna STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Tutte tranne quelle di costruzione STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Tutte tranne quelle di modifica del terreno STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Tutte -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utilizza la lista veicoli avanzata: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utilizza i gruppi nella lista veicoli: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Abilita l'utilizzo delle liste veicoli avanzate per raggruppare i veicoli STR_CONFIG_SETTING_LOADING_INDICATORS :Utilizza gli indicatori di caricamento: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Determina se gli indicatori di caricamento sono mostrati sopra i veicoli in caricamento o scaricamento @@ -1389,7 +1429,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo di ferrovi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :La prima disponibile STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :L'ultima disponibile STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :La più usata -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra i binari riservati: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra i percorsi riservati sui binari: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dà ai binari riservati un colore differente, aiutando a correggere problemi di treni che si rifiutano di entrare in blocchi protetti con segnali a percorso STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantieni aperte le finestre di costruzione dopo l'uso: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantiene aperti dopo l'uso gli strumenti di costruzione di ponti, tunnel, etc. @@ -1448,7 +1488,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Gli intervalli STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Determina se la manutenzione dei veicoli è controllata dal tempo trascorso dall'ultima manutenzione piuttosto che dalla riduzione dell'affidabilità di una certa frazione di quella massima STR_CONFIG_SETTING_SERVINT_TRAINS :Intervallo manutenzione predefinito treni: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Imposta l'intervallo di manutenzione predefinito per i nuovi veicoli ferroviari, quando non viene impostato nessun intervallo esplicito -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} giorn{P 0 o i}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}giorn{P 0 o i}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Disabilitato STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervallo manutenzione predefinito automezzi: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Imposta l'intervallo di manutenzione predefinito per i nuovi automezzi, quando non viene impostato nessun intervallo esplicito @@ -1587,12 +1627,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 su {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nessuna STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Moltiplicatore iniziale dimensioni metropoli: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Dimensione media delle metropoli in rapporto alle normali città all'inizio della partita -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Rimuovi segmenti isolati con la ricostruzione delle strade cittadine: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Rimuove i segmenti di strada abbandonati come parte di una ricostruzione finanziata delle strade -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aggiorna il grafo di distribuzione ogni {STRING} giorn{P 0:2 o i} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aggiorna il grafo di distribuzione ogni {STRING}{NBSP}giorn{P 0:2 o i} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tempo fra due ricalcoli consecutivi del grafo delle rotte. Ad ogni ricalcolo vengono generati i piani per una sola componente del grafo. Ciò significa che una valore X per questa impostazione non causa il ricalcolo dell'intero grafo ogni X giorni, ma solo di una componente. Più breve l'intervallo impostato, più tempo la CPU consuma per calcolare il grafo. Più lungo l'intervallo, più a lungo bisogna attendere prima che la distribuzione abbia inizio su nuovi percorsi. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Impiega {STRING} giorn{P 0:2 o i} per il ricalcolo del grafo di distribuzione +STR_CONFIG_SETTING_LINKGRAPH_TIME :Impiega {STRING}{NBSP}giorn{P 0:2 o i} per il ricalcolo del grafo di distribuzione STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tempo impiegato per il ricalcolo di una singola componente del grafo. All'avvio di un ricalcolo viene creato un thread che è mantenuto in esecuzione per il numero di giorni impostato. Più corto è l'intervallo impostato, più è probabile che il thread non termini in tempo. In questo caso, il gioco si interrompe attendendo la fine del thread (causando un rallentamento). Più l'intervallo impostato è lungo, più tempo è necessario affinché la distribuzione venga aggiornata quando le rotte cambiano. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :Manuale STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :Asimmetrica @@ -1604,14 +1642,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :In modalità "S STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modalità di distribuzione dei carichi della classe ARMOURED: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe di carico ARMOURED contiene i Valori nel clima temperato, i Diamanti nel clima sub-tropicale e l'Oro nel clima sub-artico. I NewGRF possono modificare questa impostazione. In modalità "Simmetrica" la quantità di carico inviata da una stazione A ad una B è approssimativamente la stessa di quella inviata da B ad A. In modalità "Asimmetrica" è consentito l'invio di quantità di carico arbitrarie in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica dei carichi interessati. Si raccomanda di impostare su "Asimmetrica" o "Manuale" per le partite nel clima sub-artico, in quanto le banche non restituiscono Oro alle miniere. Per i climi temperato e sub-tropicale è possibile scegliere "Simmetrica" poiché le banche restituiscono un carico di valori equivalente a quello ricevuto dalla banca di origine. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modalità di distribuzione dei carichi delle altre classi: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :In modalità "Simmetrica" la quantità di carico inviata da una stazione A ad una B è approssimativamente la stessa di quella inviata da B ad A. In modalità "Asimmetrica" è consentito l'invio di quantità di carico arbitrarie in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica dei carichi interessati. L'impostazione tipica è "Asimmetrica" o "Manuale". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :In modalità "Asimmetrica" è consentito l'invio di quantità di carico arbitrarie in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica dei carichi interessati. L'impostazione tipica è "Asimmetrica" o "Manuale". STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisione della distribuzione: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Più alta l'impostazione, più tempo impiega la CPU per calcolare il grafo delle rotte. Nel caso sia richiesto molto tempo, potrebbero verificarsi rallentamenti. Tuttavia, impostando un valore basso, la distribuzione potrebbe essere imprecisa e i carichi potrebbero essere inviati a destinazioni inattese. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effetto della distanza sulla domanda: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Impostando a un valore maggiore di 0, la distanza fra una stazione di origine A e una possibile destinazione B per uno dei carichi prodotti ha effetto sulla quantità di carico effettivamente inviata da A a B. Più B si trova lontano da A, più piccola è la quantità inviata. Aumentando il valore dell'impostazione si aumenta anche lo squilibrio fra le stazioni lontane (che ricevono meno carico) e le stazioni più vicine (che ne ricevono di più). STR_CONFIG_SETTING_DEMAND_SIZE :Quantità di carico restituita in modalità simmetrica: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Impostando a meno di 100% fa sì che la distribuzione simmetrica si comporti più come quella asimmetrica. Viene consentito il ritorno indietro di un carico inferiore rispetto alla quantità inviata ad una stazione. A 0% la distribuzione simmetrica si comporta come quella asimmetrica. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturazione dei percorsi corti prima di utilizzare quelli più capaci: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturazione dei percorsi corti prima di utilizzare quelli a più alta capacità: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :È frequente che esistano più percorsi fra due stazioni. L'algoritmo Cargodist cercherà di saturare innanzi tutto il percorso più corto, quindi il secondo più corto fino a saturazione e così via. Il grado di saturazione è determinato dalla stima della capacità e dell'utilizo programmato. Se con tutti i percorsi saturi permane ancora domanda, l'algoritmo sovraccaricherà i percorsi indipendentemente dalla lunghezza, preferendo quelli a più alta capacità. Tuttavia, il più delle volte l'algoritmo non stimerà la capacità in modo accurato. Questa impostazione permette di specificare fino a quale percentuale saturare un percorso corto durante il primo passaggio dell'algoritmo prima di sceglierne uno più lungo. Impostarlo a meno di 100% in modo da evitare sovraffollamento delle stazioni in caso di capcità sovrastimata. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unità di velocità: {STRING} @@ -1650,27 +1688,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiali (pied STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metriche (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interfaccia STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizzazione -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Costruzione +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafica +STR_CONFIG_SETTING_SOUND :{ORANGE}Effetti sonori +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaccia +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generale +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Visuali +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Costruzione +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notizie / consigli +STR_CONFIG_SETTING_COMPANY :{ORANGE}Compagnia +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Economia STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veicoli -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stazioni -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economia -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribuzione dei carichi +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisica +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Instradamento +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limiti +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disastri / incidenti +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generazione del mondo +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autorià +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Città +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrie +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuzione dei carichi STR_CONFIG_SETTING_AI :{ORANGE}Avversari -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visualizzazione -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interazione -STR_CONFIG_SETTING_SOUND :{ORANGE}Effetti sonori -STR_CONFIG_SETTING_NEWS :{ORANGE}Notizie e messaggi -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Segnali -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Gestione dei carichi STR_CONFIG_SETTING_AI_NPC :{ORANGE}Giocatori controllati dal computer -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Rinnovo automatico -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Manutenzione -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Instradamento -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Treni -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Città -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrie STR_CONFIG_SETTING_PATHFINDER_OPF :Originale STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1719,7 +1759,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multigio STR_INTRO_GAME_OPTIONS :{BLACK}Opzioni di gioco STR_INTRO_HIGHSCORE :{BLACK}Punteggi migliori -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Impostazioni avanzate +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Impostazioni STR_INTRO_NEWGRF_SETTINGS :{BLACK}Impostazioni NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Contenuti online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Impostazioni IA e Script @@ -1739,7 +1779,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selezion STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostra le opzioni di gioco STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra la tabella dei punteggi migliori -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostra le impostazioni avanzate +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra le impostazioni STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra le impostazioni NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Controlla la disponibilità di contenuti nuovi o aggiornati da scaricare STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra le impostazioni delle IA e degli Script @@ -1779,6 +1819,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Compagn STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magico (rimuove industrie e oggetti fissi): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}I tunnel possono incrociarsi tra loro: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}I jet non si schiantano (frequentemente) nei piccoli aeroporti: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Modifica l'altezza massima della mappa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Modifica l'altezza massima delle montagne sulla mappa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Paesaggio 'temperato' STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Paesaggio 'sub-artico' STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Paesaggio 'sub-tropicale' @@ -1827,6 +1869,7 @@ STR_LIVERY_FREIGHT_TRAM :Tram merci STR_FACE_CAPTION :{WHITE}Seleziona faccia STR_FACE_CANCEL_TOOLTIP :{BLACK}Annulla la selezione della nuova faccia STR_FACE_OK_TOOLTIP :{BLACK}Accetta la selezione della nuova faccia +STR_FACE_RANDOM :{BLACK}Scegli a caso STR_FACE_MALE_BUTTON :{BLACK}Maschio STR_FACE_MALE_TOOLTIP :{BLACK}Seleziona fra volti maschili @@ -2066,6 +2109,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spettatori STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inserire la quantità di denaro da donare +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spettatore # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non salvare la password inserita @@ -2576,6 +2620,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carichi accettati: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite di velocità rotaie: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite di velocità strada: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocce @@ -2672,7 +2717,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-2013 Il team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Il team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita @@ -2691,6 +2736,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salva STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salva la partita corrente, usando il nome scelto STR_SAVELOAD_LOAD_BUTTON :{BLACK}Carica STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carica la partita selezionata +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carica l'heightmap selezionata STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Dettagli partita STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Informazioni non disponibili STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2706,13 +2752,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Numero città: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Numero industrie: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altezza massima mappa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumenta di uno l'altezza massima delle montagne sulla mappa +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Riduce di uno l'altezza massima delle montagne sulla mappa STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altezza delle nevi: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Sposta in su di uno l'altezza delle nevi perenni STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Sposta in giù di uno l'altezza delle nevi perenni -STR_MAPGEN_RANDOM_SEED :{BLACK}Seme casuale: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Fare clic per introdurre un seme casuale -STR_MAPGEN_RANDOM :{BLACK}Scegli a caso -STR_MAPGEN_RANDOM_HELP :{BLACK}Cambia il seme casuale usato per la generazione del terreno STR_MAPGEN_LAND_GENERATOR :{BLACK}Generatore: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritmo alberi: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo di terreno: @@ -2739,7 +2784,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome hei STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Dim.: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Inserire un seme casuale +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Cambia l'altezza massima della mappa STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambia l'altezza delle nevi perenni STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Cambia l'anno di inizio @@ -2794,6 +2839,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Sposta s STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Sposta il file NewGRF selezionato più in alto nell'elenco STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Sposta giù STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Sposta il file NewGRF selezionato più in basso nell'elenco +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Aggiorna +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Aggiorna i file NewGRF per i quali è stata installata una versione più recente STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Elenco dei file NewGRF installati. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Imposta parametri @@ -2818,6 +2865,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}File corri STR_NEWGRF_SETTINGS_DISABLED :{RED}Disabilitato STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibile con questa versione di OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Salva profilo +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista dei profili disponibili, selezionarne uno per copiarlo nella casella del nome del salvataggio +STR_SAVE_PRESET_TITLE :{BLACK}Inserire il nome del profilo +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome scelto per il profilo da salvare +STR_SAVE_PRESET_CANCEL :{BLACK}Annulla +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Non modifica il profilo +STR_SAVE_PRESET_SAVE :{BLACK}Salva +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salva il profilo utilizzando il nome inserito + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Cambia parametri NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Chiudi @@ -2841,14 +2898,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametr # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Allineamento sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Successivo -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procede al successivo sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando al primo se viene raggiunta la fine +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procede al successivo sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando al primo se viene raggiunto l'ultimo della lista STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vai a STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Va allo sprite specificato. Se lo sprite non è uno sprite normale, procede allo sprite normale immediatamente successivo STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Precedente -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procede al precedente sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando all'ultimo se viene raggiunto l'inizio +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procede al precedente sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando all'ultimo se viene raggiunto il primo della lista STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Rappresentazione dello sprite corrente. L'allineamento viene ignorato in questa casella. -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sposta lo sprite, cambiando i posizionamenti X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Posizionamento X: {NUM}, Y: {NUM} +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sposta lo sprite, cambiando gli spiazzamenti X e Y +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reimposta posizione relativa +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reimposta gli spiazzamenti relativi attuali +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Posizione X: {NUM}, Y: {NUM} (assoluto) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Posizione X: {NUM}, Y: {NUM} (relativo) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Scegli sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Sceglie uno o più sprite da un qualsiasi punto dello schermo @@ -2905,6 +2965,7 @@ STR_NEWGRF_LIST_MISSING :{RED}File manca STR_NEWGRF_BROKEN :{WHITE}Il comportamento del NewGRF '{0:STRING}' può causare errori di sincronizzazione e/o crash STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ha modificato lo stato di vagone motorizzato di '{1:ENGINE}' al di fuori del deposito STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ha modificato la lunghezza del veicolo '{1:ENGINE}' fuori dal deposito +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ha modificato la capacità del veicolo '{1:ENGINE}' fuori dal deposito o mentre non era in corso un riadattamento STR_BROKEN_VEHICLE_LENGTH :{WHITE}Il treno '{VEHICLE}' della '{COMPANY}' ha una lunghezza non valida, probabilmente a causa di problemi con un NewGRF. È possibile che si verifichino errori di sincronizzazione o crash STR_NEWGRF_BUGGY :{WHITE}Informazioni scorrette fornite dal NewGRF '{0:STRING}' @@ -2919,6 +2980,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} di STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scansione NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scansione dei NewGRF in corso. A seconda della quantità, questa operazione può richiedere molto tempo... @@ -2956,8 +3020,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} consegnato STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ancora richiest{G 1 o o a}) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (consegnat{G 1 o o a}) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}La città cresce ogni {ORANGE}{COMMA}{BLACK} giorn{P o i} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La città cresce ogni {ORANGE}{COMMA}{BLACK} giorn{P o i} (finanziata) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}La città cresce ogni {ORANGE}{COMMA}{BLACK}{NBSP}giorn{P o i} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La città cresce ogni {ORANGE}{COMMA}{BLACK}{NBSP}giorn{P o i} (finanziata) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}La città {RED}non{BLACK} sta crescendo STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limite di rumore in città: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della città. CTRL+clic la mostra in una mini visuale. @@ -3017,7 +3081,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informazione STR_GOAL_QUESTION_CAPTION_WARNING :Avviso STR_GOAL_QUESTION_CAPTION_ERROR :Errore -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Annulla STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No @@ -3036,6 +3100,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Ricomincia STR_GOAL_QUESTION_BUTTON_POSTPONE :Rimanda STR_GOAL_QUESTION_BUTTON_SURRENDER :Rinuncia STR_GOAL_QUESTION_BUTTON_CLOSE :Chiudi +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Sussidi @@ -3056,6 +3121,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Indietro STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Va alla pagina precedente STR_STORY_BOOK_NEXT_PAGE :{BLACK}Avanti STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Va alla pagina successiva +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Riferimento obiettivo non valido # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nomi delle stazioni - fare clic su un nome per centrare la visuale principale sulla stazione. CTRL+clic la mostra in una mini visuale. @@ -3070,7 +3136,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non c'è # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}In attesa: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {G "da " dall' "dalla "}{STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} riservati per il caricamento) @@ -3314,12 +3379,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Automezzi senza STR_GROUP_DEFAULT_SHIPS :Navi senza gruppo STR_GROUP_DEFAULT_AIRCRAFTS :Aeromobili senza gruppo -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppi - fare clic su un gruppo per elencare tutti i suoi veicoli +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppi - fare clic su un gruppo per elencare tutti i suoi veicoli. Trascinare i gruppi per organizzarli in gerarchia. STR_GROUP_CREATE_TOOLTIP :{BLACK}Fare clic per creare un gruppo STR_GROUP_DELETE_TOOLTIP :{BLACK}Elimina il gruppo selezionato STR_GROUP_RENAME_TOOLTIP :{BLACK}Rinomina il gruppo selezionato STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Fare clic per proteggere questo gruppo dal rimpiazzo automatico +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Elimina Gruppo +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Si è sicuri di voler eliminare questo gruppo e tutti i gruppi contenuti? + STR_GROUP_ADD_SHARED_VEHICLE :Aggiungi veicoli condivisi STR_GROUP_REMOVE_ALL_VEHICLES :Rimuovi tutti i veicoli @@ -3357,10 +3425,10 @@ STR_PURCHASE_INFO_ALL_BUT :Tutto tranne {C 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Elenco di selezione dei veicoli ferroviari - fare clic su un veicolo per informazioni -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Elenco selezione automezzi - fare clic su un veicolo per informazioni -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Elenco selezione navi - fare clic su una nave per informazioni -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Elenco selezione aeromobili - fare clic su un aeromobile per informazioni +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Elenco selezione navi - fare clic su una nave per informazioni. CTRL+clic mostra/nasconde il tipo di nave +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Elenco selezione aeromobili - fare clic su un aeromobile per informazioni. CTRL+clic mostra/nasconde il tipo di aeromobile STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Compra veicolo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Compra veicolo @@ -3382,6 +3450,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Rinomina STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Rinomina il tipo di nave STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Rinomina il tipo di aeromobile +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Nascondi +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Nascondi +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Nascondi +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Nascondi + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostra + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mosta/nasconde il tipo di veicolo ferroviario +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mosta/nasconde il tipo di automezzo +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mosta/nasconde il tipo di nave +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mosta/nasconde il tipo di aeromobile + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Rinomina tipo di veicolo ferroviario STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Rinomina tipo automezzo STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Rinomina tipo di nave @@ -3486,6 +3569,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Automezzo STR_REPLACE_VEHICLE_SHIP :Nave STR_REPLACE_VEHICLE_AIRCRAFT :Aeromobile +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Veicoli in uso +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Colonna dei veicoli posseduti +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Veicoli disponibili +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Colonna dei veicoli disponibili per il rimpiazzo + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selezionare il tipo di locomotiva da rimpiazzare STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selezionare il nuovo modello di locomotiva che si desidera usare al posto di quello selezionato a sinistra @@ -3610,7 +3698,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacit STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Crediti di trasferimento: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Manutenzione ogni: {LTBLUE}{COMMA} giorni{BLACK} Ultima volta: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Manutenzione ogni: {LTBLUE}{COMMA}{NBSP}giorni{BLACK} Ultima volta: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervallo manutenzione: {LTBLUE}{COMMA}%{BLACK} Ultima il: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Aumenta l'intervallo di manutenzione di 10. CTRL+clic lo aumenta di 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Riduce l'intervallo di manutenzione di 10. CTRL+clic lo riduce di 5. @@ -3708,8 +3796,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambia l STR_ORDER_REFIT :{BLACK}Riadatta STR_ORDER_REFIT_TOOLTIP :{BLACK}Selezionare il tipo di carico per il quale riadattare in questo ordine. Premere CTRL+clic per rimuovere l'istruzione di riadattamento -STR_ORDER_REFIT_AUTO :{BLACK}Auto-riadatta -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selezionare il tipo di carico per il quale auto-riadattare in questo ordine. Premere CTRL+clic per rimuovere l'istruzione di riadattamento. L'auto-riadattamento sarà eseguito solo se il veicolo lo consente +STR_ORDER_REFIT_AUTO :{BLACK}Riadatta +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selezionare il tipo di carico per il quale riadattare in questo ordine. Premere CTRL+clic per rimuovere l'istruzione di riadattamento. Il riadattamento presso le stazioni sarà eseguito solo se il veicolo lo consente STR_ORDER_DROP_REFIT_AUTO :Carico prefissato STR_ORDER_DROP_REFIT_AUTO_ANY :Carico in attesa @@ -3800,18 +3888,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Non scaricare STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Non scaricare e attendi qualsiasi pieno carico) STR_ORDER_NO_UNLOAD_NO_LOAD :(Non scaricare e non caricare) -STR_ORDER_AUTO_REFIT :(Auto-riadatta per {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Attendi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Attendi qualsiasi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_UNLOAD_REFIT :(Scarica e carica, auto-riadatta per {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Scarica e attendi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Scarica e attendi qualsiasi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_TRANSFER_REFIT :(Trasferisci e carica, auto-riadatta per {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Trasferisci e attendi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Trasferisci e attendi qualsiasi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Non scaricare e carica, auto-riadatta per {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Non scaricare e attendi pieno carico, auto-riadatta per {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Non scaricare e attendi qualsiasi pieno carico, auto-riadatta per {STRING}) +STR_ORDER_AUTO_REFIT :(Riadatta per {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Attendi pieno carico, riadatta per {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Attendi qualsiasi pieno carico, riadatta per {STRING}) +STR_ORDER_UNLOAD_REFIT :(Scarica e carica, riadatta per {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Scarica e attendi pieno carico, riadatta per {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Scarica e attendi qualsiasi pieno carico, riadatta per {STRING}) +STR_ORDER_TRANSFER_REFIT :(Trasferisci e carica, riadatta per {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Trasferisci e attendi pieno carico, riadatta per {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Trasferisci e attendi qualsiasi pieno carico, riadatta per {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Non scaricare e carica, riadatta per {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Non scaricare e attendi pieno carico, riadatta per {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Non scaricare e attendi qualsiasi pieno carico, riadatta per {STRING}) STR_ORDER_AUTO_REFIT_ANY :il carico in attesa @@ -3837,13 +3925,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Tabella STR_TIMETABLE_NO_TRAVEL :Nessun viaggio STR_TIMETABLE_NOT_TIMETABLEABLE :Viaggia (automatico; orario basato sul successivo ordine manuale) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viaggia (senza orario) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viaggia a non più di {2:VELOCITY} (senza orario) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viaggia (senza orario) a non più di {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Viaggia per {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viaggia per {STRING} a non più di {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viaggia (per {STRING}, senza orario) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viaggia (per {STRING}, senza orario) a non più di {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(ferma per {STRING}, senza orario) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viaggia per {STRING}, senza orario) STR_TIMETABLE_STAY_FOR :e sosta per {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :e viaggia per {STRING} -STR_TIMETABLE_DAYS :{COMMA} giorn{P o i} -STR_TIMETABLE_TICKS :{COMMA} tick +STR_TIMETABLE_DAYS :{COMMA}{NBSP}giorn{P o i} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick STR_TIMETABLE_TOTAL_TIME :{BLACK}Gli ordini richiedono complessivamente {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Gli ordini richiedono almeno {STRING} (non tutti i tempi specificati) @@ -3969,6 +4061,8 @@ STR_AI_SETTINGS_START_DELAY :Giorni da atten STR_TEXTFILE_README_CAPTION :{WHITE}File leggimi del {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Changelog del {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licenza del {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}A capo automatico +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Manda automaticamente a capo il testo della finestra in modo che sia visibile senza doverlo scorrere STR_TEXTFILE_VIEW_README :{BLACK}Visualizza file leggimi STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenza @@ -4079,6 +4173,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Gli scav STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... già al livello del mare STR_ERROR_TOO_HIGH :{WHITE}... troppo alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... già pianeggiante +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Il ponte sovrastante si troverebbe troppo in alto # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Impossibile cambiare il nome della compagnia... @@ -4105,7 +4200,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... trop STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... troppo vicino ad un'altra città STR_ERROR_TOO_MANY_TOWNS :{WHITE}... troppe città STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... non c'è altro spazio sulla mappa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Alla città non è permesso costruire strade. È possibile abilitare la costruzione di strade in Impostazioni avanzate -> Economia -> Città +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Alla città non è permesso costruire strade. È possibile abilitare la costruzione di strade in Impostazioni -> Ambiente -> Città STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Lavori stradali in corso STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Impossibile eliminare la città...{}Una stazione o un deposito fa ancora riferimento alla città o un riquadro di proprietà della città non può essere rimosso STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... non ci sono spazi adeguati per una statua nel centro di questa città @@ -4129,6 +4224,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... una STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... può essere costruita solo al di sopra della linea delle nevi perenni STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... può essere costruita solo al di sotto della linea delle nevi perenni +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nessun luogo adatto per le industrie '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Modificare i parametri di generazione delle mappa in modo da ottenerne una migliore + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Impossibile costruire la stazione qui... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Impossibile costruire la stazione degli autobus qui... @@ -4265,6 +4363,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Bisogna STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Impossibile partire e finire nello stesso punto STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Le estremità del ponte non sono allo stesso livello STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Il ponte è troppo basso per il terreno +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Il ponte è troppo alto per il terreno STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inizio e fine devono essere allineati STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... gli estremi del ponte devono trovarsi entrambi sul terreno STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte troppo lungo @@ -4291,6 +4390,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... già STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossibile creare il gruppo... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossibile eliminare il gruppo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossibile rinominare il gruppo... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossibile impostare il gruppo contenitore... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Impossibile rimuovere tutti i veicoli del gruppo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossibile aggiungere il veicolo al gruppo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Impossibile aggiungere veicoli condivisi al gruppo... @@ -4525,7 +4625,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapore) @@ -4734,7 +4834,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Traghetto Chugg STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Traghetto Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Mercantile Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Mercantile Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mercantile Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mercantile MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Mercantile Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4828,6 +4928,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (nascosto) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4863,8 +4964,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4875,9 +4974,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 39f9e12d61..4e3919520c 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}スク STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}スクロールバーです。リストを横にスクロールします STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}建物などを範囲指定して撤去します。Ctrlを押すと、範囲が斜めになります。Shiftを押しながら決定すると、費用を見積もります +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}非表示を表示 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}非表示を表示 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}非表示を表示 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}非表示を表示 + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}このボタンを押すと、非表示の列車も全て表示されます +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}このボタンを押すと、非表示の車両も全て表示されます +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}このボタンを押すと、非表示の船舶も全て表示されます +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}このボタンを押すと、非表示の航空機も全て表示されます + # Query window STR_BUTTON_DEFAULT :{BLACK}デフォルト STR_BUTTON_CANCEL :{BLACK}キャンセル @@ -294,7 +305,7 @@ STR_SORT_BY_COST :価格 STR_SORT_BY_POWER :出力 STR_SORT_BY_TRACTIVE_EFFORT :牽引力 STR_SORT_BY_INTRO_DATE :設計年 -STR_SORT_BY_RUNNING_COST :運転費用 +STR_SORT_BY_RUNNING_COST :運用費 STR_SORT_BY_POWER_VS_RUNNING_COST :運転費当たりの出力 STR_SORT_BY_CARGO_CAPACITY :積載容量 STR_SORT_BY_RANGE :航続距離 @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :OpenTTDを終 ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :ゲームオプション設定 -STR_SETTINGS_MENU_CONFIG_SETTINGS :拡張設定 +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :設定 STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/ゲームスクリプト設定 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRFの設定 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透過表示設定 @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :バウンディ STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :ダーティーブロックの色付け切替 ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -635,7 +664,7 @@ STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}プレ STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}プレイリスト'旧スタイル'を選択します STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}プレイリスト'新スタイル'を選択します STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}プレイリスト'Ezyストリート'を選択します -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}プレイリスト’カスタム1'を選択します +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}プレイリスト'カスタム1'を選択します STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}プレイリスト'カスタム2'を選択します STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}プレイリストのシャッフルの有効/無効を切り替えます STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}曲選択のウィンドウを表示します @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE}は造船所に停泊しました STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE}は格納庫に駐機しました -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE}に十分な指令がありません STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE}に無効な指令があります STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE}に重複した指令があります STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE}の指令に無効な停留施設があります -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE}の命令中に滑走路が短すぎる空港が含まれています STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE}は老朽化が進んでいます STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE}はひどく老朽化しています @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :グルジア STR_GAME_OPTIONS_CURRENCY_IRR :イラン リアル(IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}自動車 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}車両の通行方向(右側/左側)を選択します STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :左側通行 @@ -935,14 +959,16 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :イタリア STR_GAME_OPTIONS_TOWN_NAME_CATALAN :カタラン ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自動保存 +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}オートセーブ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}自動保存の間隔を選択します +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :しない STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :毎月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3ヶ月毎 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6ヶ月毎 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12ヶ月毎 +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}言語 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}ゲームの言語を選択します @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}画面 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}ゲーム画面の解像度を選択します STR_GAME_OPTIONS_RESOLUTION_OTHER :その他 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}スクリーンショットフォーマット -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}スクリーンショットのファイルフォーマットを選択します +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}インターフェイスのサイズ +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}インターフェイス上の単位サイズを指定します + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :通常 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2倍 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4倍 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基本グラフィックセット STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}使用するグラフィックセットを選択します @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}使用 STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM}個の破損ファイルがあります STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}基本音楽セットについての追加情報 +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}サポートされている解像度リストの回復に失敗しました STR_ERROR_FULLSCREEN_FAILED :{WHITE}フルスクリーンモードでの実行に失敗しました # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :特に平地 STR_TERRAIN_TYPE_FLAT :平地 STR_TERRAIN_TYPE_HILLY :丘陵地 STR_TERRAIN_TYPE_MOUNTAINOUS :山岳地 +STR_TERRAIN_TYPE_ALPINIST :山脈地帯 STR_CITY_APPROVAL_PERMISSIVE :寛大 STR_CITY_APPROVAL_TOLERANT :寛容 @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :対立 STR_WARNING_NO_SUITABLE_AI :{WHITE}適切なAIがありません...{}AIは「オンライン項目を確認」からダウンロード可能です -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}拡張設定 +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}設定 STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}フィルター設定: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}全てを開く STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}全てを折りたたむ @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :ゲーム設定 STR_CONFIG_SETTING_TYPE_COMPANY_MENU :会社設定(新規ゲームにのみ影響) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :会社設定(現在の会社のみに影響) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}表示: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}設定のレベルでフィルタリングします。標準の設定と異なるもののみ表示することもできます -STR_CONFIG_SETTING_RESTRICT_BASIC :基本設定 -STR_CONFIG_SETTING_RESTRICT_ADVANCED :詳細設定 -STR_CONFIG_SETTING_RESTRICT_ALL :拡張設定(全設定) +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}カテゴリ: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}種類: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}定義されたフィルタでリストをフィルタリングします。 +STR_CONFIG_SETTING_RESTRICT_BASIC :基本設定(重要な設定のみ表示) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :詳細設定(より多くの設定を表示) +STR_CONFIG_SETTING_RESTRICT_ALL :拡張設定(変なものも含めて全設定を表示) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :既定とは異なる設定 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :新規ゲーム開始時とは異なる設定 STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}設定のジャンルでフィルタリングします STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :全設定 -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :クライアント設定(変更はセーブされません) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :ゲーム設定(ニューゲーム時に影響) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :ゲーム設定(今のゲームにのみ影響) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :会社設定(ニューゲーム時に影響) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :会社設定(今の会社だけに影響) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :クライアント設定(保存ゲーム内に記録無・全ゲームに影響) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :ゲーム設定(全保存ゲーム内に記録・ニューゲーム時に影響) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :ゲーム設定(保存ゲーム内に記録・今のゲームにのみ影響) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :会社設定(全保存ゲーム内に記録・ニューゲーム時に影響) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :会社設定(保存ゲーム内に記録・今の会社だけに影響) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}設定による検索結果を全て表示{}{SILVER}カテゴリ{BLACK}別{WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}設定による検索結果を全て表示{}{SILVER}種類{BLACK}別{WHITE}All setting types +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}設定による検索結果を全て表示{}{SILVER}カテゴリ{BLACK}別{WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types +STR_CONFIG_SETTINGS_NONE :{WHITE}- なし - STR_CONFIG_SETTING_OFF :無効 STR_CONFIG_SETTING_ON :有効 @@ -1125,8 +1162,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :設定を有効 STR_CONFIG_SETTING_CITY_APPROVAL :地域の再編に対する町の姿勢: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :会社が街域で引き起こした騒音(主に空港)や環境破壊がどの程度、街での評価や同じ地域での更なる建設行為に影響するかを設定します -STR_CONFIG_SETTING_BUILDONSLOPES :傾斜地/海岸での盛土: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :設定を有効にすると、路線や駅の建設をほとんどの斜面で行うことができます。無効にすると盛土が不要な、向きが一致する斜面か平地でしか路線の建設を行うことが出来ません +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :マップの最高高度: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :マップの最高地点の高さを設定します +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}マップの最高高さをこの値には設定出来ません。少なくとも1箇所以上この値より高い山があります。 STR_CONFIG_SETTING_AUTOSLOPE :建物/路線の自動地形追従: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :撤去を行わないで建物や路線がある土地の地形を変更することを可能にします。建物/路線は変更された地形に自動で追従します。 STR_CONFIG_SETTING_CATCHMENT :現実的な受入範囲: {STRING} @@ -1151,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :列車/船舶 STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :直角方向への進路変更は(画面から見て)水平方向の線路と垂直方向の線路が隣接したタイルで繋がっていると起こります。(これ以外では、直前から見て左右45°方向までしか線路は繋がりません) この設定は船舶の同様な直角進路変更にも適用されます。 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :非隣接駅の統合許容: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :直接繋がっていない近隣の駅/停留所などを一つとして扱えるかを設定します。有効にした場合、新設する際にCtrl+クリックで統合先の選択が可能になります。 -STR_CONFIG_SETTING_IMPROVEDLOAD :改良積載アルゴリズムを使用: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :有効にすると、同時に同じ貨物を待機している運搬車両への積み込みは振り分けではなく編成順に行われるようになります。最初の編成に十分に積載されるまでは次の編成への積み込みは行われません。 -STR_CONFIG_SETTING_GRADUAL_LOADING :段階的な積載: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :積み降ろしが運搬車両特有の係数によって車両毎、徐々に行われるようになります。設定を無効にすると、積み降ろしは全車一括で瞬間的に行われます。このときの所要時間は総積載量のみに左右されます。 STR_CONFIG_SETTING_INFLATION :インフレ: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :インフレを有効にします。経費の方が収入よりわずかに早く上昇していきます。 -STR_CONFIG_SETTING_SELECTGOODS :必要貨物のみ集荷: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :到着した運搬車両が積み込もうとする貨物のみ停留施設に集荷されるようにします。搬送扱いのない貨物が停留施設で山積みになることでの悪評を防げます。 -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :橋の最大長:{STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :橋の最大長を設定できます +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :橋梁の最大長:{STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :橋梁の最大長を設定できます +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :橋梁の高度: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :橋梁の建設出来る高さを設定出来ます STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :トンネルの最大長:{STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :トンネルの最大長を設定できます STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :一次産業の開設法: {STRING} @@ -1186,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :デフォルト STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :先端 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中間 STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :終端 -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :車両の荷待ち停車(不確定性あり): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :停車予定の停留施設が渋滞している場合、バスやトラックが追い越して一度周回した後戻るよりは渋滞の解消を待つほうを好むようになります STR_CONFIG_SETTING_AUTOSCROLL :エッジスクロール: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :有効にすると、ウィンドウの端にカーソルを持っていくとスクロールするようになります STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :しない @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :街有道路で STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :路側型バス停/荷役所を街が所有する道路上に建設することを可能にします STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :他社の道路上での路側型バス停/荷役所設置: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :路側型バス停/荷役所を他社が所有する道路上に建設することを可能にします -STR_CONFIG_SETTING_ADJACENT_STATIONS :停留施設同士の接合: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :異なる交通機関の停留施設を接合することを可能にします -STR_CONFIG_SETTING_DYNAMIC_ENGINES :複数のNewGRFエンジンセットの有効化: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :古いNewGRFとの互換性を保つためのオプションです。自分が何をしようとしているか判っていない限り、このオプションを無効にしないで下さい! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}この設定の変更は既に輸送車両が存在する時には不可能です STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :インフラ補修: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :有効にすると、インフラ設備にも維持費が発生するようになります。維持費はネットワークのサイズに非線形で比例する為、小さい会社よりも大きい会社の方が影響が大きくなります @@ -1252,7 +1280,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :エラーメッ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :赤地のエラーメッセージが表示されている時間を設定します。注: 致命的なエラーの場合はこの時間を経過しても自動では閉じません。 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA}秒 STR_CONFIG_SETTING_HOVER_DELAY :ツールチップ表示: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :カーソルをインターフェイス要素に乗せた場合にツールチップが表示されるまでの時間を決定します。この設定でツールチップを右クリックで表示するようにもできます +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :カーソルをインターフェイス要素に乗せた場合にツールチップが表示されるまでの時間を決定します。"0"に設定するとツールチップは右クリックで表示されるようになります STR_CONFIG_SETTING_HOVER_DELAY_VALUE :マウスオーバー {COMMA}秒後 STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右クリック STR_CONFIG_SETTING_POPULATION_IN_LABEL :街名ラベルに人口を表示: {STRING} @@ -1260,27 +1288,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :街の名前ラ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :グラフ線の太さ: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :グラフ画面での折れ線の太さを設定します。細い線では値を精密に読み取りやすくなり、太い線ではグラフ自体が見やすくなり、線色の見分けがつきやすくなります +STR_CONFIG_SETTING_LANDSCAPE :地形: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :地形は異なる貨物や街の成長要件の違いによって基本となるプレー法を左右します。但し、NewGRFやスクリプトにより条件が改良されることもあります STR_CONFIG_SETTING_LAND_GENERATOR :地形作成: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :オリジナルの地形ジェネレーターは基本グラフィックセットに依存し、ある程度固定された地形しか生成出来ません。TerraGenesisはパーリンノイズに基づいた地形ジェネレーターで、より細かい地形生成のパラメータを指定できます STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :オリジナル STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :地形種類: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesisのみ) 地形における丘の度合い +STR_CONFIG_SETTING_INDUSTRY_DENSITY :産業の密度: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :どの程度の産業が開始時に生成され、ゲーム中にそのレベルを維持するようにするのかを設定します STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :石油精製所のマップ端からの距離: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :石油精製所はマップの外周付近にのみ建設されます。つまり、外周が海のマップでは海岸沿いに建設されるということです STR_CONFIG_SETTING_SNOWLINE_HEIGHT :雪線の位置: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地形の起伏(TerraGenesis のみ): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :亜寒帯気候での雪線の高さを設定します。雪は産業と街の成長に影響があります +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地形の起伏: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesisのみ) 地形の起伏度を設定します。なだらかな地形では丘陵の数は減り、裾野が長くなります。起伏が多い地形では丘陵が多くなりますが、似たり寄ったりな地形の繰り返しに見えることがあります STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :特になだらか STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :なだらか STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :起伏 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :特に起伏 +STR_CONFIG_SETTING_VARIETY :地形特徴の分布: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesisのみ) マップに山岳地と平地の両方が含まれるかを調整します。この設定を使ってもマップがより平坦になってしまう場合は、他の設定を「山岳」に切り替えください +STR_CONFIG_SETTING_RIVER_AMOUNT :川の数: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :どの位の川が生成されるかを設定します STR_CONFIG_SETTING_TREE_PLACER :植林アルゴリズム: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :マップでの木の分布を設定します。「オリジナル」では全ての樹種がマップ全域に散布するように植えられます。「改良」ではある程度のまとまりで植えられます STR_CONFIG_SETTING_TREE_PLACER_NONE :なし STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :オリジナル STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :改良版 +STR_CONFIG_SETTING_ROAD_SIDE :道路車両: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :左側/右側通行を設定します STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :ハイトマップの回転方向: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :反時計回り STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :時計回り STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :シナリオマップ生成時の平地高さ: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :マップ外周タイルの地形変更: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :無効にすると、マップの外周は常に全て海になります STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}北端の1箇所以上のタイルが空き地ではありません STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}マップ端の1箇所以上のタイルが水域ではありません @@ -1331,17 +1373,15 @@ 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_AUTOSAVE :オートセーブ: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :オートセーブの間隔を設定します + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :セーブ時の日付フォーマット: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :セーブデータ名にデフォルトで付けられる日付の表記法を指定します。注: 日本の場合、「短」と「ISO標準」に違いはありません STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :長 (2008年12月31日) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :短 (2008-12-31) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO標準 (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :パレット指定のないNewGRFのデフォルトパレット: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :NewGRFに指定されていない場合、使用するデフォルトパレットを設定します -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOSパレット -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windowsパレット - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :新規ゲーム開始時に自動ポーズ: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :有効にすると、新規ゲーム開始時に自動的に一時停止状態になります。事業を始める前にマップを精査するのに便利です STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :一時停止時に可能な行動: {STRING} @@ -1563,8 +1603,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :{COMMA}分の1 STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :変化なし STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初期の都市サイズ乗数: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ゲーム開始時に都市が普通の町に比べて平均して何倍の人口規模になるかを設定します -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :街路補修時に道路整理: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :街路補修に出資した際に、先が建物に塞がれた交差点などを整理撤去するようなります STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :分配グラフの更新頻度: {STRING}日 STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :リンクグラフを再計算する時間間隔を設定します。それぞれの再計算では、グラフの単一要素に関わる経路計画だけを計算します。つまり、グラフの一部が更新されるだけで、全体が設定した間隔で更新されるという訳ではありません。この間隔を短くすると再計算のためにCPUへの負荷が大きくなります。長くすると、新たなルートが貨物分配に組み込まれるのに時間がかかるようになります。 @@ -1578,16 +1616,16 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :旅客がどの STR_CONFIG_SETTING_DISTRIBUTION_MAIL :郵便物の行先分配法: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :郵便がどのように行き先別に分配されるかを設定します。「対称」ではAからBへ向かう郵便とほぼ同数が、BからAに向かうようになります。 「非対称」ではそれぞれの方向に向かう郵便数は独立に決められます。「無効」では行き先別分配をしなくなります STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :装甲車輸送品の行先分配法: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :装甲車輸送品とは貴重品(温帯)、金(亜寒帯)、ダイヤモンド(亜熱帯)のことです(NewGRFの導入状況よっては変わることがあります)。これらの品目ががどのように行き先別に分配されるかを設定します。「対称」ではAからBへ向かう輸送品とほぼ同数が、BからAに向かうようになります。 「非対称」ではそれぞれの方向に向かう輸送品数は独立に決められます。「無効」では行き先別分配をしなくなります。温帯では銀行同士で貴重品のやりとりがあるので「対称」を選択しても問題ありませんが、金やダイヤモンドが銀行から鉱山に送られるようなことはないので、亜寒帯・亜熱帯では「非対称」か「無効」にすることをお勧めします。 +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :装甲車輸送品とは貴重品(温帯)、金(亜寒帯)、ダイヤモンド(亜熱帯)のことです(NewGRFの導入状況よっては変わることがあります)。これらの品目ががどのように行き先別に分配されるかを設定します。「対称」ではAからBへ向かう輸送品とほぼ同数が、BからAに向かうようになります。 「非対称」ではそれぞれの方向に向かう輸送品数は独立に決められます。「手動」では自動での行き先別分配をしなくなります。亜熱帯・温帯では銀行同士で貴重品のやりとりがあるので「対称」を選択しても問題ありませんが、金やダイヤモンドが銀行から鉱山に送られるようなことはないので、亜寒帯では「非対称」か「手動」にすることをお勧めします。 STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :一般貨物の行先分配法: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :一般的な貨物がどのように行き先別に分配されるかを設定します。「対称」ではAからBへ向かう貨物とほぼ同数が、BからAに向かうようになります。 「非対称」ではそれぞれの方向に向かう貨物数は独立に決められます。「無効」では行き先別分配をしなくなります。一般的な貨物輸送は常に一方通行なので、「非対称」か「無効」にしておくことをお勧めします。 +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :一般的な貨物がどのように行き先別に分配されるかを設定します。「非対称」ではそれぞれの方向に向かう貨物数はプログラムの任意に決められます。「無効」では行き先別分配をしなくなります。 STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :分配精度: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :この値を高くすると、リンクグラフ演算の為CPUへの負荷が大きくなります。演算に時間がかかりすぎると、目に見えてタイムラグが起こる場合があります。しかし低い値に設定すると、分配が不正確になり、望まれる場所に貨物が送られなくなる場合があります STR_CONFIG_SETTING_DEMAND_DISTANCE :距離効果: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :0より大きい値に設定すると、ある貨物の生産先Aと受取可能先Bとの距離がAからBへ送られる貨物量に影響を及ぼすようになります。高い値を設定すればするほど、遠い施設に送られる貨物量は少なくなり、近場の施設に送られる量が大きくなります STR_CONFIG_SETTING_DEMAND_SIZE :対称分配での戻り量: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :この値を100%未満に設定すると、対称分配の挙動が非対称分配に近くなります。値が小さいほど受け入れ量に対する送り返し量が小さくなります。0%に設定した場合、対称分配と非対称分配の挙動に違いはなくなります -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :最短経路を高収容力経路より優先: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :高収容力経路より速達経路を優先飽和: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :二つの停留施設間を結ぶ経路が複数存在することが往々にしてあります。そのような場合、貨物分配アルゴリズムは最初に最短となる経路を飽和するまで使用し、次いで2番目の最短経路を使用するというように埋めていきます。飽和したかどうかは、推定収容力、輸送計画によって判断されます。すべての経路を飽和してもまだ需要を満たせない場合、高容量な経路を優先しつつ、すべての経路に負荷を掛けます。しかしほとんどの場合、アルゴリズムは経路の輸送力を正確に見積もることができません。この設定では、高収容力の路線を使用し始める前にどの程度最短経路を飽和するかを設定します。収容力より需要が上回ると推定される時には、停留施設が混み合うのを避けるために100%未満に設定して下さい。 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :速度単位: {STRING} @@ -1621,32 +1659,34 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :メートル法 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :国際単位系 (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :距離単位: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :ゲーム中の長さをいずれの単位系で表すか決定します +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :ゲーム中の高度をいずれの単位系で表すか決定します STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :ヤード・ポンド法 (フィート(ft)) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :メートル法 (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :国際単位系 (m) -STR_CONFIG_SETTING_GUI :{ORANGE}インターフェース STR_CONFIG_SETTING_LOCALISATION :{ORANGE}多国籍対応 -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}建設 +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}グラフィック +STR_CONFIG_SETTING_SOUND :{ORANGE}効果音 +STR_CONFIG_SETTING_INTERFACE :{ORANGE}インターフェース +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}一般 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}画面表示 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建設 +STR_CONFIG_SETTING_ADVISORS :{ORANGE}ニュース/アドバイス +STR_CONFIG_SETTING_COMPANY :{ORANGE}会社 +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}会計 STR_CONFIG_SETTING_VEHICLES :{ORANGE}輸送機器 -STR_CONFIG_SETTING_STATIONS :{ORANGE}停留施設 -STR_CONFIG_SETTING_ECONOMY :{ORANGE}経済 -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}貨物配送先 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理モデル +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}経路構築 +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}制限 +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}災害/事故 +STR_CONFIG_SETTING_GENWORLD :{ORANGE}マップ生成 +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}環境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}地方自治体 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}街 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}産業 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}貨物配送先 STR_CONFIG_SETTING_AI :{ORANGE}競争会社 -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}表示設定 -STR_CONFIG_SETTING_INTERACTION :{ORANGE}インターフェース -STR_CONFIG_SETTING_SOUND :{ORANGE}効果音 -STR_CONFIG_SETTING_NEWS :{ORANGE}ニュース/メッセージ -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}信号 -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}貨物取扱 STR_CONFIG_SETTING_AI_NPC :{ORANGE}コンピュータプレイヤー -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}自動更新 -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}点検 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}経路構築 -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}列車 -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}街 -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}産業 STR_CONFIG_SETTING_PATHFINDER_OPF :オリジナル STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}マル STR_INTRO_GAME_OPTIONS :{BLACK}基本設定 STR_INTRO_HIGHSCORE :{BLACK}ハイスコア -STR_INTRO_ADVANCED_SETTINGS :{BLACK}拡張設定 +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}設定 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRFの設定 STR_INTRO_ONLINE_CONTENT :{BLACK}オンラインコンテンツの確認 STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/ゲームスクリプトの設定 @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}地域 STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ゲームの設定を表示します STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}ハイスコアを表示します -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}より細かいゲームの設定画面を表示します +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}設定を表示 STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRFの有効/無効化、各パラメータの設定ができます STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}公式オンラインコンテンツのデータベースからデータの確認・追加・更新ができます STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}AI/ゲームスクリプトの設定を行います @@ -1755,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}会社: STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}魔法のブルドーザー(産業拠点等、何でも撤去できる): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}トンネルの平面交差を許容: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}ジェット機の小型空港での墜落率を減少: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}マップの最高高度を変更: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}マップの最大高度 STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :温帯 STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :亜寒帯 STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :亜熱帯 @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :貨物用路面 STR_FACE_CAPTION :{WHITE}顔の変更 STR_FACE_CANCEL_TOOLTIP :{BLACK}顔の変更をキャンセルします STR_FACE_OK_TOOLTIP :{BLACK}顔の変更を適用します +STR_FACE_RANDOM :{BLACK}ランダム STR_FACE_MALE_BUTTON :{BLACK}男性 STR_FACE_MALE_TOOLTIP :{BLACK}男性顔を表示します @@ -1929,7 +1972,7 @@ STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}会社 STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}最大会社数: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}このサーバーでの最大会社数を指定します STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}観覧者数: {NUM} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}最高傍観者数: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}最高観覧者数: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}このサーバーでの最大観覧者数を指定します STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}言語: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}このサーバーで使われる主言語を表示します @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :クライアン STR_NETWORK_SPECTATORS :観覧者 STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}送りたい金額を入力 +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}観覧者 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}入力したパスワードを保存しない @@ -2271,7 +2315,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}自動 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}列車庫を建設します(列車の購入・整備施設になります)。Shiftを押しながら決定すると費用の見積が出ます STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}線路に通過点を設置します。Ctrlを押しながら決定すると通過点同士を結合できます。Shiftを押しながら決定すると費用の見積が出ます STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}駅を建設します。Ctrlを押しながら決定すると離れた駅等と結合可能です。Shiftを押しながら決定すると費用の見積が出ます -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}鉄道信号を建設します。Ctrlで腕木式と色灯式を切り替えられます。{}ドラックして決定するとその区間に一定間隔で信号が配置されます。このときCtrlを押しておくと、その先分岐に行き着くまで信号を配置していきます。{}Ctrl+クリックで信号種類を選ぶウィンドウが出ます(「信号のGUIを使用」設定オフ時のみ)。Shiftを押しながら決定すると費用の見積が出ます +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}鉄道信号を建設します。Ctrlで腕木式と色灯式を切り替えられます。{}ドラックして決定するとその区間に一定間隔で信号が配置されます。このときCtrlを押しておくと、その先分岐か信号に行き着くまで連続配置します。{}Ctrl+クリックで信号種類を選ぶウィンドウが出ます(「信号のGUIを使用」設定オフ時のみ)。Shiftを押しながら決定すると費用の見積が出ます STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}鉄道橋を建設します。Shiftを押しながら決定すると費用の見積が出ます STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}鉄道トンネルを建設します。Shiftを押しながら決定すると費用の見積が出ます STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}線路・信号・駅・中継駅の建設/撤去を切り替えます。{}Ctrlを押したままにすると駅・通過点の撤去時に線路ごと撤去されます @@ -2546,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}受入れ貨物: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}線路の制限速度: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}道路の最高速度: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :岩石 @@ -2642,7 +2687,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存 @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}保存 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}指定したファイル名で現在のゲームを保存します STR_SAVELOAD_LOAD_BUTTON :{BLACK}ロード STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}ロードするゲームを選びます +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}選択されたハイトマップをロード STR_SAVELOAD_DETAIL_CAPTION :{BLACK}ゲームの詳細 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}― 情報なし ― STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2676,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}街数: STR_MAPGEN_DATE :{BLACK}日付: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}産業数: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}マップ最高高度: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}マップの最高高度を1ずつ増やします +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}マップの最高高度を1ずつ減らします STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}雪線の位置: STR_MAPGEN_SNOW_LINE_UP :{BLACK}雪線を上げる STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}雪線を下げる -STR_MAPGEN_RANDOM_SEED :{BLACK}乱数種(シード): -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}乱数種を入力するにはクリックします -STR_MAPGEN_RANDOM :{BLACK}ランダム -STR_MAPGEN_RANDOM_HELP :{BLACK}地形作成の乱数種を変更します STR_MAPGEN_LAND_GENERATOR :{BLACK}地形作成: STR_MAPGEN_TREE_PLACER :{BLACK}植林アルゴリズム: STR_MAPGEN_TERRAIN_TYPE :{BLACK}地形種類: @@ -2709,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}ハイ STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}サイズ: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}乱数種を入力 +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}マップの最高高度を変更 STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}雪線の位置を変更 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}開始年の変更 @@ -2725,13 +2770,13 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}平地 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}平地高度を変更 # Map generation progress -STR_GENERATION_WORLD :{WHITE}地形作成中 +STR_GENERATION_WORLD :{WHITE}マップ生成中 STR_GENERATION_ABORT :{BLACK}キャンセル -STR_GENERATION_ABORT_CAPTION :{WHITE}地形作成を中止 -STR_GENERATION_ABORT_MESSAGE :{YELLOW}地形作成をキャンセルしてもよろしいですか? +STR_GENERATION_ABORT_CAPTION :{WHITE}マップ生成を中止 +STR_GENERATION_ABORT_MESSAGE :{YELLOW}マップ生成をキャンセルしてもよろしいですか? STR_GENERATION_PROGRESS :{WHITE}{NUM}%完了 STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM}/{NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}地形作成中 +STR_GENERATION_WORLD_GENERATION :{BLACK}マップ生成 STR_GENERATION_RIVER_GENERATION :{BLACK}河川を生成中 STR_GENERATION_TREE_GENERATION :{BLACK}植林中 STR_GENERATION_OBJECT_GENERATION :{BLACK}灯台/電波塔配置中 @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}上へ STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}選択したNewGRFファイルを上へ移動します STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}下へ STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}選択したNewGRFファイルを下へ移動します +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}アップグレード +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}より上位バージョンのNewGRFがインストールされている場合にアップグレードします STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}インストールされたNewGRFファイルのリストです STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}パラメータ設定 @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}一致す STR_NEWGRF_SETTINGS_DISABLED :{RED}切 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}このバージョンのOpenTTDでは使用できません +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}プリセットを保存 +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}使用可能なプリセットの一覧です。選択すると下のセーブ名のプリセットに内容をコピーします +STR_SAVE_PRESET_TITLE :{BLACK}プリセット名を入力 +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}現在選択している名前をプリセットの保存に使用します +STR_SAVE_PRESET_CANCEL :{BLACK}キャンセル +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}プリセットを変更しません +STR_SAVE_PRESET_SAVE :{BLACK}セーブ +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}現在選択している名前でプリセットを保存します + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRFパラメータの変更 STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}閉じる @@ -2811,14 +2868,13 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}スプライト{COMMA} 配列 ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}次のスプライト -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}次のノーマルスプライトに進みます。疑似/リカラー/フォントスプライトはスキップし、終端まで行を送ります +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}次のノーマルスプライトに進みます。始端と終端は連続しているものとみなし、疑似/リカラー/フォントスプライトはスキップします STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}スプライトへ飛ぶ STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}所定のスプライトへ飛びます。指定のスプライトがノーマルスプライトでなければ、次のノーマルスプライトに進みます STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}前のスプライト -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}前のノーマルスプライトに戻ります。疑似/リカラー/フォントスプライトはスキップし、始端まで行を送ります +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}前のノーマルスプライトに戻ります。始端と終端は連続しているものとみなし、疑似/リカラー/フォントスプライトはスキップします STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}現在選択されているスプライトの代表絵を示します。この配列はスプライトを描画するときには無視されます STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}X・Yオフセットを変更し、スプライトを移動します -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Xオフセット: {NUM}, Yオフセット: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}スプライトを選ぶ STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}画面内からスプライトを選びます @@ -2875,6 +2931,7 @@ STR_NEWGRF_LIST_MISSING :{RED}欠落フ STR_NEWGRF_BROKEN :{WHITE}NewGRF{0:STRING}の挙動によって同期エラーやクラッシュが引き起こされる可能性があります! STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}機関車の状態が車庫外で{1:ENGINE}に変更されました STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}列車の長さがに車庫外で{1:ENGINE}に変更されました +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}NewGRFにより車庫外や改装以外で'{1:ENGINE}'の積載量が変更されました STR_BROKEN_VEHICLE_LENGTH :{WHITE}{1:COMPANY}が所有している{0:VEHICLE}という列車は不正な長さです。使用しているNewGRFが原因であるかもしれません。同期エラーやクラッシュが起こる可能性があります! STR_NEWGRF_BUGGY :{WHITE}NewGRF{0:STRING}の情報が誤っています @@ -2889,6 +2946,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :<無効な貨 STR_NEWGRF_INVALID_ENGINE :<無効な輸送機器モデル> STR_NEWGRF_INVALID_INDUSTRYTYPE :<無効な産業> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<無効な輸送機器> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRFをスキャンしています STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRFをスキャンしています。NewGRFの数によっては時間がかかります @@ -2911,7 +2971,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}標識 STR_TOWN_DIRECTORY_CAPTION :{WHITE}街一覧 STR_TOWN_DIRECTORY_NONE :{ORANGE}- なし- STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}町名 - メイン画面を町の場所に移動するには町名をクリックします +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}町名 - メイン画面を町の場所に移動するには町名をクリックします。Ctrl+クリックで新しいビューポートに表示します STR_TOWN_POPULATION :{BLACK}地域人口: {COMMA}人 # Town view window @@ -2921,8 +2981,8 @@ STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口: STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}旅客数(先月): {ORANGE}{COMMA}人{BLACK} 最大: {ORANGE}{COMMA}人 STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}郵便袋(先月): {ORANGE}{COMMA}袋{BLACK} 最大: {ORANGE}{COMMA}袋 STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}街の成長に必要な物資: -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} が必要です -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} が冬に必要です +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}が{RED}必要です +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}が{BLACK}冬に必要です STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} は配送されています STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG} {RED}(更なる配送が必要) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG} {GREEN}(需要充足) @@ -2930,7 +2990,7 @@ STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}街は { STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}街は {ORANGE}{COMMA}{BLACK} 日毎に成長しています(資金提供) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}街は{RED}成長を止めています{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}騒音量: {ORANGE}{COMMA}{BLACK} (現状) / {ORANGE}{COMMA}{BLACK} (最大) -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}メイン画面を街の場所に移動します +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}メイン画面を街の場所に移動します。Ctrl+クリックで新しいビューポートに表示します。 STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}地方自治体 STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}地方自治体の情報を表示します STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}街名を変更します @@ -2987,7 +3047,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :情報 STR_GOAL_QUESTION_CAPTION_WARNING :警告 STR_GOAL_QUESTION_CAPTION_ERROR :エラー -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :キャンセル STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :いいえ @@ -3006,6 +3066,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :再起動 STR_GOAL_QUESTION_BUTTON_POSTPONE :延期 STR_GOAL_QUESTION_BUTTON_SURRENDER :あきらめる STR_GOAL_QUESTION_BUTTON_CLOSE :閉じる +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}助成金 @@ -3026,9 +3087,10 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}前ペ STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}前のページに戻ります STR_STORY_BOOK_NEXT_PAGE :{BLACK}次ページ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}次のページに進みます +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}無効な目標参照 # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}駅名 - メイン画面を駅の場所に移動するには駅名をクリックします +STR_STATION_LIST_TOOLTIP :{BLACK}駅名 - メイン画面を駅の場所に移動するには駅名をクリックします.Ctrl+クリック で 新しいビューポートに表示します STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}複数の施設を選択するにはCtrlを押しながら選択します STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA}箇所の停留施設 STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -3040,7 +3102,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}積込 # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}積込待ち: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}(うち、{1:STATION}からの転送{0:CARGO_SHORT}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT}が積込予約済み) @@ -3219,7 +3280,7 @@ STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}産業 STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}生産量(前月): STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK}({COMMA}%搬送済) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}この産業の場所にメイン画面を移動します。Ctrl+クリックでこの産業の場所を新たなビューポートに表示します +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}メイン画面をこの産業の場所に移動します。Ctrl+クリックでこの産業の場所を新たなビューポートに表示します STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生産量: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}この産業拠点は間もなく閉鎖されます! @@ -3284,12 +3345,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :グループ化 STR_GROUP_DEFAULT_SHIPS :グループ化されていない船舶 STR_GROUP_DEFAULT_AIRCRAFTS :グループ化されていない航空機 -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}グループ - クリックするとこのグループに所属する全車両一覧を表示します +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}グループ - クリックするとこのグループに所属する全車両一覧を表示します。ドラック&ドロップで順序を並べ替えられます STR_GROUP_CREATE_TOOLTIP :{BLACK}新規のグループを作成します STR_GROUP_DELETE_TOOLTIP :{BLACK}選択したグループを削除します STR_GROUP_RENAME_TOOLTIP :{BLACK}選択したグループの名称を変更します STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}このグループ内の輸送機器を全体を対象とする自動交換の際も交換されないようにします +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}グループを削除 +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}このグループとそれに所属する全てを削除してもよろしいですか? + STR_GROUP_ADD_SHARED_VEHICLE :共有輸送機器を追加 STR_GROUP_REMOVE_ALL_VEHICLES :全輸送機器を削除 @@ -3327,10 +3391,10 @@ STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST}を STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牽引力: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航続距離: {GOLD}{COMMA} タイル -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列車リスト - 個々の情報を見るには列車をクリックします -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}車両リスト - 個々の情報を見るには車両をクリックします -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶リスト - 個々の情報を見るには船舶をクリックします -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}航空機リスト - 個々の情報を見るには航空機をクリックします +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列車リスト - 個々の情報を見るには列車をクリックします。Ctrl+クリックでその列車種の表示/非表示を切り替えます +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}車両リスト - 個々の情報を見るには車両をクリックします。Ctrl+クリックでその車両種の表示/非表示を切り替えます +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶リスト - 個々の情報を見るには船舶をクリックします。Ctrl+クリックでその船舶機種の表示/非表示を切り替えます +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}航空機リスト - 個々の情報を見るには航空機をクリックします。Ctrl+クリックでその航空機種の表示/非表示を切り替えます STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}列車を購入 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}車両を購入 @@ -3352,6 +3416,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}車両 STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}船舶の名称を変更 STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}航空機の名称を変更 +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}非表示 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}非表示 +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}非表示 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}非表示 + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}表示 +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}表示 +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}表示 +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}表示 + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}指定の列車機種の非表示/表示を切り替えます +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}指定の車両機種の非表示/表示を切り替えます +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}指定の船舶機種の非表示/表示を切り替えます +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}指定の航空機種の非表示/表示を切り替えます + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}列車の機種名を変更 STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}車両の機種名を変更 STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}船舶の機種名を変更 @@ -3405,13 +3484,13 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}道路 STR_DEPOT_CLONE_SHIP :{BLACK}船舶を複製 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}航空機を複製 -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}列車を複製します。このボタンを押してから列車庫内/外の列車をクリックして下さい。Ctrl+クリックすると、複製相手は元列車と指令を共有します。Shift+クリックで金額の概算が出ます +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}牽引車両も含め、当該の列車を複製します。このボタンを押してから列車庫内/外の列車をクリックして下さい。Ctrl+クリックすると、複製相手は元列車と指令を共有します。Shift+クリックで金額の概算が出ます STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}車両を複製します。このボタンを押してから車庫内/外の車両をクリックして下さい。Ctrl+クリックすると、複製相手は元車両と指令を共有します。Shift+クリックで金額の概算が出ます STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}船舶を複製します。このボタンを押してから造船所内/外の船舶をクリックして下さい。Ctrl+クリックすると、複製相手は元船舶と指令を共有します。Shift+クリックで金額の概算が出ます STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}航空機を複製します。このボタンを押してから格納庫内/外の航空機をクリックして下さい。Ctrl+クリックすると、複製相手は元航空機と指令を共有します。Shift+クリックで金額の概算が出ます STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}メイン画面を列車庫の場所に移動します。Ctrl+クリックで新規のビューポートに表示します -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}主の画面を車庫の場所に移動します。Ctrl+クリックで新規のビューポートに表示します +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}メイン画面を車庫の場所に移動します。Ctrl+クリックで新規のビューポートに表示します STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}メイン画面を造船所の場所に移動します。Ctrl+クリックで新規のビューポートに表示します STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}メイン画面を格納庫の場所に移動します。Ctrl+クリックで新規のビューポートに表示します @@ -3456,6 +3535,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :車両 STR_REPLACE_VEHICLE_SHIP :船舶 STR_REPLACE_VEHICLE_AIRCRAFT :航空機 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}使用中の輸送機器 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}現在使用している輸送機器の一覧です +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}利用可能な輸送機器 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}置換に使用可能な輸送機器の一覧です + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}置換対象を選択 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}左で選択した輸送機器を置き換える輸送機器を選択します @@ -3810,6 +3894,10 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :該当区間を STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :最高速度{2:VELOCITY}で該当区間を運行 (ダイヤ設定無) STR_TIMETABLE_TRAVEL_FOR :{STRING}で該当区間を運行 STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING}で該当区間を運行(最高速度{VELOCITY}) +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :運行({0:STRING}・ダイヤ設定無) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :最高速度{1:VELOCITY}で運行({0:STRING}・ダイヤ設定無) +STR_TIMETABLE_STAY_FOR_ESTIMATED :({STRING}停車・ダイヤ設定無) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :({STRING}で運行・ダイヤ設定無) STR_TIMETABLE_STAY_FOR :して{STRING}停車 STR_TIMETABLE_AND_TRAVEL_FOR :して{STRING}運行 STR_TIMETABLE_DAYS :{COMMA}日 @@ -3939,6 +4027,8 @@ STR_AI_SETTINGS_START_DELAY :AI企業の設 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING}のReadme STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING}の変更履歴 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING}のライセンス +STR_TEXTFILE_WRAP_TEXT :{WHITE}テキストのラップ +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}ウィンドウ内のテキストをラップするだけでスクロールなしで領域に合うようになります STR_TEXTFILE_VIEW_README :{BLACK}Readmeを見る STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}変更履歴を見る STR_TEXTFILE_VIEW_LICENCE :{BLACK}ライセンス @@ -4049,6 +4139,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}ここ STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}すでに海水位です STR_ERROR_TOO_HIGH :{WHITE}高すぎます STR_ERROR_ALREADY_LEVELLED :{WHITE}すでに平坦になっています +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}地形を変更すると上を走る橋梁を支えられなくなります # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}会社名を変更できません @@ -4075,7 +4166,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}マッ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}他の街に近すぎます STR_ERROR_TOO_MANY_TOWNS :{WHITE}街数の制限を超えています STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}マップに空きスペースがありません -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}この街は自動では道路を建設しません。詳細設定の「経済->街」で道路の建設を許可できます +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}この街は自動では道路を建設しません。「設定→環境→街」から道路の建設を許可できます STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}道路補修工事中です STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}街を削除できません{}この街名を参照する停留施設・車庫か、街が所有するタイルが除去できません STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}街の中心部に像を建てるのに適した場所がありません @@ -4099,6 +4190,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}雪線 STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}降雪線より上にのみ建設できます STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}降雪線より下にのみ建設できます +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}産業「{STRING}」を建設するのに適切な土地がありません +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}よりよいマップを作成するため、生成パラメーターを変更します + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}ここには駅を建設できません STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}ここにはバス停を建設できません @@ -4235,6 +4329,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}先に STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}開始点と終了点が同じです STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}橋端が同じ高さではありません STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}橋が低く、途中の起伏を越えられません +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}橋が地面から高すぎます STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}橋は直線である必要があります STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}橋の先端は両方地面である必要があります STR_ERROR_BRIDGE_TOO_LONG :{WHITE}橋が長すぎます @@ -4261,6 +4356,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}すで STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}グループを作成できません STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}グループを削除できません STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}グループ名を変更できません +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}親グループを設定できません STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}グループ内の全車両を移動できません STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}この車両をこのグループに追加できません STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}グループに共有車両を追加できません @@ -4798,6 +4894,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (非表示) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4930,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4940,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 351ac0c880..9d3dec0d3c 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -3,9 +3,9 @@ ##isocode ko_KR ##plural 11 ##textdir ltr -##digitsep . -##digitsepcur . -##decimalsep , +##digitsep , +##digitsepcur , +##decimalsep . ##winlangid 0x0412 ##grflangid 0x3a ##gender m f @@ -55,7 +55,7 @@ STR_CARGO_PLURAL_CANDY :{G=m}사탕 STR_CARGO_PLURAL_COLA :{G=f}콜라 STR_CARGO_PLURAL_COTTON_CANDY :{G=m}솜사탕 STR_CARGO_PLURAL_BUBBLES :{G=m}거품 -STR_CARGO_PLURAL_TOFFEE :{G=f}태피 +STR_CARGO_PLURAL_TOFFEE :{G=f}토피 STR_CARGO_PLURAL_BATTERIES :{G=f}건전지 STR_CARGO_PLURAL_PLASTIC :{G=m}플라스틱 STR_CARGO_PLURAL_FIZZY_DRINKS :{G=f}탄산음료 @@ -89,41 +89,41 @@ STR_CARGO_SINGULAR_CANDY :{G=m}사탕 STR_CARGO_SINGULAR_COLA :{G=f}콜라 STR_CARGO_SINGULAR_COTTON_CANDY :{G=m}솜사탕 STR_CARGO_SINGULAR_BUBBLE :{G=m}거품 -STR_CARGO_SINGULAR_TOFFEE :{G=f}태피 +STR_CARGO_SINGULAR_TOFFEE :{G=f}토피 STR_CARGO_SINGULAR_BATTERY :{G=f}건전지 STR_CARGO_SINGULAR_PLASTIC :{G=m}플라스틱 STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}탄산음료 # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :승객 {COMMA}명 +STR_QUANTITY_PASSENGERS :승객{NBSP}{COMMA}명 STR_QUANTITY_COAL :석탄 {WEIGHT_LONG} -STR_QUANTITY_MAIL :우편 {COMMA}자루 +STR_QUANTITY_MAIL :{G=f}우편 {COMMA}{NBSP}자루 STR_QUANTITY_OIL :석유 {VOLUME_LONG} -STR_QUANTITY_LIVESTOCK :가축 {COMMA}마리 -STR_QUANTITY_GOODS :상품 {COMMA}상자 +STR_QUANTITY_LIVESTOCK :{G=f}가축 {COMMA}{NBSP}마리 +STR_QUANTITY_GOODS :{G=f}상품 {COMMA}{NBSP}상자 STR_QUANTITY_GRAIN :곡물 {WEIGHT_LONG} STR_QUANTITY_WOOD :목재 {WEIGHT_LONG} STR_QUANTITY_IRON_ORE :철광석 {WEIGHT_LONG} STR_QUANTITY_STEEL :철 {WEIGHT_LONG} -STR_QUANTITY_VALUABLES :귀금속 {COMMA}자루 +STR_QUANTITY_VALUABLES :{G=f}귀금속 {COMMA}{NBSP}자루 STR_QUANTITY_COPPER_ORE :구리 광석 {WEIGHT_LONG} STR_QUANTITY_MAIZE :옥수수 {WEIGHT_LONG} STR_QUANTITY_FRUIT :과일 {WEIGHT_LONG} -STR_QUANTITY_DIAMONDS :다이아몬드 {COMMA}자루 +STR_QUANTITY_DIAMONDS :{G=f}다이아몬드 {COMMA}{NBSP}자루 STR_QUANTITY_FOOD :식품 {WEIGHT_LONG} STR_QUANTITY_PAPER :종이 {WEIGHT_LONG} -STR_QUANTITY_GOLD :금 {COMMA}자루 +STR_QUANTITY_GOLD :{G=f}금 {COMMA}{NBSP}자루 STR_QUANTITY_WATER :물 {VOLUME_LONG} STR_QUANTITY_WHEAT :밀 {WEIGHT_LONG} STR_QUANTITY_RUBBER :고무 {VOLUME_LONG} STR_QUANTITY_SUGAR :설탕 {WEIGHT_LONG} -STR_QUANTITY_TOYS :장난감 {COMMA}상자 -STR_QUANTITY_SWEETS :사탕 {COMMA}자루 +STR_QUANTITY_TOYS :{G=f}장난감 {COMMA}{NBSP}상자 +STR_QUANTITY_SWEETS :{G=f}사탕 {COMMA}{NBSP}자루 STR_QUANTITY_COLA :콜라 {VOLUME_LONG} STR_QUANTITY_CANDYFLOSS :솜사탕 {WEIGHT_LONG} STR_QUANTITY_BUBBLES :거품 {COMMA}개 -STR_QUANTITY_TOFFEE :태피 {WEIGHT_LONG} +STR_QUANTITY_TOFFEE :토피 {WEIGHT_LONG} STR_QUANTITY_BATTERIES :건전지 {COMMA}개 STR_QUANTITY_PLASTIC :플라스틱 {VOLUME_LONG} STR_QUANTITY_FIZZY_DRINKS :탄산음료 {COMMA}개 @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}X STR_ABBREV_ALL :{TINY_FONT}모두 # 'Mode' of transport for cargoes -STR_PASSENGERS :{G=m}승객 {COMMA}명 -STR_BAGS :{G=f}{COMMA} 자루 -STR_TONS :{G=m}{COMMA} 톤 -STR_LITERS :{G=f}{COMMA} 리터 -STR_ITEMS :{G=m}{COMMA} 마리 -STR_CRATES :{G=f}{COMMA} 상자 +STR_PASSENGERS :{G=m}승객 {COMMA}{NBSP}명 +STR_BAGS :{G=f}{COMMA}{NBSP}자루 +STR_TONS :{G=m}{COMMA}{NBSP}톤 +STR_LITERS :{G=f}{COMMA}{NBSP}리터 +STR_ITEMS :{G=m}{COMMA}{NBSP}마리 +STR_CRATES :{G=f}{COMMA}{NBSP}상자 # Colours, do not shuffle STR_COLOUR_DARK_BLUE :어두운 파랑 @@ -192,36 +192,36 @@ STR_COLOUR_GREY :회색 STR_COLOUR_WHITE :흰색 # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA}mph -STR_UNITS_VELOCITY_METRIC :{COMMA}km/h -STR_UNITS_VELOCITY_SI :{COMMA}m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}마력 -STR_UNITS_POWER_METRIC :{COMMA}마력 -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}마력 +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}마력 +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} 톤 -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}톤 -STR_UNITS_WEIGHT_LONG_SI :{COMMA}kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}톤 +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}톤 +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}갤런 -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}갤런 +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} 갤런 -STR_UNITS_VOLUME_LONG_METRIC :{COMMA}리터 -STR_UNITS_VOLUME_LONG_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}갤런 +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}리터 +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} 파운드중 -STR_UNITS_FORCE_METRIC :{COMMA} kg중 +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}파운드중 +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kg중 STR_UNITS_FORCE_SI :{COMMA}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA}ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}피트 +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m STR_UNITS_HEIGHT_SI :{COMMA}m # Common window strings @@ -241,13 +241,24 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}창을 STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}창 제목 - 창을 움직이려면 여기를 드래그하세요. STR_TOOLTIP_SHADE :{BLACK}창 접기 - 창을 접어 제목만 보여줍니다. STR_TOOLTIP_DEBUG :{BLACK}NewGRF 디버그 정보를 보여주기 -STR_TOOLTIP_DEFSIZE :{BLACK}창의 크기를 기본 크기로 되돌립니다. 현재 창 크기를 기본값으로 설정하시려면 Ctrl+클릭하십시오. -STR_TOOLTIP_STICKY :{BLACK}이 창을 '모든 창 닫기' 단축키로 닫을 수 없게 고정합니다. Ctrl+클릭하면 그 상태를 기본으로 설정합니다. +STR_TOOLTIP_DEFSIZE :{BLACK}창의 크기를 기본 크기로 되돌립니다. 현재 창 크기를 기본값으로 설정하시려면 CTRL+클릭하십시오. +STR_TOOLTIP_STICKY :{BLACK}이 창을 '모든 창 닫기' 단축키로 닫을 수 없게 고정합니다. CTRL+클릭하면 그 상태를 기본으로 설정합니다. STR_TOOLTIP_RESIZE :{BLACK}이 창의 크기를 조절하려면 여기를 클릭하고 드래그하세요 STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}창 크기를 대형/소형으로 전환합니다. STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}스크롤 바 - 목록을 상/하로 스크롤하세요. STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}스크롤 바 - 목록을 좌/우로 스크롤하세요. -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}직사각형 모양의 영역에 있는 건물과 땅 등을 부숩니다. CTRL을 누른 채로 사용하면 대각선 영역 선택이 가능합니다. SHIFT를 누른채로 사용하면 예상 가격을 볼 수 있습니다. +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}직사각형 모양의 영역에 있는 건물과 땅 등을 부숩니다. CTRL 키를 누른 채로 사용하면 대각선 영역 선택이 가능합니다. SHIFT 키를 누른채로 사용하면 예상 가격을 볼 수 있습니다. + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}숨겨진 차량 보기 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}숨겨진 차량 보기 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}숨겨진 차량 보기 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}숨겨진 차량 보기 + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}이 버튼을 누르면 숨겨진 열차 차량도 구매 목록에 모두 표시합니다. +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}이 버튼을 누르면 숨겨진 자동차/전차 차량도 구매 목록에 모두 표시합니다. +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}이 버튼을 누르면 숨겨진 선박도 구매 목록에 모두 표시합니다. +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}이 버튼을 누르면 숨겨진 항공기도 구매 목록에 모두 표시합니다. # Query window STR_BUTTON_DEFAULT :{BLACK}기본값 @@ -318,10 +329,10 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}목표 STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}그래프 메뉴를 표시합니다. STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}회사의 성취도 순위를 표시합니다. STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}새 산업시설에 투자하거나 산업시설의 목록을 표시합니다. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}각 회사의 열차 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}각 회사의 자동차 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}각 회사의 선박 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}각 회사의 항공기 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}각 회사의 열차 목록을 표시합니다. CTRL+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}각 회사의 차량 목록을 표시합니다. CTRL+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}각 회사의 선박 목록을 표시합니다. CTRL+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}각 회사의 항공기 목록을 표시합니다. CTRL+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}화면을 확대합니다. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}화면을 축소합니다. STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}철도 시설을 건설합니다. @@ -344,11 +355,11 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}시작 STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}지도, 도시 목록 보여주기 STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}지형을 생성합니다. STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}도시를 생성합니다. -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}산업 시설을 만듭니다. +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}산업시설을 건설합니다. STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}도로를 건설합니다. -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}나무를 심습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}나무를 심습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}팻말을 답니다. -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}오브젝트를 설치합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}오브젝트를 설치합니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :시나리오 저장 @@ -362,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :게임 종료 ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :게임 옵션 -STR_SETTINGS_MENU_CONFIG_SETTINGS :고급 설정 +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :설정 STR_SETTINGS_MENU_SCRIPT_SETTINGS :인공지능/게임 스크립트 설정 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 설정 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :투명 설정 @@ -373,7 +384,7 @@ STR_SETTINGS_MENU_SIGNS_DISPLAYED :팻말을 표 STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :경쟁사의 팻말과 역 이름을 표시 STR_SETTINGS_MENU_FULL_ANIMATION :완전한 애니메이션 STR_SETTINGS_MENU_FULL_DETAIL :그래픽을 아주 상세하게 -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :건물 안 보이기 +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :건물 숨기기 STR_SETTINGS_MENU_TRANSPARENT_SIGNS :역명판 감추기 ############ range ends here @@ -422,8 +433,8 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :새 산업시 ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :철로 건설 -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :전기철로 건설 +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :선로 건설 +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :전기선로 건설 STR_RAIL_MENU_MONORAIL_CONSTRUCTION :모노레일 건설 STR_RAIL_MENU_MAGLEV_CONSTRUCTION :자기부상열차 건설 ############ range ends here @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :박스 경계 STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :더러운 블록 색상 전환 ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -551,7 +580,7 @@ STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}화물 STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}통과시간 STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}10 단위(1만 리터)의 화물을 20칸 거리만큼 운송할 때의 운송비 지급량 STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}모두 사용 -STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}모두 사용 안함 +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}모두 사용 안 함 STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}화물 운송단가 비율 그래프에서 모든 화물을 표시 STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}화물 운송단가 비율 그래프에서 모든 화물을 표시 안 함 STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}이 화물에 대한 그래프 켜기/끄기 @@ -595,13 +624,13 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}재정: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}대출: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}종합: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}작년에 수익을 낸 차량의 수를 나타냅니다. 자동차, 열차, 선박, 항공기를 포함합니다. +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}작년에 수익을 낸 차량의 수를 나타냅니다. 자동차/전차, 열차, 선박, 항공기를 포함합니다. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}현재 영업 중인 역사의 수를 나타냅니다. 기차역, 버스 정류장, 공항 등은 같은 역으로 묶여있어도 따로 집계됩니다. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}가장 낮은 수입을 가진 차량의 이익입니다. (2년 이상된 차량만 계산) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}지난 12분기동안 최소 이익을 달성한 차량이 번 돈의 양입니다. -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}지난 12분기동안 최대 이익을 달성한 차량이 번 돈의 양입니다. -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}지난 4분기동안 수송한 화물량입니다. -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}지난 1분기에 수송한 화물의 종류 수입니다. +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}지난 12분기 동안 최소 이익을 달성한 차량이 벌어들인 돈의 양입니다. +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}지난 12분기 동안 최대 이익을 달성한 차량이 벌어들인 돈의 양입니다. +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}지난 4분기 동안 수송한 화물량입니다. +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}지난 1분기 동안 수송한 화물의 종류 수입니다. STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}회사가 소지한 재정입니다. STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}회사가 대출해간 재정의 양입니다. STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}위 항목들의 총 합계 점수입니다. @@ -682,21 +711,21 @@ STR_SMALLMAP_TYPE_OWNERS :소유주 STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}높이에 따라 땅을 다른 색으로 표시합니다. STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}차량을 지도에 표시합니다. STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}산업시설을 지도에 표시합니다. -STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}지도에 화물 흐름을 표시 +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}지도에 화물 흐름을 표시합니다. STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}수송 기반시설과 경로를 지도에 표시합니다. STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}초목을 지도에 표시합니다. STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}부지의 소유주를 지도에 표시합니다. STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}산업 시설 타입 표시를 전환하려면 클릭하십시오. CTRL+클릭하면 선택한 산업시설을 제외한 모든 종류를 비활성화합니다. 다시 CTRL+클릭하면 모든 산업시설이 활성화됩니다. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}회사 속성의 표시를 전환하려면 회사를 클릭하십시오. CTRL+클릭으로 선택한 회사를 제외한 모든 회사를 비활성화하십시오. 다시 CTRL+클릭하면 다시 모든 회사가 활성화됩니다. -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}해당 화물의 흐름도를 표시하려면 클릭하십시오. Ctrl+클릭하면 선택한 화물만 표시합니다. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}해당 화물의 흐름도를 표시하려면 클릭하십시오. CTRL+클릭하면 선택한 화물만 표시합니다. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}도로 -STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}철로 +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}철도 STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}역/공항/항구 STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}건물/산업시설 STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}차량 STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}열차 -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}자동차 +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}자동차/전차 STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}선박 STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}항공기 STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}운송 경로 @@ -715,7 +744,7 @@ STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}물 STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}소유주 없음 STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}도시 -STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}산업 시설 +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}산업시설 STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}사막 STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}눈 @@ -725,11 +754,11 @@ STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STR STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} -STR_SMALLMAP_DISABLE_ALL :{BLACK}모두 사용 안함 +STR_SMALLMAP_DISABLE_ALL :{BLACK}모두 사용 안 함 STR_SMALLMAP_ENABLE_ALL :{BLACK}모두 사용 STR_SMALLMAP_SHOW_HEIGHT :{BLACK}고도 표시 -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}지도 상에 모든 산업 시설을 감춥니다. -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}지도 상에 모든 산업 시설을 보여줍니다. +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}지도 상의 모든 산업시설을 숨깁니다. +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}지도 상의 모든 산업시설을 보여줍니다. STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}지형의 높낮이를 표시합니다. STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}그 어떤 회사의 재산도 지도에 표시하지 않습니다. STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}모든 회사의 재산을 지도에 표시합니다. @@ -760,13 +789,13 @@ STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}시민들이 축하하고 있습니다 . . .{}{STATION}에 처음으로 항공기가 도착했습니다! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}열차 충돌 사고!{}충돌로 인한 폭발로 {COMMA}명의 사망자가 발생하였습니다! -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}자동차 충돌!{}열차와의 충돌로 운전사가 사망했습니다! -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}자동차 충돌!{}열차와의 충돌로 {COMMA}명이 사망했습니다! +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}차량 충돌!{}열차와의 충돌로 인해 운전자가 사망했습니다! +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}차량 충돌!{}열차와의 충돌로 {COMMA}명이 사망했습니다! STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}항공기 충돌사고 발생!{}{COMMA}명이 {STATION}공항에서 사망하였습니다! STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}항공기 추락사고 발생!{}연료 부족으로 인하여 {COMMA}명이 사망하였습니다! -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}{STATION}에서 체펠린이 추락했습니다! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}UFO의 폭격으로 자동차가 파괴되었습니다! +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}체펠린 비행선이 {STATION}에 추락했습니다! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}'UFO'의 폭격으로 차량이 파괴되었습니다! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}{TOWN} 근처의 정유 공장에서 폭발 사고가 발생하였습니다! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN} 근처의 공장이 의심스러운 정황으로 인해 파괴되었습니다! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO가 {TOWN} 근처에 착륙했습니다! @@ -778,7 +807,7 @@ STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}운송 회사 합병! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 회사가 {STRING} 회사에게 {CURRENCY_LONG}의 가격으로 인수합병되었습니다! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}파산! -STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}가 채권자에 의해 파산되고 모든 자산이 팔렸습니다! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 회사가 채권자에 의해 모든 자산이 팔려 파산하였습니다! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}새로운 운송회사 등장! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}{G 0 "이" "가"} {TOWN}에서 공사를 시작했습니다! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING}의 관리권이 {STRING}(으)로 넘어갔습니다! @@ -811,43 +840,42 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} : 정박소 안에서 대기 중입니다. STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} : 격납고 안에서 대기 중입니다. -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE}에 경로를 하나 이상 지정해주십시오 STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE}에 빈 경로가 지정되어 있습니다 STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE}에 중복된 경로가 지정되어 있습니다 STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE}에 잘못된 경로가 지정되어 있습니다 -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE}의 경로 중에 활주로가 너무 짧은 공항이 있습니다. STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} : 차량이 낡았습니다. STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} : 차량이 매우 낡았습니다. STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} : 차량이 매우 낡아 교체가 시급합니다 -STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} : 다음 목적지로의 경로를 찾을 수 없습니다. +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} : 다음 목적지로 가는 경로를 찾을 수 없습니다. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} : 아직 다음 목적지에 도착하지 못했습니다. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}의 작년 수익이 {CURRENCY_LONG} 입니다. STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}거리가 너무 멀어서 {VEHICLE}이 다음 목적지에 도착할 수 없습니다 -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}경로상에 계획된 개조에 실패하여 {VEHICLE}{P "가" "이"} 운행을 멈췄습니다. +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}경로 상에 있던 개조에 실패하여 {VEHICLE}의 운행을 멈췄습니다. STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}{VEHICLE}의 자동 교체에 실패하였습니다{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}신형 {STRING}{G 0 "이" "가"} 출시되었습니다! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}신형 {STRING}{G 0 "을" "를"} 사용할 수 있습니다! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}신형 {STRING}{G 0 "이" "가"} 출시되었습니다! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}신형 {STRING}{G 0 "을" "를"} 사용할 수 있습니다! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION}에서 더 이상 {STRING}{G 1 "을" "를"} 받지 않습니다. STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION}에서 더 이상 {STRING}/{STRING}{G 2 "을" "를"} 받지 않습니다. STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION}에서 이제 {STRING}{G 1 "을" "를"} 받을 수 있습니다. STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION}에서 이제 {STRING}/{STRING}{G 2 "을" "를"} 받을 수 있습니다. -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}보조금 제공 계약 파기:{}{}{1:STRING}에서 {2:STRING}까지의 {0:STRING} 수송은{}더이상 보조금을 지급하지 않습니다. -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}보조금 제공 철회:{}{}지역 당국은 {1:STRING}에서 {2:STRING}까지의{}{0:STRING} 수송에 대한 보조금을 철회하였습니다. -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}보조금 제공 안내:{}{}처음으로 {1:STRING}에서 {2:STRING}까지{}{0:STRING}{G 0 "을" "를"} 수송하는 회사는{}지역 당국으로부터 보조금을 받게 될 것입니다! +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}보조금 지급 계약 파기:{}{}{1:STRING}에서 {2:STRING}까지의 {0:STRING} 수송은{}더 이상 보조금을 지급하지 않습니다. +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}보조금 지급 만료:{}{}{1:STRING}에서 {2:STRING}까지의{}{0:STRING} 수송 보조금은 더 이상 지급되지 않습니다. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}보조금 지급 안내:{}{}처음으로 {1:STRING}에서 {2:STRING}까지{}{0:STRING}{G 0 "을" "를"} 수송하는 회사는{}지역 당국으로부터 보조금을 받게 될 것입니다! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{0:STRING}에게 보조금 지급!{}{}{2:STRING}에서 {3:STRING}까지의 {1:STRING} 수송에 대해 50%의 추가 보조금을 내년까지 받게 됩니다! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{0:STRING}에게 보조금 지급!{}{}{2:STRING}에서 {3:STRING}까지의 {1:STRING} 수송에 대해 2배의 추가 보조금을 내년까지 받게 됩니다! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{0:STRING}에게 보조금 지급!{}{}{2:STRING}에서 {3:STRING}까지의 {1:STRING} 수송에 대해 3배의 추가 보조금을 내년까지 받게 됩니다! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{0:STRING}에게 보조금 지급!{}{}{2:STRING}에서 {3:STRING}까지의 {1:STRING} 수송에 대해 4배의 추가 보조금을 내년까지 받게 됩니다! -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN}의 교통 혼잡!{}{}{STRING}에 의한 도로 보수공사 프로그램이 운전자들에게 6개월간의 고통을 가져다 줄 것입니다! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN}의 교통 혼잡!{}{}{STRING}에 의해 실시된 도로 보수공사 프로그램으로 인해 6개월 동안 운전자들이 불편을 겪을 것입니다! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}독점 수송! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{0:TOWN} 지역 당국이 {1:STRING}과 1년 간의 수송 독점권 계약을 체결하였습니다! @@ -859,7 +887,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}이 장 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}외부 화면에 저장된 장소로 이동합니다. # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}게임 설정 +STR_GAME_OPTIONS_CAPTION :{WHITE}게임 기본 설정 STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}화폐 단위 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}화폐 단위 선택 @@ -900,10 +928,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :그루지야 STR_GAME_OPTIONS_CURRENCY_IRR :이란 리알 (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}차량 통행 방식 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}차량 통행 방법 선택 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :좌측통행 @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :카탈로니아 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}자동 저장 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}게임 자동 저장 간격을 선택 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :사용 안함 +############ start of autosave dropdown +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :사용 안 함 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :매달 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3개월마다 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6개월마다 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12개월마다 +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}언어 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}사용하실 언어를 선택하세요. @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}화면 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}사용하실 화면 해상도를 선택하세요. STR_GAME_OPTIONS_RESOLUTION_OTHER :{G=f}기타 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}스크린 샷 파일 형식 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}사용하실 스크린 샷의 파일 형식을 선택하세요. +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}인터페이스 크기 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스의 크기를 선택하십시오. + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :보통 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2배 크기 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4배 크기 STR_GAME_OPTIONS_BASE_GRF :{BLACK}기본 그래픽 세트 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}사용하실 기본 그래픽을 선택하세요. @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}사용 STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM}개의 파일이 손상되었습니다. STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}기본 배경 음악 세트에 대한 추가 정보를 봅니다. +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}지원되는 해상도 목록을 불러오는데 실패하였습니다. STR_ERROR_FULLSCREEN_FAILED :{WHITE}풀스크린 모드 실패 # Custom currency window @@ -991,7 +1022,7 @@ STR_CURRENCY_SUFFIX :{LTBLUE}접미 STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}사용자 화폐 단위 뒤에 붙는 문구를 설정하십시오. STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}유로화로 전환: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}유로화로 전환: {ORANGE}안함 +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}유로화로 전환: {ORANGE}전환하지 않음 STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}유로화(€) 전환 연도를 설정하십시오. STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}유로화(€) 전환 연도를 앞으로 당깁니다. STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}유로화(€) 전환 연도를 늦춥니다. @@ -1050,6 +1081,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :매우 평탄 STR_TERRAIN_TYPE_FLAT :평탄함 STR_TERRAIN_TYPE_HILLY :언덕 STR_TERRAIN_TYPE_MOUNTAINOUS :산 +STR_TERRAIN_TYPE_ALPINIST :매우 험한 산지 STR_CITY_APPROVAL_PERMISSIVE :신경 안씀 STR_CITY_APPROVAL_TOLERANT :신경 씀 @@ -1057,8 +1089,8 @@ STR_CITY_APPROVAL_HOSTILE :싫어함 STR_WARNING_NO_SUITABLE_AI :{WHITE}사용할 수 있는 인공지능이 없습니다...{}'온라인 콘텐츠' 시스템을 통해 인공지능을 다운로드받을 수 있습니다. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}고급 설정 +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}설정 STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}검색할 문자열: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}모두 펼치기 STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}모두 접기 @@ -1071,11 +1103,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :게임 설정 ( STR_CONFIG_SETTING_TYPE_COMPANY_MENU :회사 설정 (게임 저장 파일에 저장됨; 새 게임에만 적용됨) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :회사 설정 (게임 저장 파일에 저장됨; 현재 회사에만 적용됨) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}표시: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}설정 값이 변경된 설정만 목록에 표시하도록 할 수 있습니다. -STR_CONFIG_SETTING_RESTRICT_BASIC :기본 설정 -STR_CONFIG_SETTING_RESTRICT_ADVANCED :고급 설정 -STR_CONFIG_SETTING_RESTRICT_ALL :전문가 설정 / 모든 설정 +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}분류: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}종류: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}미리 지정한 검색어에 해당하는 설정 목록에 표시하도록 할 수 있습니다. +STR_CONFIG_SETTING_RESTRICT_BASIC :기본 설정 (일부 중요한 설정만 보임) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :고급 설정 (대부분의 설정을 보여줌) +STR_CONFIG_SETTING_RESTRICT_ALL :전문가 설정 / 모든 설정 (모든 설정을 보여줌) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :기본값과 다른 값을 가진 설정 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :이 게임 내에서 다른 값을 가진 설정 @@ -1086,6 +1119,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :게임 설정 ( STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :게임 설정 (게임 저장 파일에 저장됨; 현재 게임에만 적용됨) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :회사 설정 (게임 저장 파일에 저장됨; 새 게임에만 적용됨) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :회사 설정 (게임 저장 파일에 저장됨; 현재 회사에만 적용됨) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}검색 결과를 전부 보시려면 {}{SILVER}분류 {BLACK}설정을 {WHITE}{STRING}{BLACK}으로 바꾸십시오. +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}검색 결과를 전부 보시려면 {}{SILVER}종류 {BLACK}설정을 {WHITE}모든 설정{BLACK}으로 바꾸십시오. +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}검색 결과를 전부 보시려면 {}{SILVER}분류 {BLACK}설정을 {WHITE}{STRING}{BLACK}으로, {SILVER}종류 {BLACK}설정을 {WHITE}모든 설정{BLACK}으로 바꾸십시오. +STR_CONFIG_SETTINGS_NONE :{WHITE}- 없음 - STR_CONFIG_SETTING_OFF :아니요 STR_CONFIG_SETTING_ON :예 @@ -1104,7 +1141,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :가운데 STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :오른쪽 STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :최대 초기 대출금: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :한 회사가 최대한 빌릴 수 있는 (계좌에 인플레이션을 고려하지 않고 들어오는) 대출금의 양을 조절할 수 있습니다. +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :한 회사가 최대한 빌릴 수 있는 대출금의 양을 조절할 수 있습니다. (여기서 설정한 값은 인플레이션에 의한 효과를 적용하지 않은 값입니다.) STR_CONFIG_SETTING_INTEREST_RATE :대출 금리: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :대출 금리입니다. 인플레이션 설정이 켜져있는 경우 인플레이션의 영향을 받습니다. STR_CONFIG_SETTING_RUNNING_COSTS :유지비: {STRING} @@ -1123,12 +1160,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :열차가 역 STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :이 옵션을 켜면 회차했을 때 다음 목적지까지 가는 더 짧은 경로가 있어도 열차가 비두단식 역에서 회차할 수 없게 됩니다. STR_CONFIG_SETTING_DISASTERS :재앙: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :블록이나 차량, 기반시설을 간혹 파괴할 수도 있는 재앙 옵션을 켜거나 끕니다. -STR_CONFIG_SETTING_CITY_APPROVAL :지역 개발에 대한 도시 의회의 태도: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :지역 개발에 대한 도시의 태도: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :회사가 유발하는 소음과 환경 파괴가 회사에 대한 도시의 평가치와 향후 해당 지역에서의 건설 행동에 얼마나 영향을 미칠지 선택하십시오. -STR_CONFIG_SETTING_BUILDONSLOPES :경사/해안가 위의 건설을 허용: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :이 옵션을 켜면 도로, 철도, 역 등을 대부분의 경사에 설치할 수 있게 됩니다. 이 옵션을 끄면 오직 트랙의 방향과 일치하는 경사에만 설치가 가능하기 때문에 기반 지형을 만들 필요가 없습니다. -STR_CONFIG_SETTING_AUTOSLOPE :건물, 트랙 등의 하부 지형 편집 허용 (자동 슬로프): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :최대 지형 높이: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :지도에 생성되는 산이 가질 수 있는 최대 높이를 설정합니다. +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}이 값을 최대 지형 높이로 설정할 수 없습니다. 이 값보다 고도가 높은 산이 최소 한 개 이상 존재합니다. +STR_CONFIG_SETTING_AUTOSLOPE :건물, 트랙 등의 하부 지형 편집 허용: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :건물이나 도로/선로 등을 제거하지 않고도 하부의 지형을 편집할 수 있게 허용합니다. STR_CONFIG_SETTING_CATCHMENT :더 현실적인 역세권 지정: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :역과 공항의 종류에 따라 다른 크기의 역세권을 가지도록 만듭니다. @@ -1141,54 +1179,48 @@ STR_CONFIG_SETTING_SMOKE_AMOUNT :차량의 매 STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :차량에서 연기나 전기 스파크가 얼마나 많이 일어나는지 설정합니다. STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :열차 가속 모델: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :열차 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 열차의 길이나 기관차의 견인력 등의 구성 속성에 따라 언덕과 커브에서 속력이 감소합니다. -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :자동차 가속 모델: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :자동차 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 차량의 견인력 등 차량의 다양한 속성에 따라 언덕을 오를 때 속력이 감소합니다. +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :자동차/전차 가속 모델: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :자동차/전차의 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 차량의 견인력 등 차량의 다양한 속성에 따라 언덕을 오를 때 속력이 감소합니다. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :경사도 설정 (열차용): {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :열차에 적용시킬 경사도를 설정합니다. 값이 높을수록 열차가 언덕을 올라가는데 더 힘이 듭니다. STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :경사도 설정 (자동차용): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :자동차에 적용시킬 경사도를 설정합니다. 값이 높을수록 자동차가 언덕을 오를 때 더 힘이 듭니다. +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :경사도 설정 (자동차/전차용): {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :자동차/전차에 적용시킬 경사도를 설정합니다. 값이 높을수록 차량이 언덕을 오를 때 더 힘이 듭니다. STR_CONFIG_SETTING_FORBID_90_DEG :열차/선박의 90도 회전을 금지함: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :─ 모양의 수평 선로와 │ 모양의 수직 선로가 바로 이어져 만날 때 90도 회전이 발생합니다. 이 옵션을 켜면 열차가 칸 가장자리를 통과할 때 90도로 회전할 수 있도록 허용합니다. 이 옵션은 선박의 회전 반경에도 적용됩니다. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :역이 같은 방향으로 붙어있지 않아도 같은 이름의 역 짓기 허용: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :이미 존재하는 역을 직접 건드리지 않고도 역의 일부분을 새로 추가/확장하는 것을 허용합니다. 인접한 칸에 기존과 다른 새로운 역을 놓을 때에는 Ctrl+클릭이 필요합니다. -STR_CONFIG_SETTING_IMPROVEDLOAD :향상된 수송 알고리즘 사용: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :이 옵션을 켜면 역에서 차량이 여러 대가 기다리고 있으면 먼저 도착한 순서대로 화물을 싣게 됩니다. 다음에 도착하는 차량은, 이미 화물을 싣고 있는 차량이 화물을 모두 싣고 난 다음에서야 적재를 시작하게 됩니다. -STR_CONFIG_SETTING_GRADUAL_LOADING :화물을 차량에 단계적으로 싣기: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :적재된 화물의 양에 따라 고정된 시간이 지나면 한 번에 모두 적재하는 대신, 차량의 적재 상황을 시간이 지남에 따라 단계별로 표시합니다. +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :이미 존재하는 역을 직접 건드리지 않고도 역의 일부분을 새로 추가/확장하는 것을 허용합니다. 인접한 칸에 기존과 다른 새로운 역을 놓을 때에는 CTRL+클릭해야 합니다. STR_CONFIG_SETTING_INFLATION :인플레이션(화폐 가치 하락) 사용: {STRING} -STR_CONFIG_SETTING_INFLATION_HELPTEXT :비용이 지불하는 것보다 약간 더 빠르게 성장하고 있는 경제가 되면 인플레이션을 활성화합니다. -STR_CONFIG_SETTING_SELECTGOODS :수요가 있을 때만 화물을 역에 옮겨놓음: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :역으로 수송되는 화물만 차량에 적재가 가능해집니다. 이 옵션을 켜면 역에서 수송되지 않는 화물이 낮은 수송등급을 받는 것을 막아줍니다. +STR_CONFIG_SETTING_INFLATION_HELPTEXT :경제에 인플레이션 효과를 적용합니다. 벌어들이는 수익보다 지출하는 경비가 조금 더 빨리 상승하게 됩니다. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :다리의 최대 건설 길이: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :다리의 최대 길이를 제한할 수 있습니다. +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :최대 다리 건설 높이: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :다리를 건설할 수 있는 최대 높이입니다. STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :터널의 최대 길이: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :터널의 최대 길이를 제한할 수 있습니다. -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :1차 산업 시설 건설 방법: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :1차 산업 시설에 대한 투자 방법을 선택합니다. '없음'은 투자가 불가능함을 뜻하고, '건설 가능 (무작위 위치)'은 투자는 가능하지만 지도 상 임의의 장소에 산업시설이 들어서거나 투자에 실패할 수 있음을 의미하고, '건설 가능 (위치 선택 가능)'은 생산 산업 시설처럼 회사가 원하는 위치에 7배 비용을 주고 설치가 가능함을 의미합니다. +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :1차 산업시설 건설 방법: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :1차 산업시설에 대한 투자 방법을 선택합니다. '없음'은 투자가 불가능함을 뜻하고, '건설 가능 (무작위 위치)'은 투자는 가능하지만 지도 상 임의의 장소에 산업시설이 들어서거나 투자에 실패할 수 있음을 의미하고, '건설 가능 (위치 선택 가능)'은 생산 산업시설처럼 회사가 원하는 위치에 7배 비용을 주고 설치가 가능함을 의미합니다. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :건설 불가 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :건설 가능 (위치 선택 가능, 7배 비용) STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :투자 (무작위 위치에 건설) -STR_CONFIG_SETTING_INDUSTRY_PLATFORM :산업 시설 주위의 평지: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :산업 시설 주위에 필요한 평지의 넓이를 설정합니다. 이 옵션을 설정한 만큼 철로나 도로, 기타 시설을 설치할 수 있도록 산업시설 주위에 반드시 빈 평지를 제공합니다. +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :산업시설 주위의 평지: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :산업시설 주변에 도로나 선로를 설치할 수 있는 평지 넓이를 설정합니다. 이 옵션을 통해 산업시설 주변에 선로나 역 등을 건설할 공간을 마련할 수 있습니다. STR_CONFIG_SETTING_MULTIPINDTOWN :한 도시에 비슷한 산업시설을 여러 개 건설할 수 있게 허용: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :일반적으로, 도시에는 각 종류의 산업시설이 하나까지만 있을 수 있습니다. 이 옵션을 설정하면 한 도시 안에 같은 종류의 산업 시설을 여러 개 설치할 수 있게 됩니다. STR_CONFIG_SETTING_SIGNALSIDE :신호기 보이기: {STRING} -STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :신호기를 철로의 어느 쪽에 둘 것인지를 선택합니다. +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :선로의 어느 쪽에 신호기를 설치할 지 선택합니다. STR_CONFIG_SETTING_SIGNALSIDE_LEFT :왼쪽에 STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :진행 방향에 STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :오른쪽에 STR_CONFIG_SETTING_SHOWFINANCES :연말에 자동으로 재정 창을 띄움: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :이 옵션을 켜면 회사의 재정 상태를 확인하기 쉽도록 매년 말에 재정 창이 자동으로 뜹니다. -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본적으로 '직통'으로 처리: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본적으로 '직행'으로 처리: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :일반적으로 차량은 경로 상에 있는 모든 역에 정차하게 되어있습니다. 이 옵션을 켜면 차량이 마지막 목적지까지 정차없이 모든 역을 통과할 것입니다. 이 옵션은 새로 경로를 지정하는 차량에만 적용되는 점을 알아두십시오. 하지만 각 차량의 경로는 두 가지 방법 중에 원하는 대로 다시 설정할 수 있습니다. STR_CONFIG_SETTING_STOP_LOCATION :새로 지정하는 역 정차 경로는 기본적으로 역의 {STRING}에 정지하도록 설정 STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :열차가 기본적으로 정거장의 어느 위치에 정차할 것인지를 설정합니다. '가까운 쪽'은 역에 진입하는 곳과 가까운 곳에, '중간'은 역 중앙에, '먼쪽'은 진입하는 곳과 먼 곳에 정차합니다. 이 옵션은 새로 경로를 지정하는 차량에만 적용되는 점을 알아두십시오. 하지만 각 차량의 경로는 두 가지 방법 중에 원하는 대로 다시 설정할 수 있습니다. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :가까운쪽 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :중간 STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :먼쪽 -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :정거장이 빌 때까지 그 앞에서 자동차를 대기시킴: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :자동차가 차량 정거장이 빌 때까지 그 앞쪽에서 기다리도록 합니다. STR_CONFIG_SETTING_AUTOSCROLL :가장자리에 마우스를 가져가면 화면 움직이기: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :이 옵션을 켜면, 마우스를 게임 및 외부 화면 창의 가장자리에 가까이 가져가면 화면을 이동시킵니다. STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :사용 안 함 @@ -1198,8 +1230,8 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :모든 화면 STR_CONFIG_SETTING_BRIBE :지역 당국에 뇌물을 주는 행위 허용: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :회사가 지역 도시 당국에 뇌물을 주는 것을 허용합니다. 뇌물 행위가 적발되는 경우, 회사는 해당 도시에서 6개월간 아무 행동도 할 수 없습니다. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :독점 운송권 구입 허용: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :한 회사가 어떤 도시의 독점수송권을 구매하면, 그 도시에 있는 상대편의 역에서는 그 해동안 (승객을 포함한) 그 어떠한 화물도 받을 수 없습니다. -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :도시 상업 건물 건설에 투자하는 행위 허용: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :한 회사가 어떤 도시의 독점수송권을 구매하면, 그 도시에 있는 상대편의 역에서는 그 해 동안 (승객을 포함한) 그 어떠한 화물도 받을 수 없습니다. +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :도시 상업 건물 건설에 투자하는 것을 허용: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :회사가 도시가 새로운 건물에 투자할 수 있도록 자금을 주는 것을 허용합니다. STR_CONFIG_SETTING_ALLOW_FUND_ROAD :도시 도로 보수공사 시행을 허용: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :도로 기반의 수송 체계를 갖추고 있는 다른 회사를 방해하기 위해 해당 도시가 도로 재건축을 시작하도록 회사가 도시에 돈을 지불하는 행위를 허용합니다. @@ -1208,7 +1240,7 @@ STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :멀티 플레 STR_CONFIG_SETTING_FREIGHT_TRAINS :화물 무게가중치 (무거운 열차를 구현할 때 사용): {STRING}배 STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :열차가 싣고 있는 화물이 열차 속력에 미치는 영향에 대해 설정합니다. 값을 높게 설정하면 화물을 수송하는데 더 큰 힘이 필요합니다. (특히 언덕을 오를 때 심해집니다) STR_CONFIG_SETTING_PLANE_SPEED :항공기 속력 조절: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :항공 수송에 대한 수익을 제한하기 위해, 자동차/철도/선박의 속력에 대한 항공기의 속력 비율을 설정합니다. +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :항공 수송에 대한 수익을 제한하기 위해, 다른 운송 수단의 속력을 1로 보았을 때의 항공기의 속력 비율을 설정합니다. STR_CONFIG_SETTING_PLANE_SPEED_VALUE :(실제 속력) x {COMMA}분의 1 STR_CONFIG_SETTING_PLANE_CRASHES :항공기 추락 빈도수: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :항공기 충돌 사고가 일어날 수 있는지 여부를 설정합니다. @@ -1219,15 +1251,11 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :도시 소유 STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :도시 소유의 도로 위에 버스 정류장 건설을 허용합니다. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :경쟁자 소유의 도로 위에 버스 정류장 건설 허용: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :다른 회사 소유의 도로 위에 버스 정류장을 건설하는 것을 허용합니다. -STR_CONFIG_SETTING_ADJACENT_STATIONS :역 바로 옆에 다른 이름의 역 건설 허용: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :기존에 존재하는 역 바로 옆에 새로운 역을 붙여서 건설할 수 있도록 허용합니다. -STR_CONFIG_SETTING_DYNAMIC_ENGINES :여러 개의 NewGRF 엔진 세트 허용: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :오래된 NewGRF에 대한 적합 옵션입니다. 정확히 어떤 기능을 하는지 알지 못한다면 절대 이 옵션을 끄지 마십시오! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}이미 차량이 존재하면 이 설정을 변경하실 수 없습니다. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :기반시설 유지비: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :이 옵션을 켜면 철로 등의 기반시설 유지 관리비가 발생합니다. 유지비는 교통망의 크기에 크게 비례하므로 규모가 작은 회사보다 큰 회사에 더 많은 유지관리비를 요구하게 됩니다. +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :이 옵션을 활성화하면 기반시설 유지비가 발생합니다. 유지비는 교통망의 규모에 비례하며 대형 회사는 소형 회사보다 많은 유지비가 들어갑니다. -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :옛날 공항이 사라지지 않고 계속 만들 수 있게 함: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :옛날 공항을 사라지지 않고 계속 만들 수 있게 함: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :이 옵션을 켜면 소형 공항을 포함한 모든 공항 종류를 도입 이후 계속 사용할 수 있게 됩니다. STR_CONFIG_SETTING_WARN_LOST_VEHICLE :차량이 길을 잃으면 경고: {STRING} @@ -1254,34 +1282,48 @@ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :오류 메시 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA}초 동안 STR_CONFIG_SETTING_HOVER_DELAY :도움말 보이기: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :마우스를 올려놓았을 때 도움말이 뜨는데 걸리는 시간을 설정합니다. 마우스 오른쪽 클릭으로 바로 뜨도록 할 수도 있습니다. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :마우스를 {COMMA}초간 올려놓기 +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :마우스를 {COMMA}밀리초 동안 올려놓기 (1밀리초 = 1/1000초) STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :마우스 오른쪽 클릭 STR_CONFIG_SETTING_POPULATION_IN_LABEL :도시 이름 옆에 도시의 인구 수를 표시함: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :도시 이름 옆에 도시의 인구 수를 표시합니다. STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :그래프 선의 두께: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :그래프의 선 두께를 설정합니다. 얇으면 자세히 볼 수 있고, 두꺼우면 눈에 확 들어오며 색상을 분간하기가 편해집니다. +STR_CONFIG_SETTING_LANDSCAPE :지형: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :지형에 따라 화물과 도시 성장 요구 조건이 다른 게임 플레이 시나리오가 만들어집니다. NewGRF과 게임 스크립트를 통해 세밀한 조절이 가능합니다. STR_CONFIG_SETTING_LAND_GENERATOR :지형 만들기: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :오리지널 모드는 기본 그래픽 세트에 따라 다른 지형을 생성하며, 단조로운 지형을 구성합니다. 천지창조는 개선된 제어 설정을 가진 생성기로 만들어진 임의 지형(펄린 노이즈)을 구성합니다. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :오리지널 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :천지창조 +STR_CONFIG_SETTING_TERRAIN_TYPE :지형 종류: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(천지창조 전용) 지형의 언덕 모양을 결정합니다. +STR_CONFIG_SETTING_INDUSTRY_DENSITY :산업시설 수: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :게임을 플레이하는 동안 얼마나 많은 산업시설이 생성되고 유지되어야 할 지를 설정합니다. STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :정유 공장의 최대 건설 범위: 지도 맨 끝에서부터 {STRING} 이내 STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :정유 공장은 지도의 동서남북 끝 경계 근처에만 건설할 수 있습니다. -STR_CONFIG_SETTING_SNOWLINE_HEIGHT :만년설의 높이: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :지형의 거친 정도 ('천지창조' 전용): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :설선 고도: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :아한대 기후의 설선 고도를 조절합니다. 눈은 산업시설의 생성과 도시 성장에 영향을 미칩니다. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :지형의 거친 정도: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(천지창조 전용) 언덕의 빈도수를 선택합니다. 평탄한 지형은 개수가 적고 넓게 퍼진 언덕을 만듭니다. 거친 지형은 똑같아 보일 수 있는 많은 언덕이 생기게 됩니다. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :매우 부드럽게 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :부드럽게 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :거칠게 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :매우 거칠게 +STR_CONFIG_SETTING_VARIETY :산세 험준도: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(천지창조 전용) 지도가 산지와 평지를 모두 갖도록 만들 것인 지를 결정합니다. 이 옵션은 지형을 더 평평하게 만드므로, 다른 옵션은 '산'으로 설정하시기 바랍니다. +STR_CONFIG_SETTING_RIVER_AMOUNT :강의 양: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :강을 얼마나 만들지 선택하십시오. STR_CONFIG_SETTING_TREE_PLACER :나무 배치 알고리즘: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :지도의 나무 분포 형식을 선택하십시오. '오리지널'을 선택하면 나무가 고르게 분포되고, '향상됨'을 선택하면 나무가 군락을 이루게 됩니다. STR_CONFIG_SETTING_TREE_PLACER_NONE :없음 STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :오리지널 STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :향상됨 +STR_CONFIG_SETTING_ROAD_SIDE :자동차 통행 방향: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :통행방향을 선택하세요. STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :높이맵 회전: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :반시계방향 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :시계방향 STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :평지 시나리오의 평지 높이: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :지도 가장자리의 지형 변경을 허용: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :이 옵션을 끄면, 지도의 동서남북 끝이 반드시 모두 물이어야 합니다. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}지도 북쪽 맨 가장자리에 있는 지형의 칸 한 개 이상이 비어있지 않습니다. STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}지도 맨 가장자리에 있는 칸 한 개 이상이 물이 아닙니다. @@ -1308,7 +1350,7 @@ STR_CONFIG_SETTING_LIVERIES_NONE :없음 STR_CONFIG_SETTING_LIVERIES_OWN :내 회사 STR_CONFIG_SETTING_LIVERIES_ALL :모든 회사 STR_CONFIG_SETTING_PREFER_TEAMCHAT :엔터(ENTER) 키로 같은 팀끼리 채팅: {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :이 옵션을 켜면 멀티 플레이시 같은 회사 간의 채팅을 대신 키로 할 수 있게 됩니다. +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :이 옵션을 켜면 멀티 플레이시 같은 회사 간의 채팅을 키 대신 키로 할 수 있게 됩니다. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :마우스 휠 동작: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :상하좌우로 회전 가능한 마우스 휠(2차원 마우스휠)로 지도를 스크롤할 수 있게 허용합니다. STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :화면 확대/축소 @@ -1332,18 +1374,16 @@ 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_AUTOSAVE :자동 저장: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :게임을 자동으로 저장할 간격을 선택하십시오. + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :저장 파일의 이름으로 {STRING} 날짜 형식을 사용합니다. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :게임 저장 파일 이름에 사용할 날짜 형식을 선택합니다. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :긴 (2012년 1월 1일) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :짧은 (2012.01.01) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :국제표준규격 (2012-01-01) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :기본으로 설정할 NewGRF 색상표: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :어떤 색상표를 사용할지 지정하지 않은 NewGRF에 사용할 기본 색상표를 선택합니다. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS 색상표 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows 색상표 - -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :새 게임을 시작할 때 자동으로 일시 정지: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :게임 시작 시 자동으로 일시정지: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :이 옵션을 켜면, 새로은 게임을 시작할 때 지도를 더욱 살펴볼 수 있도록 게임을 자동으로 일시정시시킵니다. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :일시 정지 상태에서 가능한 행동: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :게임이 일시 정지된 동안에 할 수 있는 행동을 선택합니다. @@ -1351,20 +1391,20 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :아무 것도 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :모든 비건설적인 행동 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :지형 편집을 제외한 모든 행동 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :모든 행동 -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :고급화된 차량 목록 사용: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :차량 목록에서 그룹 기능 사용: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :고급화된 차량 목록의 사용 여부를 설정합니다. STR_CONFIG_SETTING_LOADING_INDICATORS :적재율 표시: {STRING} -STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :적재나 하차하는 차량 위에 적재/하자 상태를 표시할지 말지를 선택합니다. +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :적재나 하차하는 차량 위에 적재/하차율을 표시할지 말지를 선택합니다. STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :열차 시간표의 1일을 74틱으로 바꿔 표시: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :열차 시간표에서 열차의 운행 시간을 '일'보다 자세한 '틱'으로 표시합니다. 1일은 74틱과 같습니다. STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :시간표에서 출발일과 도착일 표시: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :열차 시간표에서 예상 출발 & 도착 시간을 표시합니다. -STR_CONFIG_SETTING_QUICKGOTO :행선지 설정 후 계속해서 행선지 지정: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :경로 창을 열었을 때, 자동으로 '행선지' 버튼을 눌러 창을 열면 바로 행선지를 지정할 수 있도록 합니다. +STR_CONFIG_SETTING_QUICKGOTO :빠른 행선지 설정: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :경로 창을 열면 자동으로 '행선지' 버튼을 선택하여 곧바로 행선지를 지정할 수 있도록 합니다. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :철도 형식 기본값 설정 (게임 시작/불러온 후): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :게임을 새로 시작하거나 불러온 뒤에 사용할 철도의 종류를 선택합니다. '처음 사용 가능한 것'은 가장 오래된 철도 종류를 선택하고, '최신 기술의 철도'는 가장 최신에 나온 철도 종류를 선택하며 '가장 많이 사용한 것'은 플레이어가 가장 많이 사용한 철도 타입을 선택합니다. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :처음 사용 가능한 것 -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :최신 기술의 철도 +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :가장 최근에 개발된 철도 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :가장 많이 사용한 것 STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :차량의 다음 진행 경로 보여주기: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :열차가 경로기반 폐색으로 진입할 수 없는 문제를 해결하기 위해 열차가 진행할 경로를 별도의 색으로 표시합니다. @@ -1392,19 +1432,19 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :주변 풍경 STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :사용 가능한 차량이 없을 경우 해당 기반시설 비활성화: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :이 옵션을 켜면, 불필요하게 시간과 돈을 낭비하지 않도록 차량이 존재하지 않는 기반시설을 설치할 수 없게 됩니다. -STR_CONFIG_SETTING_MAX_TRAINS :최대 열차 수: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :회사당 최대 열차 수: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :한 회사가 소유할 수 있는 열차의 최대 수를 제한합니다. -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :최대 자동차 수: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :한 회사가 소유할 수 있는 자동차의 최대 수를 제한합니다. -STR_CONFIG_SETTING_MAX_AIRCRAFT :최대 항공기 수: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :회사당 최대 자동차/전차 수: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :한 회사가 소유할 수 있는 자동차/전차의 최대 수를 제한합니다. +STR_CONFIG_SETTING_MAX_AIRCRAFT :회사당 최대 항공기 수: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :한 회사가 소유할 수 있는 항공기의 최대 수를 제한합니다. -STR_CONFIG_SETTING_MAX_SHIPS :최대 선박 수: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :회사당 최대 선박 수: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :한 회사가 소유할 수 있는 선박의 최대 수를 제한합니다. STR_CONFIG_SETTING_AI_BUILDS_TRAINS :컴퓨터의 철도 사용을 허가하지 않음: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 철도를 사용할 수 없게 됩니다. -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :컴퓨터의 자동차 사용을 허가하지 않음: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 자동차를 사용할 수 없게 됩니다. +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :컴퓨터의 자동차/전차 사용을 허가하지 않음: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 자동차나 전차를 사용할 수 없게 됩니다. STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :컴퓨터의 항공기 사용을 허가하지 않음: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 항공기를 사용할 수 없게 됩니다. STR_CONFIG_SETTING_AI_BUILDS_SHIPS :컴퓨터의 선박 사용을 허가하지 않음: {STRING} @@ -1421,26 +1461,26 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :멀티 플레 STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :게임 스크립트가 중지되기 직전에 계산할 수 있는 최대 횟수: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :게임 스크립트가 한 단계에서 계산할 수 있는 최대 계산 횟수를 설정합니다. -STR_CONFIG_SETTING_SERVINT_ISPERCENT :신뢰도 기준으로 차량을 점검: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT :신뢰도에 따른 정비 설정: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :차량 점검 방식을 "마지막 점검 이후 지난 시간 (또는) 최대 신뢰도에 대한 차량 신뢰도의 일정 퍼센트 하락 여부" 중에 하나로 선택합니다. STR_CONFIG_SETTING_SERVINT_TRAINS :열차에 대한 기본 점검 기준: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :열차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} 일/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}일/% STR_CONFIG_SETTING_SERVINT_DISABLED :사용 안 함 -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :자동차에 대한 기본 점검 기준: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :자동차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :차량에 대한 기본 점검 기준: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :차량 정비 설정을 하지 않은 경우, 기본값으로 사용할 정비 주기를 설정합니다. STR_CONFIG_SETTING_SERVINT_AIRCRAFT :항공기에 대한 기본 점검 기준: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :항공기에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. STR_CONFIG_SETTING_SERVINT_SHIPS :선박에 대한 기본 점검 기준: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :선박에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. -STR_CONFIG_SETTING_NOSERVICE :고장이 나지 않도록 설정되어 있으면 점검을 비활성화: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :이 옵션을 켜면 차량이 고장이 나지 않도록 설정되어 있는 경우에는 점검을 하지 않게 됩니다. +STR_CONFIG_SETTING_NOSERVICE :차량 고장 설정이 비활성화된 경우 정비하지 않음: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :'차량고장'이 비활성화되었을 때 이 옵션을 켜면, 차량 정비 설정을 무시합니다. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :화물차 속력 제한 적용: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :이 옵션을 켜면 화물차의 속력 제한값을 적용하여 열차의 최대 속력을 감소시킵니다. STR_CONFIG_SETTING_DISABLE_ELRAILS :전기 철도를 사용하지 않음: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :이 옵션을 켜면 전기 기관차가 일반 철도에서도 달릴 수 있도록 요구사항을 제거합니다. -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :당신의 첫 차량 도착: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :내 회사의 첫 차량 도착: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :나의 새 역사에 처음으로 차량이 도착하면 메시지로 알려줍니다. STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :경쟁사의 첫 차량 도착: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :경쟁자의 새 역사에 처음으로 차량이 도착하면 메시지로 알려줍니다. @@ -1448,19 +1488,19 @@ STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :사고 / 재앙 STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :사고나 재앙이 일어났을 때 메시지로 알려줍니다. STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :회사 정보: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :새로운 회사가 열리거나, 파산 위기에 처했을 때 메시지로 알려줍니다. -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :산업시설의 건설: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :산업시설 건설: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :새로운 산업시설이 건설되면 메시지로 알려줍니다. -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :산업시설의 폐쇄: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :산업시설 폐쇄: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :산업시설이 폐쇄될 때 메시지로 알려줍니다. STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :경제 변화: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :거시적인 경제에 변화가 생기면 뉴스 메시지로 알려줍니다. -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :회사가 달성한 생산량 변동량: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :내 회사가 수송하고 있는 산업 시설의 생산량이 변하면 메시지로 알려줍니다. -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :경쟁자에 의한 산업시설의 생산 변화: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :내 회사에 의한 산업시설의 생산량 변동: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :내 회사가 수송하는 산업시설의 생산량이 변하면 소식으로 알려줍니다. +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :경쟁사에 의한 산업시설의 생산량 변동: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :경쟁사가 수송하고 있는 산업 시설의 생산량이 변하면 메시지로 알려줍니다. STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :다른 산업 생산물 변화: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :내 회사나 경쟁사가 수송하고 있지 않은 산업 시설의 생산량이 변하면 메시지로 알려줍니다. -STR_CONFIG_SETTING_NEWS_ADVICE :회사의 차량에 관한 권고/정보: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :아무도 수송하지 않는 산업시설의 생산량이 변하면 소식으로 알려줍니다. +STR_CONFIG_SETTING_NEWS_ADVICE :내 회사의 차량에 관한 권고 / 정보: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :주의를 기울여야하는 차량에 대한 메시지를 표시합니다. STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :새 차량: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :새로운 차량 종류를 사용할 수 있게 되면 메시지로 알려줍니다. @@ -1472,14 +1512,14 @@ STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :일반 정보: STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :도로 재건축 투자나 수송 독점권의 구입 등과 같은 일반적인 사건에 대한 소식을 메시지로 알려줍니다. STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :끄기 -STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :요약 -STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :전체 +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :상태 표시줄로 알림 +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :전체 메시지로 알림 STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :컬러로 된 뉴스가 시작되는 해: {STRING}년 STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :신문이 컬러로 나오게 되는 연도를 설정합니다. 이 연도 이전까지는 신문이 흑백으로 나옵니다. STR_CONFIG_SETTING_STARTING_YEAR :시작 연도: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :부드러운 경제(더욱 작은 변화) 옵션 사용: {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :이 옵션을 켜면, 산업 시설의 생산량이 적은 양으로, 자주 바뀌게 됩니다. NewGRF로 추가한 산업시설을 이용할 경우 이 옵션은 효과가 없습니다. +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :이 옵션을 활성화하면 1차 산업시설의 생산량이 좁은 폭으로 자주 변하게 됩니다. NewGRF로 추가한 산업시설에는 적용되지 않습니다. STR_CONFIG_SETTING_ALLOW_SHARES :다른 회사의 지분을 사는 것을 허용: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :이 옵션을 켜면, 회사의 지분을 거래할 수 있게 됩니다. 회사의 지분을 거래하려면 해당 회사가 어느 정도 오래되어야 합니다. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :환승시 벌어들이는 중간 수익의 비율: {STRING} @@ -1488,18 +1528,18 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :신호기를 STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :신호기를 드래그할 때, 다음 장애물(신호기, 분기점 등)을 만날 때까지 신호기가 설치될 간격을 설정합니다. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA}칸 간격으로 설치 STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :드래그할 때, 신호기 사이의 거리를 계속 고정: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :신호기를 Ctrl+드래그 하여 설치할 때의 행동을 선택합니다. 이 옵션을 끄면, 신호기가 없는 긴 폐색을 만들지 않기 위해 터널이나 다리 주변에 먼저 설치될 것입니다. 이 옵션을 켜면, 신호기는 평행한 선로에 정렬하기 쉽도록 매 n개의 칸마다 설치될 것입니다. +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :신호기를 CTRL+드래그 하여 설치할 때의 행동을 선택합니다. 이 옵션을 끄면, 신호기가 없는 긴 폐색을 만들지 않기 위해 터널이나 다리 주변에 먼저 신호기가 설치될 것입니다. 이 옵션을 켜면, 신호기는 터널/다리와 상관없이 매 n개의 칸마다 설치될 것입니다. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :전자식 신호기의 사용: {STRING}년 이후에 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :전자식 신호기를 사용할 수 있는 연도를 설정합니다. 이 이전에는 구식 신호기만 사용 가능합니다. (두 신호등은 기능적으로는 동일하고 모습만 다릅니다.) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :신호기 설치시 신호기 선택 창을 띄움: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :설치할 신호기 종류를 고를 수 있는 신호기 선택 창을 표시합니다. 이 옵션을 끄면 윈도우 없이 Ctrl+클릭 만으로 신호기의 종류를 바꿔야 합니다. +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :설치할 신호기 종류를 고를 수 있는 신호기 선택 창을 표시합니다. 이 옵션을 끄면 선택 창 없이 CTRL+클릭 만으로 신호기의 종류를 바꿔야 합니다. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :기본적으로 만들 신호기 종류: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :기본으로 설치할 신호기의 종류를 선택합니다. STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :일반 신호기 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :경로 신호기 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :단방향 경로 신호기 -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Ctrl+신호기 건설시 바뀌는 신호기 종류: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :신호기 건설에서 Ctrl+클릭할 때 바뀌는 신호기 사이클의 종류를 선택합니다. +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :신호기를 CTRL 클릭할 때 바뀌는 신호기의 종류: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :신호기 건설에서 CTRL+클릭할 때 바뀌는 신호기의 종류를 선택합니다. STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :일반 신호기만 STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :경로 신호기만 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :모두 @@ -1514,7 +1554,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :무작위 STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :도시 스스로의 도로 건설 허용: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :도시가 성장하기 위해 도로를 건설할 수 있도록 허용합니다. 도시 당국이 스스로 성장하지 못하도록 하려면 이 옵션을 끄십시오. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :도시가 회사 소유의 선로에 건널목을 만드는 것을 허용: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :도시가 회사 소유의 철로에 건널목을 건설할 수 있도록 허용합니다. +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :도시가 회사 소유의 선로에 건널목을 건설할 수 있도록 허용합니다. STR_CONFIG_SETTING_NOISE_LEVEL :도시가 공항에서 나오는 소음을 제한하도록 함: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :이 옵션을 끄면, 한 도시에는 공항을 2개까지 지을 수 있습니다. 이 옵션을 켜면, 한 도시에 지을 수 있는 공항의 수는 도시가 허용 가능한 소음 기준에 따라 달라집니다. 소음 기준은 도시 인구, 공항의 크기와 거리에 따라 다릅니다. STR_CONFIG_SETTING_TOWN_FOUNDING :게임 도중에 도시 건설: {STRING} @@ -1533,7 +1573,7 @@ STR_CONFIG_SETTING_TOOLBAR_POS :주메뉴의 STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :주 메뉴가 화면 상단의 어느 위치에 표시될지를 선택합니다. STR_CONFIG_SETTING_STATUSBAR_POS :상태 표시줄의 위치: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :상태 표시줄이 화면 하단의 어느 위치에 표시될지를 선택합니다. -STR_CONFIG_SETTING_SNAP_RADIUS :윈도우 자동 결합 거리: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS :창 자동 결합 거리: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :창을 다른 가까운 창에 일정 픽셀 이상 가까이 접근시키면 자동으로 정렬되어 붙게 됩니다. STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA}픽셀 STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :사용 안 함 @@ -1541,10 +1581,10 @@ STR_CONFIG_SETTING_SOFT_LIMIT :고정하지 STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :새로운 창을 열었을 때 공간 확보를 위해 열림 상태를 고정시키지 않은 창이 열려있을 수 있는 개수를 설정합니다. STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :제한 없음 -STR_CONFIG_SETTING_ZOOM_MIN :최대 줌 인 배율: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :게임 화면의 최대 줌 인 배율을 설정합니다. 줌 인 배율이 커질 수록 메모리가 더 필요합니다. -STR_CONFIG_SETTING_ZOOM_MAX :최대 줌 아웃 배율: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :게임 화면의 최대 줌 아웃 배율을 설정합니다. 줌 아웃 배율이 커질 수록 게임이 버벅거릴 수 있습니다. +STR_CONFIG_SETTING_ZOOM_MIN :최대 확대 수준: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :게임 화면의 최대 확대 수준을 설정합니다. 화면을 더 크게 확대할 수록 더 많은 메모리가 필요합니다. +STR_CONFIG_SETTING_ZOOM_MAX :최대 축소 수준: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :게임 화면의 최대 축소 수준을 설정합니다. 화면을 더 작게 축소할 수록 게임이 더 버벅거리게 될 수도 있습니다. STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :기본값 @@ -1564,12 +1604,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :{COMMA}개 중 STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :없음 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :초기 대도시 크기 비율: 일반 도시보다 {STRING}배 크게 시작 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :게임을 시작했을 때 일반 도시에 대한 대도시의 평균 크기를 설정합니다. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :도로 재건설 중 불필요한 도로 요소를 제거: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :도로 재건설에 투자하였을 때, 재건설 도중에 불필요한 도로를 제거합니다. STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :분배 상태를 매 {STRING}일 마다 갱신 STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :다음 연결 상태를 재계산하기까지의 시간입니다. 한 번의 재계산할 때마다 그래프의 한 요소를 위한 계획을 계산합니다. 이는 이 설정의 X값에 따라 모든 그래프가 매 X일마다 갱신되는 것이 아니라는 것을 뜻합니다. 일부 요소만 재계산된다는 뜻입니다. 값이 작으면 작을 수록 CPU가 계산해야 할 횟수가 늘어납니다. 값을 크게 설정할 수록 화물 분배 상태가 새롭게 지정되는 데 더 오랜 시간이 걸립니다. -STR_CONFIG_SETTING_LINKGRAPH_TIME :분배 상태 재계산 주기: {STRING}일 +STR_CONFIG_SETTING_LINKGRAPH_TIME :화물 분배 연결 상태를 {STRING}일마다 다시 계산 STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :각 연결 상태 요소의 재계산을 위해 필요한 시간입니다. 재계산이 시작될 때, 이 날짜만큼 작동하는 스레드가 생성됩니다. 이 값이 작으면 작을수록, 스레드가 끝나야할 때에 스레드가 끝나지 않게 됩니다. 그러면 게임이 랙에 걸려 멈추게 됩니다. 값을 크게 설정할수록 경로가 바뀔 때 분배 상태가 업데이트 되는 시간이 오래 걸리게 됩니다. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :수동 STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :불균형 @@ -1579,20 +1617,20 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"균형"은 A STR_CONFIG_SETTING_DISTRIBUTION_MAIL :우편에 대한 분배 형식: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"균형"은 A역에서 B역으로 가려는 우편물의 수가 B에서 A로 가려는 우편물의 수와 비슷하다는 뜻입니다. "불균형"은 우편물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 우편물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :장갑 화물에 대한 분배 형식: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :장갑 화물은 온대 기후의 귀금속, 아열대 기후의 다이아몬드 또는 냉대 기후의 금을 말합니다. NewGRF을 사용하면 달라질 수 있습니다. "균형"은 A역에서 B역으로 가려는 화물의 수가 B에서 A로 가려는 화물의 수와 비슷하다는 뜻입니다. "불균형"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 냉대 기후에서는 균형으로 설정하면 은행이 금광으로 금을 보내지 않으려 하기 때문에 불균형이나 수동으로 설정하는 것을 추천합니다. 온대 기후나 아열대 기후에서는 은행이 일부 적재한 귀금속을 원래 은행으로 보내려고 하기 때문에 균형을 선택해도 됩니다. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :장갑 화물은 온대 기후의 귀금속, 아열대 기후의 다이아몬드 또는 아한대 기후의 금을 말합니다. NewGRF을 사용하면 달라질 수 있습니다. "균형"은 A역에서 B역으로 가려는 화물의 수가 B에서 A로 가려는 화물의 수와 비슷하다는 뜻입니다. "불균형"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 아한대 기후에서는 균형으로 설정하면 은행이 금광으로 금을 보내지 않으려 하기 때문에 불균형이나 수동으로 설정하는 것을 추천합니다. 온대 기후나 아열대 기후에서는 은행이 일부 적재한 귀금속을 원래 은행으로 보내려고 하기 때문에 균형을 선택해도 됩니다. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :다른 화물에 대한 분배 형식: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"균형"은 A역에서 B역으로 가려는 화물의 수가 B에서 A로 가려는 화물의 수와 비슷하다는 뜻입니다. "불균형"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 특별한 이유가 없는 한, "불균형"이나 "수동"으로 설정하십시오. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"불균형"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 특별한 이유가 없는 한, "불균형"이나 "수동"으로 설정하십시오. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :분배 정확도: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :값이 높으면 높을수록 CPU가 연결 상태를 계산하는 시간이 더 오래 걸립니다. 만약 이 시간이 너무 오래 걸리면 랙 현상이 나타날 것입니다. 하지만, 낮은 값으로 설정하면 분배가 부정확하게 일어나서, 화물이 원하는 곳으로 분배되지 않을 수 있습니다. STR_CONFIG_SETTING_DEMAND_DISTANCE :거리에 따른 수요 효과: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :이 값을 0보다 크게 설정하면, 어떤 화물이 있는 A역과 목적지가 될 수 있는 역 B 사이의 거리는 A에서 B로 가는 화물의 양에 영향을 미치게 됩니다. A역에서 B역이 더 멀리 떨어질 수록 이동하는 화물의 양은 적어질 것입니다. 값이 크면 클 수록 화물은 멀리 이동하지 않고 가까운 역으로 가게 됩니다. STR_CONFIG_SETTING_DEMAND_SIZE :균형 모드에서 되돌아오는 화물의 양: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :이 값을 100%보다 작게 설정할 수록 균형 분배는 불균형 분배와 비슷해집니다. 특정 양의 화물을 역으로 보내면 그보다 더 적은 화물이 강제로 되돌아오게 됩니다. 이 값을 0%로 설정하면 균형 분배는 불균형 분배와 똑같습니다. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :다음으로 짧은 경로를 사용하기 위한 경로 포화도: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :다음으로 짧은 경로를 사용하기 위한 경로의 포화도: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :종종 두 역 사이에는 여러 가지 경로가 존재할 수 있습니다. 이 경우, 화물 분배 기능은 먼저 가장 짧은 경로로 화물을 보내고, 그 경로가 포화 상태에 이르면 그 다음으로 짧은 경로를 사용하는 식으로 화물을 분배합니다. 포화도는 경로의 수송 능력과 예정 사용량을 추정하여 계산됩니다. 일단 모든 경로가 포화 상태가 되었는데 아직 수요가 남아있다면, 수송 능력이 높은 경로를 사용하면서 모든 경로를 과부하 상태로 만들게 됩니다. 하지만, 이 알고리즘은 수송량을 대부분 정확히 추정하지는 않습니다. 이 설정을 이용해서, 화물 분배 기능이 짧은 경로의 포화 상태가 몇 퍼센트가 되어야 다음으로 짧은 경로에 화물을 분배할 것인지를 지정할 수 있습니다. 과대평가된 수송량의 경우 너무 붐비는 역이 생기지 않도록 하기 위해서는 이 값을 100%보다 작게 설정하십시오. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :속력 단위: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :출력할 속력 단위를 선택합니다. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :속력를 표시할 때 선택한 단위를 사용하여 나타냅니다. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :임페리얼법 (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :미터법 (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :국제표준규격 (m/s) @@ -1604,59 +1642,61 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :미터법 (마 STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :국제표준규격 (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :무게 단위: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :출력할 무게 단위를 선택합니다. +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :무게를 표시할 때 선택한 단위를 사용하여 나타냅니다. STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :임페리얼법 (미국 톤) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :미터법 (톤) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :국제표준규격 (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :부피 단위: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :출력할 부피 단위를 선택합니다. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :부피를 표시할 때 선택한 단위를 사용하여 나타냅니다. STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :임페리얼법 (갤런) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :미터법 (리터) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :국제표준규격 (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :견인 효과 단위: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :출력할 견인 효과(견인력) 단위를 선택합니다. +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :견인 효과(견인력)를 표시할 때 선택한 단위를 사용하여 나타냅니다. STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :임페리얼법 (파운드중) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :미터법 (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :국제표준규격 (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :높이 단위: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :출력할 높이 단위를 선택합니다. +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :높이를 표시할 때 선택한 단위를 사용하여 나타냅니다. STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :임페리얼법 (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :미터법 (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :국제표준규격 (m) -STR_CONFIG_SETTING_GUI :{ORANGE}인터페이스 STR_CONFIG_SETTING_LOCALISATION :{ORANGE}단위 설정 -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}건설 +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}그래픽 +STR_CONFIG_SETTING_SOUND :{ORANGE}효과음 +STR_CONFIG_SETTING_INTERFACE :{ORANGE}인터페이스 +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}일반 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}게임 화면 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}건설 +STR_CONFIG_SETTING_ADVISORS :{ORANGE}뉴스 / 정보 +STR_CONFIG_SETTING_COMPANY :{ORANGE}회사 +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}회계 STR_CONFIG_SETTING_VEHICLES :{ORANGE}차량 -STR_CONFIG_SETTING_STATIONS :{ORANGE}역 -STR_CONFIG_SETTING_ECONOMY :{ORANGE}경제 -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}화물 분배 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}물리 +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}경로 +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}제한 +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}재앙 / 사고 +STR_CONFIG_SETTING_GENWORLD :{ORANGE}세계 제작 +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}환경 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}지역 당국 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}도시 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}산업시설 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}화물 분배 STR_CONFIG_SETTING_AI :{ORANGE}경쟁자 -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}디스플레이 옵션 -STR_CONFIG_SETTING_INTERACTION :{ORANGE}조작 옵션 -STR_CONFIG_SETTING_SOUND :{ORANGE}효과음 -STR_CONFIG_SETTING_NEWS :{ORANGE}뉴스와 메시지 -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}신호기 -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}화물 STR_CONFIG_SETTING_AI_NPC :{ORANGE}컴퓨터 플레이어 -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}자동 교체 -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}점검 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}경로 -STR_CONFIG_SETTING_VEHICLES_TRAINS :{G=f}{ORANGE}열차 -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}도시 -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}산업시설 STR_CONFIG_SETTING_PATHFINDER_OPF :오리지널 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(추천) +STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(권장) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :열차에 사용할 경로 탐색법: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :열차에 사용할 경로 탐색 방법을 선택합니다. -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :자동차에 사용할 경로 탐색법: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :자동차에 사용할 경로 탐색 방법을 선택합니다. +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :자동차/전차에 사용할 경로 탐색법: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :자동차/전차에 사용할 경로 탐색 방법을 선택합니다. STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :선박에 사용할 경로 탐색법: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :선박에 사용할 경로 탐색 방법을 선택합니다. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :신호기 앞에서 회차: {STRING} @@ -1667,7 +1707,7 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}설정 # Config errors STR_CONFIG_ERROR :{WHITE}설정 파일에서 오류 발생 STR_CONFIG_ERROR_ARRAY :{WHITE}... 배열 '{STRING}'에서 오류 발생 -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... '{1:STRING}'{G 0 "은" "는"} '{0:STRING}'에 사용할 수 없습니다 +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... '{1:STRING}'에 잘못된 값('{0:STRING}')이 지정되었습니다. STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 설정 '{STRING}' 끝에 후행문자(??) STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... NewGRF '{STRING}' 무시중: '{STRING}'{G 1 "과" "와"} GRF ID가 겹침 STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 유효하지 않은 NewGRF '{STRING}' 무시중: {STRING} @@ -1696,13 +1736,13 @@ STR_INTRO_MULTIPLAYER :{BLACK}멀티 STR_INTRO_GAME_OPTIONS :{BLACK}게임 설정 STR_INTRO_HIGHSCORE :{BLACK}고득점 순위표 -STR_INTRO_ADVANCED_SETTINGS :{BLACK}고급 설정 +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}설정 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 설정 STR_INTRO_ONLINE_CONTENT :{BLACK}온라인 콘텐츠 다운로드 STR_INTRO_SCRIPT_SETTINGS :{BLACK}인공지능/게임 스크립트 설정 STR_INTRO_QUIT :{BLACK}종료 -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}새 게임을 시작합니다.{}Ctrl+클릭하시면 지도 설정을 건너뛰고 바로 시작합니다. +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}새 게임을 시작합니다.{}CTRL+클릭하시면 지도 설정을 건너뛰고 바로 시작합니다. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}저장한 게임을 불러옵니다. STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}높이맵을 지형으로 사용하여, 새로운 게임을 시작합니다. STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}사용자 시나리오로 새 게임을 시작합니다 @@ -1710,13 +1750,13 @@ STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}사용 STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}멀티 플레이 게임을 시작합니다 STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}온대 기후 선택 -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}냉대 기후 선택 +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}아한대 기후 선택 STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}아열대 기후 선택 STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}장난감나라 선택 -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}게임 설정 창을 보여줍니다. +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}게임 기본 설정 창을 보여줍니다. STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}고득점 순위표를 보여줍니다. -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}고급 설정 창을 엽니다. +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}설정 창을 엽니다. STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF 설정 창을 엽니다. STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}새로 나왔거나 업데이트된 콘텐츠를 체크하여 다운로드합니다. STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}인공지능/게임 스크립트 설정창을 엽니다. @@ -1731,7 +1771,7 @@ STR_QUIT_YES :{BLACK}예 STR_QUIT_NO :{BLACK}아니요 # Supported OSes -STR_OSNAME_WINDOWS :{G=f}윈도우 +STR_OSNAME_WINDOWS :{G=f}Windows STR_OSNAME_DOS :{G=f}DOS STR_OSNAME_UNIX :{G=f}Unix STR_OSNAME_OSX :{G=f}OS{NBSP}X @@ -1753,28 +1793,30 @@ STR_CHEATS_TOOLTIP :{BLACK}체크 STR_CHEATS_WARNING :{BLACK}경고! 치트는 경쟁자를 속이는 행위입니다. 치트를 사용한 기록은 절대 지워지지 않음을 명심하십시오. STR_CHEAT_MONEY :{LTBLUE}재정을 {CURRENCY_LONG} 만큼 증가 STR_CHEAT_CHANGE_COMPANY :{LTBLUE}다음 회사로 플레이: {ORANGE}{COMMA} -STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}마법 불도저 (산업시설, 움직이지 못하는 건물 제거): {ORANGE}{STRING} +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}마법 불도저 (산업시설이나 옮길 수 없는 건물 제거): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}터널 교차 허용: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}대형 항공기가 소형 공항에서 (자주) 충돌하지 않게 함: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}최대 지형 고도값 수정: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}최대 지형 높이값을 수정합니다. STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :온대 기후 -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :냉대 기후 +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :아한대 기후 STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :아열대 기후 -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난감 나라 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난감나라 STR_CHEAT_CHANGE_DATE :{LTBLUE}날짜 변경: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}현재의 연도를 변경 -STR_CHEAT_SETUP_PROD :{LTBLUE}산업시설의 생산량 조절 허가: {ORANGE}{STRING} +STR_CHEAT_SETUP_PROD :{LTBLUE}1차 산업시설 생산량 조절 허용: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}새 색상 -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}일반 색상 선택 +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}기본 색상 선택 STR_LIVERY_TRAIN_TOOLTIP :{BLACK}열차 색상 선택 -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차 색상 선택 +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차/전차 색상 선택 STR_LIVERY_SHIP_TOOLTIP :{BLACK}선박 색상 선택 STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}항공기 색상 선택 -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}선택한 색상을 1차 색상으로 선택합니다. Ctrl+클릭하면 모든 항목에 적용됩니다. -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}선택한 색상을 2차 색상으로 선택합니다. Ctrl+클릭하면 모든 항목에 적용됩니다. -STR_LIVERY_PANEL_TOOLTIP :{BLACK}색상 스키마 변경을 원하시면 선택하세요. (2개 이상 선택시 CTRL+클릭). 박스를 클릭하여 스키마를 전환합니다. +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}선택한 색상을 1차 색상으로 선택합니다. CTRL+클릭하면 모든 항목에 적용됩니다. +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}선택한 색상을 2차 색상으로 선택합니다. CTRL+클릭하면 모든 항목에 적용됩니다. +STR_LIVERY_PANEL_TOOLTIP :{BLACK}색상 조합을 바꾸려면 선택하세요. 2개 이상 선택하려면 CTRL+클릭하세요. 네모를 클릭하여 체크하면 해당 색상 조합을 사용하게 됩니다. STR_LIVERY_DEFAULT :기본 색상 STR_LIVERY_STEAM :{G=f}증기 기관차 @@ -1804,17 +1846,18 @@ STR_LIVERY_FREIGHT_TRAM :화물 전차 STR_FACE_CAPTION :{WHITE}얼굴 선택 STR_FACE_CANCEL_TOOLTIP :{BLACK}새 얼굴 선택을 취소합니다. STR_FACE_OK_TOOLTIP :{BLACK}이 얼굴을 선택합니다. +STR_FACE_RANDOM :{BLACK}무작위화 STR_FACE_MALE_BUTTON :{BLACK}남성 -STR_FACE_MALE_TOOLTIP :{BLACK}남성의 얼굴을 선택합니다. +STR_FACE_MALE_TOOLTIP :{BLACK}남성 얼굴 선택 STR_FACE_FEMALE_BUTTON :{BLACK}여성 -STR_FACE_FEMALE_TOOLTIP :{BLACK}여성의 얼굴을 선택합니다. +STR_FACE_FEMALE_TOOLTIP :{BLACK}여성 얼굴 선택 STR_FACE_NEW_FACE_BUTTON :{BLACK}새 얼굴 STR_FACE_NEW_FACE_TOOLTIP :{BLACK}얼굴을 만듭니다. STR_FACE_ADVANCED :{BLACK}고급 -STR_FACE_ADVANCED_TOOLTIP :{BLACK}고급 얼굴 선택 +STR_FACE_ADVANCED_TOOLTIP :{BLACK}고급 얼굴 선택 모드로 전환 STR_FACE_SIMPLE :{BLACK}간단 -STR_FACE_SIMPLE_TOOLTIP :{BLACK}간단한 얼굴 선택 +STR_FACE_SIMPLE_TOOLTIP :{BLACK}간편 얼굴 선택 모드로 전환 STR_FACE_LOAD :{BLACK}불러오기 STR_FACE_LOAD_TOOLTIP :{BLACK}즐겨찾는 얼굴 불러오기 STR_FACE_LOAD_DONE :{WHITE}당신이 즐겨찾는 얼굴을 OpenTTD 설정 파일로부터 불러왔습니다. @@ -1914,7 +1957,7 @@ STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}이름 STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}호스트(IP) 주소 입력 # Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}새로운 멀티플레이 게임을 시작 +STR_NETWORK_START_SERVER_CAPTION :{WHITE}새 멀티플레이 게임 시작하기 STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}게임 이름: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}멀티플레이 게임 선택 메뉴에서 보여질 게임 제목입니다. @@ -1970,15 +2013,15 @@ STR_NETWORK_LANG_TURKISH :터키어 STR_NETWORK_LANG_UKRAINIAN :우크라이나어 STR_NETWORK_LANG_AFRIKAANS :아프리카어 STR_NETWORK_LANG_CROATIAN :크로아티아어 -STR_NETWORK_LANG_CATALAN :카탈로니아 -STR_NETWORK_LANG_ESTONIAN :에스토니아 -STR_NETWORK_LANG_GALICIAN :갈리시아 -STR_NETWORK_LANG_GREEK :그리스 -STR_NETWORK_LANG_LATVIAN :라트비아 +STR_NETWORK_LANG_CATALAN :카탈로니아어 +STR_NETWORK_LANG_ESTONIAN :에스토니아어 +STR_NETWORK_LANG_GALICIAN :갈리시아어 +STR_NETWORK_LANG_GREEK :그리스어 +STR_NETWORK_LANG_LATVIAN :라트비아어 ############ End of leave-in-this-order # Network game lobby -STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}멀티플레이 준비 +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}멀티플레이 게임 대기실 STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}참가 준비중: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}이 게임에 있는 회사의 목록입니다. 다른 회사에 같이 참가하거나 (빈 슬롯이 있을 경우) 새로운 회사로 시작할 수 있습니다. @@ -2018,7 +2061,7 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}회사 ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM}명의 접속자가 먼저 기다리고 있습니다 STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}지금까지 {BYTES}를 다운로드하였습니다 -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} 다운로드 +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} 다운로드 완료 STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}접속 끊기 @@ -2035,7 +2078,7 @@ STR_NETWORK_CLIENTLIST_KICK :추방 STR_NETWORK_CLIENTLIST_BAN :차단 STR_NETWORK_CLIENTLIST_GIVE_MONEY :돈 보내기 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :모두에게 말하기 -STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :우리 회사에게 말하기 +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :이 회사에게 말하기 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :귓속말하기 STR_NETWORK_SERVER :서버 @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :접속자 STR_NETWORK_SPECTATORS :관전자 STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}송금하고 싶은 양을 입력하세요. +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}관전자 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}입력한 비밀번호는 저장하지 않기 @@ -2113,7 +2157,7 @@ STR_NETWORK_ERROR_CLIENT_CHEATER :치트 사용 STR_NETWORK_ERROR_CLIENT_SERVER_FULL :서버 꽉참 STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :너무 많은 명령 전송 STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :제 시간에 비밀번호를 입력하십시오 -STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :일반적인 시간 초과 +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :반응 시간 초과 STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :지도 다운로드 시간 초과 STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :지도 생성 / 입장 시간 초과 ############ End of leave-in-this-order @@ -2140,9 +2184,9 @@ STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} 님이 입장하셨습니다. ({2:NUM}번 접속자) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} 님이 {2:NUM}번 회사에 참여하셨습니다. STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} 님이 관전을 시작하셨습니다. -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 님이 새로운 회사(({2:NUM}번)를 창설하셨습니다. +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 님이 새로운 회사({2:NUM}번)를 창설하셨습니다. STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 님이 퇴장하셨습니다. (사유: {2:STRING}) -STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 님이 이름을 {STRING}(으)로 바꿨습니다 +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 님의 이름이 {STRING}(으)로 바뀌었습니다. STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} 님이 당신에게 {2:CURRENCY_LONG}만큼의 돈을 보내셨습니다. STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} 님에게 {2:CURRENCY_LONG}만큼의 돈을 보냈습니다. STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}서버가 게임을 종료하였습니다. @@ -2172,9 +2216,9 @@ STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}다운 STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}선택한 콘텐츠의 다운로드를 시작합니다. STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}다운로드 할 파일의 총 용량: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}콘텐츠 정보 -STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}이 콘텐츠를 선택하지 않았습니다. (다운로드 안 함) -STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}이 콘텐츠를 선택하였습니다. (다운로드함) -STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}이것은 다른 콘텐츠에 종속되어 자동선택되었습니다 +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}이 콘텐츠를 선택하지 않았습니다. +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}이 콘텐츠를 다운로드하기 위해 선택하였습니다. +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}이 콘텐츠는 다른 콘텐츠에서 필요하므로 자동 선택되었습니다. STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}이미 가지고 있는 콘텐츠입니다. STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}이 콘텐츠는 알려지지 않은 콘텐츠이고 OpenTTD 게임 상에서 받을 수 없는 것입니다 STR_CONTENT_DETAIL_UPDATE :{SILVER}이 콘텐츠는 기존에 존재하던 {STRING}{G 0 "을" "를"} 업데이트합니다. @@ -2184,11 +2228,11 @@ STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}설명: STR_CONTENT_DETAIL_URL :{SILVER}주소: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}종류: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}파일 크기: {WHITE}{BYTES} -STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}다음에 종속됨: {WHITE}{STRING} -STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}종속: {WHITE}{STRING} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{WHITE}{STRING}{SILVER} 때문에 선택됨 +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}필요한 요소: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}태그: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD가 "zlib" 지원 기능을 포함하지 않고 만들어졌습니다... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 콘텐츠 다운로드가 불가능합니다! +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 콘텐츠를 다운로드 할 수 없습니다! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :{G=m}기본 그래픽 @@ -2212,8 +2256,8 @@ STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}콘텐츠 서버에 접속할 수 없습니다... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}다운로드 실패... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... 접속 손실 -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 파일 쓰기 실패 +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... 접속이 끊겼습니다. +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 파일 쓰기가 불가능합니다. STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}다운로드한 파일의 압축을 풀 수 없습니다 STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}그래픽 없음 @@ -2262,21 +2306,21 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}연결 STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}분리된 경유지를 새로 만들기 # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :철로 건설 -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :전기철로 건설 +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :선로 건설 +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :전기선로 건설 STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :모노레일 건설 STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :자기부상열차 건설 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}철로를 건설합니다. Ctrl키는 철로의 건설/제거를 전환합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}철로 자동건설 모드로 철로를 만듭니다. Ctrl키는 철로의 건설/제거를 전환합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}(열차 구매와 점검을 위한) 차량기지를 건설합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}철로를 경유지로 바꿉니다. Ctrl을 눌러 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}철도역을 짓습니다. CTRL 키를 사용하면 역간 결합을 사용할 수 있습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}철도 신호기를 짓습니다. Ctrl을 누르면 구식/전등 신호기 사이를 전환합니다.{}곧게 뻗은 철로 위에 마우스를 드래그하십시오. CTRL을 사용하면 다음 분기점까지 신호기를 건설합니다.{}CTRL+클릭을 사용하면 신호기 선택 창을 전환합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}철교를 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}터널을 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}철로, 신호기, 경유지, 역 건설/제거툴 켜기/끄기. Ctrl을 누르면 경유지와 역에서 철로를 제거합니다. -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}철도의 타입을 변경/업그레이드 합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}선로를 건설합니다. CTRL 키를 누르면 건설모드/철거모드로 전환합니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}자동건설 모드로 선로를 건설합니다. CTRL 키를 누르면 건설/철거모드를 바꿀 수 있습니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}차량기지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}선로에 경유지를 설치합니다. CTRL 키를 사용하면 같은 이름의 경유지를 서로 떨어진 곳에 지을 수 있습니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}철도역을 짓습니다. CTRL 키를 사용하면 같은 이름의 역을 서로 떨어진 곳에 지을 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}신호기를 설치합니다. CTRL 키를 누르면 구식/전자식으로 전환합니다.{}선로를 따라 드래그해서 설치할 수 있습니다. CTRL을 누른채 드래그하면 다음 분기점이나 다음 신호기까지 신호기를 설치합니다.{}CTRL 키를 누른 채 클릭하면 신호기 선택 창을 전환합니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}철교를 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}터널을 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}선로, 신호기, 경유지, 역 등의 철도 시설 건설/철거 모드를 켜거나 끌 수 있습니다. CTRL 키를 누르고 있어도 선로에서 경유지와 역을 제거할 수 있습니다. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}철도의 타입을 변경/업그레이드 합니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. STR_RAIL_NAME_RAILROAD :철도 STR_RAIL_NAME_ELRAIL :전기철도 @@ -2294,11 +2338,11 @@ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}경유 # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}철도 역사 선택 STR_STATION_BUILD_ORIENTATION :{BLACK}방향 선택 -STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}철도역의 방향을 선택합니다. +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}철도역 방향을 설정합니다. STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}선로 수 -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}철도역의 플랫폼 개수를 선택합니다. +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}철도역 플랫폼 개수를 설정합니다. STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}플랫폼 길이 -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}철도역의 길이를 선택합니다. +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}철도역 길이를 설정합니다. STR_STATION_BUILD_DRAG_DROP :{BLACK}드래그 & 드롭 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}드래그 & 드롭으로 역 건설 @@ -2312,17 +2356,17 @@ STR_STATION_CLASS_WAYP :{G=f}경유지 STR_BUILD_SIGNAL_CAPTION :{WHITE}신호기 선택 STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}폐색 신호기 (구식){}가장 기본적인 신호기 형식입니다. 단 한 대의 열차만이 이 폐색 구간을 통과할 수 있습니다. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}입구 신호기 (구식){}다음 폐색 구간에 있는 출구 신호기가 하나라도 파란불이면 파란불이 되며, 그렇지 않은 경우에는 빨간불이 됩니다. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}출구 신호기 (구식){}일반 신호기와 기능이 똑같지만, 입구 & 콤보 신호기와 올바르게 연계되어야 합니다. -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}콤보 신호기 (구식){}콤보 신호기는 입구 신호기와 출구 신호기의 역할을 동시에 합니다. 이 신호기는 사전 신호기의 거대한 "나뭇가지 구조"를 건설할 수 있도록 도와줍니다. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}출구 신호기 (구식){}일반 신호기와 기능이 똑같지만, 입구 & 복합 신호기와 올바르게 연계되어야 합니다. +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}복합 신호기 (구식){}복합 신호기는 입구 신호기와 출구 신호기의 역할을 동시에 합니다. 이 신호기는 사전 신호기의 거대한 "나뭇가지 구조"를 건설할 수 있도록 도와줍니다. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}경로 신호기 (구식){}경로 신호기는 경로가 겹치지 않는 경우에 한 대 이상의 열차가 한 폐색 구간에 동시에 들어갈 수 있게 해줍니다. 경로 신호기는 반대편에서 통과가 가능합니다. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}단방향 경로 신호기 (구식){}경로 신호기는 경로가 겹치지 않는 경우에 한 대 이상의 열차가 한 폐색 구간에 동시에 들어갈 수 있게 해줍니다. 단방향 경로 신호기는 반대편에서 통과가 불가능합니다. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}폐색 신호기 (전자식){}가장 기본적인 신호기 형식입니다. 단 한 대의 열차만이 이 폐색 구간을 통과할 수 있습니다. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}입구 신호기 (전자식){}다음 폐색 구간에 있는 출구 신호기가 하나라도 파란불이면 파란불이 되며, 그렇지 않은 경우에는 빨간불이 됩니다. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}출구 신호기 (전자식){}일반 신호기와 기능이 똑같지만, 입구 & 콤보 신호기와 올바르게 연계되어야 합니다. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}콤보 신호기 (전자식){}콤보 신호기는 입구 신호기와 출구 신호기의 역할을 동시에 합니다. 이 신호기는 사전 신호기의 거대한 "나뭇가지식 구조"를 건설할 수 있도록 도와줍니다. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}출구 신호기 (전자식){}일반 신호기와 기능이 똑같지만, 입구 & 복합 신호기와 올바르게 연계되어야 합니다. +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}복합 신호기 (전자식){}복합 신호기는 입구 신호기와 출구 신호기의 역할을 동시에 합니다. 이 신호기는 사전 신호기의 거대한 "나뭇가지식 구조"를 건설할 수 있도록 도와줍니다. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}경로 신호기 (전자식){}경로 신호기는 경로가 겹치지 않는 경우에 한 대 이상의 열차가 한 폐색 구간에 동시에 들어갈 수 있게 해줍니다. 경로 신호기는 반대편에서 통과가 가능합니다. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}단방향 경로 신호기 (전자식){}경로 신호기는 경로가 겹치지 않는 경우에 한 대 이상의 열차가 한 폐색 구간에 동시에 들어갈 수 있게 해줍니다. 단방향 경로 신호기는 반대편에서 통과가 불가능합니다. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}신호기 변환{}이 버튼을 선택한 뒤 이미 설치된 신호기를 클릭하면, 신호기의 종류(일반/입구/출구/콤보/경로)와 형식(구식↔전자식)을 변경하고, CTRL+클릭하면 신호기의 형식을 변경합니다. SHIFT+클릭을 사용하면 예상 가격을 볼 수 있습니다. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}신호기 변환{}이 버튼을 선택한 뒤 이미 설치된 신호기를 클릭하면, 신호기의 종류(일반/입구/출구/복합/경로)와 형식(구식↔전자식)을 변경하고, CTRL+클릭하면 신호기의 형식을 변경합니다. SHIFT+클릭을 사용하면 예상 가격을 볼 수 있습니다. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}드래그시 신호기 간격 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}드래그시 신호기 간격 감소 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}드래그시 신호기 증가 @@ -2346,21 +2390,21 @@ STR_BRIDGE_TUBULAR_SILICON :실리콘 원 # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}도로 건설 STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}전찻길 건설 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}도로를 짓습니다. Ctrl을 사용하여 건설/제거를 전환하십시오. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}전차 선로를 짓습니다. Ctrl을 사용하여 건설/제거를 전환하십시오. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}자동건설 모드로 도로를 짓습니다. Ctrl을 사용하여 건설/제거를 전환하십시오. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}자동건설 모드로 전차 선로를 짓습니다. Ctrl을 사용하여 건설/제거를 전환하십시오. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}차고지(차량 구입 및 점검용)를 짓습니다. Shift를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}차량 구입과 점검을 위한 차량기지를 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}버스 정류장을 짓습니다. Ctrl을 누르면 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}여객 전차역을 짓습니다. Ctrl을 누르면 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}트럭 적하장을 짓습니다. Ctrl을 누르면 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}화물 전차역을 짓습니다. Ctrl을 누르면 역간 결합을 사용합니다. Shift를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}도로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}전차 선로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}자동건설 모드로 도로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}자동건설 모드로 전차 선로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}차고지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}전차 차고지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}버스 정류장을 짓습니다. CTRL 키를 사용하면 근처 정류장과 연결할 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}여객 전차역을 짓습니다. CTRL 키를 사용하면 근처 역과 연결할 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}트럭 적하장을 짓습니다. CTRL 키를 사용하면 근처 적하장과 연결할 수 있습니다. SHIFT 키를 누르면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}화물 전차역을 짓습니다. CTRL 키를 사용하면 근처 역과 연결할 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}일방통행 도로 건설 모드를 켜거나 끕니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}다리를 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}전차교를 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}터널을 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}전차 터널을 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}다리를 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}전차교를 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}터널을 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}전차 터널을 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}도로 제거툴 켜기/끄기 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}전찻길 건설/제거 툴 켜기/끄기 @@ -2372,7 +2416,7 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}차량 # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}버스 정류장 방향 선택 -STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}버스 정류장의 방향을 선택합니다. +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}버스 정류장 방향을 선택합니다. STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}트럭 적하장 방향 선택 STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}트럭 적하장의 방향을 선택합니다. STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}여객 전차역 방향 선택 @@ -2383,13 +2427,13 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}화물 # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}수로 건설 STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}항만 -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}운하를 만듭니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}갑문을 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}선박 구입과 점검을 위한 정박소를 만듭니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}항구 건설. Ctrl을 누르면 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}경유지로 사용할 부표를 설치합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}수도교를 짓습니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}벽으로 물을 막고 있는 운하를 만듭니다.{}가장 낮은 곳에서 CTRL을 누르면 (벽 없이) 물을 생성하여 주변을 물로 채웁니다. +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}운하를 만듭니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}갑문을 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}선박 구입과 점검을 위한 정박소를 만듭니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}항구 건설. CTRL 키를 사용하면 근처 역과 연결할 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}경유지로 사용할 부표를 설치합니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}수도교를 짓습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}벽으로 물을 막고 있는 운하를 만듭니다.{}해수면 높이에서 CTRL 키를 누른 채로 사용하면 벽 없이 물을 만들어 바다나 호수를 만들 수 있습니다. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}강을 만듭니다. # Ship depot construction window @@ -2401,7 +2445,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}항구 # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}공항 -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}공항 건설. Ctrl을 누르면 역간 결합을 사용합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}공항 건설. CTRL 키를 사용하면 같은 이름의 역을 서로 떨어진 곳에 지을 수 있습니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}공항 선택 @@ -2413,7 +2457,7 @@ STR_AIRPORT_SMALL :소형 공항 STR_AIRPORT_CITY :도시 공항 STR_AIRPORT_METRO :대도시 공항 STR_AIRPORT_INTERNATIONAL :국제 공항 -STR_AIRPORT_COMMUTER :국내 공항 +STR_AIRPORT_COMMUTER :통근용 공항 STR_AIRPORT_INTERCONTINENTAL :대륙간 공항 STR_AIRPORT_HELIPORT :헬리콥터 탑승장 STR_AIRPORT_HELIDEPOT :헬리콥터 격납고 @@ -2428,10 +2472,10 @@ STR_STATION_BUILD_NOISE :{BLACK}발생 # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}지형 편집 -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}땅의 모퉁이를 낮춥니다. -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}땅의 모퉁이를 높입니다. -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}땅을 평평하게 고릅니다. -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}나중에 그 땅을 사용하기 위해 소유권을 구입합니다. SHIFT를 사용하면 예상 가격을 볼 수 있습니다. +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}땅의 모퉁이를 낮춥니다. 드래그하면 시작점의 땅을 낮추고 선택한 영역의 도착점까지 지형을 적절히 맞춥니다. CTRL 키를 누르면 대각선 방향의 영역을 선택할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 가격을 볼 수 있습니다. +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}땅의 모퉁이를 높입니다. 드래그하면 시작점의 땅을 높이고 선택한 영역의 도착점까지 지형을 적절히 맞춥니다. CTRL 키를 누르면 대각선 방향의 영역을 선택할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 가격을 볼 수 있습니다. +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}처음 선택한 모퉁이의 고도에 맞추어 땅을 평평하게 고릅니다. CTRL 키를 누르면 대각선 방향의 영역을 선택할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 가격을 볼 수 있습니다. +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}나중에 그 땅을 사용하기 위해 소유권을 구입합니다. SHIFT 키를 사용하면 예상 가격을 볼 수 있습니다. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}오브젝트 선택 @@ -2447,14 +2491,14 @@ STR_OBJECT_CLASS_TRNS :송신기 STR_PLANT_TREE_CAPTION :{WHITE}나무 STR_PLANT_TREE_TOOLTIP :{BLACK}심고싶은 나무의 종류를 선택합니다. 이미 나무가 심어져있는 경우에는 선택한 나무의 크기를 키웁니다. STR_TREES_RANDOM_TYPE :{BLACK}여러 종류의 나무 같이 심기 -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}여러 종류의 나무를 심습니다. SHIFT를 누르고 나무를 심으면 예상 가격을 볼 수 있습니다. +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}여러 종류의 나무를 심습니다. SHIFT 키를 누르고 나무를 심으면 예상 가격을 볼 수 있습니다. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}무작위로 나무 심기 STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}전 지역에 걸쳐 무작위로 나무를 심습니다. # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}지형 만들기 STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}암석 지역을 위치시킵니다. -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}사막 지역을 지정합니다.{}CTRL키를 누른채로 지우세요 +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}사막 지역을 지정합니다.{}CTRL 키를 누르고 있으면 제거할 수 있습니다. STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}지형 편집툴의 크기를 키움 STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}지형 편집툴의 크기를 줄임 STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}무작위로 지형 만들기 @@ -2515,8 +2559,8 @@ STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}소비 STR_INDUSTRY_CARGOES_HOUSES :{WHITE}도시 가구 STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}이 산업시설의 공급자와 고객을 보려면 클릭하세요. STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}이 화물의 공급자와 고객을 보려면 클릭하세요. -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}산업망 표시 -STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}이 산업시설에서 생산되고 소비되는 화물을 보여줍니다. +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}산업시설 연계도 보기 +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}이 산업시설에서 생산/소비하는 화물을 보여줍니다. STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}지도에 표시 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}위 산업망에 표시된 산업을 소형지도에서 볼 수 있게 합니다. STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}화물 선택 @@ -2533,7 +2577,7 @@ STR_LAND_AREA_INFORMATION_OWNER_N_A :없음 STR_LAND_AREA_INFORMATION_OWNER :{BLACK}소유주: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}도로 소유주: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}전찻길 소유주: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}철로 소유주: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}철도 소유주: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}지역 당국: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :없음 STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}좌표: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) @@ -2547,6 +2591,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}받을 수 있는 화물: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}선로의 제한 속력: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}도로 속도 제한: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :암석 @@ -2561,23 +2606,23 @@ STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :일반 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :입구 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :출구 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :콤보 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :복합 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :단방향 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :일반 신호기와 입구 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :일반 신호기와 출구 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :일반 신호기와 콤보 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :일반 신호기와 복합 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :일반 신호기와 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :일반 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :입구 신호기와 출구 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :입구 신호기와 콤보 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :입구 신호기와 복합 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :입구 신호기와 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :입구 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :출구 신호기와 콤보 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :출구 신호기와 복합 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :출구 신호기와 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :출구 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :콤보 신호기와 경로 신호기가 설치된 {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :콤보 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :복합 신호기와 경로 신호기가 설치된 {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :복합 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :경로 신호기와 단방향 경로 신호기가 설치된 {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} 차량기지 @@ -2643,7 +2688,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-2013 OpenTTD 개발팀 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD 개발팀 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장 @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}저장 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}선택한 이름으로 현재 게임을 저장합니다 STR_SAVELOAD_LOAD_BUTTON :{BLACK}불러오기 STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}선택한 게임을 불러옵니다. +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}선택한 높이맵을 불러옵니다. STR_SAVELOAD_DETAIL_CAPTION :{BLACK}게임 상세 정보 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}사용 가능한 정보 없음. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2670,20 +2716,19 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_OSKTITLE :{BLACK}게임을 저장할 파일명을 입력하세요 # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}세계 창조 +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}세계 제작 STR_MAPGEN_MAPSIZE :{BLACK}지도 크기: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}지도의 크기를 칸 수 기준으로 선택하십시오. 사용 가능한 지도의 칸 수는 선택한 값보다 조금 적습니다. STR_MAPGEN_BY :{BLACK}x STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}도시의 수: STR_MAPGEN_DATE :{BLACK}날짜: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}산업시설 수: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}만년설 고도: -STR_MAPGEN_SNOW_LINE_UP :{BLACK}만년설 높이를 1칸 높입니다 -STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}만년설 높이를 1칸 낮춥니다 -STR_MAPGEN_RANDOM_SEED :{BLACK}무작위수치: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}무작위수치를 입력하세요 -STR_MAPGEN_RANDOM :{BLACK}무작위화 -STR_MAPGEN_RANDOM_HELP :{BLACK}지형 만들기를 위한 무작위수치 변경 +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}최대 지형 높이: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}최대 지형 높이를 1칸 높입니다. +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}최대 지형 높이를 1칸 낮춥니다. +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}설선 고도: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}설선 고도를 1칸 높입니다 +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}설선 고도를 1칸 낮춥니다 STR_MAPGEN_LAND_GENERATOR :{BLACK}지형 만들기: STR_MAPGEN_TREE_PLACER :{BLACK}나무 알고리즘: STR_MAPGEN_TERRAIN_TYPE :{BLACK}지형 종류: @@ -2710,8 +2755,8 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}높이 STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}크기: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}임의 설정값 입력 -STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}만년설의 높이를 변경 +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}최대 지형 고도값 변경 +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}설선 고도를 변경 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}시작 연도를 변경합니다. # SE Map generation @@ -2728,7 +2773,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}평지 # Map generation progress STR_GENERATION_WORLD :{WHITE}세계 만드는 중.. STR_GENERATION_ABORT :{BLACK}중지 -STR_GENERATION_ABORT_CAPTION :{WHITE}세계 만들기 중지 +STR_GENERATION_ABORT_CAPTION :{WHITE}세계 제작 중지 STR_GENERATION_ABORT_MESSAGE :{YELLOW}세계 만들기를 중지하시겠습니까? STR_GENERATION_PROGRESS :{WHITE}{NUM}% 완료 STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} @@ -2749,7 +2794,7 @@ STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}적용 STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}적용하지 않은 NewGRF 파일 STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}프리셋 선택: STR_NEWGRF_FILTER_TITLE :{ORANGE}검색할 문자열: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}선택한 프리셋을 불러옵니다 +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}선택한 프리셋을 불러옵니다. STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}프리셋 저장 STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}현재 목록을 프리셋으로 저장합니다. STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}프리셋 이름 입력 @@ -2765,6 +2810,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}위로 STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}선택한 NewGRF 파일의 순서를 위로 올립니다. STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}아래로 STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}선택한 NewGRF 파일의 순서를 아래로 내립니다. +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}업데이트 +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}새 버전이 있는 NewGRF 파일을 업데이트합니다. STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}설치된 NewGRF의 목록입니다. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}매개 변수 설정 @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}일치하 STR_NEWGRF_SETTINGS_DISABLED :{RED}사용 안 함 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}이 OpenTTD 버전과 맞지 않습니다... +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}프리셋 저장 +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}사용 가능한 프리셋 목록입니다. 아래에 같은 이름을 복사하려면 선택하십시오. +STR_SAVE_PRESET_TITLE :{BLACK}프리셋의 이름을 입력하세요 +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}저장할 프리셋에 지정할 이름입니다. +STR_SAVE_PRESET_CANCEL :{BLACK}취소 +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}프리셋을 바꾸지 않습니다. +STR_SAVE_PRESET_SAVE :{BLACK}저장 +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}이 프리셋을 선택한 이름으로 저장합니다. + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF 매개 변숫값 변경 STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}닫기 @@ -2812,14 +2869,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}스프라이트 정렬 {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}다음 스프라이트 -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}모조/재색상/글씨 스프라이트는 건너뛰고 다음 번호의 일반 스프라이트로 이동합니다. 마지막 번호에 다다르면 다시 처음으로 돌아옵니다. +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}(위조/재색상/글씨 스프라이트를 제외한) 다음 보통 스프라이트로 이동하고, 마지막 스프라이트에 다다르면 다시 처음으로 돌아갑니다. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}스프라이트 번호 입력 STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}입력한 스프라이트 번호로 이동합니다. 만약 입력한 번호의 스프라이트가 일반 스프라이트가 아닐경우, 그 다음으로 오는 일반 스프라이트로 이동합니다. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}이전 스프라이트 -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}모조/재색상/글씨 스프라이트는 건너뛰고 이전 번호의 정상 스프라이트로 이동합니다. 처음 번호에 다다르면 마지막 번호로 돌아옵니다. +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}(위조/재색상/글씨 스프라이트를 제외한) 이전 보통 스프라이트로 이동하고, 첫 번째 스프라이트에 다다르면 마지막으로 돌아갑니다. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}현재 선택된 스프라이트를 표시합니다. 이 스프라이트가 그려졌을때의 정렬은 무시합니다. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}X축이나 Y축 방향으로 스프라이트를 이동시킵니다. -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X축: {NUM}, Y축: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}상대값 초기화 +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}현재 상대값 좌표를 초기화 +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X 좌표: {NUM}, Y 좌표: {NUM} (절댓값) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X 좌표: {NUM}, Y 좌표: {NUM} (상대값) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}스프라이트 선택 STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}화면에서 스프라이트를 골라 냅니다. @@ -2858,13 +2918,13 @@ STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}경고! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}게임 진행중에 설정을 변경하면 게임이 충돌할 수도 있습니다.{}정말로 설정을 변경하시겠습니까? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}파일 추가 불가: 중복된 GRF 아이디 -STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}일치하는 파일을 찾을 수 없음 (호환되는 GRF 불러옴) +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}해당 파일을 찾을 수 없습니다. (대체 GRF를 불러옵니다) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}파일을 추가할 수 없습니다: NewGRF 파일이 너무 많습니다. -STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}없는 파일 대신에 호환되는 GRF를 불러왔습니다. -STR_NEWGRF_DISABLED_WARNING :{WHITE}나에게 없는 GRF 파일은 비활성화되었습니다. +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}대체할 수 있는 GRF를 불러왔습니다. +STR_NEWGRF_DISABLED_WARNING :{WHITE}없는 GRF 파일은 비활성화됩니다. STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}GRF 파일 없음 -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}일시 정지를 해제하면 오류가 발생할 수도 있으므로, 이후에 나오는 오류에 대해서는 버그를 신고하지 마십시오.{}정말로 일시 정지를 해제하시겠습니까? +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}일시정지 해제 시 오류가 발생하거나 게임이 종료될 수 있으며, 이와 관련된 버그 리포트는 접수받지 않습니다.{}정말로 일시정지를 해제하시겠습니까? # NewGRF status STR_NEWGRF_LIST_NONE :없음 @@ -2873,9 +2933,10 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}호환 STR_NEWGRF_LIST_MISSING :{RED}파일 없음 # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}'{STRING}' NewGRF이 하려는 행위는 비동기화 혹은 충돌을 일으킬 수 있습니다. +STR_NEWGRF_BROKEN :{WHITE}'{0:STRING}' NewGRF이 적용되는 과정에서 비동기화나 충돌이 일어날 수 있습니다. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}차고지 안에 있지 않은 '{1:ENGINE}'에 대한 동력 차량 상태가 바뀌었습니다. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}'{G 1 "이" "가"} 차고지 안에 있지 않으면 차량 길이가 바뀝니다. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}차량이 기지 안에 있지 않거나 개조가 불가능한 상태에서 '{1:ENGINE}'의 수송량이 변경되었습니다. STR_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:COMPANY}'에 속한 열차 '{0:VEHICLE}'의 길이가 잘못된 값을 가지고 있습니다. NewGRF에 의한 문제로 추축됩니다. 게임이 비동기화 또는 충돌을 일으킬 수 있습니다. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' (이)가 잘못된 정보를 제공하고 있습니다. @@ -2890,16 +2951,19 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :<알 수 없는 STR_NEWGRF_INVALID_ENGINE :<알 수 없는 차량 모델> STR_NEWGRF_INVALID_INDUSTRYTYPE :<알 수 없는 산업시설> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<알 수 없는 차량> + # NewGRF scanning window -STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF 검색 +STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF 검색 중 STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF을 검색하는 중입니다. 파일 개수에 따라 시간이 조금 걸릴 수 있습니다... STR_NEWGRF_SCAN_STATUS :{BLACK}약 {1:NUM}개의 NewGRF 중에서 {0:NUM}개의 NewGRF을 찾았습니다 -STR_NEWGRF_SCAN_ARCHIVES :자료 검색 +STR_NEWGRF_SCAN_ARCHIVES :자료 검색 중 # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}팻말 목록 - 팻말 {COMMA}개 STR_SIGN_LIST_MATCH_CASE :{BLACK}대소문자 구분 -STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}팻말의 이름을 비교할 때 검색 문자열의 대소문자 구분 여부를 선택합니다 +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}팻말의 이름을 비교할 때 검색 문자열의 대소문자 구분할지 여부를 선택합니다. # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}팻말 내용 고치기 @@ -2912,29 +2976,29 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}팻말 STR_TOWN_DIRECTORY_CAPTION :{WHITE}도시 목록 STR_TOWN_DIRECTORY_NONE :{ORANGE}(없음) STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}도시 이름 - 이 도시로 시점을 변경하려면 클릭하세요. Ctrl+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}도시 이름 - 이 도시로 시점을 변경하려면 클릭하세요. CTRL+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다. STR_TOWN_POPULATION :{BLACK}총 인구 수: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (대도시) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}인구: {ORANGE}{COMMA}{BLACK} 가구수: {ORANGE}{COMMA} -STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}지난달 승객수: {ORANGE}{COMMA}{BLACK} 최고: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}지난 달 승객 수: {ORANGE}{COMMA}{BLACK} 최대: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}지난달 우편수: {ORANGE}{COMMA}{BLACK} 최고: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}도시가 성장하기 위해 필요한 화물: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED}{G 0 "이" "가"} 필요함 -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :겨울에는 {ORANGE}{STRING}{BLACK}{G 0 "이" "가"} 필요합니다. +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :겨울에는 {ORANGE}{STRING}{BLACK}{G 0 "이" "가"} 필요함 STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} 수송됨 -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (화물이 더 필요함) -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (수송됨) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{1:CARGO_LONG} \ {0:CARGO_TINY}{RED} (더 필요함) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{1:CARGO_LONG} \ {0:CARGO_TINY}{GREEN} (수송됨) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}도시가 {ORANGE}{COMMA}{BLACK}일마다 성장합니다. -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}도시가 {ORANGE}{COMMA}{BLACK}일마다 성장합니다. (투자 중) +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}도시가 {ORANGE}{COMMA}{BLACK}일마다 성장합니다. (투자됨) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}도시는 {RED}성장하지 않고{BLACK} 있습니다. STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}현재 소음 수준: {ORANGE}{COMMA}{BLACK} 최대 허용 수준: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}이 도시의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}이 도시의 위치로 시점을 변경합니다. CTRL+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다. STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}지역 당국 STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}지역 당국의 정보를 보여줍니다. -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}도시 이름을 변경합니다. +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}이 도시 이름을 변경합니다. STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}확장 STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}도시의 크기를 키웁니다. @@ -2961,14 +3025,14 @@ STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :새 건물에 STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :수송 권한 독점권 구입 STR_LOCAL_AUTHORITY_ACTION_BRIBE :지역 당국에게 뇌물 주기 -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW} 더 많은 승객과 화물을 유치하기 위해 소규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW} 더 많은 승객과 화물을 유치하기 위해 중간 규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW} 더 많은 승객과 화물을 유치하기 위해 대규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}더 많은 승객과 화물을 유치하기 위해 소규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}더 많은 승객과 화물을 유치하기 위해 중간 규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}더 많은 승객과 화물을 유치하기 위해 대규모의 광고 캠페인을 시작합니다.{}가격: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}도시 도로망 보수공사를 시행합니다. 앞으로 6개월간 극심한 도로 혼잡을 일으킵니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} 당신의 회사를 대표하는 '명예의 동상'을 건설합니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW} 도시 상업 건물의 건설에 투자합니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} 1년간의 수송 권한 독점권을 구입합니다. 도시 당국은 오직 당신 회사의 역에만 승객과 화물을 허용할 것입니다.{}가격: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} 성취도를 올리기 위해 처벌을 감수하고 지역 당국에 뇌물을 줍니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}당신의 회사를 대표하는 '명예의 동상'을 건설합니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}도시 상업 건물의 건설에 투자합니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}1년간의 수송 권한 독점권을 구입합니다. 도시 당국은 오직 당신 회사의 역에만 승객과 화물을 허용할 것입니다.{}가격: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}성취도를 올리기 위해 처벌을 감수하고 지역 당국에 뇌물을 줍니다.{}가격: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} 목표 @@ -2980,7 +3044,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- 적 STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}회사 목표: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/마을/지도의 위치로 화면을 이동하려면 클릭하십시오. Ctrl+클릭하면 산업시설/마을/지도를 표시하는 외부화면을 엽니다. +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/마을/지도의 위치로 화면을 이동하려면 클릭하십시오. CTRL+클릭하면 산업시설/마을/지도를 표시하는 외부화면을 엽니다. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{G=m}질문 @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :{G=f}정보 STR_GOAL_QUESTION_CAPTION_WARNING :{G=f}경고 STR_GOAL_QUESTION_CAPTION_ERROR :오류 -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :취소 STR_GOAL_QUESTION_BUTTON_OK :{G=m}확인 STR_GOAL_QUESTION_BUTTON_NO :아니요 @@ -3007,6 +3071,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :재시작 STR_GOAL_QUESTION_BUTTON_POSTPONE :연기 STR_GOAL_QUESTION_BUTTON_SURRENDER :양도 STR_GOAL_QUESTION_BUTTON_CLOSE :닫기 +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}보조금 @@ -3015,7 +3080,7 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{1:STRI STR_SUBSIDIES_NONE :{ORANGE}없음 STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}이미 지급 중인 보조금: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{1:STRING}에서 {2:STRING}까지 {0:STRING} 수송{YELLOW} ({3:COMPANY}{YELLOW}, {DATE_SHORT}까지) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/도시의 위치로 시점을 변경하려면 클릭하세요. Ctrl+클릭하면 이 산업시설/도시의 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/도시의 위치로 시점을 변경하려면 클릭하세요. CTRL+클릭하면 이 산업시설/도시의 위치를 기준으로 새로운 외부 화면을 엽니다. # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}의 스토리 북 @@ -3027,10 +3092,11 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}이전 STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}이전 쪽으로 이동합니다. STR_STORY_BOOK_NEXT_PAGE :{BLACK}다음 STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}다음 쪽으로 이동합니다. +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}잘못된 목표 참조 # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}역 이름 - 이 역의 위치로 시점을 변경하려면 클릭하세요. Ctrl+클릭하면 이 역 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}1개 이상의 아이템을 선택하려면 CTRL키를 누르세요 +STR_STATION_LIST_TOOLTIP :{BLACK}역 이름 - 이 역의 위치로 시점을 변경하려면 클릭하세요. CTRL+클릭하면 이 역 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}1개 이상의 아이템을 선택하려면 CTRL 키를 누르세요 STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA}개 역사 STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}화물 # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}대기: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({1:STATION}에서 온 {0:CARGO_SHORT}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} 적재 예정) @@ -3063,16 +3128,16 @@ STR_STATION_VIEW_WAITING_STATION :역: 대기 STR_STATION_VIEW_WAITING_AMOUNT :양: 대기 STR_STATION_VIEW_PLANNED_STATION :역: 계획 STR_STATION_VIEW_PLANNED_AMOUNT :양: 계획 -STR_STATION_VIEW_FROM :{YELLOW}{1:STATION}에서 출발한 {0:CARGO_SHORT} -STR_STATION_VIEW_VIA :{YELLOW}{1:STATION} 역을 경유하는 {0:CARGO_SHORT} -STR_STATION_VIEW_TO :{YELLOW}{1:STATION} 역으로 가는 {0:CARGO_SHORT} +STR_STATION_VIEW_FROM :{YELLOW}{1:STATION} 출발: {0:CARGO_SHORT} +STR_STATION_VIEW_VIA :{YELLOW}{1:STATION} 경유: {0:CARGO_SHORT} +STR_STATION_VIEW_TO :{YELLOW}{1:STATION} 도착: {0:CARGO_SHORT} STR_STATION_VIEW_FROM_ANY :{RED}알 수 없는 역에서 출발한 {CARGO_SHORT} STR_STATION_VIEW_TO_ANY :{RED}아무 역에나 도착하는 {CARGO_SHORT} STR_STATION_VIEW_VIA_ANY :{RED}어디든 경유하는 {CARGO_SHORT} STR_STATION_VIEW_FROM_HERE :{GREEN}여기에서 출발하는 {CARGO_SHORT} STR_STATION_VIEW_VIA_HERE :{GREEN}이 역을 경유하는 {CARGO_SHORT} STR_STATION_VIEW_TO_HERE :{GREEN}이 역에 도착하는 {CARGO_SHORT} -STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} (직통) +STR_STATION_VIEW_NONSTOP :{YELLOW}직행 {CARGO_SHORT} STR_STATION_VIEW_GROUP_S_V_D :출발-경유-도착 STR_STATION_VIEW_GROUP_S_D_V :출발-도착-경유 @@ -3092,24 +3157,24 @@ STR_CARGO_RATING_EXCELLENT :훌륭함 STR_CARGO_RATING_OUTSTANDING :매우 훌륭함 ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}이 역의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 역 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}역 이름 변경 +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}이 역의 위치로 시점을 변경합니다. CTRL+클릭하면 이 역 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}이 역의 이름을 변경합니다. STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 열차를 표시합니다 -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 자동차를 표시합니다 +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 자동차/전차를 보여줍니다. STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 항공기를 표시합니다 STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 선박을 표시합니다 -STR_STATION_VIEW_RENAME_STATION_CAPTION :역 이름 변경 +STR_STATION_VIEW_RENAME_STATION_CAPTION :이 역의 이름을 변경합니다. STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}공항 폐쇄 STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}이 공항에 항공기가 착륙하는 것을 금지합니다. # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}이 경유지의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 경유지 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}경유지 이름 변경 -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}이 부표의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 부표 위치를 기준으로 새로운 외부화면을 엽니다. +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}이 경유지의 위치로 시점을 변경합니다. CTRL+클릭하면 이 경유지 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}이 경유지의 이름을 변경합니다. +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}이 부표의 위치로 시점을 변경합니다. CTRL+클릭하면 이 부표 위치를 기준으로 새로운 외부화면을 엽니다. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}부표 이름 바꾸기 STR_EDIT_WAYPOINT_NAME :{WHITE}경유지 이름 설정 @@ -3121,12 +3186,12 @@ STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}건설 STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}신규 차량 구입 STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}열차 유지비 -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}자동차 유지비 +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}자동차/전차 유지비 STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}항공기 유지비 STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}선박 유지비 STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}유지보수비 STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}열차 수익 -STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}자동차 수익 +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}차량 수익 STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}항공기 수익 STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}선박 수익 STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}이자 @@ -3134,14 +3199,14 @@ STR_FINANCES_SECTION_OTHER :{GOLD}기타 STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}총계: -STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}소유금 +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}현 보유 금액 STR_FINANCES_LOAN_TITLE :{WHITE}대출 STR_FINANCES_MAX_LOAN :{WHITE}최대 대출: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} 빌리기 -STR_FINANCES_BORROW_TOOLTIP :{BLACK}돈을 빌립니다. Ctrl+클릭하면 빌릴 수 있는만큼 빌립니다 +STR_FINANCES_BORROW_TOOLTIP :{BLACK}돈을 빌립니다. CTRL+클릭하면 빌릴 수 있는만큼 빌립니다. STR_FINANCES_REPAY_BUTTON :{BLACK}{CURRENCY_LONG} 갚기 -STR_FINANCES_REPAY_TOOLTIP :{BLACK}돈을 갚습니다. Ctrl+클릭하시면 갚을 수 있는 만큼 갚습니다 +STR_FINANCES_REPAY_TOOLTIP :{BLACK}돈을 갚습니다. CTRL+클릭하면 갚을 수 있는 만큼 갚습니다. STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}기반시설 # Company view @@ -3152,17 +3217,17 @@ STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}설립: { STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}색상: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}차량: STR_COMPANY_VIEW_TRAINS :{WHITE}열차 {COMMA}대 -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}자동차 {COMMA}대 +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}자동차/전차 {COMMA}대 STR_COMPANY_VIEW_AIRCRAFT :{WHITE}항공기 {COMMA}대 STR_COMPANY_VIEW_SHIPS :{WHITE}선박 {COMMA}대 STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}없음 STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}회사가치: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% {COMPANY}의 소유) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}기반시설: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}철도 {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}선로 {COMMA}칸 STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}도로 {COMMA}칸 -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}운하시설 {COMMA}칸 -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}정거장 {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}항만시설 {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}역 {COMMA}칸 STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}공항 {COMMA}개 STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}없음 @@ -3214,13 +3279,13 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}(없음 STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% 운반됨) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}%가 각각 운반됨) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}산업시설 이름 - 산업시설로 시점을 변경하려면 클릭하세요. Ctrl+클릭하면 이 산업시설의 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}산업시설 이름 - 산업시설로 시점을 변경하려면 클릭하세요. CTRL+클릭하면 이 산업시설의 위치를 기준으로 새로운 외부 화면을 엽니다. # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}지난달 생산량: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% 수송됨) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}이 산업시설로 이동합니다. Ctrl+클릭하면 이 산업시설을 기준으로 새로운 외부 화면을 엽니다. +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}이 산업시설로 이동합니다. CTRL+클릭하면 이 산업시설을 기준으로 새로운 외부 화면을 엽니다. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}생산 수준: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}산업시설이 곧 폐쇄됩니다! @@ -3242,19 +3307,19 @@ STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}생산 # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA}대의 열차 -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA}대의 자동차 +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA}대의 차량 STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA}대의 선박 STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA}대의 항공기 STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}열차 - 열차 정보를 보려면 클릭 -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차 - 자세히 보려면 클릭 +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}차량 - 자세히 보려면 클릭 STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 클릭하세요. STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}항공기 - 항공기 정보를 보려면 클릭하세요. STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}올해 수입: {CURRENCY_LONG} (작년: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :사용 가능 열차 -STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :사용 가능 자동차 +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :사용 가능한 차량 STR_VEHICLE_LIST_AVAILABLE_SHIPS :사용 가능 선박 STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :사용 가능 항공기 STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}이 차량 타입에 사용할 수 있는 기관차의 목록 보기 @@ -3262,7 +3327,7 @@ STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}이 차 STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}관리 STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}이 목록에 있는 모든 열차에게 지시 STR_VEHICLE_LIST_REPLACE_VEHICLES :차량 교체 -STR_VEHICLE_LIST_SEND_FOR_SERVICING :점검하러 보냄 +STR_VEHICLE_LIST_SEND_FOR_SERVICING :정비하러 보내기 STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :차량기지로 보내기 STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :차고지로 보내기 @@ -3285,12 +3350,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :그룹에 속 STR_GROUP_DEFAULT_SHIPS :그룹에 속하지 않은 선박 STR_GROUP_DEFAULT_AIRCRAFTS :그룹에 속하지 않은 항공기 -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}그룹 - 클릭해서 그룹에 속한 차량을 모두 나열합니다. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}그룹 - 클릭해서 그룹에 속한 차량을 모두 나열합니다. 상하위 그룹을 바꾸려면 드래그 앤 드롭하십시오. STR_GROUP_CREATE_TOOLTIP :{BLACK}그룹 만들기 STR_GROUP_DELETE_TOOLTIP :{BLACK}선택한 그룹 삭제 STR_GROUP_RENAME_TOOLTIP :{BLACK}선택한 그룹 이름 바꾸기 STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}클릭하여 전체 자동 교체로부터 이 그룹을 보호합니다. +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}그룹 삭제 +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}이 그룹과 하위 그룹을 정말 삭제하시겠습니까? + STR_GROUP_ADD_SHARED_VEHICLE :경로를 공유 중인 차량 추가 STR_GROUP_REMOVE_ALL_VEHICLES :모든 차량 제거 @@ -3299,11 +3367,11 @@ STR_GROUP_RENAME_CAPTION :{BLACK}그룹 # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :새 열차 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :새 전기 열차 -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :새 모노레일 +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :새 모노레일 열차 STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :새 자기부상열차 STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :새 열차 -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :새 자동차 +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :새 차량 STR_BUY_VEHICLE_SHIP_CAPTION :새 선박 STR_BUY_VEHICLE_AIRCRAFT_CAPTION :새 항공기 @@ -3328,10 +3396,10 @@ STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}최고 견인력: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}항속거리: {GOLD}{COMMA} 칸 -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}열차 선택 목록 - 차량 정보를 보려면 클릭 -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차 선택 목록 - 차량 정보를 보려면 클릭 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}선박 선택 목록 - 선박의 정보를 보려면 클릭하세요 -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 선택 목록 - 항공기 정보를 보려면 클릭하세요 +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}열차 차량 구매 목록입니다. 차량의 정보를 보려면 클릭하세요. CTRL + 클릭하면 해당 차량을 숨김/표시 처리할 수 있습니다. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차/전차 구매 목록입니다. 차량의 정보를 보려면 클릭하세요. CTRL + 클릭하면 해당 차량을 숨김/표시 처리할 수 있습니다. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}선박 구매 목록입니다. 선박의 정보를 보려면 선박을 클릭하세요. CTRL + 클릭하면 해당 선박을 숨김/표시 처리할 수 있습니다. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 구매 목록입니다. 항공기의 정보를 보려면 클릭하세요. CTRL + 클릭하면 해당 항공기를 숨김/표시 처리할 수 있습니다. STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}차량 구입 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}차량 구입 @@ -3339,7 +3407,7 @@ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}선박 STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}항공기 구입 STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}선택된 차량을 구입합니다. SHIFT+클릭으로 예상 구입 가격을 볼 수 있습니다. -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 자동차를 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다. +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 차량을 구입합니다. Shift+클릭하면 예상 구입 비용을 볼 수 있습니다. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 선박을 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다. STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 항공기를 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다. @@ -3349,12 +3417,27 @@ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}이름 STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}이름 지정 STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}열차의 차량 이름을 변경합니다. -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}자동차의 차량 이름을 변경합니다. +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}차량의 차종명을 변경합니다. STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}선박의 차량 이름을 변경합니다. STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}항공기의 차량 이름을 변경합니다. +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}숨김 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}숨김 +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}숨김 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}숨김 + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}보이기 +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}보이기 +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}보이기 +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}보이기 + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}숨김 처리한 열차 차량을 목록에 보여주거나 숨깁니다. +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}숨김 처리한 자동차/전차 차량을 목록에 보여주거나 숨깁니다. +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}숨김 처리한 선박을 목록에 보여주거나 숨깁니다. +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}숨김 처리한 항공기를 목록에 보여주거나 숨깁니다. + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}열차의 차량 이름을 변경합니다. -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}자동차의 차량 이름을 변경합니다. +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}차종명을 변경합니다. STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}선박의 차량 이름을 변경합니다. STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}항공기의 차량 이름을 변경합니다. @@ -3366,28 +3449,28 @@ STR_DEPOT_RENAME_DEPOT_CAPTION :차량기지 STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} 차량{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}차량 {NUM}대{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}열차 - 열차에 차량을 추가하거나 제거하려면 차량을 왼쪽 클릭으로 드래그하시고, 열차 정보를 보려면 오른쪽 클릭하십시오. 두 기능을 해당 차량 뒤에 딸려오는 차량에 적용하고 싶다면 Ctrl키를 누르고 계십시오. -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차 - 자동차의 정보를 보려면 오른쪽 클릭하세요. +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}열차 - 열차에 차량을 추가하거나 제거하려면 차량을 왼쪽 클릭으로 드래그하시고, 열차 정보를 보려면 오른쪽 클릭하십시오. 두 기능을 해당 차량 뒤에 딸려오는 차량에 적용하고 싶다면 CTRL 키를 누르고 계십시오. +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량을 오른쪽 클릭하면 해당 차량의 간단한 정보를 볼 수 있습니다. STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 오른쪽 클릭하세요. STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 - 항공기의 정보를 보려면 오른쪽 클릭하세요. STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}기관차/객차/화물차 한량만 제거하려면 여기로 드래그하세요 -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}자동차를 팔려면 여기로 드래그하세요. +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}차량을 팔려면 여기로 드래그하세요. STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}선박을 팔려면 여기로 드래그하세요. STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}항공기를 팔려면 여기로 드래그하세요. STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}열차 전체를 팔려면 기관차를 여기로 드래그하세요 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}이 차량기지에 있는 모든 열차를 팝니다. -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차량기지에 있는 모든 자동차를 팝니다. -STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}이 차량기지에 있는 모든 선박을 팝니다. -STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}이 차량기지에 있는 모든 항공기를 팝니다. +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지에 있는 모든 차량을 팝니다. +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}이 정박소에 있는 모든 선박을 팝니다. +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}이 격납고에 있는 모든 항공기를 팝니다. STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}이 차량기지에 있는 모든 열차를 자동으로 교체합니다. -STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지에 있는 모든 자동차를 자동으로 교체합니다. +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지에 있는 모든 차량을 자동으로 교체합니다. STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}이 정박소에 있는 모든 선박을 자동으로 교체합니다. STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}이 격납고에 있는 모든 항공기를 자동으로 교체합니다. @@ -3396,48 +3479,48 @@ STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}새 차 STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}새 선박 STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}새 항공기 -STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}새 열차 구입 -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}새 자동차 구입 -STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}새 선박 구입 -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}새 항공기 구입 +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}새 열차를 구입합니다. +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}새 차량을 구입합니다. +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}새 선박을 구입합니다. +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}새 항공기를 구입합니다. STR_DEPOT_CLONE_TRAIN :{BLACK}열차 복제 STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}차량 복제 STR_DEPOT_CLONE_SHIP :{BLACK}선박 복제 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}항공기 복제 -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}화물칸을 포함한 열차 전체를 복제합니다. 이 버튼을 클릭하고 차량기지 안이나 밖에 있는 열차를 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다. -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}자동차를 복제합니다. 이 버튼을 클릭하고 차고지 안이나 밖에 있는 차량을 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다. -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}이 선박을 복제합니다. 이 버튼을 누르고 정류소의 안이나 밖에 있는 선박을 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다. -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}이 항공기를 복제합니다. 격납고 안이나 밖에 있는 항공기를 선택하십시오. Ctrl+클릭하면 경로를 같이 공유합니다. +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}객차/화차를 포함한 열차 전체를 복제합니다. 이 버튼을 클릭하고 차량기지 안이나 밖에 있는 열차를 클릭하십시오. CTRL+클릭하면 경로를 같이 공유합니다. +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}차량을 복제합니다. 이 버튼을 클릭하고 차고지 안이나 밖에 있는 차량을 클릭하십시오. CTRL+클릭하면 경로도 함께 공유합니다. +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}선박을 복제합니다. 이 버튼을 누르고 정류소의 안이나 밖에 있는 선박을 클릭하십시오. CTRL+클릭하면 경로를 같이 공유합니다. +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}항공기를 복제합니다. 격납고 안이나 밖에 있는 항공기를 선택하십시오. CTRL+클릭하면 경로를 같이 공유합니다. -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}이 차량기지로 이동합니다. Ctrl+클릭하면 이 차량 기지의 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}이 차고지가 있는 곳으로 시점을 변경합니다. Ctrl+클릭하면 이 차고지 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}이 정박소로 이동합니다. Ctrl+클릭하면 이 정박소의 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 격납고의 위치로 시점을 이동합니다. Ctrl+클릭하면 이 격납고의 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}이 차량기지로 이동합니다. CTRL+클릭하면 이 차량기지의 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}차고지가 있는 곳으로 화면을 이동합니다. CTRL+클릭하면 이 차고지의 위치를 기준으로 외부화면 창을 띄웁니다. +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}이 정박소로 이동합니다. CTRL+클릭하면 이 정박소의 위치를 기준으로 새로운 외부 화면을 엽니다. +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 격납고의 위치로 시점을 이동합니다. CTRL+클릭하면 이 격납고의 위치를 기준으로 새로운 외부 화면을 엽니다. STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}이 차량기지를 거쳐가는 모든 열차의 목록을 보여줍니다. -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지를 거쳐가는 모든 자동차의 목록을 보여줍니다. +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지를 거쳐가는 모든 차량의 목록을 보여줍니다. STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}이 정박소를 거쳐가는 모든 선박의 목록을 보여줍니다. STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}이 격납고를 거쳐가는 모든 항공기의 목록을 보여줍니다. STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}이 차량기지 안에 있는 모든 열차의 운행을 중지시킵니다. -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 자동차의 운행을 중지시킵니다. +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 차량의 운행을 중지시키려면 클릭하세요. STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}이 정박소 안에 있는 모든 선박의 운행을 중지시킵니다. STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}이 격납고 안에 있는 모든 항공기의 운행을 중지시킵니다. STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}이 차량기지 안에 있는 모든 열차의 운행을 시작합니다. -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 자동차의 운행을 시작합니다. +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 차량의 운행을 시작하려면 클릭하세요. STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}이 정박소 안에 있는 모든 선박의 운행을 시작합니다. STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}이 격납고 안에 있는 모든 항공기의 운행을 시작합니다. -STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}이 안에 있는 모든 차량을 판매하려고 합니다. 정말 판매하시겠습니까? +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}이 안에 있는 모든 차량을 판매하려고 합니다. 계속하시겠습니까? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}차량 개발자로부터의 메시지 STR_ENGINE_PREVIEW_MESSAGE :{GOLD}저희는 이제 막 새로운 {STRING}{G 0 "을" "를"} 개발했습니다. 1년 먼저 이 차량을 사용하셔서 모두에게 공개되기 전에 잘 작동하는지 확인해주시겠습니까? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}철도 기관차 -STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=f}자동차 +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=f}자동차/전차 STR_ENGINE_PREVIEW_AIRCRAFT :{G=f}항공기 STR_ENGINE_PREVIEW_SHIP :{G=m}선박 STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}모노레일 기관차 @@ -3453,10 +3536,15 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}가격: # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} 교체 - {STRING} STR_REPLACE_VEHICLE_TRAIN :{G=f}열차 -STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=f}자동차 +STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=f}자동차/전차 STR_REPLACE_VEHICLE_SHIP :{G=m}선박 STR_REPLACE_VEHICLE_AIRCRAFT :{G=f}항공기 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}사용 중인 차량 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}이 열은 현재 사용 중인 차량 목록입니다. +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}교체할 수 있는 차량 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}이 열은 교체할 수 있는 차량 목록입니다. + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}교체할 기관차 종류를 선택하십시오. STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}새로 교체될 기관차를 선택하십시오. @@ -3464,7 +3552,7 @@ STR_REPLACE_VEHICLES_START :{BLACK}차량 STR_REPLACE_VEHICLES_NOW :모든 차량을 지금 교체 STR_REPLACE_VEHICLES_WHEN_OLD :오래된 차량만 교체 STR_REPLACE_HELP_START_BUTTON :{BLACK}왼쪽에서 선택한 기관차를 오른쪽의 새 기관차로 교체하려면 누르세요 -STR_REPLACE_NOT_REPLACING :{BLACK}교체 안됨 +STR_REPLACE_NOT_REPLACING :{BLACK}교체 안 됨 STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}차량이 선택되지 않았음 STR_REPLACE_REPLACING_WHEN_OLD :낡으면 {ENGINE}(으)로 교체 STR_REPLACE_VEHICLES_STOP :{BLACK}차량 교체 중지 @@ -3478,9 +3566,9 @@ STR_REPLACE_WAGONS :화물차 STR_REPLACE_HELP_RAILTYPE :{BLACK}교체할 기관차의 철도 종류를 고르세요 STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}왼쪽의 선택한 기관차가 어떤 기관차로 교체되고 있는지 표시합니다. STR_REPLACE_RAIL_VEHICLES :철도 차량 -STR_REPLACE_ELRAIL_VEHICLES :전기 철도 +STR_REPLACE_ELRAIL_VEHICLES :전기철도 차량 STR_REPLACE_MONORAIL_VEHICLES :모노레일 차량 -STR_REPLACE_MAGLEV_VEHICLES :자기부상 +STR_REPLACE_MAGLEV_VEHICLES :자기부상 차량 STR_REPLACE_REMOVE_WAGON :{BLACK}화물차 제거: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}자동 교체시 열차의 길이가 교체 전보다 길어지면 앞쪽부터 화물칸를 제거하여 열차의 전체 길이가 달라지지 않도록 합니다. @@ -3488,45 +3576,45 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}자동 # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}이 열차가 있는 곳으로 이동합니다. Ctrl+클릭하면 이 열차를 따라갑니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}이 차량이 있는 곳으로 이동합니다. Ctrl+클릭하면 이 차량을 따라갑니다. -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}이 선박이 있는 곳으로 이동합니다. Ctrl+클릭하면 이 선박을 따라갑니다. -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 항공기가 있는 곳으로 이동합니다. Ctrl+클릭하면 이 항공기를 따라갑니다. +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}이 열차가 있는 곳으로 이동합니다. CTRL+클릭하면 이 열차를 따라갑니다. +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}이 차량이 있는 곳으로 이동합니다. CTRL+클릭하면 이 차량을 따라갑니다. +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}이 선박이 있는 곳으로 이동합니다. CTRL+클릭하면 이 선박을 따라갑니다. +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 항공기가 있는 곳으로 이동합니다. CTRL+클릭하면 이 항공기를 따라갑니다. STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}열차를 차량기지로 보냅니다. CTRL+클릭하면 점검만 합니다. STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}차량을 차고지로 보냅니다. CTRL+클릭하면 점검만 합니다. -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}선박을 정박소로 보냅니다. CTRL+클릭하면 점검만 합니다. +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}선박을 정박소로 보냅니다. CTRL+클릭하면 정비만 합니다. STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}항공기를 격납고로 보냅니다. CTRL+클릭하면 점검만 합니다 -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}모든 차량을 포함한 열차 전체를 복제합니다. Ctrl+클릭하면 경로도 같이 공유됩니다. -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}이 버튼은 이 자동차의 복제를 구입할 것입니다. Ctrl+클릭하면 경로도 같이 공유됩니다. -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}이 선박을 복제합니다. Ctrl+클릭하면 경로를 공유합니다. -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}이 항공기를 복제합니다. Ctrl+클릭하면 경로를 같이 공유합니다. +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}객차/화차를 포함한 열차 전체를 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}차량을 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}선박을 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}항공기를 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}신호를 무시하고 열차를 진행시킵니다. STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}다른 종류의 화물을 실을 수 있도록 열차를 개조 -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}자동차가 다른 종류의 화물을 싣도록 개조 -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}이 선박이 다른 종류의 화물을 싣도록 개조 -STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}이 항공기가 다른 종류의 화물을 싣도록 개조 +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}차량이 다른 종류의 화물을 싣을 수 있도록 개조합니다. +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}이 선박이 다른 종류의 화물을 실을 수 있도록 개조합니다. +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}이 항공기가 다른 종류의 화물을 실을 수 있도록 개조합니다. STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}열차를 회차시킵니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}차량을 U턴시킵니다. +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}차량을 유턴시킵니다. -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}열차의 경로를 보여줍니다. Ctrl+클릭하면 열차의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}차량의 경로를 보여줍니다. Ctrl+클릭하면 차량의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}선박의 경로를 보여줍니다. Ctrl+클릭하면 선박의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}항공기의 경로를 보여줍니다. Ctrl+클릭하면 항공기의 시간표를 보여줍니다. +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}열차의 경로를 보여줍니다. CTRL+클릭하면 열차의 시간표를 보여줍니다. +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}차량의 경로를 보여줍니다. CTRL+클릭하면 차량의 시간표를 보여줍니다. +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}선박의 경로를 보여줍니다. CTRL+클릭하면 선박의 시간표를 보여줍니다. +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}항공기의 경로를 보여줍니다. CTRL+클릭하면 항공기의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}열차 상세정보 보기 -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}자동차 상세정보 보이기 +STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}열차의 상세정보를 보여줍니다. +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}차량 상세정보 보기 STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}선박 상세정보 보기 STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}항공기 상세정보 보기 -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}현재 열차 행동 - 열차를 운행/정지시키려면 클릭하세요. Ctrl+클릭하여 목적지를 볼 수 있습니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}현재 차량 행동 - 운행/정지시키려면 클릭하세요. Ctrl+클릭하여 목적지를 볼 수 있습니다. -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}현재 선박 행동 - 선박을 운행/중지시키려면 클릭하세요. Ctrl+클릭하여 목적지를 볼 수 있습니다. -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}현재 항공기 행동 - 항공기를 운행/중지시키려면 여기를 클릭하세요. 컨트롤+클릭하여 목적지를 볼 수 있습니다. +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}현재 열차 행동 - 열차를 운행/정지시키려면 클릭하세요. CTRL+클릭하면 목적지를 볼 수 있습니다. +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}현재 차량 행동 - 운행/정지시키려면 클릭하세요. CTRL+클릭하면 목적지를 볼 수 있습니다. +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}현재 선박 행동 - 선박을 운행/중지시키려면 클릭하세요. CTRL+클릭하면 목적지를 볼 수 있습니다. +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}현재 항공기 행동 - 항공기를 운행/중지시키려면 여기를 클릭하세요. CTRL+클릭하면 목적지를 볼 수 있습니다. # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}싣는 중 / 내리는 중 @@ -3556,7 +3644,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE STR_VEHICLE_NAME_BUTTON :{BLACK}이름 STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}열차 이름 지정 -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}자동차 이름 지정 +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}차량 이름 지정 STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}선박 이름 지정 STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}항공기 이름 지정 @@ -3581,18 +3669,18 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}수송 STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}환승 수익: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}점검 기준: {LTBLUE}{COMMA}일마다{BLACK} 최근 점검: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}점검 기준: {LTBLUE}{COMMA}%{BLACK} 최근 점검: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 올립니다. Ctrl+클릭하면 점검 기준값을 5만큼 올립니다. -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 내립니다. Ctrl+클릭하면 점검 기준값을 5만큼 내립니다. +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}정비 간격: {LTBLUE}{COMMA}일마다{BLACK} 마지막 정비 날짜: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}정비 간격: {LTBLUE}{COMMA}% 이하일 때 마지막 정비 날짜: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 올립니다. CTRL+클릭하면 점검 기준값을 5만큼 올립니다. +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 내립니다. CTRL+클릭하면 점검 기준값을 5만큼 내립니다. -STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}점검 기준 종류를 변경합니다. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}정비 기준 설정을 변경합니다. STR_VEHICLE_DETAILS_DEFAULT :기본 STR_VEHICLE_DETAILS_DAYS :날짜 STR_VEHICLE_DETAILS_PERCENT :신뢰도 STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}열차 이름 지정 -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}자동차 이름 지정 +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}차량 이름 지정 STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}선박 이름 지정 STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}항공기 이름 지정 @@ -3626,20 +3714,20 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}변경 STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}변경 수송량: {GOLD}{CARGO_LONG}{}{BLACK}개조시 회수되는 비용: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}변경 수송량: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}개조 비용: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}변경 수송량: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}개조시 회수되는 비용: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}개조할 차량을 선택하십시오. 마우스로 드래그하면 여러 개의 차량을 선택 가능합니다. 빈 곳을 클릭하면 전체를 선택합니다. CTRL+클릭하시면 전체 차량을 선택 가능합니다. +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}개조할 차량을 선택하십시오. 마우스로 드래그하면 여러 개의 차량을 선택 가능합니다. 빈 곳을 클릭하면 전체를 선택합니다. CTRL+클릭하면 차량 전체를 선택할 수 있습니다. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}열차가 수송할 화물의 종류를 선택하세요. -STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차가 수송할 화물의 종류를 선택하십시오. +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량이 수송할 화물의 종류를 선택하세요. STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}선박이 운반할 화물의 종류를 선택하십시오 STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}이 항공기가 수송할 화물의 종류를 선택하십시오 STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}열차 개조 -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}자동차 개조 +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}차량 개조 STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}선박 개조 STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}항공기 개조 STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}선택된 화물을 수송하도록 열차를 개조 -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 자동차를 개조 +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 차량을 개조합니다. STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}선택한 화물을 운반하도록 선박을 개조 STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 항공기를 개조합니다 @@ -3664,7 +3752,7 @@ STR_ORDER_GO_NON_STOP_VIA :직행 경유 STR_ORDER_TOOLTIP_NON_STOP :{BLACK}선택한 목적지에서의 정차 방식을 변경합니다 STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}아무 화물이나 가득 싣기 -STR_ORDER_DROP_LOAD_IF_POSSIBLE :가능한것만 적재 +STR_ORDER_DROP_LOAD_IF_POSSIBLE :가능한 것만 적재 STR_ORDER_DROP_FULL_LOAD_ALL :모든 화물을 가득 실음 STR_ORDER_DROP_FULL_LOAD_ANY :아무 화물이나 가득 싣기 STR_ORDER_DROP_NO_LOADING :싣지 않기 @@ -3678,17 +3766,17 @@ STR_ORDER_DROP_NO_UNLOADING :화물을 하 STR_ORDER_TOOLTIP_UNLOAD :{BLACK}선택한 목적지에서의 화물 하차 방식을 변경합니다 STR_ORDER_REFIT :{BLACK}개조 -STR_ORDER_REFIT_TOOLTIP :{BLACK}이 경로에서 어떤 화물을 받을 것인지 선택하십시오. CTRL+클릭은 제거입니다. -STR_ORDER_REFIT_AUTO :{G=f}{BLACK}자동 개조 -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}이 단계에서 자동으로 개조할 화물의 종류를 선택하세요. Ctrl+클릭하면 개조 지시를 해제합니다. 자동 개조 기능은 개조 가능한 차량에서만 사용할 수 있습니다. +STR_ORDER_REFIT_TOOLTIP :{BLACK}이 경로에서 열차를 어떤 화물을 받을 수 있게 개조할 것인지 선택하십시오. CTRL+클릭하면 개조 설정을 해제합니다. +STR_ORDER_REFIT_AUTO :{BLACK}개조 +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}이 경로에서 개조할 화물의 종류를 선택하세요. CTRL+클릭하면 개조 설정을 해제합니다. 개조 기능은 개조 가능한 차량에서만 사용할 수 있습니다. STR_ORDER_DROP_REFIT_AUTO :화물 종류 고정 STR_ORDER_DROP_REFIT_AUTO_ANY :이용가능한 화물 -STR_ORDER_SERVICE :{BLACK}점검 +STR_ORDER_SERVICE :{BLACK}정비 STR_ORDER_DROP_GO_ALWAYS_DEPOT :항상 감 -STR_ORDER_DROP_SERVICE_DEPOT :필요하면 점검 +STR_ORDER_DROP_SERVICE_DEPOT :필요하면 정비 STR_ORDER_DROP_HALT_DEPOT :멈춤 -STR_ORDER_SERVICE_TOOLTIP :{BLACK}점검이 필요하지 않으면 이 경로를 건너뜁니다. +STR_ORDER_SERVICE_TOOLTIP :{BLACK}정비가 필요하지 않으면 이 경로를 건너뜁니다. STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}경로를 건너뛰기 위한 비교조건을 선택합니다. @@ -3697,7 +3785,7 @@ STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :적재율 STR_ORDER_CONDITIONAL_RELIABILITY :신뢰도 STR_ORDER_CONDITIONAL_MAX_SPEED :최고 속력 STR_ORDER_CONDITIONAL_AGE :연령 (년) -STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :점검 필요성 +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :정비 필요성 STR_ORDER_CONDITIONAL_UNCONDITIONALLY :항상 STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :남은 수명 (년) @@ -3715,20 +3803,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}비교 STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}비교할 값을 입력하세요. STR_ORDERS_SKIP_BUTTON :{BLACK}건너뛰기 -STR_ORDERS_SKIP_TOOLTIP :{BLACK}현재 경로를 건너뜁니다, 그리고 다음 경로를 시작합니다. Ctrl+클릭하면 선택한 경로로 건너뜁니다. +STR_ORDERS_SKIP_TOOLTIP :{BLACK}현재 경로를 건너뜁니다, 그리고 다음 경로를 시작합니다. CTRL+클릭하면 선택한 경로로 건너뜁니다. STR_ORDERS_DELETE_BUTTON :{BLACK}삭제 STR_ORDERS_DELETE_TOOLTIP :{BLACK}선택된 경로를 삭제합니다. STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}모든 경로 삭제 STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}경로 공유 해제 -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}경로 공유를 해제합니다. 추가적으로 CTRL+클릭하시면 모든 경로가 삭제됩니다. +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}경로 공유를 해제합니다. CTRL+클릭하면 경로 공유를 해제하면서 모든 경로를 삭제합니다. STR_ORDERS_GO_TO_BUTTON :{BLACK}행선지 STR_ORDER_GO_TO_NEAREST_DEPOT :가까운 차량기지/차고지로 STR_ORDER_GO_TO_NEAREST_HANGAR :가까운 격납고로 STR_ORDER_CONDITIONAL :조건부 경로 건너뛰기 STR_ORDER_SHARE :경로 공유하기 -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}선택된 경로 바로 전이나 목록 맨 끝에 새 경로를 삽입합니다. Ctrl키와 함께 누르면, 역에서는 '아무 화물이나 가득 싣기'로, 경유지에서는 '직행'으로, 차량기지에서는 '점검'으로 지정됩니다. '공유된 경로'를 클릭하거나 Ctrl키를 누르면 선택했던 차량과 이 차량의 경로를 공유하게 됩니다. 단순히 클릭하면 그 차량의 경로를 복사하기만 합니다. 차량기지를 경로에 포함시키면 이 차량은 자동 점검을 할 수 없게 됩니다. +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}선택된 경로 바로 전이나 목록 맨 끝에 새 경로를 삽입합니다. CTRL 키와 함께 누르면, 역에서는 '아무 화물이나 가득 싣기'로, 경유지에서는 '직행'으로, 차량기지에서는 '점검'으로 지정됩니다. '공유된 경로'를 클릭하거나 CTRL 키를 누르면 선택했던 차량과 이 차량의 경로를 공유하게 됩니다. 단순히 클릭하면 그 차량의 경로를 복사하기만 합니다. 차량기지를 경로에 포함시키면 이 차량은 자동 정비를 할 수 없게 됩니다. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}이 경로를 공유하고 있는 모든 차량을 표시합니다. @@ -3736,8 +3824,8 @@ STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}이 경 STR_ORDER_GO_TO_WAYPOINT :완행 경유 {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :직행 경유 {WAYPOINT} -STR_ORDER_SERVICE_AT :완행 점검 -STR_ORDER_SERVICE_NON_STOP_AT :직행 점검 +STR_ORDER_SERVICE_AT :완행 정비 +STR_ORDER_SERVICE_NON_STOP_AT :직행 정비 STR_ORDER_NEAREST_DEPOT :가까운 STR_ORDER_NEAREST_HANGAR :가까운 격납고 @@ -3747,7 +3835,7 @@ STR_ORDER_SHIP_DEPOT :정박소 STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} -STR_ORDER_REFIT_ORDER :({STRING}(으)로 개조) +STR_ORDER_REFIT_ORDER :({STRING}{G 0 "으" ""}로 개조) STR_ORDER_REFIT_STOP_ORDER :({STRING}에서 수리 후 멈춤) STR_ORDER_STOP_ORDER :(멈춤) @@ -3755,36 +3843,36 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI STR_ORDER_IMPLICIT :(자동) -STR_ORDER_FULL_LOAD :(모든 화물을 가득 실음) +STR_ORDER_FULL_LOAD :(모든 화물을 가득 싣기) STR_ORDER_FULL_LOAD_ANY :(아무 화물이나 가득 싣기) STR_ORDER_NO_LOAD :(싣지 않기) STR_ORDER_UNLOAD :(화물 하차 후 적재) -STR_ORDER_UNLOAD_FULL_LOAD :(화물 하차 후 모든 화물을 싣고 출발) +STR_ORDER_UNLOAD_FULL_LOAD :(화물 하차 후 모든 화물을 가득 싣기) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(화물 하차 후 아무 화물이나 가득 싣기) STR_ORDER_UNLOAD_NO_LOAD :(화물 하차 후 빈 차로 출발) -STR_ORDER_TRANSFER :(환승 후 화물 받음) -STR_ORDER_TRANSFER_FULL_LOAD :(환승 후 모든 화물 적재) +STR_ORDER_TRANSFER :(환승 후 화물 적재) +STR_ORDER_TRANSFER_FULL_LOAD :(환승 후 모든 화물을 가득 싣기) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(환승 후 아무 화물이나 가득 싣기) STR_ORDER_TRANSFER_NO_LOAD :(환승 후 빈 차로 출발) -STR_ORDER_NO_UNLOAD :(내리지 않고 화물을 받음) -STR_ORDER_NO_UNLOAD_FULL_LOAD :(내리지 않고 가득 찰 때까지 기다림) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(내리지 않고 아무 화물이나 가득 찰 때까지 기다림) +STR_ORDER_NO_UNLOAD :(내리지 않고 화물 적재) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(내리지 않고 모든 화물을 가득 싣기) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(내리지 않고 아무 화물이나 가득 싣기) STR_ORDER_NO_UNLOAD_NO_LOAD :(적재와 하차 없음) -STR_ORDER_AUTO_REFIT :({STRING}{G 0 "으" ""}로 자동 개조) -STR_ORDER_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 모든 화물을 가득 싣기) -STR_ORDER_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 아무 화물이나 가득 싣기) -STR_ORDER_UNLOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 화물 하차 후 적재) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 화물 하차 후 모든 화물을 싣고 출발) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 화물 하차 후 아무 화물이나 가득 싣기) -STR_ORDER_TRANSFER_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 환승 후 화물 받음) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 환승 후 모든 화물 적재) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 환승 후 아무 화물이나 가득 싣기) -STR_ORDER_NO_UNLOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 내리지 않고 화물을 받음) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 내리지 않고 가득 찰 때까지 기다림) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 자동 개조하면서 내리지 않고 아무 화물이나 가득 찰 때까지 기다림) - -STR_ORDER_AUTO_REFIT_ANY :{G=m}이용가능한 화물 +STR_ORDER_AUTO_REFIT :({STRING}{G 0 "으" ""}로 개조) +STR_ORDER_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 모든 화물을 가득 싣기) +STR_ORDER_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 개조하며 아무 화물이나 가득 싣기) +STR_ORDER_UNLOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물 하차 후 적재) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물 하차 후 모든 화물을 가득 싣기) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물 하차 후 아무 화물이나 가득 싣기) +STR_ORDER_TRANSFER_REFIT :({STRING}{G 0 "으" ""}로 개조하며 환승 후 화물 적재) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 환승 후 모든 화물을 가득 싣기) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 개조하며 환승 후 아무 화물이나 가득 싣기) +STR_ORDER_NO_UNLOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물을 내리지 않고 적재) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물을 내리지 않고 모든 화물을 가득 싣기) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING}{G 0 "으" ""}로 개조하며 화물을 내리지 않고 아무 화물이나 가득 싣기) + +STR_ORDER_AUTO_REFIT_ANY :이용 가능한 화물 STR_ORDER_STOP_LOCATION_NEAR_END :[가까운쪽] STR_ORDER_STOP_LOCATION_MIDDLE :[중간] @@ -3792,7 +3880,7 @@ STR_ORDER_STOP_LOCATION_FAR_END :[먼쪽] STR_ORDER_OUT_OF_RANGE :{RED} (다음 목적지가 항속거리제한을 벗어납니다.) -STR_ORDER_CONDITIONAL_UNCONDITIONAL :{COMMA}번째 경로로 건너뛰기 +STR_ORDER_CONDITIONAL_UNCONDITIONAL :[조건 경로] {COMMA}번째 경로로 건너뛰기 STR_ORDER_CONDITIONAL_NUM :[조건 경로] {COMMA}번째 경로로 건너뛰기 ({STRING} {STRING} {COMMA} 일때) STR_ORDER_CONDITIONAL_TRUE_FALSE :[조건 경로] {COMMA}번째 경로로 건너뛰기 ({STRING}{STRING}) @@ -3808,16 +3896,20 @@ STR_TIMETABLE_TOOLTIP :{BLACK}시간 STR_TIMETABLE_NO_TRAVEL :운행정보 없음 STR_TIMETABLE_NOT_TIMETABLEABLE :이동 (자동; 다음 경로에 의해 시간표 작성) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :운행 (시간표가 작성되지 않음) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :최대 {2:VELOCITY}의 속력으로 운행 (시간표 작성 안됨) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :최대 {2:VELOCITY}의 속력으로 운행 (시간표 작성 안 됨) STR_TIMETABLE_TRAVEL_FOR :{STRING}에 걸쳐 운행 -STR_TIMETABLE_TRAVEL_FOR_SPEED :{0:STRING}동안 최대 {1:VELOCITY}의 속력으로 운행 +STR_TIMETABLE_TRAVEL_FOR_SPEED :{0:STRING} 동안 최대 {1:VELOCITY}의 속력으로 운행 +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :운행 ({STRING} 동안, 시간표 작성 안 됨) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :최대 {1:VELOCITY}의 속력으로 운행 ({0:STRING} 동안, 시간표 작성 안 됨) +STR_TIMETABLE_STAY_FOR_ESTIMATED :({STRING} 동안 정차, 시간표 작성 안 됨) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :({STRING} 동안 운행, 시간표 작성 안 됨) STR_TIMETABLE_STAY_FOR :& {STRING} 동안 정차 STR_TIMETABLE_AND_TRAVEL_FOR :& 다음 목적지({STRING})로 이동 STR_TIMETABLE_DAYS :{COMMA}일 STR_TIMETABLE_TICKS :{COMMA}틱 STR_TIMETABLE_TOTAL_TIME :{BLACK}이 시간표는 완주하는데 {STRING}이 걸릴 것입니다. -STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}이 시간표는 완주하는데 최소 {STRING}이 필요합니다 (일부만 시간지정됨) +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}이 시간표를 완주하는데 최소 {STRING}이 필요합니다 (시간표가 일부만 지정됨) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}이 차량은 지금 정시운행 중입니다. STR_TIMETABLE_STATUS_LATE :{BLACK}이 차량은 현재 {STRING} 늦게 운행하고 있습니다 @@ -3826,7 +3918,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}이 시 STR_TIMETABLE_STATUS_START_AT :{BLACK}이 시간표는 {STRING}에 시작될 것입니다. STR_TIMETABLE_STARTING_DATE :{BLACK}시작 날짜 -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}이 시간표의 시작 날짜를 선택하세요. Ctrl+클릭하면 이 차량과 경로를 공유하는 모든 차량에 대하여, 만약 시간표가 완전히 작성되어 있다면 그 경로의 상대적인 순서에 따라 시간표의 시작점을 설정하고 적절히 분배합니다. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}이 시간표의 시작 날짜를 선택하세요. CTRL+클릭하면 이 차량과 경로를 공유하는 모든 차량에 대하여, 만약 시간표가 완전히 작성되어 있다면 그 경로의 상대적인 순서에 따라 시간표의 시작점을 설정하고 적절히 분배합니다. STR_TIMETABLE_CHANGE_TIME :{BLACK}시간값 변경 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}선택한 경로에서 소요되는 시간 값을 변경합니다. @@ -3844,7 +3936,7 @@ STR_TIMETABLE_RESET_LATENESS :{BLACK}지연 STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}이 차량의 지연 시간값을 초기화하여 정시운행 상태로 바꿉니다. STR_TIMETABLE_AUTOFILL :{BLACK}자동 시간 설정 -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}다음에 운행하면서 자동으로 값을 얻어 시간표를 채웁니다 (머무르는 시간을 유지하려면 CTRL-클릭하십시오) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}다음 운행시 자동으로 값을 얻어 시간표를 완성합니다. (역에 머무르는 시간값을 유지하려면 CTRL+클릭하십시오) STR_TIMETABLE_EXPECTED :{BLACK}예정일 기준 STR_TIMETABLE_SCHEDULED :{BLACK}예정 소요시간 기준 @@ -3884,7 +3976,7 @@ STR_AI_GAME_SCRIPT :{G=f}{BLACK}게 STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}게임 스크립트 기록 체크 STR_ERROR_AI_NO_AI_FOUND :사용할 수 있는 인공지능이 없습니다.{}따라서 이 경쟁사는 아무 것도 하지 못하는 회사입니다.{}'온라인 컨텐츠 다운로드'에서 새로운 인공지능을 다운로드받으세요. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}작동중인 스크립트 중 하나가 충돌했습니다. 인공지능 / 게임 스크립트 디버그 창에서 스크린샷을 찍어 스크립트 제작자에게 보고하십시오. +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}작동 중이던 스크립트 중 하나에서 오류가 발생하여 중단되었습니다. 인공지능 / 게임 스크립트 디버그 창에서 스크린샷을 찍어 스크립트 제작자에게 보고하십시오. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}인공지능/게임 스크립트 디버그창은 오직 서버만 사용 가능합니다 # AI configuration window @@ -3933,13 +4025,15 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :게임 스크 STR_AI_SETTINGS_CLOSE :{BLACK}닫기 STR_AI_SETTINGS_RESET :{BLACK}초기화 STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_START_DELAY :새로운 인공지능이 나타나기 위해 기다려야 하는 날짜 수 (오차는 있을 수 있음): {ORANGE}{STRING}일 +STR_AI_SETTINGS_START_DELAY :이전 인공지능 이후 이 인공지능이 나타나기 위한 날짜수: {ORANGE}약 {STRING}일 # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING}의 Readme STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING}의 변경기록 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING}의 저작권 +STR_TEXTFILE_WRAP_TEXT :{WHITE}자동 줄 바꿈 +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}본문 내용에 자동 줄 바꿈을 설정하여 스크롤하지 않고도 본문의 모든 내용을 볼 수 있게 합니다. STR_TEXTFILE_VIEW_README :{BLACK}Readme 보기 STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}변경기록 STR_TEXTFILE_VIEW_LICENCE :{BLACK}저작권 @@ -4014,7 +4108,7 @@ STR_ERROR_SCREENSHOT_FAILED :{WHITE}스크 # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}알림 -STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING}{G 0 "이" "가"} 보낸 메시지 +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING} 회사가 보낸 메시지 # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}지도 가장자리에서 너무 멉니다! @@ -4037,7 +4131,7 @@ STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}중간 STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}일시 정지 중에는 할 수 없습니다 # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}에 대한 회사의 낮은 성취도로 인해 지역 당국이 이 행위를 거절했습니다! +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} 지역 당국이 이 행동을 거부했습니다. STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} 지역 당국이 이 도시에 다른 공항이 들어서는 것을 거부하였습니다! STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} 지역 당국이 소음 문제로 인해 공항 건설을 거부하였습니다 STR_ERROR_BRIBE_FAILED :{WHITE}당신의 뇌물 수수 행위가 지역 당국에 의해 발각되었습니다! @@ -4050,6 +4144,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}터널 STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}이미 해수면에 도달했습니다 STR_ERROR_TOO_HIGH :{WHITE}너무 높습니다! STR_ERROR_ALREADY_LEVELLED :{WHITE}... 이미 평평합니다. +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}다리가 끝나는 부분의 높이가 너무 높습니다. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}회사 이름을 바꿀 수 없습니다... @@ -4076,16 +4171,16 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... 지 STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... 다른 도시와 너무 가깝습니다! STR_ERROR_TOO_MANY_TOWNS :{WHITE}... 도시가 너무 많습니다! STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... 지도에 더이상 공간이 없습니다! -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}도시가 도로를 짓지 않을 것입니다. [고급설정->경제->도시]에서 도로를 지을 수 있도록 설정을 변경하실 수 있습니다. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}도시가 도로를 짓지 않을 것입니다. [설정→환경→도시]에서 도로를 지을 수 있도록 설정을 변경하실 수 있습니다. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}도로 작업이 진행중입니다 STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}이 도시를 삭제할 수 없습니다...{}도시나 도시 소유의 땅에 역, 정류장, 항구, 공항 또는 차량기지, 차고지, 정박소 등이 존재하면 도시를 삭제할 수 없습니다. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 이 도시의 중심에 동상을 세우기 적합한 장소가 없습니다. # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... 산업시설이 너무 많습니다! -STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}산업시설을 만들 수 없습니다... +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}산업시설을 생성할 수 없습니다... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}여기에 {STRING}{G 0 "을" "를"} 건설할 수 없습니다... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}여기에 이 산업시설을 건설할 수 없습니다... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}여기는 산업시설을 건설할 수 없는 곳입니다... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... 다른 산업시설과 너무 가깝습니다. STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... 도시를 먼저 만드십시오 STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... 한 도시에 하나만 건설 가능합니다! @@ -4100,6 +4195,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... 숲 STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... 만년설 고도 위에만 지을 수 있습니다 STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... 만년설 고도 아래에만 지을 수 있습니다 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}적당한 장소가 없어 '{STRING}'{G 0 "이" "가"} 지어지지 않았습니다. +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}더 나은 지도가 생성되도록 설정 값을 변경해보십시오. + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}여기에 역을 건설할 수 없습니다... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}버스 정류장을 지을 수 없습니다... @@ -4127,15 +4225,15 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 도 # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}역의 일부를 제거할 수 없습니다... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}먼저 철도역을 제거해야 합니다 -STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}버스정류장을 제거할 수 없습니다... +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}버스 정류장을 철거할 수 없습니다... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}트럭 터미널을 제거할 수 없습니다... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}여객 전차역을 제거할 수 없습니다... -STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}화물 전차역을 제거할 수 없습니다... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}여객 전차역을 철거할 수 없습니다... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}화물 전차역을 철거할 수 없습니다... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}정류장을 먼저 제거하십시오. STR_ERROR_THERE_IS_NO_STATION :{WHITE}... 여기에는 정거장이 없습니다. -STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}철도역을 먼저 제거하십시오. -STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}버스 정류장을 먼저 제거하십시오. +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}철도역을 먼저 철거하십시오. +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}버스 정류장을 먼저 철거하십시오. STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}트럭 적하장을 먼저 제거하십시오. STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}여객 전차역을 먼저 제거하십시오. STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}화물 전차역을 먼저 제거하십시오. @@ -4189,27 +4287,27 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(자금 제한) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}불가능한 트랙 조합입니다 STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}신호기를 먼저 제거하십시오 -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}알맞지 않은 철로입니다. -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}철로를 먼저 제거하십시오 +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}알맞지 않은 선로입니다. +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}선로를 먼저 제거하십시오. STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}도로가 일방통행이거나 막혔습니다 STR_ERROR_CROSSING_DISALLOWED :{WHITE}이 철도 타입에서는 건널목을 만들 수 없습니다. STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}여기에 신호기를 건설할 수 없습니다... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}여기에 철로를 건설할 수 없습니다... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}이곳의 철로를 제거할 수 없습니다... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}여기에 선로를 건설할 수 없습니다... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}이 선로를 철거할 수 없습니다... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}이곳의 신호기를 제거할 수 없습니다... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}이곳의 신호기를 변환할 수 없습니다... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 철로가 없습니다. +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 선로가 없습니다. STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... 신호기가 없습니다. -STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}이곳의 철로 형식을 바꿀 수 없습니다... +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}이 선로의 형식을 바꿀 수 없습니다... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}도로를 먼저 제거하십시오 -STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... 일방통행 도로는 교차로를 만들 수 없습니다 +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... 일방통행로에는 교차로를 만들 수 없습니다. STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}도로를 건설할 수 없습니다... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}여기에 전찻길을 건설할 수 없습니다... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}도로를 제거할 수 없습니다... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}이곳의 전찻길을 제거할 수 없습니다... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}이 전찻길을 철거할 수 없습니다... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... 도로가 없습니다. STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... 전찻길이 없습니다. @@ -4236,6 +4334,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}다리 STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}같은 위치에서 시작하고 끝낼 수 없습니다 STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}다리는 같은 높이를 연결해야 합니다 STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}그 지형은 다리를 건설하기에 너무 낮습니다 +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}이 지형에 다리를 설치하기에는 고도가 너무 높습니다. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}시작과 끝은 한 줄 위에 있어야 합니다 STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... 다리의 양 끝은 모두 땅이어야합니다. STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 다리가 너무 깁니다! @@ -4262,28 +4361,29 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... 이 STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}그룹을 만들 수 없습니다... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}이 그룹을 지울 수 없습니다... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}그룹의 이름을 바꿀 수 없습니다. +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}상위 그룹으로 설정할 수 없습니다... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}이 그룹의 모든 차량을 제거할 수 없습니다. STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}이 그룹에 차량을 추가할 수 없습니다... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}이 그룹에 공유된 차량을 추가할 수 없습니다... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}중간에 열차가 있습니다 -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}중간에 자동차가 있습니다. +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}중간에 차량이 있습니다. STR_ERROR_SHIP_IN_THE_WAY :{WHITE}중간에 선박이 있습니다 STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}중간에 항공기가 있습니다 STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}열차를 개조할 수 없습니다... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}자동차를 개조할 수 없습니다... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}차량을 개조할 수 없습니다... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}선박을 개조할 수 없습니다... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}항공기를 개조할 수 없습니다... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}열차 이름을 지정할 수 없습니다... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}자동차의 이름을 지정할 수 없습니다... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}차량의 이름을 지정할 수 없습니다... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}선박의 이름을 바꿀 수 없습니다... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}항공기의 이름을 지정할 수 없습니다... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}열차를 운행/정지시킬 수 없습니다... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}자동차를 운행/정지시킬 수 없습니다... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}차량을 운행/정지시킬 수 없습니다... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}선박을 운행/중지시킬 수 없습니다... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}항공기를 운행/중지시킬 수 없습니다... @@ -4293,17 +4393,17 @@ STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}선박 STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}항공기를 격납고로 보낼 수 없습니다... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}열차를 구입할 수 없습니다... -STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}자동차를 구입할 수 없습니다... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}차량을 구입할 수 없습니다... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}선박을 구입할 수 없습니다... -STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}항공기를 구입 할 수 없습니다... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}항공기를 구입할 수 없습니다... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}열차의 차량 이름을 다시 지정할 수 없습니다... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}자동차의 차량 이름을 다시 지정할 수 없습니다... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}차종명을 다시 지정할 수 없습니다... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}선박의 차량 이름을 다시 지정할 수 없습니다... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}항공기의 차량 이름을 다시 지정할 수 없습니다... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}열차를 팔 수 없습니다... -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}자동차를 팔 수 없습니다... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}차량을 팔 수 없습니다... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}선박을 팔 수 없습니다... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}항공기를 팔 수 없습니다... @@ -4313,7 +4413,7 @@ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}이 선 STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}이 항공기는 사용할 수 없는 상태입니다. STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}게임에 차량이 너무 많습니다! -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}점검 기간 간격을 바꿀 수 없습니다... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}정비 간격 설정을 바꿀 수 없습니다... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... 차량이 파괴되었습니다. @@ -4327,7 +4427,7 @@ STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}너무 STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}열차를 회차시킬 수 없습니다... STR_ERROR_TRAIN_START_NO_POWER :동력차가 없습니다 -STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}자동차를 U턴시킬 수 없습니다... +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}차량을 U턴시킬 수 없습니다... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}항공기가 운항중입니다 @@ -4367,11 +4467,11 @@ STR_DESKTOP_SHORTCUT_COMMENT :트랜스포트 # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다. -STR_BASEGRAPHICS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 그래픽입니다. +STR_BASEGRAPHICS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다. STR_BASESOUNDS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다. -STR_BASESOUNDS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 효과음입니다. +STR_BASESOUNDS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다. STR_BASESOUNDS_NONE_DESCRIPTION :아무런 효과음도 없는 효과음 팩입니다. -STR_BASEMUSIC_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 음악입니다. +STR_BASEMUSIC_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다. STR_BASEMUSIC_NONE_DESCRIPTION :실제 음악이 없는 음악 목록입니다. ##id 0x2000 @@ -4447,7 +4547,7 @@ STR_INDUSTRY_NAME_TOY_FACTORY :{G=m}장난감 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=f}플라스틱 분수 STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=m}탄산음료 공장 STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}거품 제조 공장 -STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=m}태피 채취장 +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=m}토피 채취장 STR_INDUSTRY_NAME_SUGAR_MINE :{G=m}설탕 광산 ############ WARNING, using range 0x6000 for strings that are stored in the savegame @@ -4456,7 +4556,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=m}설탕 광 STR_SV_EMPTY : STR_SV_UNNAMED :{G=m}이름 없음 STR_SV_TRAIN_NAME :열차 {COMMA} -STR_SV_ROAD_VEHICLE_NAME :자동차 {COMMA} +STR_SV_ROAD_VEHICLE_NAME :차량 {COMMA} STR_SV_SHIP_NAME :선박 {COMMA} STR_SV_AIRCRAFT_NAME :항공기 {COMMA} @@ -4496,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (디젤) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (증기) @@ -4538,7 +4638,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :과일 수송 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :고무 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :설탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :솜사탕 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :태피 수송차량 +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :토피 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :거품 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :콜라 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :사탕 수송차량 @@ -4568,7 +4668,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :과일 수송 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :고무 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :설탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :솜사탕 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :태피 수송차량 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :토피 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :거품 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :콜라 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :사탕 수송차량 @@ -4600,7 +4700,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :과일 수송 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :고무 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :설탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :솜사탕 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :태피 수송차량 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :토피 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :거품 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :콜라 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :사탕 수송차량 @@ -4611,7 +4711,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :플라스틱 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal 버스 STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard 버스 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster 버스 -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII 수퍼버스 +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII 슈퍼버스 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI 버스 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII 버스 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII 버스 @@ -4675,9 +4775,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow 콜라 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover 솜사탕 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught 솜사탕 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow 솜사탕 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover 태피 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught 태피 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow 태피 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover 토피 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught 토피 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow 토피 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover 장난감 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught 장난감 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow 장난감 수송차 @@ -4705,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake 여객선 STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate 화물선 STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell 화물선 -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover 화물선 +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover 화물선 STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut 화물선 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4799,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (숨김) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/latin.txt b/src/lang/latin.txt new file mode 100644 index 0000000000..99d88237f5 --- /dev/null +++ b/src/lang/latin.txt @@ -0,0 +1,5289 @@ +##name Latin +##ownname Latina +##isocode la_VA +##plural 0 +##textdir ltr +##digitsep {NBSP} +##digitsepcur {NBSP} +##decimalsep . +##winlangid 0x0476 +##grflangid 0x66 +##gender m f n mp fp np +##case gen acc abl dat + + +# $Id$ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + + +##id 0x0000 +STR_NULL : +STR_EMPTY : +STR_UNDEFINED :(series irrita) +STR_JUST_NOTHING :Nihil + +# Cargo related strings +# Plural cargo name +STR_CARGO_PLURAL_NOTHING : +STR_CARGO_PLURAL_PASSENGERS :{G=mp}Vectores +STR_CARGO_PLURAL_PASSENGERS.gen :{G=mp}vectorum +STR_CARGO_PLURAL_PASSENGERS.acc :{G=mp}Vectores +STR_CARGO_PLURAL_PASSENGERS.dat :{G=mp}Vectoribus +STR_CARGO_PLURAL_COAL :{G=m}Carbo +STR_CARGO_PLURAL_COAL.gen :{G=m}carbonis +STR_CARGO_PLURAL_COAL.acc :{G=m}Carbonem +STR_CARGO_PLURAL_COAL.dat :{G=m}Carboni +STR_CARGO_PLURAL_MAIL :{G=fp}Epistulae +STR_CARGO_PLURAL_MAIL.gen :{G=fp}epistularum +STR_CARGO_PLURAL_MAIL.acc :{G=fp}Epistulas +STR_CARGO_PLURAL_MAIL.dat :{G=fp}Epistulis +STR_CARGO_PLURAL_OIL :{G=n}Petroleum +STR_CARGO_PLURAL_OIL.gen :{G=n}petrolei +STR_CARGO_PLURAL_OIL.acc :{G=n}Petroleum +STR_CARGO_PLURAL_OIL.dat :{G=n}Petroleo +STR_CARGO_PLURAL_LIVESTOCK :{G=np}Pecora +STR_CARGO_PLURAL_LIVESTOCK.gen :{G=np}pecorum +STR_CARGO_PLURAL_LIVESTOCK.acc :{G=np}Pecora +STR_CARGO_PLURAL_LIVESTOCK.dat :{G=np}Pecoribus +STR_CARGO_PLURAL_GOODS :{G=fp}Merces +STR_CARGO_PLURAL_GOODS.gen :{G=fp}mercium +STR_CARGO_PLURAL_GOODS.acc :{G=fp}Merces +STR_CARGO_PLURAL_GOODS.dat :{G=fp}Mercibus +STR_CARGO_PLURAL_GRAIN :{G=n}Frumentum +STR_CARGO_PLURAL_GRAIN.gen :{G=n}frumenti +STR_CARGO_PLURAL_GRAIN.acc :{G=n}Frumentum +STR_CARGO_PLURAL_GRAIN.dat :{G=n}Frumento +STR_CARGO_PLURAL_WOOD :{G=n}Lignum +STR_CARGO_PLURAL_WOOD.gen :{G=n}ligni +STR_CARGO_PLURAL_WOOD.acc :{G=n}Lignum +STR_CARGO_PLURAL_WOOD.dat :{G=n}Ligno +STR_CARGO_PLURAL_IRON_ORE :{G=n}Ferrum +STR_CARGO_PLURAL_IRON_ORE.gen :{G=n}ferri +STR_CARGO_PLURAL_IRON_ORE.acc :{G=n}Ferrum +STR_CARGO_PLURAL_IRON_ORE.dat :{G=n}Ferro +STR_CARGO_PLURAL_STEEL :{G=m}Chalybs +STR_CARGO_PLURAL_STEEL.gen :{G=m}chalybis +STR_CARGO_PLURAL_STEEL.acc :{G=m}Chalybem +STR_CARGO_PLURAL_STEEL.dat :{G=m}Chalybi +STR_CARGO_PLURAL_VALUABLES :{G=fp}Res Pretiosa +STR_CARGO_PLURAL_VALUABLES.gen :{G=fp}rerum pretiosarum +STR_CARGO_PLURAL_VALUABLES.acc :{G=fp}Res Pretiosas +STR_CARGO_PLURAL_VALUABLES.dat :{G=fp}Rebus Pretiosis +STR_CARGO_PLURAL_COPPER_ORE :{G=n}Aes +STR_CARGO_PLURAL_COPPER_ORE.gen :{G=n}aeris +STR_CARGO_PLURAL_COPPER_ORE.acc :{G=n}Aes +STR_CARGO_PLURAL_COPPER_ORE.dat :{G=n}Aeri +STR_CARGO_PLURAL_MAIZE :{G=n}Maizium +STR_CARGO_PLURAL_MAIZE.gen :{G=n}maizii +STR_CARGO_PLURAL_MAIZE.acc :{G=n}Maizium +STR_CARGO_PLURAL_MAIZE.dat :{G=n}Maizio +STR_CARGO_PLURAL_FRUIT :{G=mp}Fructus +STR_CARGO_PLURAL_FRUIT.gen :{G=mp}fructuum +STR_CARGO_PLURAL_FRUIT.acc :{G=mp}Fructus +STR_CARGO_PLURAL_FRUIT.dat :{G=mp}Fructibus +STR_CARGO_PLURAL_DIAMONDS :{G=mp}Adamantes +STR_CARGO_PLURAL_DIAMONDS.gen :{G=mp}adamantum +STR_CARGO_PLURAL_DIAMONDS.acc :{G=mp}Adamantes +STR_CARGO_PLURAL_DIAMONDS.dat :{G=mp}Adamantibus +STR_CARGO_PLURAL_FOOD :{G=m}Cibus +STR_CARGO_PLURAL_FOOD.gen :{G=m}cibi +STR_CARGO_PLURAL_FOOD.acc :{G=m}Cibum +STR_CARGO_PLURAL_FOOD.dat :{G=m}Cibo +STR_CARGO_PLURAL_PAPER :{G=f}Charta +STR_CARGO_PLURAL_PAPER.gen :{G=f}chartae +STR_CARGO_PLURAL_PAPER.acc :{G=f}Chartam +STR_CARGO_PLURAL_PAPER.dat :{G=f}Chartae +STR_CARGO_PLURAL_GOLD :{G=n}Aurum +STR_CARGO_PLURAL_GOLD.gen :{G=n}auri +STR_CARGO_PLURAL_GOLD.acc :{G=n}Aurum +STR_CARGO_PLURAL_GOLD.dat :{G=n}Auro +STR_CARGO_PLURAL_WATER :{G=f}Aqua +STR_CARGO_PLURAL_WATER.gen :{G=f}aquae +STR_CARGO_PLURAL_WATER.acc :{G=f}Aquam +STR_CARGO_PLURAL_WATER.dat :{G=f}Aquae +STR_CARGO_PLURAL_WHEAT :{G=n}Triticum +STR_CARGO_PLURAL_WHEAT.gen :{G=n}tritici +STR_CARGO_PLURAL_WHEAT.acc :{G=n}Triticum +STR_CARGO_PLURAL_WHEAT.dat :{G=n}Tritico +STR_CARGO_PLURAL_RUBBER :{G=f}Gummis +STR_CARGO_PLURAL_RUBBER.gen :{G=f}gummis +STR_CARGO_PLURAL_RUBBER.acc :{G=f}Gummem +STR_CARGO_PLURAL_RUBBER.dat :{G=f}Gummi +STR_CARGO_PLURAL_SUGAR :{G=n}Saccharum +STR_CARGO_PLURAL_SUGAR.gen :{G=n}sacchari +STR_CARGO_PLURAL_SUGAR.acc :{G=n}Saccharum +STR_CARGO_PLURAL_SUGAR.dat :{G=n}Saccharo +STR_CARGO_PLURAL_TOYS :{G=np}Ludicra +STR_CARGO_PLURAL_TOYS.gen :{G=np}ludicrorum +STR_CARGO_PLURAL_TOYS.acc :{G=np}Ludicra +STR_CARGO_PLURAL_TOYS.dat :{G=np}Ludicris +STR_CARGO_PLURAL_CANDY :{G=np}Bellaria +STR_CARGO_PLURAL_CANDY.gen :{G=np}bellariorum +STR_CARGO_PLURAL_CANDY.acc :{G=np}Bellaria +STR_CARGO_PLURAL_CANDY.dat :{G=np}Bellariis +STR_CARGO_PLURAL_COLA :{G=f}Cola +STR_CARGO_PLURAL_COLA.gen :{G=f}colae +STR_CARGO_PLURAL_COLA.acc :{G=f}Colam +STR_CARGO_PLURAL_COLA.dat :{G=f}Colae +STR_CARGO_PLURAL_COTTON_CANDY :{G=n}Sacchari Xylinum +STR_CARGO_PLURAL_COTTON_CANDY.gen :{G=n}sacchari xylini +STR_CARGO_PLURAL_COTTON_CANDY.acc :{G=n}Sacchari Xylinum +STR_CARGO_PLURAL_COTTON_CANDY.dat :{G=n}Sacchari Xylino +STR_CARGO_PLURAL_BUBBLES :{G=fp}Bullae +STR_CARGO_PLURAL_BUBBLES.gen :{G=fp}bullarum +STR_CARGO_PLURAL_BUBBLES.acc :{G=fp}Bullas +STR_CARGO_PLURAL_BUBBLES.dat :{G=fp}Bullis +STR_CARGO_PLURAL_TOFFEE :{G=n}Saccharum Tostum +STR_CARGO_PLURAL_TOFFEE.gen :{G=n}sacchari tosti +STR_CARGO_PLURAL_TOFFEE.acc :{G=n}Saccharum Tostum +STR_CARGO_PLURAL_TOFFEE.dat :{G=n}Saccharo Tosto +STR_CARGO_PLURAL_BATTERIES :{G=fp}Pilae Electricae +STR_CARGO_PLURAL_BATTERIES.gen :{G=fp}pilarum electricarum +STR_CARGO_PLURAL_BATTERIES.acc :{G=fp}Pilas Electricas +STR_CARGO_PLURAL_BATTERIES.dat :{G=fp}Pilis Electricis +STR_CARGO_PLURAL_PLASTIC :{G=f}Plastica +STR_CARGO_PLURAL_PLASTIC.gen :{G=f}plasticae +STR_CARGO_PLURAL_PLASTIC.acc :{G=f}Plasticam +STR_CARGO_PLURAL_PLASTIC.dat :{G=f}Plasticae +STR_CARGO_PLURAL_FIZZY_DRINKS :{G=fp}Potiones Carbonatae +STR_CARGO_PLURAL_FIZZY_DRINKS.gen :{G=fp}potionum carbonatarum +STR_CARGO_PLURAL_FIZZY_DRINKS.acc :{G=fp}Potiones Carbonatas +STR_CARGO_PLURAL_FIZZY_DRINKS.dat :{G=fp}Potionibus Carbonatis + +# Singular cargo name +STR_CARGO_SINGULAR_NOTHING : +STR_CARGO_SINGULAR_PASSENGER :{G=mp}Vectores +STR_CARGO_SINGULAR_PASSENGER.gen :{G=mp}vectorum +STR_CARGO_SINGULAR_PASSENGER.acc :{G=mp}Vectores +STR_CARGO_SINGULAR_PASSENGER.dat :{G=mp}Vectoribus +STR_CARGO_SINGULAR_COAL :{G=m}Carbo +STR_CARGO_SINGULAR_COAL.gen :{G=m}carbonis +STR_CARGO_SINGULAR_COAL.acc :{G=m}Carbonem +STR_CARGO_SINGULAR_COAL.dat :{G=m}Carboni +STR_CARGO_SINGULAR_MAIL :{G=fp}Epistulae +STR_CARGO_SINGULAR_MAIL.gen :{G=fp}epistularum +STR_CARGO_SINGULAR_MAIL.acc :{G=fp}Epistulas +STR_CARGO_SINGULAR_MAIL.dat :{G=fp}Epistulis +STR_CARGO_SINGULAR_OIL :{G=n}Petroleum +STR_CARGO_SINGULAR_OIL.gen :{G=n}petrolei +STR_CARGO_SINGULAR_OIL.acc :{G=n}Petroleum +STR_CARGO_SINGULAR_OIL.dat :{G=n}Petroleo +STR_CARGO_SINGULAR_LIVESTOCK :{G=np}Pecora +STR_CARGO_SINGULAR_LIVESTOCK.gen :{G=np}pecorum +STR_CARGO_SINGULAR_LIVESTOCK.acc :{G=np}Pecora +STR_CARGO_SINGULAR_LIVESTOCK.dat :{G=np}Pecoribus +STR_CARGO_SINGULAR_GOODS :{G=fp}Merces +STR_CARGO_SINGULAR_GOODS.gen :{G=fp}mercium +STR_CARGO_SINGULAR_GOODS.acc :{G=fp}Merces +STR_CARGO_SINGULAR_GOODS.dat :{G=fp}Mercibus +STR_CARGO_SINGULAR_GRAIN :{G=n}Frumentum +STR_CARGO_SINGULAR_GRAIN.gen :{G=n}frumenti +STR_CARGO_SINGULAR_GRAIN.acc :{G=n}Frumentum +STR_CARGO_SINGULAR_GRAIN.dat :{G=n}Frumento +STR_CARGO_SINGULAR_WOOD :{G=n}Lignum +STR_CARGO_SINGULAR_WOOD.gen :{G=n}ligni +STR_CARGO_SINGULAR_WOOD.acc :{G=n}Lignum +STR_CARGO_SINGULAR_WOOD.dat :{G=n}Ligno +STR_CARGO_SINGULAR_IRON_ORE :{G=n}Ferrum +STR_CARGO_SINGULAR_IRON_ORE.gen :{G=n}ferri +STR_CARGO_SINGULAR_IRON_ORE.acc :{G=n}Ferrum +STR_CARGO_SINGULAR_IRON_ORE.dat :{G=n}Ferro +STR_CARGO_SINGULAR_STEEL :{G=m}Chalybs +STR_CARGO_SINGULAR_STEEL.gen :{G=m}chalybis +STR_CARGO_SINGULAR_STEEL.acc :{G=m}Chalybem +STR_CARGO_SINGULAR_STEEL.dat :{G=m}Chalybi +STR_CARGO_SINGULAR_VALUABLES :{G=fp}Res Pretiosa +STR_CARGO_SINGULAR_VALUABLES.gen :{G=fp}rerum pretiosarum +STR_CARGO_SINGULAR_VALUABLES.acc :{G=fp}Res Pretiosas +STR_CARGO_SINGULAR_VALUABLES.dat :{G=fp}Rebus Pretiosis +STR_CARGO_SINGULAR_COPPER_ORE :{G=n}Aes +STR_CARGO_SINGULAR_COPPER_ORE.gen :{G=n}aeris +STR_CARGO_SINGULAR_COPPER_ORE.acc :{G=n}Aes +STR_CARGO_SINGULAR_COPPER_ORE.dat :{G=n}Aeri +STR_CARGO_SINGULAR_MAIZE :{G=n}Maizium +STR_CARGO_SINGULAR_MAIZE.gen :{G=n}maizii +STR_CARGO_SINGULAR_MAIZE.acc :{G=n}Maizium +STR_CARGO_SINGULAR_MAIZE.dat :{G=n}Maizio +STR_CARGO_SINGULAR_FRUIT :{G=mp}Fructus +STR_CARGO_SINGULAR_FRUIT.gen :{G=mp}fructuum +STR_CARGO_SINGULAR_FRUIT.acc :{G=mp}Fructus +STR_CARGO_SINGULAR_FRUIT.dat :{G=mp}Fructibus +STR_CARGO_SINGULAR_DIAMOND :{G=mp}Adamantes +STR_CARGO_SINGULAR_DIAMOND.gen :{G=mp}adamantum +STR_CARGO_SINGULAR_DIAMOND.acc :{G=mp}Adamantes +STR_CARGO_SINGULAR_DIAMOND.dat :{G=mp}Adamantibus +STR_CARGO_SINGULAR_FOOD :{G=m}Cibus +STR_CARGO_SINGULAR_FOOD.gen :{G=m}cibi +STR_CARGO_SINGULAR_FOOD.acc :{G=m}Cibum +STR_CARGO_SINGULAR_FOOD.dat :{G=m}Cibo +STR_CARGO_SINGULAR_PAPER :{G=f}Charta +STR_CARGO_SINGULAR_PAPER.gen :{G=f}chartae +STR_CARGO_SINGULAR_PAPER.acc :{G=f}Chartam +STR_CARGO_SINGULAR_PAPER.dat :{G=f}Chartae +STR_CARGO_SINGULAR_GOLD :{G=n}Aurum +STR_CARGO_SINGULAR_GOLD.gen :{G=n}auri +STR_CARGO_SINGULAR_GOLD.acc :{G=n}Aurum +STR_CARGO_SINGULAR_GOLD.dat :{G=n}Auro +STR_CARGO_SINGULAR_WATER :{G=f}Aqua +STR_CARGO_SINGULAR_WATER.gen :{G=f}aquae +STR_CARGO_SINGULAR_WATER.acc :{G=f}Aquam +STR_CARGO_SINGULAR_WATER.dat :{G=f}Aquae +STR_CARGO_SINGULAR_WHEAT :{G=n}Triticum +STR_CARGO_SINGULAR_WHEAT.gen :{G=n}tritici +STR_CARGO_SINGULAR_WHEAT.acc :{G=n}Triticum +STR_CARGO_SINGULAR_WHEAT.dat :{G=n}Tritico +STR_CARGO_SINGULAR_RUBBER :{G=f}Gummis +STR_CARGO_SINGULAR_RUBBER.gen :{G=f}gummis +STR_CARGO_SINGULAR_RUBBER.acc :{G=f}Gummem +STR_CARGO_SINGULAR_RUBBER.dat :{G=f}Gummi +STR_CARGO_SINGULAR_SUGAR :{G=n}Saccharum +STR_CARGO_SINGULAR_SUGAR.gen :{G=n}sacchari +STR_CARGO_SINGULAR_SUGAR.acc :{G=n}Saccharum +STR_CARGO_SINGULAR_SUGAR.dat :{G=n}Saccharo +STR_CARGO_SINGULAR_TOY :{G=np}Ludicra +STR_CARGO_SINGULAR_TOY.gen :{G=np}ludicrorum +STR_CARGO_SINGULAR_TOY.acc :{G=np}Ludicra +STR_CARGO_SINGULAR_TOY.dat :{G=np}Ludicris +STR_CARGO_SINGULAR_CANDY :{G=np}Bellaria +STR_CARGO_SINGULAR_CANDY.gen :{G=np}bellariorum +STR_CARGO_SINGULAR_CANDY.acc :{G=np}Bellaria +STR_CARGO_SINGULAR_CANDY.dat :{G=np}Bellariis +STR_CARGO_SINGULAR_COLA :{G=f}Cola +STR_CARGO_SINGULAR_COLA.gen :{G=f}colae +STR_CARGO_SINGULAR_COLA.acc :{G=f}Colam +STR_CARGO_SINGULAR_COLA.dat :{G=f}Colae +STR_CARGO_SINGULAR_COTTON_CANDY :{G=n}Sacchari Xylinum +STR_CARGO_SINGULAR_COTTON_CANDY.gen :{G=n}sacchari xylini +STR_CARGO_SINGULAR_COTTON_CANDY.acc :{G=n}Sacchari Xylinum +STR_CARGO_SINGULAR_COTTON_CANDY.dat :{G=n}Sacchari Xylino +STR_CARGO_SINGULAR_BUBBLE :{G=fp}Bullae +STR_CARGO_SINGULAR_BUBBLE.gen :{G=fp}bullarum +STR_CARGO_SINGULAR_BUBBLE.acc :{G=fp}Bullas +STR_CARGO_SINGULAR_BUBBLE.dat :{G=fp}Bullis +STR_CARGO_SINGULAR_TOFFEE :{G=n}Saccharum Tostum +STR_CARGO_SINGULAR_TOFFEE.gen :{G=n}sacchari tosti +STR_CARGO_SINGULAR_TOFFEE.acc :{G=n}Saccharum Tostum +STR_CARGO_SINGULAR_TOFFEE.dat :{G=n}Saccharo Tosto +STR_CARGO_SINGULAR_BATTERY :{G=fp}Pilae Electricae +STR_CARGO_SINGULAR_BATTERY.gen :{G=fp}pilarum electricarum +STR_CARGO_SINGULAR_BATTERY.acc :{G=fp}Pilas Electricas +STR_CARGO_SINGULAR_BATTERY.dat :{G=fp}Pilis Electricis +STR_CARGO_SINGULAR_PLASTIC :{G=f}Plastica +STR_CARGO_SINGULAR_PLASTIC.gen :{G=f}plasticae +STR_CARGO_SINGULAR_PLASTIC.acc :{G=f}Plasticam +STR_CARGO_SINGULAR_PLASTIC.dat :{G=f}Plasticae +STR_CARGO_SINGULAR_FIZZY_DRINK :{G=fp}Potiones Carbonatae +STR_CARGO_SINGULAR_FIZZY_DRINK.gen :{G=fp}potionum carbonatarum +STR_CARGO_SINGULAR_FIZZY_DRINK.acc :{G=fp}Potiones Carbonatas +STR_CARGO_SINGULAR_FIZZY_DRINK.dat :{G=fp}Potionibus Carbonatis + +# Quantity of cargo +STR_QUANTITY_NOTHING : +STR_QUANTITY_PASSENGERS :{G=mp}{COMMA}{NBSP}vector{P "" es} +STR_QUANTITY_COAL :{WEIGHT_LONG} carbonis +STR_QUANTITY_MAIL :{G=mp}{COMMA}{NBSP}sacc{P us i} epistularum +STR_QUANTITY_OIL :{VOLUME_LONG} petrolei +STR_QUANTITY_LIVESTOCK :{G=np}{COMMA}{NBSP}pec{P us ora} +STR_QUANTITY_GOODS :{G=fp}{COMMA}{NBSP}capsa{P "" e} mercium +STR_QUANTITY_GRAIN :{WEIGHT_LONG} frumenti +STR_QUANTITY_WOOD :{WEIGHT_LONG} ligni +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} ferri +STR_QUANTITY_STEEL :{WEIGHT_LONG} chalybis +STR_QUANTITY_VALUABLES :{G=mp}{COMMA}{NBSP}sacc{P us i} rerum pretiosarum +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} aeris +STR_QUANTITY_MAIZE :{WEIGHT_LONG} maizii +STR_QUANTITY_FRUIT :{WEIGHT_LONG} fructuum +STR_QUANTITY_DIAMONDS :{G=mp}{COMMA}{NBSP}sacc{P us i} adamantum +STR_QUANTITY_FOOD :{WEIGHT_LONG} cibi +STR_QUANTITY_PAPER :{WEIGHT_LONG} chartae +STR_QUANTITY_GOLD :{G=mp}{COMMA}{NBSP}sacc{P us i} auri +STR_QUANTITY_WATER :{VOLUME_LONG} aquae +STR_QUANTITY_WHEAT :{WEIGHT_LONG} tritici +STR_QUANTITY_RUBBER :{VOLUME_LONG} gummis +STR_QUANTITY_SUGAR :{WEIGHT_LONG} sacchari +STR_QUANTITY_TOYS :{G=np}{COMMA}{NBSP}ludicr{P um a} +STR_QUANTITY_SWEETS :{G=mp}{COMMA}{NBSP}sacc{P us i} bellarii +STR_QUANTITY_COLA :{VOLUME_LONG} colae +STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sacchari xylini +STR_QUANTITY_BUBBLES :{G=fp}{COMMA}{NBSP}bulla{P "" e} +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} sacchari tosti +STR_QUANTITY_BATTERIES :{G=fp}{COMMA}{NBSP}pila{P "" e} electrica{P "" e} +STR_QUANTITY_PLASTIC :{VOLUME_LONG} plasticae +STR_QUANTITY_FIZZY_DRINKS :{G=fp}{COMMA}{NBSP}potio{P "" nes} carbonata{P "" e} +STR_QUANTITY_N_A :N/A + +# Two letter abbreviation of cargo name +STR_ABBREV_NOTHING : +STR_ABBREV_PASSENGERS :{TINY_FONT}VC +STR_ABBREV_COAL :{TINY_FONT}CA +STR_ABBREV_MAIL :{TINY_FONT}EP +STR_ABBREV_OIL :{TINY_FONT}OL +STR_ABBREV_LIVESTOCK :{TINY_FONT}PC +STR_ABBREV_GOODS :{TINY_FONT}ME +STR_ABBREV_GRAIN :{TINY_FONT}FR +STR_ABBREV_WOOD :{TINY_FONT}LI +STR_ABBREV_IRON_ORE :{TINY_FONT}FE +STR_ABBREV_STEEL :{TINY_FONT}CH +STR_ABBREV_VALUABLES :{TINY_FONT}RP +STR_ABBREV_COPPER_ORE :{TINY_FONT}AE +STR_ABBREV_MAIZE :{TINY_FONT}MZ +STR_ABBREV_FRUIT :{TINY_FONT}FT +STR_ABBREV_DIAMONDS :{TINY_FONT}AD +STR_ABBREV_FOOD :{TINY_FONT}AL +STR_ABBREV_PAPER :{TINY_FONT}CA +STR_ABBREV_GOLD :{TINY_FONT}AU +STR_ABBREV_WATER :{TINY_FONT}AQ +STR_ABBREV_WHEAT :{TINY_FONT}TR +STR_ABBREV_RUBBER :{TINY_FONT}GU +STR_ABBREV_SUGAR :{TINY_FONT}SC +STR_ABBREV_TOYS :{TINY_FONT}LD +STR_ABBREV_SWEETS :{TINY_FONT}BL +STR_ABBREV_COLA :{TINY_FONT}CL +STR_ABBREV_CANDYFLOSS :{TINY_FONT}SX +STR_ABBREV_BUBBLES :{TINY_FONT}BU +STR_ABBREV_TOFFEE :{TINY_FONT}ST +STR_ABBREV_BATTERIES :{TINY_FONT}PE +STR_ABBREV_PLASTIC :{TINY_FONT}PL +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}PC +STR_ABBREV_NONE :{TINY_FONT}NO +STR_ABBREV_ALL :{TINY_FONT}OMN + +# 'Mode' of transport for cargoes +STR_PASSENGERS :{G=mp}{COMMA}{NBSP}vector{P "" es} +STR_BAGS :{G=mp}{COMMA}{NBSP}sacc{P us i} +STR_TONS :{G=fp}{COMMA}{NBSP}tonna{P "" e} +STR_LITERS :{G=np}{COMMA}{NBSP}litr{P um a} +STR_ITEMS :{G=fp}{COMMA}{NBSP}res +STR_CRATES :{G=fp}{COMMA}{NBSP}caps{P "" e} + +# Colours, do not shuffle +STR_COLOUR_DARK_BLUE :Caeruleus Berolinensis +STR_COLOUR_PALE_GREEN :Viridis Pallidus +STR_COLOUR_PINK :Roseus +STR_COLOUR_YELLOW :Gilvus +STR_COLOUR_RED :Ruber +STR_COLOUR_LIGHT_BLUE :Caeruleus Candidus +STR_COLOUR_GREEN :Viridis +STR_COLOUR_DARK_GREEN :Viridis Obscurus +STR_COLOUR_BLUE :Caeruleus +STR_COLOUR_CREAM :Ravus +STR_COLOUR_MAUVE :Malva +STR_COLOUR_PURPLE :Purpureus +STR_COLOUR_ORANGE :Fulvus +STR_COLOUR_BROWN :Aquilus +STR_COLOUR_GREY :Canus +STR_COLOUR_WHITE :Albus + +# Units used in OpenTTD +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s + +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW + +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg + +STR_UNITS_WEIGHT_LONG_IMPERIAL :{G=fp}{COMMA}{NBSP}tona{P "" e} +STR_UNITS_WEIGHT_LONG_METRIC :{G=fp}{COMMA}{NBSP}tonna{P "" e} +STR_UNITS_WEIGHT_LONG_SI :{G=np}{COMMA}{NBSP}chiliogramma{P "" ta} + +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ + +STR_UNITS_VOLUME_LONG_IMPERIAL :{G=mp}{COMMA}{NBSP}congi{P us i} +STR_UNITS_VOLUME_LONG_METRIC :{G=np}{COMMA}{NBSP}litr{P um a} +STR_UNITS_VOLUME_LONG_SI :{G=np}{COMMA}{NBSP}m³ + +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN + +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}pedes +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m + +# Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Series colans: +STR_LIST_FILTER_OSKTITLE :{BLACK}Inscribe seriem colantem +STR_LIST_FILTER_TOOLTIP :{BLACK}Inscribe verbum ad indicem colandam + +STR_TOOLTIP_GROUP_ORDER :{BLACK}Eligere ordinem gregum +STR_TOOLTIP_SORT_ORDER :{BLACK}Eligere ordinem separandi (descendens/ascendens) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Eligere criteria separandi +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Eligere criteria colandi +STR_BUTTON_SORT_BY :{BLACK}Ordinare +STR_BUTTON_LOCATION :{BLACK}Locus +STR_BUTTON_RENAME :{BLACK}Renominare + +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Claudere fenestram +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulus fenestrae - hunc trahe ut fenestra moveatur +STR_TOOLTIP_SHADE :{BLACK}Subvolvere fenestram - titulum modo monstrare +STR_TOOLTIP_DEBUG :{BLACK}Monstrare indicia NewGRF emendandi +STR_TOOLTIP_DEFSIZE :{BLACK}Refingere fenestram ad magnitudinem solitam. Ctrl+Preme ut magnitudo praesens solito servetur +STR_TOOLTIP_STICKY :{BLACK}Signare hanc fenestram 'glutinosam' esse; non clausum iri clave 'Omnes Fenestras Claudere' pressa. Ctrl+Preme ut modus praesens solito servetur +STR_TOOLTIP_RESIZE :{BLACK}Preme traheque ut fenestra refingatur +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intermutare magnitudinem fenestrae magnae parvaeve +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Ansa vagationis - indicem sursum deorsumve movet +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Ansa vagationis - indicem ad sinistram dextramve movet +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Destruere aedificia etc. quae in terrae quadro sunt. Ctrl diagonaliter eligit. Shift mutat inter detructionem et aestimationem monstrandam + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Monstrare celata +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Monstrare celata +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Monstrare celatas +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Monstrare celata + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Electa, vehicula ferriviaria celata etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Electa, vehicula viaria celata etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Electa, naves celatae etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Electa, aeroplana celata etiam monstrantur + +# Query window +STR_BUTTON_DEFAULT :{BLACK}Solitum +STR_BUTTON_CANCEL :{BLACK}Cancellare +STR_BUTTON_OK :{BLACK}Confirmare + +# On screen keyboard window +STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . + +# Measurement tooltip +STR_MEASURE_LENGTH :{BLACK}Spatium: {NUM} +STR_MEASURE_AREA :{BLACK}Area: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Spatium: {NUM}{}Differentia altitudinis: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Differentia altitudinis: {HEIGHT} + + +# These are used in buttons +STR_SORT_BY_CAPTION_NAME :{BLACK}Nomen +STR_SORT_BY_CAPTION_DATE :{BLACK}Dies +# These are used in dropdowns +STR_SORT_BY_NAME :Nomine +STR_SORT_BY_PRODUCTION :Productione +STR_SORT_BY_TYPE :Typo +STR_SORT_BY_TRANSPORTED :Quantitate Translata +STR_SORT_BY_NUMBER :Numero +STR_SORT_BY_PROFIT_LAST_YEAR :Lucro prioris anni +STR_SORT_BY_PROFIT_THIS_YEAR :Lucro huius anni +STR_SORT_BY_AGE :Aetate +STR_SORT_BY_RELIABILITY :Constantia +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Summa capacitatis per genera onerum +STR_SORT_BY_MAX_SPEED :Velocitate maxima +STR_SORT_BY_MODEL :Typo +STR_SORT_BY_VALUE :Aestimatione +STR_SORT_BY_LENGTH :Longitudine +STR_SORT_BY_LIFE_TIME :Aetate reliqua +STR_SORT_BY_TIMETABLE_DELAY :Mora horarii +STR_SORT_BY_FACILITY :Typo stationis +STR_SORT_BY_WAITING_TOTAL :Summa onerum manentium +STR_SORT_BY_WAITING_AVAILABLE :Onere manente parabile +STR_SORT_BY_RATING_MAX :Censione oneris maxima +STR_SORT_BY_RATING_MIN :Censione oneris minima +STR_SORT_BY_ENGINE_ID :Agnoscamento vehiculi (separatio antiqua) +STR_SORT_BY_COST :Pretio +STR_SORT_BY_POWER :Potestate +STR_SORT_BY_TRACTIVE_EFFORT :Vi tractionis +STR_SORT_BY_INTRO_DATE :Die introductionis +STR_SORT_BY_RUNNING_COST :Pretio operandi +STR_SORT_BY_POWER_VS_RUNNING_COST :Potestate pretio operandi divisa +STR_SORT_BY_CARGO_CAPACITY :Capacitate oneris +STR_SORT_BY_RANGE :Distantia volatus maxima +STR_SORT_BY_POPULATION :Numero Incolarum +STR_SORT_BY_RATING :Censione + +# Tooltips for the main toolbar +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Ludum intermittere +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Ludum adcelerare +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Optiones +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Servare ludum, relinquere ludum, exire +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Monstrare tabulam geographicam, fenestram conspectus additiciam, sive indicem signorum +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Monstrare indicem oppidorum +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Monstrare subsidia +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Monstrare indicem stationum societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Monstrare res fiscales societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Monstrare facta generalia societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Monstrare librum fabularum +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Monstrare indicem metarum +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Monstrare formulas graphicas +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Monstrare album foederis societatum +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Industriam novam condere vel monstrare indicem industriarum +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Monstrare indicem traminum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Monstrare indicem vehiculorum viariorum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Monstrare indicem navium societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Monstrare indicem aeroplanorum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Amplificare conspectum +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Retrahere conspectum +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Struere ferrivias +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Struere vias +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Struere navalia +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Struere aeroportus +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Monstrare terrae arcam ferramentorum qua potes terram augere/minuere, arbores serere, etc. +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Monstrare fenestram soni musicaeque +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Monstrare nuntium novissimum sive optiones nuntii +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Indicia terrae regionis, consola, emendatio scripti, imagines conspectus, de OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Mutare inter arcas ferramentorum + +# Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Servare scaenarium, legere scaenarium, relinquere scriptorium scaenarii, exire +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scriptorium Scaenarii +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Facit ut dies initii uno anno procedatur +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Facit ut dies initii uno anno recedatur +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Mutare diem initii +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Monstrare tabulam geographicam vel indicem oppidorum +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Plasmatio terrae +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Conditus oppidorum +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Conditus industriarum +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Constructio viarum +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Serere arbores. Shift mutat inter constructionem et aestimationem monstrandam +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Ponere signum +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Ponere ornamentum. Shift mutat inter constructionem et aestimationem monstrandam + +############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Servare scaenarium +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Legere scaenarium +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Servare tabulam altitudinum +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Legere tabulam altitudinum +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Relinquere scriptorium scaenarii +STR_SCENEDIT_FILE_MENU_SEPARATOR : +STR_SCENEDIT_FILE_MENU_QUIT :Exire +############ range for SE file menu starts + +############ range for settings menu starts +STR_SETTINGS_MENU_GAME_OPTIONS :Ludi optiones +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Electiones +STR_SETTINGS_MENU_SCRIPT_SETTINGS :Optiones IA/Ludi scriptorum +STR_SETTINGS_MENU_NEWGRF_SETTINGS :Optiones NewGRF +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Optiones perluciditatis +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Nomina oppidorum spectabilia +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Nomina stationum spectabilia +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Nomina interlocorum spectabilia +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Signa spectabilia +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Signa nominaque competitorum spectabilia +STR_SETTINGS_MENU_FULL_ANIMATION :Animatio completa +STR_SETTINGS_MENU_FULL_DETAIL :Descriptio completa +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Aedificia perlucida +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Signa perlucida +############ range ends here + +############ range for file menu starts +STR_FILE_MENU_SAVE_GAME :Servare ludum +STR_FILE_MENU_LOAD_GAME :Legere ludum +STR_FILE_MENU_QUIT_GAME :Relinquere ludum +STR_FILE_MENU_SEPARATOR : +STR_FILE_MENU_EXIT :Exire +############ range ends here + +# map menu +STR_MAP_MENU_MAP_OF_WORLD :Orbis tabula +STR_MAP_MENU_EXTRA_VIEW_PORT :Fenestra conspectus additicia +STR_MAP_MENU_LINGRAPH_LEGEND :Formula graphica onerum cursus +STR_MAP_MENU_SIGN_LIST :Index signorum + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Index oppidorum +STR_TOWN_MENU_FOUND_TOWN :Condere oppidum +############ range ends here + +############ range for subsidies menu starts +STR_SUBSIDIES_MENU_SUBSIDIES :Subsidia +############ range ends here + +############ range for graph menu starts +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Formula lucri operationis graphica +STR_GRAPH_MENU_INCOME_GRAPH :Formula reditus graphica +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Formula oneris traditi graphica +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Formula historiae effectus graphica +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Formula aestimationis societatis graphica +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Tabula mercedum onerum +############ range ends here + +############ range for company league menu starts +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Album foederis societatum +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Censio effectus descripta +STR_GRAPH_MENU_HIGHSCORE :Album punctorum supremorum +############ range ends here + +############ range for industry menu starts +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Index industriarum +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Catenae industriarum +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Condere novam industriam +############ range ends here + +############ range for railway construction menu starts +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Constructio ferriviarum +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Constructio electricarum ferriviarum +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Constructio monoorbitarum +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Constructio maglev +############ range ends here + +############ range for road construction menu starts +STR_ROAD_MENU_ROAD_CONSTRUCTION :Constructio viarum +STR_ROAD_MENU_TRAM_CONSTRUCTION :Constructio ferriviarum stratarium +############ range ends here + +############ range for waterways construction menu starts +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Constructio viarum aquariarum +############ range ends here + +############ range for airport construction menu starts +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Constructio aeroportuum +############ range ends here + +############ range for landscaping menu starts +STR_LANDSCAPING_MENU_LANDSCAPING :Plasmatio terrae +STR_LANDSCAPING_MENU_PLANT_TREES :Serere arbores +STR_LANDSCAPING_MENU_PLACE_SIGN :Ponere signum +############ range ends here + +############ range for music menu starts +STR_TOOLBAR_SOUND_MUSIC :Sonus musicave +############ range ends here + +############ range for message menu starts +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Monstrare nuntium novissimum +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historia nuntiorum +############ range ends here + +############ range for about menu starts +STR_ABOUT_MENU_LAND_BLOCK_INFO :Terrae regionis indicia +STR_ABOUT_MENU_SEPARATOR : +STR_ABOUT_MENU_TOGGLE_CONSOLE :Monstrare celareve consolam +STR_ABOUT_MENU_AI_DEBUG :Emendatio IA/Ludi scriptorum +STR_ABOUT_MENU_SCREENSHOT :Imago conspectus +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Imago conspectus maxime amplificata +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Imago conspectus solite amplificata +STR_ABOUT_MENU_GIANT_SCREENSHOT :Imago cunctae tabulae geographicae +STR_ABOUT_MENU_ABOUT_OPENTTD :De 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :Norma spiritus +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Monstrare celareve arcas finitionum +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Incipere desinereve pictura sordidorum laterculorum +############ range ends here + +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :Primum +STR_ORDINAL_NUMBER_2ND :Secundum +STR_ORDINAL_NUMBER_3RD :Tertium +STR_ORDINAL_NUMBER_4TH :Quartum +STR_ORDINAL_NUMBER_5TH :Quintum +STR_ORDINAL_NUMBER_6TH :Sextum +STR_ORDINAL_NUMBER_7TH :Septimum +STR_ORDINAL_NUMBER_8TH :Octavum +STR_ORDINAL_NUMBER_9TH :Nonum +STR_ORDINAL_NUMBER_10TH :Decimum +STR_ORDINAL_NUMBER_11TH :Undecimum +STR_ORDINAL_NUMBER_12TH :Duodecimum +STR_ORDINAL_NUMBER_13TH :Tertium Decimum +STR_ORDINAL_NUMBER_14TH :Quartum Decimum +STR_ORDINAL_NUMBER_15TH :Quintum Decimum +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :I +STR_DAY_NUMBER_2ND :II +STR_DAY_NUMBER_3RD :III +STR_DAY_NUMBER_4TH :IV +STR_DAY_NUMBER_5TH :V +STR_DAY_NUMBER_6TH :VI +STR_DAY_NUMBER_7TH :VII +STR_DAY_NUMBER_8TH :VIII +STR_DAY_NUMBER_9TH :IX +STR_DAY_NUMBER_10TH :X +STR_DAY_NUMBER_11TH :XI +STR_DAY_NUMBER_12TH :XII +STR_DAY_NUMBER_13TH :XIII +STR_DAY_NUMBER_14TH :XIV +STR_DAY_NUMBER_15TH :XV +STR_DAY_NUMBER_16TH :XVI +STR_DAY_NUMBER_17TH :XVII +STR_DAY_NUMBER_18TH :XVIII +STR_DAY_NUMBER_19TH :XIX +STR_DAY_NUMBER_20TH :XX +STR_DAY_NUMBER_21ST :XXI +STR_DAY_NUMBER_22ND :XXII +STR_DAY_NUMBER_23RD :XXIII +STR_DAY_NUMBER_24TH :XXIV +STR_DAY_NUMBER_25TH :XXV +STR_DAY_NUMBER_26TH :XXVI +STR_DAY_NUMBER_27TH :XXVII +STR_DAY_NUMBER_28TH :XXVIII +STR_DAY_NUMBER_29TH :XXIX +STR_DAY_NUMBER_30TH :XXX +STR_DAY_NUMBER_31ST :XXXI +############ range for days ends + +############ range for months starts +STR_MONTH_ABBREV_JAN :Ian +STR_MONTH_ABBREV_FEB :Feb +STR_MONTH_ABBREV_MAR :Mar +STR_MONTH_ABBREV_APR :Apr +STR_MONTH_ABBREV_MAY :Mai +STR_MONTH_ABBREV_JUN :Iun +STR_MONTH_ABBREV_JUL :Iul +STR_MONTH_ABBREV_AUG :Aug +STR_MONTH_ABBREV_SEP :Sep +STR_MONTH_ABBREV_OCT :Oct +STR_MONTH_ABBREV_NOV :Nov +STR_MONTH_ABBREV_DEC :Dec + +STR_MONTH_JAN :Ianuarii +STR_MONTH_FEB :Februarii +STR_MONTH_MAR :Martii +STR_MONTH_APR :Aprilis +STR_MONTH_MAY :Maii +STR_MONTH_JUN :Iunii +STR_MONTH_JUL :Iulii +STR_MONTH_AUG :Augusti +STR_MONTH_SEP :Septembris +STR_MONTH_OCT :Octobris +STR_MONTH_NOV :Novembris +STR_MONTH_DEC :Decembris +############ range for months ends + +# Graph window +STR_GRAPH_KEY_BUTTON :{BLACK}Clavis +STR_GRAPH_KEY_TOOLTIP :{BLACK}Monstrare formularum clavem +STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} +STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} +STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} +STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} + +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Formula Lucri Operationis Graphica +STR_GRAPH_INCOME_CAPTION :{WHITE}Formula Reditus Graphica +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unitates oneris traditae +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Censiones effectus societatis (Censio maxima = 1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Aestimationes societatis + +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Mercedes Onerum +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dies in itinere +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Merces tradendi 10 oneris unitates (aut 10,000 litra) per 20 quadra +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Omnia Monstrare +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Omnia Celare +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Monstrare omnia onera in grapho mercedum onerum +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Monstrare nulla onera in grapho mercedum onerum +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Monstrare celareve aspectum huius oneris in grapho +STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} + +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Monstrare censiones effectus descriptas + +# Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}Clavis graphicarum societatum +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Preme ut conspectum huius societatis in grapho monstretur celeturve + +# Company league window +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Album Foederis Societatum +STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Mechanicus +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Curator Commercii +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Procurator Vecturae +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Praepositus Itineris +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Rector +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Moderator +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Princeps +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Praeses +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Dives Maximus + +# Performance detail window +STR_PERFORMANCE_DETAIL :{WHITE}Censio effectus descripta +STR_PERFORMANCE_DETAIL_KEY :{BLACK}Descriptio +STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) +STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) +STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Videre descriptionem de hac societate +############ Those following lines need to be in this order!! +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehicula: +STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationes: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Lucrum minimum: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Reditus minimus: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Reditus maximus: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Tradita: +STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Onera: +STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pecunia: +STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Creditum: +STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Omnia: +############ End of order list +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Numerus vehiculorum quae lucrum fecerunt anno priore. Vehicula viaria, hamaxostichi, naves, et aeroplana numerantur +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Numerus stationum nuper adventorum. Stationes ferriviariae laophoricaeque, et aeroportus, et cetera numerantur separatim etsi in eadem statione sunt +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Lucrum vehiculi quod minimum lucrum habet (modo vehicula plures quam duos annos in aetate) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Copia pecuniae merita in quadrante cum minimo lucro ex 12 quadrantibus prioribus +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Copia pecuniae merita in quadrante cum maximo lucro ex 12 quadrantibus prioribus +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unitates oneris traditae quattuor quadrantibus prioribus +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Numerus typorum oneris traditorum quadrante priore +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Pecunia huius societatis +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Copia crediti huius societatis +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Puncta tota ex punctis maximis + +# Music window +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}'Jazz Jukebox' +STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Omnes +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Vetus +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Novitas +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Via Facilis +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Propria I +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Propria II +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Amplitudo Musicae +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Amplitido Sonorum +STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN +STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX +STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' +STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- +STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} +STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ +STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" +STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Carmen +STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titulus +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Miscere +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programma +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Recedere carmini priori +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Procedere carmini secundo +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Desinere musicae +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Incipere musicae +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Trahe ut amplitudines musicae sonorumque mutentur +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Eligere compositionem 'omnia carmina' +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Eligere compositionem 'musicam veterem' +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Eligere compositionem 'musicam novitatis' +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Eligere compositionem 'viam facilem' +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Eligere compositionem 'Propriam I' (a lusore electam) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Eligere compositionem 'Propriam II' (a lusore electam) +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Incipere desinereve admixtionem carminum +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Monstrare fenestram electionis carminum + +STR_ERROR_NO_SONGS :{WHITE}Compositio sine carminibus electa est. Nulla carmina canentur + +# Playlist window +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Electio Compositionis Musicae +STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index Carminum +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Compositio - '{STRING}' +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Vacuefacere +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vacuefacere compositionem (modo Propriam I aut Propriam II) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Preme in carmen ut compositioni addantur (modo Propriae I aut Propriae II) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Preme in carmen ut ex compositione removeatur (modo Propria I aut Propria II) + +# Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Societates supremae quae attigerunt {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Album Foederis Societatum in {NUM} +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Laborator +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Venditor +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Negotiator +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Mercator +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Dominus +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Optimas +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Dives Saeclaris +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} attingit statum '{STRING}'! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} attingit statum '{STRING}'! + +# Smallmap window +STR_SMALLMAP_CAPTION :{WHITE}Tabula Geographica - {STRING} + +STR_SMALLMAP_TYPE_CONTOURS :Topographia +STR_SMALLMAP_TYPE_VEHICLES :Vehicula +STR_SMALLMAP_TYPE_INDUSTRIES :Industriae +STR_SMALLMAP_TYPE_ROUTEMAP :Itinera Onerum +STR_SMALLMAP_TYPE_ROUTES :Viae +STR_SMALLMAP_TYPE_VEGETATION :Vegetatio +STR_SMALLMAP_TYPE_OWNERS :Possessores +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Monstrare topographiam in tabula +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Monstrare vehicula in tabula +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Monstrare industrias in tabula +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Monstrare itinera onerum in tabula +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Monstrare itinera in tabula +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Monstrare vegetationem in tabula +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Monstrare terrarum possessores in tabula +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Preme in typum industriae ut monstretur celeturve. Ctrl+Preme ut omnes typi praeter eum qui electus est celentur. Ctrl+Preme denuo ut omnes typi monstrentur +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Preme in societatem ut monstretur celeturve. Ctrl+Preme ut omnes praeter eam quae electa est celentur. Ctrl+Preme denuo ut omnes societates monstrentur +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Preme in onus ut monstretur celeturve. Ctrl+Preme ut omnia praeter id quod electum est celentur. Ctrl+Preme denuo ut omnia onera monstrentur + +STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Viae +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferriviae +STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stationes/Aeroportus/Navalia +STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Aedificia/Industriae +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehicula +STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Tramina +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Vehicula Viaria +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Naves +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aeroplana +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Itinera +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Silva +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Statio ferriviaria +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Statio autoplaustrica +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Statio laophorica +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroportus/Heliportus +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Navale +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terra Aspera +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Terra Herbosa +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terra Nuda +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Agri +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arbores +STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Saxa +STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Aqua +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sine posessore +STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Oppida +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industriae +STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserta +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Nix + +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Monstrare celareve nomina oppidorum in tabula +STR_SMALLMAP_CENTER :{BLACK}Movere tabulam geographicam supra conspectum praesentem +STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} +STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} +STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} +STR_SMALLMAP_DISABLE_ALL :{BLACK}Omnia celare +STR_SMALLMAP_ENABLE_ALL :{BLACK}Omnia monstrare +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Monstrare altitudinem +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Celare omnes industrias in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Monstrare omnes industrias in tabula +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Monstrare celareve topographiam +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Celare possessiones societatum in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Monstrare possessiones societatum in tabula +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Celare onera in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Monstrare onera in tabula + +# Status bar messages +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Monstrare nuntium novissimum +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * INTERMISSUS * * +STR_STATUSBAR_AUTOSAVE :{RED}AUTOSERVANS +STR_STATUSBAR_SAVING_GAME :{RED}* * LUDUM SERVANS * * + +# News message history +STR_MESSAGE_HISTORY :{WHITE}Historia Nuntiorum +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Index nuntiorum recentium +STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} + +STR_NEWS_MESSAGE_CAPTION :{WHITE}Nuntium +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Hamaxostichus primus advenit ad {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Laophorium primum advenit ad {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Autoplaustrum primum advenit ad {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Prima transviaria raeda vectoria advenit ad {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Prima transviaria raeda oneraria advenit ad {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Navis prima advenit ad {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Aeroplanum primum advenit ad {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Calamitas Ferriviaria!{}{COMMA} in incendio pereunt post conflictum! +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Calamitas Autocinetica!{}Gubernator in incendio perit post conflictum contra tramen! +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Calamitas Autocinetica!{}{COMMA} in incendio pereunt post conflictum contra tramen! +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Calamitas Aeroplanica!{}{COMMA} in incendio pereunt apud {STATION}! +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Calamitas Aeroplanica!{}Aeroplano fomes caruit, {COMMA} in incendio pereunt! + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Calamitas Zeppelinaria apud {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Vehiculum destructum est in conflictu cum re volante ignota! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Ergasterium petrolearium fractum est apud {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrica fracta est condicionibus suspectis apud {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Res volans ignota appellit apud {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Labes carbonifodinae ruinam facit apud {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundationes!{}Amplius {COMMA} irreperti, mortui rati post magnas inundationes! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Tribulatio Societatis! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} venum detur aut perdatur nisi effectus mox increscit! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Consolidatio Societatum! +STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vendita est; {STRING} emit, pretio {CURRENCY_LONG}! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Perditum! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} clusus est possessionibus venditis abs creditoribus! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova societas incohata! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} incipit apud {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} sumpta est a {STRING}! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Praeses) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Novum oppidum {1:TOWN} constructum expensis a {0:STRING} comparatis! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} construitur apud {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} adsit{G 0 us a um i ae a} apud {TOWN}! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat propter inopiam materiarum! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat propter inopiam arborum vicinarum! + +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Unio Monetaria Europaea!{}{}Euro iam solus nummus in civitate tua est! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessio Universa!{}{}Argentarii terrent oeconomia decrescente! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recessio Finita!{}{}Industriae oeconomiae crescenti accredunt! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} productionem auget! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat novam venam carbonis repertam esse!{}Productionem duplicatum iri nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat novum fontem petrolei repertum esse!{}Productionem duplicatum iri nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat productionem duplicatum iri arte agriculturae meliore! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} productionem {0:STRING.gen} {2:COMMA}% augere nuntiat! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} productionem dimidiare nuntiat! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} se bestiolis infest{G 0 um am um os as a} esse nuntiat!{}Productionem dimidiare nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} productionem {0:STRING.gen} {2:COMMA}% decrescere nuntiat! + +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} manens est in tugurio + +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} parum habet iussa in horario +STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} iussum irritum habet +STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} iussa duplicata habet +STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} stationem irritam habet in horario +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} habet in iussis aeroportum cuius aerodromus nimis brevis est + +STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} veterascit +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} valde veterascit +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} valde veterascit atque necesse est redimi +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} non potest iter invenire +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} errans est +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} anno priore {CURRENCY_LONG} lucratur +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} non potest ire ad destinatum nam extra distantiam volatus maximam est + +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} constitit quia ordo reficiendi defecit +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autoredemptio defecit {VEHICLE}{}{STRING} + +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} parabil{G 0 is is e es es ia}! +STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G us a um i ae a} {STRING} parabil{G 0 is is e es es ia}! - {ENGINE} + +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} non diutius {STRING.acc} accipit +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} non diutius {STRING.acc} {STRING.acc}que accipit +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} nunc {STRING.acc} accipit +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} nunc {STRING.acc} {STRING.acc}que accipit + +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Condicio subsidii discedit:{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} non diutius subveniatur +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidium retractum:{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} non diutius subvenietur +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidium oblatum:{}{}Prima vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} unum annum subveniatur ab auctoritate vicinale! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} merebit reditum sesquiplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} merebit reditum duplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} merebit reditum triplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} a {STRING.abl} ad {STRING.acc} merebit reditum quadruplicem anno secundo! + +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Chaos vehicularium in {TOWN}!{}{}Reconstructio viarum, expensis a {STRING} compartis, affert miseriam autoraedariis 6 menses! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopolium Vecturae! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN}: Auctoritas vicinalis nuntiat {STRING} esse societatem unicam cui uno anno licet transportare intra oppidum! + +# Extra view window +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Fenestra conspectus {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Transcribere ad fenestram conspectus +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Transcribere locum primarium ad hanc fenestram conspectus +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Glutinare ex fenestra conspectus +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Glutinare locum ex hac fenestra ad conspectum primarium + +# Game options window +STR_GAME_OPTIONS_CAPTION :{WHITE}Ludi optiones +STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitates nummi +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Electio unitatum nummi + +############ start of currency region +STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britannica (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Dollarium CFA (USD) +STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) +STR_GAME_OPTIONS_CURRENCY_JPY :Ien Iaponicus (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Scellinus Austriacus (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Francus Belgicus (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Francus Helveticus (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Corona Cecha (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Marca Germanica (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Corona Danica (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Hispanica (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Marca Finnica (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Francus Francogallicus (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Graeca (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Florenus Hungaricus (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Corona Islandica (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Libra Italiana (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Florenus Batavicus (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Corona Norvegica (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonica (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romanicus (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Rubelus Russicus (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Dollarium Slovenicum (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Corona Suecica (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Libra Turcica (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Corona Slovaca (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Regalis Brasilica (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estonica (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuanica (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Von Coreanus (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Randum Africae Australis (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Propria... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiana (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Regalis Iranica (IRR) +############ end of currency region + +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehicula Viaria +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Eligere latus viae gubernandi +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Gubernantur sinistro +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Gubernantur dextro + +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nomina oppidorum +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Eligere oppidorum nomina + +############ start of townname region +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Anglica (Primigenia) +STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francogallica +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Theodisca +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Anglica (Additicia) +STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Americae Latinae +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Ridicula +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suecica +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Batavica +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnica +STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polonica +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovaca +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvegica +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hungarica +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austriaca +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romanica +STR_GAME_OPTIONS_TOWN_NAME_CZECH :Cecha +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Helvetica +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danica +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turcica +STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiana +STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalana +############ end of townname region + +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Servare automatice +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Eligere crebritatem automatice ludum servandi + +############ start of autosave dropdown +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Numquam +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Singulis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ternis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Senis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Duodenis mensibus +############ end of autosave dropdown + +STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Eligere linguam interfaciei + +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Cunctum scrinium +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Optione electa, OpenTTD cuncto scrinio ostenditur + +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolutio scrinii +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Eligere resolutio scrinii adhibenda +STR_GAME_OPTIONS_RESOLUTION_OTHER :alia + +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Magnitudo interfaciei +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Eligere magnitudinem interfaciei adhibendam + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Solita +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duplex +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadruplex + +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fascicul{P us i} absen{P s tes}/corrupt{P us i} +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento graphico + +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Fundamentum sonicum +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Eligere fundamentum sonicum adhibendum +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento sonico + +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Fundamentum musicum +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Eligere fundamentum musicum adhibendum +STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fascicul{P us i} corrupt{P us i} +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento musico + +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Non potuit repperire indicem resolutionum +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mutatio ad cunctum scrinium defecit + +# Custom currency window + +STR_CURRENCY_WINDOW :{WHITE}Nummus Proprius +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Collybus: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minuere copiam nummi tui quae aequa est uni Librae Brittanicae (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Augere copiam nummi tui quae aequa est uni Librae Brittanicae (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Eligere collybum nummi tui + +STR_CURRENCY_SEPARATOR :{LTBLUE}Symbolum separans: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Eligere symbolum separans nummi tui + +STR_CURRENCY_PREFIX :{LTBLUE}Praefixum: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Eligere praefixum nummi tui +STR_CURRENCY_SUFFIX :{LTBLUE}Suffixum: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Eligere suffixum nummi tui + +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Mutare ad Euro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Mutare ad Euro: {ORANGE}numquam +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Eligere annum ad Euro mutandi +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mutare ad Euro ocius +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mutare ad Euro lentius + +STR_CURRENCY_PREVIEW :{LTBLUE}Praevisum: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}Copia nummi tui quae aequa est 10000 Librae Britannicae (£) +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Mutare parametrum nummi proprii + +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Numerus competitorum maximus: {ORANGE}{COMMA} + +STR_NONE :Nullae +STR_FUNDING_ONLY :Modo conditu +STR_MINIMAL :Minimus +STR_NUM_VERY_LOW :Minor +STR_NUM_LOW :Parvus +STR_NUM_NORMAL :Mediocris +STR_NUM_HIGH :Magnus +STR_NUM_CUSTOM :Proprius +STR_NUM_CUSTOM_NUMBER :Proprius ({NUM}) + +STR_VARIETY_NONE :Nulla +STR_VARIETY_VERY_LOW :Minima +STR_VARIETY_LOW :Parva +STR_VARIETY_MEDIUM :Mediocris +STR_VARIETY_HIGH :Magna +STR_VARIETY_VERY_HIGH :Maxima + +STR_AI_SPEED_VERY_SLOW :Lentissima +STR_AI_SPEED_SLOW :Lenta +STR_AI_SPEED_MEDIUM :Mediocris +STR_AI_SPEED_FAST :Celeris +STR_AI_SPEED_VERY_FAST :Celerrima + +STR_SEA_LEVEL_VERY_LOW :Minima +STR_SEA_LEVEL_LOW :Parva +STR_SEA_LEVEL_MEDIUM :Mediocris +STR_SEA_LEVEL_HIGH :Magna +STR_SEA_LEVEL_CUSTOM :Propria +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Propria ({NUM}%) + +STR_RIVERS_NONE :Nulli +STR_RIVERS_FEW :Parvus +STR_RIVERS_MODERATE :Mediocris +STR_RIVERS_LOT :Magnus + +STR_DISASTER_NONE :Nullae +STR_DISASTER_REDUCED :Rarae +STR_DISASTER_NORMAL :Mediocres + +STR_SUBSIDY_X1_5 :Sesquiplex +STR_SUBSIDY_X2 :Duplex +STR_SUBSIDY_X3 :Triplex +STR_SUBSIDY_X4 :Quadruplex + +STR_TERRAIN_TYPE_VERY_FLAT :Planissimus +STR_TERRAIN_TYPE_FLAT :Planus +STR_TERRAIN_TYPE_HILLY :Clivosus +STR_TERRAIN_TYPE_MOUNTAINOUS :Montanus +STR_TERRAIN_TYPE_ALPINIST :Alpinus + +STR_CITY_APPROVAL_PERMISSIVE :Longe +STR_CITY_APPROVAL_TOLERANT :Breviter +STR_CITY_APPROVAL_HOSTILE :Brevissime + +STR_WARNING_NO_SUITABLE_AI :{WHITE}Nullae IA parabiles sunt...{}Potes arcessere nunullas IA in 'Inventario Interretiale' + +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Electiones +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Series colans: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Omnia expandere +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Omnia collocare +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(nulla explicatio parabilis) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valor solitus: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Electionis typus: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Electio clientis (non inclusa in ludis servatis; omnes ludos afficit) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Electio ludi (inclusa in ludis servatis; modo ludos novos afficit) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Electio ludi (inclusa in ludo servato; modo ludum currentem afficit) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Electio societatis (inclusa in ludis servatis; modo ludos novos afficit) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Electio societatis (inclusa in ludo servato; modo societatem currentem afficit) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typus: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Definit indicem optionum ut solum electiones simplices aut mutatae monstrentur +STR_CONFIG_SETTING_RESTRICT_BASIC :Electiones simplices (modo monstrare electiones magni momenti) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Electiones doctae (monstrare pleras electiones) +STR_CONFIG_SETTING_RESTRICT_ALL :Electiones peritae (monstrare omnes electiones, etiam insolitas) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Electiones cuius valores differunt solitis +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Electiones cuius valores differunt eis ludorum novorum + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Definit indicem ut tantum quaedam optiones monstrentur +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Omnes electiones +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Electiones clientis (non inclusae in ludis servatis; omnes ludos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Electiones ludi (inclusae in ludis servatis; modo ludos novos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Electiones ludi (inclusae in ludo servato; modo ludum currentem afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Electiones societatis (inclusae in ludis servatis; modo ludos novos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Electiones societatis (inclusae in ludo servato; modo societatem currentem afficiunt) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Categoria {BLACK}ad {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Typus {BLACK}ad {WHITE}Omnes electionis typi +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Categoria {BLACK}ad {WHITE}{STRING} {BLACK}et {SILVER}Typus {BLACK}ad {WHITE}Omnes electionis typi +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nullae - + +STR_CONFIG_SETTING_OFF :Non +STR_CONFIG_SETTING_ON :Ita +STR_CONFIG_SETTING_DISABLED :Neglecta + +STR_CONFIG_SETTING_COMPANIES_OFF :Non +STR_CONFIG_SETTING_COMPANIES_OWN :Tuae societati +STR_CONFIG_SETTING_COMPANIES_ALL :Omnibus societatibus + +STR_CONFIG_SETTING_NONE :Nullus +STR_CONFIG_SETTING_ORIGINAL :Originalis +STR_CONFIG_SETTING_REALISTIC :Realisticus + +STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Laevo +STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Medio +STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dextro + +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Creditum maximum in initio: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Copia crediti maxima (sine inflatione) +STR_CONFIG_SETTING_INTEREST_RATE :Proportio faenoris: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Proportio faenoris creditorum; etiam inflationem afficit, si inflatio adest +STR_CONFIG_SETTING_RUNNING_COSTS :Pretii operandi: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Eligere magnitudinem pretiorum vehicula operandi atque infrastructuram ministrandi +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocitas struendi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Definire IA velocitatem struendi +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Defectiones vehiculorum: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Eligere crebritatem vehiculis deficiendi quae parum ministrantur +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicator subsidiorum: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Eligere proportionem reditus additicii subsidiorum +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Pretii struendi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Eligere magnitudinem pretiorum struendi emendique +STR_CONFIG_SETTING_RECESSIONS :Recessiones: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Sinere recessiones oeconomicae aliquando accidere. In recessione oeconomica, productio omnino minuitur (sed, recessione confecta, productio redit ad magnitudinem priorem) +STR_CONFIG_SETTING_TRAIN_REVERSING :Vetare tramina cursum reflectere in stationibus: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si electa, tramina non possunt cursum reflectere in stationibus quae non sunt termini, etsi adest iter brevius ad destinatum cursu reflexo +STR_CONFIG_SETTING_DISASTERS :Calamitates: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Sinere calamitates accidere, quae forte vehicula aut infrastructuram destruant +STR_CONFIG_SETTING_CITY_APPROVAL :Quamdiu auctoritas vicinalis patitur malas actiones a societatibus: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Eligere patientiam auctoritatis vicinalis - quomodo venia eius afficitur a sonito et detrimento vicinitatis. Nimis malis actionibus, auctoritates vetant stationes struere, aedificia viasque removere + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altitudo tabulae maxima: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Eligere altitudinem montium maximam in tabula +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Non licet hanc altitudinem eligere. Unus pluresve mons in tabula altior est +STR_CONFIG_SETTING_AUTOSLOPE :Sinere terram plasmare sub aedificia, vias, etc.: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sinere terram plasmare sub aedificia et vias; tum necesse non est aedificia viasve removere +STR_CONFIG_SETTING_CATCHMENT :Sinere magnitudines regionum acceptionis magis realisticas esse: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Si electa, aeroportus et alii stationum typi habent meliores regiones acceptionis +STR_CONFIG_SETTING_EXTRADYNAMITE :Sinere plures vias, pontes, et cuniculos removere in oppidis: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Si electa, infrastructura et aedificia oppidorum sunt magis facilia remotu +STR_CONFIG_SETTING_TRAIN_LENGTH :Longitudo traminum maxima: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Eligere longitudinem traminum maximam +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} tegul{P 0 ae arum} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Algorithmus fumi/favillarum vehiculorum: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Eligere crebritatem fumi favillarumve quae e vehiculis emissi sunt +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Algorithmus accelerationis traminum: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Eligere algorithmum physicae accelerationis hamaxostichorum. Algorithmus "originalis" facit ut omnes hamaxostichi aeque tardescant in clivis. Algorithmus "realisticus" facit ut hamaxostichi tardescant in clivis et flexibus per potestate, longitudine, etc. +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Algorithmus accelerationis vehiculorum viariorum: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Eligere algorithmum physicae accelerationis vehiculorum viariorum. Algorithmus "originalis" facit ut omnes vehicula aeque tardescant in clivis. Algorithmus "realisticus" facit ut vehicula tardescant in clivis et flexibus per potestate, vire tractionis, etc. +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Arduitas clivorum traminibus: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Arduitas tegulae clivosae hamaxosticho. Arduitate maiore, difficultas ascendendi maior est hamaxostichis +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Arduitas clivorum vehiculis viariis: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Arduitas tegulae clivosae vehiculo viario. Arduitate maiore, difficultas ascendendi maior est vehiculis +STR_CONFIG_SETTING_FORBID_90_DEG :Vetare tramina et naves cursum flectere 90°: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tramina possunt cursum flectere in astariis aut 45° (diagonale deinde horizontale/verticale) aut 90° (horizontale deinde verticale); quoque naves possunt cursum 90° aut 45° cursum flectere. Hac electa, tantum 45° licet +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Sinere stationes iungi quae non contigua sunt: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Sinere partes stationi addere quae non prorsus contigua sunt. Necesse est Ctrl premere dum novae partes adduntur. +STR_CONFIG_SETTING_INFLATION :Inflatio: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Sinere inflationem oeconomicam fieri, i.e. cum expensa surgunt celerius quam reditus +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longitudo pontium maxima: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Eligere longitudinem pontium maximam +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altitudo pontium maxima: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Eligere altitudinem pontium maximam +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longitudo cuniculorum maxima: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Eligere longitudinem cuniculorum maximam +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modus industrias primarias a lusore condendi: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Modus industriam primariam condendi. Optione 'nullo' electa, industrias condere non licet; 'prospiciendo' electa, licet condere industrias, sed locus industriae forte apparet in tabula atque forsitan desit; 'in loco aliarum industriarum' electa, licet industrias primarias condere a societatibus sicut industrias secondarias, in quovis loco +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nullo +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :In loco aliarum industriarum +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospiciendo +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Spatium planum circa industrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Magnitudo spatii plani circa industriam. Facit ut adsit spatium circa quamque industriam ad ferriviam struendam, etc. +STR_CONFIG_SETTING_MULTIPINDTOWN :Sinere plures industrias eiusdem typi adesse apud oppidum: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Generaliter, oppidum non vult plus quam unam industriam eiusdem typi. Hac electa, licet plures industrias eiusdem typi adesse in eodem oppido +STR_CONFIG_SETTING_SIGNALSIDE :Signalia ponuntur: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Eligere latus astarii in quo signalia ponuntur +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :in sinistro +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :in latere gubernandi +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :in dextro +STR_CONFIG_SETTING_SHOWFINANCES :Monstrare fenestram argentariam anno finito: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Electa, fenestra argentaria ostenditur quoque anno finito ut facile inspiciatur status argentarius societatis +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nova iussa solite 'continua' sunt: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Solite, vehicula consistunt cuique stationi quam inveniunt. Hac electa, vehicula praeteribunt, non consistentes, omnibus stationibus usque ad destinatum ultimum. Cave, haec electio modo valorem iussi novi solitum definit. Quidque tamen iussum potest utrique modo adlegi +STR_CONFIG_SETTING_STOP_LOCATION :Tramina solite sistunt in {STRING} suggestus +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Pars suggestus in qua hamaxostichi solite sistunt. 'Citera pars' est juxta aditum, in 'medio' certe est in medio suggestus, et 'ultra pars' est procul ab aditu. Cave, haec electio modo valorem iussi novi solitum definit. Quidque tamen iussum potest utrique modo adlegi +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :citera parte +STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :medio +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ultra parte +STR_CONFIG_SETTING_AUTOSCROLL :Cum cursor in margine est, movere: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Electa, conspectus vagari incipiunt cum cursor muris apud marginem fenestrae est +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Nullam fenestram +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Fenestram primariam (cunctum scrinium) +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Fenestram primariam +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Quamque fenestram +STR_CONFIG_SETTING_BRIBE :Sinere largiri auctoritatem vicinalem: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Sinere societatibus conari largiri auctoritatem vicinalem. Si largitio animadversa est ab inquisitore, non licet societati agere in oppido 6 menses +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Sinere societatibus emere monopolia: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si societas monopolium oppidi emit, nulla onera mittet stationibus competitorum in oppido (et onerariis et vectoriis) unum totum annum +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Sinere condere aedificia: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Electa, licet societatibus donare pecuniam oppidis ut nova aedificia condantur +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Sinere donare oppidis ut viae reconstruantur: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Sinere societatibus pecuniam donare oppidis ut viae reconstruantur et vectura viaria in oppido pessumdetur +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Sinere dare pecuniam aliis societatibus: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Sinere tradere pecuniam inter societates pluribus lusoribus +STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicator ponderis onerum ad hamaxostichos graves simulandos: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Eligere momentum onerum hamaxostichis. Valoribus maioribus, difficilis est hamaxostichis onera trahere, magnopere in collibus +STR_CONFIG_SETTING_PLANE_SPEED :Multiplicator velocitatis aeroplanorum: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Eligere si aeroplana eant lentius quam alia vehicula, ut reditus aeroplanorum minuatur +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Calamitates aeroplanicae accidunt: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Eligere crebritatem calamitatum aeroplanicarum +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Numquam +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Raro +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Mediocriter +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Sinere stationes viarias pervias esse in viis oppidorum: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Sinere struere stationes viarias pervias in viis quas oppida possident +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Sinere stationes viarias pervias esse in viis competitorum: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Sinere struere stationes viarias pervias in viis quas competitores possident +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non licet mutare hanc electionem cum adsunt vehicula +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Tuitio infrastructurae: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Electa, infrastructura prodit expensa tuitionis. Expensa crescunt celerius quam pro portione magnitudini retis, ergo societates magnae affectantur magis quam parvae + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportus numquam recedunt: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Electa, omnes aeroportuum typi permanent post introductionem + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Monere si vehiculum errans sit: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Electa, nuntiatur cum vehicula non possint invenire viam ad destinatum +STR_CONFIG_SETTING_ORDER_REVIEW :Recensere iussa vehiculorum: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Electa, iussa vehiculorum aliquando recensentur, atque nonnulla manifesta problemata nuntiantur, si detecta sint +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Non +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ita, sed non vehicluorum constitorum +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Ita, omnium vehiculorum +STR_CONFIG_SETTING_WARN_INCOME_LESS :Monere si reditus vehiculi negativus sit: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Electa, nuntium ostenditur cum vehiculum non facit lucrum in anno +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicula numquam recedunt: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Electa, omnes vehiculorum typi permanent post introductionem +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoredimere vehicula cum veterascunt: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Electa, vehicula veterascentia automatice redimuntur, condicionibus satisfactis +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoredimere vehiculum cum {STRING} aetatem maximam est +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Aetas relativa in qua vehicula esse autoredimenda debet +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mens{P em es} ante +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mens{P em es} post +STR_CONFIG_SETTING_AUTORENEW_MONEY :Copia pecuniae minima necesse ad redimere: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Copia pecuniae minima quam debet esse in ratione argentaria antequam vehicula autoredimenda sunt +STR_CONFIG_SETTING_ERRMSG_DURATION :Duratio nuntiorum errorum: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duratio nuntia errorum in fenestra rubra ostendendi. Cave, aliquae (severa) nuntia errorum non automatice clauditur, et necesse est lusori claudere +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} secund{P um a} +STR_CONFIG_SETTING_HOVER_DELAY :Ostendere nuntia adiuvantia: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Mora antequam nuntia adiuvantia ostenduntur cum mus elemento interfaciei superponitur. Etiam adiuvantia nuntia possunt ostendi globulo muris dextro cum hic valor 0 est +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Superponere {COMMA} millisecund{P um a} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Globulo muris dextro +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Monstrare incolas in signis nominis oppidorum: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Monstrare numerum incolarum oppidorum in signis nominis eorum in tabula geographica +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Crassitudo linearum in formulis graphicis: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Crassitudo/latitudo linearum in formulis graphicis. Linea tenuis est subtilis lectu, sed linea crassa facilior est visu atque colores faciliores discretu + +STR_CONFIG_SETTING_LANDSCAPE :Terra: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Terrae definiunt quomodo ludis, nam varia onera habent atque oppida varia poscunt ut crescantur. Sed NewGRF et Ludi Scripta possunt subtilius gubernare ludum +STR_CONFIG_SETTING_LAND_GENERATOR :Generatrum terrae: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Generatrum originale dependet fundamento graphico, et conficit figuras terrae fixas. TerraGenesis est generatrum sonitus Perlin cum electionibus subtilioribus +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Typus terrae: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(modo TerraGenesis) Clivositas terrae +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Numerus industriarum: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Eligere quot industriae oportet esse constructae ac oportet sustineri intra ludum +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Spatium maximum a finibus tabulae ad ergasteria petrolearia struenda: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ergasteria petrolearia modo struuntur apud fines tabulae, i.e. in littore si mappa est insula +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitudo lineae nivis: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Eligere altitudinem apud quam nix incipit cadere in terra subarctica. Nix etiam afficit conditionem industriarum et desideria oppidorum +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Asperitas terrae (modo TerraGenesis): {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(modo TerraGenesis) Eligere crebritatem collium: Terra teres habet minores rarosque colles. Terra aspera habet multos colles, et forsitan videtur esse repetita +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Teretissima +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Teres +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Aspera +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Asperrima +STR_CONFIG_SETTING_VARIETY :Partitio varietatis: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(modo TerraGenesis) Eligere si tabula contineat et montanos et planos locos. Quoniam haec solum facit ut tabula planior sit, electiones aliae oportet esse montanae +STR_CONFIG_SETTING_RIVER_AMOUNT :Numerus fluviorum: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Eligere quot fluvii creandi sunt +STR_CONFIG_SETTING_TREE_PLACER :Algorithmus arbores ponendi: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Eligere partitionem arborum in tabula: Algorithmus 'Originalis' aequaliter serit arbores, 'Melior' arbores serit gregatim +STR_CONFIG_SETTING_TREE_PLACER_NONE :Nullus +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalis +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Melior +STR_CONFIG_SETTING_ROAD_SIDE :Vehicula viaria: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Eligere latus viae gubernandi +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Circuitus tabulae altitudinum: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sinistrorsus +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dextrorsus +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitudo scaenario plano data: {STRING} +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una pluresve tegulae apud finem septentrionalem non vacuae sunt +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una pluresve tegulae apud unum finem non aquae sunt + +STR_CONFIG_SETTING_STATION_SPREAD :Spatium stationum maximum: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Area maxima in qua partes stationum possunt esse sita. Cave, numeris spatii magnis, ludus lentus sit +STR_CONFIG_SETTING_SERVICEATHELIPAD :Ministrare helicoptera automatice in helicopterariis: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Ministrare helicoptera post quemque appulsum, etsi non est tugurium portui +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Connectere terrae arcam ferramentorum arcis ferriviariae/viariae/aquariae/aeriae ferramentorum: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cum arca ferramentorum constructionis aperitur, etiam plasmationis terrae arca ferramentorum aperitur +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color terrae in tabula adhibitus: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color terrae in tabula geographica parva +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Viridis +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Viridis Obscurus +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpureus +STR_CONFIG_SETTING_REVERSE_SCROLLING :Revertere cursum vagationis: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Quomodo tabula vagatur globulo dextri presso. Neglecta, mus conspectum movet. Electa, mus tabulam movet +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vagari conspectum leniter: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Quomodo conspectus vagatur ad quemdam locum globulo sinistro in tabula premendi aut cum iubetur vagari ad quamdam rem in tabula. Electa, conspectus leniter vagatur. Neglecta, statim salit ad locum +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ostendere nuntium adiuvans apud varia ferramenta construendi: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Ostendere spatium atque altitudinem inter tegulas dum mus trahitur in construendo +STR_CONFIG_SETTING_LIVERIES :Monstrare schemata coloris vehiculorum per typum: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Sinere schemata coloris esse per vehiculi typum (non tantum per vehiculi societatem) +STR_CONFIG_SETTING_LIVERIES_NONE :Non +STR_CONFIG_SETTING_LIVERIES_OWN :Modo meae societati +STR_CONFIG_SETTING_LIVERIES_ALL :Omnibus societatibus +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Praeferre colloquium manus cum : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Mutare iussum colloquii interni et publici ad aut +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Actio rotulae vagationis: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Sinere vagari rotulis muris volvendis +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Amplificare/retrahere tabulam +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Vagari tabulam +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Nulla +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocitas tabulam rotula muris vagandi: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Eligere velocitatem rotula muris vagationis +STR_CONFIG_SETTING_OSK_ACTIVATION :Claviatura in scrinio: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Eligere modum claviaturam aperiendi in scrinio ut verba scribantur modo a mure (vel instrumento simile). Magnopere utilis est machinis parvis sine claviaturis veris +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Celata +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Bis premendo +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Semel premendo (dum conspicua est) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Semel premendo (statim) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Aemulatio dextrum premendi: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Eligere modum aemulationis dextrum globulum muris premendi +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Cmd+Premere +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Premere +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Neglecta + +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vagatio globuli sinistri: {STRING} +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Annuere tabulam vagari trahendo globuli sinistri. Magnopere utilis est cum tangendo navigas in scrinio + +STR_CONFIG_SETTING_AUTOSAVE :Servare automatice: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Eligere crebritatem automatice ludum servandi + +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Forma {STRING} diei adhibenda in nominibus ludorum servatorum +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Forma diei in nominibus ludorum servatorum +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longa (XXXI Dec 2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :brevis (31-12-2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) + +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Intermittere automatice cum novus ludus incipitur: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Electa, ludus automatice intermittitur cum incipitur, tunc tabula potest inspici +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Ludo intermisso, sinere: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Eligere quas actiones licet fieri, ludo intermisso +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nullam actionem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Omnes actiones praeter constructionem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Omnes actiones praeter terrae plasmationem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Omnes actiones +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Greges in indicibus vehiculorum adhibendae: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Annuere indices cum gregibus vehiculorum adesse +STR_CONFIG_SETTING_LOADING_INDICATORS :Signa onerandi adhibenda: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Annuere signa onerandi monstrari super vehicula onerantia/exonerantia +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Monstrare horarium cum punctis et non cum diebus: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Monstrare tempora navigandi in horariis punctis ludi et non diebus +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Monstrare adventum atque exitum in horariis: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Monstrare in horariis adventum atque exitum aestimatum +STR_CONFIG_SETTING_QUICKGOTO :Celeris datio iussorum vehiculorum: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Praesumere ferramentum 'I ad' cum fenestra iussorum aperitur +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Typus astarii solitus (novo ludo/ludo lecto): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Typus astarii adhibendus in novo ludo sive ludo lecto. 'Primus parabilis' typus est veterrimus, 'postremus parabilis' est novissimus typus, et 'frequentissime usus' est typus maxime in tabula usus +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primus parabilis +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Postremus parabilis +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Frequentissime usus +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Monstrare cursus reservatos in astariis: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Facit ut astaria cum cursibus a tramine reservatis habeant alium colorem, ut facilior sit videre errores hamaxostichorum qui nolunt inire quosdam locos cum signalibus +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Ferramenta struendi manent post usum: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Electa, ferramenta struendi (cuniculorum, pontium, ceterorum) tamen activa sunt postquam usa sunt +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Congregare expensa in fenestra argentaria societatis: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definire dispositionem fenestrae argentariae societatis + +STR_CONFIG_SETTING_SOUND_TICKER :Nuntia breviaria: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Sonare cum nuntium breviarium emittitur +STR_CONFIG_SETTING_SOUND_NEWS :Ephemeris: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Sonare cum ephemeris ostenditur +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Annni finis: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Sonare anno finito cum summarium effectus societatis ostenditur +STR_CONFIG_SETTING_SOUND_CONFIRM :Constructio: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Sonare cum res struuntur +STR_CONFIG_SETTING_SOUND_CLICK :Pressus globulorum: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Sonare globulo presso +STR_CONFIG_SETTING_SOUND_DISASTER :Calamitates/accidentes: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Sonare cum calamitates accidentesve accidunt +STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicula: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Sinere vehicula sonare +STR_CONFIG_SETTING_SOUND_AMBIENT :Ambientes: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Sinere sonos ambientes industriarum, oppidorum, terraeque fieri + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Vetare constructionem infrastructurae dum nulla vehicula parabilia sunt: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Electa, infrastructura modo parabilis est si adsunt vehicula parabilia. Itaque non licet absumere pecuniam tempusque struendi infrastructuram inutilem +STR_CONFIG_SETTING_MAX_TRAINS :Numerus maximus traminum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Numerus maximus hamaxostichorum quos societas habere licet +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Numerus maximus vehiculorum viariorum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Numerus maximus vehiculorum viariorum quae societas habere licet +STR_CONFIG_SETTING_MAX_AIRCRAFT :Numerus maximus aeroplanorum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Numerus maximus aeroplanorum quae societas habere licet +STR_CONFIG_SETTING_MAX_SHIPS :Numerus maximus navium cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Numerus maximus navium quas societas habere licet + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Vetare IA tramina habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Electa, non licet lusori IA tramina tenere +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Vetare IA vehicula viaria habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Electa, non licet lusori IA vehicula viaria tenere +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Vetare IA aeroplana habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Electa, non licet lusori IA aeroplana tenere +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Vetare IA naves habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Electa, non licet lusori IA naves tenere + +STR_CONFIG_SETTING_AI_PROFILE :Ratio optionum solita: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Eligere quae ratio optionum adhibenda est ad fortuitam IA, sive valores initiales cum nova IA seu Ludi Scriptum legitur +STR_CONFIG_SETTING_AI_PROFILE_EASY :Facilis +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mediocris +STR_CONFIG_SETTING_AI_PROFILE_HARD :Difficilis + +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Sinere IA in ludis cum pluribus lusoribus: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Sinere lusores IA asesse in ludis cum pluribus lusoribus +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antequam scripta suspensa sunt: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Numerus maximus computationum scripti uno vice + +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalla ministrationis monstrantur centesimis partibus: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Eligere si ministratio vehiculorum fiat aut quia satis sit tempus post ministrationem priorem, aut quia constantia vehiculi minuatur quamdam partem centesimam de constantia maxima +STR_CONFIG_SETTING_SERVINT_TRAINS :Intervallum ministrationis solitum traminibus: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Eligere solitum intervallum ministrationis novis vehiculis ferriviariis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}die{P 0 m s}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Neglectum +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervallum ministrationis solitum vehiculis viariis: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Eligere solitum intervallum ministrationis novis vehiculis viariis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervallum ministrationis solitum aeroplanis: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Eligere solitum intervallum ministrationis novis aeroplanis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_SHIPS :Intervallum ministrationis solitum navibus: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Eligere solitum intervallum ministrationis novis navibus, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_NOSERVICE :Neglegere ministrationem cum nullae sunt defectiones vehiculorum: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Electa, vehicula non ministrantur defectionibus vetatis +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Annuere currus ferriviarios habere velocitates maximas: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Electa, velocitates maximae curruum afficiunt velocitatem maximam traminis +STR_CONFIG_SETTING_DISABLE_ELRAILS :Neglegere ferrivias electricas: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Electa, tramina electrica non postulant electricam ferriviam, modo ferriviam solitam + +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :De adventu primi vehiculi stationi lusoris: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Ostendere ephemeridem cum primum vehiculum adveniat stationi lusoris +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :De adventu primi vehiculi stationi competitoris: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Ostendere ephemeridem cum primum vehiculum adveniat stationi competitoris +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :De accidentibus / calamitatibus: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Ostendere ephemeridem cum accidentes calamitatesve fiant +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :De indicio societatis: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Ostendere ephemeridem cum nova societas condiatur, sive cum societas in angustiis sit +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :De apertione industriae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Ostendere ephemeridem cum industria nova condiatur +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :De industriis claudendis: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Ostendere ephemeridem cum industria mox claudatur +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :De mutationibus oeconomicis: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Ostendere ephemeridem cum magna eventa oeconomica fiant +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :De mutationibus productionis industriarum a societate lusoris attentae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Ostendere ephemeridem cum productio industriarum a societate lusoris attentae mutet +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :De mutationibus productionis industriarum a societatibus competitorum attentae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Ostendere ephemeridem cum productio industriarum a societatibus competitorum attentae mutet +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :De mutationibus productionis aliarum industriarum: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Ostendere ephemeridem cum productio industriarum a nulla societate attentae mutet +STR_CONFIG_SETTING_NEWS_ADVICE :De admonitione / indicio vehiculorum societatis lusoris: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Ostendere nuntium de vehiculis attendendis +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :De novis vehiculis: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Ostendere ephemeridem cum novus vehiculi typus parabilis sit +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :De mutationibus onerum acceptorum: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Ostendere nuntium cum statio onera accepta mutet +STR_CONFIG_SETTING_NEWS_SUBSIDIES :De subsidiis: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Ostendere ephemeridem de eventis subsidiaribus +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :De indicio generale: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Ostendere ephemeridem de eventis generalibus, e.g. de emptione monopolii vel inceptione reconstructionis viarii + +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Neglecta +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Breviaria +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completa + +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ephemeris colorata apparet anno: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Eligere annum in quo nuntia periodicorum colorata apparet. Antea, nuntia nigra albaque sunt +STR_CONFIG_SETTING_STARTING_YEAR :Annus initii: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Sinere oeconomiam teretem esse (i.e. plures ac minores mutationes): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Electa, productio industriarum saepius mutat, et minores per gradus. Sed haec electio nihil affert si industriae apparatae sunt a NewGRF +STR_CONFIG_SETTING_ALLOW_SHARES :Sinere mercari sortes societatum: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Sinere mercari sortes a societatibus. Sortes societatum satis aetatis modo mercari licet +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Centesimae partes lucri pendenda in translatione: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Centesimae lucri pars medietati data in systematibus transferendi, ut melius distribuatur lucrum vehiculorum +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Trahens, ponere signalia: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Eligere spatium signalia struendi usque ad impedimentum proximum (i.e. aliud signale, compitum), si signalia ponuntur trahendo +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quaque tegula +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Trahens, continere spatium fixum inter signalia: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Eligere modum signalia ponendi Ctrl+trahente. Neglecta, signalia ponuntur circa cuniculos pontesque ut non essent magna spatia sine signalibus. Electa, signalia ponuntur N quaque tegula, ut signalia in astariis parallelis faciliora sint directu +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Struere signalia semaphorica automatice ante annum: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Eligere annum in quo mutandum ad signalia electrica est. Antea, signalia semaphorica adhibenda sunt (quae idem munus habent, sed dissimilia sunt visu) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Annuere GUI signalium: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Monstrare fenestram ad typos signalium struendos, in loco typum signalis mutando sine fenestra Ctrl+premendi +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Solitus typus signalis struendus: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Typus solitus signalis adhibendus +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Signalia zonalia +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Signalia itineris +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Signalia itineris unius cursus +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Mutare inter typus signalium: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Eligere typos signalium mutandos cum premitur Ctrl pressa in signale structum +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Modo signalia zonalia +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Modo signalia itineris +STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Omnes + +STR_CONFIG_SETTING_TOWN_LAYOUT :Dispositio viarum novis oppidis: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Dispositio retis viarii oppidorum +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originalis +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Viae satius +STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Cancelli 2x2 +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Cancelli 3x3 +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Fortuita +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Oppidis licet vias struere: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Sinere oppida vias struere. Neglege ut auctoritates oppidorum prohibeantur ipsas struere vias +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Oppidis licet transitus ferriviarios struere: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Electa, licet auctoritatibus oppidorum struere ferriviarios transitus +STR_CONFIG_SETTING_NOISE_LEVEL :Sinere oppida moderari aeroportus finibus soniti: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Neglecta, modo licet duo esse aeroportus in quoque oppido. Electa, quot aeroportus licet esse in oppido finitur a sonito et distantia cuiusque aeroportus etiam a patientia soniti oppidi, quae afficitur numero incolarum oppidi +STR_CONFIG_SETTING_TOWN_FOUNDING :Lusoribus oppida condere: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Electa, licet lusoribus condere oppida intra ludum +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Non licet +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Licet +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Licet, atque propria dispositio oppidi + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Positio arborum in ludo: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Quomodo arbores apparent intra ludum. Forsitan industriae afficiuntur quibus necesse sunt arbores, e.g. castra lignatorum +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nulla {RED}(rumpit castra lignatorum) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Modo in silvis plivualibus +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Ubique + +STR_CONFIG_SETTING_TOOLBAR_POS :Locus primariae arcae ferramentorum: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Locus horizontalis arcae ferramentorum primariae apud apicem fenestrae +STR_CONFIG_SETTING_STATUSBAR_POS :Locus serae status: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Locus horizontalis serae status apud infimam partem fenestrae +STR_CONFIG_SETTING_SNAP_RADIUS :Radius fenestrae adhaerendae: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Spatium minimum inter fenestras antequam automatice adhaesae sunt aliis fenestris +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} punct{P 0 um a} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Neglectus +STR_CONFIG_SETTING_SOFT_LIMIT :Numerus fenestrarum non glutinosarum maximus: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Quot fenestrae non glutinosae licet apertae esse antequam veteres fenestrae clauduntur ut spatium novarum fenestrarum liberetur +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Infinitus +STR_CONFIG_SETTING_ZOOM_MIN :Conspectus licet amplificari: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Valor maximus ad conspectum amplificandum. Cave, desideria memoriae augetur valoribus huius electionis maioribus +STR_CONFIG_SETTING_ZOOM_MAX :Conspectus licet retrahi: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Valor maximus ad conspectum retrahendum. Valores magni possunt ludum tardare +STR_CONFIG_SETTING_ZOOM_LVL_MIN :Quadruplex +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :Duplex +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Numquam +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :Duplex +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :Quadruplex +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :Octuplex +STR_CONFIG_SETTING_TOWN_GROWTH :Oppida crescunt: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Eligere celeritatem oppidorum crescendi +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Numquam +STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lente +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Mediocriter +STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Celeriter +STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Valde celeriter +STR_CONFIG_SETTING_LARGER_TOWNS :Proportio oppidorum quae urbes fient: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quot oppida ex toto fient urbes, maiores conditu et celerius crescentes +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ex {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nulla +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicator magnitudinis initialis urbis: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Quam maiores sunt urbes quam oppida in initio ludi + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Recensere formulam partitionis {STRING} quoque die +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tempus inter recensiones formulae partitionis. Quaeque recensio calculat rationes unius partis formulae. Ergo valor X huius electionis non facit ut cuncta formula recenseatur X quoque die; modo aliquot pars/partes recensebuntur. Valoribus minoribus, plus tempus CPU requiritur. Valoribus maioribus, plus tempus erit ad onerum partitionem incipiendam novis itineribus. +STR_CONFIG_SETTING_LINKGRAPH_TIME :{STRING}{NBSP}die{P 0:2 "" s} ad formulam partitionis recalculandam +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tempus cuiusque recalculationis partis partitionis. Cum recalculatio incipitur, linea generatur quae agitur hos dies electos. Paucis diebus, magis probabilis est lineam non finiri cum debet esse finitam; tunc ludus intermittitur usque ad finitur ("segnitia"). Pluribus diebus, plus tempus requiritur ad partitionem mutandam cum itinera mutantur. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manu +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrica +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrica +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modus partitionis vectoribus: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Partitio "symmetrica" facit ut fere eadem copia vectorum mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia vectorum mittatur inter A et B. In partitione "manu" vectores non automatice partiuntur. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus partitionis epistulis: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Partitio "symmetrica" facit ut fere eadem copia epistularum mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia epistularum mittatur inter A et B. In partitione "manu" epistulae non automatice partitur. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modus partitionis classi oneris CATAPHRACTA: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Classis oneris CATAPHRACTA continet res pretiosas in terra temperata, adamantes in terra subtropica, aut aurum in terra subarctica; sed NewGRF possunt hoc mutare. Partitio "symmetrica" facit ut fere eadem copia oneris mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia oneris mittatur inter A et B. In partitione "manu" onera non automatice partiuntur. Admonetur eligere aut partitionem asymmetricam aut partitionem manu cum ludis in terra subarctica, nam argentariae non remittet aurum aurifodinis. In terris temperata sive subtropica potes eligere partitionem symmetricam nam argentariae adeo remittet res pretiosas originibus argentariis. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modus partitionis aliis oneribus: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Partitio "asymmetrica" facit ut quaelibet copia onerum mittatur inter destinata et origines. In partitione "manu" onera non automatice partiuntur. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Accuratio partitionis: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Valoribus maioribus, plus tempus CPU requiritur in calculando. Si nimis magna est, ludus forsitan cunctetur. At si nimis parva est, partitio non erit accurata, et onera fortasse non mittantur ad destinata idonea. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Consecutio distantiae quaesitis: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si valor huius est plus quam 0, distantia inter originem cuiusdam oneris, stationem A, et destinatum B afficit copiam oneris missam ex A ad B. Si B multo procul ab A est, paucius onus mittetur. Valoribus maioribus, paucius onus mittetur stationibus longinquis ac plus onus mittetur stationibus propinquis. +STR_CONFIG_SETTING_DEMAND_SIZE :Copia oneris remittenda in partitione symmetrica: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Si haec minor est quam 100%, partitio symmetrica magis agit sicut asymmetrica; pauciora onera remittentur si quaedam copia missa est ad stationem. Dum est 0%, partitio symmetrica agit velut asymmetrica. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturitas itinerum brevium antequam itinera magnae capacitatis utenda sunt: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequenter sunt multa itinera inter duas stationes. Partitio onerum imprimis saturat iter brevissimum, deinde paenultime brevissimum, etc. Saturitas computatur aestimatione et capacitatis et usus. Cum omnia itinera saturata sunt, si tamen est quaesitum, superonerabit omnia itinera, ea magnae capacitatis praelata. Sed saepe algorithmus non capacitatem aestimat satis accurate. Hac electione potes optare ad quam partem centesimam itineri breviori oportet esse saturum antequam iter longius optatur. Uti valoribus minoribus quam 100% ut stationes non superonerentur si capacitates superaestimatae sunt. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitates velocitatis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Quandocumque velocitas monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Anglicae (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metricae (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unitates potestatis vehiculorum: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Quandocumque potestas vehiculi monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Anglicae (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metricae (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unitates ponderis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Quandocumque pondus monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Anglicae (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metricae (t/tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unitates voluminis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Quandocumque volumen monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Anglicae (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metricae (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unitates viris tractionis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quandocumque vis tractionis monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Anglicae (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metricae (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unitates altitudinis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quandocumque altitudo monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Anglicae (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metricae (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizatio +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Res Graphicae +STR_CONFIG_SETTING_SOUND :{ORANGE}Soni +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfacies +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Res Generales +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Fenestrae Conspectus +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Constructio +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuntia / Admonitio +STR_CONFIG_SETTING_COMPANY :{ORANGE}Societas +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Ratiocinium +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicula +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physica +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Itinera +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Fines +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Calamitates / Accidentes +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generatio Mundi +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Circumiecta +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Auctoritates +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Oppida +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriae +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Partitio onerum +STR_CONFIG_SETTING_AI :{ORANGE}Competitores +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Lusores computatrales + +STR_CONFIG_SETTING_PATHFINDER_OPF :Originale +STR_CONFIG_SETTING_PATHFINDER_NPF :NPF +STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Commendatum) + +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Inventrum itineris traminum: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Inventrum itineris hamaxostichis adhibendum +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Inventrum itineris vehiculorum viariorum: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Inventrum itineris vehiculis viariis adhibendum +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Inventrum itineris navium: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Inventrum itineris navibus adhibendum +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Reversio automatica apud signalia: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Sinere tramina reverti apud signale, si illic valde morati sunt + +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Mutare valorem optionis + +# Config errors +STR_CONFIG_ERROR :{WHITE}Error in fasciculo configurationis... +STR_CONFIG_ERROR_ARRAY :{WHITE}... error in indice '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... valor irritus '{STRING}' spectans ad '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... littera postrema apud finem electionis '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... neglectum NewGRF '{STRING}': agnoscamentum GRF duplicatum cum '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... neglectum NewGRF irritum '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :non inventum +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :non salvus est usui fixo +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systematis NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatibilis est huic OpenTTD editioni +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ignotum +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... magnitudo compressionis '{STRING}' irrita est +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... forma ludum servandi '{STRING}' parabilis non est. Revertens ad '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... neglectum Fundamentum Graphicum '{STRING}': non inventum +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... neglectum Fundamentum Sonicum '{STRING}': non inventum +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... neglectum Fundamentum Musicum '{STRING}': non inventum +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoria deest +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Non potuit collocare {BYTES} promptuarii spiritus. Promptuarium spiritus minuitur ad {BYTES}. Haec minuit effectum OpenTTD. Conare removere graphicas 32bpp ut desideria memoriae minuatur + +# Intro window +STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} + +STR_INTRO_NEW_GAME :{BLACK}Ludus Novus +STR_INTRO_LOAD_GAME :{BLACK}Legere Ludum +STR_INTRO_PLAY_SCENARIO :{BLACK}Ludere Scaenarium +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Ludere Tabulam Altitudinum +STR_INTRO_SCENARIO_EDITOR :{BLACK}Scriptorium Scaenarii +STR_INTRO_MULTIPLAYER :{BLACK}Plurium Lusorum + +STR_INTRO_GAME_OPTIONS :{BLACK}Ludi Optiones +STR_INTRO_HIGHSCORE :{BLACK}Album Punctorum Supremorum +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Electiones +STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Optiones +STR_INTRO_ONLINE_CONTENT :{BLACK}Inspicere Inventarium Interretiale +STR_INTRO_SCRIPT_SETTINGS :{BLACK}IA/Ludi Scriptorum Optiones +STR_INTRO_QUIT :{BLACK}Exire + +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Incipere novum ludum. Ctrl+Preme ut configuratio tabulae omittatur +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Legere ludum servatum +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Incipere novum ludum, tabula altitudinum adhibita +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Incipere novum ludum, scaenario proprio adhibito +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Creare scaenarium proprium +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Incipere ludum cum pluribus lusoribus + +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Eligere hanc terram, nomine 'temperata' +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'subarctica' +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'subtropica' +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'terra ludicrorum' + +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Monstrare ludi optiones +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Monstrare album punctorum supremorum +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Monstrare electiones +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Monstrare optiones NewGRF +STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Inspicere inventarium Interretiale in quo res sicut NewGRF, scaenaria, musica, etc. sunt +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Monstrare optiones IA/Ludi scriptorum +STR_INTRO_TOOLTIP_QUIT :{BLACK}Exire OpenTTD + +STR_INTRO_TRANSLATION :{BLACK}In hac interpretatione, {NUM} series desunt. Quaesimus, iuva OpenTTD meliorari et dic te velle interpretem esse. Vide readme.txt in quo plura sunt. + +# Quit window +STR_QUIT_CAPTION :{WHITE}Exire +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Esne certus te velle exire OpenTTD et redire ad {STRING}? +STR_QUIT_YES :{BLACK}Ita +STR_QUIT_NO :{BLACK}Non + +# Supported OSes +STR_OSNAME_WINDOWS :Windows +STR_OSNAME_DOS :DOS +STR_OSNAME_UNIX :Unix +STR_OSNAME_OSX :OS{NBSP}X +STR_OSNAME_BEOS :BeOS +STR_OSNAME_HAIKU :Haiku +STR_OSNAME_MORPHOS :MorphOS +STR_OSNAME_AMIGAOS :AmigaOS +STR_OSNAME_OS2 :OS/2 +STR_OSNAME_SUNOS :SunOS + +# Abandon game +STR_ABANDON_GAME_CAPTION :{WHITE}Relinquere Ludum +STR_ABANDON_GAME_QUERY :{YELLOW}Esne certus te velle ludum relinquere? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Esne certus te velle scaenarium relinquere? + +# Cheat window +STR_CHEATS :{WHITE}Tricae +STR_CHEATS_TOOLTIP :{BLACK}Quadrum signi plenum indicat trica iam a te usa est +STR_CHEATS_WARNING :{BLACK}Cave! Competitores tuas falsurus es! Memento tantam infamiam memoria omnium in aeternum teneri! +STR_CHEAT_MONEY :{LTBLUE}Augere pecuniam {CURRENCY_LONG} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludens es in loco societatis: {ORANGE}{COMMA} +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magica machina aggerandi (removet industrias, obiecta immobilia): {ORANGE}{STRING} +STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Sinere cuniculos sese transgredi: {ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}Magna aeroplana non corruent (frequenter) in aeroportibus parvis: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Eligere altitudinem tabulae maximam: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Eligere altitudinem montium maximam in tabula +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Terra temperata +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Terra subarctica +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Terra subtropica +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Terra ludicrorum +STR_CHEAT_CHANGE_DATE :{LTBLUE}Mutare annum: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Mutare annum currentem +STR_CHEAT_SETUP_PROD :{LTBLUE}Sinere mutare productiones industriarum: {ORANGE}{STRING} + +# Livery window +STR_LIVERY_CAPTION :{WHITE}Schema Coloris Novum + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Monstrare schemata coloris generalia +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Monstrare schemata coloris traminum +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Monstrare schemata coloris vehiculorum viariorum +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Monstrare schemata coloris navium +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Monstrare schemata coloris aeroplanorum +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Eligere colorem primarium schematis electi. Ctrl+Preme ut color omnibus schematibus sit primarius +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Eligere colorem secundum schematis electi. Ctrl+Preme ut color omnibus schematibus sit secundus +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Eligere schema mutandum, sive schemata plura (Ctrl pressa). Preme in quadrum ut usus schematis mutetur + +STR_LIVERY_DEFAULT :Schema Solitum +STR_LIVERY_STEAM :Hamaxa Vaporaria +STR_LIVERY_DIESEL :Hamaxa Diseliana +STR_LIVERY_ELECTRIC :Hamaxa Electrica +STR_LIVERY_MONORAIL :Hamaxa Monoorbitalis +STR_LIVERY_MAGLEV :Hamaxa Maglev +STR_LIVERY_DMU :DMU +STR_LIVERY_EMU :EMU +STR_LIVERY_PASSENGER_WAGON_STEAM :Currus Vectorius (Vaporaria) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Currus Vectorius (Diseliana) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Currus Vectorius (Electrica) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Currus Vectorius (Monoorbitalis) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Currus Vectorius (Maglev) +STR_LIVERY_FREIGHT_WAGON :Currus Onerarius +STR_LIVERY_BUS :Laophorium +STR_LIVERY_TRUCK :Autoplaustrum +STR_LIVERY_PASSENGER_SHIP :Navis Vectoria +STR_LIVERY_FREIGHT_SHIP :Navis Oneraria +STR_LIVERY_HELICOPTER :Helicopterum +STR_LIVERY_SMALL_PLANE :Aeroplanum Parvum +STR_LIVERY_LARGE_PLANE :Aeroplanum Magnum +STR_LIVERY_PASSENGER_TRAM :Transviaria Raeda Vectoria +STR_LIVERY_FREIGHT_TRAM :Transviaria Raeda Oneraria + +# Face selection window +STR_FACE_CAPTION :{WHITE}Electio Faciei +STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancellare electionem novae faciei +STR_FACE_OK_TOOLTIP :{BLACK}Confirmare electionem novae faciei +STR_FACE_RANDOM :{BLACK}Commiscere + +STR_FACE_MALE_BUTTON :{BLACK}Masculina +STR_FACE_MALE_TOOLTIP :{BLACK}Eligere facies masculinas +STR_FACE_FEMALE_BUTTON :{BLACK}Feminea +STR_FACE_FEMALE_TOOLTIP :{BLACK}Eligere facies femineas +STR_FACE_NEW_FACE_BUTTON :{BLACK}Facies Nova +STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Creare novam faciem fortuitam +STR_FACE_ADVANCED :{BLACK}Praecipua +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Electio faciei praecipua +STR_FACE_SIMPLE :{BLACK}Simpliciter +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Eligere faciem simpliciter +STR_FACE_LOAD :{BLACK}Legere +STR_FACE_LOAD_TOOLTIP :{BLACK}Legere faciem dilectam +STR_FACE_LOAD_DONE :{WHITE}Facies dilecta lecta est ex fasciculo OpenTTD configurationis +STR_FACE_FACECODE :{BLACK}Numerus faciei lusoris +STR_FACE_FACECODE_TOOLTIP :{BLACK}Spicere vel eligere numerum praesidis societatis faciei +STR_FACE_FACECODE_CAPTION :{WHITE}Spicere vel eligere numerum praesidis societatis faciei +STR_FACE_FACECODE_SET :{WHITE}Novus numerus faciei electus est +STR_FACE_FACECODE_ERR :{WHITE}Numerus faciei confirmatus non est - oportet esse numerus inter 0 et 4,294,967,295! +STR_FACE_SAVE :{BLACK}Servare +STR_FACE_SAVE_TOOLTIP :{BLACK}Servare faciem dilectam +STR_FACE_SAVE_DONE :{WHITE}Haec facies servabit ad dilectam tuam in fasciculo OpenTTD configurationis +STR_FACE_EUROPEAN :{BLACK}Europaea +STR_FACE_SELECT_EUROPEAN :{BLACK}Eligere facies Europaeas +STR_FACE_AFRICAN :{BLACK}Africana +STR_FACE_SELECT_AFRICAN :{BLACK}Eligere facies Africanas +STR_FACE_YES :Ita +STR_FACE_NO :Non +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Apponere mystacem vel inaurem +STR_FACE_HAIR :Capilli: +STR_FACE_HAIR_TOOLTIP :{BLACK}Mutare capillos +STR_FACE_EYEBROWS :Supercilia: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Mutare supercilia +STR_FACE_EYECOLOUR :Color oculorum: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Mutare colorem oculorum +STR_FACE_GLASSES :Perspicilla: +STR_FACE_GLASSES_TOOLTIP :{BLACK}Apponere perspicilla +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Mutare perspicilla +STR_FACE_NOSE :Nasus: +STR_FACE_NOSE_TOOLTIP :{BLACK}Mutare nasum +STR_FACE_LIPS :Labra: +STR_FACE_MOUSTACHE :Mystax: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Mutare labra vel mystacem +STR_FACE_CHIN :Mentum: +STR_FACE_CHIN_TOOLTIP :{BLACK}Mutare mentum +STR_FACE_JACKET :Vestis: +STR_FACE_JACKET_TOOLTIP :{BLACK}Mutare vestem +STR_FACE_COLLAR :Collare: +STR_FACE_COLLAR_TOOLTIP :{BLACK}Mutare collare +STR_FACE_TIE :Focale: +STR_FACE_EARRING :Inauris: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mutare focale vel inaurem + +# Network server list +STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Modus Plurium Lusorum +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Ostensum +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Eligere servatrum ostensum (interretis) aut non ostensum (LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Non +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ita +STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nomen lusoris: +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Hoc est nomen tuum aliis lusoribus visibile + +STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nomen +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nomen ludi +STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clientes +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes currentes / clientes max.{}Societates currentes / societates max. +STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Magnitudo tabulae +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Magnitudo ludi tabulae{}Preme ut magnitudine separenur +STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dies +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Dies currens +STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Anni +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Numerus ludi annorum +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Lingua, editio servatri, etc. + +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Eligere ludum ex indice +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Servatrum prius iunctum: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Eligere servatrum abs te prius adhibitum + +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}LUDI INDICIA +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Terra: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Magnitudo tabulae: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Editio servatri: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Inscriptio servatri: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Dies initii: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Dies currens: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Tessera custoditum! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVATRUM CLAUSUM +STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVATRUM PLENUM +STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}EDITIO IMPAR +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF IMPARIA + +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Ludum iungere +STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Servatrum instaurare +STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Iterum arcessere indicia servatri + +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Servatrum quaerere +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Quarere servatrum in rete +STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Addere servatrum +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Addit servatrum indici quod semper inspicetur si ludus activus insit +STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Servatrum incohare +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Servatrum tuum proprium incohare + +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Nomen tuum inscribe +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Inscribe inscriptionem IP servatri + +# Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Incipere novum ludum cum pluribus lusoribus + +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nomen ludi: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Hoc ludi nomen monstrabitur aliis lusoribus in ludorum indice +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Elige tesseram +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Custodire tessera ludum tuum, si non vis publicos iungere + +STR_NETWORK_START_SERVER_UNADVERTISED :Non +STR_NETWORK_START_SERVER_ADVERTISED :Ita +STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} clien{P s tes} +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Clientes maximi: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Eligere numerum maximum clientorum. Necesse non est omnes loci pleni esse +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} societa{P s tes} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Societates maximae: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Eligere numerum maximum societatum +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" es} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Spectatores maximi: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Eligere numerum maximum spectatorum +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Lingua adhibita: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Lingua in servatro adhibita + +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Inscribe nomen ludi retis + +# Network game languages +############ Leave those lines in this order!! +STR_NETWORK_LANG_ANY :Quaevis +STR_NETWORK_LANG_ENGLISH :Anglica +STR_NETWORK_LANG_GERMAN :Theodisca +STR_NETWORK_LANG_FRENCH :Francogallica +STR_NETWORK_LANG_BRAZILIAN :Brasilica +STR_NETWORK_LANG_BULGARIAN :Bulgarica +STR_NETWORK_LANG_CHINESE :Sinica +STR_NETWORK_LANG_CZECH :Cecha +STR_NETWORK_LANG_DANISH :Danica +STR_NETWORK_LANG_DUTCH :Batavica +STR_NETWORK_LANG_ESPERANTO :Esperantica +STR_NETWORK_LANG_FINNISH :Finnica +STR_NETWORK_LANG_HUNGARIAN :Hungarica +STR_NETWORK_LANG_ICELANDIC :Islandica +STR_NETWORK_LANG_ITALIAN :Italiana +STR_NETWORK_LANG_JAPANESE :Iaponica +STR_NETWORK_LANG_KOREAN :Coreana +STR_NETWORK_LANG_LITHUANIAN :Lithuanica +STR_NETWORK_LANG_NORWEGIAN :Norvegica +STR_NETWORK_LANG_POLISH :Polonica +STR_NETWORK_LANG_PORTUGUESE :Lusitana +STR_NETWORK_LANG_ROMANIAN :Romanica +STR_NETWORK_LANG_RUSSIAN :Russica +STR_NETWORK_LANG_SLOVAK :Slovaca +STR_NETWORK_LANG_SLOVENIAN :Slovena +STR_NETWORK_LANG_SPANISH :Hispanica +STR_NETWORK_LANG_SWEDISH :Suecica +STR_NETWORK_LANG_TURKISH :Turcica +STR_NETWORK_LANG_UKRAINIAN :Ucrainica +STR_NETWORK_LANG_AFRIKAANS :Africana +STR_NETWORK_LANG_CROATIAN :Croatica +STR_NETWORK_LANG_CATALAN :Catalana +STR_NETWORK_LANG_ESTONIAN :Estonica +STR_NETWORK_LANG_GALICIAN :Gallaica +STR_NETWORK_LANG_GREEK :Graeca +STR_NETWORK_LANG_LATVIAN :Lettonica +############ End of leave-in-this-order + +# Network game lobby +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Atrium Plurium Lusorum + +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Parans ad iungendum: {ORANGE}{STRING} +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Index societatum in hoc ludo. Potes iungere aut novam incipere si locus vacuus adest + +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INDICIA SOCIETATIS +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nomen societatis: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Initium: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Aestimatio societatis: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Pecunia currens: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Reditus anni prioris: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Effectus: {WHITE}{NUM} + +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vehicula: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stationes: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Lusores: {WHITE}{STRING} + +STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Societas Nova +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Creare societatem novam +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Ludum spectare +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Aspicere ludum sicut spectator +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Societatem iungere +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Administrare hanc societatem + +# Network connecting window +STR_NETWORK_CONNECTING_CAPTION :{WHITE}Coniungens... + +############ Leave those lines in this order!! +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Coniungens... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Auctorans... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Manens... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Tabulam arcessens... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Data componens... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Nuntians... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Lndicium ludi arcessens... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Indicium societatis arcessens... +############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} clien{P s tes} ante te +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} adhuc arcessita +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} adhuc arcessita + +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disiungere + +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servatrum tutum est. Tesseram inscribe +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Societas tuta est. Tesseram inscribe + +# Network company list added strings +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Index clientum +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spectare +STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Societas Nova + +# Network client list +STR_NETWORK_CLIENTLIST_KICK :Dimittere +STR_NETWORK_CLIENTLIST_BAN :Expellere +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dare pecuniam +STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Ad omnes loqui +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Ad societatem loqui +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Ad clientem loqui + +STR_NETWORK_SERVER :Servatrum +STR_NETWORK_CLIENT :Cliens +STR_NETWORK_SPECTATORS :Spectatores + +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inscribe quantitatem pecuniae dandam +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator + +# Network set password +STR_COMPANY_PASSWORD_CANCEL :{BLACK}Relinquere tesseram inscriptam +STR_COMPANY_PASSWORD_OK :{BLACK}Dare novam tesseram societati +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Tessera societatis +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Tessera societatis solita +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Fac ut haec tessera societatis solita sit novis societatibus + +# Network company info join/password +STR_COMPANY_VIEW_JOIN :{BLACK}Iungere +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Iungere ludereque in hac societate +STR_COMPANY_VIEW_PASSWORD :{BLACK}Tessera +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Custodire tessera societatem tuam ut clientes inauctorati iungere non possint +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Eligere tesseram societatis + +# Network chat +STR_NETWORK_CHAT_SEND :{BLACK}Mittere +STR_NETWORK_CHAT_COMPANY_CAPTION :[Manui] : +STR_NETWORK_CHAT_CLIENT_CAPTION :[Privatum] {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[Omnibus] : + +STR_NETWORK_CHAT_COMPANY :[Manui] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Manui] Ad {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[Privatum] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Privatum] Ad {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[Omnibus] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Inscribere nuntium ad retis colloquium + +# Network messages +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nullae res retis inventae vel compilata sine ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}Nulli ludi in rete inventi +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Nulla responsa a servatro +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Non potest iungere propter NewGRF imparia +STR_NETWORK_ERROR_DESYNC :{WHITE}Synchronizatio ludi retis defecit +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Connexus retis amissus +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Non potest legere ludum servatum +STR_NETWORK_ERROR_SERVER_START :{WHITE}Servatrum non potest incipi +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Non potest coniungere +STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connexus #{NUM} defecit +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Error protocolis adfuit atque connexus clausus est +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Editio clientis impar est editioni servatri +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Tessera impar +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servatrum plenum est +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Expulsus servatro es +STR_NETWORK_ERROR_KICKED :{WHITE}Dimissus ex servatro es +STR_NETWORK_ERROR_CHEATER :{WHITE}Fallere non licet in hoc servatro +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Nimium iussa servatro mittebas +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Nimis lente eras in tesseram inscribendo +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Computatrum tuum nimis lentius quam servatrum est +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Computatrum tuum nimis lente erat in tabulam geographicam arcessendo +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Computatrum tuum nimis lente erat in ad servatrum iungendo + +############ Leave those lines in this order!! +STR_NETWORK_ERROR_CLIENT_GENERAL :error generalis +STR_NETWORK_ERROR_CLIENT_DESYNC :error desync +STR_NETWORK_ERROR_CLIENT_SAVEGAME :non potuit legere tabulam +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :connexus amissus +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :error protocolli +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF imparia +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :inauctoratus +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :fasciculus irritus vel ignotus +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :editio impar +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nomen iam adhibitum +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :tessera impar +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :agnoscamentum societatis impar in 'DoCommand' +STR_NETWORK_ERROR_CLIENT_KICKED :dimissus a servatro +STR_NETWORK_ERROR_CLIENT_CHEATER :conabatur trica uti +STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servatrum plenum +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :mittebat nimium iussa +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :nulla tessera recipitur +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :connexus nimis lentus +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :tabula geographica arcessebatur nimis lente +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :tabula geographica componebatur nimis lente +############ End of leave-in-this-order + +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Connexus forsitan amissus +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}In {NUM} prior{P e ibus} secund{P o is} nulla data e servatro accipitur + +# Network related errors +STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} +############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Ludus intermissus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Ludus adhuc intermissus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Ludus adhuc intermissus ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Ludus adhuc intermissus ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Ludus adhuc intermissus ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Ludus resumptus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numerus lusorum +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :lusores coniungentes +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :a lusore +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :a ludi scripto +############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :exiens +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ludum iungit +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ludum iungit (Cliens #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} iungit societatem #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} spectatores iungit +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} novam societatem incipit (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ludum disiungit ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} nomen suum mutat ad {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tuae societati largitur {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Largiris {1:STRING} {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servatrum iam clausum est +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servatrum resumit...{}Maneas... + +# Content downloading window +STR_CONTENT_TITLE :{WHITE}Arcessitus Rerum +STR_CONTENT_TYPE_CAPTION :{BLACK}Typus +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Typus rei +STR_CONTENT_NAME_CAPTION :{BLACK}Nomen +STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nomen rei +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Preme in lineam ut indicia monstretur{}Preme in quadrum ut res eligatur ad arcessendum +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Omnes eligere +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Signare omnes res arcessendas esse +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Eligere novas editiones +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Signare omnes editiones noviores quam eas quas iam habes arcessendas esse +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nullas eligere +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Signare nullam rem arcessendam esse +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Quaerere situs externos +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Quaerere res in aliis sitibus interretialibus non in inventario OpenTTD parabiles +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD exiens es! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Condiciones res arcessendi ex sitibus externis sunt variae.{}Necesse est tibi inspicere eos situs et quaerere institutionem quomodo res imponatur intra OpenTTD.{}Visne pergere? +STR_CONTENT_FILTER_TITLE :{BLACK}Colum nominis: +STR_CONTENT_OPEN_URL :{BLACK}Ire ad situm interretialem +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Ire ad situm huius rei +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Arcessere +STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Incipere arcessere res electas +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Magnitudo cuncti arcessitus: {WHITE}{BYTES} +STR_CONTENT_DETAIL_TITLE :{SILVER}INDICIA REI +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Non optavisti hanc rem arcessendam esse +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Optavisti hanc rem arcessendam esse +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Hic ambactus optatus est arcessendus +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Iam hanc rem habes +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Haec res ignota est ac non potest arcessi in OpenTTD +STR_CONTENT_DETAIL_UPDATE :{SILVER}H{G ic aec oc i ae aec} est nova editio veteris {STRING.gen} +STR_CONTENT_DETAIL_NAME :{SILVER}Nomen: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}Editio: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Descriptio: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}Typus: {WHITE}{STRING} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Magnitudo arcessus: {WHITE}{BYTES} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Electa propter: {WHITE}{STRING} +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Ambacti: {WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}Notae: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD compilata est sine "zlib"... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... itaque non potest ullam rem e rete arcessere! + +# Order of these is important! +STR_CONTENT_TYPE_BASE_GRAPHICS :{G=n}Fundamentum Graphicum +STR_CONTENT_TYPE_BASE_GRAPHICS.gen :{G=n}Fundamenti Graphici +STR_CONTENT_TYPE_NEWGRF :{G=n}NewGRF +STR_CONTENT_TYPE_NEWGRF.gen :{G=n}NewGRF +STR_CONTENT_TYPE_AI :{G=f}IA +STR_CONTENT_TYPE_AI.gen :{G=f}IA +STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Bibliotheca IA +STR_CONTENT_TYPE_AI_LIBRARY.gen :{G=f}Bibliothecae IA +STR_CONTENT_TYPE_SCENARIO :{G=n}Scaenarium +STR_CONTENT_TYPE_SCENARIO.gen :{G=n}Scaenarii +STR_CONTENT_TYPE_HEIGHTMAP :{G=f}Tabula Altitudinum +STR_CONTENT_TYPE_HEIGHTMAP.gen :{G=f}Tabulae Altitudinum +STR_CONTENT_TYPE_BASE_SOUNDS :{G=n}Fundamentum Sonicum +STR_CONTENT_TYPE_BASE_SOUNDS.gen :{G=n}Fundamenti Sonici +STR_CONTENT_TYPE_BASE_MUSIC :{G=n}Fundamentum Musicum +STR_CONTENT_TYPE_BASE_MUSIC.gen :{G=n}Fundamenti Musici +STR_CONTENT_TYPE_GAME_SCRIPT :{G=n}Ludi Scriptum +STR_CONTENT_TYPE_GAME_SCRIPT.gen :{G=n}Ludi Scripti +STR_CONTENT_TYPE_GS_LIBRARY :{G=f}Bibliotheca Ludi Scriptorum +STR_CONTENT_TYPE_GS_LIBRARY.gen :{G=f}Bibliothecae Ludi Scriptorum + +# Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Res arcessens... +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Fasciculos requirens... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Arcessens {STRING} ({NUM} ex {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Transmissio completa +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} ex {BYTES} arcessita ({NUM} %) + +# Content downloading error messages +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Non poterat iungere ad rerum servatrum... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Transmissio defecit... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... connexus amissus +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fasciculus non scriptabilis +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Non poterat fasciculum arcessitum decomprimere + +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Graphica absenta +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD graphica requirit sed nulla inventa sunt. Permittisne OpenTTD arcessere et imponere haec graphica? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ita, arcessere graphica +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Non, OpenTTD exire + +# Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}Optiones Perluciditatis +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Mutare perluciditatem signorum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Mutare perluciditatem arborum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Mutare perluciditatem aedificiorum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Mutare perluciditatem industriarum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Mutare perluciditatem structurarum sicut stationes, receptacula, et interloci. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Mutare perluciditatem pontium. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Mutare perluciditatem ornamentorum sicut phari et emissoria. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Mutare perluciditatem catenariae. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Mutare perluciditatem signorum onerandi. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Facere ut res invisibles sint, non tantum perlucidae + +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Formula Graphica Onerum Cursus +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Omnia +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nulla +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Eligere societates monstrandas + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}non usus +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}satur +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}superoneratus + +# Base for station construction window(s) +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Regio Acceptionis +STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Celata +STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ostensa +STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Haud ostendere regionem acceptionis loci struendi +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Ostendere regionem acceptionis loci struendi +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Accipiuntur: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Produntur: {GOLD}{CARGO_LIST} + +# Join station window +STR_JOIN_STATION_CAPTION :{WHITE}Iungere stationem +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Struere discretam stationem + +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Iungere interlocum +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Struere discretum interlocum + +# Rail construction toolbar +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Constructio Ferriviarum +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Constructio Electricarum Ferriviarum +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Constructio Monoorbitarum +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Constructio Maglev + +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Struere ferriviam. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Struere ferriviam automatico modo. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Struere receptaculum traminum (ad tramina ministranda ac emenda). Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Struere interlocum ferriviarium. Ctrl pressa, interloci iungendi essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Struere stationem ferriviariam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Struere signalia ferriviaria. Ctrl mutat inter semaphora et signalia electrica{}Constuctio trahendo struit signalia in lineam; Ctrl+trahendo signalia struit usque ad compitum signaleve secundum{}Ctrl+Preme ut fenestra signalium ostendatur celeturve. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Struere pontem ferriviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Struere cuniculum ferriviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Mutare inter ferrivias, signalia, interlocos, et stationes struendas/removendas. Ctrl pressa, etiam astaria interlocorum stationumque removenda sunt. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Mutare typum astarii. Shift mutat inter constructionem et aestimationem monstrandam + +STR_RAIL_NAME_RAILROAD :Ferrivia +STR_RAIL_NAME_RAILROAD.gen :Ferriviarium +STR_RAIL_NAME_ELRAIL :Ferrivia electrica +STR_RAIL_NAME_ELRAIL.gen :Electricum Ferriviarium +STR_RAIL_NAME_MONORAIL :Monoorbita +STR_RAIL_NAME_MONORAIL.gen :Monoorbitarium +STR_RAIL_NAME_MAGLEV :Maglev +STR_RAIL_NAME_MAGLEV.gen :Maglev + +# Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Directio Receptaculi Traminum +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem receptaculi traminum + +# Rail waypoint construction window +STR_WAYPOINT_CAPTION :{WHITE}Interlocus +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Eligere typum interloci + +# Rail station construction window +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Electio Ferriviariae Stationis +STR_STATION_BUILD_ORIENTATION :{BLACK}Directio +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem ferriviae stationis +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Numerus suggestuum +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Eligere numerum suggestuum ferriviae stationis +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Longitudo suggestuum +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Eligere longitudinem ferriviae stationis +STR_STATION_BUILD_DRAG_DROP :{BLACK}Trahere Ponereque +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Struere stationem trahendo ponendoque + +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eligere classem stationum monstrandam +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Eligere typum stationis struendum + +STR_STATION_CLASS_DFLT :Statio solita +STR_STATION_CLASS_WAYP :Interloci + +# Signal window +STR_BUILD_SIGNAL_CAPTION :{WHITE}Electio Signalium +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Signale Zonale (semaphoricum){}Hoc est signale simplicissimum, tantum unum tramen licet inesse inter signalia zonalia +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Signale Aditus (semaphoricum){}Viride est dum est signale viride exitus in astariis sequentibus. Alioquin rubrum est +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Signale Exitus (semaphoricum){}Agit sicut signale zonale sed necesse est signalibus compositis aditusque +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Signale Compositum (semaphoricum){}Signale compositum agit sicut et aditus et exitus signale. Igitur potes facere magnas "arbores" signalium +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Signale Itineris (semaphoricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris usitata possunt transiri a tergo +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Signale Itineris Unius Cursus (semaphoricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris unius cursus non possunt transiri a tergo +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Signale Zonale (electricum){}Hoc est signale simplicissimum, tantum unum tramen licet inesse inter signalia zonalia +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Signale Aditus (electricum){}Viride est dum est signale viride exitus in astariis sequentibus. Alioquin rubrum est +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Signale Exitus (electricum){}Agit sicut signale zonale sed necesse est signalibus compositis aditusque +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Signale Compositum (electricum){}Signale compositum agit sicut et aditus et exitus signale. Igitur potes facere magnas "arbores" signalium +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Signale Itineris (electricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris usitata possunt transiri a tergo +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Signale Itineris Unius Cursus (electricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris unius cursus non possunt transiri a tergo +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Mutare Signalia{}Electa, pressio in signale facit ut mutetur in novum typum electum. Ctrl+Preme ut signale mutetur inter semaphoricum et electricum. Shift mutat inter mutationem et aestimationem monstrandam +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densitas signalia trahendi +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minuere densitatem signalia trahendi +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augere densitatem signalia trahendi + +# Bridge selection window +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Eligere Pontem Ferriviarium +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Eligere Pontem Viarium +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Electio pontium - preme in pontem delectum ut struatur +STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Pendulus, Chalybeius +STR_BRIDGE_NAME_GIRDER_STEEL :Trabum, Chalybeius +STR_BRIDGE_NAME_CANTILEVER_STEEL :Prominens, Chalybeius +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Pendulus, Caementicius +STR_BRIDGE_NAME_WOODEN :Ligneus +STR_BRIDGE_NAME_CONCRETE :Caementicius +STR_BRIDGE_NAME_TUBULAR_STEEL :Tubulorum, Chalybeius +STR_BRIDGE_TUBULAR_SILICON :Tubulorum, Silicii + + +# Road construction toolbar +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Constructio Viarum +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Constructio Ferriviarum Stratarium +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Struere viam. Ctrl mutat inter vias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Struere ferriviam stratariam. Ctrl mutat inter struendum/removendum. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Struere partem viae automatico modo. Ctrl mutat inter vias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Struere ferriviam stratariam automatico modo. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Struere receptaculum viarium (ad vehicula viaria ministranda ac emenda). Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Struere receptaculum transviarium (ad raedas transviarias ministrandas ac emendas). Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Struere stationem laophoricam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Struere stationem transviariam vectoriam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Struere stationem autoplaustricam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Struere stationem transviariam onerariam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Monodromus adhibendus/non adhibendus +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Struere pontem viarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Struere pontem transviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Struere cuniculum viarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Struere cuniculum transviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Mutare inter vias struendas/removendas +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Mutare inter ferrivias stratarias struendas/removendas + +# Road depot construction window +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Directio receptaculi viarii +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Eligere directionem receptaculi viarii +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Directio receptaculi transviarii +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Eligere directionem receptaculi transviarii + +# Road vehicle station construction window +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Directio stationis laophoricae +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis laophoricae +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Directio stationis autoplaustricae +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis autoplaustricae +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Directio stationis transviariae vectoriae +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis transviariae vectoriae +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Directio stationis transviariae onerariae +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis transviariae onerariae + +# Waterways toolbar (last two for SE only) +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Constructio Viarum Aquarium +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Viae Aquariae +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Struere canales. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Struere cataracta. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Struere receptaculum navium (ad naves emendas ac ministrandas). Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Struere navale. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Ponere signum monitorium quod interlocus potest esse. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Struere aquae ductum. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Delineare aquae spatium.{}Ponere canalem. Si Ctrl premitur in libra maris, facit ut circumiectum inundetur +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Ponere fluvios + +# Ship depot construction window +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Directio receptaculi navium +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem receptaculi navium + +# Dock construction window +STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Navale + +# Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aeroportus +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Struere aeroportum. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam + +# Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Electio aeroportuum +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Eligere typum aeroportus +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Typus aeroportus +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Dispositio {NUM} + +STR_AIRPORT_SMALL :Parvus +STR_AIRPORT_CITY :Urbanus +STR_AIRPORT_METRO :Metropolitanus +STR_AIRPORT_INTERNATIONAL :Internationalis +STR_AIRPORT_COMMUTER :Suburbanus +STR_AIRPORT_INTERCONTINENTAL :Intercontinentalis +STR_AIRPORT_HELIPORT :Helicopterarium +STR_AIRPORT_HELIDEPOT :Heliportus +STR_AIRPORT_HELISTATION :Helistatio + +STR_AIRPORT_CLASS_SMALL :Aeroportus parvi +STR_AIRPORT_CLASS_LARGE :Aeroportus magni +STR_AIRPORT_CLASS_HUB :Aeroportus amplissimi +STR_AIRPORT_CLASS_HELIPORTS :Heliportus + +STR_STATION_BUILD_NOISE :{BLACK}Sonitus factus: {GOLD}{COMMA} + +# Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}Plasmatio Terrae +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Inclinare angulum terrae. Dum trahitur, primus angulus electus inclinatur deinde area electa levigatur ad altitudinem primi anguli inclinati. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Tollere angulum terrae. Dum trahitur, primus angulus electus tollitur deinde area electa levigatur ad altitudinem primi anguli sublati. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Levigare terram ad altitudinem primi anguli electi. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Emere terram utendam. Shift mutat inter constructionem et aestimationem monstrandam + +# Object construction window +STR_OBJECT_BUILD_CAPTION :{WHITE}Electio ornamentorum +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Eligere ornamentum struendum. Shift mutat inter constructionem et aestimationem monstrandam +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Eligere classem ornamenti struendi +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Praevisum ornamenti +STR_OBJECT_BUILD_SIZE :{BLACK}Magnitudo: {GOLD}{NUM} x {NUM} tegulae + +STR_OBJECT_CLASS_LTHS :Phari +STR_OBJECT_CLASS_TRNS :Emissoria + +# Tree planting window (last two for SE only) +STR_PLANT_TREE_CAPTION :{WHITE}Arbores +STR_PLANT_TREE_TOOLTIP :{BLACK}Eligere arborem serendam. Si tegula iam arborem habet, plures arbores fortuitas addentur (forsitan non idem typus arboris) +STR_TREES_RANDOM_TYPE :{BLACK}Arbor fortuita +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Ponere atbores fortuitas. Shift mutat inter constructionem et aestimationem monstrandam +STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbores fortuitae +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Serere arbores fortuitas per terram + +# Land generation window (SE) +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Plasmatio Terrae +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Ponere locos saxosos in terra +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definire spatium desertum.{}Ctrl pressa, desertum removeatur +STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Augere spatium terrae inclinandae/tollendae +STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Minuere spatium terrae inclinandae/tollendae +STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Creare terram forte +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Novum scaenarium creare +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reponere terram +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Removere omnes societatis possessiones + +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reponere terram +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Esne certus te velle omnes societatis possessiones removere? + +# Town generation window (SE) +STR_FOUND_TOWN_CAPTION :{WHITE}Conditus Oppidorum +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Novum Oppidum +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Condere novum oppidum. Shift mutat inter constructionem et aestimationem monstrandam +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Oppidum Fortuitum +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Condere oppidum in loco fortuito +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Plura Oppida Fortuita +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Condere oppida fortuita per tabulam + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nomen Oppidi: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Inscribe nomen oppidi +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Preme ut oppidi nomen inscribas +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nomen fortuitum +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Creare novum nomen fortuitum + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Magnitudo oppidi: +STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Parva +STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mediocris +STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Magna +STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Fortuita +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Eligere magnitudinem oppidi +STR_FOUND_TOWN_CITY :{BLACK}Urbs +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Urbes crescunt oppidis celerius{}Etiam maiores sunt cum conduntur + +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Dispositio viarum oppidi: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Eligere dispositionem viarum huic oppido adhibendam +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalis +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Viae satius +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Cancelli 2x2 +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Cancelli 3x3 +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Fortuita + +# Fund new industry window +STR_FUND_INDUSTRY_CAPTION :{WHITE}Condere novam industriam +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Eligere industriam ex indice +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Plures industrae fortuitae +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Serere industrias fortuitas per tabulam +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Pretium: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospicere +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Struere +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Condere + +# Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Catena industrialis {STRING.gen} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Catena industrialis {STRING.gen} +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Industriae producentes +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Industriae accipientes +STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Aedificia Oppidorum +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Preme in industriam ut monstrentur praebitores emptoresque eius +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Preme in onus ut monstrentur praebitores emptoresque eius +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Ostendere catenam +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Ostendere onera, praebitores, ac emptores huius industriae +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Connectere ad tabulam parvam +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Etiam monstrare industrias aptas in parva tabula +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Onus eligere +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Eligere onus monstrandum +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Industriam eligere +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Eligere industriam monstrandam + +# Land area window +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Indicia Terrae Regionis +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Pretium vacuefaciendi: {LTBLUE}N/A +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Pretium vacuefaciendi: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Reditus vacuefaciendi: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A +STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Possessor: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Possessor viae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Possessor ferriviae stratariae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Possessor ferriviae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Auctoritas vicinalis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nulla +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinatae: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Dies struendi: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classis stationis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typus stationis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Typus aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nomen aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nomen tegulae aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onera accepta: {LTBLUE} +STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocitas maxima ferriviae: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Velocitas maxima viae: {LTBLUE}{VELOCITY} + +# Description of land area of different tiles +STR_LAI_CLEAR_DESCRIPTION_ROCKS :Saxa +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terra Aspera +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terra Nuda +STR_LAI_CLEAR_DESCRIPTION_GRASS :Herba +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Agri +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terra Nivea +STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserta + +STR_LAI_RAIL_DESCRIPTION_TRACK :Astarium {STRING.gen} +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Astarium {STRING.gen} cum signalibus zonalibus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Astarium {STRING.gen} cum signalibus aditus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Astarium {STRING.gen} cum signalibus exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Astarium {STRING.gen} cum signalibus itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et aditus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Astarium {STRING.gen} cum signalibus aditus et exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus aditus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Astarium {STRING.gen} cum signalibus aditus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus aditus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus exitus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Astarium {STRING.gen} cum signalibus exitus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus exitus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Astarium {STRING.gen} cum signalibus compositis et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus compositis et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus itineris et unius cursus itineris +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Receptaculum {STRING.gen} + +STR_LAI_ROAD_DESCRIPTION_ROAD :Via +STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Via cum lampadibus +STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Via arborata +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Receptaculum viarium +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Transitus ferriviarius +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Ferrivia strataria + +# Houses come directly from their building names +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (adhuc construitur) + +STR_LAI_TREE_NAME_TREES :Arbores +STR_LAI_TREE_NAME_RAINFOREST :Silva pluvialis +STR_LAI_TREE_NAME_CACTUS_PLANTS :Cacti + +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Statio ferriviaria +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Tugurium +STR_LAI_STATION_DESCRIPTION_AIRPORT :Aeroportus +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Statio autoplaustrica +STR_LAI_STATION_DESCRIPTION_BUS_STATION :Statio laophorica +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Navale +STR_LAI_STATION_DESCRIPTION_BUOY :Signum monitorium +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Interlocus + +STR_LAI_WATER_DESCRIPTION_WATER :Aqua +STR_LAI_WATER_DESCRIPTION_CANAL :Canalis +STR_LAI_WATER_DESCRIPTION_LOCK :Cataracta +STR_LAI_WATER_DESCRIPTION_RIVER :Flumen +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Littus vel ripa +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Receptaculum Navium + +# Industries come directly from their industry names + +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Ferriviae cuniculus +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Viae cuniculus + +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Pons ferriviarius pendulus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Pons ferriviarius trabum chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Pons ferriviarius prominens chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Pons ferriviarius pendulus caementicius ferratus +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Pons ferriviarius ligneus +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Pons ferriviarius caementicius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Pons ferriviarius tubulorum + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Pons viarius pendulus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Pons viarius trabibus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Pons viarius prominens chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Pons viarius pendulus caementicius ferratus +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Pons viarius ligneus +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Pons viarius caementicius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Pons viarius tubulorum + +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aquae ductus + +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Emissorium +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Pharus +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sedes primaria societatis +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terra societatis + +# About OpenTTD window +STR_ABOUT_OPENTTD :{WHITE}De OpenTTD +STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Privilegium impressorium originale {COPYRIGHT} MCMXCV Chris Sawyer, Omnia proprietatis iura reservantur +STR_ABOUT_VERSION :{BLACK}OpenTTD editio {REV} +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} MMII-MMXV Manus OpenTTD + +# Save/load game/scenario +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Servare Ludum +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Legere Ludum +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Servare Scaenarium +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Legere Scaenarium +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Legere tabulam altitudinum +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Servare tabulam altitudinum +STR_SAVELOAD_HOME_BUTTON :{BLACK}Preme ut salias ad currens directorium solitum servandi/legendi +STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} reliqua +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Index discorum, directoriorum, et ludorum servatorum +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nomen electum ludo servato +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Delere +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Delere ludum electum +STR_SAVELOAD_SAVE_BUTTON :{BLACK}Servare +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Servare ludum currentem nomine electo +STR_SAVELOAD_LOAD_BUTTON :{BLACK}Legere +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Legere ludum electum +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Legere tabulam altitudinum electam +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludi indicia +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nulla indicia parabilia +STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} + +STR_SAVELOAD_OSKTITLE :{BLACK}Inscribe nomen ludi + +# World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Creatio Orbis Terrarum +STR_MAPGEN_MAPSIZE :{BLACK}Tabulae magnitudo: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Eligere magnitudinem tegularum tabulae geographicae. Tegulae parabiles fere minores erunt +STR_MAPGEN_BY :{BLACK}* +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Numerus oppidorum: +STR_MAPGEN_DATE :{BLACK}Dies: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Numerus industriarum: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitudo tabulae maxima: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augere maximam altitudinem montium in tabula unum gradum +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Minuere maximam altitudinem montium in tabula unum gradum +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altitudo nivis lineae: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Tollere altitudinem lineae nivis +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Inclinere altitudinem lineae nivis +STR_MAPGEN_LAND_GENERATOR :{BLACK}Generatrum terrae: +STR_MAPGEN_TREE_PLACER :{BLACK}Algorithmus arbores ponendi: +STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typus terrae: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Magnitudo maris: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Numerus fluviorum: +STR_MAPGEN_SMOOTHNESS :{BLACK}Lenitas: +STR_MAPGEN_VARIETY :{BLACK}Partitio Varietatis: +STR_MAPGEN_GENERATE :{WHITE}Creare + +# Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}Fines tabulae: +STR_MAPGEN_NORTHWEST :{BLACK}Corus +STR_MAPGEN_NORTHEAST :{BLACK}Eurus +STR_MAPGEN_SOUTHEAST :{BLACK}Aquilo +STR_MAPGEN_SOUTHWEST :{BLACK}Africus +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Quilibet +STR_MAPGEN_BORDER_WATER :{BLACK}Aqua +STR_MAPGEN_BORDER_RANDOM :{BLACK}Fortuiti +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Fortuiti +STR_MAPGEN_BORDER_MANUAL :{BLACK}Manu + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Circuitus tabulae altitudinum: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nomen tabulae altitudinum: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Magnitudo: +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} + +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Mutare altitudinem tabulae maximam +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mutare altitudinem lineae nivis +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mutare annum initii + +# SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}Typus Scaenarii +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terra plana +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Creare terram planam +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Terrae fortuitae +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Altitudo terrae planae: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Inclinere altitudinem terram planam +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Tollere altitudinem terram planam + +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Mutare altitudinem planae terrae + +# Map generation progress +STR_GENERATION_WORLD :{WHITE}Mundum Plasmans... +STR_GENERATION_ABORT :{BLACK}Desinere +STR_GENERATION_ABORT_CAPTION :{WHITE}Desinere Creationem Mundi +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Esne certus te velle desinere creationem? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% factum +STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}Creatio orbis terrarum +STR_GENERATION_RIVER_GENERATION :{BLACK}Creatio fluminum +STR_GENERATION_TREE_GENERATION :{BLACK}Creatio arborum +STR_GENERATION_OBJECT_GENERATION :{BLACK}Creatio ornamentorum +STR_GENERATION_CLEARING_TILES :{BLACK}Creatio terrarum saxosarum asperarumque +STR_GENERATION_SETTINGUP_GAME :{BLACK}Ludum instruens +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Tegularum cursum exsequens +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Scriptum exsequens +STR_GENERATION_PREPARING_GAME :{BLACK}Ludum parans + +# NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Optiones NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Indicia NewGRF descripta +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Fasciculi NewGRF activi +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Fasciculi NewGRF inactivi +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Eligere rationem: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Series colans: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Legere rationem electam +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Servare rationem +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Servare hanc indicem rationi +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Inscribere nomen rationis +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Delere rationem +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Delere rationem electam +STR_NEWGRF_SETTINGS_ADD :{BLACK}Addere +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Addere fasciculum NewGRF electum configurationi tuae +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Iterum quaerere fasciculos +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Recensere indicem fasciculorum NewGRF +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Removere +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Removere fasciculum NewGRF electum ex indice +STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Sursum Movere +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Movere fasciculum NewGRF electum sursum in indice +STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Deosrum Movere +STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Movere fasciculum NewGRF electum deorsum in indice +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Imponere novas editiones +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Imponere eos fasciculos NewGRF qui novior sunt +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Index fasciculorum NewGRF qui sunt impositi + +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Eligere parametra +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Monstrare parametra +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Mutare coloris tabulam +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Mutare coloris tabulam huius NewGRF.{}Utere cum colores huius NewGRF videntur esse rosei +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Confirmare mutationes + +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Quaere res absentes in interrete +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Inspicere si res absentes in inventario Interretiale sunt + +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nomen fasciculi: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}Agnoscamentum GRF: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}Editio: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Editio congrua minima: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Coloris tabula: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametra: {SILVER}{STRING} + +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nulla indicia parabilia +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Par fasciculus non inventus +STR_NEWGRF_SETTINGS_DISABLED :{RED}Neglectum +STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibilis est huic OpenTTD editioni + +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Servare rationem +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Index rationum. Unam elige ut transcribatur nomini infero +STR_SAVE_PRESET_TITLE :{BLACK}Inscribe nomen rationis +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nomen electum rationis conservandum +STR_SAVE_PRESET_CANCEL :{BLACK}Cancellare +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Non mutare rationem +STR_SAVE_PRESET_SAVE :{BLACK}Servare +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Rationem conservare huic nomini + +# NewGRF parameters window +STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Mutare parametra NewGRF +STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Claudere +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Redire +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Facere ut quodque parametrum solito reversum sit +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametrum {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Numerus parametrorum: {ORANGE}{NUM} + +# NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspicere - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parens +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspicere obiectum parentis + +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ad {HEX} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiectum +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typus ferriviae + +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF var 60+x parametrum (sedecimale) + +# Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Dirigens spiritum {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Spiritum secundum +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedere ad spiritum naturalem secundum et, termino contacto, ad primum revertere +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ire ad spiritum +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ire ad spiritum electum. Si spiritus non naturalis sit, procedere ad secundum spiritum naturalem +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Spiritum priorem +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ire ad spiritum naturalem priorem et, termino contacto, ad ultimum revertere +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Imago spiritus electi. Directio neglegitur cum hic spiritus pingitur +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movere spiritum mutatione X et Y incrementa +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reponere relativas +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reponere positiones relativas +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Positio X: {NUM}, Positio Y: {NUM} (Absolutae) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Positio X: {NUM}, Positio Y: {NUM} (Relativae) +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Eligere spiritum +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Eligere spiritum e scrinio + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Ire ad spiritum + +# NewGRF (self) generated warnings/errors +STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_WARNING :{RED}Cautio: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Error Fatalis: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Error NewGRF fatalis: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} non operat apud editionem TTDPatch ab OpenTTD dicta +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} spectat ad editionem {STRING} TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} spectat ad {STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Parametrum irritum {1:STRING}: parametrum {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :Necesse est {1:STRING} legere ante {STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :Necesse est {1:STRING} legere post {STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} poscit editionem OpenTTD {STRING} sive maiorem +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :fasciculum GRF cui designatus est transferre +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Nimis NewGRF lecta sunt +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Lectio {1:STRING} ut NewGRF fixum cum {STRING} potest desynchronizare +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Spiritus repens (spiritus {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Obiectum Actionis 0 ignotum {4:HEX} (spiritus {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Conatus agnoscamento irrito uti (spiritus {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} spiritum corruptum habet. Omnes spiritus corrupti monstrabuntur forma rubro puncto interrogativo - ? +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Continet plures Actiones 8 (spiritus {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Lectio post terminum pseudospiritus (spiritus {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem.{}Quoniam ludis {YELLOW}editionem OpenTTD adhuc in explicando{WHITE}, fortasse etiam tibi necesse est {YELLOW}editio fundamenti graphici OpenTTD in explicando{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Opes GRF desideratae non parabiles (spiritus {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} neglectus est a {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Irrita/ignota dispositio spiritus (spiritus {3:NUM}) + +# NewGRF related 'general' warnings +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Maxime Cavendum Est! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ludum euntem mutaturus es. Igitur, ludum corruatur sive OpenTTD frangatur. Noli queri de mendis harum rerum.{}Esne valde certus te pergere velle? + +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Addere fasciculum non licet nam adest agnoscamentum GRF duplicatum +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Fasciculus congruus lectus (nam fasciculus idem non inventum fuit) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Addere fasciculum non licet; nimis NewGRF adsunt + +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Fasciculi congrui lecti in loco fasciculorum absentorum +STR_NEWGRF_DISABLED_WARNING :{WHITE}Fasciculi absentes remoti sunt +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fasciculi GRF absunt +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}OpenTTD forsitan corruatur resumendo. Noli queri de ruinis sequentibus.{}Esne valde certus te ludum resumere velle? + +# NewGRF status +STR_NEWGRF_LIST_NONE :Nulli +STR_NEWGRF_LIST_ALL_FOUND :Omnes fasciculi adsunt +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fasciculi congrui inventi +STR_NEWGRF_LIST_MISSING :{RED}Fasciculi absunt + +# NewGRF 'it's broken' warnings +STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' probabiliter faciet ut ludus desynchronizetur corruaturve +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Nam mutavit potestatem currus '{1:ENGINE}' extra receptaculum +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nam mutavit longitudinem vehiculi '{1:ENGINE}' extra receptaculum +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Nam mutavit capacitatem vehiculi '{1:ENGINE}' extra aut receptaculum aut reficiendum +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tramen '{VEHICLE}' a '{COMPANY}' posessum longitudinem irritam habet. Probabiliter accidit quod menda sunt in NewGRF. Ludus desynchronizet vel corruat + +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' affert indicium mendosum +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Indicium oneris/reficiendi '{1:ENGINE}' post constructionem differt eo quod est in indice emptionis. Ergo fortasse autoredemptio/automutatio non possit reficere +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' facit ut versatur ad infinitum in revocatione productionis +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Revocatio {1:HEX} reddidit conlationem ignotam irritamve {2:HEX} + +# 'User removed essential NewGRFs'-placeholders for stuff without specs +STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO_ABBREV :?? +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} +STR_NEWGRF_INVALID_ENGINE : +STR_NEWGRF_INVALID_INDUSTRYTYPE : + +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + +# NewGRF scanning window +STR_NEWGRF_SCAN_CAPTION :{WHITE}Fasciculos NewGRF inspiciens +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Fasciculos NewGRF inspiciens. Fortasse diu erit si multi fasciculi adsunt... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF inspecta ex fere {NUM} NewGRF +STR_NEWGRF_SCAN_ARCHIVES :Fasciculos compressos inspiciens + +# Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}Index Signorum - {COMMA} Sign{P um a} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Sequi casum litterarum +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Mutare secutionem casus litterarum cum signa comparantur seriei colanti + +# Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}Mutare signum +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Procedere signo secundo +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Recedere signo priori + +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Inscribe nomen signi + +# Town directory window +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Oppida +STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nulla - +STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomina oppidorum - preme in nomen ut conspectus supra oppidum locetur. Ctrl+Preme ut novam fenestram conspectus supra oppidum aperiatur +STR_TOWN_POPULATION :{BLACK}Incolae mundi: {COMMA} + +# Town view window +STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Urbs) +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Incolae: {ORANGE}{COMMA}{BLACK} Aedificia: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Vectores mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Epistulae mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Onera mandata ad oppidum crescendum: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} mandatur +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} hieme mandatur +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} tradit{G 0 us a um i ae a} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (adhuc mandat{G 1 us a um i ae a}) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (tradit{G 1 us a um i ae a}) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Oppidum crescit {ORANGE}{COMMA}{BLACK} quoque die +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Oppidum crescit {ORANGE}{COMMA}{BLACK} quoque die (stimulatus) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Oppidum {RED}non{BLACK} crescit +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Finis soniti in oppido: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hoc oppidum. Ctrl+Preme ut nova fenestra conspectus aperiatur supra oppidum +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Auctoritas vicinalis +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Monstrare indicia auctoritatis vicinalis +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Mutare nomen oppidi + +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Augere +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Augere oppidum +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Delere +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Delere omnino hoc oppidum + +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renominare Oppidum + +# Town local authority window +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} Auctoritas vicinalis +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Censiones societatum: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Actiones parabiles: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Index rerum in hoc oppido adhibendarum - preme in rem ut indicia rei monstretur +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Facere +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Exsequi actionem electam ex indice + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Coepta praeconia parva +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Coepta praeconia mediocria +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Coepta praeconia magna +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Condere reconstructionem viarum vicinalium +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Struere effigiem praesidis societatis +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Condere nova aedificia +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Emere monopolium +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Largiri auctoritatem vicinalem + +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Incipere coepta praeconia parva, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Incipere coepta praeconia mediocria, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Incipere coepta praeconia magna, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Condere reconstructionem retis viarum urbanarum. Reconstructio facit magnam turbam viariam in oppido 6 menses.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Struere effigiem praesidis tuae societatis in oppido.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Condere nova aedificia mercatoria in oppido.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Emere monopolium unius anni in oppido. Auctoritas oppidi licebit vectores oneraque solum ire ad stationes tuas.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Largiri auctoritatem vicinalem ut tua censio augeatur, at difficultas adest: forsitan animadvertaris et graviter puniaris.{}Pretium: {CURRENCY_LONG} + +# Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Metae +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metae Globales +STR_GOALS_GLOBAL_TITLE :{BLACK}Metae globales: +STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Nullae - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Non applicabiles - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_COMPANY_TITLE :{BLACK}Metae Societatis: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in metam ut conspectus moveatur supra industriam/oppidum/tegulam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum/tegulam + +# Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Quaestio +STR_GOAL_QUESTION_CAPTION_INFORMATION :Indicia +STR_GOAL_QUESTION_CAPTION_WARNING :Cautio +STR_GOAL_QUESTION_CAPTION_ERROR :Error + +############ Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Cancellare +STR_GOAL_QUESTION_BUTTON_OK :Ita +STR_GOAL_QUESTION_BUTTON_NO :Non +STR_GOAL_QUESTION_BUTTON_YES :Ita +STR_GOAL_QUESTION_BUTTON_DECLINE :Recusare +STR_GOAL_QUESTION_BUTTON_ACCEPT :Accipere +STR_GOAL_QUESTION_BUTTON_IGNORE :Neglegere +STR_GOAL_QUESTION_BUTTON_RETRY :Iterum conari +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Priorem +STR_GOAL_QUESTION_BUTTON_NEXT :Secundam +STR_GOAL_QUESTION_BUTTON_STOP :Desinere +STR_GOAL_QUESTION_BUTTON_START :Incipere +STR_GOAL_QUESTION_BUTTON_GO :Incipiamus! +STR_GOAL_QUESTION_BUTTON_CONTINUE :Pergere +STR_GOAL_QUESTION_BUTTON_RESTART :Incipere denuo +STR_GOAL_QUESTION_BUTTON_POSTPONE :Procrastinare +STR_GOAL_QUESTION_BUTTON_SURRENDER :Dedere +STR_GOAL_QUESTION_BUTTON_CLOSE :Claudere +############ End of Goal Question button list + +# Subsidies window +STR_SUBSIDIES_CAPTION :{WHITE}Subsidia +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidia portationis oblata: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} a {STRING.abl} ad {STRING.acc}{YELLOW} (ante {DATE_SHORT}) +STR_SUBSIDIES_NONE :{ORANGE}- Nulla - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Itinera iam subventa: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} a {STRING} ad {STRING}{YELLOW} ({COMPANY}{YELLOW}, ad {DATE_SHORT}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in subsidium ut conspectus moveatur supra industriam/oppidum. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum + +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Librum Fabularum +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Librum Fabularum Globalis +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salire ad quamdam paginam eligendo eam in hac indice +STR_STORY_BOOK_PREV_PAGE :{BLACK}Priorem +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ire ad paginam priorem +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Secundam +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ire ad paginam secundam +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Meta irrita + +# Station list window +STR_STATION_LIST_TOOLTIP :{BLACK}Nomina stationum - preme in nomen ut conspectus moveatur supra stationem. Ctrl+Preme ut nova fenestra conspectus aperiatur supra stationem +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Comprime Ctrl ut plures res eligantur +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Statio{P "" nes} +STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} +STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} +STR_STATION_LIST_NONE :{YELLOW}- Nullae - +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Omnes eligere +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Omnes onerum typos eligere (etiam onera non in ulla statione) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nullum onus manens est + +# Station view window +STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} +STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} a {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservata ad onerandum) + +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accipit +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Monstrare index onerum acceptorum +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Onera accepta: {WHITE}{CARGO_LIST} + +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Haec statio monopolio benefit. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} monopolium emit in hoc oppido. + +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Censiones +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Monstrare censiones stationum +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Oblatum menstruum et censio vicinalis: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Ordo +STR_STATION_VIEW_WAITING_STATION :Statione: Manentia +STR_STATION_VIEW_WAITING_AMOUNT :Copia: Manentia +STR_STATION_VIEW_PLANNED_STATION :Statione: Rata +STR_STATION_VIEW_PLANNED_AMOUNT :Copia: Rata +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} a {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} per {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} ad {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} e statione ignota +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} ad aliquam stationem +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} per aliquam stationem +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} ex hac statione +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} per hanc stationem +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} ad hanc stationem +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} continue + +STR_STATION_VIEW_GROUP_S_V_D :Origo-Via-Destinatum +STR_STATION_VIEW_GROUP_S_D_V :Origo-Destinatum-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Origo-Destinatum +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinatum-Origo +STR_STATION_VIEW_GROUP_D_S_V :Destinatum-Origo-Via +STR_STATION_VIEW_GROUP_D_V_S :Destinatum-Via-Origo + +############ range for rating starts +STR_CARGO_RATING_APPALLING :Pessima +STR_CARGO_RATING_VERY_POOR :Prava +STR_CARGO_RATING_POOR :Mala +STR_CARGO_RATING_MEDIOCRE :Mediocris +STR_CARGO_RATING_GOOD :Bona +STR_CARGO_RATING_VERY_GOOD :Proba +STR_CARGO_RATING_EXCELLENT :Praestans +STR_CARGO_RATING_OUTSTANDING :Optima +############ range for rating ends + +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hanc stationem. Ctrl+Preme ut nova fenestra conspectus aperiatur supra stationem +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Mutare nomen stationis + +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Monstrare omnia tramina quae hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Monstrare omnia vehicula viaria quae hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Monstrare omnia aeroplana quae hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Monstrare omnes naves quae hanc stationem in horario habent + +STR_STATION_VIEW_RENAME_STATION_CAPTION :Renominare stationem + +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Claudere aeroportum +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Facere ut aeroplana non appellant in hoc aeroportu + +# Waypoint/buoy view window +STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hunc interlocum. ut nova fenestra conspectus aperiatur supra interlocum +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Mutare nomen interloci +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hoc signum monitorium. ut nova fenestra conspectus aperiatur supra signum monitorium +STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Mutare nomen signi monitorii + +STR_EDIT_WAYPOINT_NAME :{WHITE}Recensere nomen interloci + +# Finances window +STR_FINANCES_CAPTION :{WHITE}{COMPANY} Res Fiscales {BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Expensa/Reditus +STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Constructio +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nova Vehicula +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Pretium Operandi Traminum +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Pretium Operandi Vehiculorum Viariorum +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Pretium Operandi Aeroplanorum +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Pretium Operandi Navium +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Tuitio Possessionum +STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Reditus Traminum +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Reditus Vehiculorum Viariorum +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Reditus Aeroplanorum +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Reditus Navium +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Faenus +STR_FINANCES_SECTION_OTHER :{GOLD}Aliarum Rerum +STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Summa: +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Pecunia +STR_FINANCES_LOAN_TITLE :{WHITE}Creditum +STR_FINANCES_MAX_LOAN :{WHITE}Creditum Maximum: {BLACK}{CURRENCY_LONG} +STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} +STR_FINANCES_BORROW_BUTTON :{BLACK}Mutuari {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Mutuari plurem pecuniam. Ctrl+Preme ut creditum mutuetur quam maxime possis +STR_FINANCES_REPAY_BUTTON :{BLACK}Solvere {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Solvere partem crediti. Ctrl+Preme ut creditum solvatur quam maxime possis +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastructura + +# Company view +STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Praeses) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Condita: {WHITE}{NUM} +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Schema Coloris: +STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehicula: +STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tram{P en ina} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} vehicul{P um a} viari{P um a} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aeroplan{P um a} +STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} nav{P is es} +STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nulla +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Aestimatio societatis: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% posessa a {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructura: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} par{P s tes} ferriviae +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} par{P s tes} viae +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} tegula{P "" e} aquaria{P "" e} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} tegula{P "" e} stationum +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroportus +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nulla + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Struere sedem +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Struere primariam sedem societatis +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Videre sedem +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Videre primariam sedem societatis +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Movere sedem +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Movere primariam sedem societatis aliquo pretio 1% aestimationis valoris societatis. Shift+Preme ut pretium monstretur sine sedem movendo +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Indicia +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Videre indicia descripta infrastructurae + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Facies Nova +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Eligere novam faciem praesidis +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Schema Coloris +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Mutare schema coloris societatis +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nomen Societatis +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Mutare nomen societatis +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nomen Praesidis +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Mutare nomen praesidis + +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Quadrantem sortium huius societatis emere +STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Quadrantem sortium huius societatis vendere +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Quadrantem sortium huius societatis emere. Shift+Preme ut pretium monstretur sine emptione +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Quadrantem sortium huius societatis vendere. Shift+Preme ut pretium monstretur sine emptione + +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nomen Societatis +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nomen Praesidis + +STR_BUY_COMPANY_MESSAGE :{WHITE}Quaerimus aliam societatem emere nostram societatem.{}{}Visne emere {COMPANY} pretio {CURRENCY_LONG}? + +# Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura quam {COMPANY} habet +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Partes ferriviariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signalia +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Partes viariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Viariae +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Ferriviae stratariae +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Tegulae aquariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationes: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Tegulae stationum +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportus +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} per annum + +# Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industriae +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nullae - +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% translat{G 1 us a um i ae a}) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% translat{G 3 us a um i ae a}) +STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomina industriarum - preme in nomen ut conspectus moveatur supra industriam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam + +# Industry view +STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Productio mensis prioris: +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% translat{G 0 us a um i ae a}) +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hanc industriam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Quantitas productionis: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Haec industria mox claudetur! + +############ range for requires starts +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} +############ range for requires ends + +############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Onera utenda manentia: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING} +############ range for produces ends + +STR_CONFIG_GAME_PRODUCTION :{WHITE}Mutare productionem (per octo multiplicatur, ad 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mutare productionem (centesima, ad 800%) + +# Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tram{P en ina} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Vehicul{P um a} Viari{P um a} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P is es} +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeroplan{P um a} + +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Tramina - preme in tramen ut indicia monstretur +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vehicula viaria - preme in vehiculum ut indicia monstretur +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Naves - preme in navem ut indicia monstretur +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeroplana - preme in aeroplanum ut indicia monstretur + +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Lucrum huius anni: {CURRENCY_LONG} (anni prioris: {CURRENCY_LONG}) + +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Hamaxostichi Parabiles +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehicula Viaria Parabilia +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Naves Parabiles +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aeroplana Parabilia +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Videre indicem qui ad vehicula parabilia huius typi spectat + +STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Recensere indicem +STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Mittere iussa ad omnia vehicula huius indicis +STR_VEHICLE_LIST_REPLACE_VEHICLES :Mutare vehicula +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Ministranda Dimmitere + +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Dimittere ad Tugurium + +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Preme ut omnia vehicula huius indicis sistantur +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Preme ut omnia vehicula huius indicis incohentur + +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Iussa communia {COMMA} vehicul{P i orum} + +# Group window +STR_GROUP_ALL_TRAINS :Omnia tramina +STR_GROUP_ALL_ROAD_VEHICLES :Omnia vehicula viaria +STR_GROUP_ALL_SHIPS :Omnes naves +STR_GROUP_ALL_AIRCRAFTS :Omnia aeroplana + +STR_GROUP_DEFAULT_TRAINS :Tramina sine grege +STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehicula viaria sine grege +STR_GROUP_DEFAULT_SHIPS :Naves sine grege +STR_GROUP_DEFAULT_AIRCRAFTS :Aeroplana sine grege + +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Greges - preme in gregem ut index vehiculorum huius gregis ostendeatur. Trahe poneque greges ut ordinentur. +STR_GROUP_CREATE_TOOLTIP :{BLACK}Preme ut grex creatur +STR_GROUP_DELETE_TOOLTIP :{BLACK}Delere gregem electam +STR_GROUP_RENAME_TOOLTIP :{BLACK}Renominare gregem electam +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Preme ut vehicula huius gregis custodiantur contra autocommutationem globalem + +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Gregem Delere +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Esne certus te velle delere hanc gregem eiusque descendentes? + +STR_GROUP_ADD_SHARED_VEHICLE :Addere vehicula communia +STR_GROUP_REMOVE_ALL_VEHICLES :Removere omnia vehicula + +STR_GROUP_RENAME_CAPTION :{BLACK}Renominare gregem + +# Build vehicle window +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Vehicula Ferriviaria Nova +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Vehicula Ferriviaria Electrica Nova +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Vehicula Monoorbitalia Nova +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Vehicula Maglev Nova + +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Vehicula Ferriviaria Nova +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Vehicula Viaria Nova +STR_BUY_VEHICLE_SHIP_CAPTION :Naves Novae +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aeroplana Nova + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Pondus: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocitas: {GOLD}{VELOCITY}{BLACK} Potestas: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}Velocitas: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocitas in mare: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Velocitas in canale flumineve: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Pretium Operandi: {GOLD}{CURRENCY_LONG} per annum +STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacitas: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(refectabilis) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Productum: {GOLD}{NUM}{BLACK} Aetas: {GOLD}{COMMA} ann{P us i} +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Constantia Maxima: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}Pretium: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pondus: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Velocitas: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacitas: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Currus Potentiati: {GOLD}+{POWER}{BLACK} Pondus: {GOLD}+{WEIGHT_SHORT} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refectabilis: {GOLD}{STRING.dat} +STR_PURCHASE_INFO_ALL_TYPES :Omnibus onerum typis +STR_PURCHASE_INFO_ALL_BUT :Omnibus praeterquam {CARGO_LIST.dat} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Vis Tractionis Maxima: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Max. distantia volatus: {GOLD}{COMMA} tegulas + +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Index electionis vehiculorum ferriviariorum. Preme in vehiculum ut plura indicia monstrentur. Ctrl+Preme ut typus vehiculi celetur +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Index electionis vehiculorum viariorum. Preme in vehiculum ut plura indicia monstrentur. Ctrl+Preme ut typus vehiculi celetur +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Index electionis navium. Preme in navem ut plura indicia monstrentur. Ctrl+Preme ut typus navis celetur +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Index electionis aeroplanorum. Preme in aeroplanum ut plura indicia monstrentur. Ctrl+Preme ut typus aeroplani celetur + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Emere Vehiculum +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Emere Vehiculum +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Emere Navem +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Emere Aeroplanum + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Emere vehiculum ferriviarium electum. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Emere vehiculum viarium electum. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Emere navem electam. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Emere aeroplanum electum. Shift+Preme ut pretium monstretur sine emptione + +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Renominare + +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Renominare typum ferriviarii vehiculi +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renominare typum viarii vehiculi +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renominare typum navis +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renominare typum aeroplani + +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Celare + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum vehiculi ferriviarii +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum vehiculi viarii +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum navis +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum aeroplani + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renominare typum ferriviarii vehiculi +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renominare typum viarii vehiculi +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renominare typum navis +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Renominare typum aeroplani + +# Depot window +STR_DEPOT_CAPTION :{WHITE}{DEPOT} + +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Mutare nomen receptaculi +STR_DEPOT_RENAME_DEPOT_CAPTION :Renominare receptaculum + +STR_DEPOT_NO_ENGINE :{BLACK}- +STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehicul{P um a}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) + +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tramina - sinistro trahe vehiculum ut addatur/removeatur tramini, dextrum preme ut indicium monstretur. Ctrl pressa, cuncta catena vehiculorum sequens additur/removetur/indicium eius monstratur +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehicula - dextrum preme in vehiculum ut indicium monstretur +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Naves - dextrum preme in navem ut indicium monstretur +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeroplana - dextrum preme in aeroplanum ut indicium monstretur + +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Huc trahe vehiculum ut vendatur +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Huc trahe vehiculum ut vendatur +STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Huc trahe navem ut vendatur +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Huc trahe aeroplanum ut vendatur + +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Huc trahe hamaxam ut cunctum tramen vendatur + +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Vendere omnia tramina in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vendere omnia vehicula in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Vendere omnes naves in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Vendere omnia aeroplana in tugurio + +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Automutare omnia tramina in receptaculo +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Automutare omnia vehicula viaria in receptaculo +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Automutare omnes naves in receptaculo +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Automutare omnia aeroplana in tugurio + +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nova Vehicula +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nova Vehicula +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novae Naves +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nova Aeroplana + +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novam partem traminis +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novum vehiculum viarium +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novam navem +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novum aeroplanum + +STR_DEPOT_CLONE_TRAIN :{BLACK}Duplicare Tramen +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Duplicare Vehiculum +STR_DEPOT_CLONE_SHIP :{BLACK}Duplicare Navem +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Duplicare Aeroplanum + +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Emet exemplar hamaxostichi electi et omnes currus eius. Preme hunc globulum deinde in hamaxostichum vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Emet exemplar vehiculi viarii electi. Preme hunc globulum deinde in vehiculum viarium vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Emet exemplar navis electae. Preme hunc globulum deinde in navem vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Emet exemplar aeroplani electi. Preme hunc globulum deinde in aeroplanum vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione + +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum ferriviarium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum ferriviarium +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum viarium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum viarium +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum navium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum navium +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc tugurium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra tugurium + +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Ostendere indicem omnium traminum quae habent hoc receptaculum in iussis eorum +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ostendere indicem omnium vehiculorum viariorum qui habent hoc receptaculum in iussis eorum +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Ostendere indicem omnium navium qui habent hoc receptaculum in iussis earum +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Ostendere indicem omnium aeroplanorum qui habent hoc receptaculum in iussis eorum + +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Preme ut omnia tramina in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Preme ut omnia vehicula in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Preme ut omnes naves in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Preme ut omnia aeroplana in hoc tugurio sistantur + +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Preme ut omnia tramina in hoc receptaculo incohentur +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Preme ut omnia vehicula in hoc receptaculo incohentur +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Preme ut omnes naves in hoc receptaculo incohentur +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Preme ut omnia aeroplana in hoc tugurio incohentur + +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Omnia vehicula in receptaculo venditurus es. Esne certus? + +# Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Nuntium a fabricatore vehiculorum +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Nuper fabricamus nov{G um am um os as a} {STRING} - visne uti hoc vehiculo unum annum, ut videamus quomodo operatur antequam omnibus venum damus? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}hamaxam +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}vehiculum viarium +STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}aeroplanum +STR_ENGINE_PREVIEW_SHIP :{G=f}navem +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}hamaxam monoorbitalem +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}hamaxam maglev + +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pretium: {CURRENCY_LONG} Pondus: {WEIGHT_SHORT}{}Velocitas: {VELOCITY} Potestas: {POWER}{}Pretium Operandi: {CURRENCY_LONG} per annum{}Capacitas: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pretium: {CURRENCY_LONG} Pondus: {WEIGHT_SHORT}{}Velocitas: {VELOCITY} Potestas: {POWER} V.T. Max.: {6:FORCE}{}Pretium Operandi: {4:CURRENCY_LONG} per annum{}Capacitas: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY} Range: {COMMA} tiles{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY} Range: {COMMA} tiles{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum + +# Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}Mutare {STRING} - {STRING} +STR_REPLACE_VEHICLE_TRAIN :Tramen +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vehiculum Viarium +STR_REPLACE_VEHICLE_SHIP :Navem +STR_REPLACE_VEHICLE_AIRCRAFT :Aeroplanum + +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicula possessa +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Columna cum vehiculis quae possides +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehicula parabilia +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Columna cum vehiculis parabilibus ad mutandum + +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Eligere typum mutandum +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Eligere novum typum in loco typi sinistri utendum + +STR_REPLACE_VEHICLES_START :{BLACK}Mutationem Vehiculorum Incipere +STR_REPLACE_VEHICLES_NOW :Omnia vehicula statim mutare +STR_REPLACE_VEHICLES_WHEN_OLD :Vehicula vetera solum mutare +STR_REPLACE_HELP_START_BUTTON :{BLACK}Preme ut vehiculum sinistrum electum incipiat commutari vehiculo dextro electo +STR_REPLACE_NOT_REPLACING :{BLACK}Non mutandum est +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nullum vehiculum electum +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} cum vetus +STR_REPLACE_VEHICLES_STOP :{BLACK}Consistere mutationem vehiculorum +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Preme ut mutatio vehiculi sinistri consistatur + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Mutatio: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Mutare inter mutationem hamaxarum curruumque +STR_REPLACE_ENGINES :Hamaxarum +STR_REPLACE_WAGONS :Curruum + +STR_REPLACE_HELP_RAILTYPE :{BLACK}Eligere typum astarii cui est hamaxas commutandas +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Haec monstrat novum vehiculum desideratum, si adest +STR_REPLACE_RAIL_VEHICLES :Vehicula Ferriviaria +STR_REPLACE_ELRAIL_VEHICLES :Vehicula Ferriviaria Electrica +STR_REPLACE_MONORAIL_VEHICLES :Vehicula Monoorbitalia +STR_REPLACE_MAGLEV_VEHICLES :Vehicula Maglev + +STR_REPLACE_REMOVE_WAGON :{BLACK}Ablatio curruum: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Facere ut automutatio longitudinem traminis contineat ablatione curruum (primo primorum), si tramen longius fiat mutatione hamaxae + +# Vehicle view +STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} + +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc tramen. Ctrl+Preme ut conspectus tramen sequatur +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc vehiculum. Ctrl+Preme ut conspectus vechiculum sequatur +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hanc navem. Ctrl+Preme ut conspectus navem sequatur +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc aeroplanum. Ctrl+Preme ut conspectus aeroplanum sequatur + +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere tramen ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere vehiculum ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere navem ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere aeroplanum ad tugurium. Ctrl+Preme ut modo ministretur + +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Emet exemplar hamaxostichi electi et omnes currus eius. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Emet exemplar vehiculi viarii electi. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Emet exemplar navis electae. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Emet exemplar aeroplani electi. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione + +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Impellere tramen post signale sine mora, etsi signale rubrum est + +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reficere tramen alio generi oneris +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reficere vehiculum alii typo oneri +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reficere navem alii typo oneri +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reficere aeroplanum alii typo oneri + +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Cursum traminis reflectere +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Fac ut vehiculum revertatur + +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Monstrare iussa hamaxostichi. Ctrl+Preme ut horarius hamaxostichi monstretur +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Monstrare iussa vehiculi. Ctrl+Preme ut horarius vehiculi monstretur +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Monstrare iussa navis. Ctrl+Preme ut horarius navis monstretur +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Monstrare iussa aeroplani. Ctrl+Preme ut horarius aeroplani monstretur + +STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia traminis +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia vehiculi +STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia navis +STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia aeroplani + +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Actio traminis currens - preme ut tramen sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Actio vehiculi currens - preme ut vehiculum sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Actio navis currens - preme ut navis sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Actio aeroplani currens - preme ut aeroplanum sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum + +# Messages in the start stop button in the vehicle view +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Onerans / Exonerans +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Exiens +STR_VEHICLE_STATUS_CRASHED :{RED}Destructum! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Defectum +STR_VEHICLE_STATUS_STOPPED :{RED}Constitum +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Sistens, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Sine potestate +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Cursum apertum exspectans +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Destinatum nimis procul + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Navigans ad {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sine iussis, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Navigans ad {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Navigans ad {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Iens ministrandum ad {DEPOT}, {VELOCITY} + +# Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Constitum +STR_VEHICLE_COMMAND_STOPPED :{RED}Constitum +STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Incohatum +STR_VEHICLE_COMMAND_STARTED :{GREEN}Incohatum + +# Vehicle details +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Indicia) +STR_VEHICLE_NAME_BUTTON :{BLACK}Nominare + +STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Nominare tramen +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nominare vehiculum +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nominare navem +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nominare aeroplanum + +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aetas: {LTBLUE}{STRING}{BLACK} Pretium operandi: {LTBLUE}{CURRENCY_LONG} per annum +# The next two need to stay in this order +STR_VEHICLE_INFO_AGE :{COMMA} ann{P us i} ({COMMA}) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ann{P us i} ({COMMA}) + +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}Max. distantia volatus: {LTBLUE}{COMMA} tegulas +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pondus: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potestas: {LTBLUE}{POWER}{BLACK} Velocitas maxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pondus: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potestas: {LTBLUE}{POWER}{BLACK} Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}V.T. Max.: {LTBLUE}{FORCE} + +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucrum huius anni: {LTBLUE}{CURRENCY_LONG} (anni prioris: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Constantia: {LTBLUE}{COMMA}% {BLACK}Defecta post ministrationem priorem: {LTBLUE}{COMMA} + +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Factum: {LTBLUE}{NUM}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacitas: {LTBLUE}Nulla{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} + +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Credita transferendi: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervallum ministrationis: {LTBLUE}{COMMA}{NBSP}dies{BLACK} Ministratio prior: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervallum ministrationis: {LTBLUE}{COMMA}%{BLACK} Ministratio prior: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Augere intervallum ministrationis 10. Ctrl+Preme ut augeatur 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minuere intervallum ministrationis 10. Ctrl+Preme ut minuatur 5 + +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Eligere genus intervalli ministrationis +STR_VEHICLE_DETAILS_DEFAULT :Solitus +STR_VEHICLE_DETAILS_DAYS :Diebus +STR_VEHICLE_DETAILS_PERCENT :Per centum + +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nominare tramen +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nominare vehiculum +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nominare navem +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nominare aeroplanum + +# Extra buttons for train details windows +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Factum: {LTBLUE}{NUM}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tota capacitas huius traminis: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) + +STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Vacuum +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} a {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} a {STATION} (x{NUM}) + +STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Onus +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Monstrare indicia oneris portatum +STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Indicia +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Monstrare indicia vehiculorum traminis +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Capacitates +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Monstrare capacitates cuiusque vehiculi +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Tota Onera +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Monstrare totam capacitatem hamaxostichi, per oneris typum + +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacitas: {LTBLUE} + +# Vehicle refit +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Reficere) +STR_REFIT_TITLE :{GOLD}Eligere typum oneris portandum: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}{}{BLACK}Pretium reficiendi: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}{}{BLACK}Reditus reficiendi: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Pretium reficiendi: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Reditus reficiendi: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Eligere vehicula reficienda. Multa vehicula eligantur murem trahendo. Preme in locum vacuum ut cuncta eligatur. Ctrl+Preme ut vehiculum ac omnia sequentia eligantur + +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Eligere oneris typum hamaxosticho transportandum +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Eligere oneris typum vehiculo transportandum +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Eligere oneris typum navi transportandum +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Eligere oneris typum aeroplano transportandum + +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reficere tramen +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reficere vehiculum viarium +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reficere navem +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reficere aeroplanum + +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reficere tramen generi oneris electo +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reficere vehiculum viarium typo oneris electo +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reficere navem typo oneris electo +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reficere aeroplanum typo oneris electo + +# Order view +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Iussa) +STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horarius +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Mutare ad horarium + +STR_ORDERS_LIST_TOOLTIP :{BLACK}Index iussorum - preme in iussum ut eligatur. Ctrl+Preme vagatur ad destinatum +STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} + +STR_ORDERS_END_OF_ORDERS :- - Finis Iussorum - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Finis Iussorum Communium - - + +# Order bottom buttons +STR_ORDER_NON_STOP :{BLACK}Continue +STR_ORDER_GO_TO :I ad +STR_ORDER_GO_NON_STOP_TO :I continue ad +STR_ORDER_GO_VIA :I per +STR_ORDER_GO_NON_STOP_VIA :I continue per +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Eligere si electum iussum continuum sit + +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Plene quidquam onerare +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Onerare si parabile est +STR_ORDER_DROP_FULL_LOAD_ALL :Plene omnia onera onerare +STR_ORDER_DROP_FULL_LOAD_ANY :Plene quidquam onerare +STR_ORDER_DROP_NO_LOADING :Non onerare +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Mutare modum onerandi iusso electo + +STR_ORDER_TOGGLE_UNLOAD :{BLACK}Omnia exonerare +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Exonerare si accipitur +STR_ORDER_DROP_UNLOAD :Plene quidquam onerare +STR_ORDER_DROP_TRANSFER :Transfer +STR_ORDER_DROP_NO_UNLOADING :Non exonerare +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Mutare modum exonerandi iusso electo + +STR_ORDER_REFIT :{BLACK}Reficere +STR_ORDER_REFIT_TOOLTIP :{BLACK}Eligere onus cui reficiendum est in hoc iusso. Ctrl+Preme ut iussum reficiendi removeatur +STR_ORDER_REFIT_AUTO :{BLACK}Reficere in statione +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Eligere onus cui reficiendum est in hoc iusso. Ctrl+Preme ut iussum reficiendi removeatur. Vehicula possunt refici in stationibus tantum si NewGRF sinit +STR_ORDER_DROP_REFIT_AUTO :Oneri fixo +STR_ORDER_DROP_REFIT_AUTO_ANY :Oneri parabili + +STR_ORDER_SERVICE :{BLACK}Ministratio +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ire semper +STR_ORDER_DROP_SERVICE_DEPOT :Ministrari si necesse est +STR_ORDER_DROP_HALT_DEPOT :Consiste +STR_ORDER_SERVICE_TOOLTIP :{BLACK}Transilire huic iusso nisi necesse est ministrari + +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Indicia vehiculi ad quae spectat ordines conditionales + +# Conditional order variables, must follow order of OrderConditionVariable enum +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :portio oneris +STR_ORDER_CONDITIONAL_RELIABILITY :constantia +STR_ORDER_CONDITIONAL_MAX_SPEED :velocitas maxima +STR_ORDER_CONDITIONAL_AGE :aetas (annorum) +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :ministrandum +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :semper +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :aetas reliqua (anni) + +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Quomodo valores electi componuntur indicio vehiculi +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :aequalis est +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :non aequalis est +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :minor est quam +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :aequalis minorve est quam +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :maior est quam +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :aequalis maiorve est quam +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :est +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :non est + +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Valor componendum indicio vehiculi +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Inscribe valorem componendum + +STR_ORDERS_SKIP_BUTTON :{BLACK}Salire +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Transilire iusso currenti, et incipere secundum. Ctrl+Preme ut transiliat ad iussum electum + +STR_ORDERS_DELETE_BUTTON :{BLACK}Delere +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Delere iussum electum +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Delere omnia iussa +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Desinere communicationem +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Desinere iussa communicare. Ctrl+Preme ut etiam omnia iussa huius vehiculi deleantur + +STR_ORDERS_GO_TO_BUTTON :{BLACK}I ad +STR_ORDER_GO_TO_NEAREST_DEPOT :I ad proximum receptaculum +STR_ORDER_GO_TO_NEAREST_HANGAR :I ad proximum tugurium +STR_ORDER_CONDITIONAL :Iussum conditionale +STR_ORDER_SHARE :Iussa communicare +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Inserere novum iussum ante iussum electum, aut ad finem indicis. Ctrl pressa, iussa stationum sunt 'plene quidquam onerare', iussa interlocorum 'continue', et iussa receptaculorum 'ministrare'. 'Iussa communicare' sive Ctrl facit ut iussa communicentur inter hoc ac electum vehiculum. Pressio in aliud vehiculum transcribit iussa ex illo vehiculo. Si adest iussum receptaculi, vehiculum non automatice ministratur + +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Monstrare omnia vehicula quae hunc horarium communicant + +# String parts to build the order string +STR_ORDER_GO_TO_WAYPOINT :I per {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :I continue per {WAYPOINT} + +STR_ORDER_SERVICE_AT :Ministrare ad +STR_ORDER_SERVICE_NON_STOP_AT :Ministrare continue ad + +STR_ORDER_NEAREST_DEPOT :proxmimum +STR_ORDER_NEAREST_HANGAR :proxmimum tugurium +STR_ORDER_TRAIN_DEPOT :receptaculum traminum +STR_ORDER_ROAD_VEHICLE_DEPOT :receptaculum viarium +STR_ORDER_SHIP_DEPOT :receptaculum navium +STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} +STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} + +STR_ORDER_REFIT_ORDER :(Reficere {STRING.dat}) +STR_ORDER_REFIT_STOP_ORDER :(Reficere {STRING.dat} consisteque) +STR_ORDER_STOP_ORDER :(Consiste) + +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} + +STR_ORDER_IMPLICIT :(Implicitum) + +STR_ORDER_FULL_LOAD :(Plene onerare) +STR_ORDER_FULL_LOAD_ANY :(Plene quidquam onerare) +STR_ORDER_NO_LOAD :(Non onerare) +STR_ORDER_UNLOAD :(Exonerare et onerare) +STR_ORDER_UNLOAD_FULL_LOAD :(Exonerare et plene onerare) +STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Exonerare et plene quidquam onerare) +STR_ORDER_UNLOAD_NO_LOAD :(Exonerare et exire vacue) +STR_ORDER_TRANSFER :(Transfer et onerare) +STR_ORDER_TRANSFER_FULL_LOAD :(Transfer et plene onerare) +STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transfer et plene quidquam onerare) +STR_ORDER_TRANSFER_NO_LOAD :(Transfer et exi vacue) +STR_ORDER_NO_UNLOAD :(Non exonerare et onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Non exonerare et plene onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Non exonerare et plene quidquam onerare) +STR_ORDER_NO_UNLOAD_NO_LOAD :(Non exonerare et non onerare) + +STR_ORDER_AUTO_REFIT :(Reficere {STRING.dat}) +STR_ORDER_FULL_LOAD_REFIT :(Reficere {STRING.dat} et plene onerare) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Reficere {STRING.dat} et plene quidquam onerare) +STR_ORDER_UNLOAD_REFIT :(Exonerare, reficere {STRING.dat}, et onerare) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Exonerare, reficere {STRING.dat}, et plene onerare) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Exonerare, reficere {STRING.dat}, et plene quidquam onerare) +STR_ORDER_TRANSFER_REFIT :(Transfer, reficere {STRING.dat}, et onerare) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer, reficere {STRING.dat}, et plene onerare) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer, reficere {STRING.dat}, et plene quidquam onerare) +STR_ORDER_NO_UNLOAD_REFIT :(Non exonerare, reficere {STRING.dat}, et onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Non exonerare, reficere {STRING.dat}, et plene onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Non exonerare, reficere {STRING.dat}, et plene quidquam onerare) + +STR_ORDER_AUTO_REFIT_ANY :oneri parabili + +STR_ORDER_STOP_LOCATION_NEAR_END :[citera] +STR_ORDER_STOP_LOCATION_MIDDLE :[medio] +STR_ORDER_STOP_LOCATION_FAR_END :[ultra] + +STR_ORDER_OUT_OF_RANGE :{RED} (Destinatum secundum extra distantiam volatus maximam est) + +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Sali ad iussum {COMMA} +STR_ORDER_CONDITIONAL_NUM :Sali ad iussum {COMMA} cum {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Sali ad iussum {COMMA} cum {STRING} {STRING} + +STR_INVALID_ORDER :{RED} (Iussum Irritum) + +# Time table window +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horarius) +STR_TIMETABLE_ORDER_VIEW :{BLACK}Iussa +STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Mutare ad aspectum iussorum + +STR_TIMETABLE_TOOLTIP :{BLACK}Horarius - preme in iussum ut eligatur + +STR_TIMETABLE_NO_TRAVEL :(Non est navigandum) +STR_TIMETABLE_NOT_TIMETABLEABLE :Iter (horarius curatur a secundo fixo iusso) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Iter (sine horario) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Iter cum {2:VELOCITY} velocitas maxima (sine horario) +STR_TIMETABLE_TRAVEL_FOR :Iter {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Iter {STRING} cum {VELOCITY} velocitas maxima +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Iter ({STRING}, sine horario) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Iter ({STRING}, sine horario) cum {VELOCITY} velocitas maxima +STR_TIMETABLE_STAY_FOR_ESTIMATED :(mora {STRING}, sine horario) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(iter {STRING}, sine horario) +STR_TIMETABLE_STAY_FOR :cum mora {STRING} +STR_TIMETABLE_AND_TRAVEL_FOR :cum itinere {STRING} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}die{P i rum} +STR_TIMETABLE_DAYS.acc :{COMMA}{NBSP}die{P m s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}punct{P i orum} +STR_TIMETABLE_TICKS.acc :{COMMA}{NBSP}punct{P um a} + +STR_TIMETABLE_TOTAL_TIME :{BLACK}Hic horarius peragitur {STRING.acc} +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Hic horarius peragitur saltem {STRING.acc} (omnia non in horario) + +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Hoc vehiculum ad tempus est +STR_TIMETABLE_STATUS_LATE :{BLACK}Hoc vehiculum est {STRING.acc} tardum +STR_TIMETABLE_STATUS_EARLY :{BLACK}Hoc vehiculum est {STRING.acc} citum +STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Hic horarius adhuc non incipitur +STR_TIMETABLE_STATUS_START_AT :{BLACK}Hic horarius incipietur {STRING} + +STR_TIMETABLE_STARTING_DATE :{BLACK}Dies Initii +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Elige diem ad initium huius horarii. Ctrl+Preme ut dies initialis huius horarii eligatur ac aequaliter partiuntur omnia vehicula quae hoc iussum communicant secundum ordinem eorum, si iussa tota in horariis sunt + +STR_TIMETABLE_CHANGE_TIME :{BLACK}Mutare Tempus +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mutare durationem iussi electi + +STR_TIMETABLE_CLEAR_TIME :{BLACK}Delere Tempus +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Delere durationem iussi electi + +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Mutare Velocitatem Maximam +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Mutare velocitatem itineris maximam iussi electi + +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Delere Velocitatem Maximam +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Delere elocitatem itineris maximam iussi electi + +STR_TIMETABLE_RESET_LATENESS :{BLACK}Reponere Numerationem Tarditatis +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reponere numerationem tarditatis, igitur vehiculum ad tempus sit + +STR_TIMETABLE_AUTOFILL :{BLACK}Implere Automatice +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Implere horarium automatice valoribus itineris secundi (Ctrl+Preme ut conetur tempora morae tenere) + +STR_TIMETABLE_EXPECTED :{BLACK}Aestimata +STR_TIMETABLE_SCHEDULED :{BLACK}Secundum horarium +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Mutare inter tempora quae aestimata sunt ac secundum horarium sunt + +STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :E: + + +# Date window (for timetable) +STR_DATE_CAPTION :{WHITE}Electio diei +STR_DATE_SET_DATE :{BLACK}Eligere diem +STR_DATE_SET_DATE_TOOLTIP :{BLACK}Adhibere diem ut initium horarii +STR_DATE_DAY_TOOLTIP :{BLACK}Elige diem +STR_DATE_MONTH_TOOLTIP :{BLACK}Elige mensem +STR_DATE_YEAR_TOOLTIP :{BLACK}Elige anum + + +# AI debug window +STR_AI_DEBUG :{WHITE}Emendatio IA/Ludi Scripti +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (e{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomen scripti +STR_AI_DEBUG_SETTINGS :{BLACK}Optiones +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Mutare optiones scripti +STR_AI_DEBUG_RELOAD :{BLACK}Iterum legere IA +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Occidere IA, iterum scriptum legere, et denuo incipere IA +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Sinere/vetare frangendum esse cum nuntium IA idem est quam series frangendi +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Frangere: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Frangere +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Cum nuntium IA idem est huic seriei, ludus intermittitur +STR_AI_DEBUG_MATCH_CASE :{BLACK}Sequi casum litterarum +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Eligere si sit casus litterarum sequendus cum nuntia IA componuntur seriei frangendi +STR_AI_DEBUG_CONTINUE :{BLACK}Pergere +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Resumere ludum et IA pergere +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Inspicere nuntia emendationis huius IA +STR_AI_GAME_SCRIPT :{BLACK}Ludi Scriptum +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Inspicere nuntia Ludi Scripti + +STR_ERROR_AI_NO_AI_FOUND :Nulla IA idonea reperta est.{}Haec IA substituta est et nihil agit.{}Potes arcessere nonullas IA in Inventario Interretale +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Unum currens scriptum corruit. Si potes, admone scriptori de hoc cum imagine fenestrae Emendationis IA/Ludi Scripti +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Fenestra Emendationis IA/Ludi Scripti tantum servatro licet uti + +# AI configuration window +STR_AI_CONFIG_CAPTION :{WHITE}Configuratio IA/Ludi Scriptum +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Ludi Scriptum quod imponet ludo proximo +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}IA quae imponet ludo proximo +STR_AI_CONFIG_HUMAN_PLAYER :Lusor humanus +STR_AI_CONFIG_RANDOM_AI :IA Fortuita +STR_AI_CONFIG_NONE :(nullum) + +STR_AI_CONFIG_MOVE_UP :{BLACK}Sursum Movere +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Movere IA electam sursum in indice +STR_AI_CONFIG_MOVE_DOWN :{BLACK}Deorsum Movere +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Movere IA electam sursum in indice + +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Ludi Scriptum +STR_AI_CONFIG_AI :{SILVER}AI + +STR_AI_CONFIG_CHANGE :{BLACK}Eligere {STRING} +STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :IA +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Scriptum +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Legere aliud ludi scriptum +STR_AI_CONFIG_CONFIGURE :{BLACK}Parametra +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Recensere parametra Scripti + +# Available AIs window +STR_AI_LIST_CAPTION :{WHITE}Parabilia {STRING} +STR_AI_LIST_CAPTION_AI :IA +STR_AI_LIST_CAPTION_GAMESCRIPT :Ludi Scripta +STR_AI_LIST_TOOLTIP :{BLACK}Preme ut scriptum eligatur + +STR_AI_LIST_AUTHOR :{LTBLUE}Scriptor: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}Editio: {ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} + +STR_AI_LIST_ACCEPT :{BLACK}Accipere +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Eligere scriptum +STR_AI_LIST_CANCEL :{BLACK}Cancellare +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Non scriptum mutare + +# AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametra +STR_AI_SETTINGS_CAPTION_AI :IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Ludi Scripti +STR_AI_SETTINGS_CLOSE :{BLACK}Claudere +STR_AI_SETTINGS_RESET :{BLACK}Revertere +STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Quot dies post IA priorem haec IA incipiet (plus minusve): {ORANGE}{STRING} + + +# Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} - {STRING} LegeMe +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} - {STRING} Index Mutationum +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} - {STRING} Licentia +STR_TEXTFILE_WRAP_TEXT :{WHITE}Verba volvere +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Volvere verba fenestrae ut omnia intra adsunt sine vagando +STR_TEXTFILE_VIEW_README :{BLACK}Inspicere LegeMe +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Index Mutationum +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licentia + + +# Vehicle loading indicators +STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} +STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} +STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} +STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} +STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% +STR_PERCENT_NONE :{WHITE}{NUM}% + +# Income 'floats' +STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Expensum: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}Expensum: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Reditus: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME :{GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Translatio: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {RED}Expensum: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {RED}Expensum: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Pretium Aestimatum: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Reditus Aestimatus: {CURRENCY_LONG} + +# Saveload messages +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Adhuc in servando,{}maneas usque ad terminum! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autoservare defecit +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Non poterat discum legere +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Servare Ludum Defecit{}{STRING} +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non poterat fasciculum delere +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Legere Ludum Defecit{}{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mendum internum: {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ludus corruptus - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Ludus servatus est in editione noviore +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fasciculus non legibilis est +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Fasciculus non scriptabilis est +STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integreitatem datorum collegere defecit +STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Ludus servatus est in editione sine transviariis raedis. Omnes transviariae raedae remotae sunt + +# Map generation messages +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Creatio tabulae constita...{}... nulli loci oppidis idonei +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... nullum adest oppidum in hoc scaenario + +STR_ERROR_PNGMAP :{WHITE}Non potest legere ex PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fasciculus non inventus +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... non poterat convertere typum imaginis. 8 vel 24-bit PNG necesse est +STR_ERROR_PNGMAP_MISC :{WHITE}... aliquid defecit (fortasse fasciculus corruptus) + +STR_ERROR_BMPMAP :{WHITE}Non potest legere ex BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... non poterat convertere typum imaginis + +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... imago nimis magna + +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Admonitio magnitudinis +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Non bene censetur nimis mutare magnitudinem tabulae. Visne pergere? + +# Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Modo fundamentum sonicum substitutum repertum est. Si vis sonos audire, impone verum fundamentum sonicum ex inventario interretiale + +# Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Imago conspectus ingens +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imago conspectus resolutionem {COMMA} x {COMMA} habebit. Forsitan diu erit in imaginem faciendo. Visne pergere? + +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Imago servata est nomine '{STRING}' +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Creatio imaginis defecit! + +# Error message titles +STR_ERROR_MESSAGE_CAPTION :{YELLOW}Nuntium +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING} affert nuntium + +# Generic construction errors +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Extra tabulam est +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Nimis propinquus est fini tabulae +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Pecunia deest - {CURRENCY_LONG} poscitur +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Terra plana necesse est +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terra prave acclivis est +STR_ERROR_CAN_T_DO_THIS :{WHITE}Non licet... +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Aedificum oportet destructum esse +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Non licet locum vacuefacere... +STR_ERROR_SITE_UNSUITABLE :{WHITE}... situs non idoneus +STR_ERROR_ALREADY_BUILT :{WHITE}... iam structum +STR_ERROR_OWNED_BY :{WHITE}... possessus a {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... situs ab alia societate possessus +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... finis plasmationis contingitur +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... finis tegulas vacuefaciendi contingitur +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... finis arbores serendi contingitur +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Oportet nomen unicum esse +STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} obstat +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Non licet ludo intermisso + +# Local authority errors +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} auctoritas vicinalis vetat +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} auctoritas vicinalis alium aeroportum in hoc oppido struere vetat +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} auctoritas vicinalis alium aeroportum struere vetat soniti causa +STR_ERROR_BRIBE_FAILED :{WHITE}Largitio tua animadversa est ab inquisitore regionale! + +# Levelling errors +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Non licet hanc terram tollere... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Non licet hanc terram inclinere... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Non licet hanc terram levigare... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Cuniculus fractus esset +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... iam ad maris aequor est +STR_ERROR_TOO_HIGH :{WHITE}... nimis alta est +STR_ERROR_ALREADY_LEVELLED :{WHITE}... iam plana est +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Postea pons supernus nimis altus sit. + +# Company related errors +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non licet societatem renominare... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Non licet praesidem renominare... + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... creditum maximum est {CURRENCY_LONG} +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Non licet plurem pecuniae mutuari... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... non est creditum solvendum +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} poscitur +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Non licet creditum reddere... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Non licet pecuniam mutuam largiri... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Non licet societatem emere... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non licet sedem societatis struere... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Non licet quadrantem sortium huius societatis emere... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Non licet quadrantem sortium huius societatis vendere... +STR_ERROR_PROTECTED :{WHITE}Nondum licet sortes societatis mercari... + +# Town related errors +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non licet oppida condi +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Non licet oppidum renominare... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Non licet oppidum condere hic... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Non licet augere oppidum... +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... nimis prope finem tabulae +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... nimis prope aliud oppidum +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... nimis oppida adsunt +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... plus spatium tabulae deest +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Oppidum non vias faciet. Potest sinere vias facere in Electionibus->Circumiecta->Oppida +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Constructio viaria agitur +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Non licet oppidum delere...{}Statio receptaculumve est oppido sive non licet tegulam oppidi removere +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... non est locus effigiei idoneus in medio oppidi + +# Industry related errors +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... nimis industriae adsunt +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non licet industrias condere... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Non licet {STRING.acc} hic strui... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Non licet industriam huius typi hic struere... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... nimis prope aliam industriam +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... oportet oppidum conditum esse +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... modo semel per oppidum licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... modo in oppidis quae plures quam 1200 incolas habent licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... modo in silvis pluvialibus licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... modo in desertis licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... modo in oppidis licet strui (in locis aedificiorum) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... modo apud media oppidorum licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... modo in locis humilibus licet strui +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... modo apud fines tabulae licet strui +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... modo licet silvas struere supra lineam nivis +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... modo supra lineam nivis licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... modo infra lineam nivis licet strui + +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nulli loci idonei erat ad industrias '{STRING}' construendas +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Muta parametra tabulam generandi ut melior tabula habeas + +# Station construction related errors +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Non licet stationem ferriviariam hic struere... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Non licet stationem laophoricam hic struere... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Non licet stationem autoplaustricam hic struere... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Non licet stationem transviariam vectoriam hic struere... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Non licet stationem transviariam onerariam hic struere... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Non licet navale hic struere... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non licet aeroportum hic struere... + +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Apposita est pluribus stationibus +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... statio nimis strata +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Nimis stationes adsunt +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Nimis partes stationum ferriviariarum adsunt +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Nimis stationes laophoricae adsunt +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Nimis stationes autoplaustricae adsunt +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Nimis prope aliam stationem +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Nimis prope aliud navale +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Nimis prope alium aeroportum +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Non licet stationem renominare... +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... via oppido est +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... viae directio non convenit +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stationi perviae non licet esse curva +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stationi perviae non licet compita habere + +# Station destruction related errors +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Non licet partem stationis removere... +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Stationem ferriviariam removere necesse est +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Non licet stationem laophoricam removere... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Non licet stationem autoplaustricam removere... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Non licet stationem transviariam vectoria removere... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Non licet stationem transviariam oneraria removere... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Stationem viariam removere necesse est +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... non est statio + +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Necesse est stationem ferriviariam destruere +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Necesse est stationem laophoricam destruere +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Necesse est stationem autoplaustricam destruere +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Necesse est stationem transviariam vectoria destruere +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Necesse est stationem transviariam oneraria destruere +STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Necesse est navale destruere +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Necesse est aeroportum destruere + +# Waypoint related errors +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Appositus est pluribus quam uni interlocis +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Nimis prope alium interlocum + +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Non licet interlocum ferriviarium hic struere... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Non licet signum monitorium huc ponere... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Non licet interlocum renominare... + +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Non licet interlocum removere... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Necesse est interlocum ferriviarium removere +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... signum monitorium obstat +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... signum monitorium ab alia societate usum + +# Depot related errors +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Non licet receptaculum traminum hic struere... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Non licet receptaculum viarium hic struere... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Non licet receptaculum transviarium hic struere... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Non licet receptaculum navium hic struere... + +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Non licet receptaculum renominare... + +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitum esse in receptaculo +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitum esse in receptaculo +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitam esse in receptaculo +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... oportet constitum esse in tugurio + +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Commutare tramen licet modo dum manet in receptaculo +STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tramen nimis longum +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Non licet vehiculum reflectere... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... constat ex pluribus unitatibus +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Typi ferriviarum impares + +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Non licet vehiculum movere... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Hamaxa postrema semper hamaxam primam comitat +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Non potest iter ad receptaculum invenire +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Non potest receptaculum invenire + +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Typus receptaculi impar + +# Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} nimis long(G us a um) est post commutationem +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nullae regulae automutandi/autoredimendi +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(finis pecuniae) + +# Rail construction errors +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Compositio astariorum impossibilis +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Necesse est signalia delere +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nulla astaria idonea +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Necesse est ferriviam removere +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Via est monodromus vel obstructa +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Non licet huic typo ferriviae habere transitus +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Non licet signalia hic struere... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Non licet ferriviam hic struere... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Non licet ferriviam removere hic... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Non licet signalia removere hic... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Non licet signalia convertere hic... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... nulla adest ferrivia +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... nulla adsunt signalia + +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Non licet typum ferriviae convertere hic... + +# Road construction errors +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Necesse est viam removere +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... monodromis non licet compita habere +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Non licet viam hic struere... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Non licet ferriviam stratariam hic struere... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Non licet viam removere hic... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Non licet ferriviam stratariam removere hic... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nullae adsunt viae +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nullae adsunt ferriviae stratariae + +# Waterway construction errors +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Non licet canales hic struere... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Non licet cataractas hic struere... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Non licet fluvios hic ponere... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... oportet supra mare situm esse +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... non licet in aqua struere +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... non licet in alto struere +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... non licet in canale struere +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... non licet in flucio struere +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Necesse est canalem removere +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Non licet aquae ductum hic struere... + +# Tree related errors +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... arbor iam adest +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terra non convenit huic arboris typo +STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Non licet hic arbores serere... + +# Bridge related errors +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Non licet pontem hic struere... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Necesse est pontem destruere +STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Non licet initium et terminum in eodem loco esse +STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Non sunt eadem altitudo capitibus pontis +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Pons nimis humilis est huic terrae +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Pons nimis altus est huic terrae +STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Necesse est initium et terminum in linea esse +STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... fines pontis oportet ambos in terra esse +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... pons nimis longus +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Pons extra tabulam finiatur + +# Tunnel related errors +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Non licet cuniculus hic strui... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Situs non idoneus ad cuniculi portam +STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Necesse est cuniculum destruere +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Alius cuniculus obstat +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Cuniculus extra tabulam finiatur +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Non licet terram cuniculi finis plasmare +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... cuniculus nimis longus + +# Object related errors +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... nimis ornamenta adsunt +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Non licet ornamentum struere... +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ornamentum obstat +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sedes societatis obstat +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Non licet hanc terram emere... +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... nam posessor iam es! + +# Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Non licet gregem creare... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Non licet gregem delere... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Non licet gregem renominare... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Non licet gregem parentem eligere... +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Non licet omnia vehicula e grege removere... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Non licet vehiculum huic gregi addere... +STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Non licet vehicula communia gregi addere... + +# Generic vehicle errors +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tramen obstat +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehiculum viarium obstat +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Navis obstat +STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeroplanum obstat + +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Non licet tramen reficere... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Non licet vehiculum reficere... +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Non licet navem reficere... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Non licet aeroplanum reficere... + +STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Non licet tramen nominare... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Non licet vehiculum nominare... +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Non licet navem nominare... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Non licet aeroplanum nominare... + +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Non licet tramen sistere incohareve... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Non licet vehiculum viarium sistere incohareve... +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Non licet navem sistere incohareve... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non licet aeroplanum sistere incohareve... + +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Non licet mittere tramen ad receptaculum... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Non licet mittere vehiculum ad receptaculum... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Non licet mittere navem d receptaculum... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Non licet mittere aeroplanum ad tugurium... + +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Non licet emere vehiculum ferriviarium... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Non licet emere vehiculum viarium... +STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Non licet emere navem... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Non licet emere aeroplanum... + +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Non licet renominare traminis typum... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Non licet renominare vehiculi viarii typum... +STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Non licet renominare navis typum... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non licet renominare aeroplani typum.. + +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Non licet vendere vehiculum ferriviarium... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Non licet vendere vehiculum viarium... +STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Non licet vendere navem... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Non licet vendere aeroplanum... + +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculum non parabile est +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculum non parabile est +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Navis non parabilis est +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeroplanum non parabile est + +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Nimis vehicula adsunt in ludo +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Non licet intervallum ministrationis mutare... + +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehiculum est destructum! + +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nulla vehicula omnino parabilia erunt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muta configurationem NewGRF tuam +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nulla vehicula adhuc parabilia sunt +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Incipe ludum post {DATE_SHORT} sive eligere idoneum NewGRF quod vehicula antiqua parat + +# Specific vehicle errors +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Non licet tramen impellere post signale... +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Non licet tramini cursum reflectere... +STR_ERROR_TRAIN_START_NO_POWER :Nulla potestas hamaxosticho est + +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Non licet vehiculo viario cursum reflectere... + +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aeroplanum adhuc volat + +# Order related errors +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Non est spatium iussorum +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Nimium iussa +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Non licet novum iussum addere... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Non licet hoc iussum delere... +STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Non licet hoc iussum mutare... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Non licet hoc iussum movere... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Non licet transilire iussum currens... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Non licet salire ad iussum electum... +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vehiculum non potest ire ad omnes stationes +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vehiculum non potest ire ad illam stationem +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... vehiculum quod hoc iussum communicat non potest ire ad illam stationem + +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Non licet iussa communicare... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Non licet desinere communicationem iussorum... +STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Non licet iussa transcribere... +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... nimis procul a destinato priore +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aeroplano non est satis distantia volatus + +# Timetable related errors +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Non licet vehiculo dare horarium... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicula modo in stationibus possunt manere +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Vehiculum non consistit huic stationi + +# Sign related errors +STR_ERROR_TOO_MANY_SIGNS :{WHITE}... nimis signa adsunt +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Non licet signum ponere... +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Non licet signum renominare... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Non licet signum delere... + +# Translatable comment for OpenTTD's desktop shortcut +STR_DESKTOP_SHORTCUT_COMMENT :Ludus computatralis simulatorius cuius fundamentum est Transport Tycoon Deluxe + +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Soni ex editione originale Transport Tycoon Deluxe DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Soni ex editione originale Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Sarcina sonorum sine ullis sonis. +STR_BASEMUSIC_WIN_DESCRIPTION :Musica ex editione originale Transport Tycoon Deluxe Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Sarcina musicae sine ulla musica. + +##id 0x2000 +# Town building names +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Altum multizonium officinarum +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Parva Insula +STR_TOWN_BUILDING_NAME_CHURCH_1 :Ecclesia +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Magnum multizonium officinarum +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Domus urbanae +STR_TOWN_BUILDING_NAME_HOTEL_1 :Deversorium +STR_TOWN_BUILDING_NAME_STATUE_1 :Effigies +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fons +STR_TOWN_BUILDING_NAME_PARK_1 :Hortus +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modernum multizonium officinarum +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Horreum +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Domus Antiquae +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Domunculae +STR_TOWN_BUILDING_NAME_HOUSES_1 :Domus +STR_TOWN_BUILDING_NAME_FLATS_1 :Insula +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Altum multizonium officinarum +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_THEATER_1 :Theatrum +STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium +STR_TOWN_BUILDING_NAME_OFFICES_1 :Officinae +STR_TOWN_BUILDING_NAME_HOUSES_2 :Domus +STR_TOWN_BUILDING_NAME_CINEMA_1 :Cinemateum +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Emporium +STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu +STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipi +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Domus Urceolaris +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Argentaria Porcellina + +##id 0x4800 +# industry names +STR_INDUSTRY_NAME_COAL_MINE :{G=f}Carbonifodina +STR_INDUSTRY_NAME_COAL_MINE.gen :{G=f}carbonifodinae +STR_INDUSTRY_NAME_COAL_MINE.acc :{G=f}Carbonifodinam +STR_INDUSTRY_NAME_COAL_MINE.abl :{G=f}Carbonifodina +STR_INDUSTRY_NAME_POWER_STATION :{G=f}Electrificina +STR_INDUSTRY_NAME_POWER_STATION.gen :{G=f}electrificinae +STR_INDUSTRY_NAME_POWER_STATION.acc :{G=f}Electrificinam +STR_INDUSTRY_NAME_POWER_STATION.abl :{G=f}Electrificina +STR_INDUSTRY_NAME_SAWMILL :{G=f}Serraria +STR_INDUSTRY_NAME_SAWMILL.gen :{G=f}serrariae +STR_INDUSTRY_NAME_SAWMILL.acc :{G=f}Serrariam +STR_INDUSTRY_NAME_SAWMILL.abl :{G=f}Serraria +STR_INDUSTRY_NAME_FOREST :{G=f}Silva +STR_INDUSTRY_NAME_FOREST.gen :{G=f}silvae +STR_INDUSTRY_NAME_FOREST.acc :{G=f}Silvam +STR_INDUSTRY_NAME_FOREST.abl :{G=f}Silva +STR_INDUSTRY_NAME_OIL_REFINERY :{G=n}Ergasterium Petrolearium +STR_INDUSTRY_NAME_OIL_REFINERY.gen :{G=n}ergasterii petrolearii +STR_INDUSTRY_NAME_OIL_REFINERY.acc :{G=n}Ergasterium Petrolearium +STR_INDUSTRY_NAME_OIL_REFINERY.abl :{G=n}Ergasterio Petroleario +STR_INDUSTRY_NAME_OIL_RIG :{G=m}Suggestus Petrolearius +STR_INDUSTRY_NAME_OIL_RIG.gen :{G=m}suggestus petrolearii +STR_INDUSTRY_NAME_OIL_RIG.acc :{G=m}Suggestum Petrolearium +STR_INDUSTRY_NAME_OIL_RIG.abl :{G=m}Suggestu Petroleario +STR_INDUSTRY_NAME_FACTORY :{G=f}Fabrica +STR_INDUSTRY_NAME_FACTORY.gen :{G=f}fabricae +STR_INDUSTRY_NAME_FACTORY.acc :{G=f}Fabricam +STR_INDUSTRY_NAME_FACTORY.abl :{G=f}Fabrica +STR_INDUSTRY_NAME_PRINTING_WORKS :{G=n}Impressorium +STR_INDUSTRY_NAME_PRINTING_WORKS.gen :{G=n}impressorii +STR_INDUSTRY_NAME_PRINTING_WORKS.acc :{G=n}Impressorium +STR_INDUSTRY_NAME_PRINTING_WORKS.abl :{G=n}Impressorio +STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Fabrica Chalybeia +STR_INDUSTRY_NAME_STEEL_MILL.gen :{G=f}fabricae chalybeiae +STR_INDUSTRY_NAME_STEEL_MILL.acc :{G=f}Fabricam Chalybeiam +STR_INDUSTRY_NAME_STEEL_MILL.abl :{G=f}Fabrica Chalybeia +STR_INDUSTRY_NAME_FARM :{G=m}Fundus +STR_INDUSTRY_NAME_FARM.gen :{G=m}fundi +STR_INDUSTRY_NAME_FARM.acc :{G=m}Fundum +STR_INDUSTRY_NAME_FARM.abl :{G=m}Fundo +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Aerifodina +STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :{G=f}aerifodinae +STR_INDUSTRY_NAME_COPPER_ORE_MINE.acc :{G=f}Aerifodinam +STR_INDUSTRY_NAME_COPPER_ORE_MINE.abl :{G=f}Aerifodina +STR_INDUSTRY_NAME_OIL_WELLS :{G=mp}Putei Petrolearii +STR_INDUSTRY_NAME_OIL_WELLS.gen :{G=mp}puteorum petroleariorum +STR_INDUSTRY_NAME_OIL_WELLS.acc :{G=mp}Puteos Petrolearios +STR_INDUSTRY_NAME_OIL_WELLS.abl :{G=mp}Puteis Petroleariis +STR_INDUSTRY_NAME_BANK :{G=f}Argentaria +STR_INDUSTRY_NAME_BANK.gen :{G=f}argentariae +STR_INDUSTRY_NAME_BANK.acc :{G=f}Argentariam +STR_INDUSTRY_NAME_BANK.abl :{G=f}Argentaria +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Fabrica Cibaria +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :{G=f}fabricae cibariae +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.acc :{G=f}Fabricam Cibariam +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.abl :{G=f}Fabrica Cibaria +STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Fabrica Chartaria +STR_INDUSTRY_NAME_PAPER_MILL.gen :{G=f}fabricae chartariae +STR_INDUSTRY_NAME_PAPER_MILL.acc :{G=f}Fabricam Chartariam +STR_INDUSTRY_NAME_PAPER_MILL.abl :{G=f}Fabrica Chartaria +STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Aurifodina +STR_INDUSTRY_NAME_GOLD_MINE.gen :{G=f}aurifodinae +STR_INDUSTRY_NAME_GOLD_MINE.acc :{G=f}Aurifodinam +STR_INDUSTRY_NAME_GOLD_MINE.abl :{G=f}Aurifodina +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=f}Argentaria +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :{G=f}argentariae +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.acc :{G=f}Argentariam +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.abl :{G=f}Argentaria +STR_INDUSTRY_NAME_DIAMOND_MINE :{G=f}Adamantifodina +STR_INDUSTRY_NAME_DIAMOND_MINE.gen :{G=f}adamantifodinae +STR_INDUSTRY_NAME_DIAMOND_MINE.acc :{G=f}Adamantifodinam +STR_INDUSTRY_NAME_DIAMOND_MINE.abl :{G=f}Adamantifodina +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Ferrifodina +STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :{G=f}ferrifodinae +STR_INDUSTRY_NAME_IRON_ORE_MINE.acc :{G=f}Ferrifodinam +STR_INDUSTRY_NAME_IRON_ORE_MINE.abl :{G=f}Ferrifodina +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=n}Arbustum Fructuarium +STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :{G=n}arbusti fructuarii +STR_INDUSTRY_NAME_FRUIT_PLANTATION.acc :{G=n}Arbustum Fructuarium +STR_INDUSTRY_NAME_FRUIT_PLANTATION.abl :{G=n}Arbusto Fructuario +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=n}Arbustum Gummosum +STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :{G=n}arbusti gummosi +STR_INDUSTRY_NAME_RUBBER_PLANTATION.acc :{G=n}Arbustum Gummosum +STR_INDUSTRY_NAME_RUBBER_PLANTATION.abl :{G=n}Arbusto Gummoso +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Fons Aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.gen :{G=m}fontis aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.acc :{G=m}Fontem Aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.abl :{G=m}Fonte Aquae +STR_INDUSTRY_NAME_WATER_TOWER :{G=f}Turris Aquaria +STR_INDUSTRY_NAME_WATER_TOWER.gen :{G=f}turris aquariae +STR_INDUSTRY_NAME_WATER_TOWER.acc :{G=f}Turrim Aquariam +STR_INDUSTRY_NAME_WATER_TOWER.abl :{G=f}Turri Aquaria +STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Fabrica +STR_INDUSTRY_NAME_FACTORY_2.gen :{G=f}fabricae +STR_INDUSTRY_NAME_FACTORY_2.acc :{G=f}Fabricam +STR_INDUSTRY_NAME_FACTORY_2.abl :{G=f}Fabrica +STR_INDUSTRY_NAME_FARM_2 :{G=m}Fundus +STR_INDUSTRY_NAME_FARM_2.gen :{G=m}fundi +STR_INDUSTRY_NAME_FARM_2.acc :{G=m}Fundum +STR_INDUSTRY_NAME_FARM_2.abl :{G=m}Fundo +STR_INDUSTRY_NAME_LUMBER_MILL :{G=np}Castra Lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.gen :{G=np}castrorum lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.acc :{G=np}Castra Lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.abl :{G=np}Castris Lignatorum +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=f}Silva Saccari Xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :{G=f}silvae saccari xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.acc :{G=f}Silvam Saccari Xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.abl :{G=f}Silva Saccari Xylini +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Fabrica Bellarica +STR_INDUSTRY_NAME_CANDY_FACTORY.gen :{G=f}fabricae bellaricae +STR_INDUSTRY_NAME_CANDY_FACTORY.acc :{G=f}Fabricam Bellaricam +STR_INDUSTRY_NAME_CANDY_FACTORY.abl :{G=f}Fabrica Bellarica +STR_INDUSTRY_NAME_BATTERY_FARM :{G=m}Fundus Pilarum Electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.gen :{G=m}fundi pilarum electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.acc :{G=m}Fundum Pilarum Electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.abl :{G=m}Fundo Pilarum Electricarum +STR_INDUSTRY_NAME_COLA_WELLS :{G=mp}Putei Colae +STR_INDUSTRY_NAME_COLA_WELLS.gen :{G=mp}puteorum colae +STR_INDUSTRY_NAME_COLA_WELLS.acc :{G=mp}Puteos Colae +STR_INDUSTRY_NAME_COLA_WELLS.abl :{G=mp}Puteis Colae +STR_INDUSTRY_NAME_TOY_SHOP :{G=f}Taberna Ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.gen :{G=f}tabernae ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.acc :{G=f}Tabernam Ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.abl :{G=f}Taberna Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Fabrica Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.gen :{G=f}fabricae ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.acc :{G=f}Fabricam Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.abl :{G=f}Fabrica Ludicrorum +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=mp}Fontes Plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :{G=mp}fontium plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.acc :{G=mp}Fontes Plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.abl :{G=mp}Fontibus Plasticae +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Fabrica Potionum Carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :{G=f}fabricae potionum carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.acc :{G=f}Fabricam Potionum Carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.abl :{G=f}Fabrica Potionum Carbonatarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=n}Generatrum Bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :{G=n}generatri bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.acc :{G=n}Generatrum Bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.abl :{G=n}Generatro Bullarum +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=fp}Lapicidinae Sacchari Tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :{G=fp}lapicidinarum sacchari tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.acc :{G=fp}Lapicidinas Sacchari Tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.abl :{G=fp}Lapicidinis Sacchari Tosti +STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Saccharifodina +STR_INDUSTRY_NAME_SUGAR_MINE.gen :{G=f}saccharifodinae +STR_INDUSTRY_NAME_SUGAR_MINE.acc :{G=f}Saccharifodinam +STR_INDUSTRY_NAME_SUGAR_MINE.abl :{G=f}Saccharifodina + +############ WARNING, using range 0x6000 for strings that are stored in the savegame +############ These strings may never get a new id, or savegames will break! +##id 0x6000 +STR_SV_EMPTY : +STR_SV_UNNAMED :Sine Nomine +STR_SV_TRAIN_NAME :Tramen {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Vehiculum Viarium {COMMA} +STR_SV_SHIP_NAME :Navis {COMMA} +STR_SV_AIRCRAFT_NAME :Aeroplanum {COMMA} + +STR_SV_STNAME :{STRING} +STR_SV_STNAME_NORTH :{STRING} Borealis +STR_SV_STNAME_SOUTH :{STRING} Australis +STR_SV_STNAME_EAST :{STRING} Orientalis +STR_SV_STNAME_WEST :{STRING} Occidentalis +STR_SV_STNAME_CENTRAL :{STRING} Centralis +STR_SV_STNAME_TRANSFER :{STRING} Translatio +STR_SV_STNAME_HALT :{STRING} Mansio +STR_SV_STNAME_VALLEY :{STRING} Valles +STR_SV_STNAME_HEIGHTS :{STRING} Alta +STR_SV_STNAME_WOODS :{STRING} Nemus +STR_SV_STNAME_LAKESIDE :{STRING} Acta +STR_SV_STNAME_EXCHANGE :{STRING} Cambio +STR_SV_STNAME_AIRPORT :{STRING} Aeroportus +STR_SV_STNAME_OILFIELD :{STRING} Oilfield +STR_SV_STNAME_MINES :{STRING} Fodinae +STR_SV_STNAME_DOCKS :{STRING} Navalia +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} +##id 0x6020 +STR_SV_STNAME_ANNEXE :{STRING} Annexa +STR_SV_STNAME_SIDINGS :{STRING} Deverticulum +STR_SV_STNAME_BRANCH :{STRING} Ramus +STR_SV_STNAME_UPPER :{STRING} Supera +STR_SV_STNAME_LOWER :{STRING} Infera +STR_SV_STNAME_HELIPORT :{STRING} Heliportus +STR_SV_STNAME_FOREST :{STRING} Silva +STR_SV_STNAME_FALLBACK :{STRING} Statio #{NUM} +############ end of savegame specific region! + +##id 0x8000 +# Vehicle names +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Diseliana Ploddyphut +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Diseliana Powernaut +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electrica) +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Laophorium MPS Regal +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Laophorium Hereford Leopard +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Laophorium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Superlaophorium Foster MkII +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Laophorium Ploddyphut MkI +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Laophorium Ploddyphut MkII +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Laophorium Ploddyphut MkIII +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Autoplaustrum Carbonarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Autoplaustrum Carbonarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Autoplaustrum Carbonarium DW +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Autoplaustrum Cursuale MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Autoplaustrum Cursuale Reynard +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Autoplaustrum Cursuale Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Autoplaustrum Cursuale MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Autoplaustrum Cursuale Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Autoplaustrum Cursuale Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Autoplaustrum Petrolearium Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Autoplaustrum Petrolearium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Autoplaustrum Petrolearium Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Autoplaustrum PecuariumTalbott +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Autoplaustrum Pecuarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Autoplaustrum Pecuarium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Autoplaustrum Mercium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Autoplaustrum Mercium Craighead +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Autoplaustrum Mercium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Autoplaustrum Triticium Hereford +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Autoplaustrum Triticium Thomas +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Autoplaustrum Triticium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Autoplaustrum Caudicale Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Autoplaustrum Caudicale Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Autoplaustrum Caudicale Moreland +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Autoplaustrum Ferrarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Autoplaustrum Ferrarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Autoplaustrum Ferrarium Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Autoplaustrum Chalybeium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Autoplaustrum Chalybeium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Autoplaustrum Chalybeium Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Autoplaustrum Cataphractum Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Autoplaustrum Cataphractum Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Autoplaustrum Cataphractum Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Autoplaustrum Cibarium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Autoplaustrum Cibarium Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Autoplaustrum Cibarium Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Autoplaustrum Chartarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Autoplaustrum Chartarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Autoplaustrum Chartarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Autoplaustrum Aerarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Autoplaustrum Aerarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Autoplaustrum Aerarium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Autoplaustrum Aquarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Autoplaustrum Aquarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Autoplaustrum Aquarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Autoplaustrum Fructus Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Autoplaustrum Fructus Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Autoplaustrum Fructus Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Autoplaustrum Gummis Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Autoplaustrum Gummis Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Autoplaustrum Gummis RMT +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Autoplaustrum Sacchari MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Autoplaustrum Sacchari Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Autoplaustrum Sacchari Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Autoplaustrum Colae MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Autoplaustrum Colae Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Autoplaustrum Colae Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Autoplaustrum Sacchari Xylini MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Autoplaustrum Sacchari Xylini Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Autoplaustrum Sacchari Xylini Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Autoplaustrum Ludicrale MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Autoplaustrum Ludicrale Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Autoplaustrum Ludicrale Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Autoplaustrum Bellaricum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Autoplaustrum Bellaricum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Autoplaustrum Bellaricum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Autoplaustrum Potionum Carbonatarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Autoplaustrum Potionum Carbonatarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Autoplaustrum Potionum Carbonatarum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Autoplaustrum Plasticarium MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Autoplaustrum Plasticarium Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Autoplaustrum Plasticarium Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Autoplaustrum Bullarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Autoplaustrum Bullarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Autoplaustrum Bullarum Wizzowow +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Navis Petrolearia MPS +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Navis Petrolearia CS-Inc. +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Navis Vectoria MPS +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Navis Vectoria FFP +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Aeroscapha Bakewell 300 +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Navis Vectoria Chugger-Chug +STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Navis Vectoria Shivershake +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Navis Oneraria Yate +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Navis Oneraria Bakewell +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navis Oneraria MightyMover +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Navis Oneraria Powernaut +STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 +STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count +STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart +STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 +STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 +STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 +STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 +STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer +STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Helicopterum Tricario +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Helicopterum Guru X2 +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicopterum Powernaut + +##id 0x8800 +# Formatting of some strings +STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} +STR_FORMAT_DATE_SHORT :{STRING} {NUM} +STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} +STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} + +STR_FORMAT_BUOY_NAME :{TOWN} Signum Monitorium +STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Signum Monitorium #{COMMA} +STR_FORMAT_COMPANY_NUM :(Societas {COMMA}) +STR_FORMAT_GROUP_NAME :Grex {COMMA} +STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} +STR_FORMAT_INDUSTRY_NAME.acc :{TOWN} {STRING.acc} +STR_FORMAT_INDUSTRY_NAME.abl :{TOWN} {STRING.abl} +STR_FORMAT_WAYPOINT_NAME :{TOWN} Interlocus +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Interlocus #{COMMA} + +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Receptaculum Traminum +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Receptaculum Traminum #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Receptaculum Viarium +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Receptaculum Viarium #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Receptaculum Navium +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Receptaculum Navium #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Tugurium + +STR_UNKNOWN_STATION :statio ignota +STR_DEFAULT_SIGN_NAME :Signum +STR_COMPANY_SOMEONE :aliquis + +STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} +STR_SAVEGAME_NAME_SPECTATOR :Spectator, {1:STRING} + +# Viewport strings +STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) +STR_VIEWPORT_TOWN :{WHITE}{TOWN} +STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} +STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} + +STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} +STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} + +STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} +STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} + +STR_VIEWPORT_WAYPOINT :{WAYPOINT} +STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} + +# Simple strings to get specific types of data +STR_COMPANY_NAME :{COMPANY} +STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} +STR_DEPOT_NAME :{DEPOT} +STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (celatum) +STR_GROUP_NAME :{GROUP} +STR_INDUSTRY_NAME :{INDUSTRY} +STR_INDUSTRY_NAME.acc :{INDUSTRY.acc} +STR_INDUSTRY_NAME.abl :{INDUSTRY.abl} +STR_PRESIDENT_NAME :{PRESIDENT_NAME} +STR_SIGN_NAME :{SIGN} +STR_STATION_NAME :{STATION} +STR_TOWN_NAME :{TOWN} +STR_VEHICLE_NAME :{VEHICLE} +STR_WAYPOINT_NAME :{WAYPOINT} + +STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_CHECKMARK :{CHECKMARK} +STR_JUST_COMMA :{COMMA} +STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} +STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} +STR_JUST_CARGO_LIST :{CARGO_LIST.dat} +STR_JUST_INT :{NUM} +STR_JUST_DATE_TINY :{DATE_TINY} +STR_JUST_DATE_SHORT :{DATE_SHORT} +STR_JUST_DATE_LONG :{DATE_LONG} +STR_JUST_DATE_ISO :{DATE_ISO} +STR_JUST_STRING :{STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} +STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} + +# Slightly 'raw' stringcodes with colour or size +STR_BLACK_COMMA :{BLACK}{COMMA} +STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} +STR_TINY_COMMA :{TINY_FONT}{COMMA} +STR_BLUE_COMMA :{BLUE}{COMMA} +STR_RED_COMMA :{RED}{COMMA} +STR_WHITE_COMMA :{WHITE}{COMMA} +STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} +STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} +STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} +STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} +STR_SHORT_DATE :{WHITE}{DATE_TINY} +STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} +STR_TINY_GROUP :{TINY_FONT}{GROUP} +STR_BLACK_INT :{BLACK}{NUM} +STR_ORANGE_INT :{ORANGE}{NUM} +STR_WHITE_SIGN :{WHITE}{SIGN} +STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} +STR_BLACK_STRING :{BLACK}{STRING} +STR_BLACK_RAW_STRING :{BLACK}{STRING} +STR_ORANGE_STRING :{ORANGE}{STRING} +STR_LTBLUE_STRING :{LTBLUE}{STRING} +STR_WHITE_STRING :{WHITE}{STRING} +STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} +STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} +STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} +STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} +STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} + +STR_BLACK_1 :{BLACK}1 +STR_BLACK_2 :{BLACK}2 +STR_BLACK_3 :{BLACK}3 +STR_BLACK_4 :{BLACK}4 +STR_BLACK_5 :{BLACK}5 +STR_BLACK_6 :{BLACK}6 +STR_BLACK_7 :{BLACK}7 + +STR_TRAIN :{BLACK}{TRAIN} +STR_BUS :{BLACK}{BUS} +STR_LORRY :{BLACK}{LORRY} +STR_PLANE :{BLACK}{PLANE} +STR_SHIP :{BLACK}{SHIP} + +STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 2f26296ad0..0e7b5c6c3f 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -97,30 +97,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Limonāde # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} pasažier{P is i u} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}pasažier{P is i u} STR_QUANTITY_COAL :{WEIGHT_LONG} ogļu -STR_QUANTITY_MAIL :{COMMA} pasta mais{P s i u} +STR_QUANTITY_MAIL :{COMMA}{NBSP}pasta mais{P s i u} STR_QUANTITY_OIL :{VOLUME_LONG} naftas -STR_QUANTITY_LIVESTOCK :{COMMA} mājlop{P s i u} -STR_QUANTITY_GOODS :{COMMA} preču kast{P e es u} +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}mājlop{P s i u} +STR_QUANTITY_GOODS :{COMMA}{NBSP}preču kast{P e es u} STR_QUANTITY_GRAIN :{WEIGHT_LONG} graudu STR_QUANTITY_WOOD :{WEIGHT_LONG} kokmateriālu STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} dzelzsrūdas STR_QUANTITY_STEEL :{WEIGHT_LONG} tērauda -STR_QUANTITY_VALUABLES :{COMMA} mais{P s i u} ar vērtslietām +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}mais{P s i u} ar vērtslietām STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} vara rūdas STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukurūzas STR_QUANTITY_FRUIT :{WEIGHT_LONG} augļu -STR_QUANTITY_DIAMONDS :{COMMA} maisi ar dimantiem +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}mais{P s i u} ar dimantiem STR_QUANTITY_FOOD :{WEIGHT_LONG} pārtikas preču STR_QUANTITY_PAPER :{WEIGHT_LONG} papīra -STR_QUANTITY_GOLD :{COMMA} zelta mais{P s i u} +STR_QUANTITY_GOLD :{COMMA}{NBSP}zelta mais{P s i u} STR_QUANTITY_WATER :{VOLUME_LONG} ūdens STR_QUANTITY_WHEAT :{WEIGHT_LONG} kviešu STR_QUANTITY_RUBBER :{VOLUME_LONG} kaučuka STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukura -STR_QUANTITY_TOYS :{COMMA} rotaļliet{P a as u} -STR_QUANTITY_SWEETS :{COMMA} saldumu mais{P s i u} +STR_QUANTITY_TOYS :{COMMA}{NBSP}rotaļliet{P a as u} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}saldumu mais{P s i u} STR_QUANTITY_COLA :{VOLUME_LONG} kolas STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} cukurvates STR_QUANTITY_BUBBLES :{COMMA} burbu{P lis ļi ļu} @@ -167,12 +167,12 @@ STR_ABBREV_NONE :{TINY_FONT}NAV STR_ABBREV_ALL :{TINY_FONT}VISI # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} pasažier{P is i u} -STR_BAGS :{COMMA} mais{P s i u} -STR_TONS :{COMMA} tonn{P a as u} -STR_LITERS :{COMMA} litr{P s i u} -STR_ITEMS :{COMMA} vienīb{P a as u} -STR_CRATES :{COMMA} kast{P e es u} +STR_PASSENGERS :{COMMA}{NBSP}pasažier{P is i u} +STR_BAGS :{COMMA}{NBSP}mais{P s i u} +STR_TONS :{COMMA}{NBSP}tonn{P a as u} +STR_LITERS :{COMMA}{NBSP}litr{P s i u} +STR_ITEMS :{COMMA}{NBSP}vienīb{P a as u} +STR_CRATES :{COMMA}{NBSP}kast{P e es u} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tumši zila @@ -193,36 +193,44 @@ STR_COLOUR_GREY :Pelēka STR_COLOUR_WHITE :Balta # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} jūdzes/h -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}jūdzes stundā +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA} ZS -STR_UNITS_POWER_METRIC :{COMMA} ZS -STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}ZS +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}ZS +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn{P a as u} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonn{P a as u} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonn{P a as u} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l -STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P s i u} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galon{P s i u} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr{P s i u} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pēdas -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}pēdas +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtra virkne: STR_LIST_FILTER_OSKTITLE :{BLACK}Ievadīt filtra virkni STR_LIST_FILTER_TOOLTIP :{BLACK}Ievadīt atslēgvārdu, lai filtrētu sarakstu +STR_TOOLTIP_GROUP_ORDER :{BLACK}Izvēlēties grupēšanas kārtību STR_TOOLTIP_SORT_ORDER :{BLACK}Izvēlēties kārtošanas secību (dilstoša/augoša) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izvēlēties kārtošanas pazīmes STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Izvēlēties filtrēšanas pazīmes @@ -234,13 +242,24 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Aizvērt STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Loga virsraksts - vilkt to, lai pārvietotu logu STR_TOOLTIP_SHADE :{BLACK}Aizēnot logu - rādīt tikai virsrakstu STR_TOOLTIP_DEBUG :{BLACK}Rādīt NewGRF atkļūdošanas informāciju -STR_TOOLTIP_STICKY :{BLACK}Atzīmēt šo logu kā neaizveramu ar "Aizvērt visus logus" taustiņu +STR_TOOLTIP_STICKY :{BLACK}Atzīmēt šo logu kā neaizveramu ar "Aizvērt visus logus" taustiņu. Ctrl+klikšķis, lai saglabātu stāvokli kā noklusējumu STR_TOOLTIP_RESIZE :{BLACK}Klikšķināt un vilkt, lai mainītu šī loga lielumu STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pārslēgties starp lielu/mazu loga izmēru STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu augšup/lejup STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu pa kreisi/pa labi STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nojaukt celtnes u.c. objektus no zemes platības. Ctrl iezīmē diagonālu laukumu. Shift pārslēdz nojaukšanu/izmaksu tāmes attēlošanu +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Parādīt paslēptos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Parādīt paslēptos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Parādīt paslēptos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Parādīt paslēptos + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ieslēdzot šo iestatījumu tiks parādīti arī paslēptie vilcieni +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ieslēdzot šo iestatījumu tiks parādīti arī paslēptie autotransporta līdzekļi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ieslēdzot šo iestatījumu tiks parādīti arī paslēptie kuģi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ieslēdzot šo iestatījumu tiks parādīti arī paslēptie lidaparāti + # Query window STR_BUTTON_DEFAULT :{BLACK}Noklusējums STR_BUTTON_CANCEL :{BLACK}Atcelt @@ -278,6 +297,8 @@ STR_SORT_BY_LENGTH :garuma STR_SORT_BY_LIFE_TIME :atlikušā kalpošanas laika STR_SORT_BY_TIMETABLE_DELAY :saraksta kavējuma STR_SORT_BY_FACILITY :stacijas veida +STR_SORT_BY_WAITING_TOTAL :Gaidošā krava kopā +STR_SORT_BY_WAITING_AVAILABLE :Piejamā gaidošā krava STR_SORT_BY_RATING_MAX :augstākā kravu vērtējuma STR_SORT_BY_RATING_MIN :zemākā kravu vērtējuma STR_SORT_BY_ENGINE_ID :dzinēja ID (klasiskais veids) @@ -303,6 +324,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Rādīt STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Rādīt uzņēmuma staciju sarakstu STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Rādīt uzņēmuma finanšu stāvokli STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Rādīt uzņēmuma vispārējo informāciju +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Rādīt stāstu grāmatu +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Rādīt mērķu sarakstu STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Rādīt diagrammas STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Rādīt uzņēmumu rangu sarakstu STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansēt jaunas ražotnes būvniecību vai uzskaitīt visas ražotnes @@ -310,8 +333,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Rādīt STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Rādīt uzņēmuma autotransporta sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Rādīt uzņēmuma kuģu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Rādīt uzņēmuma lidaparātu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Tuvināt skatu -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Tālināt skatu +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Pietuvināt skatu +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Attālināt skatu STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliežu ceļu STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Būvēt ceļus STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Būvēt kuģu piestātnes @@ -350,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Iziet ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spēles opcijas -STR_SETTINGS_MENU_CONFIG_SETTINGS :Papildu iestatījumi +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Iestatījumi STR_SETTINGS_MENU_SCRIPT_SETTINGS :MI/spēles skriptu iestatījumi STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF iestatījumi STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Caurspīdības opcijas @@ -449,7 +472,7 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Atvērt/aizvērt konsoli STR_ABOUT_MENU_AI_DEBUG :MI/spēles skriptu atkļūdošana STR_ABOUT_MENU_SCREENSHOT :Ekrānuzņēmums -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pilnībā tuvināts ekrānuzņēmums +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pilnībā pietuvināts ekrānuzņēmums STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Noklusējuma mēroga ekrānuzņēmums STR_ABOUT_MENU_GIANT_SCREENSHOT :Visas kartes ekrānuzņēmums STR_ABOUT_MENU_ABOUT_OPENTTD :Par 'OpenTTD' @@ -458,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Pārslēgt sais STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Pārslēgt netīru bloku krāsojumu ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -474,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -668,6 +709,7 @@ STR_SMALLMAP_TYPE_OWNERS :īpašnieki STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Rādīt zemes kontūras uz kartes STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Rādīt transportlīdzekļus uz kartes STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Rādīt ražotnes uz kartes +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Rādīt kravas plūsmu uz kartes STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Rādīt pārvadājumu maršrutus uz kartes STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Rādīt augu valsti uz kartes STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Rādīt zemes īpašniekus uz kartes @@ -717,6 +759,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Rādīt STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Pārslēgt augstumu kartes attēlošanu STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nerādīt neviena uzņēmuma īpašumus uz kartes STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Rādīt visu uzņēmumu īpašumus uz kartes +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nerādīt kravas uz kartes # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Rādīt pēdējo ziņojumu vai avīzes rakstu @@ -793,13 +836,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} gaida depo STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} gaida aviācijas angārā -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} sarakstā ir pārāk maz rīkojumu STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ir nederīgs maršruts STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ir divi vienādi maršruti STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} rīkojumā ir nederīga stacija -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} pamazām noveco STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} ir kļuvis ļoti vecs @@ -882,10 +923,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijas lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Irānas riāli (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autotransporta līdzekļi STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Ceļa braucamās puses izvēle STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Brauc pa kreiso pusi @@ -921,11 +958,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Kataloņu STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automātiskā saglabāšana STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izvēlēties spēles automātiskās saglabāšanas starplaikus +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izslēgta -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Katru mēnesi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Katrus 3 mēnešus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Katrus 6 mēnešus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Katrus 12 mēnešus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :katru mēnesi +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :katrus 3 mēnešus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :katrus 6 mēnešus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :katrus 12 mēnešus +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Valoda STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Saskarnes valodas izvēle @@ -937,8 +976,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrāna STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Ekrāna izšķirtspējas izvēle STR_GAME_OPTIONS_RESOLUTION_OTHER :Cita -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekrānuzņēmumu formāts -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Ekrānuzņēmumu formāta izvēle +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Lietotāja saskarnes lielums +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Lietotāja saskarnes elementu lieluma izvēle + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Parasts +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Divkāršs +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Četrkāršs STR_GAME_OPTIONS_BASE_GRF :{BLACK}Pamata grafikas kopa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Atlasīt lietošanai pamata grafikas kopu @@ -1020,7 +1063,7 @@ STR_RIVERS_MODERATE :Vidējs daudzum STR_RIVERS_LOT :Daudzas STR_DISASTER_NONE :Nav -STR_DISASTER_REDUCED :Samazināta +STR_DISASTER_REDUCED :samazināta STR_DISASTER_NORMAL :Parasta STR_SUBSIDY_X1_5 :x1.5 @@ -1032,6 +1075,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Ļoti līdzens STR_TERRAIN_TYPE_FLAT :Līdzens STR_TERRAIN_TYPE_HILLY :Paugurains STR_TERRAIN_TYPE_MOUNTAINOUS :Kalnains +STR_TERRAIN_TYPE_ALPINIST :Alpu STR_CITY_APPROVAL_PERMISSIVE :pieļaujoša STR_CITY_APPROVAL_TOLERANT :iecietīga @@ -1039,8 +1083,8 @@ STR_CITY_APPROVAL_HOSTILE :naidīga STR_WARNING_NO_SUITABLE_AI :{WHITE}Nav pieejami derīgi MI...{}Jūs varat lejuplādēt dažādus MI, izmantojot sistēmu 'Tiešsaistes saturs' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Papildu iestatījumi +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Iestatījumi STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtra virkne: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Izvērst visu STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sakļaut visu @@ -1053,21 +1097,23 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :spēles iestat STR_CONFIG_SETTING_TYPE_COMPANY_MENU :uzņēmuma iestatījums (tiek iekļauts saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :uzņēmuma iestatījums (tiek iekļauts saglabājumā, ietekmē tikai pašreizējo uzņēmumu) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Rādīt: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Veids: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ierobežo turpmāko sarakstu, rādot tikai izmainītos iestatījumus -STR_CONFIG_SETTING_RESTRICT_BASIC :Pamatiestatījumi -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Papildu iestatījumi -STR_CONFIG_SETTING_RESTRICT_ALL :Lietpratēju iestatījumi / visi iestatījumi +STR_CONFIG_SETTING_RESTRICT_BASIC :Pamatiestatījumi (parādīt tikai svarīgākos iestatījumus) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Papildu iestatījumi (parādīt iestatījumu vairākumu) +STR_CONFIG_SETTING_RESTRICT_ALL :Lietpratēju iestatījumi (parādīt visus iestatījumus, tai skaitā arī nestandarta) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Iestatījumi ar atšķirīgu vērtību nekā noklusējuma STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Iestatījumi ar atšķirīgu vērtību nekā jūsu jaunajai spēlei STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ierobežo zemāk esošo sarakstu ar noteiktiem iestatījumu veidiem -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Visi iestatījumi +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Visi iestatījumu veidi STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klienta programmas iestatījumi (netiek iekļauti saglabājumos, ietekmē visas spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spēles iestatījumi (tiek iekļauti saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spēles iestatījumi (tiek iekļauti saglabājumā, ietekmē tikai pašreizējo spēli) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Uzņēmuma iestatījumi (tiek iekļauti saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Uzņēmuma iestatījumi (tiek iekļauti saglabājumā, ietekmē tikai pašreizējo uzņēmumu) +STR_CONFIG_SETTINGS_NONE :{WHITE}-Nav- STR_CONFIG_SETTING_OFF :izslēgts STR_CONFIG_SETTING_ON :ieslēgts @@ -1089,6 +1135,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimālais s STR_CONFIG_SETTING_INTEREST_RATE :Procentu likme: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS :Kārtējās izmaksas: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Būvēšanas ātrums: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :MI (mākslīgā intelekta) būvniecības darbību daudzuma ierobežošana STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Transportlīdzekļu bojāšanās: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsīdiju reizinātājs: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Būvēšanas izmaksas: {STRING} @@ -1098,8 +1145,9 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Neatļaut vilci STR_CONFIG_SETTING_DISASTERS :Katastrofas: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :Pilsētu domju attieksme pret platības pārstrukturēšanu: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :Atļaut būvēt nogāzēs un piekrastēs: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ja ieslēgts, ceļus un stacijas var būvēt uz vairums nogāzēm. Ja izslēgts, tas ir atļauts tikai uz ceļu virzienam atbilstošām nogāzēm un tādēļ nav nepieciešami ieguldījumi +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimālais kartes augstums: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Uzstādīt maksimālo atļauto kalnu augstumu kartē +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Jūs nevarat izmantot šo maksimālo kartes augstumu. Vismaz viens kalns uz kartes ir augstāks. STR_CONFIG_SETTING_AUTOSLOPE :Atļaut ainavas veidošanu zem ekām, ceļiem, utt. (automāt. nogāzes): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Atļauj ainavas veidošanu zem ekām un ceļiem bez to nojaukšanas STR_CONFIG_SETTING_CATCHMENT :Atļaut realistiskākas, palielinātas apkalpojamās platības: {STRING} @@ -1124,16 +1172,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Aizliegt vilcie STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 grādu pagriezieni rodas, ja horizontālam sliežu ceļa posmam tieši seko vertikāls sliežu ceļa posms uz blakus esošā lauciņa. Tādējādi vilciens, šķērsojot lauciņu malas, veic 90 grādu pagriezienu, nevis parasto 45 grādu kā citām sliežu ceļu kombinācijām. Tas attiecas arī uz kuģu pagrieziena lenķiem STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Atļaut savienot stacijas, kas neatrodas tieši blakus: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Atļaut pievienot staciju daļas, tām nesaskaroties ar jau esošajām. Novietojot jaunās daļas, ir nepieciešams nospiest Ctrl+klikšķis -STR_CONFIG_SETTING_IMPROVEDLOAD :Lietot uzlabotu piekraušanas algoritmu: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ja ir ieslēgts, vairāki transportlīdzekļi gaida stacijā uz secīgu piekraušanu. Nākamā transportlīdzekļa piekraušana sākas tikai tad, kad ir pietiekami daudz kravas, lai pilnībā piepildītu pirmo transportlīdzekli -STR_CONFIG_SETTING_GRADUAL_LOADING :Transportlīdzekļus piekraut pakāpeniski: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Transportlīdzekļi tiek piekrauti pakāpeniski, izmantojot tam raksturīgos ilgumus. Nevis piekrauj visu uzreiz ar fiksētu laiku, tikai atkarībā no kravas daudzuma STR_CONFIG_SETTING_INFLATION :Inflācija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Atļaut inflāciju ekonomikā, kur izmaksu celšanās nedaudz apsteidz ienākumus -STR_CONFIG_SETTING_SELECTGOODS :Nogādāt kravu stacijā tikai tad, ja ir pieprasījums: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Tikai nogādā kravu līdz stacijai, kas tika pieprasīts piekraujot transportlīdzekli. Tas novērš sliktus vērtējumus stacijā neapkalpotām kravām STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimālais tiltu garums: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Būvējamo tiltu maksimālais garums +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimālais tiltu augstums: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Būvējamo tiltu maksimālais augstums STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimālais tuneļu garums: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Būvējamo tuneļu maksimālais garums STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Izejvielu ražotņu manuālā būvniecības metode: {STRING} @@ -1159,8 +1203,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Vieta, kur vilc STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :sākumā STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :vidū STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :beigās -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Autotransporta līdzekļu rindošana (ar daudzuma efektiem): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Autotransporta līdzekļiem likt gaidīt pirms aizņemtas pieturvietas, līdz tā tiek atbrīvota STR_CONFIG_SETTING_AUTOSCROLL :Bīdīt logu, kad peles kursors atrodas tā malā: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ja iespējots, skatvieta sāk ritināties kad peles kursors ir pie loga malas STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :atspējots @@ -1191,10 +1233,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Atļaut caurbra STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Ļauj būvēt caurbraucamas pieturvietas uz pilsētai piederošiem ceļiem STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Atļaut caurbraucamas pieturvietas uz sāncenšu ceļiem: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Ļauj būvēt caurbraucamas pieturvietas uz citiem uzņēmumiem piederošiem ceļiem -STR_CONFIG_SETTING_ADJACENT_STATIONS :Atļaut būvēt vienu otrai piekļautas stacijas: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Atļauj atšķirīgas stacijas piekļaut vienu otrai -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Atļaut vairākus NewGRF transportlīdzekļu komplektus: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Saderības izvēle veciem NewGRF failiem. Neatspējojiet šo, izņemot ja jūs zinat ko darat! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Šo iestatījumu nav iespējams mainīt, kad tur ir transportlīdzekļi STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktūras uzturēšana: {STRING} @@ -1202,7 +1240,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Lidostas darbos STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ieslēdzot šo iestatījumu, katrs lidostas veids pēc tā ieviešanas vienmēr ir pieejams STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Brīdināt, ja transportlīdzeklis ir noklīdis: {STRING} -STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Ieslēgt ziņojumus par transportlīdzekļiem kas nespēj atrast ceļu uz norīkoto galamērķi +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Ieslēdz ziņojumus par transportlīdzekļiem, kas nespēj atrast ceļu uz norīkoto galamērķi STR_CONFIG_SETTING_ORDER_REVIEW :Pārbaudīt transportlīdzekļu rīkojumus: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Ja ieslēgts, tad transportlīdzekļu rīkojumus pastāvīgi pārbauda, un par dažām atklātajām problēmām tiek saņemti ziņojumi STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nē @@ -1232,13 +1270,14 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Rāda pilsētu STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Diagrammu līniju platums: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Diagrammu līniju platums. Šauras līnijas ir precīzāk nolasāmas, platākas vieglāk saskatīt un atšķirt to krāsas +STR_CONFIG_SETTING_LANDSCAPE :Ainava: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Zemes radītājs: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Sākotnējais STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimālais attālums no kartes malas naftas pārstrādes rūpnīcām: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftas pārstrādes rūpnīcas ir būvējamas tikai kartes malu tuvumā, salu kartēm tas ir pie krasta STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniega līnijas augstums: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Apvidus nelīdzenums (tikai TerraGenesis): {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Apvidus nelīdzenums: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ļoti gluda STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Gluda STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Nelīdzena @@ -1247,12 +1286,11 @@ STR_CONFIG_SETTING_TREE_PLACER :Koku izvietoša STR_CONFIG_SETTING_TREE_PLACER_NONE :Nav STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Sākotnējais STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Uzlabotais +STR_CONFIG_SETTING_ROAD_SIDE :Autotransporta līdzekļi: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Augstumu kartes pagriešana: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Pret pulksteņa rādītāja virzienu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Pulksteņa rādītāja virzienā STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Augstuma līmenis līdzenai scenārija kartei: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Atļaut pārveidot lauciņus kas atrodas kartes malās : {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ja izslēgts, kartes malās vienmēr būs okeāns STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Viens vai vairāki lauciņi pie ziemeļu malas nav tukši STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Vienam vai vairākiem lauciņiem kādā malā nav ūdens @@ -1299,17 +1337,14 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izslēgta STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Kreisā klikšķa ritināšana: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :Automātiskā saglabāšana: {STRING} + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Lietot {STRING} datuma formātu saglabāto spēļu nosaukumos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datuma formāts spēļu saglabājuma failu nosaukumos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :garu (31. Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :īsu (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :NewGRF noklusējuma palete, kuriem tā nav norādīta: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Noklusējuma palete NewGRF failiem, ja nav norādīta nepieciešamā -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palete -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palete - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automātiski pauzēt sākot jaunu spēli: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ja ir ieslēgts, sākot jaunu spēli, tā tiek automātiski pauzēta. Tas ļauj rūpīgāk izpētīt karti STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Pauzes režīmā atļaut: {STRING} @@ -1344,9 +1379,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Atskaņot apkop STR_CONFIG_SETTING_SOUND_NEWS :Avīze: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Atskaņot skaņu kad tiek rādītas avīzes STR_CONFIG_SETTING_SOUND_NEW_YEAR :Gada beigas: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Atskaņot skaņas efektu gada beigās, apkopojot uzņēmuma darbības sasniegumus gada laikā salīdzinājumā ar iepriekšējo gadu +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Atskaņot skaņu gada beigās, apkopojot uzņēmuma darbības sasniegumus gada laikā salīdzinājumā ar iepriekšējo gadu STR_CONFIG_SETTING_SOUND_CONFIRM :Būvniecība: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Atskaņot skaņas efektu pēc sekmīgas būvēšanas vai citām darbībām +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Atskaņot skaņu pēc sekmīgas būvēšanas vai citām darbībām STR_CONFIG_SETTING_SOUND_CLICK :Pogu klikšķi: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Skan signāls, kad noklikšķina uz pogas STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofas/negadījumi: {STRING} @@ -1354,7 +1389,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Atskaņot negad STR_CONFIG_SETTING_SOUND_VEHICLE :Transportlīdzekļi: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Atskaņot transportlīdzekļu skaņu efektus STR_CONFIG_SETTING_SOUND_AMBIENT :Apkārtne: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Atskaņot ainavas, ražotņu un pilsētu apkārtējo skaņu efektus +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Atskaņot ainavas, ražotņu un pilsētu apkārtējās skaņas STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Atspējot infrastruktūras būvēšanu, ja nav piemērotu transportlīdzekļu: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ja ieslēgts, infrastruktūra ir pieejama tikai tad, ja tur ir pieejami arī transportlīdzekļi, novēršot laika un naudas izšķiešanu par nelietojamu infrastruktūru @@ -1382,13 +1417,13 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :vidējs STR_CONFIG_SETTING_AI_PROFILE_HARD :smags STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Atļaut MI vairākspēlētāju spēlēs: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Atļaut MI nespēlētāju tēliem (datora vadītiem) piedalīties vairākspēlētāju spēlēs +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Atļaut MI (mākslīgā intelekta) nespēlētāju tēliem (datora vadītiem) piedalīties vairākspēlētāju spēlēs STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#darbību kodi, pirms skripti tiek apstādināti: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Apkopju starplaiki procentos: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS :Vilcienu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Izvēlēties jaunajiem sliežu transportlīdzekļiem apkopju noklusējuma starplaiku, ja tiem tas nav noteikts -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dien{P 0 a as u}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dien{P 0 a as u}/% STR_CONFIG_SETTING_SERVINT_DISABLED :izslēgts STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Autotransporta līdzekļu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Izvēlēties jauniem autotransporta līdzekļiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts @@ -1408,13 +1443,13 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Rādīt avīzi STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Sāncenša stacijā ierodas pirmais transportlīdzeklis: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Rādīt avīzi kad sāncenša jaunajā stacijā ierodas pirmais transportlīdzeklis STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Negadījumi / katastrofas: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Rādīt avīzi kad notiek nelaimes gadījumi vai katastrofas +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Rādīt avīzi, kad notiek nelaimes gadījumi vai katastrofas STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Uzņēmuma informācija: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Rādīt avīzi kad darbību sāk jauns uzņēmums, vai kad uzņēmumi riskē bankrotēt STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Ražotņu atklāšana: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Rādīt avīzi kad tiek atklāti jauni uzņēmumi +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Rādīt avīzi, kad tiek atklāti jauni uzņēmumi STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Ražotņu slēgšana: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Rādīt avīzi kad uzņēmumi tiek slēgti +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Rādīt avīzi, kad uzņēmumi tiek slēgti STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomikas izmaiņas: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Rādīt avīzi par globālām izmaiņām ekonomikā STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Ražošanas izmaiņas uzņēmuma apkalpotajās ražotnēs: {STRING} @@ -1450,7 +1485,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Velkot izvietot STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Iestatīt attālumus, kādos līdz nākamajam šķērslim (signālierīcei, dzelzceļa mezglam) uz ceļa tiks būvētas signālierīces, ja tās tiek vilktas STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} lauciņ{P 0 a a a} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Velkot paturēt vienādu attālumu starp signālierīcēm: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Signālierīču izvietošanas uzvedības izvēle, kad to veic ar Ctrl+velkot. Ja izslēgts, signālierīces tiek novietotas pie tuneļiem un tiltiem, lai izvairītos no gariem posmiem bez signālierīcēm. Ja ieslēgts, signālierīces tiek izvietotas uz katra N lauciņa, atvieglojot to izkārtošanu gar paralēliem sliežu ceļiem +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Signālierīču izvietošanas uzvedības izvēle, kad to veic ar Ctrl+velkot. Ja izslēgts, signālierīces tiek novietotas pie tuneļiem un tiltiem, lai izvairītos no gariem posmiem bez signālierīcēm. Ja ieslēgts, signālierīces tiek izvietotas uz katra N lauciņa, atvieglojot to izkārtošanu uz paralēliem sliežu ceļiem STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automātiski būvēt semaforus pirms: {STRING} gada STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Izvēlēties gadu, kad ceļiem sāks izmantot elektriskās signālierīces. Pirms šā gada tiks izmantotas neelektriskās signālierīces (kam ir tieši tāda pati funkcija, bet ar atšķirīgu izskatu) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ieslēgt signālierīču grafisko lietotāja saskarni: {STRING} @@ -1524,37 +1559,74 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 pret {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :neviena STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Lielpilsētu sākuma lieluma reizinātājs: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Lielpilsētu vidējais lielums attiecībā pret parastām pilsētām spēles sākumā -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Ceļu būves laikā novākt bezjēdzīgus ceļu elementus: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Finansētās ceļu rekonstrukcijas laikā noņem vairs neizmantojamos ceļu nobeiguma posmus +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuāli STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetriska STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetriska - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Saskarne -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Būvniecība +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Sadales precizitāte: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Uzstādod šo mazāk par 100% liks simetriskajai sadalei izturēties vairāk kā asimetriskajai. Mazāk kravas ar varu tiks sūtīts atpakaļ ja noteikts daudzums tiks sūtīts uz piestātni. Ja jūs uzstādīsiet to uz 0% simetriskā sadale izturēsies tā pat kā asimetriskā. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Ātruma mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vai lietotāja saskarnē rāda ātrumu, rādīt norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :impērijas, britu (jūdzes stundā) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :metriskās (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI, starptautiskās (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Transportlīdzekļu jaudas mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Vai lietotāja saskarnē rāda transporta līdzekļa jaudu, rādīt norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :impērijas, britu (ZS) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :metriskās (ZS) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI, starptautiskās (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Svara mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kad lietotāja saskarnē rāda svaru, uzrādīt to norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :impērijas, britu (t/tonna) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :metriskās (t/tonna) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI, starptautiskās (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Tilpuma mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kad lietotāja saskarnē rāda tilpumu, uzrādīt to norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :impērijas, britu (galons) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :metriskās (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI, starptautiskās (m³) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI.kas :SI, starptautiskās (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Vilces spēka mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE.kas :Vilces spēka mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Kad lietotāja saskarnē rāda vilcējspēku, uzrādīt to norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :impērijas, britu (mārciņa) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :metriskās (spēka kilograms) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI, starptautiskās (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Augstuma mērvienības: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kad lietotāja saskarnē rāda augstumu, uzrādīt to norādītajās mērvienībās +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :impērijas, britu (pēda) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :metriskās (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI, starptautiskās (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizēšana +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Skaņa +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Saskarne +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Vispārīgi +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Skatvietas +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Būvniecība +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Avīžu raksti / padomnieki +STR_CONFIG_SETTING_COMPANY :{ORANGE}Uzņēmums +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Grāmatvedība STR_CONFIG_SETTING_VEHICLES :{ORANGE}Transportlīdzekļi -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacijas -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pārvietošanās +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ierobežojumi +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofas / negadījumi +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Pasaules radīšana +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Apkārtējā vide +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Pašvaldības +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Pilsētas +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Ražotnes +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kravu sadale STR_CONFIG_SETTING_AI :{ORANGE}Sāncenši -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Ekrāna opcijas -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Mijiedarbība -STR_CONFIG_SETTING_SOUND :{ORANGE}Skaņas efekti -STR_CONFIG_SETTING_NEWS :{ORANGE}Avīžu raksti un ziņojumi -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signāli -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kravu pārvietošana STR_CONFIG_SETTING_AI_NPC :{ORANGE}Nespēlētāju tēli (datora vadīti) -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automātiskā atjaunošana -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Apkope -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pārvietošanās -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vilcieni -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Pilsētas -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Ražotnes STR_CONFIG_SETTING_PATHFINDER_OPF :Sākotnējais STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1583,11 +1655,12 @@ STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nav drošs stat STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistēmas NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nav savietojams ar šo OpenTTD versiju STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nezināms -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... saspiešanas līmenis '{STRING}' nav derīgs +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... saspiešanas līmenis '{STRING}' ir nederīgs STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... spēles saglabāšanas formāts '{STRING}' nav pieejams. Atkāpjas uz '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorē pamata grafikas kopu '{STRING}': nav atrasta STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorē pamata skaņas kopu '{STRING}': nav atrasta STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorē pamata mūzikas kopu '{STRING}': nav atrasta +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nepietiek atmiņas # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1601,7 +1674,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Vairāks STR_INTRO_GAME_OPTIONS :{BLACK}Spēles opcijas STR_INTRO_HIGHSCORE :{BLACK}Sasniegumu tabula -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Papildu iestatījumi +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Iestatījumi STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF iestatījumi STR_INTRO_ONLINE_CONTENT :{BLACK}Pārbaudīt tiešsaistes saturu STR_INTRO_SCRIPT_SETTINGS :{BLACK}MI/spēles skriptu iestatījumi @@ -1621,7 +1694,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izvēlē STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rādīt spēles opcijas STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rādīt sasniegumu tabulu -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Rādīt papildu iestatījumus +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Displeja iestatījumi STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Rādīt NewGRF iestatījumus STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pārbaudīt vai lejupielādei nav pieejams jauns un atjaunināts saturs STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Rādīt MI un spēles skriptu iestatījumus @@ -1661,6 +1734,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spēlē STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Burvju buldozers (nojauc ražotnes, nepārvietojamus objektus): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneļi drīkst krustoties: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktīvās lidmašīnas mazajās lidostās neavarēs (bieži): {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Izmainīt maksimālo kartes augstumu: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Izmainīt kalnu maksimālo augstumu kartē STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Mērena klimata ainava STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktikas klimata ainava STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropu klimata ainava @@ -1709,6 +1784,7 @@ STR_LIVERY_FREIGHT_TRAM :Kravas tramvajs STR_FACE_CAPTION :{WHITE}Sejas izvēle STR_FACE_CANCEL_TOOLTIP :{BLACK}Pārtraukt jaunas sejas izvēli STR_FACE_OK_TOOLTIP :{BLACK}Apstiprināt izvēlēto seju +STR_FACE_RANDOM :{BLACK}Nejaušs STR_FACE_MALE_BUTTON :{BLACK}Vīrietis STR_FACE_MALE_TOOLTIP :{BLACK}Izvēlēties vīriešu sejas @@ -1764,6 +1840,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mainīt # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Vairākspēlētāju spēle +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Izsludināt STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nē STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Jā STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spēlētāja vārds: @@ -1827,13 +1904,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Aizsarg STR_NETWORK_START_SERVER_UNADVERTISED :Nē STR_NETWORK_START_SERVER_ADVERTISED :Jā STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} spēlētāj{P s i u} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks. spēlētāju skaits: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimālais spēlētāju skaits: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izvēlēties maksimālo spēlētāju skaitu. Ne visiem slotiem ir jābūt aizpildītiem STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} uzņēmum{P s i u} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks. uzņēmumu skaits: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksimālais uzņēmumu skaits: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ierobežo serveri noteiktam uzņēmumu skaitam STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} novērotāj{P s i u} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks. novērotāju skaits: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimālais novērotāju skaits: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ierobežo serveri noteiktam novērotāju skaitam STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Valoda, kurā runā: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Citi lietotāji zinās, kurā valodā tiek runāts uz servera @@ -1873,7 +1950,7 @@ STR_NETWORK_LANG_TURKISH :Turku STR_NETWORK_LANG_UKRAINIAN :Ukraiņu STR_NETWORK_LANG_AFRIKAANS :Āfrikāņu STR_NETWORK_LANG_CROATIAN :Horvātu -STR_NETWORK_LANG_CATALAN :Katalāņu +STR_NETWORK_LANG_CATALAN :Kataloņu STR_NETWORK_LANG_ESTONIAN :Igauņu STR_NETWORK_LANG_GALICIAN :Galisiešu STR_NETWORK_LANG_GREEK :Grieķu @@ -1946,6 +2023,7 @@ STR_NETWORK_CLIENT :Spēlētājs STR_NETWORK_SPECTATORS :Novērotāji STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ievadiet cik daudz naudas vēlaties dot +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Novērotājs # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nesaglabāt ievadīto paroli @@ -1958,7 +2036,7 @@ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Izmantot STR_COMPANY_VIEW_JOIN :{BLACK}Pievienoties STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pievienoties un spēlēt ar šo uzņēmumu STR_COMPANY_VIEW_PASSWORD :{BLACK}Parole -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Jūsu uzņēmuma aizsardzība ar paroli, lai novērstu neatļautu lietotāju pievienošanos +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Aizsargājiet savu uzņēmumu ar paroli, lai novērstu neatļautu lietotāju pievienošanos STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Iestatīt uzņēmuma paroli # Network chat @@ -2042,7 +2120,7 @@ STR_NETWORK_MESSAGE_CLIENT_LEAVING :aizeju STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ir pievienojies spēlei STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ir pievienojies spēlei (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} ir pievienojies uzņēmumam #{2:NUM} -STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ir pievienojis skatītājus +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ir pievienojies novērotājiem STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ir nodibinājis jaunu uzņēmumu (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ir pametis spēli ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ir nomainījis savu nosaukumu uz {STRING} @@ -2137,6 +2215,7 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Pārslē STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Caurspīdības vietā objektus padarīt neredzamus # Linkgraph legend window +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Atzīmēt kompānijas kuras uzrādīt # Linkgraph legend window and linkgraph legend in smallmap @@ -2167,7 +2246,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Būvēt STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Būvēt vilcienu depo (vilcienu pirkšanai un apkopei). Shift pārslēdz būvi/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Pārveidot sliedes par pieturas punktu. Ctrl iespējo pieturas punktu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Būvēt dzelzceļa staciju. Ctrl iespējo staciju apvienošanu. Shift pārslēdz būve/rādīt izmaksu tāmi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvēt dzelzceļa signālus. Ctrl pārslēdz semaforus/luksoforus{}Vilkšana uzbūvē signālus uz taisna sliežu posma. Ctrl uzbūvē signālus līdz nākamajam sazarojumam{}Ctrl+klikšķis pārslēdz signālu izvēles loga atvēršanu. Shift pārslēdz būve/rādīt izmaksu tāmi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvēt dzelzceļa signālus. Ctrl pārslēdz semaforus/luksoforus{}Vilkšana uzbūvē signālus uz taisna sliežu posma. Ctrl uzbūvē signālus līdz nākamajam sazarojumam vai signālam{}Ctrl+Klikšķis pārslēdz signālu izvēles loga atvēršanu. Shift pārslēdz starp būvet/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Būvēt dzelzceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Būvēt dzelzceļa tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Pārslēgties starp sliežu, signālierīču, pieturas punktu būvēšanu/noņemšanu. Aizturēt Ctrl, lai noņemtu arī sliedes no pieturas punktiem un stacijām @@ -2344,7 +2423,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Izvēlē STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Izvietot nejaušus kokus. Shift pārslēdz būve/rādīt izmaksu tāmi STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nejauši koki -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus uz kartes +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus visā ainavā # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana @@ -2443,6 +2522,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Pieņem kravu: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Sliežu ātruma ierobežojums: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ceļa ātruma ierobežojums: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Akmeņi @@ -2539,7 +2619,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-2013 OpenTTD darba grupa +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD darba grupa # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli @@ -2558,6 +2638,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Saglabā STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Saglabāt šo spēli izmantojot izvēlēto nosaukumu STR_SAVELOAD_LOAD_BUTTON :{BLACK}Ielādēt STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ielādēt izvēlēto spēli +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Ielādēt atlasīto augstumu karti STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spēles īpašības STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nav pieejamas informācijas STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2572,13 +2653,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Pilsētu daudzums: STR_MAPGEN_DATE :{BLACK}Datums: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Ražotņu daudzums: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimālais kartes augstums +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Palielināt kalnu maksimālo augstumu kartē par vienu vienību +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Samazināt kalnu maksimālu augstumu kartē par vienu vienību STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sniega līnijas augstums STR_MAPGEN_SNOW_LINE_UP :{BLACK}Paaugstināt sniega līnijas augstumu STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pazemināt sniega līnijas augstumu -STR_MAPGEN_RANDOM_SEED :{BLACK}Nejaušs sākums: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikšķināt, lai ievadītu nejaušu sākumu -STR_MAPGEN_RANDOM :{BLACK}Nejaušs -STR_MAPGEN_RANDOM_HELP :{BLACK}Mainīt apvidus radīšanā izmantoto nejaušo sākumu STR_MAPGEN_LAND_GENERATOR :{BLACK}Zemes radītājs: STR_MAPGEN_TREE_PLACER :{BLACK}Koku algoritms: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Apvidus reljefs: @@ -2605,7 +2685,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Augstumu STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Lielums: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Ievadīt nejaušu sākumu +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Mainīt kartes maksimālo augstumu STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mainīt sniega līnijas augstumu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mainīt sākuma gadu @@ -2664,7 +2744,7 @@ STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Instalē STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Iestatīt parametrus STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Rādīt parametrus -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Iespējot paleti +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Pārslēgt paleti STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Mainīt atlasītā New GRF paleti.{}Tas jādara ja NewGRF grafika izskatās sārta STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Lietot izmaiņas @@ -2684,6 +2764,13 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nevar atra STR_NEWGRF_SETTINGS_DISABLED :{RED}Atspējots STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nav savietojams ar šo OpenTTD versiju +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Iepriekšiestatījuma saglabāšana +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Pašlaik izvēlētā iepriekšiestatījuma nosaukums saglabāšanai +STR_SAVE_PRESET_CANCEL :{BLACK}Atcelt +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Nemainīt iepriekšiestatījumu +STR_SAVE_PRESET_SAVE :{BLACK}Saglabāt + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Mainīt NewGRF parametrus STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Aizvērt @@ -2714,7 +2801,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Iepriek STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Iet pie iepriekšējā parastā gariņa, izlaižot visus pseido/pārkrāsotos/fonta gariņus STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atlasītā gariņa attēlojums. To attēlojot, izkārtojums netiek ievērots STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pārvietot gariņu, lai mainītu X un Y vērtības -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X garums: {NUM}, Y garums: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Paņemt gariņu STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Paņemt gariņu no jebkuras vietas ekrānā @@ -2786,6 +2872,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skenē NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skenē NewGRF. Atkarībā no apjoma, tas var aizņemt kādu brīdi... @@ -2824,8 +2913,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} piegādāts STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (joprojām pieprasīts) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (piegādāts) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK} dien{P u as u} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK} dien{P u as u} (finansēta) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK}{NBSP}dien{P u as u} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK}{NBSP}dien{P u as u} (finansēta) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Pilsēta {RED}neattīstās{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Trokšņu ierobežojums pilsētā: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz pilsētu. Ctrl+klikšķis atvērs skatu uz pilsētu jaunā skatlaukā @@ -2845,7 +2934,7 @@ STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} p STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transporta uzņēmumu vērtējumi: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Pieejamās darbības: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Šajā pilsētā atļauto darbību saraksts - uzklikšķināt uz darbības, lai uzzinātu vairāk +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Šajā pilsētā atļauto darbību saraksts - klikšķināt uz atsevišķa priekšmeta, lai uzzinātu vairāk STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Darīt STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Veikt iezīmēto darbību no augstāk esošā saraksta @@ -2873,6 +2962,7 @@ STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globāli STR_GOALS_GLOBAL_TITLE :{BLACK}Globālie mērķi: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nav - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nav attiecināms - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Uzņēmuma mērķi: @@ -2884,7 +2974,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informācija STR_GOAL_QUESTION_CAPTION_WARNING :Brīdinājums STR_GOAL_QUESTION_CAPTION_ERROR :Kļūda -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Atcelt STR_GOAL_QUESTION_BUTTON_OK :Labi STR_GOAL_QUESTION_BUTTON_NO :Nē @@ -2905,6 +2995,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Pārstartēt STR_GOAL_QUESTION_BUTTON_POSTPONE :Atlikt STR_GOAL_QUESTION_BUTTON_SURRENDER :Padoties STR_GOAL_QUESTION_BUTTON_CLOSE :Aizvērt +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsīdijas @@ -2916,12 +3007,15 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz servisa, lai iecentrētu skatu uz rūpnīcu/pilsētu. Ctrl+klikšķis atvērs jaunu skatu lauku uz pilsētu/rūpnīcu # Story book window +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globālā stāstu grāmata STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :{NUM} lapa +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Pārlēkt uz specifisku lapu spiežot to zemāk esošajā sarakstā. STR_STORY_BOOK_PREV_PAGE :{BLACK}Iepriekšējā STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Doties uz iepriekšējo lapu STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nākamā STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Doties uz nākamo lapu +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Mērķa norāde ir nederīga # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Staciju nosaukumi - klikšķināt uz nosaukuma, lai centrētu galveno skatu uz staciju. Ctrl+klikšķis atvērs jaunu skatvietu pie stacijas @@ -2936,9 +3030,8 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Neviena # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Gaida: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} -STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} tranzītā no {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} no {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Pieņem STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Rādīt pieņemamo kravu sarakstu @@ -2949,10 +3042,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vērtējumi STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Rādīt stacijas vērtējumus +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mēneša apgāde un vietējais vērtējums: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) +STR_STATION_VIEW_GROUP :{BLACK}Grupēt pēc +STR_STATION_VIEW_WAITING_STATION :Piestātne: Gaida +STR_STATION_VIEW_WAITING_AMOUNT :Daudzums: Gaida +STR_STATION_VIEW_PLANNED_STATION :Stacija: plānots +STR_STATION_VIEW_PLANNED_AMOUNT :Apjoms: plānots STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} no {STATION} - +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} caur {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} uz {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} no nezināmas piestātnes +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} uz jebkuru staciju +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} caur jebkuru piestātni +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} no šīs stacijas +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stājas šajā piestātnē +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} uz šo piestātni +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} bez apstājas + +STR_STATION_VIEW_GROUP_S_V_D :Sākums-Caur-Mērķis +STR_STATION_VIEW_GROUP_S_D_V :Sākums-Mērķis-Caur +STR_STATION_VIEW_GROUP_V_S_D :Caur-Sākums-Mērķis +STR_STATION_VIEW_GROUP_V_D_S :Caur-Mērķis-Sākums +STR_STATION_VIEW_GROUP_D_S_V :Mērķis-Sākums-Caur +STR_STATION_VIEW_GROUP_D_V_S :Mērķis-Caur-Sākums ############ range for rating starts STR_CARGO_RATING_APPALLING :drausmīgs @@ -3009,7 +3123,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Kopā: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankas bilance STR_FINANCES_LOAN_TITLE :{WHITE}Aizdevums -STR_FINANCES_MAX_LOAN :{WHITE}Pieejamais aizdevums: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maksimālais aizdevums: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Aizņemties {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Palielināt aizdevuma apmēru. Ctrl+klikšķis lai aizņemtos cik daudz vien iespējams @@ -3119,10 +3233,10 @@ STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} kuģ{P is i u} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} lidaparāt{P s i u} -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - uzklikšķināt uz vilciena, lai uzzinātu vairāk -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Autotransporta līdzekļi - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju -STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Kuģi - klikšķināt uz kuģa, lai iegūtu informāciju -STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lidaparāts - klikšķināt uz lidaparāta, lai iegūtu informāciju +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - klikšķināt uz vilciena, lai uzzinātu vairāk +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Autotransporta līdzekļi - klikšķināt uz transportlīdzekļa, lai uzzinātu vairāk +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Kuģi - klikšķināt uz kuģa, lai uzzinātu vairāk +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lidaparāts - klikšķināt uz lidaparāta, lai uzzinātu vairāk STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Peļņa šogad: {CURRENCY_LONG} (pērn: {CURRENCY_LONG}) @@ -3142,8 +3256,8 @@ STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sūtīt uz depo STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sūtīt uz depo STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sūtīt uz angāru -STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klik, lai apstādinātu visas mašīnas, kas ir sarakstā -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klik, lai iedarbinātu visas mašīnas, kas ir sarakstā +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikšķināt, lai apstādinātu visas mašīnas, kas ir sarakstā +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikšķināt, lai iedarbinātu visas mašīnas, kas ir saraks STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Koplietojamie rīkojumi {COMMA} transportlīdzek{P lim ļiem ļiem} @@ -3158,12 +3272,14 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupēti auto STR_GROUP_DEFAULT_SHIPS :Negrupēti kuģi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupēti lidaparāti -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupas - uzklikšķināt uz grupas, lai iegūtu tās transportlīdzekļu sarakstu +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupas - klikšķināt uz grupas, lai iegūtu tās transportlīdzekļu sarakstu STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikšķināt, lai izveidotu grupu STR_GROUP_DELETE_TOOLTIP :{BLACK}Dzēst izvēlēto grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Pārdēvēt izvēlēto grupu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikšķināt, lai pasargātu šo grupu no vispārējās automātiskās aizstāšanas +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grupas dzēšana + STR_GROUP_ADD_SHARED_VEHICLE :Pievienot kopīgos transportlīdzekļus STR_GROUP_REMOVE_ALL_VEHICLES :Novākt visus transportlīdzekļus @@ -3226,6 +3342,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Pārdēv STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Pārdēvēt kuģa tipu STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Pārdēvēt lidaparāta tipu +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Paslēpt +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Paslēpt +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Paslēpt +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Paslēpt + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Rādīt +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Rādīt +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Rādīt +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Rādīt + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Pārslēgt starp rādīt/nerādīt vilciena tipu +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Pārslēgt starp rādīt/nerādīt autotransporta līdzekļu tipu +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Pārslēgt starp rādīt/nerādīt kuģa tipu +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Pārslēgt starp rādīt/nerādīt lidaparāta tipu + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Pārdēvēt vilciena vagona tipu STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Pārdēvēt autotransporta līdzekļa tipu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Pārdēvēt kuģa tipu @@ -3243,9 +3374,9 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} tr STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - villkt sastāva daļu, lai pievienotu/atvienotu no vilciena. Klikšķināt uz vilciena, lai iegūtu informāciju. Turēt piespiestu Ctrl, lai attiecinātu abas funkcijas sekojošajai ķēdei -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Transportlīdzekļi - uzklikšķināt uz transportlīdzekļa, lai uzzinātu vairāk -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Kuģi - uzklikšķināt uz kuģa, lai uzzinātu vairāk -STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparāti - uzklikšķināt uz lidaparāta, lai uzzinātu vairāk +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Transportlīdzekļi - labais klikšķis uz transportlīdzekļa, lai uzzinātu vairāk +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Kuģi - labais klikšķis uz kuģa, lai uzzinātu vairāk +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparāti - labais klikšķis uz lidaparāta, lai uzzinātu vairāk STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Pārvilkt vilciena vagonu uz šejieni, lai to pārdotu STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Pārvilkt autotransporta līdzekli uz šejieni, lai to pārdotu @@ -3279,7 +3410,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonēt STR_DEPOT_CLONE_SHIP :{BLACK}Klonēt kuģi STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonēt lidaparātu -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Spiediet šo pogu un pēc tam uz vilciena, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Nopirkt vilciena kopiju ar visiem vagoniem. Spiediet šo pogu, un pēc tam uz vilciena, kas atrodas depo vai ārpus tā. Ctrl+Klikšķis, lai koplietotu rīkojumus. Shift+Klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tas nopirks autotransporta kopiju. Spiediet uz pogas un pēc tam uz autotransporta, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Tas nopirks kuģa kopiju. Spiediet šo pogu un pēc tam uz kuģa, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Tas pirks lidaparāta kopiju. Spiediet uz pogas un pēc tam uz lidaparāta, kas atrodas angārā vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu @@ -3330,6 +3461,9 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Autotransporta STR_REPLACE_VEHICLE_SHIP :Kuģis STR_REPLACE_VEHICLE_AIRCRAFT :Lidaparāts +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Lietošanā esošie transportlīdzekļi +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Pieejamie transportlīdzekļi + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izvēlēties lokomotīves veidu, kuru vēlaties mainīt STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izvēlēties jaunu lokomotīves veidu, kuru vēlaties lietot kreisajā pusē atlasītās lokomotīves vietā @@ -3371,19 +3505,19 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt kuģi uz depo. Ctrl+klikšķis - izvēlēties tikai apkopi STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt lidaparātu uz angāru. Ctrl+klikšķis - izvēlēties tikai apkopi -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Izmantojot Ctrl+klikšķis, vilcieni lietos kopīgus rīkojumus. Shift+klikšķis rāda izmaksu vērtību, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Tas pirks autotransporta kopiju. Izmantojot Ctrl+klikšķis, autotransporti lietos kopīgus rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Tas nopirks kuģa kopiju. Izmantojot CTRL+klikšķis, kuģi kopīgi lietos rīkojumu. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Tas nopirks lidaparāta kopiju. Izmantojot CTRL+klik, lidaparāti kopīgi lietos rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Izmantojot Ctrl+klikšķis, vilcieni rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu vērtību, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Tas nopirks autotransporta līdzekļa kopiju. Izmantojot Ctrl+klikšķis, autotransporta līdzekļi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Tas nopirks kuģa kopiju. Izmantojot Ctrl+klikšķis, kuģi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Tas nopirks lidaparāta kopiju. Izmantojot Ctrl+klikšķis, lidaparāti rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Piespiest vilcienu doties tālāk neievērojot signālu +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Piespiest vilcienu doties tālāk, neievērojot signālu STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Pielāgot vilcienu citam kravas veidam STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Pielāgot autotransporta līdzekli citam kravas veidam STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Pielāgot kuģi citam kravas veidam STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Pielāgot lidaparātu citam kravas veidam -STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Apgriezt vilcienu +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Apgriezt vilcienu pretējā virzienā STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Piespiest transportlīdzekli apgriezties STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Rādīt vilcienu rīkojumus. Ctrl+klikšķis, lai rādītu vilcienu kustības sarakstu @@ -3454,11 +3588,12 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ietilpī STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pārvadājumu ieņēmumi: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes starplaiks: {LTBLUE}{COMMA}dienas{BLACK} Pēdējā apkope: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes starplaiks: {LTBLUE}{COMMA}{NBSP}dienas{BLACK} Pēdējā apkope: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes starplaiks: {LTBLUE}{COMMA}%{BLACK} Pēdējā apkope: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Palielināt apkopes starplaiku par 10. Ctrl+klikšķis palielina apkopes starplaiku par 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Samazināt apkopes starplaiku par 10. Ctrl+klikšķis samazina apkopes starplaiku par 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Mainīt apkopes starplaiku veidu STR_VEHICLE_DETAILS_DEFAULT :Noklusējuma STR_VEHICLE_DETAILS_DAYS :Dienas STR_VEHICLE_DETAILS_PERCENT :Procenti @@ -3685,8 +3820,8 @@ STR_TIMETABLE_TRAVEL_FOR :Braukt līdz {S STR_TIMETABLE_TRAVEL_FOR_SPEED :Braukt uz {STRING} ar ne vairāk kā {VELOCITY} STR_TIMETABLE_STAY_FOR :un palikt līdz {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :un braukt līdz {STRING} -STR_TIMETABLE_DAYS :{COMMA} dien{P a as u} -STR_TIMETABLE_TICKS :{COMMA} tik{P s i u} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dien{P a as u} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P s i u} STR_TIMETABLE_TOTAL_TIME :{BLACK}Šis saraksts aizņems {STRING}, lai pabeigtu STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Šis saraksts aizņems vismaz {STRING} lai pabeigtu (nav viss pēc saraksta) @@ -3786,7 +3921,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigur STR_AI_LIST_CAPTION :{WHITE}Pieejamie {STRING} STR_AI_LIST_CAPTION_AI :MI STR_AI_LIST_CAPTION_GAMESCRIPT :Spēles skripti -STR_AI_LIST_TOOLTIP :{BLACK}Uzklikšķināt, lai izvēlētos skriptu +STR_AI_LIST_TOOLTIP :{BLACK}Klikšķināt, lai izvēlētos skriptu STR_AI_LIST_AUTHOR :{LTBLUE}Autors: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versija: {ORANGE}{NUM} @@ -3811,6 +3946,8 @@ STR_AI_SETTINGS_START_DELAY :Aptuvenais dien STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} kopas {STRING} fails Lasi_mani STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} kopas {STRING} izmaiņu žurnāls STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} kopas {STRING} licence +STR_TEXTFILE_WRAP_TEXT :{WHITE}Aplauzt tekstu +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Aplauzt tekstu logā, lai tas viss iekļautos un nevajadzētu ritināt STR_TEXTFILE_VIEW_README :{BLACK}Skatīt failu Lasi_mani STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Izmaiņu žurnāls STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence @@ -3967,6 +4104,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... mež STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... var būvēt tikai sniegotajos apgabalos STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... var būvēt tikai bezsniega apgabalos + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Šeit nevar būvēt dzelzceļa staciju... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nevar būvēt autobusu pieturvietu... @@ -4103,6 +4241,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Vispirms STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nevar sākties un beigties tajā paša vietā STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Tilta gali nav vienā līmenī STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tilts ir pārāk zems šim zemes apvidum +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Tilts ir pārāk augsts priekš šī vilciena. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Sākumam un beigām jābūt uz vienas līnijas STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... abiem tilta galiem jābūt uz zemes STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... tilts ir pārāk garš @@ -4184,6 +4323,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nevar ma STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... transportlīdzeklis ir iznīcināts +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Vispār nebūs pieejami transporta līdzekļi +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mainiet jūsu NewGRF konfogurāciju +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Transportlīdzekļi vēl nav pieejami +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Sākt jaunu spēli pēc {DATE_SHORT} vai izmantot NewGRF, kas nodrošina agrīnus transporta līdzekļus # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Vilciens nevar šķērsot signālu briesmās... @@ -4228,6 +4371,8 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nevar dz STR_DESKTOP_SHORTCUT_COMMENT :Uz 'Transport Tycoon Deluxe' balstīta simulācijas spēle # Translatable descriptions in media/baseset/*.ob* files +STR_BASEMUSIC_WIN_DESCRIPTION :Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika. +STR_BASEMUSIC_NONE_DESCRIPTION :Mūzikas kopa bez mūzikas ##id 0x2000 # Town building names @@ -4351,7 +4496,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dīzeļa) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut čukčukbānītis STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut čukčukbānis -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover čukčukbānis +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover čukčukbānis STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut dīzelītis STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut dīzelis STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (tvaika) @@ -4560,7 +4705,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake pasažieru prāmis STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate kravas kuģis STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell kravas kuģis -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover kravas kuģis +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover kravas kuģis STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut kravas kuģis STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4632,7 +4777,7 @@ STR_DEFAULT_SIGN_NAME :Zīme STR_COMPANY_SOMEONE :kāds STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} -STR_SAVEGAME_NAME_SPECTATOR :Skatītājs, {1:STRING} +STR_SAVEGAME_NAME_SPECTATOR :Novērotājs, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) @@ -4654,6 +4799,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (paslēpts) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4677,6 +4823,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4688,8 +4835,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4700,9 +4845,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 9e748f1261..53be9e6d5d 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -290,30 +290,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.ko :gaiviųjų gėr # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} keleiv{P is iai ių} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP} keleiv{P is iai ių} STR_QUANTITY_COAL :{WEIGHT_LONG} anglies -STR_QUANTITY_MAIL :{COMMA} pašto maiš{P as ai ų} +STR_QUANTITY_MAIL :{COMMA}{NBSP}pašto maiš{P as ai ų} STR_QUANTITY_OIL :{VOLUME_LONG} naftos -STR_QUANTITY_LIVESTOCK :{COMMA} galvij{P as ai ų} -STR_QUANTITY_GOODS :{COMMA} prekių dėž{P ė ės ių} +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}galvij{P as ai ų} +STR_QUANTITY_GOODS :{COMMA}{NBSP}prekių dėž{P ė ės ių} STR_QUANTITY_GRAIN :{WEIGHT_LONG} grūdų STR_QUANTITY_WOOD :{WEIGHT_LONG} medienos STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} geležies rūdos STR_QUANTITY_STEEL :{WEIGHT_LONG} plieno -STR_QUANTITY_VALUABLES :{COMMA} maiš{P as ai ų} brangenybių +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}maiš{P as ai ų} brangenybių STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} vario rūdos STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukurūzų STR_QUANTITY_FRUIT :{WEIGHT_LONG} vaisių -STR_QUANTITY_DIAMONDS :{COMMA} dėž{P ė ės ių} deimantų +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}dėž{P ė ės ių} deimantų STR_QUANTITY_FOOD :{WEIGHT_LONG} maisto STR_QUANTITY_PAPER :{WEIGHT_LONG} popieriaus -STR_QUANTITY_GOLD :{COMMA} aukso kapš{P as ai ų} +STR_QUANTITY_GOLD :{COMMA}{NBSP}aukso kapš{P as ai ų} STR_QUANTITY_WATER :{VOLUME_LONG} vandens STR_QUANTITY_WHEAT :{WEIGHT_LONG} kviečių STR_QUANTITY_RUBBER :{VOLUME_LONG} kaučiuko STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukraus -STR_QUANTITY_TOYS :{COMMA} žaislų -STR_QUANTITY_SWEETS :{COMMA} saldumynų krepšel{P is iai ių} +STR_QUANTITY_TOYS :{COMMA}{NBSP}žaislų +STR_QUANTITY_SWEETS :{COMMA}{NBSP}saldumynų krepšel{P is iai ių} STR_QUANTITY_COLA :{VOLUME_LONG} kolos STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} cukraus vatos STR_QUANTITY_BUBBLES :{COMMA} burbul{P as ai ų} @@ -360,12 +360,12 @@ STR_ABBREV_NONE :{TINY_FONT}- STR_ABBREV_ALL :{TINY_FONT}VISI # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} keleiv{P is iai ių} -STR_BAGS :{COMMA} maiš{P as ai ų} -STR_TONS :{COMMA} ton{P a os ų} -STR_LITERS :{COMMA} litr{P as ai ų} -STR_ITEMS :{COMMA} vienet{P as ai ų} -STR_CRATES :{COMMA} dėž{P ė ės ių} +STR_PASSENGERS :{COMMA}{NBSP}keleiv{P is iai ių} +STR_BAGS :{COMMA}{NBSP}maiš{P as ai ų} +STR_TONS :{COMMA}{NBSP}ton{P a os ų} +STR_LITERS :{COMMA}{NBSP}litr{P as ai ų} +STR_ITEMS :{COMMA}{NBSP}vienet{P as ai ų} +STR_CRATES :{COMMA}{NBSP}dėž{P ė ės ių} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tamsiai mėlyna @@ -386,37 +386,37 @@ STR_COLOUR_GREY :Pilka STR_COLOUR_WHITE :Balta # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}AG -STR_UNITS_POWER_METRIC :{COMMA}AG -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}AG +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}AG +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P a os ų} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a os ų} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P a os ų} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton{P a os ų} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P as ai ų} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P as ai ų} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galon{P as ai ų} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr{P as ai ų} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Raktažodis: @@ -427,14 +427,14 @@ STR_TOOLTIP_GROUP_ORDER :{BLACK}Pasirink STR_TOOLTIP_SORT_ORDER :{BLACK}Rikiavimo tvarka (didėjančiai/mažėjančiai) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Rikiavimo raktas STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filtravimo raktas -STR_BUTTON_SORT_BY :{BLACK}Rikiuoti +STR_BUTTON_SORT_BY :{BLACK}Rikiuoti pagal STR_BUTTON_LOCATION :{BLACK}Vieta STR_BUTTON_RENAME :{BLACK}Pervadinti STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Užverti langą STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Lango antraštė — tempkite ją, jei norite perkelti langą į kitą ekrano vietą STR_TOOLTIP_SHADE :{BLACK}Sumažinti langą — rodyti tik lango antraštę -STR_TOOLTIP_DEBUG :{BLACK}Rodyti papildomą NewGRF derinimo informaciją +STR_TOOLTIP_DEBUG :{BLACK}Rodyti papildomą plėtinio derinimo informaciją STR_TOOLTIP_DEFSIZE :{BLACK}Pakeisti lango dydį į numatytąjį. Spragtelėjus laikant nuspautą Ctrl klavišą, dabartinis lango dydis bus išsaugotas kaip numatytasis STR_TOOLTIP_STICKY :{BLACK}Uždrausti komandai „Užverti visus langus“ užverti šį langą (komanda „Užverti visus langus“ iškviečiama „Delete“ klavišu) STR_TOOLTIP_RESIZE :{BLACK}Tempkite už šios vietos, jei norite pakeisti lango matmenis @@ -443,6 +443,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Stačioj STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Gulščioji slakjuostė — paslenka sąrašą kairėn ar dešinėn STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nugriauti pastatus, bėgius ar kitus objektus pasirinktame žemės plote. Velkant laikant nuspaudus Ctrl klavišą, plotas bus žymimas įstrižai. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Rodyti paslėptus +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Rodyti paslėptus +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Rodyti paslėptus +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Rodyti paslėptus + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Įjungus šį mygtuką, sąraše bus rodomos ir paslėptos transporto priemonės +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Įjungus šį mygtuką, sąraše bus rodomos ir paslėptos transporto priemonės +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Įjungus šį mygtuką, sąraše bus rodomos ir paslėptos transporto priemonės +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Įjungus šį mygtuką, sąraše bus rodomos ir paslėptos transporto priemonės + # Query window STR_BUTTON_DEFAULT :{BLACK}Numatytas STR_BUTTON_CANCEL :{BLACK}Atšaukti @@ -454,51 +465,51 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|Q # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Atstumas: {NUM} -STR_MEASURE_AREA :{BLACK}Sritis: {NUM} x {NUM} +STR_MEASURE_AREA :{BLACK}Plotas: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Atstumas: {NUM}{}Aukščių skirtumas: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Sritis: {NUM} x {NUM}{}Aukščių skirtumas: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Plotas: {NUM} x {NUM}{}Aukščių skirtumas: {HEIGHT} # These are used in buttons -STR_SORT_BY_CAPTION_NAME :{BLACK}Vardą +STR_SORT_BY_CAPTION_NAME :{BLACK}vardą STR_SORT_BY_CAPTION_DATE :{BLACK}Datą # These are used in dropdowns -STR_SORT_BY_NAME :Pavadinimą -STR_SORT_BY_PRODUCTION :Produkciją -STR_SORT_BY_TYPE :Tipą -STR_SORT_BY_TRANSPORTED :Pervežimus -STR_SORT_BY_NUMBER :Kiekį -STR_SORT_BY_PROFIT_LAST_YEAR :Pernai metų pelną -STR_SORT_BY_PROFIT_THIS_YEAR :Šių metų pelną -STR_SORT_BY_AGE :Amžių -STR_SORT_BY_RELIABILITY :Patikimumą -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Bendrą produkcijos pervežimą -STR_SORT_BY_MAX_SPEED :Maksimalų greitį -STR_SORT_BY_MODEL :Modelį -STR_SORT_BY_VALUE :Vertę +STR_SORT_BY_NAME :pavadinimą +STR_SORT_BY_PRODUCTION :produkciją +STR_SORT_BY_TYPE :tipą +STR_SORT_BY_TRANSPORTED :pervežimus +STR_SORT_BY_NUMBER :kiekį +STR_SORT_BY_PROFIT_LAST_YEAR :pernykštį pelną +STR_SORT_BY_PROFIT_THIS_YEAR :šiųmetį pelną +STR_SORT_BY_AGE :amžių +STR_SORT_BY_RELIABILITY :patikimumą +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :bendrą talpą +STR_SORT_BY_MAX_SPEED :didžiausią greitį +STR_SORT_BY_MODEL :modelį +STR_SORT_BY_VALUE :vertę STR_SORT_BY_LENGTH :Ilgį -STR_SORT_BY_LIFE_TIME :Likusį naudojimo laiką -STR_SORT_BY_TIMETABLE_DELAY :Tvarkaraščio užtrukimą -STR_SORT_BY_FACILITY :Stoties tipą -STR_SORT_BY_WAITING_TOTAL :Visą laukiantį krovinį -STR_SORT_BY_WAITING_AVAILABLE :Prieinamą laukiantį krovinį -STR_SORT_BY_RATING_MAX :Didžiausias krovinio reitingas -STR_SORT_BY_RATING_MIN :Mažiausias krovinio reitingas -STR_SORT_BY_ENGINE_ID :VariklioID (numatytasis) -STR_SORT_BY_COST :Kainą -STR_SORT_BY_POWER :Galią -STR_SORT_BY_TRACTIVE_EFFORT :Traukos jėgą -STR_SORT_BY_INTRO_DATE :Atsiradimo datą -STR_SORT_BY_RUNNING_COST :Eksplotacijos išlaidas -STR_SORT_BY_POWER_VS_RUNNING_COST :Galią/Eksplotacijos išlaidas -STR_SORT_BY_CARGO_CAPACITY :Vagono talpą -STR_SORT_BY_RANGE :Atstumas -STR_SORT_BY_POPULATION :Populiaciją -STR_SORT_BY_RATING :Reitingas +STR_SORT_BY_LIFE_TIME :likusį naudojimo laiką +STR_SORT_BY_TIMETABLE_DELAY :tvarkaraščio vėlavimą +STR_SORT_BY_FACILITY :stoties tipą +STR_SORT_BY_WAITING_TOTAL :visą laukiantį krovinį +STR_SORT_BY_WAITING_AVAILABLE :prieinamą laukiantį krovinį +STR_SORT_BY_RATING_MAX :didžiausią krovinio reitingą +STR_SORT_BY_RATING_MIN :mažiausią krovinio reitingą +STR_SORT_BY_ENGINE_ID :variklio ID (numatytasis) +STR_SORT_BY_COST :kainą +STR_SORT_BY_POWER :galią +STR_SORT_BY_TRACTIVE_EFFORT :traukos jėgą +STR_SORT_BY_INTRO_DATE :atsiradimo datą +STR_SORT_BY_RUNNING_COST :eksploatacijos išlaidas +STR_SORT_BY_POWER_VS_RUNNING_COST :galią/eksplotacijos išlaidas +STR_SORT_BY_CARGO_CAPACITY :vagono talpą +STR_SORT_BY_RANGE :atstumą +STR_SORT_BY_POPULATION :populiaciją +STR_SORT_BY_RATING :reitingą # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pristabdyti žaidimą -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Pagreitinti laiko tekmę +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Pagreitinti žaidimą STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Parinktys STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Išsaugoti/nutraukti žaidimą arba užverti programą STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Rodyti žemėlapį, papildomą peržiūros langą arba ženklų sąrašą @@ -555,20 +566,20 @@ STR_SCENEDIT_FILE_MENU_QUIT :Išeiti ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Žaidimo nustatymai -STR_SETTINGS_MENU_CONFIG_SETTINGS :Sudėtingesni nustatymai -STR_SETTINGS_MENU_SCRIPT_SETTINGS :DI / Žaidimo nustatymai -STR_SETTINGS_MENU_NEWGRF_SETTINGS :Papild. grafikos nustatymai (NewGRF) -STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Permatomumo nustatymai -STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Rodyti miestų pavadinimus -STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Rodyti stotelių pavadinimus -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Rodyti tarpines stoteles -STR_SETTINGS_MENU_SIGNS_DISPLAYED :Rodyti ženklus -STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Rodomi konkurentų ženklai ir pavadinimai +STR_SETTINGS_MENU_GAME_OPTIONS :Pagrindinės nuostatos +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Išplėstinės nuostatos +STR_SETTINGS_MENU_SCRIPT_SETTINGS :Dirbtinio intelekto nuostatos +STR_SETTINGS_MENU_NEWGRF_SETTINGS :Plėtinių nuostatos +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Skaidrumo nuostatos +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Miestų pavadinimai +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stotelių pavadinimai +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Tarpinės stotelės +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Ženklai +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Varžovų ženklai ir pavadinimai STR_SETTINGS_MENU_FULL_ANIMATION :Visa animacija STR_SETTINGS_MENU_FULL_DETAIL :Visos smulkmenos -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Permatomi pastatai -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Permatomi stočių ženklai +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Skaidrūs pastatai +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Skaidrūs ženklai ############ range ends here ############ range for file menu starts @@ -582,7 +593,7 @@ STR_FILE_MENU_EXIT :Išeiti # map menu STR_MAP_MENU_MAP_OF_WORLD :Žemėlapis STR_MAP_MENU_EXTRA_VIEW_PORT :Papildomas peržiūros langas -STR_MAP_MENU_LINGRAPH_LEGEND :Krovinių Tiekimo Legenda +STR_MAP_MENU_LINGRAPH_LEGEND :Krovinių srautų legenda STR_MAP_MENU_SIGN_LIST :Ženklų sąrašas ############ range for town menu starts @@ -660,12 +671,12 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Ekrano nuotrauk STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Nepriartintas ekrano vaizdas STR_ABOUT_MENU_GIANT_SCREENSHOT :Fotografuoti viso ekrano vaizdą STR_ABOUT_MENU_ABOUT_OPENTTD :Apie „OpenTTD“ -STR_ABOUT_MENU_SPRITE_ALIGNER :Animacinių objektų išdėstytuvas +STR_ABOUT_MENU_SPRITE_ALIGNER :Spruklių lygiuoklė STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Rodyti/slėpti apvadus STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Perjungti paveiktų blokų spalvinimą ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -681,22 +692,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -738,7 +767,7 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Įprastinės veiklos pelno diagrama STR_GRAPH_INCOME_CAPTION :{WHITE}Pajamų diagrama STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Prekių vienetų pervežta -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Kompanijos pajėgumo reitingas (maksimalus=1000) +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Kompanijos pajėgumo reitingas (didžiausias=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kompanijos vertė STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Krovinių pervežimo tarifai @@ -864,25 +893,35 @@ STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLAC STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} iš {COMPANY} pasiekė „{STRING}“ statusą! # Smallmap window -STR_SMALLMAP_CAPTION :{WHITE}Žemėlapis - {STRING} +STR_SMALLMAP_CAPTION :{WHITE}{STRING.ko} žemėlapis -STR_SMALLMAP_TYPE_CONTOURS :Kontūrai +STR_SMALLMAP_TYPE_CONTOURS :Izohipsės +STR_SMALLMAP_TYPE_CONTOURS.ko :Izohipsių STR_SMALLMAP_TYPE_VEHICLES :Transporto priemonės +STR_SMALLMAP_TYPE_VEHICLES.kas :Transporto priemonės +STR_SMALLMAP_TYPE_VEHICLES.ko :Transporto priemonių STR_SMALLMAP_TYPE_INDUSTRIES :Pramonės įmonės -STR_SMALLMAP_TYPE_ROUTEMAP :Krovinių Tiekimas -STR_SMALLMAP_TYPE_ROUTES :Keliai +STR_SMALLMAP_TYPE_INDUSTRIES.kas :Pramonės įmonės +STR_SMALLMAP_TYPE_INDUSTRIES.ko :Pramonės įmonių +STR_SMALLMAP_TYPE_ROUTEMAP :Krovinių srautai +STR_SMALLMAP_TYPE_ROUTEMAP.ko :Krovinių srautų +STR_SMALLMAP_TYPE_ROUTES :Transporto keliai +STR_SMALLMAP_TYPE_ROUTES.ko :Transporto kelių STR_SMALLMAP_TYPE_VEGETATION :Augalija -STR_SMALLMAP_TYPE_OWNERS :Savininkai -STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Rodyti žemės kontūrus žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Rodyti transporto priemones žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Rodyti gamyklas žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Rodyti krovinių tiekimą žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Rodyti transporto kelius žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Rodyti augmeniją žemėlapyje -STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Rodyti žemės savininkus žemėlapyje -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Paspaudus ant gamyklos tipo bus perjungiamas to tipo gamyklų rodymas. Ctrl+Paspaudimas neberodys visų išskyrus pasirinktą. Ctrl+Paspaudimas dar kartą rodys visas. -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Paspaudus ant įmonės perjungs įmonės turto rodymą. Ctrl+Paspaudimas panaikins visas įmones išskyrus pasirinktą. Ctrl+Paspaudimas dar kartą sugrąžins visas įmones. -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Spauskite ant krovinio, kad rodytų jo savybes. Ctrl+Click išjungia visus krovinius, išskyrus pasirinktus. Ctrl+Click pakartojus - įjungia juos +STR_SMALLMAP_TYPE_VEGETATION.kas :Augalija +STR_SMALLMAP_TYPE_VEGETATION.ko :Augalijos +STR_SMALLMAP_TYPE_OWNERS :Nuosavybė +STR_SMALLMAP_TYPE_OWNERS.ko :Nuosavybės +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Rodyti izohipsių (vienodo aukščio linijų) žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Rodyti transporto priemonių žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Rodyti pramonės įmonių žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Rodyti krovinių srautų žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Rodyti transporto kelių žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Rodyti augmenijos žemėlapį +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Rodyti nuosavybės žemėlapį +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Spragtelėjus bus įjungiamas arba išjungiamas pasirinkto tipo pramonės įmonės atvaizdavimas žemėlapyje. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvaizduojamos/neatvaizduojamos visos kitos pramonės įmonės. +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Spragtelėjus bus įjungiamas arba išjungiamas pasirinktos kompanijos nuosavybės atvaizdavimas žemėlapyje. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvaizduojama/neatvaizduojama visų kitų kompanijų nuosavybė. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Spragtelėjus bus įjungiamas arba išjungiamas pasirinkto krovinio srautų atvaizdavimas žemėlapyje. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvaizduojami/neatvaizduojami visų kitų krovinių srautai. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Keliai STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Geležinkeliai @@ -894,14 +933,14 @@ STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Laivai STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Lėktuvai STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Keliai -STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Miškas -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Geležinkelio stotis -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Sunkvežimių pakrovimo aikštelė -STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobusų stotis -STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Oro uostas/Sraigtasparnių aikštelė -STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Prieplauka -STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Kalnuotas kraštas -STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Ganykla +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Miškai +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Geležinkelio stotys +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Sunkvežimių krovos aikštelės +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobusų stotys +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Oro uostai/sraigtasparnių aikštelės +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Prieplaukos +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Kalnuoti kraštai +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Ganyklos STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Lygumos STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Laukai STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Medžiai @@ -910,25 +949,25 @@ STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Nėra savininko STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Miestai STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Pramonės įmonės -STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Dykuma -STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sniegas +STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Dykumos +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snieguoti kraštai STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Rodyti/slėpti miestų pavadinimus žemėlapyje -STR_SMALLMAP_CENTER :{BLACK}Centruoti mažą žemėlapį į šitą vietą +STR_SMALLMAP_CENTER :{BLACK}Centruoti žemėlapį esamoje vietoje STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} -STR_SMALLMAP_DISABLE_ALL :{BLACK}Išjungti visas -STR_SMALLMAP_ENABLE_ALL :{BLACK}Įjungti visas -STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Sniego aukštis -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Žemėlapyje nerodyti industrijų -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Žemėlapyje rodyti visas industrijas -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Rodyti arba slėpti heightmap -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nerodyti įmonės turto žemėlapyje -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Rodyti visą įmonės turtą žemėlapyje -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nerodyti krovinių žemėlapyje -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Rodyti visus krovinius žemėlapyje +STR_SMALLMAP_DISABLE_ALL :{BLACK}Nerodyti nieko +STR_SMALLMAP_ENABLE_ALL :{BLACK}Rodyti viską +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Rodyti izohipses +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nerodyti nei vienos pramonės įmonės +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Rodyti visas pramonės įmones +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Rodyti/slėpti izohipses +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nerodyti nei vienos kompanijos nuosavybės +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Rodyti visų kompanijų nuosavybę +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nerodyti jokių krovinių srautų +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Rodyti visų krovinių srautus # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Parodyti paskutinę žinutę ar spaudos pranešimą @@ -1005,13 +1044,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} laukia doke STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} laukia angare -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} turi per mažai užduočių tvarkaraštyje STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} turi blogas užduotis STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} turi pasikartojančias užduotis STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} turi neteisingą stotelę užduotyse -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} turi į maršrutą įtrauktą oro uostą su per trumpu taku STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} paseno STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} labai paseno @@ -1053,7 +1091,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Įkelti STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Įkelti esamą padėtį į pagrindinį langą # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Žaidimo nustatymai +STR_GAME_OPTIONS_CAPTION :{WHITE}Pagrindinės nuostatos STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valiuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valiutos pasirinkimas @@ -1094,14 +1132,10 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijos Laris STR_GAME_OPTIONS_CURRENCY_IRR :Irano Rialas (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automobiliai +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automobilių eismas STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Pasirinkite, kuria kelio puse važiuoja automobiliai -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Eismas kaire puse -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Eismas dešine puse +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Kaire puse +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Dešine puse STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Miestų pavadinimai STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Pasirink miestų pavadinimų tipą @@ -1133,24 +1167,30 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonų STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatinis išsaugojimas STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pasirink, kaip dažnai išsaugoti žaidimą +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Išjungta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kiekvieną mėnesį STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kas 3 mėnesius STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kas 6 mėnesius STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kas 12 mėnesių +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kalba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pasirinkite aplinkos kalbą STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Per visą ekraną -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Pažymėkite šį langelį, jeigu norite OpenTTD žaisti visu ekranu +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Pažymėkite šį langelį, jeigu norite OpenTTD žaisti visame ekrane STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrano raiška STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pasirinkite ekrano raišką STR_GAME_OPTIONS_RESOLUTION_OTHER :Kita -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekrano vaizdo kopijos tipas -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Pasirinkite ekrano vaizdo kopijos formatą +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Sąsajos elementų dydis +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Pasirinkite vartotojo sąsajos elementų santykinį dydį + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normalus +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvigubas +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Trigubas STR_GAME_OPTIONS_BASE_GRF :{BLACK}Bazinis grafikos rinkinys STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę grafikos rinkinį @@ -1166,6 +1206,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pasirink STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} sugadint{P a ų os} bylos STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinę muziką +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepavyko gauti palaikomų ekrano raiškų sąrašo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Viso ekrano nustatymas nepavyko # Custom currency window @@ -1194,11 +1235,11 @@ STR_CURRENCY_PREVIEW :{LTBLUE}Perži STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 svarų (£) jūsų valiuta STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Keisti pasirinktos valiutos nustatymus -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimalus priešininkų skaičius: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Didžiausias priešininkų skaičius: {ORANGE}{COMMA} STR_NONE :Nėra STR_FUNDING_ONLY :Tik finansavimas -STR_MINIMAL :Minimalus +STR_MINIMAL :Mažiausias STR_NUM_VERY_LOW :Labai mažas STR_NUM_LOW :Žemas STR_NUM_NORMAL :Vidutinis @@ -1244,6 +1285,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Tik lygumos STR_TERRAIN_TYPE_FLAT :Lygumos STR_TERRAIN_TYPE_HILLY :Kalvos STR_TERRAIN_TYPE_MOUNTAINOUS :Kalnai +STR_TERRAIN_TYPE_ALPINIST :Statūs kalnai STR_CITY_APPROVAL_PERMISSIVE :Atlaidus STR_CITY_APPROVAL_TOLERANT :Tolerantiškas @@ -1251,8 +1293,8 @@ STR_CITY_APPROVAL_HOSTILE :Priešiškas STR_WARNING_NO_SUITABLE_AI :{WHITE}Nerasta tinkamų DI... {}Galite parsisiųsti keletą DI naudonat 'Turinio internete' sistemą -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Sudėtingesni nustatymai +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Išplėstinės nuostatos STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtras: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Išskleisti viską STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Suskleisti viską @@ -1265,7 +1307,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :žaidimo (įra STR_CONFIG_SETTING_TYPE_COMPANY_MENU :kompanijos (įrašoma pradedant naują žaidimą) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :kompanijos (įrašoma kiekvieną kartą išsaugant žaidimą. Galioja tik šiuo metu aktyviai kompanijai) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Rodyti: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipas: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Rodyti tik tam tikros rūšies nuostatas STR_CONFIG_SETTING_RESTRICT_BASIC :Pagrindines nuostatas STR_CONFIG_SETTING_RESTRICT_ADVANCED :Sudėtingesnes nuostatas @@ -1280,6 +1323,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Žaidimo (įra STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Žaidimo (įrašoma kiekvieną kartą išsaugant žaidimą. Galioja tik aktyviam žaidimui) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Kompanijos (įrašoma pradedant naują žaidimą) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Kompanijos (įrašoma kiekvieną kartą išsaugant žaidimą. Galioja tik šiuo metu aktyviai kompanijai) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Rodyti visus paeiškos rezultatus nustatant{}{SILVER}kategoriją{BLACK}į {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Rodyti visus paeiškos rezultatus nustatant{}{SILVER}tipą {BLACK}į {WHITE}„Visos nuostatos“ +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Rodyti visus paieškos rezultatus nustatant{}{SILVER}kategoriją {BLACK}į {WHITE}{STRING} {BLACK}bei {SILVER}tipą {BLACK}į {WHITE}„Visos nuostatos“ +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nėra - STR_CONFIG_SETTING_OFF :Ne STR_CONFIG_SETTING_ON :Taip @@ -1320,8 +1367,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Įgalinti atsit STR_CONFIG_SETTING_CITY_APPROVAL :Miestų gyventojų požiūris į triukšmą ir aplinkos darkymą: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Nustatyti miestų požiūrį į statybas, triukšmą ir kraštovaizdžio keitimą. Nuo to priklauso kompanijos reitingas bei leidimasstatyti įvairius objektus -STR_CONFIG_SETTING_BUILDONSLOPES :Leisti statybas pakrantėse ir ant šlaitų: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Leisti statyti bėgius, stoteles bei kitus objektus ant šlaitų. Priešingu atveju ant šlaito bus galima tiesti tik bėgius ir tik šlaito kryptimi +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Didžiausias žemėlapio aukštis: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Didžiausias galimas kalnų žemėlapyje aukštis +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Negalima nustatyti tokio kalnų aukščio, nes žemėlapyje jau yra bent vienas aukštesnis kalnas STR_CONFIG_SETTING_AUTOSLOPE :Leisti keisti reljefą po pastatais, bėgiais, ir t.t.. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Leisti keisti reljefą po pastatais ir bėgiais, jų nepašalinant STR_CONFIG_SETTING_CATCHMENT :Aptarnaujamos teritorijos dydis priklauso nuo stotelė tipo: {STRING} @@ -1346,16 +1394,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Drausti traukin STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90° posūkis susidaro, kai horizontalus bėgių elementas yra sujungiamas su gretimame langelyje esančiu vertikaliu elementu. Ši nuostata taip pat galioja ir laivams STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Leisti sujungti stoteles, kurios nėra šalia: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Leisti praplėsti stotelę naujomis krovos aikštelėmis jas statant ne šalia jau esančiųjų, bet tolėliau. Statant reikia laikyti nuspaustą Ctrl klavišą -STR_CONFIG_SETTING_IMPROVEDLOAD :Naudoti patobulintą krovimo algoritmą: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Transporto priemonės, laukiančios stotelėje, bus aptarnaujamos paeiliui: tik prikrovus vieną transporto priemonę bus pradedama krauti kita transporto priemonė -STR_CONFIG_SETTING_GRADUAL_LOADING :Pakrauti transporto priemones palaipsniui: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Transporto priemonę pakrauti, atsižvelgiant į įvairius krovos parametrus, palaipsniui, vietoj to, kad transporto priemonė būtų pakrauta vienu ypu, atsižvegiant tik į krovinio kiekį STR_CONFIG_SETTING_INFLATION :Infliacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Įjungti/išjungti infliaciją (išlaidos augs truputį greičiau už atlygius) -STR_CONFIG_SETTING_SELECTGOODS :Pristatyti krovinį stotelei tiktai tuomet, kai yra poreikis: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Pramonės įmonės tieks stotelei tik tuos krovinius, kuriuos mėgins paimti į stotelę atvykstančios transporto priemonės. Tokiu būdu bus išvengta prastų stotelės krovos reitingų tiems kroviniams, kurių žaidėjas net neketino gabenti iš pasirinktos stotelės STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Didžiausias tilto ilgis: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Didžiausias galimas tilto ilgis +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Didžiausias tilto aukštis: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Didžiausias aukštis, kuriame dar galima statyti tiltus STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Didžiausias tunelio ilgis: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Didžiausias galimas tunelio ilgis STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Pirminių pramonės įmonių statybos būdas: {STRING} @@ -1381,8 +1425,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Numatytoji trau STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ties artimuoju kraštu STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :viduryje STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ties tolimuoju kraštu -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Automobilių vilkstinė (su kvantavimo efektu): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Jei kelyje pasitaikys kliūtis (ar tiesiog krovos aikštelė bus užimta), automobiliai nebandys grūstis, o stos į tvarkingą eilę STR_CONFIG_SETTING_AUTOSCROLL :Slinkti vaizdą pelei esant prie krašto: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Pelės žymikliui priartėjus prie pagrindinio ar papildomo peržiūros langų krašto, vaizdas jame gali būti slenkamas. STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Neslinkti @@ -1413,10 +1455,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leisti pravaži STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Leidžia statyti pravažiuojamojo tipo stoteles miestams priklausiančiuose keliuose STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Leisti pravažiuojamąsias stoteles priešininko keliuose: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Leidžia statyti pravažiuojamojo tipo stoteles kitiems priešininkams priklausiančiuose keliuose -STR_CONFIG_SETTING_ADJACENT_STATIONS :Leisti statyti susiliečiančias stoteles: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Leisti skirtingas stoteles liestis viena su kita -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Leisti kelis NewGRF transporto pr. rinkinius vienu metu: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Suderinamumo pasirinktis seniems NewGRFs. Neišjunkite, nebent žinote, ką tiksliai darote! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Neįmanoma pakeisti nuostatos kai yra tr. priemonių. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktūros priežiūra reikalauja išlaidų: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Infrastruktūros (kelių, geležinkelių, stotelių, angarą ir kitų objektų) priežiūra kainuoja. Kaštai auga proporcingai kompanijos dydžiui, taigi didesnėms kompanijoms infrastruktūros priežiūra kainuos daugiau, nei mažesnėms @@ -1441,41 +1479,55 @@ STR_CONFIG_SETTING_AUTORENEW_MONTHS :Atnaujinti tran STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Atitinkamas gyvenimas, kai transporto priemonės turėtų būti atnaujinamos STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mėnesi{P 0 u ais ų} mažesnis STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mėnesi{P 0 u ais ų} didesnis -STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimali suma reikalinga automatiniam atnaujinimui: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalus būtinas banko sąskaitos likutis automatiniam transporto priemonės atnaujinimui vykdyti +STR_CONFIG_SETTING_AUTORENEW_MONEY :Mažiausia suma, reikalinga automatiniam atnaujinimui: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Mažiausias būtinas banko sąskaitos likutis automatiniam transporto priemonės atnaujinimui vykdyti STR_CONFIG_SETTING_ERRMSG_DURATION :Klaidos pranešimo rodymo trukmė: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Klaidos pranešimų rodymo trukmė, po kurios pranešimas langas bus automatiškai užvertas. Atkreipkite dėmesį, kai kai kurie kritiniai pranešimai automatiškai nėra užveriami STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P ė ės žių} STR_CONFIG_SETTING_HOVER_DELAY :Rodyti paaiškinimus: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delsos laikas prieš parodant paaiškinimą, kai pelės žymeklis yra užvedamas virš kurio nors vartotojo sąsajos elemento. Paaiškinimas taip pat gali būti susietas ir su dešiniuoju pelės klavišu -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :atvedus žymeklį po {COMMA} sekund{P ės žių žių} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delsos laikas prieš parodant paaiškinimą, kai pelės žymeklis yra užvedamas virš kurio nors vartotojo sąsajos elemento. Paaiškinimas taip pat gali būti susietas ir su dešiniuoju pelės klavišu, jei delsos laikas nustatomas į 0 milisekundžių +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :atvedus žymeklį po {COMMA} milisekund{P ės žių žių} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :spragtelėjus dešinįjį pelės klavišą STR_CONFIG_SETTING_POPULATION_IN_LABEL :Rodyti miestų gyventojų skaičių šalia pavadinimo: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Rodyti miestų gyventojų skaičių žemėlapio pažymėtoje vietoje STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grafikų linijų storis: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafikų linijų storis. Plonesnė linija yra tikslesnė, tačiau storesnę lengviau pastebėti bei atskirti jos spalvą -STR_CONFIG_SETTING_LAND_GENERATOR :Sausumos kūrimas: {STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Standartinis +STR_CONFIG_SETTING_LANDSCAPE :Kraštovaizdis: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Skirtingi kraštovaizdžio tipai pasižymi skirtingomis tiek gamtinėmis (medžių, kalvų, jūrų, upių kiekis), tiek pramoninėmis (pramonės įmonės, miestų augimo greitis, transporto priemonės) savybėmis +STR_CONFIG_SETTING_LAND_GENERATOR :Žemėlapio generatorius: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originalus generatorius reikalauja bazinio grafinių failų rinkinio ir yra gana primityvus. TerraGenesis, and composes fixed landscape shapes. TerraGenesis žemėlapio generavimui naudoja Perlin'o triukšmą, beigi leidžia keisti daugiau įvairesnių parametrų. +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :originalus STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Kraštovaizdžio stilius: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(tik TerraGenesis) Žemės paviršiaus kalvotumas +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Pramonės įmonių tankis: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Pramonės įmonių kiekis sugeneruotame žemėlapyje STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Didžiausias naftos perdirbimo įmonės atstumas nuo žemėlapio kraštų: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftos perdirbimo gamyklos statomos tik žemėlapio pakraščiuose, netoli kranto STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniego linijos aukštis: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Paviršiaus nelygumas (tik TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Aukštis, virš kurio žemės paviršius padengiamas sniegu. Tai taip pat turi įtakos pramonės įmonių kūrimui ir mietų augimui. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Paviršiaus lygumas (tik TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(tik TerraGenesis) Kuo lygesnis kraštovaizdis, tuo generuojamos kalvos bus žemesnės ir tuo jų bus mažiau. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Labai lygus STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lygus STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Kalnuotas STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Labai kalnuotas +STR_CONFIG_SETTING_VARIETY :Kraštovaizdžio įvairovė: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Tik TerraGenesis) Tame pačiame žemėlapyje gali būti tiek kalvotų, tiek lygių regionų. Kuo didesnė įvairovė, tuo daugiau skirtingų regionų bus sugeneruota. +STR_CONFIG_SETTING_RIVER_AMOUNT :Upių kiekis: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Upių kiekis sugeneruotame kraštovaizdyje STR_CONFIG_SETTING_TREE_PLACER :Medžių sodinimo algoritmas: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Pasirinkite medžių sodinimo algoritmą. „Originalus“ paskirsto juos tolygiai, „Naujasis“ sodina grupėmis. STR_CONFIG_SETTING_TREE_PLACER_NONE :Jokio STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalas STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Naujasis +STR_CONFIG_SETTING_ROAD_SIDE :Automobilių eismas: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Eismo pusė STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Aukščių žemėlapio pasukimas: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Prieš laikrodžio rodyklę STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Pagal laikrodžio rodyklę STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Aukštis skiriamas „lygiaus scenarijaus“ žemėlapiui: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Leisti keisti reljefą žemėlapio kraštuose: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Jeigu išjungta, žemėlapio kraštai visada bus vandenynas STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Vienas ar daugiau blokų šiauriniame krašte yra ne tušti STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Viena ar daugiau plokštumų nėra ant vandens @@ -1526,17 +1578,15 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Išjungta STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Slinkti žemėlapį velkant jį nuspaudus kairįjį pelės klavišą. Naudinga, jei žaidžiama kompiuteriuose su lietimui jautriais ekranais +STR_CONFIG_SETTING_AUTOSAVE :Automatinis saugojimas: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Laiko tarpsnis tarp automatinių žaidimo išsaugojimų + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Išsaugant žaidimą, pavadinimuose naudoti {STRING} datos formatą STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datos formatas išsaugoto žaidimo failo pavadinime STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ilgąjį (31 Gruo 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :trumpąjį (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Įprastinė paletė taikoma NewGRF, nenurodžius paletės: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Numatytoji spalvų paletė tiems NewGRF objektams, kurie nenurodo, kokios konkrečiai paletės jiems reikia -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paletė -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paletė - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatinė pauzė paleidžiant naują žaidimą: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Pradėjus naują žaidimą, laiko tėkmė bus pristabdyta, taip suteikiant progą atidžiau išstudijuoti žemėlapį STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Kuomet pristabdytas, leisti: {STRING} @@ -1587,13 +1637,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Skleisti aplink STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Drausti infrastruktūros plėtimą kai nėra tam tinkamų transporto priemonių: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kai įjungta, infrastruktūra yra galima, jeigu ten taip pat yra galimų automobilių. Tam kad užkirstų kelią, laiko ir pinigų švaistimo nereikalingai infrastruktūrai STR_CONFIG_SETTING_MAX_TRAINS :Didžiausias traukinių skaičius vienam žaidėjui: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalus skaičius traukinių, kuriuos kompanija gali turėti +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Didžiausias skaičius traukinių, kuriuos kompanija gali turėti STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Didžiausias automobilių skaičius vienam žaidėjui: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalus skaičius kelių transporto priemonių, kuriuos kompanija gali turėti +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Didžiausias skaičius automobilių, kuriuos kompanija gali turėti STR_CONFIG_SETTING_MAX_AIRCRAFT :Didžiausias lėktuvų skaičius vienam žaidėjui: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalus skaičius lėktuvų, kuriuos kompanija gali turėti +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Didžiausias skaičius lėktuvų, kuriuos kompanija gali turėti STR_CONFIG_SETTING_MAX_SHIPS :Didžiausias laivų skaičius vienam žaidėjui: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalus skaičius laivų, kuriuos kompanija gali turėti +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Didžiausias skaičius laivų, kuriuos kompanija gali turėti STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Uždrausti kompiuteriui traukinius: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Įjungus šį nustatymą, statyti traukinius kompiuterio žaidėjui bus neįmanoma @@ -1613,13 +1663,13 @@ STR_CONFIG_SETTING_AI_PROFILE_HARD :Sunkus STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Leisti DI Interneto režime: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Leisti DI kompiuterio žaidėjus dalyvauti Interneto režime STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opkodai prieš skriptus yra nevykdomi: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimalus skaičius skaičiavimų žingsnių, kuriuos scenarijus vykdo viename ėjime +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Didžiausias skaičius skaičiavimų žingsnių, kuriuos scenarijus vykdo viename ėjime STR_CONFIG_SETTING_SERVINT_ISPERCENT :Techninės apžiūros intervalas procentais: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Įjungus šią nuostatą, techninė apžiūra bus vykdoma vos tik patikimumas nukris iki tam tikros procentinės vertės. Priešingu atveju techninė apžiūra bus vykdoma kas nustatytą dienų skaičių STR_CONFIG_SETTING_SERVINT_TRAINS :Traukinių techninės apžiūros intervalas: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Numatytoji naujo traukinio techninės apžiūros intervalo reikšmė -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dien{P a os ų}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dien{P a os ų}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Išjungta STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Automobilių techninės apžiūros intervalas: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Numatytoji naujo automobilio techninės apžiūros intervalo reikšmė @@ -1630,7 +1680,7 @@ STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Numatytoji nauj STR_CONFIG_SETTING_NOSERVICE :Atjungti techninę apžiūrą, jei gedimai nenaudojami: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Jeigu įjungta, tada automobiliams nebus atliekama techninė apžiūra, jeigu jie negalės sugesti STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktyvinti vagonų greičio apribojimą: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Įjungus šią nuostatą, vagonų maksimalus leistinas greitis įtakos maksimalų viso traukinio greitį +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Įgalinus šią nuostatą, vagonų didžiausias leistinas greitis įtakos viso traukinio greitį STR_CONFIG_SETTING_DISABLE_ELRAILS :Uždrausti elektrinius bėgius: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Įjungiant šį nustatymą išjungia elektrifikuotų bėgių reikalavimą padaryti elektrinius variklius veikti ant jų @@ -1673,7 +1723,7 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Spalvotos nauji STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Metai, kai laikraščių antraštės tampa spalvotos. Iki tol jos būna monochominės STR_CONFIG_SETTING_STARTING_YEAR :Žaidimo pradžia: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Tolygi ekonomika (daug, bet nežymių pokyčių): {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Jeigu įjungta, pramonės gamybos pajėgumas kis dažniau ir mažesniais žingsniais. Šis nustatymas dažniausiai neturi efekto, jeigu pramonės tipai yra numatyti NewGRF +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Įgalinus nuostatą pramonės įmonių gamybos pajėgumai kis dažniau ir mažesniais žingsniais. Ši nuostata greičiausiai neturės jokios įtakos, jei pramonės įmonė yra aprašyta papildomame plėtinyjeipai yra numatyti NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Leisti pirkti kitų kompanijų akcijas: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Leisti pirkti bei parduoti kitų kompanijų akcijas. Akcijos yra platinamos tik įmonei sulaukus tam tikro amžiaus STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Grynojo pelno dalis, mokama tiekėjų sistemoms: {STRING} @@ -1711,7 +1761,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Miestams leidž STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Įjungus šį nustatymą miestams bus galima statyti pervažas STR_CONFIG_SETTING_NOISE_LEVEL :Leisti miestams kontroliuoti oro uostų triukšmo lygį: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Išjungus šį nustatymą, gali būti tik du oro uostai kiekviename mieste. Įjungus šį nustatymą, oro uostų skaičius mieste yra ribojamas pagal miesto triukšmo lygio palankumo, kurį nurodo gyventojų skaičius, oro uosto dydis bei atstumas -STR_CONFIG_SETTING_TOWN_FOUNDING :Naujų miestų kurimas žaidime: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING :Naujų miestų kūrimas žaidime: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Įjungiant šį nustatymą, žaidėjai gali įkurti naujus miestus žaidime STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Uždrausta STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Leista @@ -1731,7 +1781,7 @@ STR_CONFIG_SETTING_SNAP_RADIUS :Langų traukos STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Atstumas tarp langelių. Prieš tai pajudintas langelis automatiškai sulygiuojamas su šalia esančiu langeliu STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel{P 0 is iai ių} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Išjungta -STR_CONFIG_SETTING_SOFT_LIMIT :Didž. skaičius langų (nelipnių): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT :Didžiausias nelipnių langų skaičius: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Skaičius nelipnių atidarytų langelių. Prieš tai seni atidaryti langeliai automatiškai užsidarys, kad paliktų daugiau vietos ekrane naujiems langeliams STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Išjungta @@ -1758,12 +1808,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 iš {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenaudojamas STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Pradinis miestų dydžio daugiklis: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Vidutinis miestų dydis santykiu su normaliais miestais žaidimo pradžioje -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Panaikinti beprasmius kelio elementus kelių statybos metu: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Panaikinti aklavietes po finansuojamų kelių rekonstrukcijos -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Pasiskirstymo grafą atnaujinti kas {STRING} dien{P 0:2 ą as ų} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Pasiskirstymo grafą atnaujinti kas {STRING}{NBSP}dien{P 0:2 ą as ų} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Laiko trukmė tarp grafo mazgų perskaičiavimo operacijų. Kiekviena operacija perskaičiuoja tik vieną mazgą, o ne visą grafą; tad jei šioje nuostatoje nurodytą, kad, pavyzdžiui, grafas bus atnaujinamas kas 4-ias dienas, tai nereiškia, kad jis visas bus atnaujintas, o atnaujinti bus tik kai kurie mazgai. Kuo trumpesnė trukmė tarp perskaičiavimų, tuo daugiau grafo perskaičiavimas sueikvos procesoriaus išteklių, tačiau pats grafas geriau atspindės realią situaciją. Kita vertus, ilgesnė trukmė mažiau apkraus procesorių, tačiau gali tekti ilgėliau palaukti, kol nauji maršrutai bus įtraukti į grafą. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Pasiskirstymo grafo perskaičiavimas užtruks {STRING} dien{P 0:2 ą as ų} +STR_CONFIG_SETTING_LINKGRAPH_TIME :Pasiskirstymo grafo perskaičiavimas užtruks {STRING}{NBSP}dien{P 0:2 ą as ų} STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Laiko trukmė skirta pilnam krovinių paskirstymo grafui perskaičiuoti. Nustačius per mažą reikšmę, žaidimas gali trumpam pakibti, kol bus baigti skaičiavimai. Kita vertus, kuo ilgesnė ši trukmė, tuo vėliau į grafą bus įtraukti maršrutų pakeitimai. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :originalus STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetriškas @@ -1787,7 +1835,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :„Simetriškas STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Pasiskirstymo režimas paštui: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus išsiųsta apytiksliai tiek pat pašto maišų, kaip ir iš B į A. „Asimetriško“ režimo atveju, pašto srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad pašto srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Pasiskirstymo režimas „šarvuotoms“ krovinių rūšims: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :„Šarvuotų“ krovinių rūšiai priskiriamos brangenybės (vidutinio klimato juostoje), deimantai (subtropinio klimato juostoje) ir auksas (subarktinio klimato juostoje). Įvairūs NewGRF papildiniai gali šitai pakeisti. „Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Žaidžiant subarktinio klimato juostoje, rekomenduojama pasirinkti asimetrišką krovinių paskirstymo algoritmą, nes bankai, priėmę auksą, atgal nieko nesiųs. Kitose klimato juostose galima pasirinkti ir asimetrišką algoritmą, nes kroviniai gali keliauti į abi maršruto puses. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :„Šarvuotų“ krovinių rūšiai priskiriamos brangenybės (vidutinio klimato juostoje), deimantai (subtropinio klimato juostoje) ir auksas (subarktinio klimato juostoje), bet tai dar gali priklausyti ir nuo aktyvių plėtinių. „Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Žaidžiant subarktinio klimato juostoje, rekomenduojama pasirinkti asimetrišką krovinių paskirstymo algoritmą, nes bankai, priėmę auksą, atgal nieko nesiųs. Kitose klimato juostose galima pasirinkti ir asimetrišką algoritmą, nes kroviniai gali keliauti į abi maršruto puses. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Pasiskirstymo režimas kitoms krovinių rūšims: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Rekomenduojama pasirinkti arba asimetrinį, arba originalų algoritmą. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Pasiskirstymo tikslumas: {STRING} @@ -1835,27 +1883,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :imperiniai (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :metriniai (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Vaizdas STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizavimas -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstrukcijos -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Tr. priemonės -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stotelės -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Krovinių pasiskirstymas -STR_CONFIG_SETTING_AI :{ORANGE}Konkurentai -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Vaizdo nustatymai -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Sąveika +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika STR_CONFIG_SETTING_SOUND :{ORANGE}Garsai -STR_CONFIG_SETTING_NEWS :{ORANGE}Naujienos ir žinutės -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signalai -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Krovinų valdymas -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Kompiuterio žaidėjai -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatiškai atnaujinti -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Techninė apžiūra +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Vaizdas +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Bendros nuostatos +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Papildomi peržiūros langai +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstrukcijos +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Žinios ir patarėjai +STR_CONFIG_SETTING_COMPANY :{ORANGE}Kompanija +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Apskaita +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Transporto priemonės +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Maršrutas -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Traukiniai -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Miestai -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Gamyklos +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ribos +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofos ir incidentai +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Žemėlapio kūrimas +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Aplinka +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Valdžia +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Miestai +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gamyklos +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Krovinių pasiskirstymas +STR_CONFIG_SETTING_AI :{ORANGE}Konkurentai +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Kompiuterio žaidėjai STR_CONFIG_SETTING_PATHFINDER_OPF :Originalus STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1877,11 +1927,11 @@ STR_CONFIG_ERROR :{WHITE}Klaida n STR_CONFIG_ERROR_ARRAY :{WHITE}... klaida masyve '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... netinkama reikšmė '{STRING}' kintamąjam '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... nustatymo eilutės gale netinkami simboliai '{STRING}' -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoruojamas NewGRF '{STRING}': GRF ID dublikatas '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoruojamas klaidingas NewGRF '{STRING}': {STRING} +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... plėtinys '{STRING}' ignoruojamas: GRF ID dublikatas '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoruojamas klaidingas plėtinys '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nerastas STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nesaugus statiniam naudojimui -STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sisteminis NewGRF +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sisteminis plėtinys STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nesuderinamas su šia OpenTTD versija STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nežinomas STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... netinkamas suspaudimo lygis '{STRING}' @@ -1895,40 +1945,40 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nepavyko # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} -STR_INTRO_NEW_GAME :{BLACK}Naujas žaidimas +STR_INTRO_NEW_GAME :{BLACK}Pradėtį naują žaidimą STR_INTRO_LOAD_GAME :{BLACK}Įkelti žaidimą -STR_INTRO_PLAY_SCENARIO :{BLACK}Išbandyti scenarijų (žaisti) -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Žaisti papildomame žemėlapyje -STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenarijaus redaktorius -STR_INTRO_MULTIPLAYER :{BLACK}Žaidimas tinkle +STR_INTRO_PLAY_SCENARIO :{BLACK}Žaisti scenarijų +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Žaisti teminį žemėlapį +STR_INTRO_SCENARIO_EDITOR :{BLACK}Redaguoti scenarijų +STR_INTRO_MULTIPLAYER :{BLACK}Žaisti tinkle -STR_INTRO_GAME_OPTIONS :{BLACK}Žaidimo nustatymai +STR_INTRO_GAME_OPTIONS :{BLACK}Pagrindinės nuostatos STR_INTRO_HIGHSCORE :{BLACK}Nugalėtojų lentelė -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Sudėtingesni nustatymai -STR_INTRO_NEWGRF_SETTINGS :{BLACK}Papild. grafikos nustatymai -STR_INTRO_ONLINE_CONTENT :{BLACK}Patikrinti interneto turinį -STR_INTRO_SCRIPT_SETTINGS :{BLACK}DI / Žaidimo nustatymai +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Išplėstinės nuostatos +STR_INTRO_NEWGRF_SETTINGS :{BLACK}Plėtiniai +STR_INTRO_ONLINE_CONTENT :{BLACK}Interneto turinys +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Dirbtinio intelekto nuostatos STR_INTRO_QUIT :{BLACK}Išeiti -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Pradėti naują žaidimą. Ctrl+Paspaudimas praleidžia žemėlapio nustatymus +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Pradėti naują žaidimą. Spragtelėjus laikant nuspaustą Ctrl klavišą, naujas žemėlapis bus sugeneruotas nedelsiant ir nieko nebeklausiant STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Įkelti išsaugotą žaidimą -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Pradėti žaidimą naudojant papildomą žemėlapį ir žemtvarką +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Pradėti žaidimą, sugeneruojant naują teminį žemėlapį STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Pradėti naują žaidimą pasirenkant scenarijų -STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Sukurk savo žaidimo žemėlapį/scenarijų -STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Pradėti keletos žaidėjų žaidimą +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Paleisti scenarijaus redaktorių +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Pradėti keleto žaidėjų žaidimą -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Pasirink vidutinį klimato tipą -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Pasirink sub-arktinį klimato tipą -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Pasirink sub-tropinį klimato tipą -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Pasirink žemėlapio tipą 'žaislų šalis' +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vidutinio klimato žemėlapis +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Subarktinio klimato žemėlapis +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Subtropinio klimato žemėlapis +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Žaislinis žemėlapis -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rodyti žaidimo nustatymus +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rodyti pagrindines žaidimo nuostatas STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rodyti nugalėtojų lentelę -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Rodyti sudėtingesnius nustatymus -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Atvaizduoti NewGRF nustatymus -STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Patikrinti dėl naujų ir atnaujintą turinį atsisiuntimui -STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Rodyti DI ir žaidimo nustatymus -STR_INTRO_TOOLTIP_QUIT :{BLACK}Išeiti iš 'OpenTTD' +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Rodyti išplėstines nuostatas +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Rodyti parsisiųstus plėtinius ir jų nuostatas +STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tikrinti, ar nėra naujų plėtinių arba atnaujinimų jau atsisiųstiems plėtiniams +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Rodyti dirbtinio intelekto nuostatas +STR_INTRO_TOOLTIP_QUIT :{BLACK}Išeiti iš „OpenTTD“ žaidimo STR_INTRO_TRANSLATION :{BLACK}Šiam vertimui trūksta {NUM} eilu{P tės čių čių}. Padėkite išversti OpenTTD užsiregistruodami vertėju. Daugiau informacijos rasite faile readme.txt @@ -1964,6 +2014,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Žaidia STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magiškas buldozeris (pašalina gamyklas ir nepajudinamus objektus): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneliai gali susikirsti: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktyviniai lėktuvai neduš (dažnai) mažuose oro uostuose: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Didžiausias kalnų aukštis: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Keisti didžiausią leistiną kalnų aukštį STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Normalus klimatas STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arktinis klimatas STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropinis klimatas @@ -2012,6 +2064,7 @@ STR_LIVERY_FREIGHT_TRAM :Krovininis tram STR_FACE_CAPTION :{WHITE}Veido pasirinkimas STR_FACE_CANCEL_TOOLTIP :{BLACK}Nutraukia veido pasirinkimą STR_FACE_OK_TOOLTIP :{BLACK}Užbaigia veido pasirinkimą +STR_FACE_RANDOM :{BLACK}Atsitiktinai STR_FACE_MALE_BUTTON :{BLACK}Vyras STR_FACE_MALE_TOOLTIP :{BLACK}Pasirink vyro veidą @@ -2078,7 +2131,7 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Vardas STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Žaidimo pavadinimas STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Žaidejai -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Žaidžia / maksimaliai žaidėjų +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientų tinkle / Didžiausias leistinas skaičius STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Žemėlapio dydis STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Žaidimo žemėlapio dydis{}Pragtelėjus rušiuojama pagal dydį @@ -2105,7 +2158,7 @@ STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Apsaugo STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVERIS IŠJUNGTAS STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVERIS PILNAS STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIJŲ NESUTAPIMAS -STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}PAPILD. GRAFIKOS NEATITIKIMAS +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEATITINKA PLĖTINYS STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Jungtis STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atnaujinti serverį @@ -2132,8 +2185,8 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Apsaugok STR_NETWORK_START_SERVER_UNADVERTISED :Ne STR_NETWORK_START_SERVER_ADVERTISED :Taip STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P as ai ų} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalus klientų skaičius: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Pasirinkite maksimalų klientų skaičių. Nebūtinai visos jungtys turi buti užpildytos +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Didžiausias klientų skaičius: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Pasirinkite didžiausią klientų skaičių. Nebūtinai visos jungtys turi būti užpildytos STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} kompanij{P a os ų} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Daugiausia kompanijų: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Riboti serverį iki tam tikro skaičiaus kompanijų @@ -2251,6 +2304,7 @@ STR_NETWORK_CLIENT :Žaidėjas STR_NETWORK_SPECTATORS :Stebėtojai STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Įveskite kiekį pinigų, kurį norite gauti +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Stebėtojas # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neišsaugotas įvestas slaptažodis @@ -2283,7 +2337,7 @@ STR_NETWORK_CHAT_OSKTITLE :{BLACK}Įveskit STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nerastas tinklo įrenginys arba sukompiliuota be ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Nerado nei vieno žaidimo tinkle STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Serveris neatsakė į užklausą -STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nepavyko prisijungti dėl Papild. grafikos neatitikimo +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nepavyko prisijungti dėl netinkamo plėtinio STR_NETWORK_ERROR_DESYNC :{WHITE}Žaidimo tinkle sinchronizacija nepavyko STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Nutruko ryšys STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Negali atverti išsaugoto žaidimo @@ -2309,7 +2363,7 @@ STR_NETWORK_ERROR_CLIENT_DESYNC :sinchronizacijo STR_NETWORK_ERROR_CLIENT_SAVEGAME :negali užkrauti žemėlapio STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :prarastas ryšys STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokolo klaida -STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Papild. grafikos neatitikimas +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Neatitinka plėtinys STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :Neautorizuota STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :gautas neteisingas arba nelauktas paketas STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :bloga versija @@ -2400,11 +2454,11 @@ STR_CONTENT_NO_ZLIB_SUB :{WHITE}... atsi # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Bazinė grafika -STR_CONTENT_TYPE_NEWGRF :NewGRF +STR_CONTENT_TYPE_NEWGRF :Plėtiniai STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :DI biblioteka STR_CONTENT_TYPE_SCENARIO :Scenarijus -STR_CONTENT_TYPE_HEIGHTMAP :Aukščio žemėlapis +STR_CONTENT_TYPE_HEIGHTMAP :Teminis žemėlapis STR_CONTENT_TYPE_BASE_SOUNDS :Baziniai garsai STR_CONTENT_TYPE_BASE_MUSIC :Bazinė muzika STR_CONTENT_TYPE_GAME_SCRIPT :Žaidimo skriptas @@ -2430,27 +2484,27 @@ STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Taip, pa STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, išeiti iš OpenTTD # Transparency settings window -STR_TRANSPARENCY_CAPTION :{WHITE}Permatomumo nustatymai -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Nustatyti stočių ženklų permatomumą. Ctrl+Click to užrakinti. -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Nustatyti medžių permatomumą . Ctrl+Click to užrakinti. -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Nustatyti namų permatomumą . Ctrl+Click užrakinti. -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Nustatyti pramoninių pastatų permatomumą . Ctrl+Click užrakinti -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Perjungti statomų pastatų, tokių kaip stotys, garažai ir kontrolės punktai, permatomumą. Ctrl+Click užrakinti. -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Nustatyti tiltų permatomumą. Ctrl+Click užrakinti -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Perjungti pastatų, tokių kaip švyturiai ir antenos, permatomumą.Ctrl+Click užrakinti -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Perjungti laidų permatomumą . Ctrl+Click užrakinti. -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Perjungti krovimo indikatorių permatomumą. Ctrl+Click užrakinti -STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nustatyti objektus nematomais vietoje permatomų +STR_TRANSPARENCY_CAPTION :{WHITE}Skaidrumo nuostatos +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Perjungti ženklų skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Perjungti medžių skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Perjungti namų skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Perjungti pramonės įmonių skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Perjungti stotelių, garažų ir panašių pastatų skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Perjungti tiltų skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Perjungti švyturių, siųstuvų ir panašių statinių skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Perjungti laidų skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Perjungti krovos indikatorių skaidrumą. Spragtelėjus laikant nuspaustą Ctrl klavišą, nuostata bus užrakinta +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Pasirinkti tarp skaidrių ir nematomų objektų # Linkgraph legend window -STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Krovinių paskirstymas +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Krovinių srautai STR_LINKGRAPH_LEGEND_ALL :{BLACK}Visi -STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nieko -STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Pasirinkite vaizduojamas kompanijas +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Joks +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Pasirinkite kompanijas, kurių krovinių srautus norite matyti # Linkgraph legend window and linkgraph legend in smallmap -STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nenaudotas -STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}prisotintas +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nenaudojamas +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}optimalus STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}perkrautas # Base for station construction window(s) @@ -2513,7 +2567,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Statyti STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pasirinkti stoties klasę rodymui STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pasirinkti stoties statymo tipą -STR_STATION_CLASS_DFLT :Numatytoji stotis +STR_STATION_CLASS_DFLT :Numatytoji stotelė STR_STATION_CLASS_WAYP :Keliarodžiai # Signal window @@ -2751,10 +2805,11 @@ STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stotelė STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Oro uosto klasė: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Oro uosto pavadinimas: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Oro uosto žemės plotelio pavadinimas: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}Plėtinys: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Krovinys priimtas: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Geležinkelių greičio limitas: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Kelio greičio limitas: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Akmenys @@ -2803,7 +2858,7 @@ STR_LAI_TREE_NAME_TREES :Medžiai STR_LAI_TREE_NAME_RAINFOREST :Atogrąžų miškas STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusiniai augalai -STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Geležinkelio stotis +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Geležinkelio stotelė STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Lėktuvo angaras STR_LAI_STATION_DESCRIPTION_AIRPORT :Oro uostas STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Sunkvežimių pakrovimo aikštelė @@ -2851,16 +2906,16 @@ 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-2013 OpenTTD komanda +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 OpenTTD komanda # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą STR_SAVELOAD_LOAD_CAPTION :{WHITE}Įkelti žaidimą STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Išsaugoti scenarijų STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Įkelti scenarijų -STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Atverti aukščių žemėlapį -STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Išsaugoti aukščių žemėlapį -STR_SAVELOAD_HOME_BUTTON :{BLACK}Spausti čia perėjimui į numatytąją saugojimo/įkrovimo direktoriją +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Įkelti teminį žemėlapį +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Išsaugoti teminį žemėlapį +STR_SAVELOAD_HOME_BUTTON :{BLACK}Šokti į numatytąjį saugojimo/įkėlimo katalogą STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} laisva STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Diskų, katalogų ir išsaugotu žaidimų sąrašas STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Pasirinktas žaidimas @@ -2868,14 +2923,15 @@ STR_SAVELOAD_DELETE_BUTTON :{BLACK}Šalinti STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Ištrinti pasirinktą žaidimą STR_SAVELOAD_SAVE_BUTTON :{BLACK}Išsaugoti STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Išsaugoti žaidimą pasirinktu vardu -STR_SAVELOAD_LOAD_BUTTON :{BLACK}Užkrauti -STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Užkrauti pasirinktą žaidimą +STR_SAVELOAD_LOAD_BUTTON :{BLACK}Įkelti +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Įkelti pasirinktą žaidimą +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Įkrauti pasirinktą žemėlapį STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Žaidimo ypatybės STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nėra informacijos STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} -STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Plėtiniai: {WHITE}{STRING} -STR_SAVELOAD_OSKTITLE :{BLACK}Įveskite Išsaugomo žaidimo vardą +STR_SAVELOAD_OSKTITLE :{BLACK}Įveskite išsaugomo žaidimo vardą # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Pasaulio kūrimas @@ -2883,42 +2939,41 @@ STR_MAPGEN_MAPSIZE :{BLACK}Žemėla STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Pasirinkite žemėlapio dydį langeliais. Prieinamų langelių skaičius bus šiek tiek mažesnis. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Miestų kiekis: -STR_MAPGEN_DATE :{BLACK}Data: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industrijų kiekis: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sniego linija: +STR_MAPGEN_DATE :{BLACK}Pradžios data: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Pramonės įmonių kiekis: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Didžiausias leistinas aukštis: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Padidinti didžiausią leistiną aukštį vienetu +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Sumažinti didžiausią leistiną aukštį vienetu +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sniego linijos aukštis: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Paaukštinti sniego liniją STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pažeminti sniego liniją -STR_MAPGEN_RANDOM_SEED :{BLACK}Atsitiktinė pradžia: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Paspauskite, jeigu norite įvesti atsitiktinę skaičių seką naudojamą pasaulio kūrimui -STR_MAPGEN_RANDOM :{BLACK}Atsitiktinai -STR_MAPGEN_RANDOM_HELP :{BLACK}Parenką naują atsitiktinę skaičių seką naudojamą pasaulio kūrimui -STR_MAPGEN_LAND_GENERATOR :{BLACK}Pasaulio kūrimas: +STR_MAPGEN_LAND_GENERATOR :{BLACK}Generavimo algoritmas: STR_MAPGEN_TREE_PLACER :{BLACK}Medžių algoritmas: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vietovės tipas: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Jūros lygis: -STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Upių: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Upių kiekis: STR_MAPGEN_SMOOTHNESS :{BLACK}Jautrumas: STR_MAPGEN_VARIETY :{BLACK}Įvairovės paskirstymas: STR_MAPGEN_GENERATE :{WHITE}Sukurti # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Žemėlapio kraštai: -STR_MAPGEN_NORTHWEST :{BLACK}Šiaurės-vakarai -STR_MAPGEN_NORTHEAST :{BLACK}Šiaurės-rytai +STR_MAPGEN_NORTHWEST :{BLACK}Šiaurės vakarai +STR_MAPGEN_NORTHEAST :{BLACK}Šiaurės rytai STR_MAPGEN_SOUTHEAST :{BLACK}Pietryčiai STR_MAPGEN_SOUTHWEST :{BLACK}Pietvakariai STR_MAPGEN_BORDER_FREEFORM :{BLACK}Laisva forma STR_MAPGEN_BORDER_WATER :{BLACK}Vanduo STR_MAPGEN_BORDER_RANDOM :{BLACK}Atsitiktinis -STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Atsitiktinai -STR_MAPGEN_BORDER_MANUAL :{BLACK}Pasirinktinai +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Atsitiktiniai +STR_MAPGEN_BORDER_MANUAL :{BLACK}Pasirinktiniai -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Zemelapio rotacija: -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Žemėlapio vardas: +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Žemėlapio pasukimas: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Žemėlapio pavadinimas: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Dydis: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Įveskite atsitiktinį skaičių +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Keisti didžiausią leistiną aukštį STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Pakeisti sniego linijos aukštį STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Keisti pradžios metus @@ -2951,95 +3006,110 @@ STR_GENERATION_PREPARING_SCRIPT :{BLACK}Skriptas STR_GENERATION_PREPARING_GAME :{BLACK}Ruošiamas žaidimas # NewGRF settings -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Papild. grafikos nustatymai (NewGRF) -STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Išsami NewGRF informacija -STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktyvios NewGRF bylos -STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktyvios NewGRF bylos -STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Pasirinkti nustatymus: -STR_NEWGRF_FILTER_TITLE :{ORANGE}Įrašo filtravimas: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Užkrauti parinktą nustatymą -STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Išsaugoti nustatymą -STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Išsaugoti esamą sąrašą kaip nuostatą -STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Įvesti vardą nuostatai -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Ištrinti nustatymus -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Ištrinti dabar pasirinktas nuostatas +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Plėtinių nuostatos +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Išsami plėtinio informacija +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktyvūs plėtiniai +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktyvūs plėtiniai +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Rinkinys: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtras: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Įkelti pasirinktą plėtinių rinkinį +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Išsaugoti rinkinį +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Išsaugoti esamą sąrašą kaip plėtinių rinkinį +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Įvesti rinkinio pavadinimą +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Ištrinti rinkinį +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Ištrinti pasirinktą plėtinių rinkinį STR_NEWGRF_SETTINGS_ADD :{BLACK}Pridėti -STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Įtraukti pažymėtus Papild. grafikos failus į jūsų nustatymus +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Įtraukti pasirinktą plėtinį į aktyvių plėtinių sąrašą STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Nuskaityti dar kartą failus -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Atnaujinti prieinamų Papild. grafikos failų sąrašą +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Atnaujinti galimų plėtinių sąrašą STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Pašalinti -STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Pašalinti pažymėtą Papild. grafikos failą iš sąrašo +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Pašalinti pasirinktą plėtinį iš sąrašo STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Aukštyn -STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Perkelti pažymėtus Papild. grafikos failus sąraše aukštyn +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Paslinkti pasirinktą plėtinį sąrašu aukštyn STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Žemyn -STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Perkelti pažymėtus Papild. grafikos failus sąraše žemyn -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Įdiegtų papild. grafikos failų sąrašas. +STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Paslinkti pasirinktą plėtinį sąrašu žemyn +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Atnaujinti +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Atnaujinti plėtinius, jei yra įdiegta naujesnė versija +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Aktyvių plėtinių sąrašas -STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nustatyti parametrus -STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Rodyti parametrus -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Kaitalioti paletę -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Kaitalioja parinkto NewGRF paletę.{}Darykite jei pajungta grafika nuspalvinta rožine spalva -STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Pritaikyti pakeitimus +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Plėtinio nuostatos +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Rodyti nuostatas +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Perjungti spalvų paletę +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Perjunkite spalvų paletę, jei pasirinkto plėtinio objektai žaidime yra nuspalvinti rožine spalva +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Taikyti pokyčius STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Rasti ieškomą turinį tinkle STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Patikrinti ar trūkstamas turinys gali būti rastas internete -STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Failo vardas: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Failo pavadinimas: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versija: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Anksčiausia suderinama versija: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5suma: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 suma: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paletė: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametrai: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Nuostatos: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Informacijos nėra STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Atitinkamas failas nerastas STR_NEWGRF_SETTINGS_DISABLED :{RED}Išjungta STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nesuderinamas su šia OpenTTD versija +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Išsaugoti rinkinį +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Visų rinkinių sąrašas +STR_SAVE_PRESET_TITLE :{BLACK}Įveskite rinkinio pavadinimą +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Šiuo metu pasirinktas rinkinio pavadinimas +STR_SAVE_PRESET_CANCEL :{BLACK}Atšaukti +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Nieko nedaryti ir grįžti atgal +STR_SAVE_PRESET_SAVE :{BLACK}Išsaugoti +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Išsaugoti rinkinį pasiriktu pavadinimu + # NewGRF parameters window -STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Pakeisti NewGRF parametrus -STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Uždaryti +STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Plėtinio nuostatos +STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Užverti STR_NEWGRF_PARAMETERS_RESET :{BLACK}Atstatyti -STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Nustayti pradines reikšmes visiems parametrams -STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametras {NUM} +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Atstatyti pradines reikšmes visoms nuostatoms +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Nuostata {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} -STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Parametrų skaičius: {ORANGE}{NUM} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Nuostatų skaičius: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Apžiūrėti - {STRING} -STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Tėvas -STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Apžiūrėti objektą iš tėvo apimties +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Viršobjektis +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Apžiūrėti objektą iš viršobjekčio srities STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ties {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objektas -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Geležinkėlio tipas +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Bėgio tipas -STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF kintamojo 60+x parametras (šešioliktainėje sist.) +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Plėtinio kintamojo 60+x parametras (šešioliktainėje sistemoje) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Išdėstymo animacinis objektas {COMMA} ({STRING}) -STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Kitas animacinis objektas -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pereiti prie kito animacinio objekto praleidžiant visus pseudo/spalvinimo/šriftų objektus peršokant į pradžią pabaigoje -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pereiti prie animacinio objekto -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Pereiti prie nurodyto animacinio objekto. Jeigu objektas nėra įprastas animacinis objektas, pereiti prie kito įprasto -STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Buvęs animacinis objektas -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Pereiti prie buvusio animacinio objekto praleidžiant visus pseudo/spalvinimo/šriftų objektus peršokant į pabaigą pradžioje -STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atvaizdavimas dabartinio pasirinkto sprite. Suderinamumas yra ignoruojamas, rengiant šį sprite -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Perkelti sprite aplink, keičiant X ir Y atsvaras -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X atsvara: {NUM}, Y atsvara: {NUM} -STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pasirinkti sprite -STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pasirinkite sprite iš bet kurios vietos ekrane - -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Eiti į sprite +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Lygiuojamas spruklys {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Tolesnis spruklys +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Įkelti tolesnį spruklį +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nurodyti spruklį +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Įkelti nurodytą spruklį. Jei nurodytas spruklys nėa normalus, įkelti tolesnį normalų +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Ankstesnis spruklys +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Įkelti ankstesnį spruklį +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Pasirinkto spruklio atvaizdas, nekreipiant dėmesio į lygiavimą +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Paslinkti spruklį, keičiant X ir Y poslinkius +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Atkurti +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Atkurti numatytuosius santykinius poslinkius +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X poslinkis: {NUM}, Y poslinkis: {NUM} (Absoliutus) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X poslinkis: {NUM}, Y poslinkis: {NUM} (Santykinis) +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pasirinkti spruklį +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pasirinkti spruklį iš bet kurios vietos ekrane + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Įkelti spruklį # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Įspėjimas: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Klaida: {SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatalinė klaida: {SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ištiko nepataisoma NewGRF klaida: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} neveiks su TTDPatch versija nurodyta pagal OpenTTD. +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Lemtingoji klaida: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Įvyko lemtingoji plėtinio klaida: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} neveiks su TTDPatch versija nurodyta pagal OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} skirtas {STRING} TTD versijai. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} yra pritaikytas naudojimui su {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Neteisingas parametras {1:STRING}: parametras {STRING} ({NUM}) @@ -3047,9 +3117,9 @@ STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} turi STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} turi būti įkeltas po {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} reikalauja OpenTTD versijos {STRING} arba naujesnės STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF failas, kurį turėjo išversti -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Įkelta per daug NewGRF -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Įkėlimas {1:STRING} kaip statinio NewGRF su {STRING} gali sukelti desinchronizacijas -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Netikėtas spruklys (spruklys {3:NUM}) +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Įkelta per daug plėtinių +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Plėtinio {1:STRING} įkėlimas su {STRING} gali išderinti žaidimą +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Netikėtas spruklys ({3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Nežinoma veiksmo 0 savybė {4:HEX} (spruklys {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Bandymas panaudoti neteisingą ID (spruklys {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} turi sugadintą spruklį. Visi sugadinti sprukliai bus rodomi kaip raudoni klaustukai (?) @@ -3058,7 +3128,7 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Skaitymas už p STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Šiuo metu naudojamam grafikos rinkiniui trūksta keleto spruklių.{}Atnaujinkite pagrindinį grafikos rinkinį STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Šiuo metu naudojamam pagrindinės grafikos rinkiniui trūsta keleto spruklių. {}Atnaujinkite pagrindinės grafikos rinkinį. {} Kadangi žaidžiate {YELLOW} negalutinę, vis dar kuriamą OpenTTD versiją, {WHITE}, jums, ko gero, reikėtų įdiegti atitinkamą{YELLOW}naujausią, negalutinį pagrindinės grafikos rinkinį.{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Pageidautas GRF resursas yra neprieinamas (spruklys {3:NUM}) -STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} buvo išjungta: {STRING} +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} buvo išjungtas {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neteisingas/nežinomas spruklio išdėstymo formatas (spruklys {3:NUM}) # NewGRF related 'general' warnings @@ -3067,27 +3137,28 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jūs no STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Negalima pridėti failo: pasikartojantis GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Atitinkamas failas nerastas (panaudotas suderinamas grafikos failas) -STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Neįmanoma pridėti failo: pasiektas NewGRF failų limitas +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Neįmanoma pridėti failo: pasiektas plėtinių failų limitas STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Suderinami grafikos failai panaudoti vietoj trūkstamų STR_NEWGRF_DISABLED_WARNING :{WHITE}Trūkstami grafikos failai nenaudojami STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Trūksta GRF failų -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Paleidimas gali užlaužti OpenTTD. Neraportuokite šios rūšies gedimų!{}Ar norite paleisti toliau? +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Paleidimas gali išderinti ar užstrigdinti OpenTTD. Nepildykite klaidų pranešimų dėl šių problemų.{}Ar norite paleisti žaidimą? # NewGRF status -STR_NEWGRF_LIST_NONE :Niekas -STR_NEWGRF_LIST_ALL_FOUND :Visos bylos rastos -STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Rastos tinkamos bylos -STR_NEWGRF_LIST_MISSING :{RED}Trūkstamos bylos +STR_NEWGRF_LIST_NONE :Nėra +STR_NEWGRF_LIST_ALL_FOUND :Visi failai rasti +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Rasti suderinami failai +STR_NEWGRF_LIST_MISSING :{RED}Trūkstami failai # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}NewGRF elgesys '{0:STRING}' gali desinchronizuoti ir/arba nutraukti žaidimą -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Tai pakeitė varomo vagono būseną '{1:ENGINE}' kai ji nėra depe. -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Tai pakeitė transporto priemonės '{1:ENGINE}' ilgį kai ji nėra depe -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Traukinys '{VEHICLE}' priklausantis '{COMPANY}' yra netinkamo ilgio. Tai tikriausiai nutiko dėl netinkamo NewGRF. Žaidimas gali būti išsinchronizuotas arba išjungtas - -STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' teikia neteisingą informaciją -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}'{1:ENGINE}' variklio krovinio/pertvarkymo informacija skiriasi nuo pirkinių sąrašo po pastatymo. Tai gali sukelti neteisingus automatiško atnaujinimo arba pertvarkymo rezultatus +STR_NEWGRF_BROKEN :{WHITE}Plėtinys '{0:STRING}' gali išderinti ar net nutraukti žaidimą. +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Transporto priemonės '{1:ENGINE}' būsena pasikeitė jai nesant garaže/depe/angare +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Transporto priemonės '{1:ENGINE}' ilgis pasikeitė jai nesant garaže/depe/angare +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Transporto priemonės '{1:ENGINE}' talpa pasikeitė jai nesant garaže/depe/angare +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Traukinys '{VEHICLE}' priklausantis '{COMPANY}' yra netinkamo ilgio. Tai tikriausiai nutiko dėl netinkamo plėtinio. Žaidimas gali būti išderintas ar net išjungtas + +STR_NEWGRF_BUGGY :{WHITE}Plėtinys '{0:STRING}' teikia neteisingą informaciją +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Transporto priemonės '{1:ENGINE}' talpa skiriasi nuo nurodytos galimų priemonių sąraše. Automatinis atnaujinimas gali tinkamai neveikti STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' sukėle begalinį ciklą produkcijos atgaliniame kvietime STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Kvietimas {1:HEX} grąžino nežinomą/klaidingą atsakymą {2:HEX} @@ -3095,14 +3166,17 @@ STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Kvietima STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} vnt. -STR_NEWGRF_INVALID_ENGINE : -STR_NEWGRF_INVALID_INDUSTRYTYPE : +STR_NEWGRF_INVALID_ENGINE : +STR_NEWGRF_INVALID_INDUSTRYTYPE : + +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : # NewGRF scanning window -STR_NEWGRF_SCAN_CAPTION :{WHITE}Tikrinami NewGRF -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Nuskaitomi NewGRF. Tai gali užtrukti, priklausomai nuo kiekio... -STR_NEWGRF_SCAN_STATUS :{BLACK}Nuskaitomi {NUM} NewGRF{P "" "" ""} iš paskaičiuotų {NUM} NewGRF{P "" "" ""} -STR_NEWGRF_SCAN_ARCHIVES :Ieškoma archyvų +STR_NEWGRF_SCAN_CAPTION :{WHITE}Tikrinami plėtiniai +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Nuskaitomi plėtiniai. Tai gali užtrukti, priklausomai nuo kiekio... +STR_NEWGRF_SCAN_STATUS :{BLACK}Nuskaityti {NUM} plėtin{P ys iai ių} iš {NUM} +STR_NEWGRF_SCAN_ARCHIVES :Ieškoma archyvuose # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Ženklų sąrašas - {COMMA} ženkl{P as ai ų} @@ -3118,9 +3192,9 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Įrašyk # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Miestai -STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nieko - +STR_TOWN_DIRECTORY_NONE :{ORANGE}Nėra STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Miestų pavadinimai - spragtelėjus ant vardo, miestas rodomas ekrano centre. Ctrl+Paspaudimas atidaro naują langą su miesto vaizdu +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Spragtelėjus ant pavadinimo, miestas bus parodytas ekrano centre. Spragtelėjus laikant nuspaudus „Ctrl“ klavišą, bus atvertas papildomas peržiūros langas į pasirinktą miestą STR_TOWN_POPULATION :{BLACK}Pasaulio populiacija: {COMMA} # Town view window @@ -3135,8 +3209,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} pristatyta STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (vis dar reikia) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (pristatyta) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miestas auga kas {ORANGE}{COMMA}{BLACK} dien{P ą as ų} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miestas auga kas {ORANGE}{COMMA}{BLACK} dien{P ą as ų} (paremtas) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miestas auga kas {ORANGE}{COMMA}{BLACK}{NBSP}dien{P ą as ų} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miestas auga kas {ORANGE}{COMMA}{BLACK}{NBSP}dien{P ą as ų} (paremtas) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Miestas {RED}ne{BLACK}didėja STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Triukšmo limitas mieste: {ORANGE}{COMMA}{BLACK} daugiausia: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Rodyti miestą ekrano centre. Ctrl+Paspaudimas atidaro naują langą su miesto vaizdu @@ -3196,7 +3270,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacija STR_GOAL_QUESTION_CAPTION_WARNING :Perspėjimas STR_GOAL_QUESTION_CAPTION_ERROR :Klaida -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Atšaukti STR_GOAL_QUESTION_BUTTON_OK :Gerai STR_GOAL_QUESTION_BUTTON_NO :Ne @@ -3215,6 +3289,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Pradėti iš na STR_GOAL_QUESTION_BUTTON_POSTPONE :Atidėti STR_GOAL_QUESTION_BUTTON_SURRENDER :Pasiduoti STR_GOAL_QUESTION_BUTTON_CLOSE :Uždaryti +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidijos @@ -3235,6 +3310,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Buvęs STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Į ankstesnį puslapį STR_STORY_BOOK_NEXT_PAGE :{BLACK}Kitas STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Į kitą puslapį +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Klaidinga tikslo nuoroda # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stotelių pavadinimai - paspausk ant stotelės pavadinimo, kad pamatytum ją ekrano centre. Ctrl+Paspaudimas atidaro naują langą su stotelės vaizdu @@ -3249,7 +3325,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Jokių k # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Laukia: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} pakeliui iš „{STATION}“) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervuota krovai) @@ -3303,10 +3378,10 @@ STR_CARGO_RATING_OUTSTANDING :Nuostabus STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centruoti stotį pagrindiniame ekrane. Ctrl+Click atidaro naują peržiūros langą su vaizdu į šią stotį STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Pakeisti stoties pavadinimą -STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Rodyti visus traukinius, į kurių užduotis yra įtraukta ši stotis -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Rodyti visus automobilius, į kurių užduotis yra įtraukta ši stotis -STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Rodyti visus lėktuvus, į kurių užduotis yra įtraukta ši stotis -STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Rodyti visus laivus, į kurių užduotis yra įtraukta ši stotis +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Rodyti visus traukinius, į kurių užduotis yra įtraukta ši stotelė +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Rodyti visus automobilius, į kurių užduotis yra įtraukta ši stotelė +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Rodyti visus lėktuvus, į kurių užduotis yra įtraukta ši stotelė +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Rodyti visus laivus, į kurių užduotis yra įtraukta ši stotelė STR_STATION_VIEW_RENAME_STATION_CAPTION :Pervardinti stotį @@ -3344,12 +3419,12 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Iš viso: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Sąskaitos balansas STR_FINANCES_LOAN_TITLE :{WHITE}Paskola -STR_FINANCES_MAX_LOAN :{WHITE}Maksimali paskola: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Didžiausia paskola: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} -STR_FINANCES_BORROW_BUTTON :{BLACK}Skolintis{CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Skolintis daugiau. Ctrl+Paspaudimas pasiskolina daugiausiai kiek galima -STR_FINANCES_REPAY_BUTTON :{BLACK}Gražinti{CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Grąžinti paskolos dalį. Ctrl+Paspaudimas grąžina daugiausiai kiek gali +STR_FINANCES_BORROW_BUTTON :{BLACK}Skolintis {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Skolintis daugiau. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus pasiskolinta didžiausia įmanoma suma +STR_FINANCES_REPAY_BUTTON :{BLACK}Grąžinti {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Grąžinti paskolos dalį. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus grąžinta didžiausia įmanoma suma STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktūra # Company view @@ -3499,21 +3574,24 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Pašalin STR_GROUP_RENAME_TOOLTIP :{BLACK}Pervadinti pasirinktą grupę STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Paspauskite čia, kad apsaugoti grupę nuo bendro auto-pakeitimo +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Pašalinti grupę +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Ar tikrai norite pašalinti šią grupę ir visus jos palikuonis? + STR_GROUP_ADD_SHARED_VEHICLE :Įkelti bendras transporto priemones STR_GROUP_REMOVE_ALL_VEHICLES :Iškelti visas transporto priemones STR_GROUP_RENAME_CAPTION :{BLACK}Pervadinti grupę # Build vehicle window -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nauji Traukiniai -STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nauji Elektriniai Traukiniai -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nauji Vienbegiai Traukiniai -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nauji „Maglev“ traukiniai +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nauji lokomotyvai +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nauji elektriniai lokomotyvai +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nauji vienbėgiai lokomotyvai +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nauji „Maglev“ lokomotyvai -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Traukiniai +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nauji lokomotyvai STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nauji automobiliai STR_BUY_VEHICLE_SHIP_CAPTION :Nauji laivai -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Naujas lėktuvas +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nauji lėktuvai STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kaina: {GOLD}{CURRENCY_LONG}{BLACK} Svoris: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Greitis: {GOLD}{VELOCITY}{BLACK} Galia: {GOLD}{POWER} @@ -3536,35 +3614,50 @@ STR_PURCHASE_INFO_ALL_BUT :visiems krovini STR_PURCHASE_INFO_MAX_TE :{BLACK}Didž. traukos jėga: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Nuotolis: {GOLD}{COMMA} langeliai -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Transporto priemoniu pasirinkimo sarasas - paspausk ant priemones, kad gautum daugiau informacijos -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Automobiliu pasirinkimo sarasas - paspausk ant automobilio jei nori detalesnes informacijos -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivu sarasas - paspausk ant laivo, jei nori detalesnes informacijos -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lektuvu sarasas - paspausk ant lektuvo, jei nori daugiau informacijos +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lokomotyvų ir vagonų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, lokomotyvas ar vagonas bus slepiamas/rodomas sąraše +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Automobilių sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, automobilis bus slepiamas/rodomas sąraše +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, laivas bus slepiamas/rodomas sąraše +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lėktuvų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, lėktuvas bus slepiamas/rodomas sąraše -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Pirkti transporto priemonę -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Pirkti transporto priemonę -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Pirkti Laivą -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Pirkti lėktuvą +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Pirkti +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Pirkti +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Pirkti +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Pirkti -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymetą traukinį. Shift+Click parodys kainą neperkant -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Įsigyti pažymetą transporto priemonę -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymetą laivą. Shift+Click parodys kainą neperkant -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lėktuvą. Shift+Click parodys kainą neperkant +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lokomotyvą ir/ar vagonus. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą automobilį. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą laivą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lėktuvą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Pervardinti STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Pervardinti STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Pervardinti STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Pervardinti -STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Pervardinti traukinio tipa -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Pervardinti automobiliu tipa -STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Pakeisti laivo tipa -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Pakeisti lėktuvo vardą +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Pervardinti pažymėtą lokomotyvą ar vagoną +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Pervardinti pažymėtą automobilį +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Pervardinti pažymėtą laivą +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Pervardinti pažymėtą lėktuvą -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Pervardinti traukinio tipa -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Pervardinti automobilių tipą -STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Pakeisti laivo vardą -STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Pakeisti lėktuvo vardą +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Slėpti +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Slėpti +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Slėpti +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Slėpti + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Rodyti +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Rodyti +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Rodyti +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Rodyti + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Slėpti arba rodyti pažymėtą lokomotyvą +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Slėpti arba rodyti pažymėtą automobilį +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Slėpti arba rodyti pažymėtą laivą +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Slėpti arba rodyti pažymėtą lėktuvą + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Pervardinti lokomotyvą ar vagoną +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Pervardinti automobilį +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Pervardinti laivą +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Pervardinti lėktuvą # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -3703,6 +3796,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE.ka :Automobilį STR_REPLACE_VEHICLE_SHIP :Laivas STR_REPLACE_VEHICLE_AIRCRAFT :Lėktuvas +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Naudojamos transporto priemonės +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :BLACK}Stulpelis su informacija apie transporto priemones, kurias šiuo metu naudojate +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Galimos transporto priemonės +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Stulpelis su informacija apie transporto priemones, kuriomis galite pakeisti jau turimas + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Pasirink tr. priemonės tipą, kurią reikės keisti STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Pasirink tr. priemonės tipą, kuria bus keičiamos pasirinktos tr. priemonės @@ -3827,7 +3925,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Talpa: { STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pervesti už tiekėjų sistemas: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Techninė apžiūra kas: {LTBLUE}{COMMA}dien{P ą as ų}{BLACK} Paskutinė apžiūra:{LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Techninė apžiūra kas: {LTBLUE}{COMMA}{NBSP}dien{P ą as ų}{BLACK} Paskutinė apžiūra:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Siųsti techninei apžiūrai patikimumui nukritus iki: {LTBLUE}{COMMA}%{BLACK} Paskutinė apžiūra: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Padidinti techninės apžiūros intervalą 10 dienų (arba procentų). Spragtelėjus laikant nuspaustą Ctrl klavišą, intervalas bus padidintas 5 dienomis (arba procentais) STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Sumažinti techninės apžiūros intervalą 10 dienų (arba procentų). Spragtelėjus laikant nuspaustą Ctrl klavišą, intervalas bus sumažintas 5 dienomis (arba procentais) @@ -3837,9 +3935,9 @@ STR_VEHICLE_DETAILS_DEFAULT :Numatytasis STR_VEHICLE_DETAILS_DAYS :Dienos STR_VEHICLE_DETAILS_PERCENT :Procentai -STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Pervadinti traukinį -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Pervadinti automobilį -STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Pervadinti laivą +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Pervardinti traukinį +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Pervardinti automobilį +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Pervardinti laivą STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Pervardinti lėktuvą # Extra buttons for train details windows @@ -4069,16 +4167,20 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Kelionė (nėra STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Vykti ne didesniu, nei {2:VELOCITY} greičiu (kelionės trukmė nenustatyta) STR_TIMETABLE_TRAVEL_FOR :Keliauti {STRING.ka} STR_TIMETABLE_TRAVEL_FOR_SPEED :Vykti {STRING} ne didesniu, nei {VELOCITY} greičiu +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Vykti ({STRING.ka}, neįtraukiant į tvarkaraštį) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Vykti ({STRING.ka}, neįtraukiant į tvarkaraštį) ne greičiau, nei {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stovėti {STRING.ka}, neįtraukti į tvarkaraštį) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(vykti {STRING.ka}, neįtraukiant į tvarkaraštį) STR_TIMETABLE_STAY_FOR :ir pasilikti {STRING.ka} STR_TIMETABLE_AND_TRAVEL_FOR :ir keliauti {STRING.ka} -STR_TIMETABLE_DAYS :{G=mot}{COMMA} dien{P a os ų} +STR_TIMETABLE_DAYS :{G=mot}{COMMA}{NBSP}dien{P a os ų} STR_TIMETABLE_DAYS.kas :{COMMA} dien{P a os ų} STR_TIMETABLE_DAYS.ko :{COMMA} dien{P os as ų} STR_TIMETABLE_DAYS.kam :{COMMA} dien{P ai oms ų} STR_TIMETABLE_DAYS.ka :{COMMA} dien{P ą as ų} STR_TIMETABLE_DAYS.kuo :{COMMA} dien{P a omis ų} STR_TIMETABLE_DAYS.kur :{COMMA} dien{P oje ose ų} -STR_TIMETABLE_TICKS :{COMMA} žym{P a os ų} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}impuls{P as ai ų} STR_TIMETABLE_TOTAL_TIME :{BLACK}Maršruto trukmė yra {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Maršruto trukmė yra mažiausiai {STRING}, nes nustatytos ne visų užduočių trukmės @@ -4099,7 +4201,7 @@ STR_TIMETABLE_CLEAR_TIME :{BLACK}Trukmės STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Atšaukti pažymėtos užduoties trukmės ribojimus STR_TIMETABLE_CHANGE_SPEED :{BLACK}Pakeisti greičio ribą -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Pakeisti pažymėtos užduoties maksimalaus greičio ribą +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Pakeisti pažymėtos užduoties didžiausio greičio ribą STR_TIMETABLE_CLEAR_SPEED :{BLACK}Greičio neriboti STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Neriboti pažymėtos užduoties greičio @@ -4135,7 +4237,7 @@ STR_AI_DEBUG_SETTINGS :{BLACK}Nustatym STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Keisti skripto nustatymus STR_AI_DEBUG_RELOAD :{BLACK}Perkrauti AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Išbraukti DI, perkrauti skritpą, ir perkrauti DI -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Įjungti/išjungti laužymą, kai DI registro žinutė sutinka su lūžio žinute +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Įjungti/išjungti stabdymą, jei DI žurnalo žinutė sutampa su stabdos žinute STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Lūžis ant: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Lūžis ant STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kai DI registro žinutė sutampa su šia eilute, žaidimas pristabdomas @@ -4204,6 +4306,8 @@ STR_AI_SETTINGS_START_DELAY :Dienų skaičiu STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} aprašymas {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} pasikeitimai {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licencija {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Skaidyti tekstą +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Skaidyti tekstą taip, kad jis visas tilpų lange STR_TEXTFILE_VIEW_README :{BLACK}Peržiūrėti SKAITYKMANE STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Pasikeitimai STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencija @@ -4263,8 +4367,8 @@ STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nepa STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... paveikslėlis yra per didelis -STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skales ispejimas -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Perdaryti pagrindini zemelapi per daug nerekomenduojama. Testi generavima? +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Mastelio įspėjimas +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Per daug keisti pradinio žemėlapio dydį nerekomenduojama. Tęsti generavimą? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Rasta tik fiktyvi garsų biblioteka. Jeigu norite garsų žaidime, įdiekite garsų rinkinį naudojant parsisiuntimų sistemą. @@ -4314,6 +4418,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Kasinėj STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Jau siekia jūros lygį STR_ERROR_TOO_HIGH :{WHITE}Per aukštai STR_ERROR_ALREADY_LEVELLED :{WHITE}... jau plokščia +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Tiltas bus per aukštai. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kompanijos vardo pakeisti negalima... @@ -4322,7 +4427,7 @@ STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Direktor STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... daugiausia pasiskolinti galima {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Daugiau skolintis negalima... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... visa paskola gražinta -STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} reikia +STR_ERROR_CURRENCY_REQUIRED :{WHITE}...reikia turėti {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Skolos grąžinti negalima... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Negalima dovanoti iš banko pasiskolintų pinigų... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Neįmanoma pirkti kompanijos... @@ -4340,9 +4445,9 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... per STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... per arti kito miesto STR_ERROR_TOO_MANY_TOWNS :{WHITE}... per daug miestų STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... daugiau nera vietos zemelapyje -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Miestas nestatys kelių. Jūs galite įjungti kelių statybą per Sudėtingesni nustatymai>Ekonomika>Miestai. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Miestas nestatys kelių. Jūs galite įjungti kelių statybą per „Išplėstinės nuostatos>Aplinka>Miestai“. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vyksta kelio darbai -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Negalima panaikinti šio miesto...{}Mieste yra stotis arba depas, arba miestui priklausantis vienas iš laukelių negali būti ištrintas. +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Negalima panaikinti šio miesto...{}Mieste yra stotelė arba depas, arba miestui priklausantis vienas iš laukelių negali būti pašalintas STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nėra tinkamos vietos statulai šio miesto centre # Industry related errors @@ -4364,6 +4469,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... miš STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... gali būti statoma tik aukščiau sniego linijos STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... gali būti statoma tik žemiau sniego linijos +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nėra tinkamos vietos '{STRING.kam}' pramonės įmonėms +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Pakeisti generavimo parametrus geresniam žemėlapiui sukurti + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Geležinkelio stoties čia statyti negalima... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Čia autobusų stotelės statyti negalima... @@ -4374,7 +4482,7 @@ STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Neįmano STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Negalima cia statyti oro uosto... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Ribojasi su daugiau nei viena stotele/pakrovimo aikštele -STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stotis per daug išsiplėtusi +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stotelė per daug išsiplėtusi STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Per daug stotelių STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Perdaug traukinių stoties dalių STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Per daug autobusų stotelių @@ -4500,6 +4608,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Pirmiau STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Negalima pradeti ir baigti tuo paciu metu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Tilto pirminės atramos turi būti tame pačiame aukštyje STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tiltas per žemas reljefui +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Tiltas per aukštas šiam kraštovaizdžiui. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Pradžia ir pabaiga turi būti vienoje linijoje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... abu tilto galai turi būti ant žemės STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... tiltas per ilgas @@ -4526,6 +4635,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... jis STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Neįmanoma sukurti grupę... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Neįmanoma ištrinti šią grupę... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Neįmanoma pervadinti grupę... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nepavyksta nustatyti viršgrupės... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Neįmanoma ištrinti visas tr. priemones iš šios grupės... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Neįmanoma įtraukti tr. priemonę į šią grupę... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Negalima pridėti bendrų transporto priemonių į grupę... @@ -4582,9 +4692,9 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Aptarnav STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... automobilis sunaikintas STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nebus įmanoma įsigyti jokių transporto priemonių -STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pakeiskite NewGRF nuostatas +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pakeiskite plėtinių nuostatas STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Kol kas negalima įsigyti jokių transporto priemonių -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pradėkite žaidimą vėliau, nei {DATE_SHORT}, arba įdiekite NewGRF papildinį, kuris leis įsigyti transporto priemonių šiame ankstyvame laikotarpyje +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pradėkite žaidimą vėliau, nei {DATE_SHORT}, arba įdiekite plėtinių, kurie leistų įsigyti transporto priemonių šiame ankstyvame laikotarpyje # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Neįmanoma priversti traukinio važiuoti nesaugiai... @@ -4604,7 +4714,7 @@ STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Sios uzd STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Negalima perkelti šio užsakymo... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Negalima praleisti šio užsakymo... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Negalima praleisti pažymėto užsakymo... -STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... transporto priemonė negali vykti į visas stotis +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... transporto priemonė negali vykti į visas stoteles STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... automobilis negali nukakti iki tos stotelės STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... automobilis dalinantis šį grafiką negali nukakti iki tos stotelės @@ -5015,33 +5125,33 @@ STR_SV_STNAME_FALLBACK :{STRING} Stotel ##id 0x8000 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Garai) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dyzelis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (garinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dyzelinis) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dyzelis STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dyzelis -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Garai) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Garai) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Garai) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Garai) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Dyzelis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (garinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney Jubilee (garinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu A4 (garinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH 8P (garinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :Dash (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry 25 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU 37 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss 47 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH 125 (dyzelinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH 30 (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH 40 (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :T.I.M. (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :AsiaStar (elektrinis) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Keleivinis vagonas STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Pašto vagonas STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Anglies vagonas @@ -5069,8 +5179,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Žaislų vagona STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Baterijų vagonas STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Putojančių gėrimų vagonas STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastmasės vagonas -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :X2001 (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :Millennium Z1 (elektrinis) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Keleivinis vagonas STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Pašto vagonas @@ -5099,10 +5209,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Žaislų vagona STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Baterijų vagonas STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Putojančių gėrimų vagonas STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastmasės vagonas -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektrinis) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 Leviathan (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 Cyclops (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 Pegasus (elektrinis) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 Chimaera (elektrinis) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Keleivinis vagonas STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Pašto vagonas @@ -5228,7 +5338,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug ke STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake keleivių keltas STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate krovininis laivas STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell krovininis laivas -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover krovininis laivas +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover krovininis laivas STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut krovininis laivas STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -5301,7 +5411,7 @@ STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Laivų d STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Laivų dokas #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Angaras -STR_UNKNOWN_STATION :Nežinoma stotis +STR_UNKNOWN_STATION :Nežinoma stotelė STR_DEFAULT_SIGN_NAME :Ženklas STR_COMPANY_SOMEONE :kažkas @@ -5328,6 +5438,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (paslėptas) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5363,8 +5474,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5375,9 +5484,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index bdcb14bea0..3337f3a5b7 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -31,18 +31,18 @@ STR_CARGO_PLURAL_PASSENGERS :Passagéier STR_CARGO_PLURAL_COAL :Kuelen STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Ueleg -STR_CARGO_PLURAL_LIVESTOCK :Béischten +STR_CARGO_PLURAL_LIVESTOCK :Véi STR_CARGO_PLURAL_GOODS :Wueren -STR_CARGO_PLURAL_GRAIN :Kaar +STR_CARGO_PLURAL_GRAIN :Kar STR_CARGO_PLURAL_WOOD :Holz -STR_CARGO_PLURAL_IRON_ORE :Eisnenerz +STR_CARGO_PLURAL_IRON_ORE :Eisenäerz STR_CARGO_PLURAL_STEEL :Stol STR_CARGO_PLURAL_VALUABLES :Wäertsaachen -STR_CARGO_PLURAL_COPPER_ORE :Koffererz +STR_CARGO_PLURAL_COPPER_ORE :Kofferäerz STR_CARGO_PLURAL_MAIZE :Mais STR_CARGO_PLURAL_FRUIT :Friichten STR_CARGO_PLURAL_DIAMONDS :Diamanten -STR_CARGO_PLURAL_FOOD :Iessen +STR_CARGO_PLURAL_FOOD :Iesswueren STR_CARGO_PLURAL_PAPER :Pabeier STR_CARGO_PLURAL_GOLD :Gold STR_CARGO_PLURAL_WATER :Waasser @@ -54,7 +54,7 @@ STR_CARGO_PLURAL_CANDY :Séissegkeeten STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COTTON_CANDY :Zockerwatt STR_CARGO_PLURAL_BUBBLES :Blosen -STR_CARGO_PLURAL_TOFFEE :Karmell +STR_CARGO_PLURAL_TOFFEE :Karamell STR_CARGO_PLURAL_BATTERIES :Batterien STR_CARGO_PLURAL_PLASTIC :Plastik STR_CARGO_PLURAL_FIZZY_DRINKS :Spruddel-Gedrénks @@ -65,14 +65,14 @@ STR_CARGO_SINGULAR_PASSENGER :Passagéier STR_CARGO_SINGULAR_COAL :Kuelen STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Ueleg -STR_CARGO_SINGULAR_LIVESTOCK :Béischt -STR_CARGO_SINGULAR_GOODS :Wuer -STR_CARGO_SINGULAR_GRAIN :Kaar +STR_CARGO_SINGULAR_LIVESTOCK :Véi +STR_CARGO_SINGULAR_GOODS :Wueren +STR_CARGO_SINGULAR_GRAIN :Kar STR_CARGO_SINGULAR_WOOD :Holz -STR_CARGO_SINGULAR_IRON_ORE :Eisenerz +STR_CARGO_SINGULAR_IRON_ORE :Eisenäerz STR_CARGO_SINGULAR_STEEL :Stol -STR_CARGO_SINGULAR_VALUABLES :Wertsaach -STR_CARGO_SINGULAR_COPPER_ORE :Koffererz +STR_CARGO_SINGULAR_VALUABLES :Wäertsaachen +STR_CARGO_SINGULAR_COPPER_ORE :Kofferäerz STR_CARGO_SINGULAR_MAIZE :Mais STR_CARGO_SINGULAR_FRUIT :Friichten STR_CARGO_SINGULAR_DIAMOND :Diamanten @@ -88,41 +88,41 @@ STR_CARGO_SINGULAR_CANDY :Séissegkeet STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COTTON_CANDY :Zockerwatt STR_CARGO_SINGULAR_BUBBLE :Blos -STR_CARGO_SINGULAR_TOFFEE :Karmell +STR_CARGO_SINGULAR_TOFFEE :Karamell STR_CARGO_SINGULAR_BATTERY :Batterie STR_CARGO_SINGULAR_PLASTIC :Plastik STR_CARGO_SINGULAR_FIZZY_DRINK :Spruddel-Gedrénks # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} Passagéier +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}Passagéier STR_QUANTITY_COAL :{WEIGHT_LONG} Kuel -STR_QUANTITY_MAIL :{COMMA} Posts{P aak äck} +STR_QUANTITY_MAIL :{COMMA}{NBSP}Posts{P ak äck} STR_QUANTITY_OIL :{VOLUME_LONG} Ueleg -STR_QUANTITY_LIVESTOCK :{COMMA} Béischt{P "" en} -STR_QUANTITY_GOODS :{COMMA} Wuerenkëscht{P "" en} -STR_QUANTITY_GRAIN :{WEIGHT_LONG} Kaar +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}Eenheet{P "" e} Véi +STR_QUANTITY_GOODS :{COMMA}{NBSP}Wuerekëscht{P "" en} +STR_QUANTITY_GRAIN :{WEIGHT_LONG} Kar STR_QUANTITY_WOOD :{WEIGHT_LONG} Holz -STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} Eisenerz +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} Eisenäerz STR_QUANTITY_STEEL :{WEIGHT_LONG} Stol -STR_QUANTITY_VALUABLES :{COMMA} S{P aak äck} mat Wäertsaachen -STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} Koffererz +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}S{P ak äck} mat Wäertsaachen +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} Kofferäerz STR_QUANTITY_MAIZE :{WEIGHT_LONG} Mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} Friichten -STR_QUANTITY_DIAMONDS :{COMMA} S{P aak äck} mat Diamanten -STR_QUANTITY_FOOD :{WEIGHT_LONG} Iessen +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}S{P ak äck} mat Diamanten +STR_QUANTITY_FOOD :{WEIGHT_LONG} Iesswueren STR_QUANTITY_PAPER :{WEIGHT_LONG} Pabeier -STR_QUANTITY_GOLD :{COMMA} S{P aak äck} mat Gold +STR_QUANTITY_GOLD :{COMMA}{NBSP}S{P ak äck} mat Gold STR_QUANTITY_WATER :{VOLUME_LONG} Waasser STR_QUANTITY_WHEAT :{WEIGHT_LONG} Weess STR_QUANTITY_RUBBER :{VOLUME_LONG} Kautschuck STR_QUANTITY_SUGAR :{WEIGHT_LONG} Zocker -STR_QUANTITY_TOYS :{COMMA} Spillsaach{P "" en} -STR_QUANTITY_SWEETS :{COMMA} S{P aak äck} mat Séissegkeeten +STR_QUANTITY_TOYS :{COMMA}{NBSP}Spillsaach{P "" en} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}S{P ak äck} mat Séissegkeeten STR_QUANTITY_COLA :{VOLUME_LONG} Cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} Zockerwatt STR_QUANTITY_BUBBLES :{COMMA} Blos{P "" en} -STR_QUANTITY_TOFFEE :{WEIGHT_LONG} Karmel +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} Karamell STR_QUANTITY_BATTERIES :{COMMA} Batterie{P "" n} STR_QUANTITY_PLASTIC :{VOLUME_LONG} Plastik STR_QUANTITY_FIZZY_DRINKS :{COMMA} Spruddelgedrénks @@ -134,11 +134,11 @@ STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KU STR_ABBREV_MAIL :{TINY_FONT}PO STR_ABBREV_OIL :{TINY_FONT}UL -STR_ABBREV_LIVESTOCK :{TINY_FONT}LI +STR_ABBREV_LIVESTOCK :{TINY_FONT}VE STR_ABBREV_GOODS :{TINY_FONT}WU STR_ABBREV_GRAIN :{TINY_FONT}KA STR_ABBREV_WOOD :{TINY_FONT}HO -STR_ABBREV_IRON_ORE :{TINY_FONT}EE +STR_ABBREV_IRON_ORE :{TINY_FONT}EA STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}WS STR_ABBREV_COPPER_ORE :{TINY_FONT}KE @@ -153,29 +153,29 @@ STR_ABBREV_WHEAT :{TINY_FONT}WE STR_ABBREV_RUBBER :{TINY_FONT}KT STR_ABBREV_SUGAR :{TINY_FONT}ZO STR_ABBREV_TOYS :{TINY_FONT}SP -STR_ABBREV_SWEETS :{TINY_FONT}SÉ +STR_ABBREV_SWEETS :{TINY_FONT}SE STR_ABBREV_COLA :{TINY_FONT}CO STR_ABBREV_CANDYFLOSS :{TINY_FONT}ZW STR_ABBREV_BUBBLES :{TINY_FONT}BL -STR_ABBREV_TOFFEE :{TINY_FONT}KR +STR_ABBREV_TOFFEE :{TINY_FONT}KA STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}KG -STR_ABBREV_NONE :{TINY_FONT}NO +STR_ABBREV_NONE :{TINY_FONT}KG STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} Passagéier -STR_BAGS :{COMMA} S{P aak äck} -STR_TONS :{COMMA} Tonn{P "" en} -STR_LITERS :{COMMA} Liter -STR_ITEMS :{COMMA} Objet{P "" en} -STR_CRATES :{COMMA} Këscht{P "" en} +STR_PASSENGERS :{COMMA}{NBSP}Passagéier +STR_BAGS :{COMMA}{NBSP}S{P ak äck} +STR_TONS :{COMMA}{NBSP}Tonn{P "" en} +STR_LITERS :{COMMA}{NBSP}Liter +STR_ITEMS :{COMMA}{NBSP}Eenheet{P "" en} +STR_CRATES :{COMMA}{NBSP}Këscht{P "" en} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Donkelblo STR_COLOUR_PALE_GREEN :Bleechgréng -STR_COLOUR_PINK :Rosa +STR_COLOUR_PINK :Pink STR_COLOUR_YELLOW :Giel STR_COLOUR_RED :Rout STR_COLOUR_LIGHT_BLUE :Hellblo @@ -183,52 +183,52 @@ STR_COLOUR_GREEN :Gréng STR_COLOUR_DARK_GREEN :Donkelgréng STR_COLOUR_BLUE :Blo STR_COLOUR_CREAM :Beige -STR_COLOUR_MAUVE :Donkelmoof -STR_COLOUR_PURPLE :Moof +STR_COLOUR_MAUVE :Mof +STR_COLOUR_PURPLE :Purpur STR_COLOUR_ORANGE :Orange STR_COLOUR_BROWN :Brong STR_COLOUR_GREY :Gro STR_COLOUR_WHITE :Wäiss # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}bhp -STR_UNITS_POWER_METRIC :{COMMA}ps -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}bhp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}ps +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} Tonn{P "" en} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} Tonn{P "" en} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}Tonn{P "" en} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}Tonn{P "" en} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} Galloun{P "" en} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} Liter{P "" ""} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}Galloun{P "" en} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}Liter{P "" ""} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings -STR_LIST_FILTER_TITLE :{BLACK}Filter Wieder: -STR_LIST_FILTER_OSKTITLE :{BLACK}Filter string -STR_LIST_FILTER_TOOLTIP :{BLACK}Wuert fir d'Lëscht ze filtern +STR_LIST_FILTER_TITLE :{BLACK}Filter String: +STR_LIST_FILTER_OSKTITLE :{BLACK}Filter String +STR_LIST_FILTER_TOOLTIP :{BLACK}Filter d'Lëscht op e Wuert -STR_TOOLTIP_GROUP_ORDER :{BLACK}Wiel Gruppéierreihenfollëg +STR_TOOLTIP_GROUP_ORDER :{BLACK}Wiel Gruppéierreihefollëg STR_TOOLTIP_SORT_ORDER :{BLACK}Richtung fir ze sortéieren (ofsteigend/opsteigend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Argument fir ze sortéieren STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filterkritère wielen @@ -238,15 +238,26 @@ STR_BUTTON_RENAME :{BLACK}Ëmbenen STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fënster zoumaachen STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Fënstertitel - hei zéien fir d'Fënster ze bewegen -STR_TOOLTIP_SHADE :{BLACK}Shade Fenster - Weis nëmmen Titelbar +STR_TOOLTIP_SHADE :{BLACK}Fenster verklengeren - Weis nëmmen Titelbar STR_TOOLTIP_DEBUG :{BLACK}Weis NewGRF Debug Informatioun STR_TOOLTIP_DEFSIZE :{BLACK}Änner d'Fënster op d'Standardgréisst. Ctrl+Klick fir déi aktuell Gréisst als Standard ze späichern -STR_TOOLTIP_STICKY :{BLACK}Markéier dës Fënster fir net zougemeet ze ginn vun dem "All Fënsteren zoumaachen" Knäppchen. Ctrl+Klick speichert déi Actioun als Standard +STR_TOOLTIP_STICKY :{BLACK}Markéier dës Fënster fir net zougemeet ze ginn vun dem "All Fënsteren zoumaachen" Knäppchen. Ctrl+Klick späichert déi Actioun als Standard STR_TOOLTIP_RESIZE :{BLACK}Klicken an zéihen fir d'Fënstergréisst ze änneren STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Wiesselt grouss/kleng Fënstergréisst STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbar - scrollt d'Lëscht erop/erof STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbar - scrollt d'Lëscht no lénks/riets -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Objekter op engem Stëck Land zerstéieren. Ctrl wielt d'Land diagonal. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Objeten op engem Stëck Land zerstéieren. Ctrl wielt d'Land diagonal. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Verstoppten uweisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Verstoppten uweisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Verstoppten uweisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Verstoppten uweisen + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Mat dësem Knäppchen ginn verstoppten Zich och ugewisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Mat dësem Knäppchen ginn verstoppte Gefierer och ugewisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Mat dësem Knäppchen ginn verstoppte Schëffer och ugewisen +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mat dësem Knäppchen ginn verstoppte Fliger och ugewisen # Query window STR_BUTTON_DEFAULT :{BLACK}Standard @@ -277,25 +288,25 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Profit am lesch STR_SORT_BY_PROFIT_THIS_YEAR :Profit dëst Joer STR_SORT_BY_AGE :Alter STR_SORT_BY_RELIABILITY :Zouverlässegkeet -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total Luedplaatz no Luedungstyp +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total Kapazitéit pro Luedungstyp STR_SORT_BY_MAX_SPEED :Maximal Geschwindegkeet STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Wäert -STR_SORT_BY_LENGTH :Lengt +STR_SORT_BY_LENGTH :Längt STR_SORT_BY_LIFE_TIME :Reschtlaafzäit -STR_SORT_BY_TIMETABLE_DELAY :Zäitplang Verspéidung +STR_SORT_BY_TIMETABLE_DELAY :Zäitplangverspéidung STR_SORT_BY_FACILITY :Statiounstyp -STR_SORT_BY_WAITING_TOTAL :Gesamt wardend Güter -STR_SORT_BY_WAITING_AVAILABLE :Verfügbar wardend Güter -STR_SORT_BY_RATING_MAX :Héchsten Luedungsbewertung -STR_SORT_BY_RATING_MIN :Nidregsten Luedungsbewertung +STR_SORT_BY_WAITING_TOTAL :Gesamt waardend Gidder +STR_SORT_BY_WAITING_AVAILABLE :Verfügbar waardend Gidder +STR_SORT_BY_RATING_MAX :Héchste Luedungsbewäertung +STR_SORT_BY_RATING_MIN :Niddregst Luedungsbewäertung STR_SORT_BY_ENGINE_ID :ID (klassësch Sortéierung) STR_SORT_BY_COST :Käschten STR_SORT_BY_POWER :Kraaft STR_SORT_BY_TRACTIVE_EFFORT :Zéikraaft STR_SORT_BY_INTRO_DATE :Aféirungsdatum -STR_SORT_BY_RUNNING_COST :Betriebskäschten -STR_SORT_BY_POWER_VS_RUNNING_COST :Kraaft/Betriebskäschten +STR_SORT_BY_RUNNING_COST :Betribskäschten +STR_SORT_BY_POWER_VS_RUNNING_COST :Kraaft/Betribskäschten STR_SORT_BY_CARGO_CAPACITY :Luedungskapazitéit STR_SORT_BY_RANGE :Längt STR_SORT_BY_POPULATION :Bevölkerung @@ -303,30 +314,30 @@ STR_SORT_BY_RATING :Rating # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spill pausen -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Spill schnell laafen loosen +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Spill schnell lafe loossen STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Optiounen STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Spill späicheren, Spill ophalen, Eraus STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Weis d'Kaart, extra Usiicht oder d'Lëscht vun den Zeeschen STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Weis d'Stiedverzeeschnëss -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subventiounen weisen -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Weis d'Lëscht vun den Firmen hieren Statiounen -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Informatiounen zu den Firmenfinanzen -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Generel Firmeninformatioun +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subventiounen uweisen +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Weis d'Lëscht vun de Firmestatiounen +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Informatiounen zu de Firmefinanzen +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Generell Firmeninformatioun STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Weis d'Storybuch STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Weis d'Zillëscht STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Weis Grafiken STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Weis d'Firmen-Ranglëscht -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finanzéiert den Bau vun enger neier Industrie oder lëscht all d'Industrien op -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lëscht vun den Firmenzich. Ctrl+Klick wiesselt tescht Grupp/Zuch Lëscht -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lëscht vun den Storssengefierer vun der Firma. Ctrl+Klick wiesselt tëscht Gruppe/Stroossengefiererlescht -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lëscht vun den Firmenschëffer. Ctrl+Klick wiesselt tëscht Gruppen/Schëfflëscht. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Lëscht vun den Firmenfligeren. Ctrl+Klick wiesselt tëscht Gruppen/Fligerlëscht. +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finanzéiert de Bau vun enger neier Industrie oder lëscht all d'Industrien op +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lëscht vun de Firmenzich. Ctrl+Klick wiesselt tëscht Grupp/Zuch Lëscht +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lëscht vun de Stroossegefierer vun der Firma. Ctrl+Klick wiesselt tëscht Gruppe/Stroossegefiererlescht +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lëscht vun de Firmeschëffer. Ctrl+Klick wiesselt tëscht Gruppen/Schëfflëscht. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Lëscht vun de Firmefligeren. Ctrl+Klick wiesselt tëscht Gruppen/Fligerlëscht. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Vergréisser d'Sicht STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Verklenger d'Sicht -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Schinnen bauen -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Stroossen bauen -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Schëffhafen bauen -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Fluchhafen bauen +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Schinne bauen +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Stroosse bauen +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Schëffhafe bauen +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Fluchhafe bauen STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Landschafts-Toolbar opman fir Land ze erhéijen/senken, Beem planzen, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Sound/Musik Fënster STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Weis déi lescht Meldung/Neiegkeet, oder d'Astellungen @@ -337,23 +348,23 @@ STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Wiessel STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Szenario späicheren, Szenario lueden, Eraus aus dem Szenarioeditor, Eraus STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Szenarien Editor -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Änner den Startdatum 1 Joer nohannen -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Änner den Startdatum 1 Joer no viir -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klick fir d'Startjoër festzeleën +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Änner de Startdatum 1 Joer nohannen +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Änner de Startdatum 1 Joer no vir +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klick fir d'Startjoer festzeleeën STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Weis d'Kaart, Stiedverzeeschnëss STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landschaftserstellung -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Staderstellung +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Stiederstellung STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrieerstellung -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Stroossenbau +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Stroossebau STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Beem planzen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Schëld opstellen -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objekt plazéiren. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objet plazéiren. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Szenario späicheren STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Szenario lueden -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Héichtenkaart späicheren -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Lued Héichtenkaart +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Héichtekaart späicheren +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Lued Héichtekaart STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Eraus aus dem Editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Eraus @@ -361,15 +372,15 @@ STR_SCENEDIT_FILE_MENU_QUIT :Eraus ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spilloptiounen -STR_SETTINGS_MENU_CONFIG_SETTINGS :Erweidert Astellungen +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Astellungen STR_SETTINGS_MENU_SCRIPT_SETTINGS :KI / Spill-Script Astellungen STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF Astellungen STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparenz Optiounen -STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Stiednimm ugewisen -STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Statiounennimm ugewisen +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Stiednimm uweisen +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Statiounsnimm uweisen STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Weepunktnimm uweisen -STR_SETTINGS_MENU_SIGNS_DISPLAYED :Schëlder ugewisen -STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Géignerschëlder an ugewisen Nimm +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Schëlder uweisen +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Géignerschëlder an Nimm uweisen STR_SETTINGS_MENU_FULL_ANIMATION :Ganz Animatiounen STR_SETTINGS_MENU_FULL_DETAIL :Ganz Detailer STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparent Gebaier @@ -391,7 +402,7 @@ STR_MAP_MENU_LINGRAPH_LEGEND :Cargo Flow Lege STR_MAP_MENU_SIGN_LIST :Schëlderlëscht ############ range for town menu starts -STR_TOWN_MENU_TOWN_DIRECTORY :Stiedverzeeschniss +STR_TOWN_MENU_TOWN_DIRECTORY :Stiedverzeeschnëss STR_TOWN_MENU_FOUND_TOWN :Stad grënnen ############ range ends here @@ -400,18 +411,18 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Subventiounen ############ range ends here ############ range for graph menu starts -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Grafik: Operativen Gewënn +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Grafik: Operative Gewënn STR_GRAPH_MENU_INCOME_GRAPH :Grafik: Akommes STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Grafik: Geliwwert Luedungen STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Grafik: Performance -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Grafik: Betriebswert +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Grafik: Betribswäert STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Luedungs Bezuelraten ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Betriebsranglëscht -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detailéiert Performancebewertung -STR_GRAPH_MENU_HIGHSCORE :Beschtenlëscht +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Betribsranglëscht +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detailléiert Leeschtungsbewäertung +STR_GRAPH_MENU_HIGHSCORE :Beschtelëscht ############ range ends here ############ range for industry menu starts @@ -421,23 +432,23 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finanzéiert en ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Schinnenbau -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrëschen Schinnenbau +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Schinnebau +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrësche Schinnebau STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monorailbau STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magnéitbunnbau ############ range ends here ############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :Stroossenbau +STR_ROAD_MENU_ROAD_CONSTRUCTION :Stroossebau STR_ROAD_MENU_TRAM_CONSTRUCTION :Trambau ############ range ends here ############ range for waterways construction menu starts -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Waasserstroossen bauen +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Waasserstroosse bauen ############ range ends here ############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Fluchhafenbau +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Fluchhafebau ############ range ends here ############ range for landscaping menu starts @@ -461,16 +472,16 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsole un/aus STR_ABOUT_MENU_AI_DEBUG :KI / Spill-Script Debug STR_ABOUT_MENU_SCREENSHOT :Screenshot (Ctrl+S) -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Voll ragezoomten Screenshot -STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Default Zoom Screenshot -STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot vun der ganzer Kaart (Ctrl+G) +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Voll eragezoomte Screenshot +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Standard Zoom Screenshot +STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot vun der ganzer Kaart STR_ABOUT_MENU_ABOUT_OPENTTD :Iwwert 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite Alignéirer STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Zeechen-Boxen un/aus STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Knaschteg blocks fierwen un/aus ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1ten STR_ORDINAL_NUMBER_2ND :2ten STR_ORDINAL_NUMBER_3RD :3ten @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12ten STR_ORDINAL_NUMBER_13TH :13ten STR_ORDINAL_NUMBER_14TH :14ten STR_ORDINAL_NUMBER_15TH :15ten -STR_ORDINAL_NUMBER_16TH :16ten -STR_ORDINAL_NUMBER_17TH :17ten -STR_ORDINAL_NUMBER_18TH :18ten -STR_ORDINAL_NUMBER_19TH :19ten -STR_ORDINAL_NUMBER_20TH :20ten -STR_ORDINAL_NUMBER_21ST :21ten -STR_ORDINAL_NUMBER_22ND :22ten -STR_ORDINAL_NUMBER_23RD :23ten -STR_ORDINAL_NUMBER_24TH :24ten -STR_ORDINAL_NUMBER_25TH :25ten -STR_ORDINAL_NUMBER_26TH :26ten -STR_ORDINAL_NUMBER_27TH :27ten -STR_ORDINAL_NUMBER_28TH :28ten -STR_ORDINAL_NUMBER_29TH :29ten -STR_ORDINAL_NUMBER_30TH :30ten -STR_ORDINAL_NUMBER_31ST :31ten +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1ten +STR_DAY_NUMBER_2ND :2ten +STR_DAY_NUMBER_3RD :3ten +STR_DAY_NUMBER_4TH :4ten +STR_DAY_NUMBER_5TH :5ten +STR_DAY_NUMBER_6TH :6ten +STR_DAY_NUMBER_7TH :7ten +STR_DAY_NUMBER_8TH :8ten +STR_DAY_NUMBER_9TH :9ten +STR_DAY_NUMBER_10TH :10ten +STR_DAY_NUMBER_11TH :11ten +STR_DAY_NUMBER_12TH :12ten +STR_DAY_NUMBER_13TH :13ten +STR_DAY_NUMBER_14TH :14ten +STR_DAY_NUMBER_15TH :15ten +STR_DAY_NUMBER_16TH :16ten +STR_DAY_NUMBER_17TH :17ten +STR_DAY_NUMBER_18TH :18ten +STR_DAY_NUMBER_19TH :19ten +STR_DAY_NUMBER_20TH :20ten +STR_DAY_NUMBER_21ST :21ten +STR_DAY_NUMBER_22ND :22ten +STR_DAY_NUMBER_23RD :23ten +STR_DAY_NUMBER_24TH :24ten +STR_DAY_NUMBER_25TH :25ten +STR_DAY_NUMBER_26TH :26ten +STR_DAY_NUMBER_27TH :27ten +STR_DAY_NUMBER_28TH :28ten +STR_DAY_NUMBER_29TH :29ten +STR_DAY_NUMBER_30TH :30ten +STR_DAY_NUMBER_31ST :31ten ############ range for days ends ############ range for months starts @@ -519,8 +548,8 @@ STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dez STR_MONTH_JAN :Januar -STR_MONTH_FEB :Febuar -STR_MONTH_MAR :März +STR_MONTH_FEB :Februar +STR_MONTH_MAR :Mäerz STR_MONTH_APR :Abrëll STR_MONTH_MAY :Mee STR_MONTH_JUN :Juni @@ -534,54 +563,54 @@ STR_MONTH_DEC :Dezember # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Legend -STR_GRAPH_KEY_TOOLTIP :{BLACK}Weist Legend vun der Grafik +STR_GRAPH_KEY_TOOLTIP :{BLACK}Weis d'Legend vun der Grafik STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} -STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Grafik: Betriibsgewënn +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Grafik: Betribsgewënn STR_GRAPH_INCOME_CAPTION :{WHITE}Grafik: Akommes -STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Eenheeten vun Luedung geliwwert -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Firmen Preformancebewertung (max bewertung=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmenwäert +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Eenheete vu Luedung geliwwert +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Firmen Performancebewäertung (max Bewäertung=1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmewäert STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Luedungs Bezuelraten -STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Deeg am ëmmlaaf +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Deeg am Emlaf STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Bezuelung fir Liwwerung vun 10 Eenheeten (oder 10.000 liter) Luedungen op Distanz vun 20 Felder STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}All wielen STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}All ofwielen STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}All Wueren op der Wuerenwäertgrafik weisen STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Keng Wuer op der Wuerenwäertgrafik weisen -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Wieselt den Grafik fir den Luedungstyp un/aus +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Schalt d'Grafik fir de Luedungstyp un/aus STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Weis detailléiert performance Astellungen # Graph key window -STR_GRAPH_KEY_CAPTION :{WHITE}Legend vun den Firmengrafiken +STR_GRAPH_KEY_CAPTION :{WHITE}Legend vun de Firmegrafiken STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klick hei fir d'Firma an der Grafik an/aus zeschalten # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmenliga Tabell +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmeliga Tabell STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Techniker STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Verkéiersmanager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportkoordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Stroossenopsiicht STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direkter -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Firmenchef +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Firmechef STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Virsëtzenden STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Detailéiert Leeschtungsbewertung +STR_PERFORMANCE_DETAIL :{WHITE}Detailléiert Leeschtungsbewäertung STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Detailler fir des Firma uweisen +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Detailer fir des Firma uweisen ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Gefierer: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Statiounen: @@ -594,27 +623,27 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Suen: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kredit: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Unzuel Gefierer déi lescht Joer Profit gemeet hunn; dëst betrëfft Stroossengefierer, Zich, Schëffer an Fligeren. -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Unzuel un kierzlechservéiert Statiounsdeeler. All Deel vun enger Statioun (z.B. Gare, Busarret, Fluchhafen) gëtt gezielt,och wann déi als eng Statioun connectéiert sinn. -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Profit vum Gefiert mam mannsten Akommes (vun allen Gefierter déi méi wéi 2 Joer aal sin) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Betrag un Geld den am Mount mam mansten Profit gemeet gouf an den leschten 12 Quartaler -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Betrag un Geld den am Mount mam héchsten Profit gemeet gouf an den leschten 12 Quartaler -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unzuel un Typen Wueren déi déi 4 lescht Quartaler geliwwert goufen -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Unzuel un Typen Wueren déi lescht Quartal geliwwert goufen -STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Betrag un Suen den des Firma op der Bank huet -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Betrag un Geld den dës Firma geléint huet -STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total Punkte vun méiglechen Punkten +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Unzuel Gefierer déi lescht Joer Profit gemeet hunn; dëst betrëfft Stroossegefierer, Zich, Schëffer a Fligeren. +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Unzuel un kierzlech beliwwerte Statiounsdeeler. All Deel vun enger Statioun (z.B. Gare, Busarret, Fluchhafen) gëtt gezielt,och wann déi als eng Statioun verbonne sinn. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Profit vum Gefier mam mannsten Akommes (vun alle Gefierer déi méi wéi 2 Joer al sinn) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Betrag u Geld den am Mount mam mansten Profit gemeet gouf an de leschten 12 Quartaler +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Betrag u Geld den am Mount mam héchsten Profit gemeet gouf an de leschten 12 Quartaler +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unzuel un Type Wueren déi déi 4 lescht Quartaler geliwwert goufen +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Unzuel un Type Wueren déi lescht Quartal geliwwert goufen +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Betrag u Suen den des Firma op der Bank huet +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Betrag u Geld den des Firma geléint huet +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total Punkte vu méigleche Punkten # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}All -STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Aalen Style -STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Neien Style +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Ale Stil +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Neie Stil STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Benotzerdéf. 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Benotzerdéf. 2 -STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musik Lautstärkt -STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Lautstärkt vun den Effekter +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musikvolume +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volume vun den Effekter STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' @@ -630,31 +659,31 @@ STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Sprang o STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Sprang op dat nächst Stéck vun der Selektioun STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stop d'Musik STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Start d'Musik -STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Zéi den Regler fir d'Lautstärkt vun der Musik an den Effekter anzestellen -STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selectionéier 'all Lidder' Programm -STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selectionéier 'aalen Style' Programm -STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selectionéier 'neien Style' Programm -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Wielt 'Ezy Street Musik' Programm -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selectionéier 'Benotzerdéf. 1' Programm -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selectionéier 'Benotzerdéf. 2' Programm +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Zéi de Regler fir de Volume vun der Musik an den Effekter anzestellen +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Wielt den 'all Lidder' Programm +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Wielt den 'ale Stil' Musiksprogramm +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Wielt den 'neie Stil' Musiksprogramm +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Wielt den 'Ezy Street style music' Programm +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Wielt den 'Benotzerdéf. 1' Programm +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Wielt den 'Benotzerdéf. 2' Programm STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Schalt den "shuffle" un/aus STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Weis d'Fënster fir Musik ze wielen -STR_ERROR_NO_SONGS :{WHITE}E Music Set ouni Lidder gouf gewielt. Et wärten keng Lidder gespillt gin +STR_ERROR_NO_SONGS :{WHITE}E Music Set ouni Lidder gouf gewielt. Et wäerten keng Lidder gespillt ginn # Playlist window -STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikprogramm Selectioun +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiksprogramm Auswiel STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lidder Index STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}' -STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Leschen -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Den gewielten Program reseten (nëmmen Benotzerdéf.1 oder Benotzerdéf.2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klick op d'Lidd fir et zum aktuellen Program dobäi zesetzen (nëmmen Benotzerdéf.1 oder Benotzerdéf.2) +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Läschen +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}De gewielte Program reseten (nëmmen Benotzerdéf.1 oder Benotzerdéf.2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klick op d'Lidd fir et zum aktuellen Program dobäi zesetzen (nëmme Benotzerdéf.1 oder Benotzerdéf.2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klick op d'Lidd fir et vum aktuellen Programm ze läschen (Benotzerdefinéiert 1 an 2 nëmmen) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top Firmen dei {NUM} -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Firmenligatabell an {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top Firmen déi {NUM} erreecht hunn +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Firmeligatabell {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Kafmann STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur @@ -665,8 +694,8 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon vum Jorhonnert STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} ereescht den Status '{STRING}'! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} vun {COMPANY} ereescht den Status '{STRING}'! +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} erreecht de Status '{STRING}'! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} vun {COMPANY} erreecht de Status '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kaart - {STRING} @@ -685,17 +714,17 @@ STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Weis de STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Weis d'Transportrouten op der Kaart STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Weis d'Vegetatioun op der Kaart STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Weis d'Landbesëtzer op der Kaart -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klick op en Industrietyp fir en unzeweisen. Ctrl+Klick weist just déi ugewielten Wuer. Ctrl+Klick nach emol fir all Wueren unzeweisen -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klick op eng Forma fir den Besëtz unzeweisen. Ctrl+Klick weist just déi ugewielten aus. Ctrl+Klick nach emol fir all Firmen ze weisen -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klick op eng Wuer fir tëscht den Eegenschaften ze wiesselen. Ctrl+Klick wielt Alles of ausser déi gewielten Wuer. Ctrl+Klick nach emol fir erëm Alles unzeweisen +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klick op en Industrietyp fir en unzeweisen. Ctrl+Klick weist just déi ugewielte Wuer. Ctrl+Klick nach emol fir all Wueren unzeweisen +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klick op eng Firma fir de Besëtz unzeweisen. Ctrl+Klick weist just déi ugewielten aus. Ctrl+Klick nach emol fir all Firmen ze weisen +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klick op eng Wuer fir tëscht den Eegenschaften ze wiesselen. Ctrl+Klick wielt Alles of ausser déi gewielte Wuer. Ctrl+Klick nach emol fir erëm Alles unzeweisen STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Stroossen STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Schinnen STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Statiounen/Fluchhafen/Hafen STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Gebaier/Industrien -STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Gefierter +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Gefierer STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Zich -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Stroosengefierer +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Stroossegefierer STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Schëffer STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Fligeren STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transport Routen @@ -703,7 +732,7 @@ STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Gare STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Camionsluedeplaz STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busarrêt -STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Fluchhafen/Helicopterlandeplaz +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Fluchhafen/Helikopterlandeplaz STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Hafen STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Knubbelegt Land STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Grasland @@ -712,7 +741,7 @@ STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Beem STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Fielsen STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Waasser -STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Keen Besëtzer +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Kee Besëtzer STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Stied STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrien STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Wüst @@ -725,13 +754,13 @@ STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STR STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}All ausschalten -STR_SMALLMAP_ENABLE_ALL :{BLACK}All unschalten +STR_SMALLMAP_ENABLE_ALL :{BLACK}All uschalten STR_SMALLMAP_SHOW_HEIGHT :{BLACK}D'Héicht uweisen STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Keng Industrien op der Kaart uweisen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}All Industrien op der Kaart uweisen STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Wiessel d'Usiicht vun der Héichtenkaart -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Weis keen Besëtz vun der Firma op der Kaart un -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Weis den ganzen Besëtz vun der Firma op der Kaart un +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Weis kee Besëtz vun der Firma op der Kaart un +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Weis de ganze Besëtz vun der Firma op der Kaart un STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Weis keng Wueren op der Kaart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Weis all Wueren op der Kaart @@ -739,122 +768,121 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Weis all STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Lescht Meldung oder News STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSEIERT * * -STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPÄICHER +STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPÄICHEREN STR_STATUSBAR_SAVING_GAME :{RED}* * SPÄICHERT D'SPILL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Meldungshistorie -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Eng Lëscht vun den leschten Meldungen +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Eng Lëscht vun de leschten Meldungen STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Meldung STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischten Zuch kënnt bei {STATION} un! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischten Bus kënnt bei {STATION} un! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischten Camion kënnt bei {STATION} un! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischten Tram kënnt bei {STATION} un! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischten Wueren-Tram kënnt bei {STATION} un! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischt Schëff kënnt bei {STATION} un! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischten Fliger kënnt bei {STATION} un! - -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Zuch Accident!{}{COMMA} stiewen an der Explosioun nom Accident -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Stroossengefiert onfall!{}Fuerer stieft an der Explosioun no Onfall mam Zuch -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Stroossengefiertaccident!{}{COMMA} stiewen an der Explosioun no Onfall mam Zuch -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fligeraccident!{}{COMMA} stiewen an der Explosioun bei {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fligeraccident!{}Fliger hat keen Bensin méi, {COMMA} stiewen an Explosioun! - -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinkatastroph bei {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Stroossengefiehr bei 'UFO'-Zesummenstouss zerstéiert ginn! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischten Zuch kënnt zu {STATION} un! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischte Bus kënnt zu {STATION} un! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischte Camion kënnt zu {STATION} un! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischten Tram kënnt zu {STATION} un! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Eischte Wueren-Tram kënnt zu {STATION} un! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischt Schëff kënnt zu {STATION} un! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Bierger feieren . . .{}Éischte Fliger kënnt zu {STATION} un! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Zuchakzident!{}{COMMA} Leit stiewen an der Explosioun nom Akzident +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Stroossenakzident!{}Fuerer stierft an der Explosioun no Akzident mat Zuch +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Stroossegefierakzident!{}{COMMA} Leit stiewen an der Explosioun no Akzident mam Zuch +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fligerakzident!{}{COMMA} Leit stiewen an der Explosioun bei {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fligerakzident!{}Fliger hat kee Bensin méi, {COMMA} Leit stiewen an Explosioun! + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinkatastroph zu {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Stroossegefier bei 'UFO'-Zesummestouss zerstéiert! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Uelegraffinerie bei {TOWN} explodéiert! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrik ass zu {TOWN} ënner verdächtegen Ëmmstänn zerstéiert ginn! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' bei {TOWN} geland! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Kuelenstollenzesummenbroch hannerléisst eng Spuer vun Verwüstung bei {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flut!{}Opmanst {COMMA} vermësst, wahrscheinlech doud noo grousser Flut! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Kuelestollenzesummebroch hannerléisst eng Spuer vu Verwüstung bei {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flut!{}Opmanst {COMMA} Leit vermësst, wahrscheinlech doud no grousser Flut! -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma huet Probleemer! +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma huet Problemer! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} gëtt verkaf oder Bankrott erklärt, wann sëch d'Performance net verbessert! -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirmen Fusioun! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirme-Fusioun! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ass un {STRING} fir {CURRENCY_LONG} verkaf ginn! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrott! -STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ass zougemaach ginn, an all Reschtposten sinn verkaaf! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ass zougemaach ginn, an all Reschtposte si verkaf! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nei Transportfirma gegrënnt! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} baut bei {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ass vun {STRING} iwerholl ginn! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ass vun {STRING} iwwerholl ginn! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} huet Contructioun vun der Stad {TOWN} gesponsort! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} huet Kontruktioun vun der Stad {TOWN} gesponsort! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nei {STRING} gëtt bei {TOWN} gebaut! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nei {STRING} gëtt bei {TOWN} geplantzt! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} gëtt bei {TOWN} gebaut! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} gëtt bei {TOWN} geplanzt! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} gëtt glaich zougemaach! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Liwwerungsproblemer féieren dozou dass {STRING} gläich zougemach gëtt! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Mangel un Beem féiert dozou dass {STRING} gläich zougemaach gëtt! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Mangel u Beem féiert dozou dass {STRING} gläich zougemaach gëtt! -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europäesch Währungsunioun!{}{}Den Euro ass als nei Währung am Land angefouert ginn! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europäesch Währungsunioun!{}{}Den Euro ass als nei Währung am Land agefouert ginn! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Wirtschaftsréckgang!{}{}Finanzexperten rechnen mat schlëmmsten Abrëch! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Wirtschaftsflaut eriwwer!{}{}Verbesserung am Handel bréngt Hoffnung fir Industrien an d'Economie gëtt gestärkt! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Wirtschaftsflaut eriwwer!{}{}Verbesserung am Handel bréngt Hoffnung fir Industrien an d'Economie gëtt gestäerkt! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} erhéicht d'Produktioun! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nei Kuelenflöz bei {INDUSTRY} font!{}Verdueblung vun der Produktioun erwart! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nei Uelegreserven bei {INDUSTRY} font!{}Verdueblung vun der Produktioun erwart! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Verbessert Ofbaumethoden bei {INDUSTRY} erfont!{}Verdueblung vun der Produktioun erwart! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nei Kuelenvirkommes bei {INDUSTRY} fonnt!{}Verdueblung vun der Produktioun erwaart! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nei Uelegreserven bei {INDUSTRY} font!{}Verdueblung vun der Produktioun erwaart! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} huet verbessert Ofbaumethoden erfonnt!{}Verdueblung vun der Produktioun erwaard! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} Produktioun vun {INDUSTRY} geet ëm {COMMA}% erop! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} Produktioun geet ëm 50% erof -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektenbefall bei {INDUSTRY}!{}Produktioun geet ëm 50% erof +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektebefall mat héijem Schued zu {INDUSTRY}!{}Produktioun geet ëm 50% erof STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} Produktioun vun {INDUSTRY} geet ëm {COMMA}% erof! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} waart am Depot -STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} waart am Depot -STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} waart am Depot -STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} waart am Hangar +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} waard am Schapp +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} waard am Schapp +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} waard am Schapp +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} waard am Hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} huet ze wéinech Opträg am Plang +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} huet ze mann Opträg am Plang STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} huet en eidelen Optrag STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} huet duebel Opträg STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} huet eng falsch Statioun an den Opträg -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} huet an séngen Opträg en Fluchhafen dem séng Landebunn ze kuerz ass -STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} gëtt aal -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} gëtt ganz aal -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} ass ganz aal, an sollt schnellstens ersaat ginn -STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kann den Wee fir weider ze fueren net fannen +STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} gëtt al +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} gëtt ganz al +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} ass ganz al, an sollt schnellstens ersaat ginn +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kann de Wee fir weider ze fueren net fannen STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} ass verluer STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Dëm {VEHICLE} säin Profit vum leschten Joer war {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kann net op d'nächst Destinatioun kommen, se ass ze wäit ewech STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} huet gestoppt well eng Optragennerung net geklappt huet -STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Fehler beim Autoerneieren vun {VEHICLE}{}{STRING} +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Fehler beim Autoerneieren vum {VEHICLE}{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nei {STRING} verfügbar! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Neie {STRING} verfügbar! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nei {STRING} verfügbar! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Neie/Neit {STRING} verfügbar! - {ENGINE} -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} acceptéiert {STRING} net méi -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} acceptéiert {STRING} oder {STRING} net méi -STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} acceptéiert elo {STRING} -STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} acceptéiert elo {STRING} an {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} akzeptéiert {STRING} net méi +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} akzeptéiert {STRING} oder {STRING} net méi +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} akzeptéiert elo {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} akzeptéiert elo {STRING} an {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subventioun ofgelaaf:{}{}{STRING} vun {STRING} op {STRING} gëtt net méi subventionéiert STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subventioun entzunn:{}{}{STRING} Service vun {STRING} op {STRING} gëtt net méi subventionéiert STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subventioun offréiert:{}{}Eischten {STRING} Service vun {STRING} op {STRING} gëtt mat énger Subventioun vun 1 Joer belount.! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer mat 50% bezuelt! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer mat 50% Bonus bezuelt! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer duebel bezuelt! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer draifach bezuelt! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer dräifach bezuelt! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subventioun geet un {STRING}!{}{}{STRING} Service vun {STRING} op {STRING} gëtt nächst Joer mat 400% bezuelt! -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafficchaos an {TOWN}!{}{}Stroosenneibau deen vun {STRING} finanzéiert ginn ass bréngt 6 Méint Misère fir d'Autosfuerer! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafficchaos an {TOWN}!{}{}Stroossenneibau deen vun {STRING} finanzéiert ginn ass bréngt 6 Méint Misère fir d'Autosfuerer! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! -STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokal Authoritéit vun {TOWN} ënnerschreiwt Kontrakt mat {STRING} fir ee Joër laang exklusiv Transportrechter! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}D'Gemeng {TOWN} ënnerschreiwt Kontrakt mat {STRING} fir ee Joer laang exklusiv Transportrechter! # Extra view window -STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Unsicht {COMMA} +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Usiicht {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopéiert op d'Usiicht -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopéiert d'Plaz vun der globaler Usiicht op dës Usiicht -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Vun der Unsiicht dransetzen +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopéiert d'Plaz vun der globaler Usiicht op des Usiicht +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Vun der Usiicht drasetzen STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Setzt d'Plaz vun dëser Usiicht op déi global Usiicht # Game options window @@ -867,139 +895,142 @@ STR_GAME_OPTIONS_CURRENCY_GBP :Pond (£) STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Eisträichëschen Schilling (ATS) +STR_GAME_OPTIONS_CURRENCY_ATS :Eisträichesche Schilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belsch Frang (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Schwäizer Frang (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tschechësch Kroun (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Däitsch Mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dänësch Kroun (DKK) +STR_GAME_OPTIONS_CURRENCY_CZK :Tschechesch Kroun (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Däitsch Mark (DM) +STR_GAME_OPTIONS_CURRENCY_DKK :Dänesch Kroun (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseten (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnmark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franséisch Frang (FRF) +STR_GAME_OPTIONS_CURRENCY_FIM :Finnesch Mark (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Franséische Frang (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Griechësch Drachme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarësch Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Isländësch Kroun (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italienësch Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holländësch Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegësch Kroun (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polnësch Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumänësch Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russësch Rubl (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slowenëschen Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Schwedësch Kroun (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Türkësch Lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakësch Kroun (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianësch Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estnësch Kroun (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithauësch Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanëschen Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanësche Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_HUF :Ungaresche Forint (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Isländesch Kroun (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Italienesch Lire (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Holländesche Gulden (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegesch Kroun (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Polnesch Zloty (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Rumänesch Leu (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Russesche Rubel (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Sloweneschen Tolar (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Schwedesch Kroun (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Türkesch Lire (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakesch Kroun (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianesche Real (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Estnesch Kroun (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litauesch Litas (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanesche Won (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanesche Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eegen... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgëschen Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranëschen Rial (IRR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgesche Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranësche Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stroossengefierer -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wéi eng Stroossensäit sollen d'Gefierer fueren -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lenks fueren +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stroossegefierer +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wéi eng Stroossesäit sollen d'Gefierer fueren +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lénks fueren STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Riets fueren STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Stiednimm -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Stil vun den Stiednimm wielen +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Stil vun de Stiednimm wielen ############ start of townname region -STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Englësch (Original) +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Englesch (Original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Franséisch STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Däitsch -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Englësch (Erweidert) +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Englesch (Erweidert) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Lateinamerikanesch STR_GAME_OPTIONS_TOWN_NAME_SILLY :Blöd -STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Schwédesch -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holländësch -STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnësch -STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polnësch -STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakësch -STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norwegësch -STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarësch -STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Éisträichësch +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Schwedesch +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holländesch +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnesch +STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polnesch +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakesch +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norwegesch +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungaresch +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Éisträichesch STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumänesch -STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tschechësch -STR_GAME_OPTIONS_TOWN_NAME_SWISS :Swäitzerësch -STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dänësch -STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Türkësch -STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italienësch -STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanësch +STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tschechesch +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Schwäitzer +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dänesch +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Türkesch +STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italienesch +STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanesch ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autospäicheren STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Wiel den Intervall aus fir d'Autospäicherung +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :All Mount STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :All 3 Méint STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :All 6 Méint STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :All 12 Méint +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprooch -STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wielt d'Interfacesprooch +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wielt d'Interfacesprooch aus STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Vollbild STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Klick dës Optioun un fir OpenTTD am Vollbild ze spillen STR_GAME_OPTIONS_RESOLUTION :{BLACK}Bildopléisung STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Wielt d'Bildopléisung -STR_GAME_OPTIONS_RESOLUTION_OTHER :Aaneres +STR_GAME_OPTIONS_RESOLUTION_OTHER :Aaner + +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacegréisst +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wiel d'Gréisst déi fir den Interface soll benotzt ginn -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshotformat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Wielt de Screenshotformat deen benotzt sollt ginn +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duebel +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Véierfach STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis Grafikset -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wielt den Basis Grafikset fir ze benotzen +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wielt de Basis Grafikset dee soll benotzt ginn STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fehlend/korrupt Datei{P "" en} -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Méi Infos iwwert den Basis Grafikset +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Méi Infos iwwert de Basis Grafikset -STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis sounds set -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selectéiert Basis Sound Sets -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer d'Basis Sound Set +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis Soundset +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Wiel de Basis Soundset dee soll benotzt ginn +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer d'Basis Soundset -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis Music Set -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selectéiert Basis Musik Set +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis Musikset +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wiel de Basis Musikset dee soll benotzt ginn STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupt Datei{P "" en} -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer d'Basis Musik Set +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer de Basis Musikset +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Konnt keng Lëscht vun supportéierten Opléisunge fannen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fehler beim Vollbild # Custom currency window -STR_CURRENCY_WINDOW :{WHITE}Egen Währung +STR_CURRENCY_WINDOW :{WHITE}Eegen Währung STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wiesselkuer: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz den Betrag Suen den fir 1 Pond (£) gebraucht gëtt erof -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz den Betrag Suen den fir 1 Pond (£) gebraucht gëtt erop -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setzt den Wiesselcours fir deng Währung fir 1 Pond (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz de Betrag Suen dee fir 1 Pond (£) gebraucht gëtt erof +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz de Betrag Suen dee fir 1 Pond (£) gebraucht gëtt erop +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setzt de Wiesselcours fir deng Währung fir 1 Pond (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Komma-Stil: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Setzt den Separateur fir deng Währung +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Setzt de Separateur fir deng Währung STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Setzt den Prefix fir deng Währung +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Setzt de Prefix fir deng Währung STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Setzt den Suffix fir deng Währung +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Setzt de Suffix fir deng Währung -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Zum Euro wiesselen: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Op Euro wiesselen ab: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Zum Euro wiesselen: {ORANGE}nie STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Wielt d'Joer wou op den Euro gewiesselt gëtt STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Wiessel éischter op den Euro STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Wiessel méi spéit op den Euro STR_CURRENCY_PREVIEW :{LTBLUE}Prouf: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pond (£) an äerer Währung +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pond (£) an denger Währung STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Änner Währungsparameter -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maximal Unzuel vun Géigner: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maximal Unzuel vu Géigner: {ORANGE}{COMMA} STR_NONE :Keng STR_FUNDING_ONLY :Nëmmen finanzéiren @@ -1008,7 +1039,7 @@ STR_NUM_VERY_LOW :Ganz niddreg STR_NUM_LOW :Wéineg STR_NUM_NORMAL :Normal STR_NUM_HIGH :Vill -STR_NUM_CUSTOM :Benotzerdefineiert +STR_NUM_CUSTOM :Benotzerdefinéiert STR_NUM_CUSTOM_NUMBER :Eegen ({NUM}) STR_VARIETY_NONE :Keng @@ -1024,10 +1055,10 @@ STR_AI_SPEED_MEDIUM :Mëttel STR_AI_SPEED_FAST :Séier STR_AI_SPEED_VERY_FAST :Ganz séier -STR_SEA_LEVEL_VERY_LOW :Ganz Wéineg -STR_SEA_LEVEL_LOW :Wéineg +STR_SEA_LEVEL_VERY_LOW :Ganz niddreg +STR_SEA_LEVEL_LOW :Niddreg STR_SEA_LEVEL_MEDIUM :Mëttel -STR_SEA_LEVEL_HIGH :Vill +STR_SEA_LEVEL_HIGH :Héich STR_SEA_LEVEL_CUSTOM :Eegen STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Eegen ({NUM}%) @@ -1049,15 +1080,16 @@ STR_TERRAIN_TYPE_VERY_FLAT :Ganz Flaach STR_TERRAIN_TYPE_FLAT :Flaach STR_TERRAIN_TYPE_HILLY :Hiwwelech STR_TERRAIN_TYPE_MOUNTAINOUS :Bierger +STR_TERRAIN_TYPE_ALPINIST :Alpin -STR_CITY_APPROVAL_PERMISSIVE :Erlaabend +STR_CITY_APPROVAL_PERMISSIVE :Fräizügeg STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Ofleenend -STR_WARNING_NO_SUITABLE_AI :{WHITE}Keng KI fonnt...{}KI kënnen iwwert den 'Online Content' system downgeload gin +STR_WARNING_NO_SUITABLE_AI :{WHITE}Keng KI fonnt...{}KI kënnen iwwert den 'Online Content' system downgeload ginn -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Erweidert Astellungen +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Astellungen STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter-String: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles erweideren STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles reduzéiren @@ -1070,158 +1102,154 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spillastellung STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firmenastellung (am Save gespäichert; betrëfft just nei Spiller) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firmenastellung (am Save gespäichert; betrëfft just déi aktuell Firma) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Weis: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Limitéiert d'Lëscht dass nëmmen geännert Astellungen gewisen ginn -STR_CONFIG_SETTING_RESTRICT_BASIC :Basic Astellungen -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweidert Astellungen -STR_CONFIG_SETTING_RESTRICT_ALL :Expertenastellungen / All Astellungen -STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Astellungen mat engem aneren Wäert wéi den Standardwäert +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typ: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Limitéiert d'Lëscht mat virdefinéierten Filter +STR_CONFIG_SETTING_RESTRICT_BASIC :Basis (nëmmen wichteg Astellungen) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweidert (weist déi meescht Astellungen) +STR_CONFIG_SETTING_RESTRICT_ALL :Expertenastellungen (all Astellungen, och komescher) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Astellungen mat engem aneren Wäert wéi de Standardwäert STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Astellungen mat engem aneren Wäert wéi d'Neit-Spill-Astellungen STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Beschränkt déi folgend Lëscht op bestëmmten Astellungstypen STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All Astellungen STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Clientastellung (net am Save gespäichert; betrëfft all Spiller) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spillastellungen (am Save gespäichert; betrëfft just nei Spiller) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spillastellungen (am Save gespäichert; betrëfft just nei Spiller) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spillastellungen (am Save gespäichert; betrëfft just aktuellt Spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmenastellungen (am Save gespäichert; betrëfft just nei Spiller) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmenastellung (am Save gespäichert; betrëfft just déi aktuell Firma) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmenastellungen (am Save gespäichert; betrëfft just déi aktuell Firma) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Weis all Sich-Resultater no der Astellung{}{SILVER}Kategorie {BLACK}bis {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :Weis all Sich-Resultater no der Astellung{}{SILVER}Typ {BLACK}bis {WHITE}All Astellungstypen +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Weis all Sich-Resultater no der Astellung{}{SILVER}Kategorie {BLACK}bis {WHITE}{STRING} {BLACK}an {SILVER}Typ {BLACK}bis {WHITE}All Astellungstypen +STR_CONFIG_SETTINGS_NONE :{WHITE}- Keng - STR_CONFIG_SETTING_OFF :Aus STR_CONFIG_SETTING_ON :Un STR_CONFIG_SETTING_DISABLED :ausgeschalt STR_CONFIG_SETTING_COMPANIES_OFF :Aus -STR_CONFIG_SETTING_COMPANIES_OWN :Eegen Firma +STR_CONFIG_SETTING_COMPANIES_OWN :Eege Firma STR_CONFIG_SETTING_COMPANIES_ALL :All Firmen -STR_CONFIG_SETTING_NONE :Keen +STR_CONFIG_SETTING_NONE :Keng STR_CONFIG_SETTING_ORIGINAL :Original -STR_CONFIG_SETTING_REALISTIC :Realistësch +STR_CONFIG_SETTING_REALISTIC :Realistesch STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Lénks STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Zentréiert STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Riets STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximalen Ufanksloun: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalwert den eng Firma kann léinen (ouni Inflatioun matzerechnen) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalwäert den eng Firma kann léinen (ouni Inflatioun matzerechnen) STR_CONFIG_SETTING_INTEREST_RATE :Zënssaz: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Zënssaz; kontrolléiert och d'Inflatioun wann ugeschalt -STR_CONFIG_SETTING_RUNNING_COSTS :Betriebskäschten: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixéier den Niveau vun den Betriebskäschten vun Gefierer an Infrastruktur +STR_CONFIG_SETTING_RUNNING_COSTS :Betribskäschten: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixéier den Niveau vun de Betribskäschten vu Gefierer an Infrastruktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Baugeschwindegkeet: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitéier d'Unzuel vun Bauaktiounen fir d'KI +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitéier d'Unzuel u Bauaktiounen fir d'KI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Gefierpannen: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontrolléirt wéi oft Gefierer eng Pann hunn déi net ordentlech an der Revisioun waren -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidemultiplikator: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixéiert wéivill fir subsidéiert Verbindungen bezuelet gëtt +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subventiounemultiplikator: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixéiert wéivill fir subsidéiert Verbindunge bezuelt gëtt STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Konstruktiounskäschten: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Bestëmm den Niveau vun Bau- an Kafkäschten +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Bestëmm den Niveau vu Bau- a Kafkäschten STR_CONFIG_SETTING_RECESSIONS :Rezessiounen: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Wann ugeschalt kann all puer Joer eng Rezessioun kommen. Während enger Rezessioun ass d'Produktioun däitlech méi niddreg (an klëmmt erëm op den alen Niveau no der Rezessioun) -STR_CONFIG_SETTING_TRAIN_REVERSING :Verbidden dass Zich an enger Statioun emdréinen: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Wann ugeschalt kënnen Zich net an Net-Endstatiounen emdréinen, wann en méi kuerzen Wee op d'Destinatioun ass wann en emdréint +STR_CONFIG_SETTING_TRAIN_REVERSING :Den Zich verbidden an enger Statioun emzedréinen: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Wann ugeschalt kënnen Zich net an Net-Terminusen emdréinen, och wann et en méi kuerzen Wee op d'Destinatioun gëtt wann en emdréint STR_CONFIG_SETTING_DISASTERS :Katastrophen: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Stelle Katastrophen un oder aus déi eventuell Gefierer an Industrien blockéiren oder zerstéiren -STR_CONFIG_SETTING_CITY_APPROVAL :Dem Stadrot seng Astellung zum Embauen vun der Landschaft: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wielt aus, wéivill vun der Firma verursachten Kaméidi an Emweltschiedegung sech op d'Stadbewertung auswierkt an op weider Bauaktiounen - -STR_CONFIG_SETTING_BUILDONSLOPES :Erlaabt d'Bauen op Küsten an op Ofhäng: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Wann ugeschalt, kënnen Schinnen an Statiounen op den meeschten Häng gebaut ginn. Wann ausgeschalt, kënnen se just an der Richtung vum Hang gebaut ginn an brauchen dann keen Fundament -STR_CONFIG_SETTING_AUTOSLOPE :Erlaabt Landforumung ënnert Gebaier, Stroossen, etc. (autoslope): {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Stell Katastrophen un oder aus déi eventuell Gefierer an Industrien blockéiren oder zerstéiren +STR_CONFIG_SETTING_CITY_APPROVAL :Dem Stadrot seng Astellung géigeniwwer dem Embau vun der Landschaft: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wielt aus, wéivill vun der Firma verursachten Kaméidi an Emweltschiedegung sech op d'Stadbewäertung an op weider Bauaktiounen auswierkt + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximal Kaartenhéicht: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Setzt déi maximal erlabten Héicht fir Bierger op dëser Kaart +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kanns d'maximal Kaartenhéischt net op dësen Wäert setzen. Op manst ee Bierg op der Kaart ass méi héich +STR_CONFIG_SETTING_AUTOSLOPE :Erlaabt Landformung ënnert Gebaier, Stroossen, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaabt Terraintransformatioun ënnert Gebaier an Schinnen ouni dës ewechzehuelen -STR_CONFIG_SETTING_CATCHMENT :Erlaabt méi realistësch Staugréisstplazen: {STRING} -STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Statiounen an Fluchhäfen hunn verschidden grouss Opfanggebidder -STR_CONFIG_SETTING_EXTRADYNAMITE :Erlaabt d'Ewechhuelen vun méi Stroosen, Brécken, etc. vun der Stad: {STRING} +STR_CONFIG_SETTING_CATCHMENT :Erlaabt méi realistësch Einzugsberäicher: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Statiounen a Fluchhäfen hunn verschidde grouss Einzugsberäicher +STR_CONFIG_SETTING_EXTRADYNAMITE :Erlaabt d'Ewechhuelen vu méi Stroossen, Brécken, etc. vun der Stad: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Mach et méi einfach fir Infrastruktur oder Gebaier ewechzehuelen déi enger Stad gehéiren STR_CONFIG_SETTING_TRAIN_LENGTH :Maximal Längt vun Zich: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Maximal Längt vun Zich fixéiren STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} Feld{P 0 "" er} -STR_CONFIG_SETTING_SMOKE_AMOUNT :Unzuel vun Gefiererdamp/partikel: {STRING} -STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Fixéiert wéivill Damp oder Funken vun Gefierer ausgestouss ginn +STR_CONFIG_SETTING_SMOKE_AMOUNT :Unzuel vu Gefierdamp/funken: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Fixéiert wéivill Damp oder Funken vu Gefierer ausgestouss gëtt STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Zuchbeschleunegung: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Wielt de physësche Modell fir d'Zuchbeschleunegung. Den "Orginalmodell" bestroft Häng fir all Gefierer d'selwëscht. Den "realistëschen" bestroft Häng an Kéiren ofhängeg vun verschiddenen Eegenschaften, wéi Längt an Stärkt vum Gefiert -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Stroossengefier Beschleunigungsmodell: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Wielt de physësche Modell fir d'Stroossegefiertbeschleunegung. Den "Orginalmodell" bestroft Häng fir all Gefierer d'selwëscht. Den "realistëschen" bestroft Häng an Kéiren ofhängeg vun verschiddenen Eegenschaften, wéi Längt an Stärkt vum Gefiert +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Wielt de physesche Modell fir d'Zuchbeschleunegung. Den "Orginalmodell" bestroft Häng fir all Gefierer d'selwecht. Den "realistëschen" bestroft Häng a Kéiren ofhängeg vu verschiddenen Eegenschaften, wéi Längt an Stäerkt vum Gefier +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Stroossegefier Beschleunegungsmodell: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Wielt de physesche Modell fir d'Stroossegefierbeschleunegung. Den "Orginalmodell" bestroft Häng fir all Gefierer d'selwecht. Den "realistëschen" bestroft Häng an Kéiren ofhängeg vu verschiddenen Eegenschaften, wéi Längt a Stäerkt vum Gefier STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Hangsteigung fir Zich: {STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steigung vun engem Hang fir Zich. Méi grouss Wäerter mëscht et méi schwéier den Hang ropzefueren +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steigung vun engem Hang fir Zich. Méi grouss Wäerter mécht et méi schwéier den Hang ropzefueren STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Hangsteigung fir Stroossegefierer: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steigung vun engem Hang fir Stroossegefierer. Méi grouss Werter mëscht et méi schwéier den Hang ropzefueren -STR_CONFIG_SETTING_FORBID_90_DEG :Verbidd Zich an Schëffer fir 90 Grad Kéieren ze maachen: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90gradkéiren entstinn wann eng horizontal Spur direkt op eng vertikal trëfft, sou dass den Zuch misst ëm 90 Grad dréinen fir op dat nächst Stéck ze kommen, amplaz vun den üblechen 45 Grad. Dëst zielt och fir d'Weeër vun Schëffer +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steigung vun engem Hang fir Stroossegefierer. Méi grouss Wäerter mécht et méi schwéier den Hang ropzefueren +STR_CONFIG_SETTING_FORBID_90_DEG :Verbidd Zich an Schëffer fir 90°-Kéieren ze maachen: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90°-Kéieren entsti wann eng horizontal Spur direkt op eng vertikal trëfft, sou dass den Zuch misst ëm 90 Grad dréinen fir op dat nächst Stéck ze kommen, amplaz vun den üblechen 45 Grad. Dëst zielt och fir d'Weeër vu Schëffer STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Erlaabt Statiounen zesummen ze setzen och wann se net direkt uneneen leien: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Erlaabt Statiounsdeeler un eng Statioun unzehenken ouni déi existéiernd Statioun ze beréiren. Ctr+Klick fir déi nei Deeler unzehenken -STR_CONFIG_SETTING_IMPROVEDLOAD :Benotz verbesserten Luedalgorithmus: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Wann ugeschalt, ginn Gefierter déi op enger Statioun warden een nom aneren belueden. D'Belueden fänkt just un, wann genuch Wueren verfügbar sinn fir dat éischt Gefiert ganz ze belueden -STR_CONFIG_SETTING_GRADUAL_LOADING :Lued d'Gefierer schrëttweis: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gefierter ginn regelméisseg belueden während enger spezifëscher Dauer, amplaz alles beieneen ze lueden mat enger fixer Wardezäit déi vun der Unzuel Wueren ofhänkt STR_CONFIG_SETTING_INFLATION :Inflatioun: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Erlab Inflatioun an der Economie, wou d'Käschten méi séier klammen wéi d'Bezuelungen -STR_CONFIG_SETTING_SELECTGOODS :Luedung nëmmen ofliwweren wann et gebraucht gëtt: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Liwwer nëmmen Wueren op eng Statioun déi ugefrot gouf vun engem ze beluedenen Gefiert. Dëst verhënnert schlecht Bewertungen fir Wueren déi net vun der Statioun ungeholl ginn STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximal Bréckelängt: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximal Längt déi eng Bréck dierf hunn +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximal Bréckenhéicht: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximalhéicht fir Brécken ze bauen STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximal Tunnellängt: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximal Längt déi en Tunnel dierf hunn -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manuel Primär Industriebau Method: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Method fir eng primär Industrie ze finanzéiren. 'keng' heescht, dass een guer keng kann finanzéiren. 'fördern' bedeit, dass eng nei Industrie gebaut gëtt, op enger zoufällëger Plaz op der Kaart, mee kann och schief goën. 'wéi aner Industrien' bedeit, dass Quellenindustrien kënnen vun Firmen op enger gewënschter Plaz gebaut ginn wéi verschaffend Industrien +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manuell Primär Industriebau Method: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Method fir eng primär Industrie ze finanzéiren. 'keng' heescht, dass een guer keng kann finanzéiren. 'fördern' bedeit, dass eng nei Industrie gebaut gëtt, op enger zoufällëger Plaz op der Kaart, mee kann och schief goën. 'wéi aner Industrien' bedeit, dass Quellenindustrie kënne vu Firmen op enger gewënschter Plaz gebaut ginn wéi verschaffend Industrien STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Keng STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Wéi aaner Industrien STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Förderung STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flaacht Land ronderëm Industrien: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Unzuel vun flaachen Felder ronderëm eng Industrie. Dëst garantéiert, dass eidel Felder ronderëm eng Industrie frai bleiwen fir Schinnen etc. ze bauen +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Unzuel vu flaache Felder ronderëm eng Industrie. Dëst garantéiert, dass eidel Felder ronderëm eng Industrie fräi bleiwen fir Schinnen etc. ze bauen STR_CONFIG_SETTING_MULTIPINDTOWN :Erlaabt méi der selwecht Industrien pro Stad: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalerweis well eng Stad net méi wéi eng Industrie vun all Typ. Mat dëser Astellung erlaabt d'Stad méi Industrien vun dem selwëschten Typ -STR_CONFIG_SETTING_SIGNALSIDE :Weis Signaler: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE :Signaler uweisen: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Wielt opp wéienger Säit vun der Schinn d'Signaler plazéiert ginn STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Lénks STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Op der Fuerersäit STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Riets -STR_CONFIG_SETTING_SHOWFINANCES :Weis d'Finanzen um Ënn vum Joër: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES :Weis de Bilan um Enn vum Joer: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Wann ugeschalt, gëtt eng Fënster um Enn vum Joer gewisen, déi eng einfach Iwwersicht iwwert d'Finanzen vun der Firma erlaabt -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nei Opträg sinn 'non-stop' par defaut: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nei Opträg sinn standardméisseg 'non-stop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalerweis stoppt en Gefier op all Statioun op sengem Wee. Wann des Astellung ageschalt ass, bleift et op kenger Statioun stoen bis op seng final Statioun -STR_CONFIG_SETTING_STOP_LOCATION :Nei Zichuerder stoppen par defaut um {STRING} vun der Plate-Form -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plaz wou en Zuch par Defaut op enger Gare stoen bleift. 'No um Ufank' bedeit no beim Agangspunkt, 'an der Mëtt' bedeit an der Mëtt vun der Plattform, 'wäit Enn' bedeit wäit ewech vum Agangspunkt. Dëst gëllt fir Standardopträg, individuell Opträg kënnen explizit gesat ginn +STR_CONFIG_SETTING_STOP_LOCATION :Nei Zichuerder stoppen um {STRING} vun der Plattform +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plaz wou en Zuch standardméisseg op enger Gare stoe bleift. 'No um Ufank' bedeit no beim Agangspunkt, 'an der Mëtt' bedeit an der Mëtt vun der Plattform, 'wäit Enn' bedeit wäit ewech vum Agangspunkt. Dëst gëllt fir Standardopträg, individuell Opträg kënnen explizit gesat ginn STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :no um Enn STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :an der Mëtt STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :um Enn -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Stroossengefiererschlaang (mat Quanteneffekter): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Looss Stroossgefierer am Ufank vun engem besaten Stroossestopp waarden, bis se eidel sinn. STR_CONFIG_SETTING_AUTOSCROLL :D'Fënster schwenken wann d'Maus um Rand ass: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Wann ugeschalt, scrollt d'Usiicht wann d'Maus no um Rand vun der Fënster ass STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ausgeschalt STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Haptusiicht, nëmmen Vollbild STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Haptusiicht STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :All Usiicht -STR_CONFIG_SETTING_BRIBE :Erlaabt Bestiechung vun den Gemengen: {STRING} +STR_CONFIG_SETTING_BRIBE :Erlaabt d'Gemengen ze bestiechen: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Erlaabt Firmen d'Stad ze bestiechen. Wann et opflitt, kann d'Firma während 6 Méint net mat der Stad agéiren STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Erlaabt exklusiv Transportrechter ze kafen: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Wann eng Firma exklusiv Transportrechter fir eng Stad keeft, kréien géignerësch Statiounen (Passagéier an Wueren) keng Wueren fir e ganzt Joer STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Gebaier finanzéiren erlaben: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Erlaabt Firmen den Stied Geld ze ginn fir nei Haiser ze bauen +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Erlaabt Firmen de Stied Geld ze ginn fir nei Haiser ze bauen STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Erlab Stroossenrenovatiounen ze finanzéiren: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Erlaabt Firmen den Stied Geld ze ginn fir d'Stroossen ze renovéieren an sou den Stroosseverkéier ze sabotéieren -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Erlaabt d'Schécken vun Suen un aner Firmen: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Erlaabt den Transfert vun Geld tëschent Firmen am Multiplayermodus -STR_CONFIG_SETTING_FREIGHT_TRAINS :Gewiichtsmultiplizéirer fir Luedungen fir schwéier Zich: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Leet den Impakt fest den schwéier Fracht op Zich huet. En méi héijen Wäert bréngt d'Zich éischter un d'Schaffen, speziell bei Bierger +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Erlaabt Firmen de Stied Geld ze ginn fir d'Stroossen ze renovéieren an sou de Stroosseverkéier ze sabotéieren +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Erlaabt d'Schécken vu Suen un aner Firmen: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Erlaabt den Transfert vu Geld tëschent Firmen am Multiplayermodus +STR_CONFIG_SETTING_FREIGHT_TRAINS :Gewiichtsmultiplikator fir Luedunge fir schwéier Zich: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Leet den Impakt fest dee schwéier Fracht op Zich huet. En méi héije Wäert bréngt d'Zich éischter un d'Schaffen, speziell bei Bierger STR_CONFIG_SETTING_PLANE_SPEED :Fligergeschwindegkeetsfaktor: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Leet d'relativ Geschwindegkeet vun Fligeren am Verglach mat aneren Gefierer fest, fir d'Akommen vum Transport vun Fligeren ze reduzéiren +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Leet d'relativ Geschwindegkeet vu Fligeren am Verglach mat anere Gefierer fest, fir d'Akomme vum Transport vu Fligeren ze reduzéiren STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} -STR_CONFIG_SETTING_PLANE_CRASHES :Unzuel Fligeraccidenter: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Leet d'Chance fir en Fligeraccident fest +STR_CONFIG_SETTING_PLANE_CRASHES :Unzuel Fligerakzidenter: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Leet d'Chance fir en Fligerakzident fest STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Keng STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduzéiert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Erlaabt d'Iwwerfueren vun Stopschëlder op Stroossen vun der Stad: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Erlaabt d'Bauen vun säitlechen Busarrêten op Stroossen déi der Stad gehéieren -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Erlaabt d'Iwwerfueren vun Stopschëlder op Stroossen vun der Konkurrenz: {STRING} -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Erlaabt d'Bauen vun säitlechen Busarrêten op Stroossen déi enger anerer Firma gehéieren -STR_CONFIG_SETTING_ADJACENT_STATIONS :Erlaabt ugrenzent Statiounen: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Erlaabt verschiddenen Statiounen sech ze beréiren -STR_CONFIG_SETTING_DYNAMIC_ENGINES :E puer NewGRF-Päk aktivéiren: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompabilitéitsoptioun fir al NewGRFen. Net ausschalten, et sief et weess een genau wat een mëscht +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Erlaabt d'Iwwerfueren vu Stopschëlder op Stroossen vun der Stad: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Erlaabt d'Bauen vu säitlechen Busarrêten op Stroossen déi der Stad gehéieren +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Erlaabt d'Iwwerfueren vu Stopschëlder op Stroossen vun der Konkurrenz: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Erlaabt d'Bauen vu säitlechen Busarrêten op Stroossen déi enger anerer Firma gehéieren STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Déi Astellung kann net geännert ginn wann et Gefierer gëtt STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastrukturënnerhalt {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Wann ugeschalt, kaschten Infrastrukturen Ennerhaltskäschten. D'Käschten wuessen iwwerproportional zu der Netzwierkgréisst, an treffen sou grouss Firmen méi wéi klenger @@ -1231,16 +1259,16 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Wann ugeschalt, STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warnen wann en Gefier verluer ass: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Messagen uweisen wann Gefierer keen Wee op hiert Ziel fannen -STR_CONFIG_SETTING_ORDER_REVIEW :Opträg vun den Gefierer nopréifen: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Wann ugeschalt, ginn d'Opträg vun Gefierer periodesch kontrolléiert, an e puer evident Fehler ginn mat enger Noriichtenmessage gemellt wann se fonnt ginn +STR_CONFIG_SETTING_ORDER_REVIEW :Opträg vun de Gefierer nopréifen: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Wann ugeschalt, ginn d'Opträg vu Gefierer periodesch kontrolléiert, an e puer evident Fehler ginn mat enger Noriichtenmessage gemellt wann se fonnt ginn STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nee STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Jo, mee net déi gestoppten Gefierer STR_CONFIG_SETTING_ORDER_REVIEW_ON :Vun allen Gefierer -STR_CONFIG_SETTING_WARN_INCOME_LESS :Warnen wann en Gefiert en negativen Akommes huet: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS :Warnen wann en Gefier en negativt Akommes huet: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Wann ugeschalt, gëtt eng Noorichtenmessage gesent , wann en Gefier een Joer laang keen Profit gemeet huet STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Gefierer lafen nie of: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Wann ugeschalt, bleiwen all Modeller vun Gefierer éiweg verfügbar -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Gefiert automatesch ernéieren wann ët aal gët: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Wann ugeschalt, bleiwen all Modeller vu Gefierer éiweg verfügbar +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Gefier automatesch ernéieren wann et al gëtt: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Wann ugeschalt, gëtt e Gefier wat un säin Lafzäitenn kënnt, automatesch ausgetosch STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatesch erneieren wann d'Gefier maximal {STRING} Joer al ass STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativen Alter wann en Gefier an Fro kennt fir auto-erneiert ze ginn @@ -1252,59 +1280,73 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Dauer vun der F STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Zäit déi eng Feelermeldung an enger rouder Fënster ugewisen gëtt. E puer kritesch Meldungen ginn net zougemeet STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} Sekonn{P 0 "" en} STR_CONFIG_SETTING_HOVER_DELAY :Weis Tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Verzögerung bis d'Tooltips ugewisen ginn, wann een mat der Maus iwwert en Element geet. Alternativ kënnen d'Tooltips och op d'riets Maustast geluet ginn -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Fir {COMMA} Sekonn{P 0 "" en} dropbleiwen +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Verzögerung bis d'Tooltips ugewisen ginn, wann een mat der Maus iwwert en Element geet. Alternativ kënnen d'Tooltips och op d'riets Maustast geluet ginn wann dësen Wäert op 0 gesat gouf. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Fir {COMMA} Millisekonn{P 0 "" en} dropbleiwen STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rietsklick -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Weist Bewunnerzuel am Numm vun der Stadt: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Weis d'Awunnerzuel vun Stied an deenen hirem Label un op der Kaart -STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Déckt vunn de Linnen vun den Graphen: {STRING} -STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breed vun den Linnen an den Grafiken. Eng dënn Linn kann méi präzis gelies ginn, eng méi déck kann besser gesinn ginn an d'Faarwen sinn besser ze ënnerscheeden +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Weis d'Awunnerzuel am Numm vun der Stad: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Weis d'Awunnerzuel vu Stied an deenen hirem Label un op der Kaart +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Déckt vun de Linnen vun de Grafiken: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breed vun de Linnen an de Grafiken. Eng dënn Linn kann méi präzis gelies ginn, eng méi déck kann besser gesinn ginn an d'Faarwen sinn besser ze ënnerscheeden +STR_CONFIG_SETTING_LANDSCAPE :Landschaft: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landschaften definéiren basis Spillszenarien mat verschiddenen Wueren an Stiedwuesstumviraussetzungen. NewGRF an Gamescripter erlaben méi fein Astellungen. STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den original Generator henkt vum basis Grafikset of, an erstellt fixéiert Landschaftstypen. TerraGenesis ass en op Perlin noise baséierten Generator mat méi feinen Astellungen. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Terraintyp: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Nëmmen TerraGenesis) Hiwwelegkeet vun der Landschaft +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industriedicht: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Definéiert wéivill Industrien generéiert sollen ginn an wéivill der während dem Spill sollen behalen ginn. STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximal Distanz vum Kaartenenn bis zu enger Uelegraffinerie: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Uelëgraffinerien ginn nëmmen um Rand gebaut, dat ass un der Küst fir Inselkaarten STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Schnéigrenz Héicht: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Knubbelegkeet vum terrain (nëmmen TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontrolléiert ab welcher Héicht de Schnéi ufenkt an der subarktëscher Landschaft. Schnéi affektéiert och Industriegeneratioun an de Wuesstum vu Stied. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Knubbelegkeet vum Terrain (nëmmen TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Nëmmen TerraGenesis) Wiel d'Heefegkeet vun Hiwwelen: Mëll Landschafter hunn manner, breed verdeelten Hiwwelen. Rau Landschaften hunn méi Bierger déi repetitiv ausgesinn kënnen. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ganz Flaach STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Flaach STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Fielseg STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Ganz Fielseg +STR_CONFIG_SETTING_VARIETY :Vielfaltverdeelung: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Nëmmen TerraGenesis) Kontrolléiert op d'Kaart flaach Stécker an och Bierger huet. Wëll dëst d'Kaart méi flaach mécht, sollen aner Astellungen op Bierger gesat ginn +STR_CONFIG_SETTING_RIVER_AMOUNT :Unzuel Flëss: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Wiel wéivill Flëss generéiert ginn STR_CONFIG_SETTING_TREE_PLACER :Baamplanzalgorithmus: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Wiel d'Verdeelung vun de Beem op der Kaart: 'Orginal' setzt d'Beem uniform verspreet, 'Verbessert' setzt se an Gruppen STR_CONFIG_SETTING_TREE_PLACER_NONE :Keen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Verbessert +STR_CONFIG_SETTING_ROAD_SIDE :Stroossegefierer: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Wiel d'Säit op där gefuer gëtt STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Héichtenkaartrotatioun: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Géint d'Auer STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Matt der Auer STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Héichtenintervall den eng flaach Szenariokaart kritt: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Erdëmformung vun Felder um Kaartenrand erlaaben: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Wann ausgeschalt, sinn d'Ränner ëmmer Ozean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Een oder méi Felder um nördlechsten Rand sinn net eidel STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Een oder méi Felder op engem Eck sinn keen Waasser -STR_CONFIG_SETTING_STATION_SPREAD :Maximal Ausdehnung vun Statiounen: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Maximal Ausdehnung vu Statiounen: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximal Distanz déi eenzel Statiounsdeeler dierfen auseneenleien. Méi héich Wäerter maachen d'Spill méi lues -STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatesch Maintenance vun Helicopteren: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatesch Maintenance vun Helikopteren: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Schéck Helikopter no all Landung an d'Revisioun, och wann keen Schapp um Fluchhafen ass -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Landschaft-Toolbar op Zuch/Stroos/Schëff/Fluchhafen-Toolbar linken: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Landschaft-Toolbar op Zuch/Strooss/Schëff/Fluchhafen-Toolbar linken: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Wann eng Toolbar fir Konstruktiounen opgemeet gëtt, gëtt och d'Toolbar fir d'Terrainverännerung opgemeet STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Landfaarf déi op der klénger Kaart benotzt get: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Faarf vum Terrain vun der klenger Kaart STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Gréng STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donkelgréng -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Moof -STR_CONFIG_SETTING_REVERSE_SCROLLING :Deen aneren Wee scrollen: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mof +STR_CONFIG_SETTING_REVERSE_SCROLLING :Deen anere Wee scrollen: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Verhalen beim Scrollen vun der Kaart mat der rietser Maustast. Wann ausgeschalt, beweegt d'Maus d'Kamera. Wann ugeschalt, beweegt d'Maus d'Kaart -STR_CONFIG_SETTING_SMOOTH_SCROLLING :Feinen Scrolling: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Feine Scrolling: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrolléiert wéi d'Haptusiicht op eng bestëmmten Positioun scrollt, wann een op déi kléng Kaart klickt oder en Befehl fir ob en spezifescht Objet ze scrollen gëtt. Wann ugeschalt, gëtt bis dohin gescrollt, wann ausgeschalt, spréngt d'Vue op den Zielobjet -STR_CONFIG_SETTING_MEASURE_TOOLTIP :Weis en Mooss-Tooltip wann verschidden Bau-Tools benotzt ginn: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Weis en Mooss-Tooltip wann verschidde Bau-Tools benotzt ginn: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Weis Felderdistanzen an Héichtenënnerscheed beim Zéien während dem Bauen un -STR_CONFIG_SETTING_LIVERIES :Weis Firmentracht: {STRING} -STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Definéiert de Gebrauch vun gefierspezifesch Lackéiren fir Gefierer (am Géigensaz zu firmenspezifëschen Lackéiren) +STR_CONFIG_SETTING_LIVERIES :Weis Faarwen je no Gefiertyp: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Definéiert de Gebrauch vu gefierspezifesch Lackéirungen fir Gefierer (am Géigensaz zu firmenspezifëschen Lackéirungen) STR_CONFIG_SETTING_LIVERIES_NONE :Keng -STR_CONFIG_SETTING_LIVERIES_OWN :Eegen Firma +STR_CONFIG_SETTING_LIVERIES_OWN :Eege Firma STR_CONFIG_SETTING_LIVERIES_ALL :All Firmen STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferéier Teamchat mat : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Wiessel d'Firmen-intern Chat-Tast an Effentlechen-Chat op resp. @@ -1313,14 +1355,14 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Schalt d'Scroll STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Kaart Zoomen STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Kaart Scrollen STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Aus -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Map Scrollrad Geschw. : {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontrolléier d'Sensitivitéit vum Mausrad-scrollen +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Geschw. vum Scrollrad op der Kaart : {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontrolléier d'Sensibilitéit vum scrollen mam Mausrad STR_CONFIG_SETTING_OSK_ACTIVATION :Onscreen-Tastatur: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wiel d'Method fir d'Onscreentastatur unzeman fir Text an eng Textbox ze schreiwen andems just eng Maus benotzt gëtt. Dëst as geduet fir kleng Geräter ouni richteg Tastatur STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Ausgeschalt STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Duebelklick -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Een Klick (wann fokusséiert) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Een Klick (direkt) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Ee Klick (wann fokusséiert) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Ee Klick (direkt) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rietsklickemulatioun: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Wiel d'Method aus fir déi riets Maustast ze emuléiren @@ -1331,143 +1373,141 @@ 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_AUTOSAVE :Autospäicheren: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Setz den Interval tëschend automateschen Späicherstänn + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Benotz {STRING} Datumsformat fir Späichernimm STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format vum Datum am Numm vum Späicherstand -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :laang (31ten Dez 2008) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kuerz (31-12-2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :laangen (31ten Dez 2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kuerzen (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard Palette fir NewGRFen déi keng spezifësch Palette hunn: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalette fir NewGRFen déi net definéiert hunn wéi eng se brauchen -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS Palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows Palette - -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatesch Pausen beim Start vun enger neier Partie: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Paus d'Spill beim Start vun enger neier Partie: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Wann ugeschalt, pauséiert d'Spill automatesch wann en neit Spill gestart gëtt, wat erlaabt d'Kaart besser ze studéieren -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Wann Paus ass, erlab: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wielt aus, wat kann gemeet wann d'Spill pauséiert gouf +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Wa Paus ass, erlab: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wielt aus, wat kann gemeet ginn wann d'Spill pauséiert gouf STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Keng Aktiounen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All Net-Bauaktiounen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All ausser Landëmformungen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All Aktiounen -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Benotzt d'erweidert Gefiererlëscht: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Benotz Gruppen an der Gefierlëscht: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Schalt d'erweidert Gefiererlëscht un fir Gefierer ze gruppéieren -STR_CONFIG_SETTING_LOADING_INDICATORS :Weist den Luedstatus un: {STRING} -STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Wielt aus, ob Luedindikatoren iwwert engem Gefier ugewisen ginn oder net, wann et belueden gëtt -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Weis de Zäitplang an Intervallen amplaz vun Deeg: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS :Weist de Luedstatus un: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Wielt aus, ob Luedindikatoren iwwert engem Gefier ugewise ginn oder net, wann et beluede gëtt +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Weis den Zäitplang an Ticken amplaz vun Deeg: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Weist d'Transportdauer an der Zäittafel als Gameticks un, amplaz an Deeg -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Weis Arrivée an Départ am Zaitplang un: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Weis Arrivée an Départ am Zäitplang un: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Weis d'geplangten Departen an Arrivéeën an der Zäittafel un -STR_CONFIG_SETTING_QUICKGOTO :Schnellkreatiounvun Gefieropträg: {STRING} +STR_CONFIG_SETTING_QUICKGOTO :Schnellkreatioun vu Gefieropträg: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Wiel den 'géi op Zeiger' un, wann d'Optragsfënster opgemeet gëtt STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard Schinnentyp (no neiem Spill/geluedenem Spill): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Schinnentyp den gewielt gëtt nom starten oder lueden vun engem Spill. 'éischt verfügbar' wielt den eelsten Typ Schinnen, 'lescht verfügbar' wielt den neisten Typ Schinnen, an 'meescht gebraucht' wielt den Typ den grad am meeschten gebraucht gëtt -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Ëischt verfügbar +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Schinnentyp de gewielt gëtt nom starten oder luede vun engem Spill. 'éischt verfügbar' wielt den eelsten Typ Schinnen, 'lescht verfügbar' wielt den neisten Typ Schinnen, an 'meescht gebraucht' wielt den Typ de grad am meeschten gebraucht gëtt +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Eischt verfügbar STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Läscht verfügbar STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meescht benotzten -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Weis reservéiert Strecken: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Weis de reservéierte Wee op de Schinnen: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Fierf reservéiert Schinnen an enger anerer Faarf fir engem ze hëllefen wann Zich refuséieren fir an Wee-baséiert Bléck ze fueren STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Bau-Tools nom Gebrauch aktiv loossen: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Looss d'Bauoptiounen fir Brécken, Tunnelen etc. nom Gebrauch op STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ausgaben vun der Firma an der Finanzfënster gruppéiren: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definéiert den Layout fir d'Firmenausgabenfënster +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definéiert de Layout fir d'Firmenausgabefënster STR_CONFIG_SETTING_SOUND_TICKER :Newsticker: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spill Sound of fir resuméiert Neiegkeeten STR_CONFIG_SETTING_SOUND_NEWS :Zeitung: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spill Soundeffekt of wann eng Zeitung rauskënnt STR_CONFIG_SETTING_SOUND_NEW_YEAR :Enn vum Joer: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spill Soundeffekt of um Enn vum Joer, wann d'Performance vund er Firma resuméiert am Verglach mam Viirjoer +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spill Soundeffekt of um Enn vum Joer, wann d'Performance vun der Firma resuméiert gëtt am Verglach mam Viirjoer STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruktioun: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spill Soundeffekter of wann Konstruktiounen an aner Aktiounen ausgefouert goufen +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spill Soundeffekter of wa Konstruktiounen an aner Aktiounen ausgefouert goufen STR_CONFIG_SETTING_SOUND_CLICK :Kneppercherklicks: {STRING} -STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep beim Klicken vun Kneppercher -STR_CONFIG_SETTING_SOUND_DISASTER :Katastrophen/Accidenter: {STRING} -STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spill Soundeffekter vun Accidenter an Katastrophen of +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep beim Klicken vu Kneppercher +STR_CONFIG_SETTING_SOUND_DISASTER :Katastrophen/Akzidenter: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spill Soundeffekter vun Akzidenter a Katastrophen of STR_CONFIG_SETTING_SOUND_VEHICLE :Gefierer: {STRING} -STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill Soundeffekter vun Gefierer of +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill Soundeffekter vu Gefierer of STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiance: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spillt Ambience Soundeffekter vun der Landschaft, Industrien an Stied of STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Gebai ausschalten wann keng passend Gefierer verfügbar sinn: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Wann ugeschalt, ass d'Infrastruktur just verfügbar, wann och Gefierer verfügbar sinn, fir dass keen Geld an keng Zäit verschwend gëtt, sënnlos Infrastrukturen ze bauen -STR_CONFIG_SETTING_MAX_TRAINS :Max Zich pro Firma: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximum un Zich pro Firma: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximal Unzuel un Zich déi eng Firma kann hunn -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max Stroossengefierer pro Firma: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximal Unzuel un Gefierer déi eng Firma kann hunn -STR_CONFIG_SETTING_MAX_AIRCRAFT :Max Fligeren pro Firma: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximal Unzuel un Fligeren déi eng Firma kann hunn -STR_CONFIG_SETTING_MAX_SHIPS :Max Schëffer pro Firma: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximal Unzuel un Schëffer déi eng Firma kann hunn - -STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Zich fir den Computer ausschalten: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Wann dës Astellung ugeschalt ass, kann en Computergéigner keng Zich bauen -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Stroossengefierer fir den Computer ausschalten: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Wann dës Astellung ugeschalt ass, kann en Computergéigner keng Gefierer bauen -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Fligeren fir den Computer ausschalten: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Wann dës Astellung ugeschalt ass, kann en Computergéigner keng Fligeren bauen -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Schëffer fir den Computer ausschalten: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Wann dës Astellung ugeschalt ass, kann en Computergéigner keng Schëffer bauen +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum un Stroossegefierer pro Firma: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximal Unzuel u Gefierer déi eng Firma kann hunn +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum un Fligeren pro Firma: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximal Unzuel u Fligeren déi eng Firma kann hunn +STR_CONFIG_SETTING_MAX_SHIPS :Maximum u Schëffer pro Firma: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximal Unzuel u Schëffer déi eng Firma kann hunn + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Zich fir de Computer ausschalten: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Wann des Astellung ugeschalt ass, kann e Computergéigner keng Zich bauen +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Stroossegefierer fir de Computer ausschalten: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Wann des Astellung ugeschalt ass, kann e Computergéigner keng Gefierer bauen +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Fligeren fir de Computer ausschalten: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Wann des Astellung ugeschalt ass, kann e Computergéigner keng Fligeren bauen +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Schëffer fir de Computer ausschalten: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Wann des Astellung ugeschalt ass, kann e Computergéigner keng Schëffer bauen STR_CONFIG_SETTING_AI_PROFILE :Standard Astellungsprofil: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Wielt aus wellechen Astellungsprofil benotzt gëtt fir d'zoufälleg KI oder fir Ufankswerter wann eng nei KI oder Spillscript ugeschalt gëtt +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Wielt aus wellechen Astellungsprofil benotzt gëtt fir d'zoufälleg KI oder fir Ufankswäerter wann eng nei KI oder Spillscript ugeschalt ginn STR_CONFIG_SETTING_AI_PROFILE_EASY :Einfach STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Normal STR_CONFIG_SETTING_AI_PROFILE_HARD :Schwéier STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Erlaabt KI am Multiplayer: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Erlaabt Computergéigner an Multiplayer Spiller matzeman -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes befier den Script suspendéiert gëtt: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximal Unzuel un Rechenschrëtt déi en Script kann an engem Tuer man +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Erlaabt Computergéigner a Multiplayer Spiller matzeman +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes befier de Script suspendéiert gëtt: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximal Unzuel u Rechenschrëtt déi e Script kann an engem Tuer man -STR_CONFIG_SETTING_SERVINT_ISPERCENT :Revisiounsintervallen an Prozenter: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Wiel op eng Revisioun ausgeléist durch Zäit déi säit der leschter Revisioun vergangen ass oder well Zouverlessëgkeet en gewëssen Prozentsaz vun der maximaler Zouverlässëgkeet erofgaang ass +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Revisiounsintervallen a Prozenter: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Wiel op eng Revisioun ausgeléist gëtt durch Zäit déi säit der leschter Revisioun vergangen ass oder well Zouverlessëgkeet en gewëssen Prozentsaz vun der maximaler Zouverlässëgkeet erofgaang ass STR_CONFIG_SETTING_SERVINT_TRAINS :Standard Revisiounsintervall fir Zich: {STRING} -STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definéiert den Standardrevisiounsintervall fir nei Zich, wann keen expliziten Revisiounsintervall uginn ass -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} D{P 0 ag eeg}/% +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Zich, wann keen expliziten Revisiounsintervall uginn ass +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P 0 ag eeg}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Ausgeschalt STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard Revisiounsintervall fir Gefierer: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Definéiert den Standardrevisiounsintervall fir nei Gefierer, wann keen spezifëschen Revisiounsintervall uginn ass +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Gefierer, wann keen spezifëschen Revisiounsintervall uginn ass STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard Revisiounsintervall fir Fligeren: {STRING} -STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definéiert den Standardrevisiounsintervall fir nei Fligeren, wann keen expliziten Revisiounsintervall uginn ass +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Fligeren, wann keen expliziten Revisiounsintervall uginn ass STR_CONFIG_SETTING_SERVINT_SHIPS :Standard Revisiounsintervall fir Schëffer: {STRING} -STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definéiert den Standardrevisiounsintervall fir nei Schëffer, wann keen expliziten Revisiounsintervall uginn ass +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Schëffer, wann keen expliziten Revisiounsintervall uginn ass STR_CONFIG_SETTING_NOSERVICE :Revisiounen ausschalten wann Pannen op "Keng" gestallt sinn: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Wann ugeschalt, ginn Gefierer net an d'Revisioun geschéckt, wann se keng Pann kënnen kréien -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Geschwindegkeetsbegrenzungen fir Wagongen: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Wann ugeschalt, benotz och Geschwindegkeetslimitatiounen fir Wagonen fir d'maximal Geschwindegkeet vun engem Zuch ze definéiren -STR_CONFIG_SETTING_DISABLE_ELRAILS :Elecktreschschinnen ausschalten: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Wann dës Astellung ugeschalt ass, ginn keng elektresch Schinnen gebrauch fir mat elektreschen Zich ze fueren +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Wann ugeschalt, ginn Gefierer net an d'Revisioun geschéckt, wann se keng Pann kënne kréien +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Geschwindegkeetsbegrenzungen fir Waggonen: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Wann ugeschalt, benotz och Geschwindegkeetslimitatiounen fir Waggonen fir d'maximal Geschwindegkeet vun engem Zuch ze definéiren +STR_CONFIG_SETTING_DISABLE_ELRAILS :Elektreschschinnen ausschalten: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Wann dës Astellung ugeschalt ass, ginn keng elektresch Schinnen gebraucht fir mat elektreschen Zich ze fueren -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ukonft vum éischten Gefiert op enger Spillerstatioun: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ukonft vum éischte Gefier op enger Statioun vum Spiller: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Weis d'Zeitung wann dat éischt Gefier op enger eegener Statioun ukënnt -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ukonft vum éischten Gefiert op enger Géigenspillerstatioun: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ukonft vum éischten Gefier op enger Géigenspillerstatioun: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Weis d'Zeitung wann dat éischt Gefier op enger géignerescher Statioun ukënnt -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidenter / Katastrophen: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Weis d'Zeitung wann Accidenter oder Katastrophen passéiren +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Akzidenter / Katastrophen: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Weis d'Zeitung wann Akzidenter oder Katastrophen passéiren STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmeninformatiounen: {STRING} -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Weis d'Zeitung wann eng nei Firma opgeht, oder wann eng riskéiert Bankrott ze goen -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Industrieeröffnung: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Weis d'Zeitung wann eng nei Firma opgeet, oder wann ee riskéiert Bankrott ze goen +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Grënnung vun enger Industrie: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Weis d'Zeitung wann eng nei Industrie opmécht STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Industrie gëtt zougemaach: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Weis d'Zeitung wann eng Industrie zou mécht -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Wirtschaftsännerungen: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Weis d'Zeitung iwwert d'global Economie -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktiounswiessel vun der Industrie dei vun der Firma betreit gëtt: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vun der Firma servéiert gëtt -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktiounswiessel vun der Industrie dei vun der Konkurenz betreit gëtt: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vun engem Spiller servéiert gëtt -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aanern Industriellen Produktiounswiessel: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vun kengem Spiller servéiert gëtt -STR_CONFIG_SETTING_NEWS_ADVICE :Hinweis / Informatioun iwwert Firmengefierer: {STRING} -STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Weis Messagen wann Gefierer Opmierksamkeet brauchen +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Weis d'Zeitung wann eng Industrie zoumécht +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Wiertschaftsännerungen: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Weis d'Zeitung iwwert d'global Wiertschaft +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktiounswiessel vun der Industrie dei vun der Firma beliwwert gëtt: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vun der Firma beliwwert gëtt +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktiounswiessel vun der Industrie dei vun der Konkurrenz beliwwert gëtt: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vun engem Spiller beliwwert gëtt +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aaneren industrielle Produktiounswiessel: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Weis d'Zeitung wann d'Produktioun vun enger Industrie ännert, déi vu kengem Spiller beliwwert gëtt +STR_CONFIG_SETTING_NEWS_ADVICE :Hinweis / Informatioun iwwert Firmegefierer: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Weis Messagen wa Gefierer Opmierksamkeet brauchen STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nei Gefierer: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Weis d'Zeitung wann en neit Gefier rauskënnt -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Ännerungen vun acceptéiert Luedungen: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Weis Messagen wann Statiounen Güter acceptéiren / net méi akzeptéiren +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Ännerung vun akzeptéierte Luedungen: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Weis Messagen wa Statiounen Gidder akzeptéiren / net méi akzeptéiren STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventiounen: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Weis d'Zeitung an Relatioun mat Subsiden -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generel Informatiounen: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Weis d'Zeitung a Relatioun mat Subventiounen +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell Informatiounen: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Weis Zeitung iwwert generell Evenementer, wéi z.b de Kaf vun exklusiven Transportrechter oder Stroosserenovéierungen STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Aus @@ -1475,47 +1515,47 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resumé STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Ganz STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Faarweg News ab: {STRING} -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Joer vun dem uns d'Zeitung farweg rauskënnt. Firun dësem Joer ass se schwarz/wäiss +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Joer vun dem uns d'Zeitung farweg erauskënnt. Firun dësem Joer ass se schwarz/wäiss STR_CONFIG_SETTING_STARTING_YEAR :Startjoer: {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY :Gläichméisseg Economie aschalten (méi oft an kleg Wiessel): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Gläichméisseg Wiertschaft aschalten (méi oft an kleng Wiessel): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Wann ugeschalt, ännert d'Industrieproduktioun méi oft, an méi kléngen Schrëtter. Dës Astellung huet keng Auswierkung op NewGRF-Industrien STR_CONFIG_SETTING_ALLOW_SHARES :Undeeler vun aaneren Firmen kafen: {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Wann ugeschalt, dierfen Aktien vun Firmen kaf an verkaf ginn. Aktien sinn just fir Firmen verfügbar, déi en gewëssen Alter erregt hunn -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prozentsaz vum Etappenrofit den am Feeder-System bezuelt gëtt: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Prozentsaz vum Akomms déi un d'Zwëschenetappen an engem Feeder-System ginn ginn, wat méi Kontroll iwwert d'Akommes erméiglegt -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Wann gezunn gëtt, setz en Signal all: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Definéiert d'Distanz an däer Signaler gesat ginn, bis zum nächsten Obstakel (Signal, Kräizung), wann Signaler gezunn ginn +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Wann ugeschalt, dierfen Aktien vu Firmen kaf an verkaf ginn. Aktien si just fir Firme verfügbar, déi en gewëssen Alter erreecht hunn +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prozentsaz vum Etappenprofit den am Feeder-System bezuelt gëtt: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Prozentsaz vum Akommes déi un d'Zwëschenetappen an engem Feeder-System gi ginn, wat méi Kontroll iwwert d'Akommes erméiglegt +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Wa gezunn gëtt, setz en Signal all: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Definéiert d'Distanz an däer Signaler gesat ginn, bis zum nächsten Obstakel (Signal, Kräizung), wa Signaler gezu ginn STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} Feld{P 0 "" er} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Beim Zéien, behal eng fix Distanz tëscht Signaler: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Wielt d'Verhalen vum Signalsetzen, wann mat Ctrl gezunn gëtt. Wann ausgeschalt, ginn Signaler firun laangen Streckenabschnitter wéi Brécken an Tunnelen gesat. Wann ugeschalt, ginn Signaler all N Felder gesat, fir en parallelt Setzen vun Signaler ze erméiglechen +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Wielt d'Verhale vum Signalsetzen, wa mat Ctrl gezu gëtt. Wann ausgeschalt, gi Signaler firu laange Streckenabschnitter wéi Brécken an Tunnelen gesat. Wann ugeschalt, gi Signaler all N Felder gesat, fir e parallelt Setzen vu Signaler ze erméiglechen STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatesch Diksen bauen firun: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Definéiert d'Joer wou elektresch Signaler benotzt ginn. Firun dësem Joer ginn nët-elektresch Signaler benotzt (déi déi selwescht Funktioun hunn, an just anescht ausgesinn) -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Signal GUI erlaaben: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Weist eng Fënster an däer den Typ vun Signaler déi gebaut ginn gewielt kënnen ginn, amplaz ouni Fënster an durch Ctrl-klicken op d'Signaler +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Signaler GUI uschalten: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Weist eng Fënster an däer den Typ vu Signaler déi gebaut kënne ginn, amplaz ouni Fënster an durch Ctrl-klicken op d'Signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standard Signal-Typ: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard Signaltyp den soll benotzt ginn +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard Signaltyp dee soll benotzt ginn STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blocksignaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Wee-Signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einbahn-Wee-Signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Wiessel duerch Signal-Typen: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Wielt Signaltypen déi durchgewielt ginn, wann een mat Ctrl op d'Signalbauen dréckt +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Wielt Signaltypen déi durchgewielt ginn, wann ee mat Ctrl op e gebaute Signal dréckt STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Nëmmen Blocksignaler STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Nëmmen Wee-Signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alleguerten -STR_CONFIG_SETTING_TOWN_LAYOUT :Stroossenlayout an neien Stied: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT :Stroosselayout an neie Stied: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Layout fir d'Stroossennetz vun enger Stad STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Besser Stroossen STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 Gitter STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 Gitter STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Zoufälleg -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Stied därfen Stroossen bauen: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Stied däerfen Stroossen bauen: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Erlaabt Stied Stroossen ze bauen fir ze wuessen. Ausschalten fir d'Stiedréid dorun ze hënneren fir Stroossen selwer ze bauen -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Stied dierfen héich Kräizungen bauen: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Wann dës Astellung ugeschalt ass, kënnen Stied Strossen iwwert Schinnen bauen -STR_CONFIG_SETTING_NOISE_LEVEL :Erlaab stadkontrolléiert Kaméidisniveau fir Fluchhäfen: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Wann dës Astellung ausgeschalt ass, kënnen zwee Fluchhäfen an all Stad gebaut ginn. Wann dës Astellung ugeschalt ass, henkt et vun der Fluchhafengréisst, Distanz, Kaméidisniveau of wéivill Fluchhäfen kënnen gebaut ginn +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Stied dierfen Barrièren bauen: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Wann dës Astellung ugeschalt ass, kënnen Stied Stroossen iwwert Schinne bauen +STR_CONFIG_SETTING_NOISE_LEVEL :Erlab e stadkontrolléierte Kaméidisniveau fir Fluchhäfen: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Wann dës Astellung ausgeschalt ass, kënnen zwee Fluchhäfen an all Stad gebaut ginn. Wann dës Astellung ugeschalt ass, henkt et vun der Fluchhafengréisst, Distanz, Kaméidisniveau of wéivill Fluchhäfen kënne gebaut ginn STR_CONFIG_SETTING_TOWN_FOUNDING :Stiedgrënnung am Spill: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Wann dës Astellung ugeschalt ass, kënnen Spiller nei Stied am Spill grënnen STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verbueden @@ -1523,20 +1563,20 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Erlaabt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Erlaabt, custom Stad-Layout STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Bamplazéirung: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontrolléiert zoufälleg Optauchen vun Beem während dem Spill. Dëst kann Industrien beaflossen, déi op d'Wuessen vun Beem ugewisen sinn +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontrolléiert zoufälleg Optauche vu Beem während dem Spill. Dëst kann Industrie beaflossen, déi op d'Wuessen vu Beem ugewisen sinn STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Keng{RED}(zerstéiert Bauholzfabrik) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Nëmmen am Reebësch STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Iwwerall STR_CONFIG_SETTING_TOOLBAR_POS :Positioun vun der Haapt-Toolbar: {STRING} -STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontal Positioun vun der Hapt-Toolbar uewen um Schierm +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontal Positioun vun der Haapt-Toolbar uewen um Schierm STR_CONFIG_SETTING_STATUSBAR_POS :Positioun vun der Statusbar: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontal Positioun vun der Statusbar ënnen um Schierm STR_CONFIG_SETTING_SNAP_RADIUS :Radius wou d'Fënsteren uschnapen: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distanz tëscht Fënsteren befier d'Fënsteren automatesch alignéiert ginn STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} Pixel STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Ausgeschalt -STR_CONFIG_SETTING_SOFT_LIMIT :Maximal Unzuel vun net-gepinnten Fënster: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT :Maximal Unzuel vun net-gepinnte Fënster: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Unzuel un net-gepinnten openen Fënster befier al Fënsteren automatesch zougemaach ginn fir nei Plaz ze man fir nei Fënsteren STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :ausgeschalt @@ -1550,115 +1590,115 @@ STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x -STR_CONFIG_SETTING_TOWN_GROWTH :Stad-Wuestum: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH :Geschw. vum Stad-Wuesstem: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Geschwindegkeet mat däer Stied wuessen STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Keen STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lues STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Schnell STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Ganz schnell -STR_CONFIG_SETTING_LARGER_TOWNS :Proportioun vun Dierfer déi kënnen Stied ginn: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Unzuel un Dierfer déi eng Stad kënnen ginn, folglesch start en Duerf méi grouss an wiisst méi séier +STR_CONFIG_SETTING_LARGER_TOWNS :Proportioun vun Dierfer déi kënne Stied ginn: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Unzuel un Dierfer déi eng Stad kënne ginn, folglesch start en Duerf méi grouss an wiisst méi séier STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 zu {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Keng -STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Ufangs-Gréisst vun Stied mulitiplizéiren mat: {STRING} -STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Duerchschnëttsgréisst vun Stied an Proportioun zu normalen Dierfer um Spillstart -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Beim Stroossebau absurd Stroossenelementer ofrappen: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Huel Sakgaassen ewech wann d'Stroossen renovéiert ginn +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Ufangs-Gréisst vu Stied multiplizéiren mat: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Duerchschnëttsgréisst vu Stied an Proportioun zu normalen Dierfer um Spillstart -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualiséier d'Distributiounsgrafik all {STRING} D{P 0:2 ag eeg} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualiséier d'Distributiounsgrafik all {STRING}{NBSP}D{P 0:2 ag eeg} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Zäit tëscht nofolgenden Neiberechnungen vun der Linkgrafik. All Neiberechnung rechent d'Pläng fir eng Komponent vun der Grafik. Dat heescht dass en Wert X fir dës Astellung net all X Deeg aktualiséiert gëtt. Nëmmen een Komponent gëtt aktualiséiert. Wat méi kuerz gesat, wat méi CPU Rechenzäit gebraucht gëtt. Wat se méi laang gesat gëtt, wat méi Zäit vergeet bis Wuerendistributioun op enger neier Route gestart gëtt. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Benotz {STRING} D{P 0:2 ag eeg} fir d'Neiberechnung vum Distributiounsgraf -STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Zäit déi gebraucht gëtt fir all Neiberechnung vun enger Linkgrafikkomponent. Wann eng Neiberechnung ufenkt, gëtt en Thread erstallt den fir dës Unzuel un Deeg leeft. Wann den Wert ze kleng ass, kann den Thread net an der gewënschter Zäit faerdeg ginn an et kënnt zu engem Lag. Wann den Wert méi héig gesat gëtt, brauch d'Distributioun méi lang fir erneiert ze ginn wann eng Streck ännert +STR_CONFIG_SETTING_LINKGRAPH_TIME :Benotz {STRING}{NBSP}D{P 0:2 ag eeg} fir d'Neiberechnung vum Distributiounsgraf +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Zäit déi gebraucht gëtt fir all Neiberechnung vun enger Linkgrafikkomponent. Wann eng Neiberechnung ufenkt, gëtt en Thread erstallt dee fir dës Unzuel un Deeg leeft. Wann de Wäert ze kleng ass, kann den Thread net an der gewënschter Zäit faerdeg ginn an et kënnt zu engem Lag. Wann de Wäert méi héich gesat gëtt, brauch d'Distributioun méi lang fir erneiert ze ginn wann eng Streck ännert STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuell -STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrësch -STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrësch +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetresch +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetresch STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributiounsmodus fir Passagéier: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrësch" heescht, dass ongeféier d'selwecht vill Passagéier vun A op B wéi vun B op A geschéckt ginn. "asymmetrësch" heescht, dass eng arbiträr Unzuel un Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt fir Passagéier +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetresch" heescht, dass ongeféier d'selwecht vill Passagéier vun A op B wéi vu B op A geschéckt ginn. "asymmetresch" heescht, dass eng arbiträr Unzuel u Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt fir Passagéier STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributiounsmodus fir Post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrësch" heescht, dass ongeféier d'selwecht vill vun A op B wéi vun B op A geschéckt ginn. "asymmetrësch" heescht, dass eng arbiträr Unzuel un Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt fir Post +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetresch" heescht, dass ongeféier d'selwecht vill vun A op B wéi vu B op A geschéckt ginn. "asymmetresch" heescht, dass eng arbiträr Unzuel u Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt fir Post STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributiounsmodus fir d'GEPANZERT Wuereklass: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :D'GEPANZERT Wuereklass huet Wertsaachen am geméissegte Klima, Diamanten am Sub-Tropenklima an Gold am sub-arktësche Klima. NewGRFen kënnen dat änneren. "symmetrësch" heescht, dass ongeféier d'selwecht vill vun A op B wéi vun B op A geschéckt ginn. "asymmetrësch" heescht, dass eng arbiträr Unzuel un Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt. Et gëtt emfuelen dëst op asymmetrësch oder manuell ze loossen wann een sub-arktësch spillt, well Banken keen Gold zréck an d’Minen liwweren. Fir geméissegt Klima an sub-tropësch Klima kann eng Bank mat der anerer Wertsachen zréckschécken. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :D'GEPANZERT Wuereklass huet Wäertsaachen am geméissegte Klima, Diamanten am Sub-Tropenklima an Gold am sub-arktësche Klima. NewGRFen kënnen dat änneren. "Symmetrësch" heescht, dass ongeféier d'selwecht vill vun A op B wéi vu B op A geschéckt ginn. "asymmetrësch" heescht, dass eng arbiträr Unzuel u Wueren an d'jeweileg Richtung geschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt. Et gëtt emfuelen dëst op asymmetrësch oder manuell ze loossen wann ee sub-arktësch spillt, well Banken kee Gold zréck an d’Minen liwweren. Fir geméissegt Klima an sub-tropësch Klima kann eng Bank mat der anerer Wäertsachen zeréckschécken. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributiounsmodus fir aner Wuerenklassen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrësch" heescht dass ongeféier genausouvill Wueren vun A op B wéi vun B op A geschéckt ginn. "asymmetrësch" heescht dass verschidden Unzuel un Wueren verschéckt ginn an béid Richtungen. "manuell" heescht dass keng automatësch Distributioun stattfënnt. Meeschtens gëtt "asymmetrësch" oder manuell gewielt. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetresch" heescht dass eng beléiweg Unzuel un Wueren an béid Richtungen verschéckt ginn. "manuell" heescht dass keng automatësch Distributioun stattfënnt. Meeschtens gëtt "asymmetresch" oder manuell gewielt. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributiounsgenauegkeet: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Wat den Wert méi héig ass, wat méi CPU benotzt gëtt fir d'Linkgraphik ze zeechnen. Wann ze héig gesat, kann et zu Lags kommen. Ze niddreg gesat kann d'Distributioun ongenau ginn an d'Wueren net sou verdeelt ginn wéi geduet +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Wat de Wäert méi héich ass, wat méi CPU benotzt gëtt fir d'Linkgrafik ze zeechnen. Wann ze héich gesat, kann et zu Lags kommen. Ze niddreg gesat kann d'Distributioun ongenau ginn an d'Wueren net sou verdeelt ginn wéi geduet STR_CONFIG_SETTING_DEMAND_DISTANCE :Afloss vun der Distanz op d'Nofro: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Wann'sde en méi héigen Wert wéi 0 wiels, huet d'Differenz tëscht 2 Statiounen A an B en Afloss op wéivill Wueren geschéckt ginn. Wat B méi wait ewech vun A ass, wat manner Wueren geschéckt ginn. Wat den Wert méi héig gesat gëtt, wat manner Wueren op eng Statioun wait ewech an méi Wueren op eng Statioun méi no gescheckt ginn. -STR_CONFIG_SETTING_DEMAND_SIZE :Unzuel vun zréckgeschéckten Wueren fir den symmetrëschen Modus: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Wann een dëst op manner wéi 100% setzt, gëtt déi symmetrësch Distributioun méi wéi eng asymmetrësch behandelt. Manner Wueren ginn zréckgeschéckt wann en bestëmmten Wert op eng Statioun geschéckt gouf. Bei 0% verhält sech d'symmetrësch Distributioun wéi eng asymmetrësch -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Sättegung vun kuerzen Weeër befier grouss Weeër benotzt ginn: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Oft gëtt et e puer Weeër tëscht zwou Statiounen. Cargodist sättegt fir d'éischt den kierzten, dann den zweetkierzten a.s.w. Sättegung gëtt bestemmt durch Kapazitéit an geplangten Notzung. Wann all Wee gesiedegt ass, an nach emmer eng Nofro do ass, ginn all d'Weeër iwwersiedegt, mat Präferenz déi mat grousser Kapazitéit. Gréissten Deel vun der Zäit rechent den Algorithmus d'Kapazitéit allerdéngs net richteg. Des Astellung erlabt engem en Prozentsaz ze bestëmmen fir den éischten Wee befier en zweeten Wee benotzt gëtt. Setz en enner 100% fir iwwerfëllten Statiounen ze vermeiden wann d'Kapazitéit iwwerschad gouf. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Wann's de en méi héije Wäert wéi 0 wiels, huet d'Differenz tëscht 2 Statiounen A an B en Afloss dorop wéivill Wueren geschéckt ginn. Wat B méi wäit ewech vun A ass, wat manner Wueren geschéckt ginn. Wat de Wäert méi héich gesat gëtt, wat manner Wueren op eng Statioun wait ewech an méi Wueren op eng Statioun méi no geschéckt ginn. +STR_CONFIG_SETTING_DEMAND_SIZE :Unzuel vun zeréckgeschéckte Wueren fir de symmetreschen Modus: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Wann een dëst op manner wéi 100% setzt, gëtt déi symmetresch Distributioun méi wéi eng asymmetrësch behandelt. Manner Wueren ginn zeréckgeschéckt wann en bestëmmten Wäert op eng Statioun geschéckt gouf. Bei 0% verhält sech d'symmetresch Distributioun wéi eng asymmetresch +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Sättegung vu kuerzen Weeër befier grouss Weeër benotzt ginn: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Oft gëtt et e puer Weeër tëscht zwou Statiounen. Cargodist siedegt fir d'éischt de kierzten, dann den zweetkierzten a.s.w. Siedegung gëtt bestemmt durch Kapazitéit an geplangten Notzung. Wann all Wee gesiedegt ass, an nach emmer eng Nofro do ass, ginn all d'Weeër iwwersiedegt, mat Präferenz déi mat grousser Kapazitéit. Gréissten Deel vun der Zäit rechent den Algorithmus d'Kapazitéit allerdéngs net richteg. Des Astellung erlabt engem en Prozentsaz ze bestëmmen fir den éischten Wee befier en zweeten Wee benotzt gëtt. Setz en enner 100% fir iwwerfëllten Statiounen ze vermeide wann d'Kapazitéit iwwerschat gouf. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Geschwindegkeetseenheeten: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Emmer wann eng Geschwindegkeet am Userinterface ugewisen gëtt, weis se an den ausgewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Britësch (mph) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrësch (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Britesch (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metresch (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Kraafteenheeten: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Emmer wann d'Kraaft vun engem Gefier am Userinterface ugewisen gëtt, weis se an den ausgewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Britësch (PS) -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrësch (PS) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Britesch (PS) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metresch (PS) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Gewichtseenheeten: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Emmer wann Gewiichter am Userinterface ugewisen ginn, weis se an den ausgewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Britësch (kuerz t/Tonn) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrësch (t/Tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Britesch (kuerz t/Tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metresch (t/Tonn) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumeneenheeten: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Emmer wann Volumen am Userinterface ugewisen ginn, weis se an den ausgewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Britësch (gal) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrësch (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Britesch (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metresch (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Zuchkraaft Eenheeten: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Emmer wann eng Zuchkraaft am Userinterface ugewisen gëtt weis se an den ugewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Britësch (lbf) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrësch (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Emmer wann eng Zuchkraaft am Userinterface ugewisen gëtt, weis se an den ugewielten Eenheeten un +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Britesch (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metresch (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Héigteneenheeten: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Emmer wann Héigten am Userinterface ugewisen ginn, weis se an den ausgewielten Eenheeten un -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britësch (ft) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrësch (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Héichteneenheeten: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Emmer wann Héichten am Userinterface ugewisen ginn, weis se an den ausgewielten Eenheeten un +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britesch (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metresch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokaliséirung -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktioun +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik +STR_CONFIG_SETTING_SOUND :{ORANGE}Soundeffekter +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generell +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Usiicht +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktioun +STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Meldungen +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Compta STR_CONFIG_SETTING_VEHICLES :{ORANGE}Gefierer -STR_CONFIG_SETTING_STATIONS :{ORANGE}Statiounen -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economie -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Wuerendistributioun +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physik +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routeplangung +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitatiounen +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrophen / Akzidenter +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Welt Generatioun +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Emwelt +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoritéiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Stied +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrien +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Wuereverdeelung STR_CONFIG_SETTING_AI :{ORANGE}Géigner -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Displayoptiounen -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktioun -STR_CONFIG_SETTING_SOUND :{ORANGE}Soundeffekter -STR_CONFIG_SETTING_NEWS :{ORANGE}News an Messagen -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Luedungshandhabung STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspiller -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoerneieren -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Revisiounen -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routenplangung -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Zich -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Stied -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrien STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(recommandéiert) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pfadfinder fir Zich: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadfinder den fir Zich benotzt gëtt -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pfadfinder fir Stroossengefierer: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pfadfinder den fir Gefierer benotzt gëtt +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadfinder dee fir Zich benotzt gëtt +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pfadfinder fir Stroossegefierer: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pfadfinder dee fir Gefierer benotzt gëtt STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pfadfinder fir Schëffer: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pfadfinder den fir Schëffer benotzt gëtt -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatëscht Emdréinen bei Signaler: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pfadfinder dee fir Schëffer benotzt gëtt +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatescht Emdréinen bei Signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Erlab Zich bei engem Signal emzedréinen, wann se eng laang Zäit geward hunn STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Astellung änneren @@ -1666,12 +1706,12 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Astellun # Config errors STR_CONFIG_ERROR :{WHITE}Fehler mat der Konfiguratiounsdatei... STR_CONFIG_ERROR_ARRAY :{WHITE}... Fehler am Array '{STRING}' -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... falschen Wäert '{STRING}' fir '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... falsche Wäert '{STRING}' fir '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... Trailing-characters um Enn vun der Astellung '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoréiren NewGRF '{STRING}': Duplikat-GRF ID wéi '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoréiren ongültëgen NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :net fonnt -STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :onsécher fir statëschen Gebrauch +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :onsécher fir statesche Gebrauch STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :System NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :net mat dëser Versioun vun OpenTTD kompatibel STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :onbekannt @@ -1679,9 +1719,9 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... Komp STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... Spillstand format '{STRING}' gëtt et net. Revertéiren zu '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoréiren Basis Grafik Set '{STRING}': net fonnt STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoréiren Basis Sound Set '{STRING}': net fonnt -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoréiren Basis Music Set '{STRING}': net fonnt -STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Out of memory -STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Reservéirung vun {BYTES} Spritecache feel versot. De Spritecache gouf reduzéiert op {BYTES}. Dëst reduzéiert d'Performance vun OpenTTD. Fir Späicher ze spueren kann een probéiren 32bpp Grafiken auszeschalten an/oder Zoom-Eran Stufen +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoréiren Basis Musik Set '{STRING}': net fonnt +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Net genuch Mémoire +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Reservéirung vun {BYTES} Spritecache versot. De Spritecache gouf reduzéiert op {BYTES}. Dëst reduzéiert d'Performance vun OpenTTD. Fir Späicher ze spueren kann een probéiren 32bpp Grafiken auszeschalten an/oder Zoom-Eran Stufen # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1689,43 +1729,43 @@ STR_INTRO_CAPTION :{WHITE}OpenTTD STR_INTRO_NEW_GAME :{BLACK}Neit Spill STR_INTRO_LOAD_GAME :{BLACK}Spill lueden STR_INTRO_PLAY_SCENARIO :{BLACK}Szenario spillen -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Héichtenkaart spillen +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Héichtekaart spillen STR_INTRO_SCENARIO_EDITOR :{BLACK}Szenarien Editor STR_INTRO_MULTIPLAYER :{BLACK}Multiplayer STR_INTRO_GAME_OPTIONS :{BLACK}Spilloptiounen -STR_INTRO_HIGHSCORE :{BLACK}Beschtenlëscht -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Erweidert Astellungen +STR_INTRO_HIGHSCORE :{BLACK}Beschtelëscht +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Astellungen STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Astellungen STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Inhalt STR_INTRO_SCRIPT_SETTINGS :{BLACK}KI / Spill-Script Astellungen STR_INTRO_QUIT :{BLACK}Eraus -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start en neit Spill. Ctrl+Klick iwwersprengt Kaartenkonfiguratioun +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start en neit Spill. Ctrl+Klick iwwerspréngt Kaartenkonfiguratioun STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Spill lueden -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Nei Partie starten, mat enger Héichtenkaart als Landschaft +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Nei Partie starten, mat enger Héichtekaart als Landschaft STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start eng nei Partie, mat engem eegenen Szenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Erstell eng eegen Spillwelt/Szenario STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start en Multiplayer-Spill -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Wielt den Landschaftsstil 'temperéiert' -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Wielt den Landschaftsstil 'sub-arktësch' -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Wielt den Landschaftsstil 'sub-tropësch' -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wielt den Landschaftsstil 'Spillsaachenland' +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Wielt de Landschaftsstil 'temperéiert' +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Wielt de Landschaftsstil 'sub-arktesch' +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Wielt de Landschaftsstil 'sub-tropesch' +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wielt de Landschaftsstil 'Spillsaacheland' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Spilloptiounen -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Beschtenlëscht uweisen -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Weist erweidert Astellungen +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Beschtelëscht uweisen +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Displayastellungen STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF Astellungen uweisen STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check op neien Inhalt kann downgeload gin STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Weis KI an Spill-Script-Astellungen STR_INTRO_TOOLTIP_QUIT :{BLACK}Aus 'OpenTTD' eraus goen -STR_INTRO_TRANSLATION :{BLACK}Des Iwwersetzung huet {NUM} String{P "" s}. Hëlleft OpenTTD besser ze man andem der ierch als Iwwersetzer mellt!. Liest readme.txt fir d'Detailer. +STR_INTRO_TRANSLATION :{BLACK}Dës Iwwersetzung huet {NUM} String{P "" s}. Hëllef OpenTTD besser ze man andems du dech als Iwwersetzer mells! Lies readme.txt fir d'Detailer. # Quit window STR_QUIT_CAPTION :{WHITE}Eraus -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}bass du sécher dass du aus dem OpenTTD eraus wëlls , an an den {STRING} zréck? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Bass du sécher, dass du aus OpenTTD eraus wëlls, an an den {STRING} zeréck? STR_QUIT_YES :{BLACK}Jo STR_QUIT_NO :{BLACK}Nee @@ -1742,40 +1782,42 @@ STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Spill ophalen -STR_ABANDON_GAME_QUERY :{YELLOW}Bass du dir sécher dass du dës Partie ophalen wëlls? +STR_ABANDON_GAME_CAPTION :{WHITE}Spill ofbriechen +STR_ABANDON_GAME_QUERY :{YELLOW}Bass du sécher dass du des Partie ofbrieche wëlls? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Sécher dass du aus dësem Szenario eraus wëlls ? # Cheat window -STR_CHEATS :{WHITE}Cheats +STR_CHEATS :{WHITE}Cheater STR_CHEATS_TOOLTIP :{BLACK}Checkboxen weisen un dass du den Cheat schon eng Kéier benotzt hues -STR_CHEATS_WARNING :{BLACK}Warnung! DU bass um Wee de Géigner ze verroden. Sou eng Ongnod gëtt bis an all Éiwegkeet behalen +STR_CHEATS_WARNING :{BLACK}Warnung! Du bass um Wee de Géigner ze verroden. Sou eng Ongnod gëtt bis an all Éiwegkeet behalen STR_CHEAT_MONEY :{LTBLUE}Suen ëm {CURRENCY_LONG} erhéijen -STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Als Firma spillen: {ORANGE}{COMMA} -STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magëschen Bulldozer (Industrien ofrappen, onzerstéierbar Objekter): {ORANGE}{STRING} -STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnellen kënnen sech kräizen: {ORANGE}{STRING} -STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet'en maachen net regelméisseg en Accident op klengen Fluchhäfen: {ORANGE} {STRING} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Als Firma {ORANGE}{COMMA} spillen +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magësche Bulldozer (Industrien ofrappen, onzerstéierbar Objeten): {ORANGE}{STRING} +STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelle kënne sech kräizen: {ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet'en maachen net regelméisseg en Akzident op klenge Fluchhäfen: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Änner d'Maximalhéicht vu Bierger op der Kaart: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Änner d'Maximalhéicht vu Bierger op der Kaart STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gemässegt Klima Landschaft -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-Arktësch Landschaft -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-Tropësch Landschaft -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Spillland Landschaft +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-Arktesch Landschaft +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-Tropesch Landschaft +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Spillsaacheland Landschaft STR_CHEAT_CHANGE_DATE :{LTBLUE}Datum wiesselen: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Wiessel d'aktuellt Joer -STR_CHEAT_SETUP_PROD :{LTBLUE}Erlaabt änneren vun den Produktiounswerter: {ORANGE}{STRING} +STR_CHEAT_SETUP_PROD :{LTBLUE}Erlaabt d'ännere vun de Produktiounswäerter: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Neien Faarfschema +STR_LIVERY_CAPTION :{WHITE}Neie Faarfschema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Weis generell Faarfschemen STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Weis Zuch Faarfschemen -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Weis Stroossengefierer Faarfschemen +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Weis Stroossegefierer Faarfschemen STR_LIVERY_SHIP_TOOLTIP :{BLACK}Weis d'Schëff Faarfschemen STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Weis Fliger Faarfschemen -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Wiel d'Primärfaarf fir den ausgewieltenen Schema. Ctrl+Klick wielt dës Faarf fir all Schema +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Wiel d'Primärfaarf fir den ausgewieltene Schema. Ctrl+Klick wielt dës Faarf fir all Schema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Wiel d'Sekundärfaarf fir den ausgewieltenen Schema. Ctrl+Klick wielt dës Faarf fir all Schema -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Wiel en Faarfschema fir ze änneren, oder e puer Schemen mat CTRL+Klick. Klick op d'Këscht fir d'Schemanotzung ze wiesselen +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Wiel en Faarfschema fir ze änneren, oder e puer Schemen mat Ctrl+Klick. Klick op d'Këscht fir d'Schemanotzung ze wiesselen -STR_LIVERY_DEFAULT :Standard Tracht +STR_LIVERY_DEFAULT :Standard Firmefaarwen STR_LIVERY_STEAM :Damplok STR_LIVERY_DIESEL :Diesellok STR_LIVERY_ELECTRIC :Elektrolok @@ -1783,26 +1825,27 @@ STR_LIVERY_MONORAIL :Monorail Lok STR_LIVERY_MAGLEV :Magnéitbunnlok STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU -STR_LIVERY_PASSENGER_WAGON_STEAM :Passagéierwagon (Damp) -STR_LIVERY_PASSENGER_WAGON_DIESEL :Passagéierwagon (Diesel) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passagéierwagon (Elektrësch) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passagéierwagon (Monorail) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passagéierwagon (Magnéitbahn) -STR_LIVERY_FREIGHT_WAGON :Wuerenwagon +STR_LIVERY_PASSENGER_WAGON_STEAM :Passagéierwaggon (Damp) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Passagéierwaggon (Diesel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passagéierwaggon (Elektresch) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passagéierwaggon (Monorail) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passagéierwaggon (Magnéitbunn) +STR_LIVERY_FREIGHT_WAGON :Gidderwaggon STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Camion STR_LIVERY_PASSENGER_SHIP :Passagéierfähr -STR_LIVERY_FREIGHT_SHIP :Wuerenschëff -STR_LIVERY_HELICOPTER :Helicopter -STR_LIVERY_SMALL_PLANE :Klengen Fliger -STR_LIVERY_LARGE_PLANE :Groussen Fliger +STR_LIVERY_FREIGHT_SHIP :Frachtschëff +STR_LIVERY_HELICOPTER :Helikopter +STR_LIVERY_SMALL_PLANE :Klenge Fliger +STR_LIVERY_LARGE_PLANE :Grousse Fliger STR_LIVERY_PASSENGER_TRAM :Passagéiertram STR_LIVERY_FREIGHT_TRAM :Wuerentram # Face selection window STR_FACE_CAPTION :{WHITE}Gesiichtsauswiel STR_FACE_CANCEL_TOOLTIP :{BLACK}Briech d'Auswiel vum Gesiicht of -STR_FACE_OK_TOOLTIP :{BLACK}Accépteier néit Gesiicht +STR_FACE_OK_TOOLTIP :{BLACK}Neit Gesiicht akzeptéieren +STR_FACE_RANDOM :{BLACK}Duercherneen wierfelen STR_FACE_MALE_BUTTON :{BLACK}Männlech STR_FACE_MALE_TOOLTIP :{BLACK}Wielt männlech Gesiichter @@ -1816,40 +1859,40 @@ STR_FACE_SIMPLE :{BLACK}Einfach STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einfach Gesiichtsauswiel STR_FACE_LOAD :{BLACK}Lueden STR_FACE_LOAD_TOOLTIP :{BLACK}Favoriséiert Gesiicht lueden -STR_FACE_LOAD_DONE :{WHITE}Äert favoriséiert Gesiicht ass aus der OpenTTD configuratiouns Datei gelueden ginn. -STR_FACE_FACECODE :{BLACK}Gesiicht no. -STR_FACE_FACECODE_TOOLTIP :{BLACK}Kuckt an wielt d'Gesiichtsnummer vum Firmenpresident +STR_FACE_LOAD_DONE :{WHITE}Äert favoriséiert Gesiicht ass aus der OpenTTD Konfiguratiounsdatei geluede ginn. +STR_FACE_FACECODE :{BLACK}Gesiicht N°. +STR_FACE_FACECODE_TOOLTIP :{BLACK}Kuckt an wielt d'Gesiichtsnummer vum Firmepresident STR_FACE_FACECODE_CAPTION :{WHITE}Kuckt an wielt d'Gesiichtsnummer STR_FACE_FACECODE_SET :{WHITE}Nei Gesiichtsnummer ass agestallt ginn STR_FACE_FACECODE_ERR :{WHITE}Konnt d'Gesiichtsnummer net setzen - muss en numereschen Wäert tëscht 0 an 4,294,967,295 sinn! STR_FACE_SAVE :{BLACK}Späicheren STR_FACE_SAVE_TOOLTIP :{BLACK}Späichert favoriséiert Gesiicht -STR_FACE_SAVE_DONE :{WHITE}Dëst Gesiicht gëtt als Favoriséiert an der OpenTTD Configuratiounsdatei gespäichert. +STR_FACE_SAVE_DONE :{WHITE}Dëst Gesiicht gëtt als favoriséiert an der OpenTTD Konfiguratiounsdatei gespäichert. STR_FACE_EUROPEAN :{BLACK}Europäesch STR_FACE_SELECT_EUROPEAN :{BLACK}Wielt europäesch Gesiichter -STR_FACE_AFRICAN :{BLACK}Afrikanësch -STR_FACE_SELECT_AFRICAN :{BLACK}Wielt afrikanësch Gesiichter +STR_FACE_AFRICAN :{BLACK}Afrikanesch +STR_FACE_SELECT_AFRICAN :{BLACK}Wielt afrikanesch Gesiichter STR_FACE_YES :Jo STR_FACE_NO :Nee -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Schalt Schnautz oder Ouerréng an -STR_FACE_HAIR :Hoër: -STR_FACE_HAIR_TOOLTIP :{BLACK}Hoër änneren -STR_FACE_EYEBROWS :Aaenbraaen: -STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Aaenbraaen Ouerréng -STR_FACE_EYECOLOUR :Aanfaarf: -STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Aanfaarf änneren +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Schalt Schnauz oder Ouerréng un +STR_FACE_HAIR :Hoer: +STR_FACE_HAIR_TOOLTIP :{BLACK}Hoer änneren +STR_FACE_EYEBROWS :Aperhoer: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Apenhoer änneren +STR_FACE_EYECOLOUR :Aafaarf: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Aafaarf änneren STR_FACE_GLASSES :Brëll: -STR_FACE_GLASSES_TOOLTIP :{BLACK}Brëll anschalten +STR_FACE_GLASSES_TOOLTIP :{BLACK}Brëll aschalten STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Brëll änneren STR_FACE_NOSE :Nues: STR_FACE_NOSE_TOOLTIP :{BLACK}Nues änneren STR_FACE_LIPS :Lëpsen: -STR_FACE_MOUSTACHE :Schnautz: -STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Lëpsen oder Schnautz änneren +STR_FACE_MOUSTACHE :Schnauz: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Lëpsen oder Schnauz änneren STR_FACE_CHIN :Kënn: STR_FACE_CHIN_TOOLTIP :{BLACK}Kënn änneren -STR_FACE_JACKET :Mantel: -STR_FACE_JACKET_TOOLTIP :{BLACK}Mantel änneren +STR_FACE_JACKET :Paltong: +STR_FACE_JACKET_TOOLTIP :{BLACK}Paltong änneren STR_FACE_COLLAR :Halsband: STR_FACE_COLLAR_TOOLTIP :{BLACK}Halsband änneren STR_FACE_TIE :Krawatt: @@ -1863,7 +1906,7 @@ STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Wiel të STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nee STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Jo STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spillernumm: -STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Daat ass den Numm mat deem iersch dei aaner Spiller Identifizéieren kënnen +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Daat ass den Numm mat deem iech déi aner Spiller Identifizéieren kënnen STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Numm STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Numm vum Spill @@ -1872,16 +1915,16 @@ STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Spiller STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Spiller online / max Spiller{}Firmen online / max Firmen STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaartegréisst -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaartegréisst vum Spill{}Klicken fir dono ze sortéieren +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaartegréisst vum Spill{}Klicken fir dorop ze sortéieren STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Momentanen Datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Joer -STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Unzuel vun Joer wou{}daat Spill leeft +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Unzuel u Joer wou{}daat Spill leeft STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Sprooch, Serverversioun, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klick op en Spill aus der Lëscht fir et auszewielen -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server deems du d'leschte Kéier bäigetrueden bass: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klick fir den Server ze wielen deens du d'leschte Kéier haas +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server deems du d'leschte Kéier bäigetruede bass: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klick fir de Server ze wielen deens du d'leschte Kéier haas STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPILL INFO STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Spiller: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} @@ -1910,84 +1953,84 @@ STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Server s STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Eegenen Server starten STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Gëff däin Numm an -STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}d'Address vum Host unginn +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}D'Address vum Host uginn # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Nei Multiplayerpartie starten STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spillnumm: -STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Den Numm deen an der Lëscht vun den Spiller ugewissen gëtt +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Den Numm deen an der Lëscht vun de Spiller ugewisen gëtt STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Passwuert setzen STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}En Passwuert fir d'Spill setzen, dass et net Public accessibel ass STR_NETWORK_START_SERVER_UNADVERTISED :Nee STR_NETWORK_START_SERVER_ADVERTISED :Jo STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Spiller -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max Spiller: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Maximal Unzuel vun den Clients. Et muss net all Slot gefëllt sin. +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximal Spiller: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Maximal Unzuel vun de Clients. Et muss net all Slot gefëllt sinn. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} Firm{P a en} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max Firmen: -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}D'Unzuel vun den Firmen limitéieren +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximal Firmen: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}D'Unzuel vun de Firme limitéieren STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} Zuschauer -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max Zuschauer: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximal Zuschauer: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}D'Unzuel vun den Zuschauer limitéiren -STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Geschwaaten Sprooch: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aaner Leit gesinn wéi eng Sprooch um Server geschwaat gëtt +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Geschwate Sprooch: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aner Leit gesinn wéieng Sprooch um Server geschwat gëtt STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Gëff en Numm fir d'Spill un # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Egal -STR_NETWORK_LANG_ENGLISH :Englësch +STR_NETWORK_LANG_ENGLISH :Englesch STR_NETWORK_LANG_GERMAN :Däitsch STR_NETWORK_LANG_FRENCH :Franséisch -STR_NETWORK_LANG_BRAZILIAN :Brasilianësch -STR_NETWORK_LANG_BULGARIAN :Bulgarësch -STR_NETWORK_LANG_CHINESE :Chinesësch -STR_NETWORK_LANG_CZECH :Tscheschësch -STR_NETWORK_LANG_DANISH :Dänësch -STR_NETWORK_LANG_DUTCH :Holländësch +STR_NETWORK_LANG_BRAZILIAN :Brasilianesch +STR_NETWORK_LANG_BULGARIAN :Bulgaresch +STR_NETWORK_LANG_CHINESE :Chinesesch +STR_NETWORK_LANG_CZECH :Tschechesch +STR_NETWORK_LANG_DANISH :Dänesch +STR_NETWORK_LANG_DUTCH :Holländesch STR_NETWORK_LANG_ESPERANTO :Esperanto -STR_NETWORK_LANG_FINNISH :Finnësch -STR_NETWORK_LANG_HUNGARIAN :Ungarësch +STR_NETWORK_LANG_FINNISH :Finnesch +STR_NETWORK_LANG_HUNGARIAN :Ungaresch STR_NETWORK_LANG_ICELANDIC :Isländesch -STR_NETWORK_LANG_ITALIAN :Italienësch -STR_NETWORK_LANG_JAPANESE :Japanësch -STR_NETWORK_LANG_KOREAN :Koreanësch -STR_NETWORK_LANG_LITHUANIAN :Lithauësch -STR_NETWORK_LANG_NORWEGIAN :Norwegësch -STR_NETWORK_LANG_POLISH :Polnësch -STR_NETWORK_LANG_PORTUGUESE :Portugiesësch -STR_NETWORK_LANG_ROMANIAN :Rumänësch -STR_NETWORK_LANG_RUSSIAN :Russësch -STR_NETWORK_LANG_SLOVAK :Slovakësch -STR_NETWORK_LANG_SLOVENIAN :Slovenësch -STR_NETWORK_LANG_SPANISH :Spuenësch -STR_NETWORK_LANG_SWEDISH :Schwedësch -STR_NETWORK_LANG_TURKISH :Türkësch -STR_NETWORK_LANG_UKRAINIAN :Ukrainësch -STR_NETWORK_LANG_AFRIKAANS :Afrikanësch -STR_NETWORK_LANG_CROATIAN :Kroatësch -STR_NETWORK_LANG_CATALAN :Katalanësch -STR_NETWORK_LANG_ESTONIAN :Estnësch -STR_NETWORK_LANG_GALICIAN :Galicianësch -STR_NETWORK_LANG_GREEK :Grieschësch -STR_NETWORK_LANG_LATVIAN :Lettësch +STR_NETWORK_LANG_ITALIAN :Italienesch +STR_NETWORK_LANG_JAPANESE :Japanesch +STR_NETWORK_LANG_KOREAN :Koreanesch +STR_NETWORK_LANG_LITHUANIAN :Litauesch +STR_NETWORK_LANG_NORWEGIAN :Norwegesch +STR_NETWORK_LANG_POLISH :Polnesch +STR_NETWORK_LANG_PORTUGUESE :Portugiesesch +STR_NETWORK_LANG_ROMANIAN :Rumänesch +STR_NETWORK_LANG_RUSSIAN :Russesch +STR_NETWORK_LANG_SLOVAK :Slovakesch +STR_NETWORK_LANG_SLOVENIAN :Slovenesch +STR_NETWORK_LANG_SPANISH :Spuenesch +STR_NETWORK_LANG_SWEDISH :Schwedesch +STR_NETWORK_LANG_TURKISH :Türkesch +STR_NETWORK_LANG_UKRAINIAN :Ukrainesch +STR_NETWORK_LANG_AFRIKAANS :Afrikaans +STR_NETWORK_LANG_CROATIAN :Kroatesch +STR_NETWORK_LANG_CATALAN :Katalanesch +STR_NETWORK_LANG_ESTONIAN :Estnesch +STR_NETWORK_LANG_GALICIAN :Gälesch +STR_NETWORK_LANG_GREEK :Griechesch +STR_NETWORK_LANG_LATVIAN :Lettesch ############ End of leave-in-this-order # Network game lobby -STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Multiplayer-Spill Empfang +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Multiplayer-Spill Lobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparéiert fir bäizetrieden: {ORANGE}{STRING} -STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Eng Lëscht vun den Firmen an dësem Spill. Du kanns enger bäitrieden oder eng nei opmaachen. +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Eng Lëscht vun de Firmen an dësem Spill. Du kanns enger bäitrieden oder eng nei opmaachen. STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FIRMENINFO STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Firmennumm: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Grënnung: {WHITE}{NUM} -STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Firmenwäert: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Firmewäert: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Kontostand: {WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Akommes vum leschten Joer: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Akommes vum leschte Joer: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Performance: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Gefierer: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} @@ -1997,9 +2040,9 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spiller STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nei Firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Nei Firma erstellen STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Dem Spill nokucken -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}D'Spill als Zuschauer verfolgen +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Dem Spill als Zuschauer nokucken STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Firma bäitrieden -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Déi Firma mat verwalten +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Des Firma matverwalten # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Connectioun... @@ -2010,19 +2053,19 @@ STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Au STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Waarden... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Kaart eroflueden... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Daten verarbëschten... -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registréiert... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registréierung... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Ruffen d'Spillinfo of.. STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ruffen d'Firmeninfos of... ############ End of leave-in-this-order -STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Spiller firun ierch -STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} souwait gedownload -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} erofgeluden +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Spiller firun dir +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} souwäit erofgelueden +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} erofgelueden STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Verbindung trennen -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ass geschützt. Passwuert anginn -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ass geschützt. Passwuert anginn +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ass geschützt. Passwuert aginn +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ass geschützt. Passwuert aginn # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Spillerlëscht @@ -2030,67 +2073,68 @@ STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Nokucken STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nei Firma # Network client list -STR_NETWORK_CLIENTLIST_KICK :Kick -STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Suen ginn -STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Jidderengem soen -STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Der Firma soen -STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat Meldung +STR_NETWORK_CLIENTLIST_KICK :Kicken +STR_NETWORK_CLIENTLIST_BAN :Bannen +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Sue ginn +STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mat alle schwetzen +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mat der Firma schwetzen +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatmessage STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Spiller STR_NETWORK_SPECTATORS :Zuschauer -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gëff den Betrag un deenst du wëlls ginn +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gëff de Betrag un deens du wëlls ginn +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Zuschauer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Späicher d'Passwuert net STR_COMPANY_PASSWORD_OK :{BLACK}Benotz daat neit Passwuert fir d'Firma -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmen-Passwuert -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard Firmen-Passwuert -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Benotzt dëst Passwuert als Standard fir néi Firmen +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firme-Passwuert +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard Firme-Passwuert +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Benotzt dëst Passwuert als Standard fir nei Firmen # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Bäitrieden -STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bäitrieden an mat där Firma spillen +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bäitrieden an mat deser Firma spillen STR_COMPANY_VIEW_PASSWORD :{BLACK}Passwuert STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Setzt en Passwuert fir nëmmen authoriséiert Benotzer spillen ze loossen STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Setzt d'Firmen-Passwuert # Network chat -STR_NETWORK_CHAT_SEND :{BLACK}Schécken +STR_NETWORK_CHAT_SEND :{BLACK}Ofschécken STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privat] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[All] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_COMPANY :[Team] Zu {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_CLIENT :[Privat] Zu {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Team] Un: {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Privat] Un: {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Text fir Chat aginn # Network messages -STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Keng Netzwierkgeräter font oder compiléiert ouni ENABLE_NETWORK -STR_NETWORK_ERROR_NOSERVER :{WHITE}Konnt kéng Netzwierkspiller fannen -STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Den Server huet net op d'Ufro geäntwert -STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Konnt sech wéinst NewGRF ënnerscheed net connectéieren +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Keng Netzwierkgeräter fonnt oder compiléiert ouni ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}Konnt keng Netzwierkspiller fannen +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}De Server huet net op d'Ufro geäntwert +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Konnt sech wéinst ënnerscheedlechen NewGRF net connectéieren STR_NETWORK_ERROR_DESYNC :{WHITE}Netzwierksyncronisatiouns-Fehler STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Netzwierkverbindung verluer -STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Konnt den Spillstand net lueden -STR_NETWORK_ERROR_SERVER_START :{WHITE}Konnt den Server net starten -STR_NETWORK_ERROR_CLIENT_START :{WHITE}Konnt sëch net connectéieren +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Konnt de Spillstand net lueden +STR_NETWORK_ERROR_SERVER_START :{WHITE}Konnt de Server net starten +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Konnt sech net connectéieren STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connectioun #{NUM} ofgelaaf STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}En Protokolfehler ass entstaanen an d'Connectioun ass getrennt ginn -STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}D'Versioun vum Client stëmmt net mat där vum Server iwerëneen +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}D'Versioun vum Client stëmmt net mat däer vum Server iwwereneen STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Falscht Passwuert -STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Den Server ass voll +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}De Server ass voll STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du bass vun dësem Server gebannt STR_NETWORK_ERROR_KICKED :{WHITE}Du goufs aus dem Spill geheit STR_NETWORK_ERROR_CHEATER :{WHITE}Cheaten ass op dësem Server net erlaabt -STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du hues zevill Befehler un den Server geschéckt -STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du hues ze laang gebraucht fir en Passwuert anzeginn -STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Dain Computer brauch ze laang fir bäizetrieden +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du hues zevill Befehler un de Server geschéckt +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du hues ze laang gebraucht fir e Passwuert anzeginn +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Däin Computer brauch ze laang fir bäizetrieden STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Du hues ze laang gebraucht fir d'Kaart rofzelueden STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Du hues ze laang gebraucht fir dem Server bäizetrieden @@ -2130,40 +2174,40 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spill nach ëmm STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spill nach pauséiert ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spill geet weider ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Unzuel Spiller -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Klienten verbannen +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Spiller verbannen STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :Spill-Script ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :verloossen -STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ass dem Spill baigetrueden +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ass dem Spill bäigetrueden STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ass an d'Spill komm (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} ass bei d'Firma #{2:NUM} gaangen STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ass als Zuschauer do STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} huet eng nei Firma gegrënnt (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} huet d'Spill verloos ({2:STRING}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} huet d'Spill verlooss ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} huet säin Numm op {STRING} gewiesselt STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} huet ärer Firma {2:CURRENCY_LONG} ginn STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du hues dem {1:STRING} {2:CURRENCY_LONG} ginn -STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Den Server huet d'Sessioun zougemaach -STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Den Server gëtt nei gestart...{}Weg. waarden... +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}De Server huet d'Sessioun zougemaach +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De Server gëtt nei gestart...{}W.e.g. waarden... # Content downloading window -STR_CONTENT_TITLE :{WHITE}Downloaden Inhalt +STR_CONTENT_TITLE :{WHITE}Lueden Inhalt erof STR_CONTENT_TYPE_CAPTION :{BLACK}Typ STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Typ vum Inhalt STR_CONTENT_NAME_CAPTION :{BLACK}Numm STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Numm vum Inhalt STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klick op eng Linn fir Detailer{}Klick Checkbox fir et downzeloaden -STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Wiel alles -STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Wiell all Inhalt fir den Download -STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Wiel Upgrades -STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Markéier all Inhalt,den en Upgrade fir existéirenden Inhalt ass, als Download +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Alles uwielen +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Wiel all Inhalt fir den Download +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Upgrades uwielen +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Markéier all Inhalt,den en Upgrade fir existéirenden Inhalt ass als Download STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Alles ofwielen STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Alles markéiren fir net downzeloaden STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Extern Websäiten durchsichen STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Sich Inhalter déi net op der OpenTTD Downloadwebsäit stin op aneren Websäiten STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du verléiss OpenTTD! -STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Terms and conditions fir Inhalter vun externen Websäiten ze downloaden goufen geännert.{}Du muss op där Säit nokucken wéi een den Inhalt installéiert.{}Wellsde weiderman? +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Terms and conditions fir Inhalter vun externe Websäiten ze downloade goufe geännert.{}Du muss op där Säit nokucken wéi een den Inhalt installéiert.{}Wellsde weiderman? STR_CONTENT_FILTER_TITLE :{BLACK}Tag-/Nummfilter: STR_CONTENT_OPEN_URL :{BLACK}Websäit besichen STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besicht d'Websäit vun dësem Inhalt @@ -2171,23 +2215,23 @@ STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start den Download vum ausgewielten Inhalt STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Total Downloadgréisst: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFO -STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Dëst gouf net fir den Download gewielt -STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Du hues dëst fir den Download gewielt -STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Dës Ofhängegkeet gouf ausgewielt fir den download -STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Du hues dëst schon -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Dësen Inhalt ass net bekannt an kann net an OpenTTD downgeload gin -STR_CONTENT_DETAIL_UPDATE :{SILVER}Dëst ass en Austausch fir existent {STRING} +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Dest gouf net fir den Download gewielt +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Du hues dest fir den Download gewielt +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Des Ofhängegkeet gouf ausgewielt fir den Download +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Du hues dest schon +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Dësen Inhalt ass net bekannt an kann net an OpenTTD downgeload ginn +STR_CONTENT_DETAIL_UPDATE :{SILVER}Dest ass en Austausch fir en existent/en {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Numm: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versioun: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beschreiwung: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Typ: {WHITE}{STRING} -STR_CONTENT_DETAIL_FILESIZE :{SILVER}Download Gréisst: {WHITE}{BYTES} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Downloadgréisst: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Ausgewielt wéinst: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Ofhängegkeeten: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD ass ouni "zlib" support compiléiert... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... Inhaltdownload ass net méiglech! +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD ass ouni "zlib" Support compiléiert... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... Inhalt eroflueden ass net méiglech! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Standard Grafiken @@ -2195,28 +2239,28 @@ STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :KI STR_CONTENT_TYPE_AI_LIBRARY :KI Librairie STR_CONTENT_TYPE_SCENARIO :Szenario -STR_CONTENT_TYPE_HEIGHTMAP :Héischtenkaart +STR_CONTENT_TYPE_HEIGHTMAP :Héischtekaart STR_CONTENT_TYPE_BASE_SOUNDS :Basis Sounds STR_CONTENT_TYPE_BASE_MUSIC :Basis Musik STR_CONTENT_TYPE_GAME_SCRIPT :Spill-Script STR_CONTENT_TYPE_GS_LIBRARY :GS Librairie # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Downloaden Inhalt... +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Lueden Inhalt erof... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Froen Daten un... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Grad um downloaden {STRING} ({NUM} vun {NUM}) +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Lueden grad {STRING} erof. ({NUM} vun {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Download fäerdeg STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} vun {BYTES} downgeload ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Konnt net op den content server konnektéiren... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Downloading mësslong... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... Konnektioun verluer +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Konnt net op de Contentserver konnektéiren... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Download mësslong... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... Connectioun verluer STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... Datei net beschreiwbar -STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Konnt den downgeload net dekompriméiren +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Konnt d'erofgelueden Datei net dekompriméiren STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Fehlend Grafiken -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTDbrauch Grafiken fir ze funktionéiren, mee et konnten keng fond ginn. Wëllsde OpenTTD se downloaden an installéiren loossen ? +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD brauch Grafiken fir ze funktionéiren, mee et konnten keng fonnt ginn. Wëllsde OpenTTD se downloaden an installéiren loossen ? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jo, download d'Grafiken STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nee, verlooss OpenTTD @@ -2226,10 +2270,10 @@ STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Wiesselt STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Beem. Ctrl+Klick fir festzesetzen STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Haiser. Ctrl+Klick fir festzesetzen STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Industrien. Ctrl+Klick fir festzesetzen -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Firmengebaier. Ctrl+Klick fir festzesetzen +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Firmegebaier. Ctrl+Klick fir festzesetzen STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Brécken. Ctrl+Klick fir festzesetzen -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Gebaier wei d'Liichttiirm oder Transmitter. Ctrl+Klick fir festzesetzen -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Iwerleitung. Ctrl+Klick fir festzesetzen +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Gebaier wéi d'Liichttierm oder Antennen. Ctrl+Klick fir festzesetzen +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Catenaire. Ctrl+Klick fir festzesetzen STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Luedungsindikatoren. Ctrl+Klick fir festzesetzen STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Setzt d'Objeten op onsichtbar amplaz transparent @@ -2237,7 +2281,7 @@ STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Setzt d' STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Flow Legend STR_LINKGRAPH_LEGEND_ALL :{BLACK}All STR_LINKGRAPH_LEGEND_NONE :{BLACK}Keng -STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Wiel d'Firmen aus déi ugewisen ginn +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Wiel d'Firmen aus déi ugewise ginn # Linkgraph legend window and linkgraph legend in smallmap STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}onbenotzt @@ -2245,90 +2289,90 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}iwwerlaascht # Base for station construction window(s) -STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Reechwäit +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Reechwäit markéieren STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Aus STR_STATION_BUILD_COVERAGE_ON :{BLACK}Un STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Weis d'Reechwäit vun dem Gebäi net un STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Weis d'Reechwäit vun dem Gebäi un -STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Acceptéiert: {GOLD}{CARGO_LIST} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Liwwerung: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Akzeptéiert: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Liwwert: {GOLD}{CARGO_LIST} # Join station window -STR_JOIN_STATION_CAPTION :{WHITE}D'Gare verbannen -STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Eng separéiert Gare bauen +STR_JOIN_STATION_CAPTION :{WHITE}Statioun verbannen +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Eng separat Statioun bauen STR_JOIN_WAYPOINT_CAPTION :{WHITE}Weepunkt verbannen -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Separaten Weepunkt bauen +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Separate Weepunkt bauen # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Schinnenbau -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Élektrëschen Zuchbau +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Schinnebau +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektresche Schinnebau STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorailbau -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnéitbahnbau +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnéitbunnbau -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Schinnen bauen. Ctrl wiesselt tëscht bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Schinnen am automateschen Modus bauen. Ctrl wiesselt tëscht bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Zuchdepot bauen (fir Zich ze kafen an ze flécken). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Schinne bauen. Ctrl wiesselt tëscht bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Schinnen am automatesche Modus bauen. Ctrl wiesselt tëscht bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Zuchschapp bauen (fir Zich ze kafen an ze flécken). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Konvertéiert d'Schinnen zum Weepunkt. Ctrl aktivéiert Weepunkter ze verbannen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Gare bauen. Ctrl aktivéiert fir d'Statioun unzebauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zuchsignaler bauen. Ctrl wiesselt tëscht Diks/Luuten{}Zéien baut Signaler laanscht eng Zuchstreck. Ctrl baut Signaler bis déi nächst Weich{}Ctrl+Klick mécht Selectiounsfënster op.Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zuchsignaler bauen. Ctrl wiesselt tëscht Diks/Luuten{}Zéien baut Signaler laanscht eng Zuchstreck. Ctrl baut Signaler bis déi nächst Weich{}Ctrl+Klick mécht Auswielfënster op.Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Zuchbréck bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Zuchtunnel bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Wiesselt tëscht bauen/ofrappen vun Schinnen, Signaler an Statiounen. Ctrl unhalen rappt och Schinnen vun Weepunkter an Statiounen of -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konvertéiert den Typ vun Schinnen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Wiesselt tëscht bauen/ofrappe vu Schinnen, Signaler a Statiounen. Ctrl unhale rappt och Schinne vu Weepunkter a Statiounen of +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konvertéiert/upgrade den Typ vu Schinnen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_RAIL_NAME_RAILROAD :Schinnen -STR_RAIL_NAME_ELRAIL :Elektrësch Schinnen +STR_RAIL_NAME_ELRAIL :Elektresch Schinnen STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Magnéitbunn # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Zuchdepot Richtung -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Richtung vum Zuchdepot +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Richtung vum Zuchschapp +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Richtung vum Zuchschapp # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Weepunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wielt den Weepunktyp +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wielt de Weepunktyp # Rail station construction window -STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Gare Selectioun +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Gare Auswiel STR_STATION_BUILD_ORIENTATION :{BLACK}Richtung -STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Wielt Gare Richtung -STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Unzuel vun Schinnen -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wielt d'Unzuel vun den Gleisen fir d'Gare -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Lengt -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wielt d'Lengt vun der Gare +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Richtung vun der Gare +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Unzuel vu Schinnen +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wielt d'Unzuel vun de Gleisen fir d'Gare +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Plattformlängt +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wielt d'Längt vun der Gare STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}D'Statioun per drag & drop bauen -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wielt eng Statiounsklass fir ze weisen -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wielt den Statiounstyp fir ze bauen +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wielt eng Statiounsklass déi ugewise gëtt +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wielt den Typ vu Statioun dee gebaut gëtt STR_STATION_CLASS_DFLT :Standard Statioun STR_STATION_CLASS_WAYP :Weepunkten # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalauswiel -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (Diks){} Dëst ass em Basis-Signal, wat nëmmen engem Zuch zur selwechter Zait erlaabt an engem Block ze sinn -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Agangs-Signal (Diks){}Gréng soulaang een oder méi gréng Ausgangs-Signaler op nächsten Streckenabschnitt sin. Anescht ass et roud. +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (Diks){} Dest ass e Basis-Signal, wat nëmmen engem Zuch zur selwechter Zait erlaabt an engem Block ze sinn +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Agangs-Signal (Diks){}Gréng soulaang een oder méi gréng Ausgangs-Signaler op dem nächsten Streckenabschnitt sinn. Anescht ass et rout. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Ausgangs-Signal (Diks){}Verhält sech wéi en Block-Signal mee gëtt gebraucht fir déi korrekt Faarf ob Agangs- an Combo-Pre-Signaler ze setzen -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo-Signal (Diks){}En Combo-Signal agéiert wéi en Agangs- an wéi en Ausgangs-Signal. Dëst erlaabt engem vill "Beem" vun Pre-Signaler ze bauen -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Wee-Signal (Diks){}E Wee-Signal erlaabt méi wéi engem Zuch an en Block ze fueren zur selweschter Zäit, wann den Zuch en Wee op en sécheren Stop-Punkt kann reservéiren. Standard Wee-Signaler kënne vun béiden Säiten duerchfuer ginn -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einbahn-Wee-Signal (Diks){}E Wee-Signal erlaabt méi wéi engem Zuch an en Block ze fueren zur selweschter Zäit, wann den Zuch en Wee op en sécheren Stop-Punkt kann reservéiren. Einbahn-Wee-Signaler kënnen net den falschen Wee duerchfuer ginn -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (electric){}Dëst ass en Basis-Signal, mat dem een een Zuch an engem selwechten Block zur selwechter Zäit erlaabt -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Agangs-Signal (electric){}Gréng soulaang een oder méi gréng Ausgangssignaler vum nächsten Streckenabschnitt kommen. Anescht ass et roud -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Ausgangs-Signal (electric){}Verhält sech wéi en Block-Signal mee gëtt gebraucht fir déi korrekt Faarf vun den Agangs- an Combo Pre-Signaler ze setzen -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo-Signal (electric){}D'Combo-Signal ass einfach en An- an Ausgangssignal. Dëst erlaabt grouss "Beem" Presignaler ze bauen -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Wee-Signal (electric){}E Wee-Signal erlaabt méi wéi engem Zuch an en Block eranzefueren, wann den Zuch en Wee op en Stop-Punkt reservéiren kann. Standard Wee-Signaler kënnen vun béiden Säiten duerchfuer ginn -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einbahn-Wee-Signal (electric){}En Einbahn-Signal erlaabt méi wéi een Zuch zur selwechter Zäit an engem Block ze sin, wann den Zuch en Wee op en sécheren Stop-Punkt reservéiren kann. Einbahn-Signaler kënnen net vun der falscher Säit duerchfuer ginn -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal konvertéiren{}Wann gewielt, gëtt en geklickten Signal an dat gewielten Signal konvertéiert, Ctrl+Klick wiesselt tëscht den Varianten. Shift weist ongeféier Konvertéirungskäschten -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Signaldensitéit -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Setzt Signaldensitéit rof -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Setzt Signaldensitéit rop +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo-Signal (Diks){}E Combo-Signal agéiert wéi en Agangs- a wéi en Ausgangs-Signal. Dest erlaabt engem vill "Beem" vu Pre-Signaler ze bauen +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Wee-Signal (Diks){}E Wee-Signal erlaabt méi wéi engem Zuch an en Block ze fueren zur selweschter Zäit, wann den Zuch en Wee op en sécheren Stop-Punkt kann reservéiren. Standard Wee-Signaler kënne vu béide Säiten duerchfuer ginn +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einbahn-Wee-Signal (Diks){}E Wee-Signal erlaabt méi wéi engem Zuch an en Block ze fueren zur selweschter Zäit, wann den Zuch en Wee op en sécheren Stop-Punkt kann reservéiren. Einbahn-Wee-Signaler kënnen net de falsche Wee duerchfuer ginn +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (Elektresch){}Dest ass e Basis-Signal, mat dem een en Zuch an engem selwechten Block zur selwechter Zäit erlaabt +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Agangs-Signal (Elektresch){}Gréng soulaang een oder méi gréng Ausgangssignaler vum nächsten Streckenabschnitt kommen. Anescht ass et rout +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Ausgangs-Signal (Elektresch){}Verhält sech wéi e Block-Signal mee gëtt gebraucht fir déi korrekt Faarf vun den Agangs- an Combo Pre-Signaler ze setzen +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo-Signal (Elektresch){}D'Combo-Signal ass einfach en An- an Ausgangssignal. Dëst erlaabt grouss "Beem" Presignaler ze bauen +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Wee-Signal (Elektresch){}E Wee-Signal erlaabt méi wéi engem Zuch an e Block eranzefueren, wann den Zuch e Wee op en Stop-Punkt reservéiren kann. Standard Wee-Signaler kënne vu béide Säiten duerchfuer ginn +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einbahn-Wee-Signal (Elektresch){}En Einbahn-Signal erlaabt méi wéi een Zuch zur selwechter Zäit an engem Block ze sin, wann den Zuch en Wee op en sécheren Stop-Punkt reservéiren kann. Einbahn-Signaler kënnen net vun der falscher Säit duerchfuer ginn +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal konvertéiren{}Wann gewielt, gëtt en geklickten Signal an dat gewielten Signal konvertéiert, Ctrl+Klick wiesselt tëscht de Varianten. Shift weist ongeféier Konvertéirungskäschten +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dicht vu Signaler beim Zéien +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Setzt Signaldicht erof +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Setzt Signaldicht erop # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Wiel d'Schinnenbréck -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Wielt d'Stroossenbréck +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Zuchbréck auswielen +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Stroossebréck auswielen STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Bréckenauswiel - Wiel deng Bréck aus STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} @@ -2336,82 +2380,82 @@ STR_BRIDGE_NAME_SUSPENSION_STEEL :Stolen Hängebr STR_BRIDGE_NAME_GIRDER_STEEL :Stoldréier Bréck STR_BRIDGE_NAME_CANTILEVER_STEEL :Fräidroend Stolbréck STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Betons Hängebréck -STR_BRIDGE_NAME_WOODEN :Holzen Bréck +STR_BRIDGE_NAME_WOODEN :Holze Bréck STR_BRIDGE_NAME_CONCRETE :Betons Bréck STR_BRIDGE_NAME_TUBULAR_STEEL :Rouerstol Bréck STR_BRIDGE_TUBULAR_SILICON :Rouer, Silikon # Road construction toolbar -STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Stroossenbau +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Stroossebau STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramkonstruktioun -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Baut Stroossen.Ctrl+Klick wiësselt tëscht Stroossen bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tramschinnen bauen. Ctrl+Klick wiësselt tëscht Tramschinnen bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Baut Stroossen.Ctrl+Klick wiësselt tëscht Stroosse bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tramschinne bauen. Ctrl+Klick wiësselt tëscht Tramschinne bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}D'Strooss mat der Bau-Automatik bauen. Ctrl wiësselt tëscht Stroossen bauen/ofrappen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tramschinnen mam "Autotram" Modus bauen. Ctrl wiesselt tëscht Tramschinnen bauen/ofrappen. Shift wiesselt tëschtbauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tramschinne mam "Autotram" Modus bauen. Ctrl wiesselt tëscht Tramschinne bauen/ofrappen. Shift wiesselt tëschtbauen/ongeféier Käschten uweisen STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Baut Stroossendepot (fir Gefierer ze kafen an ze flécken). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tramdepot bauen(fir ze kafen an fir d'Revisioun). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Baut Busarrêt. Ctrl aktivéiert ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Passagéier-Tramstatioun bauen. Ctrl aktivéirt ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Baut Camionsgare. Ctrl aktivéiert ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Wueren-Tramstatioun bauen. Ctrl aktivéiert ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Strooss an eng Richtung aktivéieren/déaktivéieren -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Baut Stroossenbréck. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tramschapp bauen (fir Gefierer ze kafen an d'Revisioun). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Baut Busarrêt. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Tramarrêt bauen. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Baut Camionsgare. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Wueren-Tramstatioun bauen. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Einbahnstroossen aktivéieren/déaktivéieren +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Baut Stroossebréck. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Tramsbréck bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Baut Stroosentunnel. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Baut Stroossentunnel. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Tramtunnel bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Wieselt bauen/ofrappen vun Stroossenkonstruktiounen -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Wiesselt bauen/ofrappen vum Trambau +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Wiesselt bauen/ofrappen vu Stroossekonstruktiounen +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Wiesselt tëscht bauen/ofrappen beim Trambau # Road depot construction window -STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Stroossendepot Richtung -STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Wielt Stroossendepot Richtung -STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Tramdepot Richtung -STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tramdepot Richtung wielen +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Ausriichtung vum Stroossendepot +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Wielt d'Stroossendepot Ausriichtung +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Ausriichtung vum Tramschapp +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tramschapp Ausriichtung wielen # Road vehicle station construction window -STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Busarrêt Richtung -STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Wielt Busarrêtsrichtung -STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Camionsgare Richtung -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Wielt Camionsgare Richtung -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passagéier-Tramstatioun Richtung -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Passagéier-Tramstatioun Richtung wielen -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Wueren-Tramstatioun Richtung -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Wueren-Tramstatioun Richtung wielen +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Ausriichtung vum Busarrêt +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Wielt Busarrêtsausriichtung +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ausriichtung vun der Camionsgare +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Camionsgareausriichtung +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Ausriichtung vun dem Passagéier-Tramsarrêt +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Passagéier-Tramsarrêt Ausriichtung wielen +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Ausriichtung vun der Wueren-Tramstatioun +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Wueren-Tramstatioun Ausriichtung wielen # Waterways toolbar (last two for SE only) -STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Waasserstroosen bauen -STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Waasserstroosen +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Waasserstroosse bauen +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Waasserstroossen STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Kanäl bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Schlass setzen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Schëffdepot bauen (fir Schëffer ze bauen an ze warten). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Schëffdock bauen. Ctrl aktivéiert ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Schleise bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Schëffsschapp bauen (fir Schëffer ze bauen an ze reparéiren). Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Schëffsquai bauen. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Plazéiert eng Boje, déi als Weepunkt kann benotzt ginn. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Aquadukt bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Waasser definéieren.{}Mécht en Kanal. Mat CTRL gedréckt halen um Mieresspigel klicken, iwerflut d'Géigent +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Waasserareal definéieren.{}Mécht en Kanal. Mat Ctrl gedréckt halen um Mieresspigel klicken, iwwerflut d'Géigent STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Plazéier Flëss # Ship depot construction window -STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Schëffdepot Richtung -STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Schëffdepot Richtung +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Schëffsschapp Ausriichtung +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Wielt d'Ausriichtung vum Schëffsschapp # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Hafen # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Fluchhäfen -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Fluchhafen bauen. Ctrl aktivéiert ubauen vun Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Fluchhafe bauen. Ctrl aktivéiert ubaue vu Statiounen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen # Airport construction window -STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Fluchhafen Selectioun +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Fluchhafen Auswiel STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Wielt Gréisst/Typ vum Fluchhafen -STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Fluchhafenklass +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Fluchhafeklass STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Layout {NUM} STR_AIRPORT_SMALL :Kleng STR_AIRPORT_CITY :City -STR_AIRPORT_METRO :Metropolitär Fluchhafen -STR_AIRPORT_INTERNATIONAL :Internationalen Fluchhafen +STR_AIRPORT_METRO :Metropole Fluchhafen +STR_AIRPORT_INTERNATIONAL :Internationale Fluchhafen STR_AIRPORT_COMMUTER :Pendler STR_AIRPORT_INTERCONTINENTAL :Interkontinental STR_AIRPORT_HELIPORT :Heliport @@ -2420,8 +2464,8 @@ STR_AIRPORT_HELISTATION :Helistatioun STR_AIRPORT_CLASS_SMALL :Kleng Fluchhäfen STR_AIRPORT_CLASS_LARGE :Grouss Fluchhäfen -STR_AIRPORT_CLASS_HUB :Fluchhafen Verdeeler -STR_AIRPORT_CLASS_HELIPORTS :Helicopter Fluchhafen +STR_AIRPORT_CLASS_HUB :Fluchhafeverdeeler +STR_AIRPORT_CLASS_HELIPORTS :Helikopter Fluchhafen STR_STATION_BUILD_NOISE :{BLACK}Kaméidi: {GOLD}{COMMA} @@ -2430,21 +2474,21 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}Landscha STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}En Eck vum Land erofsetzen. Zéien setzt den éischten ugewielten Eck erof an planéiert d'ugewielten Land op déi nei Eckhéicht. Ctrl wielt d'Land diagonal. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}En Eck vum Land unhiewen. Zéien wielt den éischten Eck an planéiert d'ugewielten Land ob déi nei Eckhéicht. Ctrl wielt d'Land diagonal. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Land planéiren. Ctrl wielt d'Land diagonal aus. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaaf Land fir zukünftëg Benotzung. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaf Land fir zukünftëg Benotzung. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen # Object construction window -STR_OBJECT_BUILD_CAPTION :{WHITE}Selektioun vum Objekt -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Wiel d'Objekt dat gebaut gëtt. Shift wiesselt tescht bauen / ongeféier Käschten uweisen -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Wiel d'Klass vun dem Objet den sollt gebaut ginn -STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview vum Objekt +STR_OBJECT_BUILD_CAPTION :{WHITE}Objetsauswiel +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Wiel den Objet dee gebaut gëtt. Shift wiesselt tescht bauen / ongeféier Käschten uweisen +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Wiel d'Klass vun dem Objet dee sollt gebaut ginn +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview vum Objet STR_OBJECT_BUILD_SIZE :{BLACK}Gréisst: {GOLD}{NUM} x {NUM} Felder STR_OBJECT_CLASS_LTHS :Liichttierm -STR_OBJECT_CLASS_TRNS :Transmitter +STR_OBJECT_CLASS_TRNS :Antennen # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Beem -STR_PLANT_TREE_TOOLTIP :{BLACK}Wielt den Baamtyp. Wann d'Feld schons en Baam huet, gin méi Beem vun verschiddenen Arten gesat +STR_PLANT_TREE_TOOLTIP :{BLACK}Wielt de Baamtyp. Wann d'Feld schons e Baam huet, ginn méi Beem vu verschiddenen Arten gesat STR_TREES_RANDOM_TYPE :{BLACK}Zoufälleg Beem STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Zoufälleg Beem planzen. Shift wiesselt tëscht bauen an ongeféier Käschten uweisen STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Zoufälleg Beem @@ -2453,15 +2497,15 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Beem zou # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landerstellung STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Fielsen iwwert d'Landschaft setzen -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Zone fir Wüst défineieren.{}CTRL unhaalen fir se ze leschen +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Zone fir Wüst défineieren.{}CTRL unhalen fir se ze läschen STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Vergréisser d'Zone fir d'Land unzehiewen/erofzesetzen STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Verklenger d'Zone fir d'Land unzehiewen/erofzesetzen STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generéier en Zoufallsland -STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Neien Szenario man -STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Setz d'Landschaft zréck +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Neie Szenario erstellen +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Setz d'Landschaft zeréck STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Huel all Grondstécker vun der Firma ewech -STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Setz d'Landschaft zréck +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Setz d'Landschaft zeréck STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Bass du sécher dass du all Grondstécker vun der Firma ewechhuelen wëlls? # Town generation window (SE) @@ -2488,8 +2532,8 @@ STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Wiel d'S STR_FOUND_TOWN_CITY :{BLACK}Stad STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Stied wuessen méi schnell wéi Dierfer{}Ofhängeg vun den Astellungen, sinn se méi grouss am Ufank -STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Stad Stroossenlayout -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Stroosenlayout fir dës Stad wielen +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Stroosselayout vun der Stad: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Stroosselayout fir des Stad wielen STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Besser Stroossen STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 Gitter @@ -2497,12 +2541,12 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 Gitt STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Zoufall # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Nei Industrie finanzéiert +STR_FUND_INDUSTRY_CAPTION :{WHITE}Nei Industrie finanzéieren STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Wielt déi gewënschten Industrie op der Lëscht aus STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Vill zoufälleg Industrien STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}D'Kaart mat villen zoufällegen Industrien fëllen STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Käschten: {YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Förder +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Förderen STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bauen STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Grënnen @@ -2511,46 +2555,47 @@ STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industri STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrieketten fir {STRING} Wueren STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Produzéirent Industrien STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Akzeptéirend Industrien -STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Heiser +STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Haiser STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klick op d'Industrie fir d'Liwweranten an Verbraucher ze gesinn STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klick op d'Wueren fir d'Liwweranten an Verbraucher ze gesinn -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Weis "Ketten" +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Wuereketten uweisen STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Weis Industrien un déi Wueren liwweren an akzeptéiren STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link op déi kleng Kaart -STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selektéiert déi ugewisen Industrien och op der klenger Kaart +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Wiel déi ugewisen Industrien och op der klenger Kaart aus STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Gidder wielen STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Wiel d'Gidder déis du wëlls uweisen -STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Industrie wielen -STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Wiel d'Industrie déis du wëlls uweisen +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Industrie auswielen +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Wiel d'Industrie aus déis du wëlls uweisen # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Land Informatiounen -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Käschten fir ze raumen: {LTBLUE}N/A -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Käschten fir ze raumen: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Käschte fir ze raumen: {LTBLUE}Keng +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Käschte fir ze raumen: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Akommes wann ofgerappt: {LTBLUE}{CURRENCY_LONG} -STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A +STR_LAND_AREA_INFORMATION_OWNER_N_A :Keen STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Besëtzer: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Stroossenbesëtzer: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trambunnbesëtzer: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Schinnenbesëtzer: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokal Autoritéit: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Stroossebesëtzer: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramschinnebesëtzer: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Schinnebesëtzer: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemeng: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Keng STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Gebaut: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Statiounsklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Statiounstyp: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Fluchhafenklass: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Fluchhafeklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Fluchhafennumm: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Fluchhafenfeldnumm: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Fluchhafefeldnumm: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akzeptéiert Luedung: {LTBLUE} +STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akzeptéiert Wuer: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Schinnen Geschw.-Limit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Schinne-Geschw.-Limit: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Stroosse-Geschw.-Limit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Fielsen STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Knubbelegt Land -STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Blankt Land +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Eidelt Land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras STR_LAI_CLEAR_DESCRIPTION_FIELDS :Felder STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Schnéibedeckt Land @@ -2559,39 +2604,39 @@ STR_LAI_CLEAR_DESCRIPTION_DESERT :Wüst STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} Schinn STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} Schinn mat Blocksignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} Schinn mat Presignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} Schinn mat End-Signaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} Schinn mat Ausgangs-Signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} Schinn mat Kombo-Signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} Schinn mat Weesignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} Schinn mat Einbahnsignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} Schinn mat Block- an Presignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} Schinn mat Block- an Endsignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} Schinn mat Block- an Kombosignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} Schinn mat Block- an Weesignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} Schinn mat Block- an Einbahnsignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} Schinn mat Pre- an Endsignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} Schinn mat Pre- an Kombosignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} Schinn mat Pre- an Weesignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} Schinn mat Block- an Ausgangssignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} Schinn mat Block- a Kombosignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} Schinn mat Block- a Weesignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} Schinn mat Block- a Einbahnsignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} Schinn mat Pre- an Ausgangssignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} Schinn mat Pre- a Kombosignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} Schinn mat Pre- a Weesignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} Schinn mat Pre- an Einbahnweesignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} Schinn mat End- an Kombosignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} Schinn mat End- an Weesignaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} Schinn mat End an Einbahnweesignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} Schinn mat Ausgangs- a Kombosignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} Schinn mat Ausgangs- a Weesignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} Schinn mat Ausgang- an Einbahnweesignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} Schinn mat Kombo- an Weesignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} Schinn mat Kombo- an Einbahnweesignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} Schinn mat Wee- and Einbahnweesignaler -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} Zuchdepot +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} Zuchschapp STR_LAI_ROAD_DESCRIPTION_ROAD :Strooss STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Strooss mat Luuchten STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Strooss mat Beem STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Stroossendepot -STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Zuch/Strooss Barrière +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Zuche/Stroosse-Barrière STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tram # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (gëtt gebaut) STR_LAI_TREE_NAME_TREES :Beem -STR_LAI_TREE_NAME_RAINFOREST :Regenwald +STR_LAI_TREE_NAME_RAINFOREST :Reebësch STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktus STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Gare @@ -2605,10 +2650,10 @@ STR_LAI_STATION_DESCRIPTION_WAYPOINT :Weepunkt STR_LAI_WATER_DESCRIPTION_WATER :Waasser STR_LAI_WATER_DESCRIPTION_CANAL :Kanal -STR_LAI_WATER_DESCRIPTION_LOCK :Schlass +STR_LAI_WATER_DESCRIPTION_LOCK :Schleis STR_LAI_WATER_DESCRIPTION_RIVER :Floss STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Küst oder Flossufer -STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Schëffdepot +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Schëffsschapp # Industries come directly from their industry names @@ -2617,7 +2662,7 @@ STR_LAI_TUNNEL_DESCRIPTION_ROAD :Stroossentunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stolen Zuchhängebréck STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stoldréier Zuchbréck -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stolen fräidroend Zuchbréck +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stole fräidroend Zuchbréck STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Stolbeton Zuchhängebréck STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Holzen Zuchbréck STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betons Zuchbréck @@ -2627,13 +2672,13 @@ STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Stolen Hängebr STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Stoldréier Bréck STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Fräidroend Stolbréck STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Stolbetons Hängebréck -STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Holzen Bréck +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Holze Bréck STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betons Bréck STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Rouerstol Brèck STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aquadukt -STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sender +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Antenne STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Liichttuerm STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Firmen Haaptgebai STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenbesëtz @@ -2642,47 +2687,47 @@ 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-2013 D'OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 D'OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spill lueden STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Szenario späicheren STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Szenario lueden -STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Lued Héichtenkaart +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Héichtekaart lueden STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Héichtenkaart späichern -STR_SAVELOAD_HOME_BUTTON :{BLACK}Klick hei fir op d'Standard Späicher-/Luedeverzeeschnis ze goen +STR_SAVELOAD_HOME_BUTTON :{BLACK}Klick hei fir op d'Standard Späicher-/Luedverzeeschnis ze goen STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} fräi -STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lëscht vun den Laafwierker, Dossieren an Späicherstänn -STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Momentan gewielten Numm fir den Spillstand -STR_SAVELOAD_DELETE_BUTTON :{BLACK}Leschen -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Lescht den momentan gewielten Spillstand +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lëscht vun de Lafwierker, Dossieren a Späicherstänn +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Momentan gewielten Numm fir de Spillstand +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Läschen +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Läscht de momentan gewielte Spillstand STR_SAVELOAD_SAVE_BUTTON :{BLACK}Späicheren STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Späichert dei aktuell Partie ënnert dem gewielten Numm STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lueden STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lued d'ugewielten Spill -STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spill Detailer +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Ugewielten Héichtekaart lueden +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detailer vum Spill STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keng Informatioun do STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_OSKTITLE :{BLACK}Gëff en Numm an fir den Spillstand +STR_SAVELOAD_OSKTITLE :{BLACK}Gëff dem Spillstand en Numm # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Welt Generatioun -STR_MAPGEN_MAPSIZE :{BLACK}Kaartgréisst: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Wiel d'Gréisst vun der Kaart an Felder. D'Unzuel vun benotzbaren Felder wäert e bëssen méi kleng sinn +STR_MAPGEN_MAPSIZE :{BLACK}Kaartegréisst: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Wiel d'Gréisst vun der Kaart a Felder. D'Unzuel vu benotzbare Felder wäert e bësse méi kleng sinn STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Unz. Dierfer: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Unz. Industrien: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximal Kaartenhéicht: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Setzt d'Maximalhéicht vu Bierger op der Kaart em 1 erop +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Setzt d'Maximalhéicht vu Bierger op der Kaart em 1 erof STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Weis d'Schnéilinnhéicht -STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweg Schnéilinnhéicht rop -STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweg Schnéilinnhéicht rof -STR_MAPGEN_RANDOM_SEED :{BLACK}Zoufalls-Zuel: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klick fir eng Zoufalls-Zuel anzegin -STR_MAPGEN_RANDOM :{BLACK}Duerchenen würfeln -STR_MAPGEN_RANDOM_HELP :{BLACK}Zoufallszuel änneren fir den Terrain-Generator +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweg Schnéilinnhéicht erop +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweg Schnéilinnhéicht erof STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Baam Algorithmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain Typ: @@ -2693,7 +2738,7 @@ STR_MAPGEN_VARIETY :{BLACK}Vielfalt STR_MAPGEN_GENERATE :{WHITE}Generéiren # Strings for map borders at game generation -STR_MAPGEN_BORDER_TYPE :{BLACK}Kartenenner: +STR_MAPGEN_BORDER_TYPE :{BLACK}Kaartenenner: STR_MAPGEN_NORTHWEST :{BLACK}Nordwest STR_MAPGEN_NORTHEAST :{BLACK}Nordost STR_MAPGEN_SOUTHEAST :{BLACK}Südost @@ -2702,78 +2747,80 @@ STR_MAPGEN_BORDER_FREEFORM :{BLACK}Fräifor STR_MAPGEN_BORDER_WATER :{BLACK}Waasser STR_MAPGEN_BORDER_RANDOM :{BLACK}Zoufälleg STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Zoufall -STR_MAPGEN_BORDER_MANUAL :{BLACK}Handbuch +STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuell -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Héichtekaart rotatioun: -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Héichtekaart Numm: +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Héichtekaart-Rotatioun: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Héichtekaart-Numm: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Gréisst: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Gëff eng zoufälleg Zuel an +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maximal Kaartenhéicht änneren STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ännert d'Schnéilinnhéicht STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Änner d'Startjoer # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Szenarientyp STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flaachland -STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generéier en flaacht Land +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generéier e flaacht Land STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Zoufallsland -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Héicht vum flaachen Land: -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Héicht vum flaachen land 1 rofsetzen -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Héicht vum flaachen land 1 ropsetzen +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Héicht vum flaache Land: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Héicht vum flaache Land 1 erofsetzen +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Héicht vum flaache Land 1 eropsetzen -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Héicht vum flaachen Land änneren +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Héicht vum flaache Land änneren # Map generation progress STR_GENERATION_WORLD :{WHITE}Generéiren d'Welt... STR_GENERATION_ABORT :{BLACK}Ofbriechen -STR_GENERATION_ABORT_CAPTION :{WHITE}Welt Generatioun ofbriechen +STR_GENERATION_ABORT_CAPTION :{WHITE}Welt-Generatioun ofbriechen STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wëlls du wierklech d'Generatioun ofbriechen? STR_GENERATION_PROGRESS :{WHITE}{NUM}% komplett STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}Welt Generatioun -STR_GENERATION_RIVER_GENERATION :{BLACK}Generéiren vun Flëss +STR_GENERATION_WORLD_GENERATION :{BLACK}Welt-Generatioun +STR_GENERATION_RIVER_GENERATION :{BLACK}Generéiren vu Flëss STR_GENERATION_TREE_GENERATION :{BLACK}Baam Generatioun -STR_GENERATION_OBJECT_GENERATION :{BLACK}Unbewegbar Generatioun -STR_GENERATION_CLEARING_TILES :{BLACK}Generatioun vun knubblegen an stengegen Land +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objets-Generatioun +STR_GENERATION_CLEARING_TILES :{BLACK}Generatioun vu knubbelegem a stengege Land STR_GENERATION_SETTINGUP_GAME :{BLACK}Spill gëtt opgestallt -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Felder-Verdeelung STR_GENERATION_PREPARING_SCRIPT :{BLACK}Lafende Script -STR_GENERATION_PREPARING_GAME :{BLACK}Preparéiren Spill +STR_GENERATION_PREPARING_GAME :{BLACK}Preparéiren d'Spill # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Astellungen STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detailléiert NewGRF Informatioun STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktiv NewGRF Dateien STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktiv NewGRF Dateien -STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Wiel Preset: -STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter string: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Selectéierten Preset lueden +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Preset auswielen: +STR_NEWGRF_FILTER_TITLE :{ORANGE}String filteren: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Gewielte Preset lueden STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Preset späichern STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Aktuell Lëscht als Preset späichern -STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Presetnumm ugin -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Preset leschen -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Selectéierten Preset leschen +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Presetnumm uginn +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Preset läschen +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Gewielte Preset läschen STR_NEWGRF_SETTINGS_ADD :{BLACK}Baifügen -STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Selectionéiert NewGRF an der Config baisetzen +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Ausgewielte NewGRF an d'Config bäisetzen STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Dateien nei scannen -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Update d'Lëscht vun verfügbaren NewGRF Dateien. +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Update d'Lëscht vu verfügbare NewGRF Dateien. STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Wechhhuelen -STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Selectéiert NewGRF aus der Lëscht huelen +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Ausgewielten NewGRF aus der Lëscht huelen STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Rop -STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Setzt d'NewGRF an der Lëscht erop +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Setzt den NewGRF an der Lëscht erop STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Rof STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Setzt d'NewGRF an der Lëscht erof +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Upgrade +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Upgrade NewGRF Dateien fir déis du eng méi nei Versioun installéiert hues STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Eng Lëscht vun NewGRF Dateien déi installéiert sinn. -STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parameters -STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Weis d'Parameter +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parameter setzen +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Parameter uweisen STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Palette wiesselen -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Wiessel Palette vun den selectéierten NewGRF.{} Maach dat wann d'Grafiken vun deser NewGRF rosa am Spill ausgesin +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Wiessel d'Palette vun den ausgewielten NewGRF.{} Maach dat wann d'Grafiken vun deser NewGRF rosa am Spill ausgesinn STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Ännerungen unhuelen -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Fann Inhalt den feelt online -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Check op den Inahlt den feelt online kann fonnt gin +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Fehlenden Inhalt online downloaden +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Check op den Inhalt de fehlt online ka fonnt ginn STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Dateinumm: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} @@ -2786,24 +2833,34 @@ STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paramete STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Keng Info verfügbar STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Datei net fonnt. STR_NEWGRF_SETTINGS_DISABLED :{RED}Ausgeschalt -STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Onkompatibel mat dëser Versioun vun OpenTTD +STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Onkompatibel mat deser Versioun vun OpenTTD + +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Preset späichern +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lëscht vu Presets, wiel een den op den Numm ënnendrënner kopéiert gëtt +STR_SAVE_PRESET_TITLE :{BLACK}Wiel en Numm fir de Preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Grad ausgewielten Numm fir de Preset dee gespäichert soll ginn +STR_SAVE_PRESET_CANCEL :{BLACK}Ofbriechen +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Den Preset net änneren +STR_SAVE_PRESET_SAVE :{BLACK}Späichern +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Späicher de Preset op dee grad ausgewielten Numm # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF Parameter änneren -STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zouman +STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zoumaachen STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reset -STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Setzt all Paramater op den Standard zréck +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Setzt all Paramater op de Standard zréck STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Unzuel Parameter: {ORANGE}{NUM} # NewGRF inspect window -STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspzéier - {STRING} +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspizéier - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspizéier den Objet vun der "parent scope" STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} op {HEX} -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objet STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Schinnentyp STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF Variabel 60+x Parameter (hexadezimal) @@ -2811,14 +2868,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF V # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alignéiren d'Sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nächst Sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwersprang all pseudo/recolour/font Sprite an emsprangen um Ufank +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an sprang un den Ufank no der leschter. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Géi op Sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Géi op d'Sprite. Wann d'Sprite keng normal Sprite ass, géi op déi nächst normal Sprite -STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Fiirescht Sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwersprang all pseudo/recolour/font Sprite an emsprangen um Ufank +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Viregt Sprite +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an sprang zréck op den Ufank no der leschter. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representatioun vun der grad gewielter Sprite. Den Alignement gëtt ignoréiert wann d'Sprite gezun gëtt STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Beweg Sprite, X an Y offsets enneren sech -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Relativ zerécksetzen +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Momentan relativ Offsets zerécksetzen +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} (Relativ) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Wiel Sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wiel en Sprite egalwou um Schierm aus @@ -2827,20 +2887,20 @@ STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Géi op # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warnung: {SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Fehler: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}E fatalen NewGRF Fehler ass geschitt: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} wärt net mat der TTDPatch vun OpenTTD versioun funktionéiren +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} wärt net mat der TTDPatch Versioun déi vun OpenTTD erkannt gouf funktionéiren STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ass fir {STRING} Versioun vun TTD -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ass designed fir mat {STRING} benotzt ze gin -STR_NEWGRF_ERROR_INVALID_PARAMETER :Invaliden Parameter fir {1:STRING}: Parameter {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} muss firun {STRING} gelueden ginn -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} muss no {STRING} gelueden gin +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ass designed fir mat {STRING} benotzt ze ginn +STR_NEWGRF_ERROR_INVALID_PARAMETER :Invalide Parameter fir {1:STRING}: Parameter {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} muss firun {STRING} geluede ginn +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} muss no {STRING} geluede ginn STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} brauch OpenTTD Versioun {STRING} oder méi nei STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF Datei déi designed gouf fir ze iwwersetzen STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Zevill NewGRFen gelueden. -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{1:STRING} als statësch NewGRF lueden mat {STRING} kann Desyncs efirrufen -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Onerwarten Sprite (Sprite {3:NUM}) +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{1:STRING} als statesch NewGRF lueden mat {STRING} kann Desyncs verursaachen +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Onerwaarte Sprite (Sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Onbekannten Aktioun 0 property {4:HEX} (Sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Versicht invalid ID ze benotzen (Sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} huet eng korrupt Sprite. All korrupt Sprites ginn als Fragezeichen (?) duergestallt @@ -2854,13 +2914,13 @@ STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/onbekan # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Opgepasst! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du mëss Ännerungen an engem lafenden Spill. Dëst kann OpenTTD crashen.W.e.g dëst net als Bug melden.{}Bass du sécher? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du mëss Ännerungen an engem lafende Spill. Dest kann OpenTTD crashen.W.e.g dest net als Bug melden.{}Bass du sécher? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kann Datei net bäisetzen: Duplikat GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Passend Datei net fonnt (kompatibel GRF gelued) -STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kann Fichier net dobäisetzen : NewGRF Limite errecht +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kann Fichier net dobäisetzen : NewGRF Limite erreecht -STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(s) gelueden fir fehlend Dateien +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(s) geluede fir fehlend Dateien STR_NEWGRF_DISABLED_WARNING :{WHITE}Fehlend GRF Datei(en) sinn ausgeschalt STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fehlend GRF Datei(en) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Entpausen kann OpenTTD crashen.{} Wellsde wierklech entpausen ? @@ -2873,31 +2933,35 @@ STR_NEWGRF_LIST_MISSING :{RED}Dateien fe # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Verhalen vun der NewGRF '{0:STRING}' kann Desyncs oder Crashen verursachen -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Changéiert Zoustand fir '{1:ENGINE}' wann net an engem Depot -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Changéiert Gefierlengt fir '{1:ENGINE}' wann net an engem Depot +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ännert den Zoustand fir '{1:ENGINE}' wann net an engem Schapp +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ännert d'Gefierlängt fir '{1:ENGINE}' wann net an engem Schapp +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Geännerte Gefierkapazitéit vun '{1:ENGINE}' wann net an engem Schapp oder amgaang emgebaut ze ginn STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zuch'{VEHICLE}' vun der Firma '{COMPANY}' huet eng falsch Längt. Et kënnt wahrscheinlech wéinst den NewGRFs. Spill kann desyncroniséiren oder ofstierzen STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' huet Fehlinformatiounen STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Cargo/refit Informatioun fir '{1:ENGINE}' ass anescht wéi an der Kaflëscht no der Constructioun. Dëst kann en Autoerneirung/-ersetzen Fehler oprufen STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' huet eng Endlosschläif am Production callback verursaacht -STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returned unknown/invalid result {2:HEX} +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} huet en onbekannten/invalid Resultat {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} vun -STR_NEWGRF_INVALID_ENGINE : +STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scannen NewGRFen -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scannen NewGRFen. Dëst kann eng Weil dauern, je no Emfang ... +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scannen NewGRFen. Dest kann eng Weil dauern... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" en} gescanned vun ongeféier {NUM} NewGRF{P "" en} STR_NEWGRF_SCAN_ARCHIVES :Archiver scannen # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Schëlderlëscht - {COMMA} Schëld{P "" er} -STR_SIGN_LIST_MATCH_CASE :{BLACK}Zoutreffenden Fall +STR_SIGN_LIST_MATCH_CASE :{BLACK}Passende Fall STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Zoutreffend Fäll wiesselen wann Schëldernimm mam String-Filter verglach ginn # Sign window @@ -2917,68 +2981,68 @@ STR_TOWN_POPULATION :{BLACK}Weltbev # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Stad) -STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Bewunnerunzuel: {ORANGE}{COMMA}{BLACK} Haiser: {ORANGE}{COMMA} -STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagéier leschten Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} -STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post leschten Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Luedungen gebraucht fir Stadwuestum: +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Awunner: {ORANGE}{COMMA}{BLACK} Haiser: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagéier leschte Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post leschte Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Gidder gebraucht fir Stadwuesstem: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} gebraucht STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} gebraucht am Wanter STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} geliwwert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (nach gebraucht) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (geliwwert) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Stat wiisst all {ORANGE}{COMMA}{BLACK} D{P aag eeg} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stat wiisst all {ORANGE}{COMMA}{BLACK} D{P aag eeg} (finanzéiert) -STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Stat wiisst{RED} net{BLACK} +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Stad wiisst all {ORANGE}{COMMA}{BLACK}{NBSP}D{P ag eeg} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stad wiisst all {ORANGE}{COMMA}{BLACK}{NBSP}D{P ag eeg} (finanzéiert) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Stad wiisst{RED} net{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Kaméidislimit an der Stad: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Stad. Ctrl+Klick erstellt eng nei Usiicht op d'Stad STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Gemeng STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Weist d'Informatiounen zu der Gemeng -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Wiesselt den Stadnumm +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Wiesselt de Stadnumm STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Erweideren STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Stad méi grouss maachen -STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Leschen -STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Dës Stad ganz leschen +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Läschen +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Des Stad ganz läschen STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Stad ëmbenennen # Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} Gemeng -STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transportfirmen Bewertung: +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Gemeng {TOWN} +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transportfirme-Bewäertung: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} -STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Verfügbar Optiounen: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lëscht vun Saachen déi an der Stad gemaach kënnen ginn - klick op eng Optioun fir méi Informatiounen -STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Maach ët -STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Féiert déi ungewielten Optioun aus +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Verfügbar Aktiounen: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lëscht vu Saachen déi an der Stad gemaach kënne ginn - klick op eng Optioun fir méi Informatiounen +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Maach et +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Féiert déi gewielten Aktioun aus STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Kleng Marketingaktioun STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Mëttel Marketingsaktioun STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Grouss Marketingsaktioun -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Strossenneibau finanzéieren +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Stroossenneibau finanzéieren STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Statu vum Firmenbesëtzer bauen STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Nei Gebaier finanzéieren STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Exklusiv Transportrechter kafen STR_LOCAL_AUTHORITY_ACTION_BRIBE :D'Gemeng bestiechen -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Eng kleng Marketingaktioun starten, fir méi Passagéier an Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Eng mëttel Marketingaktioun starten, fir méi Passagéier an Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Eng grouss Marketingaktioun starten, fir méi Passagéier an Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Stroossenneibau an der Stad finanzéieren. Stéiert den Traffic op den Stroossen fir dei nächst 6 Méint.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Eng kleng Marketingaktioun starten, fir méi Passagéier a Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Eng mëttel Marketingaktioun starten, fir méi Passagéier a Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Eng grouss Marketingaktioun starten, fir méi Passagéier a Wueren ze gewannen.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Stroossenneibau an der Stad finanzéieren. Stéiert den Traffic op de Stroossen fir déi nächst 6 Méint.{} Käschten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Eng Statu zur Éier vun der Firma bauen.{} Käschten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Den Bau vun neien Kommerzgebaier finanzéieren.{} Käschten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kaft fir 1 Joer exklusiv Transportrechter an dëser Stad. D'Gemeng erlaabt den Transport vun Passagéier an Wueren nëmmen ärer Firma.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}De Bau vun neie Kommerzgebaier finanzéieren.{} Käschten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kaaft fir 1 Joer exklusiv Transportrechter an deser Stad. D'Gemeng erlaabt den Transport vu Passagéier a Wueren nëmmen äerer Firma.{} Käschten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}D'Gemeng bestiechen fir d'Bewäertung ze erhéijen, mam Risiko fir eng grouss Bestrofung, falls der erwëscht gitt.{} Käschten: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} Ziler STR_GOALS_SPECTATOR_CAPTION :{WHITE}Global Ziler -STR_GOALS_GLOBAL_TITLE :{BLACK}Global Zieler: +STR_GOALS_GLOBAL_TITLE :{BLACK}Global Ziler: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Keng - STR_GOALS_SPECTATOR_NONE :{ORANGE}- Net uwendbar - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_COMPANY_TITLE :{BLACK}Firmenzieler: +STR_GOALS_COMPANY_TITLE :{BLACK}Firmenziler: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick op Ziel fir d'Haptfënster op d'Industrie/Stad/Feld ze zentréiren. Ctrl+Klick mëcht eng nei Fënster op der Industrie/Stad/Feld-Positioun op # Goal question window @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informatioun STR_GOAL_QUESTION_CAPTION_WARNING :Warnung STR_GOAL_QUESTION_CAPTION_ERROR :Fehler -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Ofbriechen STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nee @@ -2996,25 +3060,26 @@ STR_GOAL_QUESTION_BUTTON_DECLINE :Ofleenen STR_GOAL_QUESTION_BUTTON_ACCEPT :Unhuelen STR_GOAL_QUESTION_BUTTON_IGNORE :Ignoréiren STR_GOAL_QUESTION_BUTTON_RETRY :Nach emol.. -STR_GOAL_QUESTION_BUTTON_PREVIOUS :Zréck +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Zeréck STR_GOAL_QUESTION_BUTTON_NEXT :Nächst STR_GOAL_QUESTION_BUTTON_STOP :Stop STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Lass STR_GOAL_QUESTION_BUTTON_CONTINUE :Weiderman STR_GOAL_QUESTION_BUTTON_RESTART :Nei man -STR_GOAL_QUESTION_BUTTON_POSTPONE :Ofwarden +STR_GOAL_QUESTION_BUTTON_POSTPONE :Ofwaarden STR_GOAL_QUESTION_BUTTON_SURRENDER :Opginn STR_GOAL_QUESTION_BUTTON_CLOSE :Zouman +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subventiounen -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subventiounen fir den Service: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} vun {STRING} op {STRING}{YELLOW} (by {DATE_SHORT}) +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subventiounen fir de Service: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} vun {STRING} op {STRING}{YELLOW} (bis {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Keng - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servicer mat Subventiounen: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} vun {STRING} op {STRING}{YELLOW} ({COMPANY}{YELLOW}, bis {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick op den Service fir d'Usiicht op d'Industrie/Stad ze zentréieren. Ctrl+Klick erstellt eng nei Usiicht op d'Industrie/Stad +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick op de Service fir d'Usiicht op d'Industrie/Stad ze zentréieren. Ctrl+Klick erstellt eng nei Usiicht op d'Industrie/Stad # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Storybuch @@ -3022,54 +3087,54 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalt STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Säit {NUM} STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Géi op eng spezifësch Säit andems se aus der Dropdownlëscht ausgewielt gëtt -STR_STORY_BOOK_PREV_PAGE :{BLACK}Zréck +STR_STORY_BOOK_PREV_PAGE :{BLACK}Zeréck STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Géi op d'Säit firdrun STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nächst STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Géi op déi nächst Säit +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ongültëg Zil Referenz # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Statiounennimm - klick op den Numm fir d'Siicht drop ze zentréieren. Ctrl+Klick erstellt eng nei Usiicht op d'Statioun -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Haalt Ctrl un fir méi wéi 1 Objekt auszewielen +STR_STATION_LIST_TOOLTIP :{BLACK}Statiounennimm - klick op den Numm fir d'Usiicht dorop ze zentréieren. Ctrl+Klick erstellt eng nei Usiicht op d'Statioun +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hal Ctrl un fir méi wéi 1 Objet auszewielen STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Statioun{P "" en} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Näischt - -STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Selectéier all d'Fabriken -STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Wielt all Luedungstyp (ouni Luedung déi waart) -STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Kéng Luedung +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Wiel all d'Fabriken +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Wielt all Luedungstyp (ouni Luedung déi waard) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Keng Luedung # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Um waarden: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ënnerwee vun {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservéiert fir gelueden ze ginn) -STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acceptéiert -STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Weis d'Lëscht vun den acceptéierten Wueren -STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acceptéiert: {WHITE}{CARGO_LIST} +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akzeptéiert +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}Dës Statioun huet exklusiv Transportrechter an dëser Stad -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} huet exklusiv Transportrechter an dëser Stad kaf. +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_RATINGS_BUTTON :{BLACK}Bewertungen -STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Weis d'Statiounsbewertungen -STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Lokal Bewertung an Liwwerung pro Mount +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewäertungen +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Weis d'Statiounsbewäertungen +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Lokal Bewäertung an Liwwerung pro Mount STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Gruppéier no -STR_STATION_VIEW_WAITING_STATION :Statioun: wardend -STR_STATION_VIEW_WAITING_AMOUNT :Unzuel: Wardend -STR_STATION_VIEW_PLANNED_STATION :Statioun: geplangt -STR_STATION_VIEW_PLANNED_AMOUNT :Unzuel: geplangt +STR_STATION_VIEW_WAITING_STATION :Statioun: Waardend +STR_STATION_VIEW_WAITING_AMOUNT :Unzuel: Waardend +STR_STATION_VIEW_PLANNED_STATION :Statioun: Geplangt +STR_STATION_VIEW_PLANNED_AMOUNT :Unzuel: Geplangt STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} vun {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} op {STATION} STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} vun iergendenger Statioun STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} op iergendeng Statioun STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via iergendeng Statioun -STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} vun dëser Statioun -STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stoppt op dëser Statioun +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} vun deser Statioun +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stoppt op deser Statioun STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} op des Statioun STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop @@ -3094,19 +3159,19 @@ STR_CARGO_RATING_OUTSTANDING :Perfekt STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Statioun. Ctrl+Klick erstellt eng nei Usiicht op d'Statioun STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Den Numm vun der Statioun änneren -STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Weis all Zich déi des Statioun an hierem Zaitplang hun -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Weis all Stroossengefierer déi des Statioun an hierem Zäitplang hunn -STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Weis all Fliger den des Statioun an sengem Zaitplang huet -STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Weis all Schëffer déi des Statioun an hierem Zaitplang hun +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Weis all Zich déi des Statioun an hierem Zäitplang hunn +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Weis all Stroossegefierer déi des Statioun an hierem Zäitplang hunn +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Weis all Fliger déi des Statioun an hierem Zäitplang hunn +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Weis all Schëffer déi des Statioun an hierem Zäitplang hunn STR_STATION_VIEW_RENAME_STATION_CAPTION :D'Gare ëmbenennen -STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Fluchhafen zouman +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Fluchhafen zoumaachen STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Hal de Fliger dovun of op dësem Fluchhafen ze landen # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Weepunkt. Ctrl+Klick erstellt eng nei Usiicht um Weepunkt +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Zentréiert d'Usiicht op de Weepunkt. Ctrl+Klick erstellt eng nei Usiicht um Weepunkt STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Weepunkt Numm änneren STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Boje. Ctrl+Klick erstellt eng nei Usiicht op der Boje STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Boje ëmbenennen @@ -3119,13 +3184,13 @@ STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Ausgaben STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruktioun STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nei Gefierer -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Zuch Betriebskäschten -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Stroossengefierer Betriebskäschten -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Fliger Betriebskäschten -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Schëff Betriebskäschten -STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Besëtz Ennerhalt +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Zuch Betribskäschten +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Stroossegefierer Betribskäschten +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Fliger Betribskäschten +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Schëff Betribskäschten +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Ennerhaltskäschte vum Besëtz STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Zuch Akommes -STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Stroossengefierer Akommes +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Stroossegefierer Akommes STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Fliger Akommes STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Schëff Akommes STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Zënssaz @@ -3135,27 +3200,27 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Kontostand STR_FINANCES_LOAN_TITLE :{WHITE}Kredit -STR_FINANCES_MAX_LOAN :{WHITE}Max Kredit: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximale Kredit: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} léinen -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Erhéicht den Kredit. Ctrl+Klick léint den Maximum +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Erhéicht de Kredit. Ctrl+Klick léint de Maximum STR_FINANCES_REPAY_BUTTON :{BLACK}{CURRENCY_LONG} zeréckbezuelen -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Bezuelt en Deel vum Kredit zeréck. Ctrl+Klick bezillt sou vill wéi méglech zréck +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Bezuelt en Deel vum Kredit zeréck. Ctrl+Klick bezillt sou vill wéi méiglech zeréck STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktur # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Manager) -STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Agefouert: {WHITE}{NUM} +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Gegrënnt: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Faarfschema: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Gefierer: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} Z{P uch ich} -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} Stroossengefier{P t ter} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} Stroossegefier{P "" er} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} Fliger STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} Schëff{P "" er} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Keng -STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmenwäert: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmewäert: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% am Besëtz vun {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktur: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} Schinnendeel{P "" er} @@ -3167,37 +3232,37 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Keng STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Haaptgebai bauen STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Haaptgebai bauen -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Weist Haaptgebai -STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Haaptgebai weisen +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Weis d'Haaptgebai +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Haaptgebai uweisen STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Firmenhaaptgebai réckelen -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bau d'Firmenhaaptgebai op eng aaner Plaz.Käschten: 1% vun dem Firmenwäert. Shift+Klick weist ongeféier Käschten ouni ze réckelen +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bau d'Firmenhaaptgebai op eng aaner Plaz.Käschten: 1% vun dem Firmewäert. Shift+Klick weist ongeféier Käschten ouni ze réckelen STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detailer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detailléiert Infrastrukturen uweisen STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Neit Gesiicht -STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Wielt en neit Gesiicht fir den Manager +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Wielt en neit Gesiicht fir de Manager STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Faarfschema STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Ännert d'Firmengefiererfaarf STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Firmennumm -STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Ännert den Firmennumm +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Ännert de Firmennumm STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Managernumm STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Ännert den Numm vum Manager -STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kaaft 25%Undeel vun der Firma +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kaaft 25% Undeel vun der Firma STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Verkaaft 25% Undeel vun der Firma -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kaaft 25%Undeel vun dëser Firma. Shift+Klick weist ongeféier Käschten ouni Kaf vun Aktien -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkaaft 25% Undeel vun dëser Firma. Shift+Klick weist ongeféier Käschten ouni Verkaf vun Aktien +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kaaft 25% Undeel vun deser Firma. Shift+Klick weist ongeféier Käschten ouni Kaf vun Aktien +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkaaft 25% Undeel vun deser Firma. Shift+Klick weist ongeféier Käschten ouni Verkaf vun Aktien STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmennumm STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Numm vum Manager -STR_BUY_COMPANY_MESSAGE :{WHITE}Mir sichen eng Transportfirma déi eis Firma iwerhuelen wëll.{}{}Wëlls du {COMPANY} fir {CURRENCY_LONG} kafen? +STR_BUY_COMPANY_MESSAGE :{WHITE}Mir sichen eng Transportfirma déi eis Firma iwwerhuelen wëll.{}{}Wëlls du {COMPANY} fir {CURRENCY_LONG} kafen? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur vun {COMPANY} -STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schinnenstécker: +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schinnestécker: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signaler -STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Stroossenstécker: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Stroossestécker: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Strooss STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tram STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Waasserfelder: @@ -3217,11 +3282,11 @@ STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industri # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} -STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produktioun läschten Mount: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produktioun läschte Mount: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportéiert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Siicht op d'Industrie. Ctrl+Klick erstellt eng nei Usiicht op d'Industrie STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktiounslevel: {YELLOW}{COMMA}% -STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'Industrie annoncéiert dass se zougemet gëtt +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'Industrie annoncéiert dass se zougemaach gëtt ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING} @@ -3230,25 +3295,25 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Brauch: ############ range for requires ends ############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Luedungen dei nach verschafft mussen gin: +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Luedunge déi nach verschafft musse ginn: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}D'Produktioun änneren (Multipel vun 8, bis op 2040) -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Änner den Produktiounslevel (Prozenter, bis zu 800%) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Änner de Produktiounslevel (Prozenter, bis zu 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Z{P uch ich} -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Gefier{P t er} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Gefier{P "" er} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Schëff{P "" er} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Fliger STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Zich - klick op den Zuch fir Informatiounen -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Stroossengefierer - klick op en Gefier fir Informatiounen -STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Schëffer - Klick op d'Schëff fir Informatiounen -STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fliger - Klick op den Fliger fir Informatiounen +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Stroossegefierer - klick op e Gefier fir Informatiounen +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Schëffer - klick op d'Schëff fir Informatiounen +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fliger - klick op de Fliger fir Informatiounen STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit dëst Joer: {CURRENCY_LONG} (lescht Joer: {CURRENCY_LONG}) @@ -3256,42 +3321,45 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :Verfügbar Zich STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Verfügbar Gefierer STR_VEHICLE_LIST_AVAILABLE_SHIPS :Verfügbar Schëffer STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Verfügbar Fligern -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Lëscht vun allen Maschinen fir dësen Typ weisen +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Lëscht vun alle Maschinen fir dësen Typ weisen STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Verwaltungslëscht -STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Scheckt d'Instructiounen un all Gefierer an der Lëscht +STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Schéckt d'Instructiounen un all Gefierer an der Lëscht STR_VEHICLE_LIST_REPLACE_VEHICLES :Gefierer ersetzen STR_VEHICLE_LIST_SEND_FOR_SERVICING :An d'Revisioun schécken -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :An den Depot schécken +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :An de Schapp schécken STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :An den Depot schécken -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :An den Depot schécken +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :An de Schapp schécken STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :An den Hangar schécken STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klick fir all Gefierer an der Lëscht ze stoppen STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klick fir all Gefirer an der Lëscht ze starten -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Gedeelten Opträg vun {COMMA} Gefier{P t er} +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Gedeelten Opträg vun {COMMA} Gefier{P "" er} # Group window STR_GROUP_ALL_TRAINS :All Zich -STR_GROUP_ALL_ROAD_VEHICLES :All Stroossengefierer +STR_GROUP_ALL_ROAD_VEHICLES :All Stroossegefierer STR_GROUP_ALL_SHIPS :All Schëffer STR_GROUP_ALL_AIRCRAFTS :All Fligeren STR_GROUP_DEFAULT_TRAINS :Ongruppéiert Zich -STR_GROUP_DEFAULT_ROAD_VEHICLES :Ongruppéiert Stroossengefierer +STR_GROUP_DEFAULT_ROAD_VEHICLES :Ongruppéiert Stroossegefierer STR_GROUP_DEFAULT_SHIPS :Ongruppéiert Schëffer STR_GROUP_DEFAULT_AIRCRAFTS :Ongruppéiert Fligeren -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppen - klick op eng Grupp fir d'Gefierer aus där Grupp ze gesinn +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppen - klick op eng Grupp fir d'Gefierer aus der Grupp ze gesinn. Per Drag and Drop d'Hierarchie änneren. STR_GROUP_CREATE_TOOLTIP :{BLACK}Klick fir eng Grupp ze maachen -STR_GROUP_DELETE_TOOLTIP :{BLACK}Déi ungewielten Grupp läschen -STR_GROUP_RENAME_TOOLTIP :{BLACK}Déi ungewielten Grupp ëmbenennen +STR_GROUP_DELETE_TOOLTIP :{BLACK}Déi ungewielte Grupp läschen +STR_GROUP_RENAME_TOOLTIP :{BLACK}Déi ungewielte Grupp ëmbenennen STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klick fir déi Grupp vum globalen "Autoersetzen" auszeschléissen -STR_GROUP_ADD_SHARED_VEHICLE :Gedeelten Gefierer bäisetzen -STR_GROUP_REMOVE_ALL_VEHICLES :All Gefierer wechhuelen +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grupp läschen +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Bassde sécher, dass du des Grupp an all Ennergruppen läsche wëlls? + +STR_GROUP_ADD_SHARED_VEHICLE :Gedeelte Gefierer bäisetzen +STR_GROUP_REMOVE_ALL_VEHICLES :All Gefierer ewechhuelen STR_GROUP_RENAME_CAPTION :{BLACK}Eng Grupp ëmbenennen @@ -3301,17 +3369,17 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nei Elektrozich STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nei Monorailgefierer STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nei Magnéitbunngefierer -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Zich -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nei Stroossengefierer +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nei Zich +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nei Stroossegefierer STR_BUY_VEHICLE_SHIP_CAPTION :Nei Schëffer -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Neien Fliger +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Neie Fliger STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Käschten: {GOLD}{CURRENCY_LONG}{BLACK} Gewiicht: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Geschw.: {GOLD}{VELOCITY}{BLACK} Kraaft: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Geschw.: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Geschwindegkeet um Ozean: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Geschwindegkeet um Kanal/Floss: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Betriibskäschtent: {GOLD}{CURRENCY_LONG}/Jr +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Betribskäschten: {GOLD}{CURRENCY_LONG}/Jr STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapazitéit: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(ëmbaubar) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designt: {GOLD}{NUM}{BLACK} Liewenszäit: {GOLD}{COMMA} Joer @@ -3320,144 +3388,164 @@ STR_PURCHASE_INFO_COST :{BLACK}Käschte STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Gewiicht: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Käschten: {GOLD}{CURRENCY_LONG}{BLACK} Geschw.: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapazitéit: {GOLD}{CARGO_LONG}, {CARGO_LONG} -STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Ugedriwwen Wagonen: {GOLD}+{POWER}{BLACK} Gewiicht: {GOLD}+{WEIGHT_SHORT} -STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Embaubaur zu: {GOLD}{STRING} -STR_PURCHASE_INFO_ALL_TYPES :All Typ Wueren +STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Ugedriwwen Waggonen: {GOLD}+{POWER}{BLACK} Gewiicht: {GOLD}+{WEIGHT_SHORT} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Embaubar zu: {GOLD}{STRING} +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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Zuchlëscht - klick op en Zuch fir Informatiounen -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stroossengefierlëscht - klick op en Gefier fir Informatiounen -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schëffslëscht - Klick op d'Schëff fir Informatiounen -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Fligerlëscht - Klick op den Fliger fir Informatiounen +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schëffslëscht - Klick op d'Schëff fir Informatiounen. Ctrl+Klick fir tëscht dem Verstoppen hin an hier ze sprangen +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Fligerlëscht - Klick op de Fliger fir Informatiounen. Ctrl+Klick fir tëscht dem Verstoppen hin an hier ze sprangen -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Gefiert kafen -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Gefiert kafen +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Gefier kafen +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Gefier kafen STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Schëff kafen STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Fliger kafen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft den ungewielten Zuch. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft dat ugewielten Stroossengefiert. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft dat ugewielten Schëff. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft den ungewielten Fliger. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft dat ugewielte Stroossegefier. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft dat ugewielte Schëff. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Keeft den ungewielte Fliger. Shift+Klick weist ongeféier Käschten ouni Kaf STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Ëmbenennen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Ëmbenennen STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Ëmbenennen STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Ëmbenennen -STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Gefierttyp ëmbenennen -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Gefierttyp ëmbenennen +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Zuch ëmbenennen +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Gefiertyp ëmbenennen STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Schëffstyp ëmbenennen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Fligertyp ëmbenennen -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zuchgefierttyp ëmbenennen -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gefiertentyp ëmbenennen +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Verstoppen +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Verstoppen +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Verstoppen +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Verstoppen + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Uweisen +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Uweisen +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Uweisen +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Uweisen + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Emschalten tëscht uweise/verstoppe vun Zuchtypen +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Emschalten tëscht uweise/verstoppe vu Gefiertypen +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Emschalten tëscht uweise/verstoppe vu Schëfftypen +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Emschalten tëscht uweise/verstoppe vu Fligertypen + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zuchgefiertyp ëmbenennen +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gefiertyp ëmbenennen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Schëffstyp ëmbenennen STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Fligertyp ëmbenennen # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} -STR_DEPOT_RENAME_TOOLTIP :{BLACK}Enner den Numm vum Depot -STR_DEPOT_RENAME_DEPOT_CAPTION :Depot ëmbenennen +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Enner den Numm vum Schapp +STR_DEPOT_RENAME_DEPOT_CAPTION :Schapp ëmbenennen STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} Gefier{P t er}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} Gefier{P "" er}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Zich - zidd d'Gefiert fir en unzehänken/wechzehuelen, Rietsklick fir Informatiounen. Ctrl unhalen dass béid Fonktiounen fir déi nächst Ketten gëllen +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Zich - zidd d'Gefier fir en unzehänken/wechzehuelen, Rietsklick fir Informatiounen. Ctrl unhalen dass béid Fonktiounen fir déi nächst Ketten gëllen STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Gefierer - Rietsklick op en Gefier fir Informatiounen STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Schëffer - Rietsklick op d'Schëff fir Informatiounen -STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Fliger - Rietsklick op den Fliger fir Informatiounen +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Fliger - Rietsklick op de Fliger fir Informatiounen -STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Zitt den Zuch heihin fir en ze verkafen -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Zitt d'Stroossengefier heihin fir et ze verkafen -STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Zitt Schëff heihin fir et ze verkafen -STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Zitt den Fliger heihin fir en ze verkafen +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Zéi den Zuch heihin fir en ze verkafen +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Zéi d'Stroossegefier heihin fir et ze verkafen +STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Zéi d'Schëff heihin fir et ze verkafen +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Zéi de Fliger heihin fir en ze verkafen STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Lokomotiv heihinner zéien fir de ganzen Zuch ze läschen -STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}All Zich am Depot verkafen -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}All Gefiert am Depot verkafen -STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}All Schëff am Depot verkafen +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}All Zich am Schapp verkafen +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}All Gefier am Depot verkafen +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}All Schëff am Schapp verkafen STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}All Fliger am Hangar verkafen -STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}All Zich am Depot automatesch ersetzen +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}All Zich am Schapp automatesch ersetzen STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}All Gefierer am Depot automatesch ersetzen -STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}All Schëffer am Depot automatesch ersetzen +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}All Schëffer am Schapp automatesch ersetzen STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}All Fliger am Hangar automatesch ersetzen -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nei Gefierer +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nei Zich STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nei Gefierer STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nei Schëffer -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Neien Fliger +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nei Fligeren -STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Keeft neien Zuch -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Neit Stroossengefiert kafen +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kaf en neien Zuch +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Neit Stroossegefier kafen STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Neit Schëff kafen -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Neien Fliger kafen +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Neie Fliger kafen STR_DEPOT_CLONE_TRAIN :{BLACK}Zuch klonen -STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Gefiert klonen +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Gefier klonen STR_DEPOT_CLONE_SHIP :{BLACK}Schëff klonen STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Fliger klonen -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dëst baut eng Kopie vun engem Zuch mat all den Wagonen. Klick op dësen Knäppchen an dann op en Zuch am Depot oder baussen. Ctrl+Klick fir Opträg ze deelen. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Keeft eng Kopie vum Stroossengefier. Klick dësen Kneppchen an dann op en Stroossengefier am oder baussent dem Depot. Ctrl+Klick deelt och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dëst baut eng Kopie vum Schëff. Klick op dësen Knäppchen an dann op en Schëff am Depot oder baussen.Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dëst baut eng Kopie vun engem Fliger. Klick op dësen Knäppchen, an dann op en Fliger am Hangar oder baussen. Ctrl+Klick fir Uerder ze deelen. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dest baut eng Kopie vun engem Zuch mat all de Waggonen. Klick op dese Knäppchen an dann op en Zuch am Schapp oder baussen. Ctrl+Klick fir Opträg ze deelen. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Keeft eng Kopie vum Stroossegefier. Klick dese Kneppchen an dann op e Stroossegefier am oder baussent dem Depot. Ctrl+Klick deelt och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dest baut eng Kopie vum Schëff. Klick op dese Knäppchen an dann op en Schëff am Schapp oder baussen.Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dest baut eng Kopie vun engem Fliger. Klick op dese Knäppchen, an dann op en Fliger am Hangar oder baussen. Ctrl+Klick fir Uerder ze deelen. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Depot. Ctrl+Klick erstellt eng nei Usiicht op den Depot +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op de Schapp. Ctrl+Klick erstellt eng nei Usiicht op de Schapp STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Depot. Ctrl+Klick erstellt eng nei Usiicht op den Depot -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Depot. Ctrl+Klick erstellt eng nei Usiicht op den Depot +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op de Schapp. Ctrl+Klick erstellt eng nei Usiicht op de Schapp STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Hangar. Ctrl+Klick erstellt eng nei Usiicht op den Hangar -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Lëscht mat all Zich an dësem Depot +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Lëscht mat all Zich an dësem Schapp STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Lëscht mat all Gefierer an dësem Depot -STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Lëscht mat all Schëffer an dësem Depot +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Lëscht mat all Schëffer an dësem Schapp STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lëscht mat all Fliger am Hangar op dësem Fluchhafen -STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klick fir all Zich am Depot ze stoppen +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klick fir all Zich am Schapp ze stoppen STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klick fir all Gefierer am Depot ze stoppen -STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klick fir all Schëffer am Depot ze stoppen +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klick fir all Schëffer am Schapp ze stoppen STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klick fir all Fliger am Hangar ze stoppen -STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klick fir all Zich am Depot ze starten +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klick fir all Zich am Schapp ze starten STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klick fir all Gefierer am Depot ze starten STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klick fir all Schëff am Schapp ze starten STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klick fir all Fliger am Hangar ze starten -STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du verkeefs grad all Gefierer am Depot. Bass du sécher ? +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du verkeefs grad all Gefierer am Schapp. Bass du sécher ? # Engine preview window -STR_ENGINE_PREVIEW_CAPTION :{WHITE}Meldung vum Gefiertenhiersteller -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Mir hunn elo en neien {STRING} gebaut - bass du dorun interesséiert dëst Gefiert 1 Joer exklusiv ze notzen, fir ze testen op et komplett maarträif ass? +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Meldung vum Gefierkonstrukteur +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Mir hunn elo en neien {STRING} gebaut - bass du dorun interesséiert dëst Gefier 1 Joer exklusiv ze notzen, fir ze testen op et komplett maarträif ass? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :Lokomotiv -STR_ENGINE_PREVIEW_ROAD_VEHICLE :Stroossengefier +STR_ENGINE_PREVIEW_ROAD_VEHICLE :Stroossegefier STR_ENGINE_PREVIEW_AIRCRAFT :Fliger STR_ENGINE_PREVIEW_SHIP :Schëff STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :Monorail Lokomotiv STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Magnéitbunnlokomotiv -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Käschten: {CURRENCY_LONG} Gewiicht: {WEIGHT_SHORT}{}Geschwindegkeet: {VELOCITY} Kraaft: {POWER}{}Betriibskäschten {CURRENCY_LONG}/joër{}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}{}Betriebskä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}{}Betriibskäschten {CURRENCY_LONG}/Joer -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschwindegkeet: {VELOCITY}{}Kapazitéit: {CARGO_LONG}{}Betriibskäschten: {CURRENCY_LONG}/Joer +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Käschten: {CURRENCY_LONG} Gewiicht: {WEIGHT_SHORT}{}Geschwindegkeet: {VELOCITY} Kraaft: {POWER}{}Betribskäschten {CURRENCY_LONG}/Joer{}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 # Autoreplace window -STR_REPLACE_VEHICLES_WHITE :{WHITE}Tausch{STRING} - {STRING} aus +STR_REPLACE_VEHICLES_WHITE :{WHITE}Ersetz {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Zuch -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Stroossengefier +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Stroossegefier STR_REPLACE_VEHICLE_SHIP :Schëff STR_REPLACE_VEHICLE_AIRCRAFT :Fliger -STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wielt den Maschinentyp fir auszetauschen -STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wielt den neien Typ den benotzt soll ginn amplaz vun der lénks gewielter Maschin +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Gefierer am Gebrauch +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolonn mat Gefierer déis du hues +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Verfügbar Gefierer +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolonn mat Gefierer déi prett fir ze ersetze sinn + +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wielt de Maschinentyp fir auszetauschen +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wielt den neien Typ de benotzt soll ginn amplaz vun der lénks gewielter Maschin STR_REPLACE_VEHICLES_START :{BLACK}Start Gefieraustosch STR_REPLACE_VEHICLES_NOW :All Gefier elo ersetzen @@ -3465,83 +3553,83 @@ STR_REPLACE_VEHICLES_WHEN_OLD :Nëmmen al Gefi STR_REPLACE_HELP_START_BUTTON :{BLACK}Drécken fir den Austosch vun der lénker mat der rietser Maschin unzefenken STR_REPLACE_NOT_REPLACING :{BLACK}Net ausgetosch: STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Keen gefier gewielt -STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} wann aal +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} wann al STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Gefieraustosch STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Drécken fir den Austosch ze stoppen STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Tauschen aus: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Wiessel tëscht Maschin- an Wagonaustosch. Fënster -STR_REPLACE_ENGINES :Motoren -STR_REPLACE_WAGONS :Wagonen - -STR_REPLACE_HELP_RAILTYPE :{BLACK}Wielt den Schinnentyp fir den Maschinen ausgetosch ginn -STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Weist un wellech Maschin vun der lénks selectéierter Maschin ausgetosch soll ginn, wann et zoutrëfft -STR_REPLACE_RAIL_VEHICLES :Schinnengefierter -STR_REPLACE_ELRAIL_VEHICLES :Elektresch Schinnen Gefierer +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Wiessel tëscht Maschin- an Waggonaustosch-Fënster +STR_REPLACE_ENGINES :Lokomotiven +STR_REPLACE_WAGONS :Waggonen + +STR_REPLACE_HELP_RAILTYPE :{BLACK}Wielt de Schinnentyp fir déi Lokomotiven ausgetosch ginn +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Weist un wellech Lokomotiv vun der lénks ugewielter Lokomotiv ausgetosch soll ginn, wann et zoutrëfft +STR_REPLACE_RAIL_VEHICLES :Zich +STR_REPLACE_ELRAIL_VEHICLES :Elektresch Zich STR_REPLACE_MONORAIL_VEHICLES :Monorail Gefierer STR_REPLACE_MAGLEV_VEHICLES :Magnéitbunn Gefierer -STR_REPLACE_REMOVE_WAGON :{BLACK}Wagon raushuelen: {ORANGE}{STRING} -STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Mëscht dass d'automatescht Austauschen d'Lengt vum Zuch behält, an dem en Wagonen (vun lénks un) wechhëllt, wann d'Lok den Zuch ze laang mëscht +STR_REPLACE_REMOVE_WAGON :{BLACK}Waggon raushuelen: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Mécht dass d'automatescht Austauschen d'Längt vum Zuch behält, an dem e Waggonen (vu lénks un) wechhëllt, wann d'Lok den Zuch ze laang mécht # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Zuch. Ctrl+Klick follegt dem Zuch an der Haaptusiicht -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Gefiert. Ctrl+Klick follegt dem Gefiert an der Haaptusiicht +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Gefier. Ctrl+Klick follegt dem Gefier an der Haaptusiicht STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op d'Schëff. Ctrl+Klick follegt dem Schëff an der Haaptusiicht -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op den Fliger. Ctrl+Klick follegt dem Fliger an der Haaptusiicht +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Zentréiert d'Usiicht op de Fliger. Ctrl+Klick follegt dem Fliger an der Haaptusiicht -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt den Zuch an den Depot. CTRL+Klick fir nëmmen Revisoun -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt d'Gefiert an den Depot. CTRL+Klick fir nëmmen Revisoun -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéck d'Schëff an den Depot. CTRL+Klick fir nëmmen Revisoun -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt den Fliger an den Hangar. CTRL+Klick mëscht nëmmen Revisioun +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt den Zuch an de Schapp. Ctrl+Klick fir nëmmen Revisioun +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt d'Gefier an den Depot. Ctrl+Klick fir nëmmen Revisioun +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt d'Schëff an de Schapp. Ctrl+Klick fir nëmmen Revisioun +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt de Fliger an den Hangar. Ctrl+Klick mécht nëmmen eng Revisioun -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dëst baut eng Kopie vun engem Zuch mat all den Wagonen. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Baut eng Kopie vum Stroossengefiert. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dëst baut eng Kopie vun engem Zuch mat all de Waggonen. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Baut eng Kopie vum Stroossegefier. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Dëst baut eng Kopie vum Schëff. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dëst baut eng Kopie vum Fliger. Ctrl+Klick kopéiert och d'Opträg. Shift+Klick weist ongeféier Käschten ouni Kaf -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forcéiert den Zuch durch d'Signal ze fueren +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Zwéngt den Zuch durch d'Signal ze fueren STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Den Zuch upassen fir aaner Luedungen ze transportéieren -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroossengefiert ëmbauen fir eng aner Wuer ze transportéiren -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Schëffslager ëmbauen fir aaner Luedungen ze transportéieren +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroossegefier ëmbauen fir eng aner Wuer ze transportéiren +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Schëff ëmbauen fir aaner Luedungen ze transportéieren STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Fliger ëmbauen fir aaner Wueren ze transportéieren STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Richtung vum Zuch wiesselen -STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forcéiert d'Gefiert fir ze dréien +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Zwéngt d'Gefier ze dréinen STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Weist d'Opträg vum Zuch. Ctrl+Klick weist den Zäitplang -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Weist d'Opträg vum Gefiert. Ctrl+Klick weist den Zäitplang +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Weist d'Opträg vum Gefier. Ctrl+Klick weist den Zäitplang STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Weist d'Opträg vum Schëff. Ctrl+Klick weist den Zäitplang STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Weist d'Opträg vum Fliger. Ctrl+Klick weist den Zäitplang STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Weist d'Detailer vum Zuch -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Stroosengefiert Detailer -STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Schëffdetailer +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Stroossegefier Detailer +STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Weis Schëffsdetailer STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Weist d'Fligerdetailer STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klick hei fir den Zuch ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klick hei fir d'Gefier ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klick hei fir d'Schëff ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klick hei fir den Fliger ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klick hei fir de Fliger ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lueden / Entlueden STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Verloossen -STR_VEHICLE_STATUS_CRASHED :{RED}Accident! +STR_VEHICLE_STATUS_CRASHED :{RED}Akzident! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pann STR_VEHICLE_STATUS_STOPPED :{RED}Gestoppt -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stopt, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stoppt, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Keng Energie -STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ward op en fraien Wee +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Waard op en fräie Wee STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ze wäit op nächst Destinatioun -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Um Wee op {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ennerwee op {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Keng Opträg, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Um Wee fir {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Um Wee an den {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ennerwee op {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Ennerwee an den {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Revisioun am {DEPOT}, {VELOCITY} # Vehicle stopped/started animations @@ -3551,15 +3639,15 @@ STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GRE STR_VEHICLE_COMMAND_STARTED :{GREEN}Gestart # Vehicle details -STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Details) +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detailer) STR_VEHICLE_NAME_BUTTON :{BLACK}Numm STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Zuch benennen -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Stroossengefiert benennen +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Stroossegefier benennen STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Schëff benennen STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Fliger benennen -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriibskäschten: {LTBLUE}{CURRENCY_LONG}/Joer +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betribskäschten: {LTBLUE}{CURRENCY_LONG}/Joer # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} Joer ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} Joer ({COMMA}) @@ -3572,34 +3660,34 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewiicht STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profit dëst Joer: {LTBLUE}{CURRENCY_LONG} (lescht Joer: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Zouverlässegkeet: {LTBLUE}{COMMA}% {BLACK}Pannen säit leschter Revisioun: {LTBLUE}{COMMA} -STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebaut: {LTBLUE}{NUM}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebaut: {LTBLUE}{NUM}{BLACK} Wäert: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapazitéit: {LTBLUE}Keng{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapazitéit: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapazitéit: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapazitéit: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Suen: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferts-Suen: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Revisiounsintervall: {LTBLUE}{COMMA}Deeg{BLACK} Lescht Revisioun: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Revisiounsintervall: {LTBLUE}{COMMA}{NBSP}Deeg{BLACK} Lescht Revisioun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Revisiounsintervall: {LTBLUE}{COMMA}%{BLACK} Lescht Revisioun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Revisiounsintervall em 10 erhéijen. Ctrl+Klick erhéicht Intervall em 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Revisiounsintervall em 10 erofsetzen. Ctrl+Klick setzt den Intervall em 5 rof -STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Wiesselt den Revisiounsintervall +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Wiesselt de Revisiounsintervall STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :Deeg STR_VEHICLE_DETAILS_PERCENT :Prozent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Zuch benennen -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Stroossengefiert benennen +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Stroossegefier benennen STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Schëff benennen STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Fliger benennen # Extra buttons for train details windows -STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebaut: {LTBLUE}{NUM}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebaut: {LTBLUE}{NUM}{BLACK} Wäert: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Wäert: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total Luedplaz fir dësen Zuch: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total Kapazitéit fir dësen Zuch: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) @@ -3608,11 +3696,11 @@ STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_ STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} vun {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Luedung -STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Weist d'Detailer vun der Luedung +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Weis d'Detailer vun der Luedung STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informatioun -STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Weist d'Detailer vun den Wagongen +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Weist d'Detailer vun de Waggonen STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapazitéiten -STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Weist d'Kapazitéiten vun den Wagongen +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Weist d'Kapazitéite vun de Waggonen STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Total Luedung STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Weist d'Total Kapazitéit vum Zuch, opgedeelt op d'Wuerentypen @@ -3620,34 +3708,34 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapazit # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Refit) -STR_REFIT_TITLE :{GOLD}Wielt den Luedungstyp: +STR_REFIT_TITLE :{GOLD}Wielt de Luedungstyp: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nei Kapazitéit: {GOLD}{CARGO_LONG}{}{BLACK}Käschten fir ëmzebauen: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nei Kapazitéit: {GOLD}{CARGO_LONG}{}{BLACK}Akommes vum Embau: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nei Kapazitéit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Käschten fir den Embau: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nei Kapazitéit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Akommes vum Embau: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Wiel d'Gefierer fir den Embau. Mat der Maus zéien erlaabt den Embau vun méi Gefierer. Op eng eidel Plaz klicken wielt d'ganzt Gefiert. Ctrl+Klick wielt e Gefiert an de Rescht vun der Ketten +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Wiel d'Gefierer fir den Embau. Mat der Maus zéien erlaabt den Embau vu méi Gefierer. Op eng eidel Plaz klicken wielt d'ganzt Gefier. Ctrl+Klick wielt e Gefier an de Rescht vun der Ketten -STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Selectéiert d'Luedung déi transportéiert soll ginn -STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wielt den Typ vun Wueren fir Stroossengefiert -STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Selèctéiert den Luedungstyp fir d'Schëff -STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Wielt den Luedungstyp aus +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Wielt d'Wuer déi transportéiert soll ginn +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wielt den Typ vu Wueren fir d'Stroossegefier +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Wielt de Wuerentyp fir d'Schëff +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Wielt de Wuerentyp aus -STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Zuch upassen -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Stroossengefiert ëmbauen +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Zuch ëmbauen +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Stroossegefier ëmbauen STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Schëff ëmbauen STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Fliger ëmbauen -STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Passt den Zuch un fir den ugewielten Luedungstyp -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroosengefiert embauen fir gewielten Wuer ze transportéiren -STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Schëff op dei ugewielten Luedung ëmbauen -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Baut den Fliger fir den ugewieltenen Luedungstyp ëm +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Passt den Zuch un den ugewielten Luedungstyp un +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroossegefier ëmbauen fir déi gewielte Wuer ze transportéiren +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Schëff fir déi ugewielte Wuer ëmbauen +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Baut de Fliger fir den ugewieltenen Luedungstyp ëm # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Opträg) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Zäitplang STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Wiesselt op d'Zäitplangunzeig -STR_ORDERS_LIST_TOOLTIP :{BLACK}Optragslëscht - Klick op en Optrag fir en ze selectéieren. Ctrl+Klick scrollt op d'Optragdestinatioun +STR_ORDERS_LIST_TOOLTIP :{BLACK}Optragslëscht - Klick op en Optrag fir en ze wielen. Ctrl+Klick scrollt op d'Optragdestinatioun STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3662,24 +3750,24 @@ STR_ORDER_GO_VIA :Géi via STR_ORDER_GO_NON_STOP_VIA :Géi non-stop iwwert STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Wiesselt d'Stoppen vun dem ungewielten Optrag -STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Voll lueden mat der Wuer -STR_ORDER_DROP_LOAD_IF_POSSIBLE :Lueden wann méiglech -STR_ORDER_DROP_FULL_LOAD_ALL :Alles voll lueden -STR_ORDER_DROP_FULL_LOAD_ANY :Voll lueden mat der Wuer +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Voll luede mat all Wuer +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Luede wa méiglech +STR_ORDER_DROP_FULL_LOAD_ALL :Mat Allem voll lueden +STR_ORDER_DROP_FULL_LOAD_ANY :Voll lueden mat all Wuer STR_ORDER_DROP_NO_LOADING :Net belueden -STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Wiesselt Lueden vun dem ungewielten Optrag +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Wiesselt d'Luedverhale vun dem ungewielten Optrag STR_ORDER_TOGGLE_UNLOAD :{BLACK}Alles entlueden -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Entlueden wann acceptéiert +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Entluede wann akzeptéiert STR_ORDER_DROP_UNLOAD :Alles entlueden STR_ORDER_DROP_TRANSFER :Transferéieren STR_ORDER_DROP_NO_UNLOADING :Net entlueden -STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Wiesselt Entlueden vun dem ungewielten Optrag +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Wiesselt d'Entluedverhale vun dem ungewielten Optrag STR_ORDER_REFIT :{BLACK}Ëmbauen -STR_ORDER_REFIT_TOOLTIP :{BLACK}Wielt wéi een Luedungstyp du wëlls. Ctrl+Klick fir den Ëmbau ze leschen -STR_ORDER_REFIT_AUTO :{BLACK}Auto-Erneiern -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wiel wellëch Wuerentypen sollen auto-ersat ginn an dësem Ueder. Ctrl+Klick fir all Auto-Erneierungen wechzehuelen. Auto-Erneiern geht just wann d'Gefiert ët erlaabt +STR_ORDER_REFIT_TOOLTIP :{BLACK}Wielt an wéi een Luedungstyp sollt emgebaut ginn. Ctrl+Klick fir den Ëmbau ze läschen +STR_ORDER_REFIT_AUTO :{BLACK}Embauen an der Statioun +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wiel wellëch Wuerentypen sollen auto-ersat ginn an dësem Optrag. Ctrl+Klick fir all Auto-Erneierungen wechzehuelen. Auto-Erneiern geht just wann d'Gefier ët erlaabt STR_ORDER_DROP_REFIT_AUTO :Festgelueten Wuer STR_ORDER_DROP_REFIT_AUTO_ANY :Verfügbar Wueren @@ -3689,7 +3777,7 @@ STR_ORDER_DROP_SERVICE_DEPOT :Revisioun falls STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Iwwersprang dësen Optrag wann keng Revisioun néideg ass -STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Gefiertsdaten als Basis fir den Optragssprong +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Gefierdaten als Basis fir den Optragssprong # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Prozent gelueden @@ -3700,54 +3788,54 @@ STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Brauch eng Revi STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Ëmmer STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Reschtlaafzäit (Joer) -STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Wéi Gefiertsdaten verglach sollen ginn +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Wéi Gefierdaten verglach solle ginn STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :ass gläich STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ass net gläich STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :ass manner wéi STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :ass manner oder gläich wéi STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :ass méi wéi STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :ass méi oder gläich wéi -STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :ass wouer(true) -STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :ass falsch(false) +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :ass richteg (true) +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :ass falsch (false) -STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Den Wäert deen mat den Gefiertsdaten verglach gëtt -STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Wäert anginn fir ze vergläichen +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}De Wäert dee mat de Gefierdaten verglach gëtt +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Wäert aginn fir ze vergläichen -STR_ORDERS_SKIP_BUTTON :{BLACK}Iwersprangen -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Iwersprang den momentanen Optrag. CTRL+Klick iwerspréngt op den ungewieltenen Optrag +STR_ORDERS_SKIP_BUTTON :{BLACK}Iwwersprangen +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Iwwersprang de momentanen Optrag. CTRL+Klick iwwerspréngt op den ungewieltenen Optrag -STR_ORDERS_DELETE_BUTTON :{BLACK}Leschen -STR_ORDERS_DELETE_TOOLTIP :{BLACK}Lescht den ungewieltenen Optrag -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}All Opträg leschen -STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Deelen stoppen -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stop d'Deelen vun der Optragslëscht. Ctrl+Klick lescht ausserdem all Opträg vun dësem Gefiert +STR_ORDERS_DELETE_BUTTON :{BLACK}Läschen +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Läscht den ungewielten Optrag +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}All Opträg läschen +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}D'Deele stoppen +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stop d'Deele vun der Optragslëscht. Ctrl+Klick lescht ausserdem all Opträg vun dësem Gefier STR_ORDERS_GO_TO_BUTTON :{BLACK}Géi op -STR_ORDER_GO_TO_NEAREST_DEPOT :Géi an den noosten Depot -STR_ORDER_GO_TO_NEAREST_HANGAR :Géi bei den noosten Hangar +STR_ORDER_GO_TO_NEAREST_DEPOT :Géi an den nooste Schapp +STR_ORDER_GO_TO_NEAREST_HANGAR :Géi an den noosten Hangar STR_ORDER_CONDITIONAL :Bedéngten Optragssprong STR_ORDER_SHARE :Opträg deelen -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Setzt en neien Optrag firun den ungewielten Optrag, oder un d'Enn vun der Lëscht. Ctrl setzt Statioun Opträg op voll lueden, Weepunkter op 'non-stop', an Depot Opträg 'Revisioun'. Op en Gefiert klicken, kopéiert d'Opträg vun dem Gefiert +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Setzt en neien Optrag firun den ungewielten Optrag, oder un d'Enn vun der Lëscht. Ctrl setzt Statioun Opträg op voll lueden, Weepunkter op 'non-stop', an Schapp Opträg 'Revisioun'. Op en Gefier klicken, kopéiert d'Opträg vun dem Gefier STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Weis all Gefierer déi dësen Plang deelen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Iwwert {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Géi non-stop via{WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Géi non-stop via {WAYPOINT} -STR_ORDER_SERVICE_AT :Revisioun bei -STR_ORDER_SERVICE_NON_STOP_AT :Revisioun non-stop bei +STR_ORDER_SERVICE_AT :Revisioun am/an +STR_ORDER_SERVICE_NON_STOP_AT :Revisioun non-stop am/an STR_ORDER_NEAREST_DEPOT :den noosten STR_ORDER_NEAREST_HANGAR :den noosten Hangar -STR_ORDER_TRAIN_DEPOT :Zuchdepot -STR_ORDER_ROAD_VEHICLE_DEPOT :Stroossengefierer-Depot -STR_ORDER_SHIP_DEPOT :Schëffdepot +STR_ORDER_TRAIN_DEPOT :Zuchschapp +STR_ORDER_ROAD_VEHICLE_DEPOT :Stroossegefier-Depot +STR_ORDER_SHIP_DEPOT :Schëffsschapp STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Ëmbau op {STRING}) -STR_ORDER_REFIT_STOP_ORDER :(Ëmbau op {STRING} an stopen) +STR_ORDER_REFIT_STOP_ORDER :(Ëmbau op {STRING} an stoppen) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -3766,34 +3854,34 @@ STR_ORDER_TRANSFER_FULL_LOAD :(Transferéiere STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferéieren an mat all Wuer voll lueden) STR_ORDER_TRANSFER_NO_LOAD :(Transferéieren an eidel loosen) STR_ORDER_NO_UNLOAD :(Net entlueden an Wueren lueden) -STR_ORDER_NO_UNLOAD_FULL_LOAD :(Net entlueden an op voll Beluedung warden) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Net entlueden an op iergendeng voll Beluedung warden) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Net entlueden an op voll Beluedung waarden) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Net entlueden an op iergendeng voll Beluedung waarden) STR_ORDER_NO_UNLOAD_NO_LOAD :(Keen Ent- an Belueden) -STR_ORDER_AUTO_REFIT :(Auto-Embauen zu {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Vollueden mat Auto-Embauen zu {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Vollueden mat all Wueren mat Auto-Embauen zu {STRING}) -STR_ORDER_UNLOAD_REFIT :(Entlueden an Wueren lueden mat Auto-Embauen zu {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Entlueden an op voll Luedung warden mat Auto-Embauen zu {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entlueden an warden op iergendeng Volluedung mat Auto-Embauen zu {STRING}) +STR_ORDER_AUTO_REFIT :(Embauen op {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Voll lueden mat Embauen op {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Voll lueden mat all Wueren mat Embauen op {STRING}) +STR_ORDER_UNLOAD_REFIT :(Entlueden an Wueren lueden mat Embauen op {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Entlueden an op voll Luedung waarden mat Embauen op {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entlueden an waard op iergendeng Volluedung mat Embauen op {STRING}) STR_ORDER_TRANSFER_REFIT :(Transfer an lued Wueren mat Auto-Embauen zu {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer an ward op Vollueden mat Auto-Embauen zu {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer an ward op iergendeng Volluedung mat Auto-Embauen zu {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Keen Entlueden an huel Wueren mat Auto-Embauen zu {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Keen Entlueden an ward op Vollueden mat Auto-Embauen zu {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Keen Entlueden an ward op iergendend Volluedung mat Auto-Embauen zu {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer an waard op Vollueden mat Auto-Embauen op {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer an waard op iergendeng Volluedung mat Auto-Embauen op {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Keen Entlueden an huel Wueren mat Auto-Embauen op {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Keen Entlueden an waard op Vollueden mat Auto-Embauen op {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Keen Entlueden an waard op iergendend Volluedung mat Auto-Embauen op {STRING}) STR_ORDER_AUTO_REFIT_ANY :verfügbar Wueren -STR_ORDER_STOP_LOCATION_NEAR_END :[noot Enn] +STR_ORDER_STOP_LOCATION_NEAR_END :[noosten Enn] STR_ORDER_STOP_LOCATION_MIDDLE :[Mëtt] STR_ORDER_STOP_LOCATION_FAR_END :[wäit Enn] STR_ORDER_OUT_OF_RANGE :{RED} (Nächst Destinatioun ass ze wäit fort) -STR_ORDER_CONDITIONAL_UNCONDITIONAL :Sprang op Optrag {COMMA} -STR_ORDER_CONDITIONAL_NUM :Sprang op Optrag {COMMA} wann {STRING} {STRING} {COMMA} -STR_ORDER_CONDITIONAL_TRUE_FALSE :Sprang op Optrag {COMMA} wann {STRING} {STRING} +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Sprang zum Optrag {COMMA} +STR_ORDER_CONDITIONAL_NUM :Sprang zum Optrag {COMMA} wann {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Sprang zum Optrag {COMMA} wann {STRING} {STRING} STR_INVALID_ORDER :{RED} (ongültegen Optrag) @@ -3805,49 +3893,53 @@ STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Wiesselt STR_TIMETABLE_TOOLTIP :{BLACK}Zäitplang - klick op en Optrag fir en ze wielen STR_TIMETABLE_NO_TRAVEL :Net ënnerwee -STR_TIMETABLE_NOT_TIMETABLEABLE :Rees(automatesch; Zaitplang durch manuell Opträg) +STR_TIMETABLE_NOT_TIMETABLEABLE :Rees (automatesch; Zäitplang durch manuell Opträg) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Ënnerwee (ouni Zäitplang) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Fiert maximal {2:VELOCITY} (ouni Stonneplang) -STR_TIMETABLE_TRAVEL_FOR :Ënnerwee fir {STRING} -STR_TIMETABLE_TRAVEL_FOR_SPEED :Fiert fir {STRING} mat maximal {VELOCITY} +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Fuer maximal {2:VELOCITY} (ouni Zäitplang) +STR_TIMETABLE_TRAVEL_FOR :Ënnerwee während {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Fiert während {STRING} mat maximal {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Fuer (während {STRING}, ouni Zäitplang) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Fuer (während {STRING}, ouni Zäitplang) mat maximal {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(bleif während {STRING}, ouni Zäitplang) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(fuer während {STRING}, ouni Zäitplang) STR_TIMETABLE_STAY_FOR :an bleif fir {STRING} -STR_TIMETABLE_AND_TRAVEL_FOR :an ënnerwee op {STRING} -STR_TIMETABLE_DAYS :{COMMA} D{P ag eeg} -STR_TIMETABLE_TICKS :{COMMA} Intervall{P "" en} +STR_TIMETABLE_AND_TRAVEL_FOR :an ënnerwee während {STRING} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}D{P ag eeg} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}Tick{P "" en} -STR_TIMETABLE_TOTAL_TIME :{BLACK}Dësen Zäitplang brauch {STRING} fir faërdeg ze gin +STR_TIMETABLE_TOTAL_TIME :{BLACK}Dësen Zäitplang brauch {STRING} fir faërdeg ze ginn STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Dësen Zäitplang brauch op manst {STRING} (net all geplangt) -STR_TIMETABLE_STATUS_ON_TIME :{BLACK}D'Gefiert ass mat Zäit -STR_TIMETABLE_STATUS_LATE :{BLACK}D'Gefiert ass grad {STRING} ze spéit -STR_TIMETABLE_STATUS_EARLY :{BLACK}D'Gefiert ass grad {STRING} ze fréi +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}D'Gefier ass mat Zäit +STR_TIMETABLE_STATUS_LATE :{BLACK}D'Gefier ass grad {STRING} ze spéit +STR_TIMETABLE_STATUS_EARLY :{BLACK}D'Gefier ass grad {STRING} ze fréi STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Dësen Zäitplang gouf nach net gestart STR_TIMETABLE_STATUS_START_AT :{BLACK}Dësen Zäitplang start um {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Start Datum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wiel en Datum als Startpunkt fir dësen Zäitplang. Ctrl+Klick setzt den Startpunkt vun dësem Zäitplang an verdeelt et en gläichméisseg op all Gefierer déi dësen Ueder hunn, wann den Ueder komplett mat engem Zäitplang versinn ass +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wiel en Datum als Startpunkt fir dësen Zäitplang. Ctrl+Klick setzt de Startpunkt vun dësem Zäitplang an verdeelt et en gläichméisseg op all Gefierer déi dësen Optrag hunn, wann den Optrag komplett mat engem Zäitplang versinn ass STR_TIMETABLE_CHANGE_TIME :{BLACK}Zäit wiesselen -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Änner Zäit déi den ugewielten Optrag brauchen soll +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Änner Zäit déi den ugewielten Optrag brauche soll STR_TIMETABLE_CLEAR_TIME :{BLACK}Zäit läschen -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Lesch Zäit fir den gewielten Optrag +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Läsch Zäit fir de gewielten Optrag STR_TIMETABLE_CHANGE_SPEED :{BLACK}Änner de Geschwindegkeetslimit -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Änner d'maximal Reesgeschwindëgkeet fir den gewielten Optrag +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Änner d'maximal Reesgeschwindëgkeet fir de gewielten Optrag -STR_TIMETABLE_CLEAR_SPEED :{BLACK}Geschwindegkeetslimit leschen -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Maximal Reesgeschwindegkeet vum gewielten Optrag leschen +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Geschwindegkeetslimit läschen +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Maximal Reesgeschwindegkeet vum gewielten Optrag läschen STR_TIMETABLE_RESET_LATENESS :{BLACK}Verspeidungszieler zerécksetzen -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Setzt den Verspéidungszieler zréck, sou dass d'Gefiert mat Zäit ukënnt +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Setzt de Verspéidungszieler zréck, sou dass d'Gefier mat Zäit ukënnt STR_TIMETABLE_AUTOFILL :{BLACK}Autofëllen -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fëll den Zäitplang automatesch mat den Wäerter vum nächsten Trajet (Ctrl+Klick fir Wardzäiten probéiren bäizehalen) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fëll den Zäitplang automatesch mat de Wäerter vum nächsten Trajet (Ctrl+Klick fir Wardzäiten probéiren bäizehalen) -STR_TIMETABLE_EXPECTED :{BLACK}Erwaart +STR_TIMETABLE_EXPECTED :{BLACK}Erwaard STR_TIMETABLE_SCHEDULED :{BLACK}Geplangt -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Tëschent erwaart an geplangt wiesselen +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Tëschent erwaard a geplangt wiesselen STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3856,7 +3948,7 @@ STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Datum setzen STR_DATE_SET_DATE :{BLACK}Datum setzen -STR_DATE_SET_DATE_TOOLTIP :{BLACK}Den gewielten Datum als Startdatum fir den Zäitplang benotzen +STR_DATE_SET_DATE_TOOLTIP :{BLACK}De gewielten Datum als Startdatum fir den Zäitplang benotzen STR_DATE_DAY_TOOLTIP :{BLACK}Dag wielen STR_DATE_MONTH_TOOLTIP :{BLACK}Mount wielen STR_DATE_YEAR_TOOLTIP :{BLACK}Joer wielen @@ -3874,35 +3966,35 @@ STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Erlab/Ve STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Break un/op: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Break un STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Wann en KI Log message zum String passt, pauséiert d'Spill -STR_AI_DEBUG_MATCH_CASE :{BLACK}Passenden Fall -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Wiessel tëscht passenden Fäll beim vergläichen vun KI Log Messagen mam Break-String +STR_AI_DEBUG_MATCH_CASE :{BLACK}Passende Fall +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Wiessel tëscht passende Fäll beim vergläichen vu KI Log Messagen mam Break-String STR_AI_DEBUG_CONTINUE :{BLACK}Weider STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Entpaus an fuer weider mat der KI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Debug-output fir dës KI uweisen STR_AI_GAME_SCRIPT :{BLACK}Spill-Script -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check den Spill-Scipt-Log +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check de Spill-Scipt-Log -STR_ERROR_AI_NO_AI_FOUND :Keng passend KI fonnt fir ze lueden.{}Dës KI ass en Dummy an wäert näischt maachen.{}KI'en kënnen iwwert den 'Online Content' System downgeload gin. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}En Script ass ofgestierzt. W.e.g mellt des dem Autor mat engem Screenshot vun der KI/Spill-Script Debugfënster +STR_ERROR_AI_NO_AI_FOUND :Keng passend KI fonnt fir ze lueden.{}Dës KI ass en Dummy an wäert näischt maachen.{}KI'en kënnen iwwert den 'Online Content' System downgeload ginn. +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}En Script ass ofgestierzt. W.e.g mellt dës dem Autor mat engem Screenshot vun der KI/Spill-Script Debugfënster STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}KI / Spill-Script Debugfënster ass nëmmen fir Serveren verfügbar # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}KI /Spill-Script Konfiguratioun -STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}D'Spill-Script dat am nächsten Spill gelueden gëtt -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}D'KIën déi am nächsten Spill gelueden ginn -STR_AI_CONFIG_HUMAN_PLAYER :Mënschlechen Spiller +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}D'Spill-Script dat am nächsten Spill geluede gëtt +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}D'KIën déi am nächsten Spill geluede ginn +STR_AI_CONFIG_HUMAN_PLAYER :Mënschleche Spiller STR_AI_CONFIG_RANDOM_AI :Zoufälleg KI STR_AI_CONFIG_NONE :(keng) STR_AI_CONFIG_MOVE_UP :{BLACK}No uewen setzen -STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Gewielten KI an der Lëscht no uewen setzen +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Gewielte KI an der Lëscht no uewen setzen STR_AI_CONFIG_MOVE_DOWN :{BLACK}Erof setzen -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Gewielten KI an der Lëscht no ënnen setzen +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Gewielte KI an der Lëscht no ënne setzen STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spill-Script STR_AI_CONFIG_AI :{SILVER}KIën -STR_AI_CONFIG_CHANGE :{BLACK}Selectéier {STRING} +STR_AI_CONFIG_CHANGE :{BLACK}Wiel {STRING} aus STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :KI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spill-Script @@ -3920,8 +4012,8 @@ STR_AI_LIST_AUTHOR :{LTBLUE}Autor: STR_AI_LIST_VERSION :{LTBLUE}Versioun: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} -STR_AI_LIST_ACCEPT :{BLACK}Acceptéiert -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Selectéiert ungewielte Script +STR_AI_LIST_ACCEPT :{BLACK}Akzeptéiert +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Wiel de markéierten Script STR_AI_LIST_CANCEL :{BLACK}Ofbriechen STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Script net änneren @@ -3932,13 +4024,15 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spill-Script STR_AI_SETTINGS_CLOSE :{BLACK}Zoumaachen STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_START_DELAY :Unzuel vun Deeg wou dës KI gestart gëtt no der leschter: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Unzuel un Deeg wou des KI gestart gëtt no der leschter: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme vun {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} Changelog vun {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} Lizenz vun {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Text änneren +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ännert den Text vun der Fënster esou dass alles erapasst ouni ze scrollen STR_TEXTFILE_VIEW_README :{BLACK}Readme liesen STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lizenz @@ -3959,54 +4053,54 @@ STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED STR_INCOME_FLOAT_COST :{RED}Käschten: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Akommes: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Akommes: {CURRENCY_LONG} -STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG} -STR_FEEDER :{YELLOW}Transfer: {CURRENCY_LONG} -STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Akommes: {CURRENCY_LONG} -STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Akommes: {CURRENCY_LONG} -STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Käschten: {CURRENCY_LONG} -STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Käschten: {CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_COST :{WHITE}Geschätzten Käschten: {CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschätzten Akommen: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfert: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Transfert: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transfert: {CURRENCY_LONG}{WHITE} / {GREEN}Akommes: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfert: {CURRENCY_LONG}{WHITE} / {GREEN}Akommes: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfert: {CURRENCY_LONG}{WHITE} / {RED}Käschten: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfert: {CURRENCY_LONG}{WHITE} / {RED}Käschten: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Geschätzte Käschten: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschätzten Akommes: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach umgaangen ze späicheren. {} Weg. waarden bis daat faerdeg ass! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach amgaangen ze späicheren. {} W.e.g. waarde bis daat fäerdeg ass! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fehler beim Autospäicheren STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kann net um Laafwierk liesen STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fehler beim Späicheren{}{STRING} -STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kann d'Datei net leschen +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kann d'Datei net läschen STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fehler beim Lueden{}{STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internen Fehler: {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne Fehler: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Futtissen Spillstand - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillstand ass mat enger méi neier Versioun gemaach STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datei net liesbar STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Datei net beschreiwbar STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Datenintegritéitfehler -STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spill gouf an enger Versioun ouni Tram support gesaved. All Tram gouf wechgeholl # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kaartenerstellung ofgebrach...{}... keng passend Stadplazen -STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... et ass keen Duerf an dësem Szenario +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... et ass keng Stad an dësem Szenario STR_ERROR_PNGMAP :{WHITE}Kann d'Landschaft net vum PNG lueden... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... Datei net fonnt -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... konnt den Bildtyp net konvertéieren. 8 oder 24-bit PNG Bild benéidegt. +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... konnt de Bildtyp net konvertéieren. Brauch en 8 oder 24-bit PNG Bild. STR_ERROR_PNGMAP_MISC :{WHITE}... eppes ass schief gaangen (warscheinlech eng korrupt Datei) STR_ERROR_BMPMAP :{WHITE}Kann d'Landschaft net aus der BMP lueden... -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... konnt den Bildtyp net konvertéieren +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... konnt de Bildtyp net konvertéieren STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... Bild ass ze grouss STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Scaléirungswarnung -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Quellenkaart zevill an der Gréisst änneren ass net ugeroden. Weiderman ? +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Quellekaart zevill an der Gréisst änneren ass net ugeroden. Weiderman ? # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Et gouf nëmmen en Ersatzsoundset fonnt. Wann Sounds erwënscht sin, kënnen se iwwer den Downloadsystem installéiert ginn. +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Et gouf nëmmen en Ersatzsoundset fonnt. Wann Sounds erwënscht sinn, kënnen se iwwer den Downloadsystem installéiert ginn. # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Riesenscreenshot -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Den Screenshot wäert eng Opléisung vun{COMMA} x {COMMA} Pixel hunn. Et kann e bëssen dauern bis en gemet ass. Wëllsde weiderman? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}De Screenshot wäert eng Opléisung vun {COMMA} x {COMMA} Pixel hunn. Et kann e bëssen dauere bis en gemet ass. Wëllsde weiderman? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot gespäichert als '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshotfehler! @@ -4018,27 +4112,27 @@ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Matdeel # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Ausserhalb vun der Kaart STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Ze noo um Rand vun der Kaart -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Net genuch Geld - dës Aktioun kascht {CURRENCY_LONG} +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Net genuch Geld - des Aktioun kascht {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}D'Land muss flaach sinn -STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land ass an dei falsch Richtung geneigt +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land ass an déi falsch Richtung geneigt STR_ERROR_CAN_T_DO_THIS :{WHITE}Kann dat net maachen... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebai muss fir d'éischt ofgerapt ginn -STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann dei Plaz net frai maachen... +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann des Plaz net raumen... STR_ERROR_SITE_UNSUITABLE :{WHITE}... Plaz net gëeegent -STR_ERROR_ALREADY_BUILT :{WHITE}... schon gebaut +STR_ERROR_ALREADY_BUILT :{WHITE}... scho gebaut STR_ERROR_OWNED_BY :{WHITE}... am Besëtz vun {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... d'Plaz ass am Besëtz vun enger aanerer Firma -STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... Limit fir d'Emformen vun Land erreescht -STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... Limit fir d'Läschen vun Felder erreescht -STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... Limit fir Beem ze planzen erreescht -STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Numm muss eenzegartëg sinn +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... Limit fir d'Emformen vu Land erreecht +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... Limit fir d'Raume vu Felder erreecht +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... Limit fir Beem ze planzen erreecht +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Numm muss eenzegarteg sinn STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} am Wee STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Net erlaabt an der Paus # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} d'Gemeng wëll dat net erlaaben -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} d'Gemeng erlaabt keen weideren Fluchhafen an der Stad -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}er Gemeng refüséiert den Bau fir den Fluchhafen wéinst Kaméidi +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}D'Gemeng {TOWN} wëll dat net erlaben +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}D'Gemeng {TOWN} erlaabt keen weidere Fluchhafen an der Stad +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}D'Gemeng {TOWN} refuséiert de Bau vum Fluchhafen wéinst Kaméidi STR_ERROR_BRIBE_FAILED :{WHITE}D'Bestiechung as enger regionaler Ennersichung opgefall # Levelling errors @@ -4048,74 +4142,78 @@ STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Kann d'L STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Verdéiwung géif den Tunnel beschiedegen STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... schon op Mieresspigel STR_ERROR_TOO_HIGH :{WHITE}... ze héich -STR_ERROR_ALREADY_LEVELLED :{WHITE}... schon flaach +STR_ERROR_ALREADY_LEVELLED :{WHITE}... scho flaach +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Dono wier d'Bréck ze héich fir dësen Terrain. # Company related errors -STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kann den Firmennumm net änneren... +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kann de Firmennumm net änneren... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kann den Numm vum Manager net änneren... -STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... Maximalen Kredit ass {CURRENCY_LONG} +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maximale Kredit ass {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kann net méi Geld léinen... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... keen Kredit zeréckzebezuelen STR_ERROR_CURRENCY_REQUIRED :{WHITE}... et ginn {CURRENCY_LONG} gebraucht -STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kann den Kredit net zeréckbezuelen... +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kann de Kredit net zeréckbezuelen... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kann keng Suen ginn déi vun der Bank geléint sinn... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kann d'Firma net kafen... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kann d'Firmenhaaptgebai net bauen... -STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kann keng 25% Undeel vun dëser Firma kafen... -STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann kéng 25% Undeel vun dëser Firma verkafen... -STR_ERROR_PROTECTED :{WHITE}Dës Firma ass nach net aal genuch fir Undeeler ze handelen... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kann keng 25% Undeeler vun dëser Firma kafen... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann keng 25% Undeeler vun dëser Firma verkafen... +STR_ERROR_PROTECTED :{WHITE}Des Firma ass nach net al genuch fir Undeeler ze handelen... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kann keng Stiedt bauen -STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kann d'Stad net ëmbënennen... +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Ka keng Stied bauen +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kann d'Stad net ëmbenennen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kann d'Stad hei net bauen... -STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kann d'Stad net vergréissern... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kann d'Stad net vergréisseren... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ze noo um Enn vun der Kaart -STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ze noo un enger aanerer Stadt +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ze noo un enger anerer Stad STR_ERROR_TOO_MANY_TOWNS :{WHITE}... ze vill Stied STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... et ass keng Plaz méi op der Kaart -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Stied bauen keng Stroossen. Du kanns den Bau iwwert Erweidert Astellungen->Economie->Stied anschalten -STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Stroossenarbeschten umgaangen -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kann des Stad net leschen...{}Eng Statioun oder Depot huet den Numm vun dëser Stad oder en Stéck dat der Stad gehéiert kann net ewechgeholl ginn -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... et gëtt keng Gëeegent Plaz fir eng Statue am Stadzentrum +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Stied bauen keng Stroossen. Du kanns de Bau iwwert Astellungen->Economie->Stied aschalten +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Stroossenarbeschten amgaangen +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kann des Stad net läschen...{}Eng Statioun oder Schapp huet den Numm vun dëser Stad oder en Stéck dat der Stad gehéiert kann net ewechgeholl ginn +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... et gëtt keng gëeegent Plaz fir eng Statu am Stadzentrum # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... zevill Industrien STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann keng Industrien bauen... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kann {STRING} net hei bauen... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kann deen Industrietyp hei net bauen... -STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ze Noo bei enger aanerer Fabrik -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... muss fir d'éischt eng Stadt bauen +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ze noo bei enger anerer Fabrik +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... muss fir d'éischt eng Stad bauen STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... nëmmen 1 pro Stad erlaabt -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kann nëmmen an Stiedt mat opmannst 1200 Anwunner gebaut ginn -STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kann nëmmen am Regenwaldgebitt gebaut ginn +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kann nëmmen an Stied mat op mannst 1200 Anwunner gebaut ginn +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kann nëmmen am Reebësch gebaut ginn STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kann nëmmen an der Wüst gebaut ginn -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kann nëmmen an Stied gebaut ginn (ersetzt Haiser) +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kann nëmmen a Stied gebaut ginn (ersetzt Haiser) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kann nëmmen an der Géigend vum Zentrum vun der Stad gebaut ginn STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kann nëmmen an niddregen Beräicher gebaut ginn STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kann nëmmen no un den Ecker vun der Kaart positionéiert ginn STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... Bësch kann nëmmen iwwert der Schnéilinn geplanzt ginn STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kann nëmmen iwwert der Schnéilinn gebaut ginn -STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann net ënnert der Schnéilinn bauen +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann nëmmen ënnert der Schnéilinn gebaut ginn + +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Et gouf keng brauchbar Plaz fir '{STRING}' Industrien fonnt +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Änner d'Parameter fir d'Kaartegeneratioun fir eng besser Kaart ze erstellen # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kann d'Gare hei net bauen... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kann de Busarrêt hei net bauen... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann d'Camionsgare net bauen... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kann d'Passagéier-Tramstatioun net bauen... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kann d'Passagéier-Tramsarrêt net bauen... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kann d'Wueren-Tramstatioun net bauen... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kann den Dock hei net bauen... -STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kann den Fluchhafen hei net bauen... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kann de Fluchhafen hei net bauen... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenzt un méi wéi eng Gare un STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... Statioun ze ausgebreed -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Ze vill Garen +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Ze vill Garen/Luedstatiounen STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Ze vill Garesdeeler STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Ze vill Busarrêten STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Ze vill Camionsgaren -STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ze noo un enger aanerer Gare -STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ze noo bei engem aanerem Hafen +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ze noo un enger aanerer Gare/Luedstatioun +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ze noo un engem aanerem Hafen STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Ze noo un engem aaneren Fluchhafen STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kann d'Statioun net ëmbenennen... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... d'Strooss ass am Besëtz vun der Stad @@ -4125,21 +4223,21 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... Duer # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kann den Deel vun der Gare net ofrappen... -STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Musst d'Gare fir d'éischt ofrappen +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Muss d'Gare fir d'éischt ofrappen STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kann de Busarrêt net ofrappen... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kann d'Camionsgare net ofrappen... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kann d'Tramstatioun net ofrappen... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kann d'Wueren-Tramstatioun net ofrappen... -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Stroossenstop muss fir d'éischt wechgeholl ginn +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Busarrêt muss fir d'éischt wechgeholl ginn STR_ERROR_THERE_IS_NO_STATION :{WHITE}... et ass keng Statioun do -STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Musst d'Gare fir d'éischt ofrappen +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Muss d'Gare fir d'éischt ofrappen STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Busarrêt muss fir d'éischt ofgerapt ginn STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Muss d'Camionsgare fir d'éischt ofrappen STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Muss d'Tramstatioun fir d'éischt ofrappen STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Muss d'Tramstatioun fir d'éischt ofrappen STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Muss den Hafen fir déischt ofrappen -STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Musst den Fluchhafen fir d'éischt ofrappen +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Muss de Fluchhafe fir d'éischt ofrappen # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenzt un méi wéi een Weepunkt @@ -4147,38 +4245,38 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Ze no un STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kann keen Zuchweepunkt héi bauen... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kann Boje net hei plazéieren... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kann den Weepunktnumm net änneren... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kann de Weepunktnumm net änneren... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann den Wee-Punkt hei net ofrappen... +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann de Wee-Punkt hei net ofrappen... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Zuchweepunkt muss fir d'éischt ofgerappt ginn STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... Boje am Wee STR_ERROR_BUOY_IS_IN_USE :{WHITE}... Boje ass am Gebrauch vun enger anerer Firma! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kann den Zuchdepot hei net bauen... -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kann den Depot hei net bauen... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kann den Zuchschapp hei net bauen... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kann de Schapp hei net bauen... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kann den Tramschapp hei net bauen... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kann de Schëffdepot hei net bauen... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kann de Schëffsschapp hei net bauen... -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kann den Depot net ëmbenennen +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kann de Schapp net ëmbenennen -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... muss an engem Depot gestoppt ginn +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... muss an engem Schapp gestoppt ginn STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... muss an engem Depot gestoppt ginn -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... muss an engem Schëffdepot gestoppt ginn +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... muss an engem Schëffsschapp gestoppt ginn STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... muss an engem Hangar gestoppt ginn -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Zich kënnen nëmmen an engem Depot verännert ginn +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Zich kënnen nëmmen an engem Schapp verännert ginn STR_ERROR_TRAIN_TOO_LONG :{WHITE}Zuch ze laang -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kann d'Gefiert hei net ëmdréinen... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... ass aus e puer Eenheeten zesummengesat -STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Onkompatibel Schinnen Typen +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kann d'Gefier hei net ëmdréinen... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... ass aus e puer Eenheeten zesummegesat +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Onkompatibel Schinnentypen -STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kann d'Gefiert net réckelen... +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kann d'Gefier net réckelen... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}D'hënnescht Maschinn geet ëmmer der viischter no. -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kann den Wee an den Depot net fannen -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kann den Depot net fannen +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kann de Wee an de Schapp net fannen +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kann de Schapp net fannen -STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Falschen Depot-Typ +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Falschen Schapp-Typ # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} ass ze laang nom Auswiesselen @@ -4187,18 +4285,18 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(Geldlimit) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Onméiglech Streckenkombinatioun -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Signaler mussen fir d'éischt wechgeholl ginn +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Signaler mussen fir d'éischt ewechgeholl ginn STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Keng gëeegent Schinnen -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}D'Schinnen mussen fir d'éischt ewech -STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}D'Strooss ass eng Richtung oder blockéiert -STR_ERROR_CROSSING_DISALLOWED :{WHITE}Héich Kräizungen sinn fir dësen Schinnentyp net erlaabt +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}D'Schinne musse fir d'éischt ewech +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}D'Strooss ass eng Einbahn oder blockéiert +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Barrièren si fir dësen Schinnentyp net erlaabt STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kann d'Signaler hei net bauen... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kann d'Schinnen hei net bauen... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kann d'Schinnen hei net ewech huelen... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kann d'Signaler hei net ewech huelen... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kann d'Signal hei net konvertéieren... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... et sinn keng Schinnen do -STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... et sinn keng Signaler do +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... et si keng Schinnen do +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... et si keng Signaler do STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kann de Schinnentyp hei net konvertéiren... @@ -4206,43 +4304,44 @@ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kann de STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Muss d'Strooss ewech huelen STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... Einbahnstroossen kënnen keng Kräizung hunn STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann d'Strooss hei net bauen... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kann den Tram heinet bauen... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kann den Tram hei net bauen... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann d'Strooss hei net ewech huelen... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kann den Tram net wech huelen... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kann den Tram net ewech huelen... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... et ass keng Strooss do STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... et ass keen Tram do # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kann hei keen Kanal bauen... -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kann keen Schlass hei setzen... -STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kann hei keen Floss platzéiren... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kann d'Schleis hei net bauen... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kann hei kee Floss plazéiren... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... muss op Waasser gebaut ginn -STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Kann net op d'Waasser bauen +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kann net op d'Waasser gebaut ginn STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kann net op opener Séi bauen STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kann net um Kanal bauen STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kann net um Floss bauen -STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Musst den Kanal fir d'éischt ofrappen -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kann den Aquadukt héi net bauen... +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Muss de Kanal fir d'éischt ofrappen +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kann den Aquadukt hei net bauen... # Tree related errors -STR_ERROR_TREE_ALREADY_HERE :{WHITE}... schon Beem hei -STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... falschen Terrain fir free type +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... et ass schon e Bam hei +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... falschen Terrain fir dësen Typ bam STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kann d'Beem hei net planzen... # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kann d'Bréck net hei bauen... -STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Musst d'Bréck fir d'éischt ofrapen -STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kann net op der selweschter Plaz unfänken an ophalen +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kann d'Bréck hei net bauen... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Muss d'Bréck fir d'éischt ofrappen +STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kann net op der selwechter Plaz ufänken an ophalen STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bréckenenner net op der selwechter Héicht -STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bréckass ze déif fir dësen Terrain +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bréck ass ze déif fir dësen Terrain +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Bréck ass ze héich fir dësen Terrain. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start an Enn mussen op enger Linn sinn -STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... dei zwee Enner vun der Bréck mussen um Land sinn +STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... dei zwee Enner vun der Bréck mussen u Land sinn STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... Bréck ze laang STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bréck géif ausserhalb der Kaart ukommen # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kann den Tunnel hei net bauen... -STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plaz onpassend fir Tunnelentrée +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plaz onpassend fir den Tunnelsagang STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Muss den Tunnel fir d'éischt ofrappen STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Aaneren Tunnel am Wee STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnel géif ausserhalb der Kaart erauskommen @@ -4250,85 +4349,86 @@ STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kann d'L STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... Tunnel ze laang # Object related errors -STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... zevill Objekter -STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kann Objekt net bauen... +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... zevill Objeten +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kann Objet net bauen... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objet am Wee STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... Firmen Haaptgebai am Wee -STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kann daat Land net kafen... +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kann dat Land net kafen... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... schon am Besëtz! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kann d'Grupp net erstellen... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kann d'Grupp net läschen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kann d'Grupp net ëmbenennen... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kann iwwergeuerdent Grupp net setzen... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kann net all d'Gefierer aus der Grupp läschen... -STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kann d'Gefiert net bei d'Grupp bäisetzen... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kann d'Gefier net bei d'Grupp bäisetzen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kann dei gedeelten Gefierer net bei d'Grupp bäisetzen... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Zuch am Wee -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Stroossengefiert am Wee +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Stroossegefier am Wee STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Schëff am Wee STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Fliger am Wee -STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kann den Zuch net unpassen... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kann Stroossengefiert net ëmbauen... +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kann den Zuch net ëmbauen... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kann Stroossegefier net ëmbauen... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kann d'Schëff net ëmbauen... -STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kann den Fliger net ëmbauen... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kann de Fliger net ëmbauen... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kann den Zuch net benennen... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kann d'Stroossengefiert net benennen... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kann d'Stroossegefier net benennen... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kann d'Schëff net benennen... -STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kann den Fliger net benennen... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kann de Fliger net benennen... -STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kann den Zuch net starten/stopen... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kann d'Stroossengefiert net stoppen/starten... +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kann den Zuch net stoppen/starten... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kann d'Stroossegefier net stoppen/starten... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kann d'Schëff net stoppen/starten... -STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kann den Fliger net stoppen/starten... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kann de Fliger net stoppen/starten... -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kann den Zuch net an den Depot schécken... -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kann d'Gefiert net an den Depot schécken... -STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kann d'Schëff net an den Depot schécken... -STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kann den Fliger net an den Hangar schécken... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kann den Zuch net an de Schapp schécken... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kann d'Gefier net an den Depot schécken... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kann d'Schëff net an de Schapp schécken... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kann de Fliger net an den Hangar schécken... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kann den Zuch net bauen... -STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kann d'Stroossengefiert net kafen... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kann d'Stroossegefier net kafen... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kann Schëff net kafen... -STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kann den Fliger net kafen... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kann de Fliger net kafen... -STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kann den Zuchgefierttyp net ëmbenennen... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kann den Gefierttyp net ëmbenennen... -STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kann den Schëffstyp net ëmbenennen... -STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kann den Fligertyp net ëmbenennen... +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kann den Zuchgefiertyp net ëmbenennen... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kann de Gefiertyp net ëmbenennen... +STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kann de Schëffstyp net ëmbenennen... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kann de Fligertyp net ëmbenennen... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kann den Zuch net verkafen... -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kann d'Stroossengefiert net verkafen... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kann d'Stroossegefier net verkafen... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kann Schëff net verkafen... -STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kann dën Fliger net verkafen... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kann de Fliger net verkafen... -STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Gefiert net verfügbar -STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Stroossengefiert net verfügbar +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Gefier net verfügbar +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Stroossegefier net verfügbar STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Schëff net verfügbar STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Fliger net verfügbar STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Ze vill Gefierer am Spill -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Den Service-Intervall kann net geännert ginn... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}De Service-Intervall kann net geännert ginn... -STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... Gefiert ass zerstéiert +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... Gefier ass zerstéiert STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Keng Gefierer verfügbar STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Änner d'NewGRF Konfiguratioun STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nach keng Gefierer verfügbar -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}En neit Spill no {DATE_SHORT} ufenken oder benotz en NewGRF den aal Gefierer erlabt +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}En neit Spill no {DATE_SHORT} ufenken oder benotz en NewGRF den al Gefierer erlaabt # Specific vehicle errors -STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann den Zuch net bei Gefohr lanscht d'Signal schecken... +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann den Zuch net bei Gefor durch d'Signal schécken... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kann d'Richtung vum Zuch net änneren... STR_ERROR_TRAIN_START_NO_POWER :Zuch huet keng Kraaft -STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kann d'Stroossengefiert net ëmdréinen... +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kann d'Stroossegefier net ëmdréinen... -STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Fliger ass um Fluch +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Fliger ass an der Loft # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Keng Plaz méi fir Opträg @@ -4336,23 +4436,23 @@ STR_ERROR_TOO_MANY_ORDERS :{WHITE}Ze vill STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kann keen neien Optrag bäisetzen... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kann den Optrag net läschen... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kann den Optrag net änneren... -STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kann den Optraag net réckelen... -STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kann den Optrag net iwersprangen... -STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kann net op den ugewieltenen Optrag iwersprangen... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kann den Optrag net réckelen... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kann den Optrag net iwwersprangen... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kann net op den ugewieltenen Optrag iwwersprangen... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... Gefier kann net op all Statioun goen -STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... Gefiert kann nët op déi Statioun goen -STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... en Gefiert dat dësen Optrag deelt kann net op déi Statioun goen +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... Gefier kann net op déi Statioun goen +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... en Gefier dat dësen Optrag deelt kann net op déi Statioun goen STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kann d'Optragslëscht net deelen... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kann d'Deelen vun der Optragslëscht net stoppen... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kann d'Optragslëscht net kopéieren... -STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ze wäit vun leschter Destinatioun +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ze wäit ewech vu leschter Destinatioun STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... Fliger huet net genuch Distanz # Timetable related errors -STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kann dem Gefiert keen Zäitplang gin. -STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Gefierter kënnen nëmmen op Statiounen halen. -STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dëst Gefiert bleift net op dëser Statioun stoën. +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kann dem Gefier keen Zäitplang ginn... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Gefierer kënnen nëmmen op Statiounen halen. +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dëst Gefier bleift net op dëser Statioun stoën. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... ze vill Schëlder @@ -4369,37 +4469,37 @@ STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transp STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Grafik. STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Editioun Sound. STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Sound. -STR_BASESOUNDS_NONE_DESCRIPTION :En Soundpack mat all den Sounds. -STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Music. +STR_BASESOUNDS_NONE_DESCRIPTION :E Soundpack ouni iergendee Sound. +STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Musik. STR_BASEMUSIC_NONE_DESCRIPTION :E Musikpack ouni aktuell Musik. ##id 0x2000 # Town building names -STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Héichen Büroblock +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Héije Büroblock STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Büroblock -STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Klengen Apartementsblock +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Klengen Appartementsblock STR_TOWN_BUILDING_NAME_CHURCH_1 :Kierch -STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Groussen Büroblock +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Grousse Büroblock STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Stadhaiser STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Statu STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Sprangbuer STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Büroblock -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Geschäfter an Büroen +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Geschäfter a Büroen STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modernt Bürosgebai STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Lagerhaus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Büroblock -STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium -STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Aal Haiser +STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Al Haiser STR_TOWN_BUILDING_NAME_COTTAGES_1 :Hütten STR_TOWN_BUILDING_NAME_HOUSES_1 :Haiser -STR_TOWN_BUILDING_NAME_FLATS_1 :Apartementer -STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Héichen Gewerbeblock -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Geschäfter an Büroen -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Geschäfter an Büroen +STR_TOWN_BUILDING_NAME_FLATS_1 :Appartementer +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Héije Bürosblock +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Geschäfter a Büroen +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Geschäfter a Büroen STR_TOWN_BUILDING_NAME_THEATER_1 :Theater -STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium +STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Büroen STR_TOWN_BUILDING_NAME_HOUSES_2 :Haiser STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino @@ -4411,7 +4511,7 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Spuerschwäin-B ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :Kuelenstollen +STR_INDUSTRY_NAME_COAL_MINE :Kuelestollen STR_INDUSTRY_NAME_POWER_STATION :Kraaftwierk STR_INDUSTRY_NAME_SAWMILL :Seeërei STR_INDUSTRY_NAME_FOREST :Bësch @@ -4421,7 +4521,7 @@ STR_INDUSTRY_NAME_FACTORY :Fabrik STR_INDUSTRY_NAME_PRINTING_WORKS :Dréckerei STR_INDUSTRY_NAME_STEEL_MILL :Stolwierk STR_INDUSTRY_NAME_FARM :Bauerenhaff -STR_INDUSTRY_NAME_COPPER_ORE_MINE :Koffererzstollen +STR_INDUSTRY_NAME_COPPER_ORE_MINE :Kofferäerzstollen STR_INDUSTRY_NAME_OIL_WELLS :Uelegquellen STR_INDUSTRY_NAME_BANK :Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Iessensverarbeschtungsfabrik @@ -4429,15 +4529,15 @@ STR_INDUSTRY_NAME_PAPER_MILL :Pabeierfabrik STR_INDUSTRY_NAME_GOLD_MINE :Goldstollen STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantstollen -STR_INDUSTRY_NAME_IRON_ORE_MINE :Eisenerzstollen +STR_INDUSTRY_NAME_IRON_ORE_MINE :Eisenäerzstollen STR_INDUSTRY_NAME_FRUIT_PLANTATION :Uebstplantage STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kautschuckplantage STR_INDUSTRY_NAME_WATER_SUPPLY :Waasserwierk STR_INDUSTRY_NAME_WATER_TOWER :Waassertuerm STR_INDUSTRY_NAME_FACTORY_2 :Fabrik STR_INDUSTRY_NAME_FARM_2 :Bauerenhaff -STR_INDUSTRY_NAME_LUMBER_MILL :Bauholzfabrik -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Zockerwatt Bësch +STR_INDUSTRY_NAME_LUMBER_MILL :Seewierk +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Zockerwattbësch STR_INDUSTRY_NAME_CANDY_FACTORY :Séissegkeetenfabrik STR_INDUSTRY_NAME_BATTERY_FARM :Batteriefarm STR_INDUSTRY_NAME_COLA_WELLS :Colaquellen @@ -4445,8 +4545,8 @@ STR_INDUSTRY_NAME_TOY_SHOP :Spillgeschäft STR_INDUSTRY_NAME_TOY_FACTORY :Spillsaachen Fabrik STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastikpëtz STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Spruddelgedrenks Fabrik -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Blosengenerator -STR_INDUSTRY_NAME_TOFFEE_QUARRY :Karmelbroch +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Blosegenerator +STR_INDUSTRY_NAME_TOFFEE_QUARRY :Karamellbroch STR_INDUSTRY_NAME_SUGAR_MINE :Zockerminn ############ WARNING, using range 0x6000 for strings that are stored in the savegame @@ -4455,7 +4555,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Zockerminn STR_SV_EMPTY : STR_SV_UNNAMED :Onbenannt STR_SV_TRAIN_NAME :Zuch {COMMA} -STR_SV_ROAD_VEHICLE_NAME :Stroossengefiert {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Stroossegefier {COMMA} STR_SV_SHIP_NAME :Schëff {COMMA} STR_SV_AIRCRAFT_NAME :Fliger {COMMA} @@ -4465,7 +4565,7 @@ STR_SV_STNAME_SOUTH :{STRING} Süden STR_SV_STNAME_EAST :{STRING} Osten STR_SV_STNAME_WEST :{STRING} Westen STR_SV_STNAME_CENTRAL :{STRING} Zentrum -STR_SV_STNAME_TRANSFER :{STRING}er Transfer +STR_SV_STNAME_TRANSFER :{STRING}er Transfert STR_SV_STNAME_HALT :{STRING}er Stopp STR_SV_STNAME_VALLEY :{STRING}er Dall STR_SV_STNAME_HEIGHTS :{STRING}er Bierg @@ -4479,8 +4579,8 @@ STR_SV_STNAME_DOCKS :{STRING} Hafen STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 -STR_SV_STNAME_ANNEXE :{STRING} Annexe -STR_SV_STNAME_SIDINGS :{STRING}er Ofstellplaatz +STR_SV_STNAME_ANNEXE :{STRING} Annex +STR_SV_STNAME_SIDINGS :{STRING}er Ofstellgleis STR_SV_STNAME_BRANCH :{STRING}er Ofzweigung STR_SV_STNAME_UPPER :Uewer {STRING} STR_SV_STNAME_LOWER :Nidder {STRING} @@ -4491,20 +4591,20 @@ STR_SV_STNAME_FALLBACK :{STRING} Statio ##id 0x8000 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Collet Pannier Tank (Damp) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Chu-Chu STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Chu-Chu -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Chu-Chu +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Chu-Chu STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Damp) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Stanier 'Jubilee' (Damp) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Gresley 'A4' (Damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :BR '8P' (Damp) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Metro Cammell DMU (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Sprinter' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :BR/Sulzer '25' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :EE '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Brush '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) @@ -4514,99 +4614,99 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (D STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :BR 'IC125' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :BR '30' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :BR '40' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.G.V.' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'EuroStar' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passagéierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kuelenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Uelegwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Liewnsmëttelwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Güterwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Kaarwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Holzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Eisenerzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stolwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Gepanzerten Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Iessenswagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Pabeierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Koffererzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Waasserwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Friichtenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Kautschuckwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Zockerwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Zockerwatt Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karmelwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Blosenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colawagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Séissegkeetenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Spillsaachenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterienwagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Spruddelgedrénks Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastikwagon -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrësch) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :BR '30' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :BR '40' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.G.V.' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'EuroStar' (Elektresch) +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passagéierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kuelewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Uelegwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Véiwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Wuerewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Karwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Holzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Eisenäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stolwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Gepanzerten Waggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Iesswuerenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Pabeierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kofferäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Waasserwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Friichtewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Kautschuckwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Zockerwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Zockerwattwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Blosenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colawaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Séissegkeetewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Spillsaachewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batteriewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Spruddelgedrénks Waggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastikwaggon +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektresch) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passagéierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kuelenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Uelegwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Béischtelwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Güterwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Kaarwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Holzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Eisenerzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stolwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Gepanzerten Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Iessenswagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Pabeierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Koffererz Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Waasserwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Friichtenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Kautschuckwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Zockerwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Zockerwatt Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karmelwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Blosenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colawagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Séissegkeetenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Spillsaachenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batteriewagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Spruddelgedrénks Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikwagon -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektrësch) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektrësch) +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passagéierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kuelenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Uelegwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Véiwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Wuerewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Karwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Holzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Eisenäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stolwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Gepanzerte Waggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Iesswuerewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Pabeierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kofferäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Waasserwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Friichtewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Kautschuckwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Zockerwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Zockerwattwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamellwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Blosenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colawaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Séissegkeetewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Spillsaachewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batteriewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Spruddelgedrénkswaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikwaggon +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektresch) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektresch) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passagéierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kuelenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Uelegwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Béischtenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Güterwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Kaarwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Holzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Eisenerzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stolwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Gepanzerten Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Iessenswagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Pabeierwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Koffererzwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Waasserwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Friichtenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Kautschuckwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Zockerwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Zockerwatt Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karmelwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Blosenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colawagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Séissegkeetenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Spillsaachenwagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batteriewagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Spruddelgedrénks Wagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikwagon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passagéierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kuelewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Uelegwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Véiwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Wuerewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Karwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Holzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Eisenäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stolwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Gepanzerten Waggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Iesswuerewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Pabeierwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kofferäerzwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Waasserwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Friichtewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Kautschuckwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Zockerwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Zockerwattwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamellwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Blosewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colawaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Séissegkeetewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Spillsaachewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batteriewaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Spruddelgedrénkswaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikwaggon STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus @@ -4614,9 +4714,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Sup STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kuelencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kuelencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kuelencamion +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kuelecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kuelecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kuelecamion STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Postcamion STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Postcamion STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Postcamion @@ -4626,42 +4726,42 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Postca STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Uelegcamion STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Uelegcamion STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Uelegcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Béischtencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Béischtencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Béischtencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Gütercamion -STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Gütercamion -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Gütercamion -STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Kaarcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Kaarcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Kaarcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Véitransporter +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Véitransporter +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Véitransporter +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Wuerecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Wuerecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Wuerecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Karcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Karcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Karcamion STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Holzcamion STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Holzcamion STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Holzcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Eisenerzcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Eisenerzcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Eisenerzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Eisenäerzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Eisenäerzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Eisenäerzcamion STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stolcamion STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stolcamion STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stolcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh gepanzerten Camion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl gepanzerten Camion -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster gepanzerten Camion +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh gepanzerte Camion +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl gepanzerte Camion +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster gepanzerte Camion STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Iessenscamion STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Iessenscamion -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Iesenscamion +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Iessenscamion STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Pabeiercamion STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Pabeiercamion STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Pabeiercamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Koffererzcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Koffererzcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Koffererzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Kofferäerzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Kofferäerzcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Kofferäerzcamion STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Waassercamion STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Waassercamion STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Waassercamion -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Friichtencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Friichtencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Friichtencamion +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Friichtecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Friichtecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Friichtecamion STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Kautschuckcamion STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Kautschuckcamion STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Kautschuckcamion @@ -4674,37 +4774,37 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Colaca STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Zockerwattcamion STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Zockerwattcamion STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Zockerwattcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Karmelcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Karmelcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Karmelcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Spillsaachencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Spillsaachencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Spillsaachencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Séissegkeetencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Séissegkeetencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Séissegkeetencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Batteriencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Batteriencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Batteriencamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Karamellcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Karamellcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Karamellcamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Spillsaachecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Spillsaachecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Spillsaachecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Séissegkeetecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Séissegkeetecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Séissegkeetecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Batteriecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Batteriecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Batteriecamion STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Spruddelgedrénks Camion STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Spruddelgedrénks Camion STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Spruddelgedrénks Camion STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastikcamion STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastikcamion STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastikcamion -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Blosencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Blosencamion -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Blosencamion +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Blosecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Blosecamion +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Blosecamion STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Uelegtanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Uelegtanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passagéierfähr STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passagéierfähr -STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Loftkëssenboot +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Loftkësseboot STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passagéierfähr STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagéierfähr STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Frachtschëff STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Frachtschëff -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Frachtschëff +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Frachtschëff STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Frachtschëff STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4744,9 +4844,9 @@ STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer -STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helicopter -STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helicopter -STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helicopter +STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helikopter +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helikopter +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helikopter ##id 0x8800 # Formatting of some strings @@ -4757,18 +4857,18 @@ STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRI STR_FORMAT_BUOY_NAME :{TOWN}-Boje STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boje #{COMMA} -STR_FORMAT_COMPANY_NUM :(Company {COMMA}) +STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Grupp {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Weepunkt {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Weepunkt {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Zuchdepot -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Zuchdepot #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Stroossendepot +STR_FORMAT_DEPOT_NAME_TRAIN :Zuchschapp vun {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Zuchschapp #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Stroossegefierdepot vun {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Stroossendepot #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Schëffdepot -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Schëffdepot #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :Schëffsschapp vun {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Schëffsschapp #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :onbekannt Statioun @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (verstoppt) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 25d1771484..4c42c73389 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -50,7 +50,7 @@ STR_CARGO_PLURAL_WHEAT :Gandum STR_CARGO_PLURAL_RUBBER :Getah STR_CARGO_PLURAL_SUGAR :Gula STR_CARGO_PLURAL_TOYS :Mainan -STR_CARGO_PLURAL_CANDY :Manisan +STR_CARGO_PLURAL_CANDY :Gula-gula STR_CARGO_PLURAL_COLA :Minuman cola STR_CARGO_PLURAL_COTTON_CANDY :Gula kapas STR_CARGO_PLURAL_BUBBLES :Buih @@ -95,7 +95,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Minuman bergas # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} penumpang +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}penumpang{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} arang batu STR_QUANTITY_MAIL :{COMMA} beg surat STR_QUANTITY_OIL :{VOLUME_LONG} minyak @@ -232,13 +232,16 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Tutup te STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tajuk tetingkap - seret untuk menggerakkan tetingkap STR_TOOLTIP_SHADE :{BLACK}Teduhkan tetingkap - paparkan palang tajuk sahaja STR_TOOLTIP_DEBUG :{BLACK}Tunjukkan maklumat nyahpepijat NewGRF -STR_TOOLTIP_STICKY :{BLACK} Tandakan tetingkap ini sebagai tidak boleh ditutup dengan menggunakan kunci 'Tutupkan Semua Tetingkap' +STR_TOOLTIP_STICKY :{BLACK} Tandakan tetingkap ini sebagai tidak boleh ditutup dengan menggunakan kunci 'Tutupkan Semua Tetingkap'. Ctrl+Click untuk menyimpan keadaan sebagai praset STR_TOOLTIP_RESIZE :{BLACK}Klik dan seret untuk mengubah saiz tetingkap STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Tukar di antara tetingkap bersaiz besar/kecil STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Palang Skrol - gerakkan senarai ke atas/bawah STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar Skrol - gerakkan senarai ke kiri/kanan STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Musnahkan bangunan dll. dari dataran tanah. Ctrl memilih kawasan menyerong. Shift bangunan/tunjukkan anggaran kos. +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Asal STR_BUTTON_CANCEL :{BLACK}Batal @@ -347,7 +350,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Keluar ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Pilihan permainan -STR_SETTINGS_MENU_CONFIG_SETTINGS :Tetapan Lanjutan +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Tetapan STR_SETTINGS_MENU_SCRIPT_SETTINGS :Al/Tetapan skrip permainan STR_SETTINGS_MENU_NEWGRF_SETTINGS :Tetapan NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Pilihan Ketelusan @@ -455,7 +458,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Papar atau pada STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Tukar warna blok kotor ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -471,22 +474,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -789,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} sedang menunggu di depoh STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} sedang menunggu di hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} mempunyai terlalu sedikit arahan dalam jadual STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} mempunyai arahan yang tidak sah STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} mempunyai arahan berganda STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} mempunyai stesen yang tidak sah dalam arahannya -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} semakin usang STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} terlalu usang @@ -876,10 +895,6 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :South African R STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sesuaikan... ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kenderaan Jalanraya STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Pilih laluan memandu kenderaan sebelah kiri atau kanan STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Memandu di sebelah kiri @@ -915,11 +930,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Simpanan automatik STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih tempoh untuk simpanan permainan automatik +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Matikan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Setiap bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Setiap 3 bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Setiap 6 bulan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Setiap 12 bulan +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Bahasa STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pilih bahasa antaramuka yang ingin digunakan @@ -931,8 +948,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolusi STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pilih resolusi skrin untuk digunakan STR_GAME_OPTIONS_RESOLUTION_OTHER :lain -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format tangkapan skrin -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Pilih format tangkapan skrin untuk digunakan +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Saiz Antaramuka +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Sila pilih saiz elemen antara muka untuk digunakan + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Biasa +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Saiz berganda +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Saiz kuad STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafik asas STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih set grafik asas untuk digunakan @@ -948,6 +969,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih se STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fail sudah rosak STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Maklumat lebih tentang set muzik asas +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Gagal untuk mendapat senarai resolusi yang disokong STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mod skrin penuh gagal dilakukan # Custom currency window @@ -1026,6 +1048,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Sangat Rata STR_TERRAIN_TYPE_FLAT :Rata STR_TERRAIN_TYPE_HILLY :Berbukit STR_TERRAIN_TYPE_MOUNTAINOUS :Bergunung +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Mengizinkan STR_CITY_APPROVAL_TOLERANT :Bertoleransi @@ -1033,8 +1056,8 @@ STR_CITY_APPROVAL_HOSTILE :Kurang mengizin STR_WARNING_NO_SUITABLE_AI :{WHITE}Tiada AI yang bersesuaian...{}Anda boleh memuat turun beberapa AI dari sistem 'Kandungan Atas Talian' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Tetapan Lanjutan +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Tetapan STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Tapis baris: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Kembangkan semua STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Musnahkan semua @@ -1047,11 +1070,10 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Tetapan permain STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Tetapan syarikat (disimpan di simpanan; berkesan hanya permainan baru) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Tetapan syarikat (disimpan di penyimpanan; hanya berkesan kepada syarikat semasa) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Pamer: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Hadkan senarai di bawah hanya ditunjukkan tetapan ditukar -STR_CONFIG_SETTING_RESTRICT_BASIC :Tetapan asas -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Tetapan tambahan -STR_CONFIG_SETTING_RESTRICT_ALL :Pakar tetapan / semua tetapan +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Hadkan senarai di bawah menggunakan penapis yang telah ditetapkan +STR_CONFIG_SETTING_RESTRICT_BASIC :Asas (menunjukkan tetapan yang penting sahaja) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Terperinci (tunjukkan kebanyakan tetapan) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (memaparkan semua tetapan, termasuk yang pelik) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Tetapan dengan nilai berbeza dari yang lalai STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Tetapan dengan nilai yang berbeza daripada tetapan baru permainananda @@ -1075,7 +1097,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Kanan STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimum pinjaman permulaan: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Rantaian industri STR_CONFIG_SETTING_INTEREST_RATE :Kadar faedah: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kadar faedah pinjaman; juga mengawal inflasi jika diupayakan +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kadar faedah pinjaman; juga mengawal inflasi, jika dibolehkan STR_CONFIG_SETTING_RUNNING_COSTS :Kos penyelenggaraan: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Tetapkan tahap penyelenggaraan dan kos perjalanan kenderaan dan infrastuktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Kelajuan pembinaan: {STRING} @@ -1095,8 +1117,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Jika kereta api STR_CONFIG_SETTING_CITY_APPROVAL :Sikap majlis bandaraya terhadap penyusunan semula kawasan: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Pilih tahap kebisingan dan kerosakan persekitaran -STR_CONFIG_SETTING_BUILDONSLOPES :Benarkan pembinaan di tepi pantai dan cerun bukit: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Jika diupayakan, trek dan stesen boleh membina pada yang paling cerun. Jika dilumpuhkan, mereka hanya dibenarkan di cerun yang sepadan arah trek dan dengan itu tidak memerlukan asas +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Ketinggian maksimum peta: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Tetapkan ketinggian maksimum yang dibenarkan bagi gunung pada peta +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kamu tidak boleh ubah ketinggian maxima kepada nilai ini. Sekurang-kurangnya satu gunung di dalam peta lebih tinggi. STR_CONFIG_SETTING_AUTOSLOPE :Benarkan pengubahsuaian tanah di bawah bangunan, landasan, dan sebagainya (autocerun): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Benarkan landskap di arah bangunan dan trek tanpa memusnahkannya STR_CONFIG_SETTING_CATCHMENT :Benarkan kawasan tangkapan yang lebih realistik: {STRING} @@ -1121,16 +1144,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Halangkan keret STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Pusingan 90 darjah apabila trek yang mendatar secara langsung diikuti oleh suatu trek menegak pada laluan bersebelahan sekeligus menjadikan keretapi kearah 90 darjah apabila melalui laluan 45 darjah untuk kombilasa trek lain. Ini juga berlaku kepada laluan membelok kapal STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Benarkan penyambungan stesen yang tidak bersebelahan: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Benarkan menambah bahagian untuk stesen tanpa menyentuh bahagian yang sedia ada. Perlu Ctrl + Klik sambil meletakkan bahagian-bahagian baru -STR_CONFIG_SETTING_IMPROVEDLOAD :Gunakan algoritma muatan yang diperbaiki: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Jika dibolehkan, pelbagai kenderaan menunggu di stesen dimuatkan berurutan.Pemuatan kenderaan seterusnya hanya bermula apabila terdapat kargo yang mencukupi menunggu untuk mengisi kenderaan pertama sepenuhnya -STR_CONFIG_SETTING_GRADUAL_LOADING :Muatkan kenderaan sedikit demi sedikit: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Secara beransur-ansur muatan kenderaan akan menggunakan jangka masa tertentu, bukannya memuatkan sekaligus dengan masa yang tetap bergantung pada jumlah muatan dimuatkan STR_CONFIG_SETTING_INFLATION :Inflasi: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Mengupayakan inflasi kepada ekonomi, di mana kos adalah sedikit lebih cepat meningkat daripada pembayaran -STR_CONFIG_SETTING_SELECTGOODS :Hantarkan kargo ke stesen hanya jika ada permintaan: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Hanya menghantar muatan ke stesen yang telah diminta daripada kenderaan pemuat. Ini menghalang nilai yang buruk bagi kargo yang tidak diservis di stesen STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Panjang maksimum jambatan: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Panjang maksimum untuk binaan jambatan +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Ketinggian jambatan maksima: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Ketinggian maksimum untuk membina jambatan STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Panjang maksimum terowong: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Panjang maksimum binaan terowong STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Cara pembinaan manual industri utama: {STRING} @@ -1149,7 +1168,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :Arahan keretapi STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :berhampiran hujung STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :tengah-tengah STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :hujung sekali -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Perbarisan kenderaan jalanraya (dengan kesan kuantum): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Gerakkan pemandangan apabila tetikus di sempadan: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Dinyah-upayakan STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Dinyah-upayakan @@ -1179,10 +1197,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Benarkan hentia STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Benarkan pembinaan untuk jalan pemanduan berhenti di jalan milik bandaran STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Benarkan hentian pandu-lalu di jalanraya yang dimiliki oleh pesaing: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Benarkan pembinaan untuk jalan pemanduan berhenti di jalan milik bandaran -STR_CONFIG_SETTING_ADJACENT_STATIONS :Benarkan membina stesen yang bersebelahan stesen lain: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Benarkan stesen yang berbeza untuk berdekatan dengan lain -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Benarkan berbilang set enjin NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Pilihan keserasian untuk NewGRFs lama. Jangan melumpuhkan ini, melainkan jika anda tahu apa yang anda lakukan! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Menukar tetapan ini adalah mustahil apabila terdapat kenderaan. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Penyelenggaraan Infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Apabila diupayakan,infrastuktur menyebabkan kos penyelenggaraan. Kadar kos tumbuh berdasarkan saiz rangkaian, sekaligus menjejaskan syarikat yang lebih besar daripada yang kecil @@ -1211,16 +1225,17 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sangat Licin STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Licin STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Kasar STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sangat Kasar +STR_CONFIG_SETTING_RIVER_AMOUNT :Jumlah sungai: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Pilih jumlah sungai untuk dijanakan STR_CONFIG_SETTING_TREE_PLACER :Algoritma letakan pokok: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Tiada STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Asal STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Diperbaiki +STR_CONFIG_SETTING_ROAD_SIDE :Kenderaan: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Putaran heightmap: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Lawan jam STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Pusingan jam STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Tahap ketinggian peta senario rata: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Benarkan pengubahsuaian tanah di petak di sempadan peta: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Jika dilumpuhkan, sempadan peta akan sentiasa sebagai lautan STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Satu atau lebih petak di bucu utara tidak kosong STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Satu atau lebih petak di salah satu bucu bukan air @@ -1257,15 +1272,14 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Matikan STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrol klik-kiri: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :Simpanan automatik:{STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Pilih jarak waktu antara menyimpankan permainan automatik + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gunakan format tarikh {STRING} untuk simpanan permainan. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :panjang (31hb Dis 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :pendek (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Palet asal untuk mengambil alih bagi NewGRFs yang tidak menyatakan palet: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Palet DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Palet tetingkap - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Berhenti automatik ketika memulakan permainan yang baru: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Semasa dihentikan, dibenarkan: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Tiada tindakan @@ -1287,10 +1301,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Perbelanjaan ku STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Nyahaktif infrastruktur bangunan apabila tiada kenderaan yang sesuai: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Maks keretapi setiap syarikat: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks kenderaan jalanraya setiap syarikat: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks pesawat setiap syarikat: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Maks kapal setiap syarikat: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Amaun maksimum kereta api setiap syarikat: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Amaun maksimum kenderaan jalanraya setiap syarikat: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Amaun maksimum pesawat setiap syarikat: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Amaun maksimum kapal setiap syarikat: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Nafikan keretapi untuk komputer: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Nafikan kenderaan jalanraya untuk komputer: {STRING} @@ -1383,7 +1397,6 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Biasa STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Pantas STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sangat pantas STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Pengganda awal saiz bandar: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Buang elemen jalanraya yang tidak masuk akal daripada pembinaan jalanraya: {STRING} @@ -1392,23 +1405,14 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Buang elemen ja -STR_CONFIG_SETTING_GUI :{ORANGE}Antaramuka (Interface) -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Pembinaan +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Antaramuka (Interface) +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Pembinaan STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kenderaan -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stesen -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomi +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Laluan +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bandar-bandar +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industri-industri STR_CONFIG_SETTING_AI :{ORANGE}Pesaing -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Pilihan paparan -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaksi -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Isyarat -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Pengendalian kargo STR_CONFIG_SETTING_AI_NPC :{ORANGE}Pemain komputer -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Pembaharuan Automatik -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servis -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Laluan -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Keretapi -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bandar-bandar -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industri-industri STR_CONFIG_SETTING_PATHFINDER_OPF :Asal STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1451,7 +1455,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Pemain b STR_INTRO_GAME_OPTIONS :{BLACK}Pilihan Permainan STR_INTRO_HIGHSCORE :{BLACK}Carta mata tertinggi -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Tetapan Lanjutan +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Tetapan STR_INTRO_NEWGRF_SETTINGS :{BLACK}Tetapan NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Periksa Kandungan Atas Talian STR_INTRO_SCRIPT_SETTINGS :{BLACK}Al/Tetapan Skrip Permainan @@ -1471,7 +1475,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Pilih la STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Paparkan pilihan permainan STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Paparan carta mata tertinggi -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Paparkan tetapan lanjutan +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Pamerkan pilihan STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Paparkan tetapan NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Periksa kandungan baru atau yang telah dikemaskini untuk dimuat turun STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Paparan Al/Tetapan Skrip Permainan @@ -1511,6 +1515,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Bermain STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Jentolak ajaib (buang industri dan objek lain yang biasanya tidak boleh dibuang): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Terowong boleh bersilang: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Pesawat jet tidak akan (sentiasa) terhempas di lapangan terbang kecil: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Ubah ketinggian maxima di dalam peta: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Ubah ketinggian maxima gunung di dalam peta STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Lanskap temperate STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Lanskap subartik STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Lanskap subtropik @@ -1559,6 +1565,7 @@ STR_LIVERY_FREIGHT_TRAM :Trem Tambang Mu STR_FACE_CAPTION :{WHITE}Pilihan Wajah STR_FACE_CANCEL_TOOLTIP :{BLACK}Batal pilihan wajah baru STR_FACE_OK_TOOLTIP :{BLACK}Terima pilihan wajah baru +STR_FACE_RANDOM :{BLACK}Rambangkan STR_FACE_MALE_BUTTON :{BLACK}Lelaki STR_FACE_MALE_TOOLTIP :{BLACK}Pilih wajah lelaki @@ -1673,13 +1680,13 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Tetapkan STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Lindungi permainan anda dengan kata laluan jika anda tidak mahu ianya diakses awam STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} pelanggan -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Klien maks: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Amaun maksimum pemain: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Tentukan bilangan klien maks. Tidak perlu semua slot diisi STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} syarikat -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks syarikat: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Amaun maksimum syarikat: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Hadkan bilangan syarikat dalam pelayan STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} penyaksi -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks penyaksi: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Amaun maxsimum penyaksi: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Hadkan bilangan penyaksi dalam pelayan STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Bahasa yang digunakan: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Pemain lain akan tahu bahasa apa yang digunakan di pelayan ini @@ -2381,7 +2388,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan @@ -2415,13 +2422,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Jumlah bandar: STR_MAPGEN_DATE :{BLACK}Tarikh: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Jumlah industri: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Ketinggian maxima peta: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Mengurangkan ketinggian maksimum gunung di peta oleh satu +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Mengurangkan ketinggian maksimum gunung di peta oleh satu STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Paras ketinggian garis salji: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Tinggikan paras garis salji satu petak STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Rendahkan paras garis salji satu petak -STR_MAPGEN_RANDOM_SEED :{BLACK}Benihkan secara rambang: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik untuk memasukkan benih rambang -STR_MAPGEN_RANDOM :{BLACK}Rambangkan -STR_MAPGEN_RANDOM_HELP :{BLACK}Tukarkan benih rambang yang digunakan untuk Penjanaan Rupa Bumi STR_MAPGEN_LAND_GENERATOR :{BLACK}Janaan tanah: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritma pokok: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Jenis rupa bumi: @@ -2448,7 +2454,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nama hei STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Saiz: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Masukkan benih rambang +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Mengubah saiz maksimum ketinggian peta STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Tukarkan paras garis salji STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Tukar tahun permulaan @@ -2503,6 +2509,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Gerak Ke STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Gerakkan ke atas senarai NewGRF yang terpilih STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Gerak Ke Bawah STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Gerakkan ke bawah senarai NewGRF yang terpilih +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Naik Taraf STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Senarai fail NewGRF yang telah dipasang. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Tetapkan parameter @@ -2527,6 +2534,11 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Fail yang STR_NEWGRF_SETTINGS_DISABLED :{RED}Dinyahaktifkan STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Tidak serasi dengan versi OpenTTD ini +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Simpan pratetapan +STR_SAVE_PRESET_TITLE :{BLACK}Masukkan nama untuk pratetapan +STR_SAVE_PRESET_SAVE :{BLACK}Simpan + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ubah parameter NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tutup @@ -2557,7 +2569,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Peperi s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Teruskan ke peperi dahulu yang biasa, melangkau sebarang peperi pseudo/warna kembali/fon dan memusing balik semula STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Perwakilan peperi yang terpilih. Penjajaran tidak diendahkan apabila sedang melukiskan peperi. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Alih peperi, mengubahkan ofset X dan Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X ofset: {NUM}, Y ofset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih peperi STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih peperi di mana-mana sahaja dari skrin @@ -2627,6 +2638,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} dari STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Imbasan NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Imbasan NewGRFs. Bergantung kepada jumlah, ini akan mengambil sedikit masa... @@ -2720,7 +2733,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Maklumat STR_GOAL_QUESTION_CAPTION_WARNING :Amaran STR_GOAL_QUESTION_CAPTION_ERROR :Kesilapan -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Batal STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Tidak @@ -2739,6 +2752,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Mula semula STR_GOAL_QUESTION_BUTTON_POSTPONE :Tangguh STR_GOAL_QUESTION_BUTTON_SURRENDER :Menyerah STR_GOAL_QUESTION_BUTTON_CLOSE :Tutup +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidi @@ -2764,7 +2778,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Tiada ka # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Menunggu: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} dalam perjalanan daripada {STATION}) @@ -2831,7 +2844,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Jumlah: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Baki Bank STR_FINANCES_LOAN_TITLE :{WHITE}Pinjaman -STR_FINANCES_MAX_LOAN :{WHITE}Pinjaman Maks: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Pinjaman Maksimum: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pinjam {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Tinggikan nilai pinjaman. Ctrl+Klik untuk meminjam sebanyak mungkin @@ -2985,6 +2998,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Padamkan STR_GROUP_RENAME_TOOLTIP :{BLACK}Tukar nama kumpulan yang terpilih STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik untuk menghalang daripada kumpulan ini digantikan secara automatik + STR_GROUP_ADD_SHARED_VEHICLE :Tambah kenderaan berkongsi STR_GROUP_REMOVE_ALL_VEHICLES :Buang semua kenderaan @@ -3047,6 +3061,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Namakan STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Namakan semula jenis kapal STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Namakan semula pesawat +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyi +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyi +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyi +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Sembunyi + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Paparan +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Paparan +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Paparan +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Paparan + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menyembunyikan Togol / memaparkan jenis kenderaan kereta api +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK} Menyembunyikan Togol / memaparkan jenis kenderaan jalan raya +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Menyembunyikan Togol / memaparkan jenis kapal +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Togol menyembunyikan / memaparkan jenis pesawat + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Namakan semula jenis keretapi STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Namakan semula jenis kenderaan jalanraya STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Namakan semula jenis kapal @@ -3100,7 +3129,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonkan STR_DEPOT_CLONE_SHIP :{BLACK}Klonkan Kapal STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonkan Pesawat -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Perbuatan ini akan membeli salinan keretapi termasuk semua gerabaknya. Klik butang ini dan kemudian di keretapi di luar atau di dalam depoh. Ctrl+Klik untuk berkongsi arahan. Shift+Klik menunjukkan anggaran kos tanpa membeli +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ini akan membeli satu salinan kereta api termasuk semua kereta. Klik butang ini dan kemudian pada kereta api di dalam atau di luar depot. Ctrl + Klik akan berkongsi perintah. Shift + Klik menunjukkan anggaran kos tanpa pembelian STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Perbuatan ini akan membeli salinan kenderaan jalanraya. Klik butang ini dan kemudian di kenderaan jalanraya di luar atau di dalam depoh. Ctrl+Klik untuk berkongsi arahan. Shift+Klik menunjukkan anggaran kos tanpa pembelian STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Perbuatan ini akan membeli salinan kapal. Klik butang ini dan kemudian di kapal di luar atau di dalam depoh. Ctrl+Klik untuk berkongsi arahan. Shift+Klik menunjukkan anggaran kos tanpa membeli STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ini akan membeli salinan pesawat. Klik butang ini dan kemudian di pesawat di luar atau di dalam depoh. Ctrl+Klik untuk berkongsi arahan. Shift+Klik menunjukkan anggaran kos tanpa membeli @@ -3151,6 +3180,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Kenderaan Jalan STR_REPLACE_VEHICLE_SHIP :Kapal STR_REPLACE_VEHICLE_AIRCRAFT :Pesawat + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Pilih jenis enjin untuk diganti STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Pilih jenis enjin baru yang anda ingin guna untuk menggantikan jenis enjin sebelah kiri @@ -3469,7 +3499,7 @@ STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Pindah dan tun STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Pindah dan tunggu sebarang kargo sehingga penuh dengan ubahsuai secara auto ke {STRING}) STR_ORDER_NO_UNLOAD_REFIT :Tiada muat turun dan ambil kargo dengan ubahsuai secara auto ke {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Tiada muat turun dan tunggu sehingga muatan penuh dengan ubahsuai secara auto ke {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Tiada muat turun dan tunggu sebarang kargo penuh dengan ubahsuai secara auto ke {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Tiada muat turun dan tunggu sebarang kargo dengan kapasiti penuh dengan ubahsuai secara automatik ke {STRING}) STR_ORDER_AUTO_REFIT_ANY :kargo sedia ada @@ -3729,6 +3759,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Penggali STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... sudah berada di paras laut STR_ERROR_TOO_HIGH :{WHITE}... terlalu tinggi STR_ERROR_ALREADY_LEVELLED :{WHITE}... sudah rata +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Selepas itu jambatan atasnya akan jadi terlalu tinggi. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nama syarikat tidak dapat ditukar... @@ -3779,6 +3810,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... huta STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... hanya boleh dibina di atas paras garisan salji STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... hanya boleh dibina di bawah paras garisan salji + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Stesen keretapi tidak dapat dibina di sini... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Hentian bas tidak dapat dibina di sini... @@ -3915,6 +3947,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Jambatan STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Tidak boleh mula dan tamat di petak yang sama STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Kedua-dua kepala jambatan bukan pada paras yang sama STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Jambatan terlalu rendah untuk rupa bumi ini +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Jambatan terlalu tinggi untuk kawasan ini. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Mula dan hujung mesti pada garisan yang sama STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... kedua-dua kepala jambatan mesti berada di atas tanah STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... jambatan telalu panjang @@ -4163,7 +4196,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Stim) @@ -4372,7 +4405,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Feri Penumpang STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Feri Penumpang Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Kapal kargo Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Kapal kargo Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal kargo Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal kargo MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Kapal kargo Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4466,6 +4499,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (tersembunyi) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4500,8 +4534,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4512,9 +4544,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 995f6969b0..259fd8ee68 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -97,30 +97,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Mineralvann # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passasjer{P "" er} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passasjer{P "" er} STR_QUANTITY_COAL :{WEIGHT_LONG} kull -STR_QUANTITY_MAIL :{COMMA} postsekk{P "" er} +STR_QUANTITY_MAIL :{COMMA}{NBSP}postsekk{P "" er} STR_QUANTITY_OIL :{VOLUME_LONG} olje -STR_QUANTITY_LIVESTOCK :{COMMA} enhet{P "" er} buskap -STR_QUANTITY_GOODS :{COMMA} kasse{P "" r} gods +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}enhet{P "" er} buskap +STR_QUANTITY_GOODS :{COMMA}{NBSP}kasse{P "" r} med gods STR_QUANTITY_GRAIN :{WEIGHT_LONG} korn STR_QUANTITY_WOOD :{WEIGHT_LONG} tømmer STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} jernmalm STR_QUANTITY_STEEL :{WEIGHT_LONG} stål -STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" er} med verdisaker +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}sekk{P "" er} med verdisaker STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kobbermalm STR_QUANTITY_MAIZE :{WEIGHT_LONG} mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} frukt -STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" er} med diamanter +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sekk{P "" er} med diamanter STR_QUANTITY_FOOD :{WEIGHT_LONG} mat STR_QUANTITY_PAPER :{WEIGHT_LONG} papir -STR_QUANTITY_GOLD :{COMMA} sekk{P "" er} med gull +STR_QUANTITY_GOLD :{COMMA}{NBSP}sekk{P "" er} med gull STR_QUANTITY_WATER :{VOLUME_LONG} vann STR_QUANTITY_WHEAT :{WEIGHT_LONG} hvete STR_QUANTITY_RUBBER :{VOLUME_LONG} gummi STR_QUANTITY_SUGAR :{WEIGHT_LONG} sukker -STR_QUANTITY_TOYS :{COMMA} leke{P "" r} -STR_QUANTITY_SWEETS :{COMMA} sekk{P "" er} med godteri +STR_QUANTITY_TOYS :{COMMA}{NBSP}leke{P "" r} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sekk{P "" er} med godteri STR_QUANTITY_COLA :{VOLUME_LONG} cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sukkerspinn STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r} @@ -167,12 +167,12 @@ STR_ABBREV_NONE :{TINY_FONT}IN STR_ABBREV_ALL :{TINY_FONT}ALLE # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passasjer{P "" er} -STR_BAGS :{COMMA} sekk{P "" er} -STR_TONS :{COMMA} tonn -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} enhet{P "" er} -STR_CRATES :{COMMA} kasse{P "" r} +STR_PASSENGERS :{COMMA}{NBSP}passasjer{P "" er} +STR_BAGS :{COMMA}{NBSP}sekk{P "" er} +STR_TONS :{COMMA}{NBSP}tonn +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}element{P "" er} +STR_CRATES :{COMMA}{NBSP}kasse{P "" r} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Mørkeblå @@ -193,37 +193,37 @@ STR_COLOUR_GREY :Grå STR_COLOUR_WHITE :Hvit # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mi/t -STR_UNITS_VELOCITY_METRIC :{COMMA} km/t -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mi/t +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/t +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA} hk -STR_UNITS_POWER_METRIC :{COMMA} hk -STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hk +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hk +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonn{P "" er} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonn{P "" er} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon{P "" s} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" er} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter{P "" er} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}fot +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filterstreng: @@ -250,6 +250,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefel STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen til venstre/høyre STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger osv. på et landområde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Vis skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Vis skjulte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ved å aktivere denne knappen, blir de skjulte tog også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ved å aktivere denne knappen, blir de skjulte kjøretøy også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ved å aktivere denne knappen, blir de skjulte skip også vist +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved å aktivere denne knappen, blir de skjulte fly også vist + # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Avbryt @@ -297,8 +308,8 @@ STR_SORT_BY_POWER :Kraft STR_SORT_BY_TRACTIVE_EFFORT :Trekkraft STR_SORT_BY_INTRO_DATE :Introduksjonsdato STR_SORT_BY_RUNNING_COST :Driftskostnad -STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskostnad -STR_SORT_BY_CARGO_CAPACITY :Varekapasitet +STR_SORT_BY_POWER_VS_RUNNING_COST :Effekt-/Driftskostnad +STR_SORT_BY_CARGO_CAPACITY :Lastekapasitet STR_SORT_BY_RANGE :Rekkevidde STR_SORT_BY_POPULATION :Folketall STR_SORT_BY_RATING :Rangering @@ -336,7 +347,7 @@ STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informas STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift verktøylinjer # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Lagre scenario, last inn scenario, forlate scenarioredigeringsprogrammet, avslutt OpenTTD +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Lagre scenario, last inn scenario, forlat scenarioredigering, avslutt OpenTTD STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Rediger scenario STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flytt startdatoen tilbake ett år @@ -363,8 +374,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :Avslutt ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spillinnstillinger -STR_SETTINGS_MENU_CONFIG_SETTINGS :Avanserte innstillinger -STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spillskript-innstillinger +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Innstillinger +STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI-/Spillskript-innstillinger STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillinger STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Instillinger for gjennomsiktighet STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Vis bynavn @@ -472,7 +483,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vis/skjul marke STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Veksle mellom farger på skitne blokker ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -488,22 +499,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -752,7 +781,7 @@ STR_MESSAGE_NEWS_FORMAT :{STRING} - {S STR_NEWS_MESSAGE_CAPTION :{WHITE}Melding STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Borgerne jubler . . .{}Første tog ankommer {STATION}! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første tog ankommer {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første buss ankommer {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første lastebil ankommer {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første passasjertrikk ankommer {STATION}! @@ -787,7 +816,7 @@ STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDE STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponset grunnleggelsen av den nye byen {TOWN}! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ny {STRING} bygges i nærheten av {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} bygges i nærheten av {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} plantes i nærheten av {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} legges ned! @@ -812,13 +841,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} venter i skipsdokken STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} venter i hangaren -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordre på ruteplanen STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en tom ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har doble ordre STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en ugyldig stasjon i ordrelisten -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} har i sine ordrer en flyplass der rullebanen er for kort STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} begynner å bli gammel STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er veldig gammel @@ -901,10 +929,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgianske Lar STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kjøretøy STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Velg kjøreside for veier STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekjøring @@ -940,11 +964,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalansk STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg intervall for automatisk lagring +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hver måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hver 3. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hver 6. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hver 12. måned +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Velg språk som skal brukes @@ -956,8 +982,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjermop STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Velg skjermoppløsningen som skal brukes STR_GAME_OPTIONS_RESOLUTION_OTHER :annet -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Filformat for skjermbilde -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Velg hvilket format skjermbildet skal lagres i +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnitt-størrelse +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg grensesnitt-størrelsen som skal benyttes + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2 ganger størrelse +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størrelse STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes @@ -973,6 +1003,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Velg mus STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Ytterligere informasjon om det originale musikksettet +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislytes med å hente en liste over støttede oppløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermmodus mislyktes # Custom currency window @@ -1051,6 +1082,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Veldig flatt STR_TERRAIN_TYPE_FLAT :Flatt STR_TERRAIN_TYPE_HILLY :Åslendt STR_TERRAIN_TYPE_MOUNTAINOUS :Berglendt +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Ettergivende STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1058,8 +1090,8 @@ STR_CITY_APPROVAL_HOSTILE :Fientlig STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen egnet AI tilgjengelig...{}Du kan laste ned flere AIer fra nettet med spillets nedlastingssystem. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avanserte innstillinger +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Innstillinger STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrer streng: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Vis alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle @@ -1072,21 +1104,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Selskapet innst STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Selskapet innstilling (lagret i lagringsfilen, påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Selskapet innstilling (lagret i lagringsfilen, påvirker bare gjeldende selskap) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Viser kun endrede innstillinger i listen nedenfor -STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnleggende innstillinger -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanserte innstillinger -STR_CONFIG_SETTING_RESTRICT_ALL :Avanserte innstillinger / alle innstillinger +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Begrenser listen nedenfor ved hjelp av forhåndsdefinerte filtre +STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnleggende (vis bare viktige innstillinger) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avansert (Vis de fleste innstillinger) +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert (vis alle innstillinger, inkludert merkelige) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Innstillinger med annen verdi enn standarden STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillinger med annen verdi enn innstillingene dine for nye spill STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrenser listen nedenfor til bestemte innstillingstyper STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instillingstyper -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinnstillinger (global innstilling; påvirker alle spill) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinnstillinger (lagres ikke i lagringsfiler; påvirker alle spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spillinnstillinger (lagres i lagringsfil; påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spillinnstillinger (lagres i lagringsfilen; påvirker bare gjeldende spill) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Selskapets innstillinger (lagres i lagringsfilen; påvirker bare nye spill) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Selskapets innstillinger (lagret i lagringsfilen; påvirker bare gjeldende selskap) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmainnstillinger (lagres i lagringsfilen; påvirker bare nye spill) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmainnstillinger (lagret i lagringsfilen; påvirker bare gjeldende selskap) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK} Vis alle søkeresultater ved å sette {} {SILVER} kategori {BLACK} til {WHITE} {STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK} Vis alle søkeresultater ved å sette {} {SILVER} type {BLACK} til {WHITE} alle innstillingstyper +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK} Vis alle søkeresultater ved å sette {} {SILVER} kategori {BLACK} til {WHITE} {STRING} {BLACK} og {SILVER} type {BLACK} til {WHITE} alle innstillingstyper +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ingen - STR_CONFIG_SETTING_OFF :Av STR_CONFIG_SETTING_ON :På @@ -1121,15 +1158,16 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Still kostnadsn STR_CONFIG_SETTING_RECESSIONS :Resesjoner: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Hvis aktivert, resesjoner kan forekomme med noen års mellomrom. Under en lavkonjunktur vil all produksjon være betydelig lavere (den returnerer til tidligere nivå når resesjonen er over) STR_CONFIG_SETTING_TRAIN_REVERSING :Forby reversering av tog i stasjoner: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktivert, tåg vil ikke rygge i ikke-terminus stationer, selv om det er en kortere vei til deres neste stasjon ved å rygge +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktivert, vil ikke toget rygge i ikke-terminus stationer, selv om det er en kortere vei til deres neste stasjon ved å rygge STR_CONFIG_SETTING_DISASTERS :Katastrofer: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Aktiver/inaktiver katastrofer som tidvis kan blokkere eller ødelegge kjøretøy og infrastruktur -STR_CONFIG_SETTING_CITY_APPROVAL :Byrådets holdning til restrukturering i nærområdet: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Bystyrets holdning til restrukturering av området: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Velg hvor mye støy og miljøskader forårsaket av selskaper påvirker deres anseelse i byen og muligheter for ytterligere utbygging i nærområdet -STR_CONFIG_SETTING_BUILDONSLOPES :Tillat bygging på skråninger og i vannkanten: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Om dette slås på kan spor og stasjoner bygges på de fleste hellninger. Om slått av, vil de kun tillates på hellninger med samme retning som sporet, og vil da ikke trenge fundamenter. -STR_CONFIG_SETTING_AUTOSLOPE :Tillat landskapsendring under bygninger, spor, osv.: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimal karthøyde: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Still inn maksimal tillatt høyde for fjellene på kartet +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikke sette den maksimale karthøyden til denne verdien. Minst ett fjell på kartet er høyere +STR_CONFIG_SETTING_AUTOSLOPE :Tillat endring av landskap under bygninger, spor, osv.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillat endring av landskapet under bygninger og spor uten å fjerne dem STR_CONFIG_SETTING_CATCHMENT :Mer realistisk størrelse på oppfangingsområder: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha oppsamlingsområder i forskjellige størrelser for forskjellige typer stasjoner og lufthavner @@ -1152,21 +1190,17 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattheten av e STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog og skip å gjøre 90° svinger: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graders svinger oppstår når et horisontalt spor etterfølges av et vertikalt spor på tilstøtende kartelement, som dermed fører til at toget må snu 90 grader når det krysser kartelementet, istedenfor de vanlige 45 grader for andre spor-kombinasjoner. Dette gjelder også for båters svingradius STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillat sammenslåing av stasjoner som ikke ligger inntil hverandre: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gjør det mulig å legge til deler til en stasjon uten at de er direkte vid siden av hverandre. Bruk Ctrl+klikk for å bygge slike stasjoner. -STR_CONFIG_SETTING_IMPROVEDLOAD :Bruk forbedret lastealgoritme: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Hvis aktivert, vil flere kjøretøy som venter på en stasjon lastes sekvensielt. Lasting av neste kjøretøy begynner først når det er nok last tilgjengelig for å fylle opp det første kjøretøyet -STR_CONFIG_SETTING_GRADUAL_LOADING :Last kjøretøy gradvis: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradvis laste kjøretøy ved å bruke kjøretøyenes spesifikke lastetider, i stedet for å laste alt på én gang med en fast varighet som bare avhenger av mengden gods lastet +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gjør det mulig å legge til deler til en stasjon uten at de er direkte ved siden av hverandre. Bruk Ctrl+klikk for å bygge slike stasjoner. STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktiver inflasjon i økonomien, der kostnader stiger litt raskere enn betalinger -STR_CONFIG_SETTING_SELECTGOODS :Lever varer til en stasjon kun hvis det er etterspørsel: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Bare levere gods til en stasjon som som har blitt forespurt fra et lastende kjøretøy. Dette forhindrer dårlige karakterer for gods som ikke betjenes på en stasjon STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimal brolengde: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal lengde for broer +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimal brohøyde: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimal høyde for å bygge broer STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimal tunnellengde: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal lengde for tunneller STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode for finansiering av en primærindustri. 'none' betyr at det ikke er mulig å finansiere noen, 'prospecting' betyr at at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet og kan like godt mislykkes, 'as other industries' betyr at råvareindustri kan bygges opp av selskaper som prosessindustri i hvilke som helst posisjoner +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode for finansiering av primærindustri. 'Ingen' betyr at det ikke er mulig å finansiere noen. 'Prospekterer' betyr at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet, og det er rimelig sjanse for at den mislykkes. 'Som andre industrier' betyr at råvareindustri kan bygges opp av firmaer hvor som helst på kartet på samme måte som prosessindustri STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industrier STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterer @@ -1185,11 +1219,9 @@ STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'd STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalt vil et kjøretøy stoppe på alle stasjoner det passerer. Ved å aktivere denne innstillingen, vil det kjøre gjennom alle stasjoner på vei til sin endelige destinasjon uten å stoppe. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder STR_CONFIG_SETTING_STOP_LOCATION :Nye togordre stopper som standard ved {STRING} av plattformen STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plass hvor toget vil stoppe på plattformen som standard. Valget 'near end' betyr nær inngangspunktet og 'far end' betyr langt unna inngangspunktet. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nær slutten +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nærenden STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :enden -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Kjøretøykø (med kvantumseffekter): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Gjør at veikjøretøy må vente foran okkuperte veihindringer inntil de er fjernet +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :bortenden STR_CONFIG_SETTING_AUTOSCROLL :Flytt på bildet hvis pilen er nær ytterkantene av skjermen: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når aktivert, vil synsfeltet begynne å rulle når musen er nær kanten av vinduet STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert @@ -1197,16 +1229,17 @@ STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoved tillegsvi STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :hoved tillegsvindu STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :alle tillegsvindu STR_CONFIG_SETTING_BRIBE :Tillat bestikkelser av bystyret: {STRING} -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat selskaper å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat firmaer å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene +STR_CONFIG_SETTING_BRIBE_HELPTEXT.small :firma STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Tillat kjøp av eksklusive transportrettigheter: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Om et firma kjøper eksklusive transportrettigheter for en by, vil ikke motstandernes stasjoner motta varer eller passasjorer på ett år. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Tillat finansiering av bygninger: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tillat firmaer å gi penger til byer til bygging av nye bygninger STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal veikonstruksjon: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tillat selskaper å gi penger til byer for omlegging av veinettet for å sabotere veibaserte tjenester i byen +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tillat firmaer å gi penger til byer for omlegging av veinettet for å sabotere veibaserte tjenester i byen STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillat pengeoverføring til andre firmaer: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tillat firmaer å overføre penger til andre firmaer i flerspillermodus -STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for last til å simulere tunge tog: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for last for å simulere tunge tog: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Still virkningen av å frakte gods i tog. En høyere verdi gjør det mer krevende for tog å frakte gods, spesielt i bakker STR_CONFIG_SETTING_PLANE_SPEED :Flyfart faktor: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Still den relative hastigheten til fly sammenlignet med andre kjøretøy, for å redusere inntekter ved luftfrakt @@ -1220,10 +1253,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillat stoppest STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillat bygging av stoppesteder med gjennomkjøring på by-eide veier STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillat stoppesteder med gjennomkjøring på motstander-eide veier: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillat bygging av gjennomkjørbare lastestasjoner på veier eid av andre selskaper -STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillat bygging av nærliggende stasjoner: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Tillat forskjellige stasjoner å være i hverandre -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktiver flere NewGRF-kjernesett: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitets-valg for gamle NewGRF-filer. Ikke deaktivér dette med mindre du vet nøyaktig hva du gjør! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det er ikke mulig å endre denne innstillingen når det allerede finnes kjøretøy. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vedlikehold av infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Når aktivert, medfører infrastruktur vedlikeholdskostnader. Kostnadene vokser over-proporsjonalt med nettverkets størrelse, og påvirker dermed større selskaper mer enn de små @@ -1246,8 +1275,8 @@ STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoforny kjør STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Når aktivert, blir et kjøretøy som nærmer seg slutten av sin levetid automatisk erstattet når betingelsene for fornyelse er oppfylt STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoforny kjøretøy når det er {STRING} maks alder STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativ alder når kjøretøy burde bli vurdert autofornyet -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} måned{P 0 "" s} før -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} måned{P 0 "" s} etter +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} måned{P 0 "" er} før +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} måned{P 0 "" er} etter STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum formue for autofornyelse av kjøretøy: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minste pengemengde som må være igjen i banken for å vurdere automatisk fornying av kjøretøy STR_CONFIG_SETTING_ERRMSG_DURATION :Varighet av error-melding: {STRING} @@ -1255,34 +1284,48 @@ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Varighet for vi STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} andre{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Vis verktøytips: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse før verktøytips vises når musen svever over elementer i grensesnittet. Alternativt kan verktøytips bindes til den høyre museknappen -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hovre i {COMMA} sekund{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hovre i {COMMA} millisekunder{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høyreklikk STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vis byers innbyggertall i tittelfeltet: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis inbyggertallet i byer i tittelfeltet på kartet STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Graflinjenes tykkelse: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Linjebredde i grafene. En tynn linje er mer presis å lese av, mens en tykkere linje er lettere å se, og farger er lettere å skille +STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definerer grunnleggende spill-scenarier med forskjellige laster og byers vekstkrav. NewGRF og spill-skript tillater imidlertid finere kontroll STR_CONFIG_SETTING_LAND_GENERATOR :Landskapsgenerator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den opprinnelige generatoren avhenger av det originale grafikksettet, og komponerer faste landskapsformer. TerraGenesis er en Perlin støybasert generator med finere kontrollinnstillinger STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orginal STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maks distanse fra kant for Olje Raffinerier: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrengtype: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis bare) Hvor kupert landskapet er +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industritetthet: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Angi hvor mange næringer som skal genereres og hvilket nivå som skal opprettholdes i løpet av spillet +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maks avstand fra kant for Oljeraffinerier: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olje rafinerier er bare bygd nær kartets kanter, det er ved kysten på øy kart STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snøgrense: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ulendthet på terreng (kun TerraGenesis): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontroller på hvilken høyde snøen begynner i sub-arktiske landskap. Snø påvirker også industrigenerering og byers vekstkrav +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grad av ujevnhet i terreng: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis bare) Velg frekvensen av åser: Glatte landskap har færre og mer utbredte åser. Røffe landskap har mange åser, som kan fremstå repeterende STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veldig jevnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Jevnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veldig ulendt +STR_CONFIG_SETTING_VARIETY :Variasjonsspredning: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis bare) Kontrollere om kartet inneholder både fjellrike og flate områder. Siden dette bare gjør kartet flatere, bør andre innstillinger settes til fjellrik +STR_CONFIG_SETTING_RIVER_AMOUNT :Elvemengde: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Velg hvor mange elver som genereres STR_CONFIG_SETTING_TREE_PLACER :Treplasseringalgoritme: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Velg fordelingen av trær på kartet: 'Original' planter trær jevnt spredt, 'Forbedret' planter dem i grupper STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbedret +STR_CONFIG_SETTING_ROAD_SIDE :Veikjøretøy: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Velg kjøre-siden STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Høydekartrotering: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Høydenivå et flatt scenariokart får: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillat landskapsendring av ruter ved endene på kartet: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Når deaktivert, kartets kanter vil altid være hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}En eller flere ruter ved den nordlige kanten av kartet er ikke tom(me) STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}En eller flere ruter ved en av kantene på kartet er ikke vann @@ -1303,13 +1346,13 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Myk rulling: {S STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Velge hvordan synsfeltet ruller til en bestemt posisjon når du klikker på det lille kartet, eller ved utstedelse av en kommando for å gå til et bestemt objekt på kartet. Hvis aktivert, ruller synsfeltet jevnt, og hvis deaktivert hopper det direkte til det valgte punktet STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis målingsverktøy ved bruk av byggingsverktøy: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vise avstander mellom kartelementer samt høydeforskjeller når du drar linjer ved byggevirksomhet -STR_CONFIG_SETTING_LIVERIES :Vis firmaovertakelser: {STRING} +STR_CONFIG_SETTING_LIVERIES :Vis utleiefirma etter kjøretøytype: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrollér bruken av kjøretøystype-spesifikke lakkeringer (i motsetning til selskaps-spesifikke) STR_CONFIG_SETTING_LIVERIES_NONE :Ingen STR_CONFIG_SETTING_LIVERIES_OWN :Eget firma STR_CONFIG_SETTING_LIVERIES_ALL :Alle firmaer STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretrekk lagsamtale med : {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Bytte bindingen av selskapets interne og offentlige kommunikasjon til , henholdsvis +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Bytte bindingen av firmaets interne og offentlige kommunikasjon til , henholdsvis STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Rullehjulets funksjon: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Tillat rulling med todimensjonale musehjul STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kartet @@ -1333,17 +1376,15 @@ 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_AUTOSAVE :Autolagring: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Velg intervall mellom automatiske lagringer av spillet + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Bruk {STRING} datoformat i navn på lagrede spill. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datoformat i lagrede spills filnavn STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Antatt palett for NewGRFer uten spesifisert palett: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalett å bruke for NewGRF filer som ikke angir hvilken palett de trenger -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palett -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palett - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pause automatisk ved start av nytt spill: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Når aktivert, vil spillet automatisk pause når du starter et nytt spill, for å tillate nærmere studie av kartet STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spillet er på pause, tillat: {STRING} @@ -1352,7 +1393,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ingen handlinge STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt utenom konstruksjon STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt utenom landskapsendringer STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle handlinger -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk avansert kjøretøyliste: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk grupper i kjøretøyliste: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver bruk av de avanserte kjøretøyslistene for guppering av kjøretøy STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lastingsindikatorer: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Velg hvorvidt lasteindikatorer vises over kjøretøy som lastes eller losses @@ -1394,13 +1435,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spille lyder fr STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Fjern infrastrukturbygging før tilhørende kjøretøy er tilgjengelige: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Når aktivert, vil infrastruktur bare være tilgjengelig hvis det også finnes kjøretøy tilgjengelig, for å forhindre sløsing av tid og penger på ubrukelig infrastruktur STR_CONFIG_SETTING_MAX_TRAINS :Maks antall tog per firma: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antall tog som et selskap kan ha -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antall kjøretøy per firma: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antall veikjøretøy som et selskap kan ha +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antall tog som et firma kan ha +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antall veikjøretøy per firma: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antall veikjøretøy som et firma kan ha STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks antall luftfartøy per firma: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antall fly som et selskap kan ha +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antall fly som et firma kan ha STR_CONFIG_SETTING_MAX_SHIPS :Maks antall skip per firma: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antall skip som et selskap kan ha +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antall skip som et firma kan ha STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskinen i å bygge tog: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av tog umulig for en datamaskin-spiller @@ -1417,7 +1458,7 @@ STR_CONFIG_SETTING_AI_PROFILE_EASY :Lett STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Middels STR_CONFIG_SETTING_AI_PROFILE_HARD :Vanskelig -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillat AIer i flerspiller: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillat AI-er i flerspiller: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillat datamaskin-spillere å delta i flerspiller-spill STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før skript er avbrutt: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimalt antall beregningstrinn et skript kan ta i én omgang @@ -1426,7 +1467,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Vedlikeholdsint STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Velge om vedlikehold av kjøretøyer utløses av tiden som er forløpt fra siste gjennomførte vedlikehold, eller av at pålitelighet dropper under en bestemt prosent av maksimal pålitelighet STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlikeholdsintervall for tog: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skinnegående kjøretøy, hvis det ikke er satt noe serviceintervall for kjøretøyet -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" er}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikeholdsintervall for veikjøretøy: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Angi standard vedlikeholdsintervall for nye veikjøretøy, hvis det ikke er satt noe vedlikeholdsintervall for kjøretøyet @@ -1438,12 +1479,12 @@ STR_CONFIG_SETTING_NOSERVICE :Deaktiver vedli STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Når aktivert, vil kjøretøy ikke bli vedlikeholdt hvis de ikke kan bryte sammen STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver fartsgrenser for vogner: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når aktivert, brukes også fartsgrenser til vogner for å avgjøre den maksimale hastigheten til et tog -STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske tog: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske spor: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Aktivering av denne innstillingen deaktiverer kravet om å elektrifisere spor for å tillate at elektriske motorer kan kjøre på dem -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første kjøretøy på spillers stasjon: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vise en nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny spiller -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første kjøretøy på motstanders stasjon: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første kjøretøy ankommer spillers stasjon: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis en nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny spiller +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første kjøretøy ankommer motstanders stasjon: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vise nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny motstander STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ulykker / katastrofer: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vise nyhetsoppdatering når ulykker eller katastrofer inntreffer @@ -1480,7 +1521,7 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farge i avisen STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året der avisannonseringene bli vist i farger. Før dette året blir alle annonseringer vist i svart/hvitt, STR_CONFIG_SETTING_STARTING_YEAR :Start spillet i år: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jevn økonomi (flere, mindre endringer): {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når aktivert, endrer industriproduksjonen seg oftere, og i mindre trinn. Denne innstillingen har vanligvis ingen effekt hvis industriene er gitt av et NewGRF +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når denne er aktivert, endrer industriproduksjonen seg oftere, og i mindre trinn. Denne innstillingen har vanligvis ingen effekt hvis industriene er fra en NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Tillat aksjekjøp i andre firmaer: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Når aktivert, tillates kjøp og salg av selskapers aksjer. Aksjer vil kun være tilgjengelig selskaper som når en viss alder STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av etappe-overskudd som skal betales i innmatingssystem: {STRING} @@ -1493,7 +1534,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velg oppførsel STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg vingesignal automatisk før: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Angi året når elektriske signal vil bi tatt i bruk for spor. Før dette året vil ikke-elektriske signal bli brukt (som har nøyaktig samme funksjon, men forskjellig utseende) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktiver signalgrensesnittet: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vis et vindu for å velge hvilke singaltyper som skal bygges, i stedet for vindusløs signaltype-rotasjon når man Ctrl + klikker på byggesignaler +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vis et vindu for å velge hvilke signaltyper som skal bygges, i stedet for vindusløs signaltype-rotasjon når man Ctrl+klikker på bygde signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standard signaltype: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard signaltype som blir brukt STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokksignaler @@ -1514,10 +1555,10 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 Rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilfeldig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byer kan bygge veier: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillat byer å bygge veier for å vokse. Deaktiver for å forhindre bystyrer å bygge veier på egenhånd -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer har lov å bygge overganger: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ved å aktivere denne innstillingen, tillates byer å bygge nivå kryssinger +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer har lov å bygge planoverganger: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ved å aktivere denne innstillingen, tillates byer å bygge planoverganger STR_CONFIG_SETTING_NOISE_LEVEL :Tillat bykontrollert støynivå for flyplasser: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Med denne innstillingen deaktivert kan det være to flyplasser i hver by. Med denne innstillingen aktivert, antall flyplasser i en by blir bestemt av lydaksepteringen i byen, som avhenger av innbyggertall, flyplasstørrelse og avstand +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Når denne innstillingen er deaktivert, kan det være to flyplasser i hver by. Når denne innstillingen er aktivert, blir antall flyplasser i en by bestemt av graden av støytoleranse i byen. Graden avhenger av innbyggertall, flyplasstørrelse og avstand STR_CONFIG_SETTING_TOWN_FOUNDING :Grunnlegging av byer i spillet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ved å aktivere denne innstillingen tillates spillere å grunnlegge nye byer i spillet STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbudt @@ -1565,12 +1606,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ingen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Innledende bystørrelsesmultiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gjennomsnittsstørrelse på (stor)byer i forhold til vanlige byer ved begynnelsen av spillet -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde veielementer under veikonstruksjon: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern blindveier under finansiert veikonstruksjon -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Oppdater distribusjonsgraf hver {STRING} dag{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Oppdater distribusjonsgraf hver {STRING}{NBSP}dag{P 0:2 "" er} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tid mellom påfølgende reberegning av koblingsgrafen. Hver reberegning beregner planene for en del av grafen. Det betyr at en verdi X for denne innstillingen ikke betyr at hele grafen vil bli oppdatert for hver X. dag. Bare noen komponenter vil. Jo kortere du setter det, dess mer CPU tid bil være nødvendig for å beregne det. Jo lenger du setter den, dess lenger vil det ta før last-distribusjonen begynner på nye ruter. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Benytt {STRING} dag{P 0:2 "" er} for reberegning av distribusjonsgraf +STR_CONFIG_SETTING_LINKGRAPH_TIME :Benytt {STRING}{NBSP}dag{P 0:2 "" er} for omberegning av distribusjonsgraf STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tiden det tar for hver ny reberegning av en graf-link komponent. Når en reberegning iverksettes, blir en tråd startet som tillates å kjøre for dette antall dager. Jo kortere du setter dette, desto mer sannsynlig er det at tråden ikke er ferdig til ønsket tid. Da stopper spillet ("etterslep"). Jo lenger du setter den, desto lenger tid tar det for distribusjonen å bli oppdatert når rutene endres. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk @@ -1580,9 +1619,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisk" be STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribusjonsmodus for post: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyr at omrent samme mengde post vil bli sent fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder post kan bli sendt i begge retninger. "manuelt" betyr at ingen automatisk distribusjon vil forekomme for post. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribusjonsmodus for den pansrede gods-klassen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den pansrede godsklassen inneholder verdisaker i det tempererte klimaet, diamanter i det subtropiske, og gull i det subarktiske. NEWGRF kan endre på dette. "symmetrisk" betyr at omtrent like mye gods vil bli sendt fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen auomatisk distribusjon vil forekomme for lasten. Det anbefales å sette denne til asymmetrisk eller manuell når du spiller subarktisk, siden banker ikke vil sende noe gull tilbake til gullgruver. For temperert og subtropisk klima kan du også velge symmetrisk, da banker fint kan velge å sende verdisaker tilbake til opprinnelig bank. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den PANSREDE godsklassen inneholder verdisaker i det tempererte klimaet, diamanter i det subtropiske, og gull i det subarktiske. NewGRF-er kan endre på dette. "symmetrisk" betyr at omtrent like mye gods vil bli sendt fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen automatisk distribusjon vil forekomme for lasten. Det anbefales å sette denne til asymmetrisk eller manuell når du spiller subarktisk, siden banker ikke vil sende noe gull tilbake til gullgruver. For temperert og subtropisk klima kan du også velge symmetrisk, da banker fint kan velge å sende verdisaker tilbake til opprinnelig bank. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribusjonsmodus for andre godsklasser: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisk" betyr at omtrent samme mengde gods vil bli sendt fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen automatisk distribusjon av gods vil forekomme for disse godstypene. Du vil sannsynligvis sette denne til enten asymmetrisk eller manuell. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen automatisk distribusjon av gods vil forekomme for disse godstypene. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribusjons-nøyaktighet: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo høyere du setter denne, desto mer prosessor-tid vil beregningen av koblingsgrafen ta. Hvis dette bruker for lang tid, vil du oppleve etterslep. Hvis du setter den til en lav verdi, vil distribusjonen bli mer unøyaktig, og du vil kunne oppleve at gods ikke blir sendt til de stedene du forventer at den skal gå. STR_CONFIG_SETTING_DEMAND_DISTANCE :Efffekten av avstand på behov: {STRING} @@ -1605,50 +1644,52 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (HK) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Vekt-enheter: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Når vektene er vist i brukergrensesnittet , vise det i de utvalgte enheter +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Når vektene vises i brukergrensesnittet, vis dem i de utvalgte enhetene STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Det britiske imperiets enhetssystem ('short t'/tonn) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (t/tonn) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumenheter: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Når volumene er vist i brukergrensesnittet, vise det i de utvalgte enhter +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Når volumene vises i brukergrensesnittet, vis dem i de utvalgte enhetene STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Det britiske imperiets enhetssystem (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Enhet for trekkraft: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Når trekkarbeid, også kjent som trekkraft, er vist i brukergrensesnittet, vis det i de utvaglte enheter +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Når trekkarbeid, også kjent som trekkraft, er vist i brukergrensesnittet, vis det i de utvalgte enhetene STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Det britiske imperiets enhetssystem (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Høyde-enheter: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Når høyder vises i brukergrensesnittet, vise det i de utvalgte enheter +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Når en høyde vises i brukergrensesnittet, vis den i de valgte enhetene STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Det britiske imperiets enhetssystem (fot) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikk +STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Grensesnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Synsfelt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyheter / Rådgivere +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Regnskap STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kjøretøy -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjoner -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Gods-distribusjon +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysikk +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Begrensninger +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofer / Ulykker +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Verdensgenerering +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Myndigheter +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Gods-distribusjon STR_CONFIG_SETTING_AI :{ORANGE}Motstandere -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visningsinnstillinger -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter -STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheter og meldinger -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Varehåndtering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinstyrte spillere -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoforny -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Vedlikehold -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tog -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Byer -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrier STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1697,7 +1738,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Flerspil STR_INTRO_GAME_OPTIONS :{BLACK}Spillinnstillinger STR_INTRO_HIGHSCORE :{BLACK}Tavle med høyeste poengsummer -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avanserte Innstillinger +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Innstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillinger STR_INTRO_ONLINE_CONTENT :{BLACK}Se etter innhold på nettet STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spillskript-innstillinger @@ -1717,7 +1758,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Velg lek STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vis spillinnstillinger STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vise tavle over høyeste poengsummer -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Vis avanserte innstillinger +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Vis innstillinger STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-instillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Se etter nytt og oppdatert innhold for nedlasting STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis AI/Spillskript-innstillinger @@ -1757,6 +1798,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldoser (fjern industrier, uflyttbare objekter): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krysse hverandre: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke krasje (regelmessig) på små flyplasser: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Rediger den maksimale karthøyden: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Rediger den maksimale fjellhøyden på kartet STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperert landskap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktisk landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisk landskap @@ -1805,6 +1848,7 @@ STR_LIVERY_FREIGHT_TRAM :Varetrikk STR_FACE_CAPTION :{WHITE}Velg ansikt STR_FACE_CANCEL_TOOLTIP :{BLACK}Avbryt ansiktsvalg STR_FACE_OK_TOOLTIP :{BLACK}Godta nytt ansikt +STR_FACE_RANDOM :{BLACK}Tilfeldiggjør STR_FACE_MALE_BUTTON :{BLACK}Mann STR_FACE_MALE_TOOLTIP :{BLACK}Velg mannsansikter @@ -1925,13 +1969,14 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt STR_NETWORK_START_SERVER_UNADVERTISED :Nei STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks antall tillatte klienter: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks antall klienter: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS.small :dra og slipp STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Velg maks antall klienter. Ikke alle plassene trenger å bli tatt STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firma{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks antall firmaer: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall firmaer STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} tilskuer{P "" e} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks antall tilskuere +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks antall tilskuere: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall tilskuere STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Språk de snakker på tjeneren: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andre spillere skal kunne vite hvilket språk man snakker på denne tjeneren @@ -2037,13 +2082,14 @@ STR_NETWORK_CLIENTLIST_BAN :Bannlys STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gi penger STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Snakk til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Snakk til firma -STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat beskjed +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat melding STR_NETWORK_SERVER :Tjener STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskuere STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn hvor mye penger du ønsker å gi +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Tilskuer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikke lagre passordet @@ -2224,15 +2270,15 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, avs # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Instillinger for gjennomsiktighet -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Veksle mellom gjennomsiktighet for skilt. Ctrl+klikk for å låse -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Gjennomsiktighet for trær. Ctrl+klikk for å låse -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Gjennomsiktighet for hus. Ctrl+klikk for å låse -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Gjennomsiktighet for industrier. Ctrl+klikk for å låse -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Gjennomsiktighet for stasjoner, garasjer, staller, hangarer, dokker og kontrollpunkt. Ctrl+klikk for å låse -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Gjennomsiktighet for broer. Ctrl+klikk for å låse -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Gjennomsiktighet for bygg som fyrtårn og antenner. Ctrl+klikk for å låse -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Gjennomsiktighet for kjeder. Ctrl+klikk for å låse -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Gjennomsiktighet for lastingsindikatorer. Ctrl+klikk for å låse +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Gjennomsiktige skilt. Ctrl+klikk for å låse +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Gjennomsiktige trær. Ctrl+klikk for å låse +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Gjennomsiktige hus. Ctrl+klikk for å låse +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Gjennomsiktige industrier. Ctrl+klikk for å låse +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Gjennomsiktige stasjoner, garasjer, staller, hangarer, dokker og kontrollpunkt. Ctrl+klikk for å låse +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Gjennomsiktige broer. Ctrl+klikk for å låse +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Gjennomsiktige bygg som fyrtårn og antenner. Ctrl+klikk for å låse +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Gjennomsiktige kontaktledninger. Ctrl+klikk for å låse +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Gjennomsiktige lastingsindikatorer. Ctrl+klikk for å låse STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjør objekter usynlige i stedet for gjennomsiktige # Linkgraph legend window @@ -2273,7 +2319,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bygg jer STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bygg togstall (trengs for å kjøpe og vedlikeholde tog). Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Gjør om jernbane til kontrollpunkt. Ctrl slår sammen kontrollpunkt. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bygg jernbanestasjon. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl veksler mellom vingesignaler/lyssignaler{}Hold og dra for å bygge signaler langs en rett jernbanestrekning. Ctrl bygger signaler til det neste krysset. Ctrl+klikk viser/skjuler signalvalgsvinduet. Shift slår av/på kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl veksler mellom vingesignaler/lyssignaler{}Hold og dra for å bygge signaler langs en rett jernbanestrekning. Ctrl bygger signaler til det neste krysset eller signalet. Ctrl+klikk viser/skjuler signalvalgsvinduet. Shift bytter mellom bygging/vising av kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bygg jernbanebro. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bygg jernbanetunnel. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Veksle mellom bygging/fjerning av jernbanespor, signaler, kontrollpunkt og stasjoner. Hold inne Ctrl for i tillegg å fjerne jernbanespor fra kontrollpunkt og stasjoner @@ -2422,7 +2468,7 @@ STR_AIRPORT_HELISTATION :{G=masculine}He STR_AIRPORT_CLASS_SMALL :Små flyplasser STR_AIRPORT_CLASS_LARGE :Store flyplasser -STR_AIRPORT_CLASS_HUB :Sentrumsflyplasser +STR_AIRPORT_CLASS_HUB :Hovedflyplasser STR_AIRPORT_CLASS_HELIPORTS :Helikopterplasser STR_STATION_BUILD_NOISE :{BLACK}Støy generert: {GOLD}{COMMA} @@ -2548,6 +2594,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtatte varer: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Veiens fartsgrense: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steiner @@ -2644,7 +2691,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-2013 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill @@ -2663,6 +2710,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Lagre STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Lagre gjeldende spill ved å bruke navnet som er valgt STR_SAVELOAD_LOAD_BUTTON :{BLACK}Last inn STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Last inn det valgte spillet +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Last inn det valgte høydekartet STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spilldetaljer STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen informasjon tilgjengelig. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2678,13 +2726,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antall byer: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antall industrier: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimal karthøyde: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Øk den maksimale fjellhøyden på kartet med én +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Redusér den maksimale fjellhøyden på kartet med én STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Høyde på snøgrensen: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flytt høyden på snøgrensen ett hakk opp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flytt høyden på snøgrensen ett hakk ned -STR_MAPGEN_RANDOM_SEED :{BLACK}Såtall: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikk her for å taste inn et såtall -STR_MAPGEN_RANDOM :{BLACK}Tilfeldiggjør -STR_MAPGEN_RANDOM_HELP :{BLACK}Endre såtall som brukes for terreng-generering STR_MAPGEN_LAND_GENERATOR :{BLACK}Landskapsgenerator STR_MAPGEN_TREE_PLACER :{BLACK}Trealgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrengtype: @@ -2711,7 +2758,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Høydeka STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Størrelse: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriv inn et såtall +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Endre maksimal karthøyde STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Endre høyden på snøgrensen STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Endre startår @@ -2766,6 +2813,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flytt op STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flytt den valgte NewGRF-filen oppover listen STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flytt ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flytt den valgte NewGRF-filen nedover listen +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Oppgrader +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Oppgrader NewGRF-filene der du har en nyere versjon installert STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}En liste over NewGRF-filene som er installert. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Sett parametre @@ -2790,6 +2839,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matchende STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktivert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Inkompatibel med denne versjonen av OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Lagre forhåndsinnstilling +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liste over tilgjengelige forhåndsinnstillinger. Velg en for å kopiere den til det lagrede navnet nedenfor +STR_SAVE_PRESET_TITLE :{BLACK}Skriv inn et navn for forhåndsinnstillingen +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Valgt navn for forhåndsinnstillingen som skal lagres +STR_SAVE_PRESET_CANCEL :{BLACK}Avbryt +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ikke forandre forhåndsinnstillingen +STR_SAVE_PRESET_SAVE :{BLACK}Lagre +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Lagre forhåndsinnstillingen med det valgte navnet + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Forandre NewGRF-parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lukk @@ -2814,13 +2873,16 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-v STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til figur +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå til gitt sprite. Hvis spriten ikke er en normal sprite, fortsett til neste normale sprite -STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige figur +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til forrige normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Forhåndsvisning av valgt sprite. Innrettingen ignoreres når spriten tegnes -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for å endre X- og Y-forskyvningene -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt på spriten for å endre X- og Y-forskyvningene +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Tilbakestill relativt +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nullstill de nåværende relative forskyvningene +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X forskyvning: {NUM}, Y forskyvning: {NUM} (Absolutt) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X forskyvning: {NUM}, Y forskyvning: {NUM} (Relativt) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Velg en sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Velg en sprite fra et vilkårlig sted på skjermen @@ -2833,26 +2895,26 @@ STR_NEWGRF_ERROR_MSG_ERROR :{RED}Feil: {SIL STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}En fatal NewGRF-feil har oppstått: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} virker ikke med TTDPatch-versjonen som er rapportert av OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for versjon {STRING} av TTD. -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laget for å bli brukt med {STRING} +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for versjon {STRING} av TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laget for bruk med {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Ugyldig parameter for {1:STRING}: parameter {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må være lastet før {STRING}. -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må være lastet etter {STRING}. -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} krever OpenTTD versjon {STRING} eller nyere. +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må lastes inn før {STRING}. +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må lastes inn etter {STRING}. +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} krever OpenTTD versjon {STRING} eller nyere STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-filen den var laget for å oversette -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :For mange NewGRFer innlastet. -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {STRING} kan forårsake synkroniseringsfeil. -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventet figur (figur {3:NUM}) +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :For mange NewGRF-er er innlastet +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {STRING} kan forårsake synkroniseringsfeil +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventet sprite (figur {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjent Handling 0 egenskap {4:HEX} (figur {3:NUM}) -STR_NEWGRF_ERROR_INVALID_ID :Forsøkt å bruke ugyldig ID (figur {3:NUM}) -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt sprite. Alle ødelagte spriter vil bli vist som røde spørsmålstegn (?). -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8 oppføringer (figur {3:NUM}) -STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-figur (figur {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det nåværende grafikksettet mangler en del spriter.{}Vennligst oppdater grafikksettet. -STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den benyttede grafikkpakken mangler en mengde bildeelementer.{}Vennligst oppdater grafikkpakken.{}Siden du spiller en {YELLOW}utviklingsversjon av OpenTTD{WHITE}, kan det være at du også trenger en {YELLOW}utviklingsversjon av grafikkpakken{WHITE} +STR_NEWGRF_ERROR_INVALID_ID :Forsøk på å bruke ugyldig ID (sprite {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt sprite. Alle ødelagte spriter blir vist som røde spørsmålstegn (?). +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8-oppføringer (figur {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-sprite (figur {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det benyttede grafikksettet mangler en del spriter.{}Du må oppdatere grafikksettet. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den benyttede grafikkpakken mangler en mengde bildeelementer.{}Du må oppdatere grafikkpakken.{}Siden du spiller en {YELLOW}utviklingsversjon av OpenTTD{WHITE}, kan det være at du også trenger en {YELLOW}utviklingsversjon av grafikkpakken{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF-ressurser ikke tilgjengelig (figur {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ble deaktivert av {STRING} -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent figur layout-format (figur {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent sprite layout-format (figur {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Advarsel! @@ -2865,7 +2927,7 @@ STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(er) lastet for manglende filer STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF-fil(er) har blitt deaktivert STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Mangler GRF-fil(er) -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Å slå av pause kan medføre at OpenTTD krasjer. Ikke rapporter feil for etterfølgende krasjer.{}Vil du virkelig slå av pause? +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Å slå av pause kan medføre at OpenTTD krasjer. Ikke rapporter feil for etterfølgende krasjer.{}Er du sikker på at du vil slå av pause? # NewGRF status STR_NEWGRF_LIST_NONE :Ingen @@ -2877,7 +2939,8 @@ STR_NEWGRF_LIST_MISSING :{RED}Manglende STR_NEWGRF_BROKEN :{WHITE}Atferden til NewGRF '{STRING}' vil trolig forårsake synkroniseringsfeil og/eller krasj. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endret maskinvogn-tilstand for '{1:ENGINE}' mens det er utenfor en togstall. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det endret kjøretøylengde for '{1:ENGINE}' når utenfor en togstall. -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' tilhørende '{COMPANY}' har ugyldig lengde. Dette skyldes trolig problemer med NewGRFer. Spillet kan bli usynkronisert eller krasje. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE} Det endret kjøretøykapasitet for '{1:ENGINE}' når ikke i et depot eller under ombygging +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' tilhørende '{COMPANY}' har ugyldig lengde. Dette skyldes trolig problemer med NewGRF-er. Spillet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gir feilaktig informasjon. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare-/ombyggingsinformasjon for '{1:ENGINE}' er forskjellig fra kjøpelisten etter konstruksjonen. Dette kan resultere i at autofornying ikke fungerer på riktig måte. @@ -2891,6 +2954,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} med STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanner NewGRFer STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanner NewGRFer. Avhengig av mengde kan dette ta litt tid... @@ -2928,10 +2994,10 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} levert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (fortsatt nødvendig) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (levert) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Byen vokser hver {ORANGE}{COMMA}.{BLACK} dag -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Byen vokser hver {ORANGE}{COMMA}.{BLACK} dag (finansiert) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Byen vokser hver {ORANGE}{COMMA}{BLACK}{NBSP}dag{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Byen vokser hver {ORANGE}{COMMA}{BLACK}{NBSP}dag{P "" s} (finansiert) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Byen vokser {RED}ikke{BLACK} -STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Byens støygrense: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Flystøy: {ORANGE}{COMMA}{BLACK} støygrense: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Gå til by. Ctrl+klikk åpner et nytt tilleggsvindu over byen STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bystyre STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vis informasjon om bystyret @@ -2989,7 +3055,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informasjon STR_GOAL_QUESTION_CAPTION_WARNING :Advarsel STR_GOAL_QUESTION_CAPTION_ERROR :Feil -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei @@ -3008,6 +3074,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Start på nytt STR_GOAL_QUESTION_BUTTON_POSTPONE :Utsett STR_GOAL_QUESTION_BUTTON_SURRENDER :Gi opp STR_GOAL_QUESTION_BUTTON_CLOSE :Lukk +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidier @@ -3028,6 +3095,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Forrige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå til forrige side STR_STORY_BOOK_NEXT_PAGE :{BLACK}Neste STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gå til neste side +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig mål-referanse # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnavn - klikk på navnet for å gå til stasjonen. Ctrl+klikk åpner et nytt tilleggsvindu over stasjonen. @@ -3042,7 +3110,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ingen va # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Venter: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} på vei fra {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservert for lasting) @@ -3286,12 +3353,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ugrupperte kjø STR_GROUP_DEFAULT_SHIPS :Ugrupperte skip STR_GROUP_DEFAULT_AIRCRAFTS :Ugrupperte luftfartøy -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - Klikk en gruppe for å se alle kjøretøy i gruppen +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - Klikk på en gruppe for å se alle kjøretøy i gruppen. Dra og slipp grupper for å arrangere dem hierarkisk STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikk for å opprette en gruppe STR_GROUP_DELETE_TOOLTIP :{BLACK}Fjern den valgte gruppen STR_GROUP_RENAME_TOOLTIP :{BLACK}Gi nytt navn på den valgte gruppen STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppen fra global autoerstatning +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Slette gruppe +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Er du sikker på at du vil slette denne gruppen og eventuelle etterkommere? + STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte kjøretøy STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kjøretøy @@ -3329,10 +3399,10 @@ STR_PURCHASE_INFO_ALL_BUT :Alt utenom {CAR STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks trekkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rekkevidde: {GOLD}{COMMA} ruter -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liste over tog/vogner - klikk på tog/vogn for mer informasjon -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over kjøretøy - klikk på kjøretøy for mer informasjon -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liste over skip - klikk på skip for mer informasjon -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liste over luftfartøy - klikk på luftfartøy for mer informasjon +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liste over skip - klikk på skip for mer informasjon. Ctrl+klikk for å skjule/vise skiptypen +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liste over luftfartøy - klikk på luftfartøy for mer informasjon. Ctrl+klikk for å skjule/vise luftfartøytypen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kjøp tog/vogn STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kjøp kjøretøy @@ -3354,6 +3424,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Gi nytt STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Gi nytt navn til skipstypen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Gi nytt navn til luftfartøytypen +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Skjul + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Vis +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Vis + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise typen av jernbanekjøretøy +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise kjøretøystypen +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise skipstypen +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytte mellom å skjule/vise flytypen + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gi tog/vogntype nytt navn STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gi kjøretøytypen nytt navn STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Gi skipstypen nytt navn @@ -3407,7 +3492,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kopier k STR_DEPOT_CLONE_SHIP :{BLACK}Kopier skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kopier luftfartøy -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et tog inkludert alle vognene. Klikk denne knappen og deretter på et tog utenfor eller inni togstallen. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil kjøpe en kopi av et tog inkludert alle vognene. Klikk denne knappen og deretter på et tog utenfor eller inni togstallen. Ctrl+klikk deler ordrene. Shift+klikk viser estimert kostnad uten kjøp STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et kjøretøy. Klikk denne knappen og deretter på et kjøretøy utenfor eller inni garasjen. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et skip. Klikk denne knappen og deretter på et skip utenfor eller inni skipsdokken. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil skape en kopi av et luftfartøy. Klikk denne knappen og deretter på et luftfartøy utenfor eller inni hangaren. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad @@ -3458,6 +3543,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Kjøretøy STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :{G=neuter}Luftfartøy +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Kjøretøy i bruk +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolonne med kjøretøy som du eier +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Tilgjengelige kjøretøy +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolonne med kjøretøy tilgjengelig for utskiftning + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Velg lokomotivtype som skal erstattes STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velg lokomotivtypen du ønsker at skal erstatte den du har valgt til venstre @@ -3664,7 +3754,7 @@ STR_ORDER_GO_VIA :Gå via STR_ORDER_GO_NON_STOP_VIA :Gå direkte via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Endre stopprutinene for den merkede ordren -STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Full last av enhver varetype +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Full last av alle varetyper STR_ORDER_DROP_LOAD_IF_POSSIBLE :Last hvis tilgjengelig STR_ORDER_DROP_FULL_LOAD_ALL :Full last av alle varetyper STR_ORDER_DROP_FULL_LOAD_ANY :Full last av minst en varetype @@ -3680,8 +3770,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Endre lo STR_ORDER_REFIT :{BLACK}Bygg om STR_ORDER_REFIT_TOOLTIP :{BLACK}Velg hvilken varetype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsordren -STR_ORDER_REFIT_AUTO :{BLACK}Automatisk ombygging -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg hvilken varetype det skal automatisk bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstrukser. Automatisk ombygging vil kun bli utført hvis kjøretøyet tillater det +STR_ORDER_REFIT_AUTO :{BLACK}Ombygging på stasjon +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg hvilken godstype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstrukser. Ombygging blir kun utført hvis kjøretøyet tillater det STR_ORDER_DROP_REFIT_AUTO :Fast varetype STR_ORDER_DROP_REFIT_AUTO_ANY :Tilgjengelig varetype @@ -3772,24 +3862,24 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ingen lossing STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ingen lossing og vent på første fulle last) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ingen av og pålasting) -STR_ORDER_AUTO_REFIT :(Automatisk ombygging til {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Full last med automatisk ombygging til {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Full last av minst en varetype med automatisk ombygging til {STRING}) -STR_ORDER_UNLOAD_REFIT :(Loss av og ta last med automatisk ombygging til {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Loss av og vent på full last med automatisk ombygging til {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Loss av og vent på første fulle last med automatisk ombygging til {STRING}) -STR_ORDER_TRANSFER_REFIT :(Overfør og last på varer med automatisk ombygging til {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overfør og vent på full last med automatisk ombygging til {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overfør og vent på første fulle last med automatisk ombygging til {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Ingen lossing og last på varer med automatisk ombygging til {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ingen lossing og vent på full last med automatisk ombygging til {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ingen lossing og vent på første fulle last med automatisk ombygging til {STRING}) +STR_ORDER_AUTO_REFIT :(Ombygging til {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Full last med ombygging til {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Full last av minst en varetype med ombygging til {STRING}) +STR_ORDER_UNLOAD_REFIT :(Loss av og ta last med ombygging til {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Loss av og vent på full last med ombygging til {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Loss av og vent på første fulle last med ombygging til {STRING}) +STR_ORDER_TRANSFER_REFIT :(Overfør og last på varer med ombygging til {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overfør og vent på full last med ombygging til {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overfør og vent på første fulle last med ombygging til {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Ingen lossing og last på varer med ombygging til {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ingen lossing og vent på full last med ombygging til {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ingen lossing og vent på første fulle last med ombygging til {STRING}) STR_ORDER_AUTO_REFIT_ANY :tilgjengelige varetyper -STR_ORDER_STOP_LOCATION_NEAR_END :[nær slutten] +STR_ORDER_STOP_LOCATION_NEAR_END :[nærenden] STR_ORDER_STOP_LOCATION_MIDDLE :[midten] -STR_ORDER_STOP_LOCATION_FAR_END :[enden] +STR_ORDER_STOP_LOCATION_FAR_END :[bortenden] STR_ORDER_OUT_OF_RANGE :{RED} (Neste destinasjon er utenfor rekkevidde) @@ -3809,13 +3899,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Rutetabe STR_TIMETABLE_NO_TRAVEL :Ingen reise STR_TIMETABLE_NOT_TIMETABLEABLE :Reis (automatisk; settes på ruteplan med neste manuelle ordre) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reise (uten rutetabell) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis med maks {2:VELOCITY} (uten rutetabell) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis (uten rutetabell) med maks {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Reise i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med maks {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reise (i {STRING}, ikke oppsatt i rutetabell) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reise (i {STRING}, ikke oppsatt i rutetabell) med høyst {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(opphold i {STRING}, ikke oppsatt i rutetabell) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reise for {STRING}, ikke oppsatt med rutetabell) STR_TIMETABLE_STAY_FOR :og bli værende i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og reis i {STRING} -STR_TIMETABLE_DAYS :{COMMA} dag{P "" er} -STR_TIMETABLE_TICKS :{COMMA} tikk +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tikk{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Det vil ta {STRING} å fullføre rutetabellen STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Det vil ta minst {STRING} å fullføre denne rutetabellen (rutetabell ikke fullstendig) @@ -3823,11 +3917,11 @@ STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Det vil STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dette kjøretøyet er i rute STR_TIMETABLE_STATUS_LATE :{BLACK}Dette kjøretøyet er {STRING} for sent ute STR_TIMETABLE_STATUS_EARLY :{BLACK}Dette kjøretøyet er {STRING} for tidlig ute -STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne rutetabellen har ikke blitt startet enda +STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne rutetabellen har ikke blitt startet ennå STR_TIMETABLE_STATUS_START_AT :{BLACK}Denne rutetabellen vil bli startet {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Velg en dato som startpunkt for denne tidsplanen. Ctrl + Klikk setter utgangspunktet for denne tidsplanen og distribuerer alle kjøretøy som deler denne ordren jevnt basert på deres relative rekkefølge, hvis ordren har en komplett tidsplan. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Velg startdato for denne rutetabellen. Ctrl + Klikk setter utgangspunktet for denne rutetabellen og distribuerer alle kjøretøy som deler denne ordren jevnt basert på deres relative rekkefølge, hvis ordren har en fullstendig rutetabell. STR_TIMETABLE_CHANGE_TIME :{BLACK}Endre tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre varigheten for den merkede ordren @@ -3891,7 +3985,7 @@ STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spil # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Spillskript-konfigurasjon STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spillskriptet som vil bli lastet i neste spill -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AIene som vil bli lastet i neste spill +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI-ene som vil bli lastet i neste spill STR_AI_CONFIG_HUMAN_PLAYER :Menneskelig spiller STR_AI_CONFIG_RANDOM_AI :Tilfeldig AI STR_AI_CONFIG_NONE :(ingen) @@ -3902,19 +3996,20 @@ STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flytt ne STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flytt valgte AI nedover i listen STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spillskript -STR_AI_CONFIG_AI :{SILVER}AIer +STR_AI_CONFIG_AI :{SILVER}AI-er STR_AI_CONFIG_CHANGE :{BLACK}Velg {STRING} STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_NONE.small :AI STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spillskript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Last enda et skript STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurer -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurer skriptparametre +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurer skriptparametrene # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Tilgjengelige {STRING} -STR_AI_LIST_CAPTION_AI :AIer +STR_AI_LIST_CAPTION_AI :AI-er STR_AI_LIST_CAPTION_GAMESCRIPT :Spillskript STR_AI_LIST_TOOLTIP :{BLACK}Klikk for å velge et skript @@ -3941,6 +4036,8 @@ STR_AI_SETTINGS_START_DELAY :Antall dager de STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} hjelpefil til {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg til {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens til {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Bryt teksten +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt teksten i vinduet så alt passer uten å måtte skrolle STR_TEXTFILE_VIEW_README :{BLACK}Se på hjelpefilen STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens @@ -4007,8 +4104,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Å endr STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kun et reservelydsett ble funnet. Hvis du vil ha lyder, installer et lydsett via spillets nedlastingssystem. # Screenshot related messages -STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stort skjermbildet -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjermbildet kommer til å ha en oppløsning av {COMMA} x {COMMA} pixler. Å ta et skjermbildet kan ta sin tid. Vil du fortsette? +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stort skjermbilde +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjermbildet kommer til å ha en oppløsning på {COMMA} x {COMMA} pixler. Å ta et skjermbildet kan ta sin tid. Vil du fortsette? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjermbildet ble lagret som '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skjermbilde mislyktes! @@ -4051,6 +4148,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgravin STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... allerede på havnivå STR_ERROR_TOO_HIGH :{WHITE}... for høyt STR_ERROR_ALREADY_LEVELLED :{WHITE}... allerede flatt +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Etterpå vil broen over den være for høy. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke endre firmaets navn... @@ -4077,7 +4175,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}...{NBSP STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...{NBSP}for nær en annen by STR_ERROR_TOO_MANY_TOWNS :{WHITE}...{NBSP}for mange byer STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det er ikke mer plass på kartet -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Byen kommer ikke til å bygge veier. Du kan aktivere bygging av veier via Avanserte innstillinger->Økonomi->Byer. +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Byen kommer ikke til å bygge veier. Du kan aktivere bygging av veier via Innstillinger->Miljø->Byer STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veiarbeid i gang STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan ikke fjerne denne byen...{}En stasjon eller garasje/stall/hangar/dokk henviser til byen eller en by-eid rute som ikke kan fjernes STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det er ingen passende steder for en statue i sentrum av denne byen @@ -4101,6 +4199,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan kun bygges over snøgrensen STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan kun bygges under snøgrensen +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Det var ingen egnede steder for '{STRING}' bransjer +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Endre parametrene for kart-generering for å få et bedre kart + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge jernbanestasjon her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge busstasjon... @@ -4193,7 +4294,7 @@ STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Må fjer STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen passende jernbanespor STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Må fjerne jernbanespor først STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Veien er enveiskjørt eller blokkert -STR_ERROR_CROSSING_DISALLOWED :{WHITE}Denne jernbanetypen tillater ikke overganger +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Denne jernbanetypen tillater ikke planoverganger STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikke bygge signaler her... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikke bygge jernbanespor her... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikke fjerne jernbanespor herfra... @@ -4237,6 +4338,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Må rive STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan ikke starte og slutte på samme felt STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Broender er ikke på samme nivå STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav for terrenget +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Bro er for høy for dette terrenget. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må være på linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}...{NBSP}broens ender må være på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... broen er for lang @@ -4263,6 +4365,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du e STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke opprette gruppe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikke slette denne gruppen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikke gi nytt navn på denne gruppen... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan ikke sette foreldregruppe... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikke fjerne alle kjøretøy fra denne gruppen... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikke legge til kjøretøyet i denne gruppen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikke legge til delte kjøretøyer i gruppen... @@ -4497,7 +4600,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (damp) @@ -4704,10 +4807,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerfe STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate konteinerskip -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell konteinerskip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover konteinerskip -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut konteinerskip +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate kontainerskip +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell kontainerskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover kontainerskip +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut kontainerskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4800,6 +4903,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (skjult) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4835,8 +4939,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4847,9 +4949,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index ed3ef67b7e..b65f71ad15 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -201,21 +201,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} hk STR_UNITS_POWER_METRIC :{COMMA} hk STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} britisk{P "" e} ton STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} britisk{P "" e} gallon STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kgf STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -223,6 +230,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Søkefil STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv eit nøkkelord for filtrering av lista +STR_TOOLTIP_GROUP_ORDER :{BLACK}Vel rekkefølge for samling STR_TOOLTIP_SORT_ORDER :{BLACK}Vel sorteringsrekkefølgje (søkkande/stigande) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vel sorteringskriterium STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vel filtreringskriterium @@ -234,13 +242,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lukk vin STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tittel på vindauget - dra for å flytte vindauget STR_TOOLTIP_SHADE :{BLACK}Minimer vindauget - syn kun tittelfeltet STR_TOOLTIP_DEBUG :{BLACK}Syn NewGRF-debuggingsinformasjon -STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vindauget mot 'Lukk alle vindauge'-knappen +STR_TOOLTIP_DEFSIZE :{BLACK}Gjer om vindauget til standard storleik. Ctrl+Click gjer noverande storleik til standard +STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vindauget mot 'Lukk alle vindauge'-knappen. Ctrl+klikk for å sette som standard STR_TOOLTIP_RESIZE :{BLACK}Klikk og dra for å endre storleiken på vindauget STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Byt mellom stor/liten storleik på vindauga STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - blar lista opp/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - blar lista til venstre/høgre STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygningar o.a. i eit firkanta område. Ctrl vel området diagonalt. Shift syner estimert rivingskostnad +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Syn skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Syn skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Syn skjulte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Syn skjulte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ved å slå på denne knappen, vert skjulte tok også syna +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ved å slå på denne knappen, vert skjulte køyretøy også syna +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ved å slå på denne knappen, vert skjulte skip også syna +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved å slå på denne knappen, vert skjulte luftfartøy også syna + # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Avbryt @@ -278,6 +298,8 @@ STR_SORT_BY_LENGTH :Lengde STR_SORT_BY_LIFE_TIME :Attvarande levetid STR_SORT_BY_TIMETABLE_DELAY :Rutetabellforseining STR_SORT_BY_FACILITY :Stasjonstype +STR_SORT_BY_WAITING_TOTAL :Ventande last totalt +STR_SORT_BY_WAITING_AVAILABLE :Tilgjengeleg ventande last STR_SORT_BY_RATING_MAX :Høgast varevurdering STR_SORT_BY_RATING_MIN :Lågast varevurdering STR_SORT_BY_ENGINE_ID :MaskinID (klassisk type) @@ -290,6 +312,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskos STR_SORT_BY_CARGO_CAPACITY :Varekapasitet STR_SORT_BY_RANGE :Rekkevidde STR_SORT_BY_POPULATION :Innbyggjartal +STR_SORT_BY_RATING :Vurdering # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause @@ -302,6 +325,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Syne sub STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Syne liste over stasjonane til firmaet STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Syne firmaenes økonomiske data STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Syne firmaenes generelle data +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vis histioriebok +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vis målliste STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Syne grafar STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Syne firmarangeringstabell STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri @@ -349,7 +374,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Avslutt ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spelinstillingar -STR_SETTINGS_MENU_CONFIG_SETTINGS :Avanserte instillingar +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Innstillinger STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI- / Spelscript-innstillingar STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjennomsiktigheitsinnstillingar @@ -375,6 +400,7 @@ STR_FILE_MENU_EXIT :Avslutt OpenTTD # map menu STR_MAP_MENU_MAP_OF_WORLD :Verdskart STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra tilleggsvindauge +STR_MAP_MENU_LINGRAPH_LEGEND :Symbolforklaring for vareflyt STR_MAP_MENU_SIGN_LIST :Skiltliste ############ range for town menu starts @@ -457,7 +483,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Syne/gøym mark STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Slå av/på farging av skitne blokkar ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -473,22 +499,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -661,17 +705,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kart - { STR_SMALLMAP_TYPE_CONTOURS :Konturar STR_SMALLMAP_TYPE_VEHICLES :Køyretøy STR_SMALLMAP_TYPE_INDUSTRIES :Industriar +STR_SMALLMAP_TYPE_ROUTEMAP :Vareflyt STR_SMALLMAP_TYPE_ROUTES :Ruter STR_SMALLMAP_TYPE_VEGETATION :Vegetasjon STR_SMALLMAP_TYPE_OWNERS :Eigarar STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Syne landkonturar på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Syne køyretøy på kartet STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Syne inustriar på kartet +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vis vareflyt på kartet STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Syne transportruter på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Syne vegetasjon på kartet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Syne landeigarar på kartet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på ein industritype for å syne/gøyme han. Ctrl+klikk deaktiverer alle typer unnteke den valde. Ctrl+klikk på han att for å syne alle industriar. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på eit firma for å syne/ikkje syne dets eigedom. Ctrl+Klikk syner kun det valte firma. Ctrl+Klikk igjen for å syne alle firma +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikk på ein vare for å vise/skjule eigenskaper. Ctrl+klikk viser eigenskapar berre for vald vare. Ctrl+klikk igjen viser eigenskaper for alle varer STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegar STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jarnbaner @@ -705,6 +752,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynamn på kartet STR_SMALLMAP_CENTER :{BLACK}Midtstill oversiktskartet på den gjeldande posisjonen STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Deaktiver alle @@ -715,6 +763,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Syne all STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Byt syning av høgdekart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikkje syn firmaeigedom på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Syn all firmaeigedom på kartet +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ikkje vis varar på kartet +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vis alle varar på kartet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Syne siste melding eller nyheit @@ -791,13 +841,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} ventar i skipsdokken STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ventar i hangaren -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordrar på ruteplanen STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har ein ugyldig ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har to like ordrar STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har ein ugyldig stasjon i sine ordre -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} har i ordrane ein flyplass der rullebanen er for kort STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er veldig gammal @@ -876,13 +925,11 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas STR_GAME_OPTIONS_CURRENCY_KRW :Sør-Koreanske Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sør-Afrikanske Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigendefinert... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Køyreretning +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Veg-køyrety STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Vel køyreretning STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekøyring STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høgrekøyring @@ -917,11 +964,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalansk STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel intervall for automatisk lagring +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kvar månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kvar 3. månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvar 6. månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvar 12. månad +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvart halvår +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvart år +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel språk som skal nyttast @@ -933,8 +982,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjermop STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel skjermoppløysinga som skal nyttast STR_GAME_OPTIONS_RESOLUTION_OTHER :anna -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Filformat for skjermdump -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vel kva format skjermdumpen skal lagrast i +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnittstorleik +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vel storleik å bruke på grensesnittet + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobbel størrelse +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Firedobbel størrelse STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast @@ -950,6 +1003,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel musi STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} øydelagd{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om musikksettet +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kunne ikkje henta liste over støtta oppløysingar STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermvising feila # Custom currency window @@ -983,7 +1037,7 @@ STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maks. a STR_NONE :Ingen STR_FUNDING_ONLY :Kun finansiering STR_MINIMAL :Minimal -STR_NUM_VERY_LOW :Særs låg +STR_NUM_VERY_LOW :Særs lågt STR_NUM_LOW :Lite STR_NUM_NORMAL :Normal STR_NUM_HIGH :Høgt @@ -1028,6 +1082,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Særs flatt STR_TERRAIN_TYPE_FLAT :Flatt STR_TERRAIN_TYPE_HILLY :Åslendt STR_TERRAIN_TYPE_MOUNTAINOUS :Berglendt +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Tillatande STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1035,8 +1090,8 @@ STR_CITY_APPROVAL_HOSTILE :Fiendsleg STR_WARNING_NO_SUITABLE_AI :{WHITE}Inga passande AIer tilgjengeleg...{}Du kan lasta ned fleire AI'ar frå nettet med spelets nedlastingssystem. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avanserte innstillingar +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Innstillingar STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Søkefilter: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Utvid alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle @@ -1049,7 +1104,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinnstilling STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firmainnstilling (lagra med enkeltspel; påverkar berre nye spel) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firmainnstilling (lagra med enkeltspel; påverkar berre noverande firma) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Gjer at lista under berre viser innstillingar som er gjorde om STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnlegjande instillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanserte instillingar @@ -1064,6 +1120,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinnstilling STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spelinstillingar (gjeldande spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmainnstillingar (nye spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma instillingar (gjeldande firma) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Syn alle søkeresultat ved å setja{}{SILVER}Kategori {BLACK}til {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Syn alle søkeresultat ved å setja{}{SILVER}Type {BLACK}til {WHITE}Alle innstillingar +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Syn alle resultata ved å setja{}{SILVER}Kategori {BLACK}til {WHITE}{STRING} {BLACK}og {SILVER}Type {BLACK}til {WHITE}Alle innstillingar +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ingen - STR_CONFIG_SETTING_OFF :Av STR_CONFIG_SETTING_ON :På @@ -1104,8 +1164,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skru av/på kat STR_CONFIG_SETTING_CITY_APPROVAL :Haldninga til bystyra når det gjeld ombygging: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vel kor mykje vurderinga frå bystyra og høvet for meir bygging i området vert påverka av støy og øydelegging frå eit firma. -STR_CONFIG_SETTING_BUILDONSLOPES :Tillet bygging på skråningar og i vasskanten: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Tillet bygging av vegar, jernbanespor og stasjonar i bakkar, med hjelp av ekstra fundament. Skru av for å gjere at all bygging i bakkar må passe med kva retning terrenget skrånar +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimal høgd på kart: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Sett maksimal høgd for fjell på kartet +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikkje sette maksimal høgd på kartet til denne verdien. Minst eit fjell på kartet er høgare STR_CONFIG_SETTING_AUTOSLOPE :Tillet landskapsendringar under bygningar, spor o.s.b.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillet å endre landskapet under bygningar, vegar og jernbanespor, utan å måtte fjerne dei fyrst. STR_CONFIG_SETTING_CATCHMENT :Meir realistisk storleik på oppfangingsområde: {STRING} @@ -1120,41 +1181,65 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Togakselerasjon STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vel fysikkmodell for akselerasjonen til tog. Med den opphavlege modellen vert alle toga påverka like mykje av bakkar. Med den realistiske modellen vert toga påverka ut i frå eigenskapar som lengd og trekkraft STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Køyretøyers akselerasjonstype: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Vel fysikkmodell for akselerasjonen til køyretøy på vegar. Med den opphavlege modellen vert alle køyretøya påverka like mykje av bakkar. Med den realistiske modellen vert køyretøya påverka ut i frå eigenskapar som lengd og trekkraft +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Hellingskurve for tog: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Kor bratt ei hellande rute skal vera for tog. Høgare verdi gjer det vanskelegare å klatra opp hallinga STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Hellingskurve for veg-køyretøy: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kor bratt ei hellande rute skal vera for køyretøy. Høgare verdi gjer det vanskelegare å klatra opp hallinga STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog og skip å gjere 90-graderssvingar: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillet samanbygging av ikkje direkte tilstøtande stasjonar: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :Bruk forbetra lastingsalgoritme: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Last køyretøy gradvis: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillat å bygge stasjonar som ikkje heng saman. (Ctrl+klikk for å bygge åtskilte delar av stasjonen ) STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Lever varer til ein stasjon kun hvis det er etterspørjing: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Skrur på inflasjon, kor kostnader aukar noko fortare enn innbetalingar +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Største brolengde: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal lengde for brubygging +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimal høgd på bru: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimal høgd for å bygge bruer +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Største tunnellengde: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal lengde for tunnelbygging STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industriar STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterar +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flatt område rundt verksemder: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Kor mykje flatt område som krevst rundt verksemder. Dette sikrar plass for å bygge spor, stasjoner og liknande STR_CONFIG_SETTING_MULTIPINDTOWN :Tillet fleire like industriar i samme by: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalt vil ikkje byer og tettstader ha meir enn ei verksemd av kvar sort. Innstillinga tillet fleire verksemder av samme type i same by eller tettstad +STR_CONFIG_SETTING_SIGNALSIDE :Vis signaler: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Vel kva side av sporet signal skal stå på +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Venstre side +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :På køyresida +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Høgre side STR_CONFIG_SETTING_SHOWFINANCES :Syne rekneskap ved nyttår: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'direkte' som standard: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Set standard oppførsel for nye ordre til at køyretøy køyrer beint til stoppestaden utan å stoppe undervegs. Vanleg oppførsel er å stoppe på alle stasjonar køyretøyet passerer STR_CONFIG_SETTING_STOP_LOCATION :Nye togordrar stoppar som standard på {STRING} av plattformen STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :starten STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :i andre enden -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Køyretøykøar (med kvantumseffektar): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Flytt på vindauget dersom pila er nær ytterkantane på skjermen: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hovudvindauge +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Alle tilleggsvindauge STR_CONFIG_SETTING_BRIBE :Tillet bestikkelse av bystyret: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Tillet kjøp av eksklusive transportretter: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Tillat sponsing av bygningar: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tillat at firma kan gi pengar til byar for finansiering av nye bygningar STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal ombyggjing av vegnettet: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillet å sende pengar til andre firma: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tillat overføring mellom firma i fleirspelar-modus STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for frakt til å simulere tunge tog: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED :Flyhastighet-faktor: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Antal flystyrtar: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Sett sannsynlighet for at flykrasj skjer STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ingen STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redusert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalt STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillet stoppestadar med gjennomkøyring på by-eigde vegar: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillat bygging av stoppestadar med gjennomkøyring på vegar eigd av byen STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillet stoppestadar med gjennomkøyring på konkurent-eigde vegar: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillet å byggje stasjonar inntil andre: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktiver fleire NewGRF-kjernesett: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillatt bygging av stopp med gjennomkøyring på vegar eigd av andre firma STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Endring av denne instillinga er ikkje mogleg når det finst køyretøy STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vedlikehald av infrastruktur: {STRING} @@ -1168,34 +1253,61 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Alle køyretøy STR_CONFIG_SETTING_WARN_INCOME_LESS :Åtvar dersom eit køyretøy har negativ inntekt: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Køyretøy utgår aldri: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoforny køyretøy når det vert gamalt: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatisk fornying når køyretøy er {STRING} maks alder +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativ alder for når eit køyretøy skal vurderast for automatisk fornying +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} månad{P 0 "" s} før +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} månad{P 0 "" s} etter STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum formue for autofornying av køyretøy: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION :Varighet for feilmelding: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY :Syn verktøytips: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hold over i {COMMA} sekund{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høgreklikk STR_CONFIG_SETTING_POPULATION_IN_LABEL :Syne innbyggjartalet til byane i tittel: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Syn befolkningstal for byar saman med stadnamn på kartet STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Bredde på linjer i grafar: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Landskapsgenerator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den originale generatoren avhenger av basisgrafikk som er satt, og lagar faste figurar i landskapet. TerraGenesis er ein Perlin støygenerator med finare konroll på innstillingane STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrengtype: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Berre TerraGenesis) Grad av fjell i landskapet +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industritetthet: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set kor månge industriar som skal lagast og på kva nivå dei skal haldas gjennom spelet +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimal avstand frå kartkanten for Oljeraffineri: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snøgrense: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontroller i kva høgde snøen startar i arktis-liknande landskap. Snøen påverkar også kor industri kjem og krava for vekst i byar STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Kor ulendt skal terrenget vere (kun TerraGenesis): {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Berre TerraGenesis) Endre hyppigheit på høgder: Mjuke landskap he færre, meir spredde høgder. Tøffe landskap har månge høgdre, som kan sjå repeterande ut STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Særs jamnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Jamnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Særs ulendt +STR_CONFIG_SETTING_VARIETY :Variasjonsdistrubusjon: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Berre TerraGenesis) Kontroller om kartet inneheld både høge og flate område. Sidan dette berre gjer kartet flatare, bør andre innstillingar setjast til høge +STR_CONFIG_SETTING_RIVER_AMOUNT :Elve-mengde: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vel mengde elver å generera STR_CONFIG_SETTING_TREE_PLACER :Treplasseringalgoritme: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Vel fordelinga av tre på kartet: 'Original' plantar trea likt utover, 'Forbedra' plantar dei i grupper STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbetra +STR_CONFIG_SETTING_ROAD_SIDE :Veg-køyrety: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Vel køyreside STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Høgdekartrotering: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Høgdenivå eit flatt scenariokart får: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillat endring av landskapsruter på kanten av kartet: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ei eller fleire ruter på nordkanten er ikkje tomme STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ei eller fleire ruter på ein av kantane inneheld ikkje vatn +STR_CONFIG_SETTING_STATION_SPREAD :Maksimal utspreiing av stasjonar: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatisk vedlikehald ved helikopterplass: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service på helikopter etter kvar landing, sjølv om det ikkje er depot på landingsplassen. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Koble landskapsverktøylinja til bygningsverktøylinjane: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Landfarge nytta på oversiktskartet: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farge på terrenget i oversiktskartet STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grøn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrøn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett @@ -1208,29 +1320,38 @@ STR_CONFIG_SETTING_LIVERIES_OWN :Eige firma STR_CONFIG_SETTING_LIVERIES_ALL :Alle firma STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretrekk lagchat med : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksjonen til rullehjulet: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Tillat rulling med to-dimensjonale musehjul STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kart STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rull kart STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Av STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rullehjulets hastigheit på kartet: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Endre sensitiviteten på musehjul-rulling +STR_CONFIG_SETTING_OSK_ACTIVATION :Skjerm-tastatur: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktivert +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dobbelklikk +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkelt klikk (når vald) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkelt klikk (umiddelbart) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Høgreklikkemulering: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vel metode for å gjenskape høgre museknapp-klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreknapps-rulling: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :Autolaging: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vel intervall for automatisk lagring av spel + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Bruk {STRING} datoformat for namning av lagra spel +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datoformat i namning av lagra spel STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Anteke standardpalett for NewGRFer utan spesifisert palett: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-palett -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows-palett - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatisk pause når ein startar nytt spel: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spelet er pausa, tillet: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vel kva handlingar som kan gjerast når spelet er pausa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ingen handlingar STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle ikkje-konstruksjons-handlingar STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :alt unntatt landskapsendring-handlingar @@ -1241,12 +1362,16 @@ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Syne rutetabell STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Syne ankomst og avferd i rutetabellane: {STRING} STR_CONFIG_SETTING_QUICKGOTO :Hurtig-laging av køyretøy-ordrar: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard jernbanetype (etter nytt/lasta spel): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jernbanetype vald etter oppstart eller innlasting av spel. 'fyrste tilgjengelege' vel den eldste typen jernbane, 'sist tilgjengelege' vel den nyaste typen jernbane, og 'mest brukt' vel den typen som for øyeblikket er mest nytta STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Første tilgjengelege STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Siste tilgjengelege STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukte STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Syne reserverte spor: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gi reserverte sport ein anna farge for å assistera ved problem med tog som nektar å køyra inn på spor-baserte delar STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hold byggjeverktya aktive etter bruk: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hald bygningsverkty for bruer, tunnelar, osv. opne etter bruk STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper utgifter i firmarekneskapen-vindauget: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definer utsjånaden på firmautgift-vindauget STR_CONFIG_SETTING_SOUND_TICKER :Samandrag: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spel lyd for samandrag av meldingar og nyheiter @@ -1255,11 +1380,14 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spel lyd når a STR_CONFIG_SETTING_SOUND_NEW_YEAR :Når året er slutt: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksjon: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spel lydar ved bygging og andre handlingar +STR_CONFIG_SETTING_SOUND_CLICK :Knappetrykk: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pip når knappar blir trykt STR_CONFIG_SETTING_SOUND_DISASTER :Ulukker/katastrofar: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spel lydar frå ulukker og katastrofar STR_CONFIG_SETTING_SOUND_VEHICLE :Køyretøy: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spel lydar frå køyretøy -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spel lydar frå landskap, industri og byar. +STR_CONFIG_SETTING_SOUND_AMBIENT :Omgivelse: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spel omgivelseslydar frå landskap, industri og byar. STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ikkje tillet konstruksjon av infrastruktur om ingen passande køyretøy er tilgjengeleg: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Maks antal tog per firma: {STRING} @@ -1276,11 +1404,22 @@ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamask STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Hindre datamaskina i å byggje luftfartøy: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hindre datamaskina i å byggje skip: {STRING} +STR_CONFIG_SETTING_AI_PROFILE :Standard innstillingsprofil: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_EASY :Lett +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Medium +STR_CONFIG_SETTING_AI_PROFILE_HARD :Hard STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillet AI-spelarar i fleirspelarmodus: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillat AI datamaskinspelarar å delta i fleirspelar-modus STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes føre script er avbrotne: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Vedlikehaldsintervall er i prosent: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlikehaldsintervall for tog: {STRING} +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikehaldsintervall for veg-køyrety: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlikehaldsintervall for fly: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikehaldsintervall for skip: {STRING} STR_CONFIG_SETTING_NOSERVICE :Deaktiver vedlikehald når havari er slått av: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver fartsgrenser for vogner: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske tog: {STRING} @@ -1324,9 +1463,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Avisa vert tryk STR_CONFIG_SETTING_STARTING_YEAR :Start spelet i år {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jamn økonomi (fleire, mindre endringar): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Tillet kjøp av aksjar i andre firma: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ved trekking, plasser signal kvar: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ruter{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ved trekking, hald fast avstand mellom signala: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg vingesignal automatisk før: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Slå på signalgrensesnittet: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standard signaltype: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard signaltype å bruka STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokksignaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avanserte signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einvegs avanserte signaler @@ -1336,6 +1479,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Kun avanserte s STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle STR_CONFIG_SETTING_TOWN_LAYOUT :Vegløysing for nye byar: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Løysing for vegnett i byar STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :standard STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :betre vegar STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 rutenett @@ -1344,6 +1488,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :tilfeldig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byar har lov til å byggja vegar: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Let stader byggje veger for å vekse. Slå av for å hindre at myndighetene byggjer veger sjølv STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byar har lov å bygge overgangar: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Aktiver denne innstillinga for å tillata byar å byggja overgangar. STR_CONFIG_SETTING_NOISE_LEVEL :Tillet at byen kontrollerar støynivået for flyplassane: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Grunnlegga byar i spelet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Let spelare grunnleggje nye stader @@ -1391,35 +1536,78 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ingen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Innleiande bystorleiksmultiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storleiken til byar på starten av spelet, jamført med tettstader -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde vegelement under vegkonstruksjon: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern blindvegar under finansiering av vegutbygging - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribusjonsmodus for passasjerar: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribusjonsmodus for post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyr at omlag same mengd post blir sendt frå stasjon A til stasjon B og omvendt (frå B til A). "asymmetrisk" betyr at vilkårlege mengder post kan bli sendt i begge retningar. "manuelt" betyr at ingen automatisk distribusjon vil forekomma for post. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribusjonsmodus for PANSRA vareklasse: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribusjonsmetode for andre vare-klassar: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribusjonsnøyaktigheit: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :Effekt av distanse på krav: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Mengde av returnerande last for symmetrisk modus: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Metting av korte ruter før bruk av høgkapasitet-ruter: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofte er det fleire ruter mellom to gitte stasjonar. Cargodist vil mette den kortaste ruta fyrst, og deretter bruka den nest kortaste ruta inntil den er metta, og så vidare. Metting er bestemt av ei berekning av kapasitet og planlagt bruk. Straks alle ruter er metta, og det framleis er behov att, vil den overlaste alle ruter, men føretrekk ruter med høg kapasitet. Skjønt, det meste av tida vil ikkje algoritmen berekna kapasiteten nøyaktig nok. Denne innstillinga tillet deg å spesifisere opp til kva prosent ei kortare rute må vera metta i første omgang, før den vel den nest kortaste ruta. Set den til mindre enn 100% for å unngå overfylte stasjonar i tilfelle overestimert kapasitet. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Eining for fart: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Bruk vald eining for å vise fart +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Britisk eining (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/t) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Eining for kraft: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Bruk vald eining for å vise kraft +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Britisk eining (hk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (hk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Eining for vekt: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Bruk vald eining for å vise vekt +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Britisk eining (short ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Eining for volum: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Bruk vald eining for å vise volum +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Britisk eining (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Eining for trekkraft: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Bruk vald eining for å vise trekkraft +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Britisk eining (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Eining for høgde: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Bruk vald eining for å vise høgde +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britisk eining (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Plassering +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikk +STR_CONFIG_SETTING_SOUND :{ORANGE}Lydar +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Grensesnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyhende / Rådgjevarar +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Rekneskap STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køyretøy -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjonar -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysikk +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Avgrensingar +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofar / ulykker +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generer ei verd +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Styremaktane +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byar +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriar +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Varefordeling STR_CONFIG_SETTING_AI :{ORANGE}Motstandarar -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Syne innstillingar -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydar -STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheiter og meldingar -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Varehantering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinspelarar -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoforny -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Vedlikehald -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tog -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Byar -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industriar STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1453,6 +1641,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... lagr STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... utelèt grafikksettet "{STRING}": ikkje funne STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... utelèt lydsettet "{STRING}": ikkje funne STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... utelèt musikksettet "{STRING}": ikkje funne +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Ikkje meir minne +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Fordeling {BYTES} av spritecache feila. Spritecache vart redusert til {BYTES}. Dette vil redusera ytelsen til OpenTTD. For å redusera minnebehova kan du prøva å deaktivera 32bpp grafikk og/eller zoom-nivåer # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1466,7 +1656,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Fleirspe STR_INTRO_GAME_OPTIONS :{BLACK}Spelinnstillingar STR_INTRO_HIGHSCORE :{BLACK}Poengtavle -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avanserte innstillingar +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Innstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Sjå etter innhald på nett STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI- / Spelscriptinnstillingar @@ -1486,13 +1676,13 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel leik STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Syne spelinstillingar STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Syn poengtavla -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Syne avanserte innstillingar +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skjerminnstillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Syne NewGRF-instillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Sjå etter nytt og oppdatert innhald som kan lastas ned STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis AI- og spelscriptinnstillingar STR_INTRO_TOOLTIP_QUIT :{BLACK}Avslutt 'OpenTTD' -STR_INTRO_TRANSLATION :{BLACK}Denne nynorsk-oversettelsen mangler {NUM} streng{P "" er}. Vennligst hjelp til å gjøre OpenTTD bedre ved å bli med i oversettergruppen. For detaljer, sjekk readme.txt. +STR_INTRO_TRANSLATION :{BLACK}Denne nynorsk-omsettinga manglar {NUM} tekst{P "" ar}. Du må gjerne verte med i omsettingsgruppa for å hjelpe til å gjere OpenTTD betre. Sjå readme.txt for detaljar. # Quit window STR_QUIT_CAPTION :{WHITE}Avslutt @@ -1526,6 +1716,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speler STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldoser (fjern industriar, uflyttbare ting): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelar kan krysse kvarandre: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikkje krasje (ofte) på små flyplassar: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Endre maksimal høgd på kart: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Endre maksimal høgd på fjell på kartet STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperert landskap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktisk landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropisk landskap @@ -1574,6 +1766,7 @@ STR_LIVERY_FREIGHT_TRAM :Varetrikk STR_FACE_CAPTION :{WHITE}Vel utsjånad STR_FACE_CANCEL_TOOLTIP :{BLACK}Avbryt val av utsjånad STR_FACE_OK_TOOLTIP :{BLACK}Godta ny utsjånad +STR_FACE_RANDOM :{BLACK}Tilferdiggjer STR_FACE_MALE_BUTTON :{BLACK}Mann STR_FACE_MALE_TOOLTIP :{BLACK}Vel mannsandlet @@ -1629,6 +1822,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Byt slip # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fleirspelar +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Kunngjort +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vel mellom spel på internett (kunngjort) og spel på lokalt nett (ikkje kunngjort) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nei +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spelarnamn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er namnet andre spelarar vil identifisere deg med @@ -1687,6 +1884,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spelnamn STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set passord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt spelet ditt med passord så ikkje kven som helst kan verte med på det +STR_NETWORK_START_SERVER_UNADVERTISED :Nei +STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks. antal tilletne klientar: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vel maks. antal klientar. Alle plassane treng ikkje å verte tekne @@ -1694,7 +1893,7 @@ STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} fi STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks. antal firma: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tenaren til eit visst antal firma STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} tilskodar{P "" ar} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks. antal tilskoderar: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks. antal tilskodarar: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrens tenaren til eit visst antal tilskodarar STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Språk som vert tala på tenaren: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andre spelarar skal vete kva språk ein talar på denne tenaren @@ -1807,6 +2006,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskodarar STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn kor mykje pengar du ønskar å gje +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Tilskodar # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikkje lagre passordet @@ -1925,6 +2125,9 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vel oppd STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alt innhald som er ei oppgradering av eksisterande, og skal lastast ned STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Vel bort alle STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhald som ikkje skal lastast ned +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Søk på eksterne nettstader +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Søkeinnhald ikkje tilgjengeleg på OpenTTDs innhaldservice på nettstader ikkje assosiert med OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du forlet OpenTTD. STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Vilkåra for nedlasting av innhald frå eksterne nettsider varierar.{}Du må oppsøke dei eksterne nettsidane for å finne instruksjonar om korleis du innstalerar innhaldet i OpenTTD.{}Vil du fortsette? STR_CONTENT_FILTER_TITLE :{BLACK}Merke/Namnefilter: STR_CONTENT_OPEN_URL :{BLACK}Vitje nettsida @@ -1996,8 +2199,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Byt gjen STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjer objekter usynlege istanden for gjennomsiktige # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Symbolforklaring for vareflyt +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ingen +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vel selskaper å vise # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ubrukt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}fullt utnytta +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelasta # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Syne dekningsområde @@ -2301,6 +2511,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtekne varer: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Veg-fartsgrense: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steinar @@ -2397,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-2013 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel @@ -2416,6 +2627,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Lagre STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Lagre gjeldande spel ved å bruke det valde namnet STR_SAVELOAD_LOAD_BUTTON :{BLACK}Last inn STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Last inn det valde spelet +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Last det valde høgdekartet STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Speldetaljar STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen informasjon tilgjengeleg STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2431,13 +2643,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byar: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industriar: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimal høgd på kart: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Auk maksimal høgd på fjell på kartet med ein +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Minsk maksimal høgd på fjell på kartet med ein STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Høgd på snøgrensa: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flytt høgda på snøgrensa eitt hakk opp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flytt høgda på snøgrensa eitt hakk ned -STR_MAPGEN_RANDOM_SEED :{BLACK}Såtal: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikk her for å taste inn eit såtal -STR_MAPGEN_RANDOM :{BLACK}Tilferdiggjer -STR_MAPGEN_RANDOM_HELP :{BLACK}Endre såtal som nyttast for terreng-generering STR_MAPGEN_LAND_GENERATOR :{BLACK}Landskapsgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Trealgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrengtype @@ -2464,7 +2675,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Høgdeka STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Storleik: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriv inn eit såtal +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Endre maksimal høgd på kartet STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Byt høgda på snøgrensa STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Byt startår @@ -2519,6 +2730,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flytt op STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flytt den valde NewGRF-fila oppover lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flytt ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flytt den valde NewGRF-fila nedover lista +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Oppgrader +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Oppgrader NewGRF-filer der du har ein nyare versjon installert STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Ei liste over NewGRF-filene som er installert. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parametrar @@ -2543,6 +2756,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matchande STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktivert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ikkje kompatibel med denne versjonen av OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Lagre førehandsinnstilling +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Liste av tilgjengelege førval, vel ein for å kopiera han til same navn nedanfor +STR_SAVE_PRESET_TITLE :{BLACK}Skriv inn eit namn for førehandsinnstillinga +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Vald namn for førehandsinnstillinga som skal lagrast +STR_SAVE_PRESET_CANCEL :{BLACK}Avbryt +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ikkje endre førehandsinnstillinga +STR_SAVE_PRESET_SAVE :{BLACK}Lagre +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Lagra førehandsinnstillingane til valt namn + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Endre NewGRF-parametrar STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lukk @@ -2573,7 +2796,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Førre s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Førehandsvisning av valgt sprite. Innrettinga ignorerast når spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for å endre X- og Y-forskyvningene -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vel sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vel ein sprite frå eit vilkårleg sted på skjermen @@ -2630,6 +2852,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Manglar fi STR_NEWGRF_BROKEN :{WHITE}Oppførselen til NewGRF'{0:STRING}' vil sannsynlegvis forårsaka synkroniseringsfeil og/eller krasj. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endra tilstanden til lokomotivet til '{1:ENGINE}' mens det er utanfor ein togstall. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det bytte køyretøylengde for '{1:ENGINE}' mens det var utanfor ein togstall. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Det endra køyrety-kapasitet for '{1:ENGINE}' når ikkje inni eit depot eller til ombygging STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' eigd av '{COMPANY}' har ulovleg lengde. Dette er sansynlegvis forårsaka av eit problem med NewGRFar. Spelet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gjer gal informasjon. @@ -2644,6 +2867,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} med STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRF-er STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannar NewGRF-er. Avhengig av antalet kan dette ta ei stund... @@ -2725,9 +2951,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kjøp e STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestikk bystyret til å forbetre vurderinga av firmaet, du risikerer bøter dersom du vert oppdaga.{}Kostnad: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale mål STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ingen - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ikkje relevant - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Målet åt firmaet: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på mål for å gå til industri/by/rute. Ctrl+klikk åpner eit nytt tilleggsvindauge over industrien/byen/ruta sin lokasjon. @@ -2737,7 +2968,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informasjon STR_GOAL_QUESTION_CAPTION_WARNING :Åtvaring STR_GOAL_QUESTION_CAPTION_ERROR :Feil -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei @@ -2756,6 +2987,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Start om STR_GOAL_QUESTION_BUTTON_POSTPONE :Utsett STR_GOAL_QUESTION_BUTTON_SURRENDER :Gje opp STR_GOAL_QUESTION_BUTTON_CLOSE :Lukk +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidiar @@ -2767,6 +2999,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på teneste for å midtstille hovedvisninga på industri/by. Ctrl+klikk syner industri/by i eit nytt tilleggsvindauge. # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Historiebok +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global historiebok +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vel side å hoppe beint til +STR_STORY_BOOK_PREV_PAGE :{BLACK}Førre +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Bla til førre sida +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Neste +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Bla til neste side +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig mål-referanse # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnamn - Klikk på namnet for å syne stasjonen i hovedvisninga. CTRL+klikk syner stasjonen i eit tilleggsvindauge @@ -2781,7 +3023,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Inga var # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ventar: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} på veg frå {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservert for lasting) @@ -2795,8 +3036,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Syne stasjonsvurdering - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månadleg forsyning og lokal prestasjonsvurdering: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Samle etter +STR_STATION_VIEW_WAITING_STATION :Stasjon: Ventar... +STR_STATION_VIEW_WAITING_AMOUNT :Beløp: Ventar... +STR_STATION_VIEW_PLANNED_STATION :Stasjon: Planlagt +STR_STATION_VIEW_PLANNED_AMOUNT :Beløp: Planlagt +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} frå {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} til {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} frå ein ukjend stasjon +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} til kva helst stasjon +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via kva helst stasjon +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} frå den her stasjonen +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stoggar her +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} til den her stasjonen +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} utan opphald + +STR_STATION_VIEW_GROUP_S_V_D :Kilde-Via-Destinasjon +STR_STATION_VIEW_GROUP_S_D_V :Kilde-Destinasjon-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Kilde-Destinasjon +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinasjon-Kilde +STR_STATION_VIEW_GROUP_D_S_V :Destinasjon-Kilde-Via +STR_STATION_VIEW_GROUP_D_V_S :Destinasjon-Via-Kilde ############ range for rating starts STR_CARGO_RATING_APPALLING :Forferdeleg @@ -2939,6 +3203,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksj STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på industrien. CTRL+klikk syner industrien i eit nytt tilleggsvindauge STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Verksemda legg snarleg ned drifta! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING} @@ -3007,6 +3272,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Slett de STR_GROUP_RENAME_TOOLTIP :{BLACK}Gje den valde gruppa nytt namn STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppa frå å global automatisk erstatning +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Slett gruppe +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Er du sikker på at du vil slette denne gruppa og alle underpunkt? + STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte køyretøy STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køyretøy @@ -3069,6 +3337,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Endre na STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Endre namnet til skipstypen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Endre namn til luftfartøytype +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Skjul +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Skjul + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Syne +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Syne +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Syne +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Syne + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytt skjul/vis type tog +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytt skjul/vis type køyretøy +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytt skjul/vis type skip +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytt skjul/vis type luftfartøy + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gje tog/vogn nytt namn STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Endre namnet til køyretøytypen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Endre namnet til skipstypen @@ -3173,6 +3456,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Køyretøy STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Luftfartøy +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Køyretøy i bruk +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolonne med køyretøy som du eig +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Tilgjengelege køyretøy +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolonne med køyretøy som kan erstattast + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vel lokomotivtype å byte ut STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vel den nye typen lokomotiv du vil at skal ta over for den du har vald til venstre @@ -3182,6 +3470,7 @@ STR_REPLACE_VEHICLES_WHEN_OLD :Berre forny gam STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikk denne knappen dersom du vil byte ut det valde lokomotivet på venstresida med det valde lokomotivet på høgresida STR_REPLACE_NOT_REPLACING :{BLACK}Erstatter ikkje STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ingen køyretøy vald +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} når gamal STR_REPLACE_VEHICLES_STOP :{BLACK}Stopp utskiftinga av køyretøy STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen for å avbryte utskiftinga av lokomotivet du har vald på venstresida @@ -3526,6 +3815,7 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reis (ikkje på STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis med maks {2:VELOCITY} (utan rutetabell) STR_TIMETABLE_TRAVEL_FOR :Reis i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med maks {VELOCITY} +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis {STRING}, ikkje på rutetabell) STR_TIMETABLE_STAY_FOR :og bli værande i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og reis i {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" ar} @@ -3541,6 +3831,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne ru STR_TIMETABLE_STATUS_START_AT :{BLACK}Startdato for denne rutetabellen er {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vel startdato for timeplanen. Ctrl+klikk set starttidspunkt for tabellen og spreier køyretøya jamt utover STR_TIMETABLE_CHANGE_TIME :{BLACK}Byt Tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Byt tida den merka ordra skal bruke @@ -3654,6 +3945,8 @@ STR_AI_SETTINGS_START_DELAY :Antall dagar de STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} lesmeg for {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg for {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens for {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Bryt tekst +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt teksten etter storleiken på vindauget STR_TEXTFILE_VIEW_README :{BLACK}Vis lesmeg STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens @@ -3764,6 +4057,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgravin STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Allereie på havnivå STR_ERROR_TOO_HIGH :{WHITE}For høgt STR_ERROR_ALREADY_LEVELLED :{WHITE}... allereie flatt +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Etterpå vil brua over det bli for høg. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikkje byta firmanamn... @@ -3814,6 +4108,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan berre byggjast over snøgrensa STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan berre byggjast under snøgrensa +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Der er ingen egna plass for '{STRING}' industriar +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Byt innstillingar for å generera eit betre kart + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikkje byggje jernbanestasjon her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikkje byggje busstasjon... @@ -3950,6 +4247,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Må rive STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan ikkje starte og slutte på same felt STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bruhovud er ikkje på same nivå STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brua er for låg for terrenget +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Brua er for høg for terrenget. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må vere på linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... endane på brua må vere på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brua er for lang @@ -3976,6 +4274,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du e STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikkje lage gruppe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikkje slette denne gruppa... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikkje gje gruppa nytt namn... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan ikkje setja overordna gruppe... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikkje fjerne alle køyretøy fra denne gruppa... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikkje legge dette køyretøyet til denne gruppa... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikkje legge til gruppe for delte køyretøy... @@ -4031,6 +4330,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikkj STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... køyretøy er øydelagd +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen køyretøy vert tilgjengelege +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Byt NewGRF-innstillingar +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Det finst ikkje nokon køyretøy enno +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start spelet etter {DATE_SHORT} eller bruk ein GRF som har køyretøy frå tidlegare tider # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikkje tvinge tog til å passere signal ved fare... @@ -4206,7 +4509,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (damp) @@ -4413,10 +4716,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerfe STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate-konteinarskip -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell-konteinarskip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover-konteinarskip -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut-konteinarskip +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate konteinarskip +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell konteinarskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover-konteinarskip +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut konteinarskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4509,6 +4812,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (skjult) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4532,6 +4836,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4543,8 +4848,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4555,9 +4858,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index c619c70523..220114005b 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -85,7 +85,7 @@ STR_CARGO_PLURAL_WOOD.b :drewno STR_CARGO_PLURAL_WOOD.n :drewnem STR_CARGO_PLURAL_WOOD.m :drewnie STR_CARGO_PLURAL_WOOD.w :drewno -STR_CARGO_PLURAL_IRON_ORE :Ruda Żelaza +STR_CARGO_PLURAL_IRON_ORE :Ruda żelaza STR_CARGO_PLURAL_IRON_ORE.d :rudy żelaza STR_CARGO_PLURAL_IRON_ORE.c :rudzie żelaza STR_CARGO_PLURAL_IRON_ORE.b :rudę żelaza @@ -204,7 +204,7 @@ STR_CARGO_PLURAL_COLA.b :colę STR_CARGO_PLURAL_COLA.n :colą STR_CARGO_PLURAL_COLA.m :coli STR_CARGO_PLURAL_COLA.w :colo -STR_CARGO_PLURAL_COTTON_CANDY :Wata Cukrowa +STR_CARGO_PLURAL_COTTON_CANDY :Wata cukrowa STR_CARGO_PLURAL_COTTON_CANDY.d :waty cukrowej STR_CARGO_PLURAL_COTTON_CANDY.c :wacie cukrowej STR_CARGO_PLURAL_COTTON_CANDY.b :watę cukrową @@ -239,7 +239,7 @@ STR_CARGO_PLURAL_PLASTIC.b :plastik STR_CARGO_PLURAL_PLASTIC.n :plastikiem STR_CARGO_PLURAL_PLASTIC.m :plastiku STR_CARGO_PLURAL_PLASTIC.w :plastiku -STR_CARGO_PLURAL_FIZZY_DRINKS :Napoje Gazowane +STR_CARGO_PLURAL_FIZZY_DRINKS :Napoje gazowane STR_CARGO_PLURAL_FIZZY_DRINKS.d :napoi gazowanych STR_CARGO_PLURAL_FIZZY_DRINKS.c :napojom gazowanym STR_CARGO_PLURAL_FIZZY_DRINKS.b :napoje gazowane @@ -305,7 +305,7 @@ STR_CARGO_SINGULAR_WOOD.b :drewno STR_CARGO_SINGULAR_WOOD.n :drewnem STR_CARGO_SINGULAR_WOOD.m :drewnie STR_CARGO_SINGULAR_WOOD.w :drewno -STR_CARGO_SINGULAR_IRON_ORE :Ruda Żelaza +STR_CARGO_SINGULAR_IRON_ORE :Ruda żelaza STR_CARGO_SINGULAR_IRON_ORE.d :rudy żelaza STR_CARGO_SINGULAR_IRON_ORE.c :rudzie żelaza STR_CARGO_SINGULAR_IRON_ORE.b :rudę żelaza @@ -423,7 +423,7 @@ STR_CARGO_SINGULAR_COLA.b :colę STR_CARGO_SINGULAR_COLA.n :colą STR_CARGO_SINGULAR_COLA.m :coli STR_CARGO_SINGULAR_COLA.w :colo -STR_CARGO_SINGULAR_COTTON_CANDY :Wata Cukrowa +STR_CARGO_SINGULAR_COTTON_CANDY :Wata cukrowa STR_CARGO_SINGULAR_COTTON_CANDY.d :waty cukrowej STR_CARGO_SINGULAR_COTTON_CANDY.c :wacie cukrowej STR_CARGO_SINGULAR_COTTON_CANDY.b :watę cukrową @@ -458,7 +458,7 @@ STR_CARGO_SINGULAR_PLASTIC.b :plastik STR_CARGO_SINGULAR_PLASTIC.n :plastikiem STR_CARGO_SINGULAR_PLASTIC.m :plastiku STR_CARGO_SINGULAR_PLASTIC.w :plastiku -STR_CARGO_SINGULAR_FIZZY_DRINK :Napój Gazowany +STR_CARGO_SINGULAR_FIZZY_DRINK :Napój gazowany STR_CARGO_SINGULAR_FIZZY_DRINK.d :napoju gazowanego STR_CARGO_SINGULAR_FIZZY_DRINK.c :napojowi gazowanemu STR_CARGO_SINGULAR_FIZZY_DRINK.b :napój gazowany @@ -468,30 +468,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.w :napoju gazowany # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} pasażer{P "" ów ów} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}pasażer{P "" ów ów} STR_QUANTITY_COAL :{WEIGHT_LONG} węgla -STR_QUANTITY_MAIL :{COMMA} pacz{P ka ki ek} poczty +STR_QUANTITY_MAIL :{COMMA}{NBSP}pacz{P ka ki ek} poczty STR_QUANTITY_OIL :{VOLUME_LONG} ropy -STR_QUANTITY_LIVESTOCK :{COMMA} sztuk{P a i ""} żywca -STR_QUANTITY_GOODS :{COMMA} skrzy{P nia nie ń} towarów +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}sztuk{P a i ""} żywca +STR_QUANTITY_GOODS :{COMMA}{NBSP}skrzy{P nia nie ń} towarów STR_QUANTITY_GRAIN :{WEIGHT_LONG} zboża STR_QUANTITY_WOOD :{WEIGHT_LONG} drewna STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} rudy żelaza STR_QUANTITY_STEEL :{WEIGHT_LONG} stali -STR_QUANTITY_VALUABLES :{COMMA} pacz{P ka ki ek} kosztowności +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}pacz{P ka ki ek} kosztowności STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} rudy miedzi STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukurydzy STR_QUANTITY_FRUIT :{WEIGHT_LONG} owoców -STR_QUANTITY_DIAMONDS :{COMMA} pacz{P ka ki ek} diamentów +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}pacz{P ka ki ek} diamentów STR_QUANTITY_FOOD :{WEIGHT_LONG} żywności STR_QUANTITY_PAPER :{WEIGHT_LONG} papieru -STR_QUANTITY_GOLD :{COMMA} pacz{P ka ki ek} złota +STR_QUANTITY_GOLD :{COMMA}{NBSP}wor{P ek ki ków} złota STR_QUANTITY_WATER :{VOLUME_LONG} wody STR_QUANTITY_WHEAT :{WEIGHT_LONG} pszenicy STR_QUANTITY_RUBBER :{VOLUME_LONG} kauczuku STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukru -STR_QUANTITY_TOYS :{COMMA} zabaw{P ka ki ek} -STR_QUANTITY_SWEETS :{COMMA} pacz{P ka ki ek} słodyczy +STR_QUANTITY_TOYS :{COMMA}{NBSP}zabaw{P ka ki ek} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}pacz{P ka ki ek} słodyczy STR_QUANTITY_COLA :{VOLUME_LONG} coli STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} waty cukrowej STR_QUANTITY_BUBBLES :{COMMA} bąbel{P ek ki ków} @@ -538,18 +538,18 @@ STR_ABBREV_NONE :{TINY_FONT}0 STR_ABBREV_ALL :{TINY_FONT}+ # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} pasażer{P "" ów ów} -STR_BAGS :{COMMA} wor{P ek ki ków} +STR_PASSENGERS :{COMMA}{NBSP}pasażer{P "" ów ów} +STR_BAGS :{COMMA}{NBSP}wor{P ek ki ków} STR_BAGS.d :{COMMA} worków STR_BAGS.c :{COMMA} workom STR_BAGS.b :{COMMA} worki STR_BAGS.n :{COMMA} workami STR_BAGS.m :{COMMA} workach STR_BAGS.w :{COMMA} worki -STR_TONS :{COMMA} ton{P a "" ""} -STR_LITERS :{COMMA} litr{P "" y ów} -STR_ITEMS :{COMMA} sztuk{P a i ""} -STR_CRATES :{COMMA} skrzy{P nia nie ń} +STR_TONS :{COMMA}{NBSP}ton{P a y ""} +STR_LITERS :{COMMA}{NBSP}litr{P "" y ów} +STR_ITEMS :{COMMA}{NBSP}sztuk{P a i ""} +STR_CRATES :{COMMA}{NBSP}skrzy{P nia nie ń} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Ciemnoniebieski @@ -570,43 +570,44 @@ STR_COLOUR_GREY :Szary STR_COLOUR_WHITE :Biały # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}KM -STR_UNITS_POWER_METRIC :{COMMA}KM -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}KM +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}KM +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P a y ""} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a y ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton{P a y ""} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton{P a y ""} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P "" y y} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ów} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galon{P "" y ów} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr{P "" y ów} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} st{P opa, opy, óp} -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}st{P opa opy óp} +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtr: STR_LIST_FILTER_OSKTITLE :{BLACK}Wpisz słowo filtru STR_LIST_FILTER_TOOLTIP :{BLACK}Wpisz słowo, wg którego filtrować listę +STR_TOOLTIP_GROUP_ORDER :{BLACK}Wybierz kolejność grupowania STR_TOOLTIP_SORT_ORDER :{BLACK}Wybierz kolejność sortowania (malejąco/rosnąco) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Wybierz kryterium sortowania STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Wybierz kryteria filtrowania @@ -626,6 +627,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Suwak - STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Pasek przewijania - przewija listę w prawo/w lewo STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Niszczenie budynków itp. w danym kwadracie terenu. Ctrl zaznacza obszar po przekątnej. Shift przełącza pomiędzy trybem burzenia a szacowaniem jego kosztów +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Pokaż ukryte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Pokaż ukryte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Pokaż ukryte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Pokaż ukryte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Włączenie tego przycisku pokazuje wszystkie ukryte typy taboru +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Włączenie tego przycisku pokazuje wszystkie ukryte typy pojazdów +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Włączenie tego przycisku pokazuje wszystkie ukryte typy statków +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Włączenie tego przycisku pokazuje wszystkie ukryte typy samolotów + # Query window STR_BUTTON_DEFAULT :{BLACK}Domyślna STR_BUTTON_CANCEL :{BLACK}Anuluj @@ -690,12 +702,13 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Wyświet STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Wyświetl listę stacji firmy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Wyświetl informacje finansowe firmy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Wyświetl informacje ogólne firmy +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Pokaż okno opowieści STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Pokaż listę celów STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Wyświetl wykresy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Wyświetl tabele firm STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ufunduj budowę nowego przedsiębiorstwa STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Wyświetl listę pociągów firmy. Ctrl+klik otwiera listę grup/pojazdów -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Wyświetl listę samochodów firmy. Ctrl+klik otwiera listę grup/pojazdów +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Wyświetl listę pojazdów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Wyświetl listę statków firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Wyświetl listę samolotów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Przybliżenie @@ -738,7 +751,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Wyjście ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opcje gry -STR_SETTINGS_MENU_CONFIG_SETTINGS :Ustawienia zaawanasowane +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Ustawienia STR_SETTINGS_MENU_SCRIPT_SETTINGS :Ustawienia SI / Game Script STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ustawienia NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcje przeźroczystości @@ -798,15 +811,15 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Ufunduj nowe pr ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Konstrukcja torowiska -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Konstrukcja torowiska elektryfikowanego -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Konstrukcja torowiska jednoszynowego -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Konstrukcja torowiska Maglev +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Konstrukcja linii kolejowej +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Konstrukcja linii zelektryfikowanej +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Konstrukcja linii jednoszynowej +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Konstrukcja linii Maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Budowa drogi -STR_ROAD_MENU_TRAM_CONSTRUCTION :Budowa torowiska tramwajowego +STR_ROAD_MENU_TRAM_CONSTRUCTION :Budowa linii tramwajowej ############ range ends here ############ range for waterways construction menu starts @@ -842,58 +855,76 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zrzut ekranu z STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Zrzut ekranu z przybliżeniem domyślnym STR_ABOUT_MENU_GIANT_SCREENSHOT :Zrzut ekranu całej mapy STR_ABOUT_MENU_ABOUT_OPENTTD :Info o 'OpenTTD' -STR_ABOUT_MENU_SPRITE_ALIGNER :Wyrównywanie sprite-ów -STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Wł./wył. ramki +STR_ABOUT_MENU_SPRITE_ALIGNER :Wyrównywanie sprite'ów +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Włącz/wyłącz ramki STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Włącz/wyłącz kolorowanie brudnych bloków ############ range ends here -############ range for days starts (also used for the place in the highscore window) -STR_ORDINAL_NUMBER_1ST :1szy -STR_ORDINAL_NUMBER_2ND :2gi -STR_ORDINAL_NUMBER_3RD :3ci -STR_ORDINAL_NUMBER_4TH :4ty -STR_ORDINAL_NUMBER_5TH :5ty -STR_ORDINAL_NUMBER_6TH :6ty -STR_ORDINAL_NUMBER_7TH :7my -STR_ORDINAL_NUMBER_8TH :8my -STR_ORDINAL_NUMBER_9TH :9ty -STR_ORDINAL_NUMBER_10TH :10ty -STR_ORDINAL_NUMBER_11TH :11ty -STR_ORDINAL_NUMBER_12TH :12ty -STR_ORDINAL_NUMBER_13TH :13ty -STR_ORDINAL_NUMBER_14TH :14ty -STR_ORDINAL_NUMBER_15TH :15ty -STR_ORDINAL_NUMBER_16TH :16ty -STR_ORDINAL_NUMBER_17TH :17ty -STR_ORDINAL_NUMBER_18TH :18ty -STR_ORDINAL_NUMBER_19TH :19ty -STR_ORDINAL_NUMBER_20TH :20ty -STR_ORDINAL_NUMBER_21ST :21szy -STR_ORDINAL_NUMBER_22ND :22gi -STR_ORDINAL_NUMBER_23RD :23ci -STR_ORDINAL_NUMBER_24TH :24ty -STR_ORDINAL_NUMBER_25TH :25ty -STR_ORDINAL_NUMBER_26TH :26ty -STR_ORDINAL_NUMBER_27TH :27my -STR_ORDINAL_NUMBER_28TH :28my -STR_ORDINAL_NUMBER_29TH :29ty -STR_ORDINAL_NUMBER_30TH :30ty -STR_ORDINAL_NUMBER_31ST :31szy +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :1. +STR_ORDINAL_NUMBER_2ND :2. +STR_ORDINAL_NUMBER_3RD :3. +STR_ORDINAL_NUMBER_4TH :4. +STR_ORDINAL_NUMBER_5TH :5. +STR_ORDINAL_NUMBER_6TH :6. +STR_ORDINAL_NUMBER_7TH :7. +STR_ORDINAL_NUMBER_8TH :8. +STR_ORDINAL_NUMBER_9TH :9. +STR_ORDINAL_NUMBER_10TH :10. +STR_ORDINAL_NUMBER_11TH :11. +STR_ORDINAL_NUMBER_12TH :12. +STR_ORDINAL_NUMBER_13TH :13. +STR_ORDINAL_NUMBER_14TH :14. +STR_ORDINAL_NUMBER_15TH :15. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts -STR_MONTH_ABBREV_JAN :Sty -STR_MONTH_ABBREV_FEB :Lut -STR_MONTH_ABBREV_MAR :Mar -STR_MONTH_ABBREV_APR :Kwi -STR_MONTH_ABBREV_MAY :Maj -STR_MONTH_ABBREV_JUN :Cze -STR_MONTH_ABBREV_JUL :Lip -STR_MONTH_ABBREV_AUG :Sie -STR_MONTH_ABBREV_SEP :Wrz -STR_MONTH_ABBREV_OCT :Paź -STR_MONTH_ABBREV_NOV :Lis -STR_MONTH_ABBREV_DEC :Gru +STR_MONTH_ABBREV_JAN :sty +STR_MONTH_ABBREV_FEB :lut +STR_MONTH_ABBREV_MAR :mar +STR_MONTH_ABBREV_APR :kwi +STR_MONTH_ABBREV_MAY :maj +STR_MONTH_ABBREV_JUN :cze +STR_MONTH_ABBREV_JUL :lip +STR_MONTH_ABBREV_AUG :sie +STR_MONTH_ABBREV_SEP :wrz +STR_MONTH_ABBREV_OCT :paź +STR_MONTH_ABBREV_NOV :lis +STR_MONTH_ABBREV_DEC :gru STR_MONTH_JAN :Styczeń STR_MONTH_FEB :Luty @@ -1072,7 +1103,7 @@ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Budynki/Przedsiębiorstwa STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Pojazdy STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Pociągi -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Samochody +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Samochody i tramwaje STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Statki STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Samoloty STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Trasy transportowe @@ -1143,7 +1174,7 @@ STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLAC STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Wypadek lotniczy!{}Samolot rozbił się z powodu braku paliwa, zginęł{P 0 a y o} {COMMA} os{P oba oby ób}! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Katastrofa Zeppelina na {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Samochód zniszczony w kolizji z 'UFO'! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Pojazd zniszczony w kolizji z 'UFO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozja rafinerii w pobliżu {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabryka zniszczona w podejrzanych okolicznościach w pobliżu {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' wylądowało w pobliżu {TOWN}! @@ -1183,18 +1214,17 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Plaga insektów w {INDUSTRY}!{}Produkcja maleje o 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produkcja {STRING.d} w {INDUSTRY} maleje o {COMMA}%! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} czeka w warsztatach STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni -STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} czeka w stoczni STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} czeka w hangarze -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ma za mało poleceń w rozkładzie STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ma nieważne polecenie STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ma zdublowane polecenia STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ma nieprawiodłową stację w poleceniach -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} ma w poleceniach lotnisko ze zbyt krótkim pasem startowym STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} starzeje się STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} bardzo się starzeje @@ -1277,12 +1307,8 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari gruziński STR_GAME_OPTIONS_CURRENCY_IRR :Rial irański (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Pojazdy drogowe -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wybierz stronę po której mają jeździć samochody +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wybierz stronę, po której będą jeździć samochody STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Jazda po lewej STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Jazda po prawej @@ -1314,13 +1340,15 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalońskie ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autozapis -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Wybierz okres pomiędzy autozapisami +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Częstotliwość automatycznego zapisu stanu gry +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Wył. STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Co 1 miesiąc STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Co 3 miesiące STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Co 6 miesięcy STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Co 12 miesięcy +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Język STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wybierz język interfejsu @@ -1332,8 +1360,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozdziel STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Wybierz rozdzielczość ekranu STR_GAME_OPTIONS_RESOLUTION_OTHER :inna -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format zrzutu ekranu -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Wybierz format zrzutu ekranu +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Rozmiar interfejsu +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wybierz rozmiar elementów interfejsu + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normalne +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Podwójny +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Poczwórny STR_GAME_OPTIONS_BASE_GRF :{BLACK}Podstawowy zestaw grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wybierz podstawowy zestaw grafik do użycia @@ -1349,15 +1381,16 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wybierz STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} plik{P "" i ów} uszkodzony STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o muzyce podstawowej +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nie udało się pobrać listy obsługiwanych rozdzielczości STR_ERROR_FULLSCREEN_FAILED :{WHITE}Uruchomienie trybu pełnoekranowego nie powiodło się # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Własna waluta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Współczynnik wymiany: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmniejsz kurs wymiany za jednego Funta (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zwiększ kurs wymiany za jednego Funta (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ustal kurs wymiany za jednego Funta (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmniejsz kurs wymiany za jednego funta (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zwiększ kurs wymiany za jednego funta (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ustal kurs wymiany za jednego funta (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ustaw znak oddzielający w twojej walucie @@ -1367,21 +1400,21 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ustaw pr STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Ustaw symbol dla twojej waluty -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Przejście na Euro: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Przejście na Euro: {ORANGE}nigdy -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Ustaw rok przełączenia na Euro -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na Euro wcześniej -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na Euro później +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Przejście na euro: {ORANGE}w {NUM} roku +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Przejście na euro: {ORANGE}nigdy +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Ustaw rok przełączenia na euro +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na euro wcześniej +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na euro później STR_CURRENCY_PREVIEW :{LTBLUE}Podgląd: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Funtów (£) w twojej walucie +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 funtów (£) w twojej walucie STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmień parametr własnej waluty STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksymalna liczba przeciwników: {ORANGE}{COMMA} STR_NONE :Brak STR_FUNDING_ONLY :Tylko sponsorowanie -STR_MINIMAL :Minimalna +STR_MINIMAL :Minimum STR_NUM_VERY_LOW :Bardzo mało STR_NUM_LOW :Mało STR_NUM_NORMAL :Średnio @@ -1409,10 +1442,10 @@ STR_SEA_LEVEL_HIGH :Wysoki STR_SEA_LEVEL_CUSTOM :Własny STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Własny ({NUM}%) -STR_RIVERS_NONE :Żaden -STR_RIVERS_FEW :Kilka -STR_RIVERS_MODERATE :Średni -STR_RIVERS_LOT :Sporo +STR_RIVERS_NONE :Brak +STR_RIVERS_FEW :Mało +STR_RIVERS_MODERATE :Średnio +STR_RIVERS_LOT :Dużo STR_DISASTER_NONE :Brak STR_DISASTER_REDUCED :Zredukowane @@ -1427,6 +1460,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Bardzo płaski STR_TERRAIN_TYPE_FLAT :Płaski STR_TERRAIN_TYPE_HILLY :Pagórkowaty STR_TERRAIN_TYPE_MOUNTAINOUS :Górzysty +STR_TERRAIN_TYPE_ALPINIST :Alpejski STR_CITY_APPROVAL_PERMISSIVE :Przyjazne STR_CITY_APPROVAL_TOLERANT :Tolerancyjne @@ -1434,8 +1468,8 @@ STR_CITY_APPROVAL_HOSTILE :Wrogie STR_WARNING_NO_SUITABLE_AI :{WHITE}Brak pasujących SI...{}Możesz pobrać wszystkie SI przez system "Zawartości online" -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Ustawienia zaawansowane +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ustawienia STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrowanie po frazie: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Otwórz wszystko STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Zamknij wszystko @@ -1448,21 +1482,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Ustawienie gry STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ustawienie firmy (przechowywane w plikach zapisu; ma wpływ tylko na nowe gry) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ustawienie firmy (przechowywane w pliku zapisu; ma wpływ tylko na aktualną firmę) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Pokaż: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ogranicza poniższą listę tylko do modyfikowanych ustawień -STR_CONFIG_SETTING_RESTRICT_BASIC :Ustawienia podstawowe -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ustawienia zaawansowane -STR_CONFIG_SETTING_RESTRICT_ALL :Ustawienia eksperta / wszystkie ustawienia +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typ: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ogranicza poniższą listę używając zdefiniowanych filtrów +STR_CONFIG_SETTING_RESTRICT_BASIC :Podstawowe (pokaż tylko ważne opcje) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Zaawansowane (pokaż większość opcji) +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert (pokaż wszystkie opcje, włącznie z dziwnymi) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ustawienie z inną wartością niż domyślna STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ustawienia z wartościami innymi niż twoje ustawienia dla nowej gry STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ogranicza poniższą listę do pewnych typów ustawień -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Wszystkie ustawienia +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Wszystkie typy ustawień STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Ustawienia klienta (nie przechowywane w plikach zapisu; wpływa na wszystkie gry) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ustawienia gry (przechowywane w pliku zapisu; wpływa tylko na nowe gry) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ustawienia gry (przechowywane w pliku zapisu; wpływa tylko na nowo rozpoczęte gry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ustawienia gry (przechowywane w pliku zapisu; wpływa tylko na aktualną grę) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Ustawienia firmy (przechowywane w pliku zapisu; mają wpływ tylko w nowo rozpoczętych grach) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ustawienia firmy (przechowywane w pliku zapisu; mają wpływ tylko na aktualnie aktywną firmę) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Ustawienia firmy (przechowywane w pliku zapisu; wpływa tylko na nowo rozpoczęte gry) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ustawienia firmy (przechowywane w pliku zapisu; wpływa tylko na aktualną firmę) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Pokaż wszystkie wyniki wyszukiwania według ustawień{}{SILVER}Kategoria {BLACK}do {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Pokaż wszystkie wyniki wyszukiwania według ustawień{}{SILVER}Typ {BLACK}do {WHITE}Wszystkie typy ustawień +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Pokaż wszystkie wyniki według ustawień{}{SILVER}Kategorii {BLACK} {WHITE}{STRING} {BLACK}i {SILVER} Typu {BLACK} {WHITE}Wszystkie typy ustawień +STR_CONFIG_SETTINGS_NONE :{WHITE}- Żadne - STR_CONFIG_SETTING_OFF :wył. STR_CONFIG_SETTING_ON :wł. @@ -1503,9 +1542,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ustaw katastrof STR_CONFIG_SETTING_CITY_APPROVAL :Nastawienie władz miasta do przekształcania terenu: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wybierz jak bardzo hałas i niszczenie środowiska przez firmy wpływa na ich ocenę przez miasto i dalsze konstrukcje na ich obszarze -STR_CONFIG_SETTING_BUILDONSLOPES :Pozwól budować na pochyłym terenie i wybrzeżach: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Jeśli włączone, to tory i stacje można budować na większości stoków. Jeśli wyłączone, można je budować tylko na stokach w tym samym kierunku, co tory, tak, że nie potrzeba fundamentów -STR_CONFIG_SETTING_AUTOSLOPE :Pozwól na zmiany terenu pod budynkami, torami itp. (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksymalna wysokość mapy: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Ustaw maksymalną możliwą wysokość dla gór na mapie +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nie możesz ustawić maksymalnej wysokości mapy na tę wartość. Conajmniej jedna góra na mapie jest wyższa +STR_CONFIG_SETTING_AUTOSLOPE :Pozwól na zmiany terenu pod budynkami, torami itp.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Pozwalaj na modyfikowanie terenu pod budynkami i torami bez usuwania ich STR_CONFIG_SETTING_CATCHMENT :Pozwól na bardziej realistyczny zasięg obejmowania: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Używaj różnych rozmiarów pokrywania obszaru dla różnych typów stacji i lotnisk @@ -1529,16 +1569,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Zabroń pociąg STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-stopniowy zakręt występuje wtedy, gdy bezpośrednio po poziomym odcinku toru występuje odcinek pionowy na sąsiadującym polu zmuszając pociąg do skrętu o 90 stopni pokonując krawędź pola zamiast normalnego, 45-stopniowego skrętu w innych kombinacjach torów. Dotyczy to również kąta skrętu dla statków STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Pozwól na łączenie stacji nie sąsiadujących bezpośrednio: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Pozwalaj na dodawanie części stacji nie stykających się ze sobą. Naciśnij Ctrl przed postawieniem nowej części -STR_CONFIG_SETTING_IMPROVEDLOAD :Użyj ulepszonego algorytmu załadunku: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Gdy włączone, wiele pojazdów czekających na stacji jest ładowanych po kolei. Ładowanie następnego pojazdu rozpocznie się, jeśli jest wystarczająco dużo towaru do uzupełnienia pierwszego pojazdu -STR_CONFIG_SETTING_GRADUAL_LOADING :Stopniowy załadunek pojazdów: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Załadunek pojazdów odbywa się stopniowo przy użyciu specyficznych czasów ładowania zamiast ładowania wszystkiego na raz w określonym czasie w zależności tylko od ilości załadowanego towaru STR_CONFIG_SETTING_INFLATION :Inflacja: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Włącz inflację w ekonomii, gdzie koszty rosną nieco szybciej niż zapłaty -STR_CONFIG_SETTING_SELECTGOODS :Dostarcz ładunek na stację tylko jeśli jest zapotrzebowanie: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dostarczaj towar tylko do tej stacji, która została zlecona dla załadowanego pojazdu. To zapobiega złym notowaniom dla towarów, które nie są obsługiwane na stacji STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksymalna długość mostu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksymalna długość budowanych mostów +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksymalna wysokość mostu: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksymalna wysokośc dla budowy mostów STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksymalna długość tunelu: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksymalna długość budowanych tuneli STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Budowa przedsiębiorstw wydobywczych: {STRING} @@ -1564,8 +1600,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Miejsce, w któ STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :początku STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :środku STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :końcu -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ustawianie się samochodów w kolejkach (z efektem quantum): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Każ pojazdom drogowych czekać przed zajętymi przystankami dopóki nie zostaną zwolnione STR_CONFIG_SETTING_AUTOSCROLL :Przesuń okno, kiedy kursor jest przy krawędzi: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Kiedy włączone, okna podglądu będą się przewijać, gdy kursor znajdzie się przy krańcu okna STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Wyłączone @@ -1596,10 +1630,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Pozwól na budo STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych miast STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Pozwól na przejazd przez przystanki należące do przeciwników: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych innych graczy -STR_CONFIG_SETTING_ADJACENT_STATIONS :Pozwól na budowę przylegających stacji: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Pozwalaj, by różne stacje stykały się ze sobą -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Zezwól na wiele zestawów NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opcja kompatybilności dla starych NewGRFów. Nie wyłączaj jej, chyba, że wiesz, co robisz STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Zmiana tego ustawienia nie jest możliwa, gdy znajdują się tutaj pojazdy STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Utrzymywanie infrastruktury: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kiedy włączone, utrzymanie infrastruktury jest naliczane w kosztach. Koszty wzrastają nadproporcjonalnie do rozmiarów sieci połączeń, a więc dotykają bardziej duże niż małe firmy @@ -1620,7 +1650,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Pojazdy nigdy n STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kiedy włączone, wszystkie modele pojazdów pozostają dostępne na zawsze od daty ich wprowadzenia STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoodnawianie pojazdów gdy stają się stare: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kiedy włączone, pojazd zbliżający się do końca swojej żywotności zostaje automatycznie zastąpiony, gdy warunki jego odnowienia są spełnione -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatyczna odnowa, gdy pojazd ma {STRING} maks. wieku +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatyczna odnowa, gdy pojazd ma {STRING} maksymalnym wieku STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Odpowiedni wiek pojazdu, kiedy powinien on zostać automatycznie odnowiony STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} miesi{P ąc ące ęcy} do STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} miesi{P ąc ące ęcy} po @@ -1630,35 +1660,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Czas wyświetla STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Czas wyświetlania komunikatów o błędach w czerwonym oknie. Niektóre (krytyczne) komunikaty o błędach nie zamykają się automatycznie po tym czasie, tylko muszą zostać zamknięte ręcznie STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P a y ""} STR_CONFIG_SETTING_HOVER_DELAY :Pokaż wskazówki: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Opóźnienie, zanim wskazówka zostanie wyświetlona po najechaniu myszką na element interfejsu. Alternatywnie wskazówki mogą zostać przypisane do prawego przycisku myszki -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :po zatrzymaniu kursora przez {COMMA} sekund{P ę y ""} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Opóźnienie, zanim wskazówka zostanie wyświetlona po najechaniu myszką na element interfejsu. Alternatywnie wskazówki mogą zostać przypisane do prawego przycisku myszki, kiedy ta wartość jest ustawiona na 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zatrzymaj kursor przez {COMMA} milisekund{P ę y ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :prawy klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Pokaż populację miasta w jego nazwie: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Wyświetlaj populację miast w ich etykietach na mapie STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grubość linii na wykresie: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grubość linii na wykresach. Cienka linia jest dokładniejsza, grubsza linia jest bardziej widoczna a kolory łatwiejsze do odróżnienia +STR_CONFIG_SETTING_LANDSCAPE :Krajobraz: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Krajobrazy określają podstawowe scenariusze gry, które różnią się przedsiębiorstwami, towarami i wymogami dla rozwoju miast. Pliki NewGRF i skrypty umożliwiają dokładniejszą kontrolę warunków rozgrywki STR_CONFIG_SETTING_LAND_GENERATOR :Generator krajobrazu: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Oryginalny generator tworzy tylko proste kształty krajobrazu i jest zależny od podstawowego zestawu grafiki. TerraGenesis jest oparty na generatorze szumu Perlina, który umożliwia precyzyjną kontrolę parametrów STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Oryginalny STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Typ terenu: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Określa ukształtowanie terenu (tylko dla TerraGenesis) +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Liczba przedsiębiorstw: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Określa liczbę przedsiębiorstw na początku i w trakcie gry STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksymalna odległość od krawędzi dla rafinerii: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerie są budowane tylko w pobliżu krawędzi map, to znaczy na wybrzeżach dla map wyspiarskich STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Wysokość granicy wiecznych śniegów: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Wyboistość terenu (w TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wysokość linii śniegu w klimacie arktycznym. Poziom pokrywy śnieżnej wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Gładkość terenu: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Tylko dla TerraGenesis) Określa liczbę wzgórz na mapie. Łagodne krajobrazy posiadają nieliczne, bardzo rozległe wzgórza, natomiast na terenach pofałdowanych jest ich znacznie więcej i mogą wyglądać podobnie STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Bardzo łagodny STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Łagodny -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Wyboisty -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Bardzo wyboisty +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Pofałdowany +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Bardzo pofałdowany +STR_CONFIG_SETTING_VARIETY :Różnorodność terenu: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Tylko dla TerraGenesis) Umożliwia jednoczesne występowanie obszarów górskich i płaskich. Działa na zasadzie obniżania powierzchni, dlatego inny parametr powinien definiować teren górzysty +STR_CONFIG_SETTING_RIVER_AMOUNT :Liczba rzek: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Określa liczbę rzek na mapie STR_CONFIG_SETTING_TREE_PLACER :Algorytm rozmieszczenia drzew: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Metoda generowania terenów zalesionych. Algorytm "Oryginalny" rozmieszcza drzewa równomiernie na całej mapie, a "Ulepszony" gromadzi je w skupiska STR_CONFIG_SETTING_TREE_PLACER_NONE :Brak STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Oryginalny STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Ulepszony +STR_CONFIG_SETTING_ROAD_SIDE :Pojazdy drogowe: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Wybierz stronę, po której będą jeździć samochody STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Obrót mapy wysokości: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Przeciwnie do wsk. zegara STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Zgodnie ze wsk. zegara STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Wysokość jaką dostaje płaska mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Włącz kształtowanie krajobrazu pól przy krawędzi mapy: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Jeśli wyłączone, to krawędzie map będą pokryte oceanem STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedno lub więcej pól na północnej krawędzi nie jest puste STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedno lub więcej pól na krawędzi nie jest wodą @@ -1679,7 +1723,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Wygładź przes STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Zdecyduj, jak główny widok przesuwa się do konkretnej lokacji, gdy klikasz na mini-mapie lub gdy używasz komendy do przesunięcia do danego obiektu na mapie. Kiedy włączone, widok przesuwa się płynnie, kiedy wyłączone, następuje skok bezpośrednio do wybranego miejsca STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaż dymek z pomiarem podczas używania różnych narzędzi: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Wyświetlaj długość budowanych odcinków i różnicę wysokości przy przeciąganiu w trakcie operacji budowlanych -STR_CONFIG_SETTING_LIVERIES :Pokaż barwy firm: {STRING} +STR_CONFIG_SETTING_LIVERIES :Pokaż barwy firm wg typu pojazdu: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrolka stosowania schematu kolorów pojazdów specyficznych dla typów pojazdów (w przeciwieństwie do specyfiki firmy) STR_CONFIG_SETTING_LIVERIES_NONE :brak STR_CONFIG_SETTING_LIVERIES_OWN :własnej firmy @@ -1687,7 +1731,7 @@ STR_CONFIG_SETTING_LIVERIES_ALL :wszystkich firm STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferuj czat drużynowy po użyciu lub : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Przypisz przyciski i odpowiednio do czatu firmowego i czatu publicznego STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcja rolki myszy: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Włączenie przewijania z użyciem dwu-wymiarowych rolek myszy +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Włączenie przewijania z użyciem dwuwymiarowych rolek myszy STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :powiększ widok STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :przesuń widok STR_CONFIG_SETTING_SCROLLWHEEL_OFF :wył. @@ -1709,17 +1753,15 @@ 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_AUTOSAVE :Autozapis: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Częstotliwość automatycznego zapisu stanu gry + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Użyj {STRING} formatu daty dla nazw zapisów gry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format daty w nazwach plików zapisu gry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :długiego (31 grudnia 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krótkiego (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Domyślna paleta dla NewGRF, które nie posiadają zdefiniowanej palety: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Domyślna paleta dla NewGRF'ów, które nie określają, jakich palet potrzebują -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :paleta DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :paleta Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatycznie włącz pauzę przy rozpoczęciu nowej gry: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kiedy włączone, gra zostanie automatycznie zatrzymana na samym początku, pozwalając na lepsze rozpoznanie mapy STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Zezwól w czasie wstrzymania gry na: {STRING} @@ -1728,7 +1770,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Brak działań STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Wszystkie niezwiązane z konstrukcją STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Wszystkie oprócz modyfikowania terenu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Wszystkie działania -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Używaj zaawansowanej listy pojazdów: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Używaj grup w liście pojazdów: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Wlącz obsługę zaawansowanych list pojazdów do grupowania pojazdów STR_CONFIG_SETTING_LOADING_INDICATORS :Pokazuj wskaźniki załadunku: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Wybierz, czy wskaźnik załadunku pokazuje się nad ładowanym/rozładowywanym pojazdem @@ -1738,7 +1780,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokazuj przyjaz STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Wyświetlanie przewidywanego przyjazdu i odjazdu w rozkładach STR_CONFIG_SETTING_QUICKGOTO :Szybkie tworzenie poleceń pojazdu: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Po wybraniu stacji docelowej automatycznie włącz ponownie narzędzie 'idź do' -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torowiska: {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torów: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rodzaj torów wybierany przy rozpoczęciu lub załadowaniu gry. 'Pierwszy dostępny' wybiera najstarszy rodzaj torów, 'najnowszy' wybiera najnowszy rodzaj torów, a 'najczęściej używany' wybiera ten, który jest używany najczęściej STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :pierwszy dostępny STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :najnowszy @@ -1769,13 +1811,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Odtwarzaj dźwi STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zablokuj budowę infrastruktury, kiedy brak odpowiednich pojazdów: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kiedy włączone, rodzaj infrastruktury jest dostępny tylko wtedy, gdy są dostępne również pojazdy, zapobiegając marnowaniu czasu i pieniędzy na zbędną infrastrukturę -STR_CONFIG_SETTING_MAX_TRAINS :Maks. liczba pociągów na firmę: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Makymalna liczba pociągów na firmę: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksymalna ilość pociągów, jakie firma może posiadać -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks. liczba samochodów na firmę: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksymalna liczba samochodów na firmę: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksymalna ilość pojazdów drogowych, jakie firma może posiadać -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks. liczba samolotów na firmę: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksymalna liczba samolotów na firmę: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksymalna ilość maszyn latających, jakie firma może posiadać -STR_CONFIG_SETTING_MAX_SHIPS :Maks. liczba statków na firmę: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maksymalna liczba statków na firmę: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksymalna ilość statków, jakie firma może posiadać STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Pociągi niedostępne dla komputera: {STRING} @@ -1802,7 +1844,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Okres między s STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Wybierz, czy serwisowanie pojazdów odbywa się na podstawie czasu od ostatniego serwisu, czy sprawności malejącej o pewien procent maksymalnej sprawności STR_CONFIG_SETTING_SERVINT_TRAINS :Domyślny interwał serwisowania pociągów: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych pojazdów kolejowych, jeśli takowy nie istnieje dla określonego pojazdu -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} d{P zień ni ni}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}d{P zień ni ni}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Wyłączone STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Domyślny interwał serwisowania pojazdów: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych pojazdów drogowych, jeśli takowy nie istnieje dla określonego pojazdu @@ -1869,7 +1911,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Wybierz sposób STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatycznie buduj semafory przed: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ustaw rok, w którym semafory świetlne będą używane. Przed tym rokiem w użyciu będą semafory kształtowe (które mają te same właściwości, tylko inny wygląd) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Uaktywnij okno budowania sygnałów: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Wyświetlaj okno wyboru typu semaforów do budowy, zamiast samego przełączania typu semafora z Ctrl+klik bez okna +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Wyświetlaj okno wyboru typu semaforów do budowy, zamiast samego przełączania typu semafora bez okna z Ctrl+klik na zbudowanym semaforze STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Domyślny typ sygnalizatorów: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Domyślny typ semaforów STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :sygnalizatory bloku @@ -1893,7 +1935,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Pozwalaj miasto STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Miasta, które mogą budować przejazdy kolejowe: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Aktywacja tej opcji pozwala miastom budować przejazdy kolejowe STR_CONFIG_SETTING_NOISE_LEVEL :Pozwól miastom kontrolować poziom hałasu dla lotnisk: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kiedy ta opcja jest wyłączona, w miastach można zbudować 2 lotniska. Kiedy opcja jest włączona, dopuszczalna liczba lotnisk jest określana przez tolerancję hałasu w mieście, która zależy od populacji oraz rozmiaru i odległości od lotniska +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kiedy ta opcja jest wyłączona, w miastach można zbudować 2 lotniska. Kiedy ta opcja jest włączona, liczba lotnisk jest ograniczona przez tolerancję hałasu tego miasta, która zależna jest od populacji oraz rozmiaru lotniska i jego odległości STR_CONFIG_SETTING_TOWN_FOUNDING :Zakładanie miast w grze: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Aktywacja tej opcji umożliwia graczom zakładanie nowych miast w grze STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabronione @@ -1941,15 +1983,30 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Żadne STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Początkowy mnożnik rozmiarów metropolii: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Średni rozmiar dużych miast w porównaniu do normalnych miast na początku gry -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Usuwaj absurdalne fragmenty ulicy podczas rekonstrukcji dróg: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Usuń ślepe zaułki podczas sponsorowanych remontów dróg +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizuj wykres dystrybucji co {STRING}{NBSP}{P 0:2 dzień dni dni} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Czas pomiędzy kolejnymi rekalkulacjami komonentów wykresu połączeń. Każda rekalkulacja oblicza plany dla jednego komponentu wykresu. To oznacza, że wartość X dla tego ustawienia nie oznacza, że cały wykres będzie aktualizowany co X dni, tylko że niektóre komponenty będą. Im krótszy czas ustawisz, tym więcej czasu obliczeniowego (CPU) będzie potrzebne na te obliczenia. Im dłuższy czas ustawisz, tym więcej czasu minie zanim dystrybucja towarów rozpocznie się na nowych trasach. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Przekalkulowanie wykresu dystrybucji zajmuje {STRING}{NBSP}{P 0:2 dzień dni dni} +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Czas potrzebny na każdą rekalkulację komponentu wykresu połączeń. Kiedy rekalkulacja startuje, powstaje proces, który może trwać określoną liczbę dni. Im krótszy czas ustawisz, tym większe prawdopodobieństwo, że ten proces nie zakończy się wtedy, kiedy powinien. Wtedy gra zatrzymuje się do czasu jego zakończenia ("lag"). Im dłuższy czas ustawisz, tym dłużej trwa aktualizacja dystrybucji, gdy zmieniają się trasy. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manualnie STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymetrycznie STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symetrycznie STR_CONFIG_SETTING_DISTRIBUTION_PAX :Tryb dystrybucji dla pasażerów: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symetryczna" oznacza, że mniej więcej tyle samo pasażerów będzie podróżowało ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości pasażerów mogą podróżować w obu kierunkach. "Ręczna" oznacza, że nie będzie automatycznej dystrybucji dla pasażerów. STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Tryb dystrybucji dla poczty: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symetryczna" oznacza, że mniej więcej tyle samo poczty będzie wysłane ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości poczty mogą być wysłane w obu kierunkach. "Ręczna" oznacza, że nie będzie automatycznej dystrybucji dla poczty. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Typ dystrybucji dla CHRONIONEJ klasy towarów: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :CHRONIONA klasa towarów zawiera kosztowności w umiarkowanym, diamenty w tropikalnym lub złoto w arktycznym klimacie. NewGRF-y mogą to zmieniać. "Symetryczna" oznacza, że mniej więcej tyle samo towaru będzie wysłane ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości towarów mogą być wysłane w obu kierunkach. "Ręczna" oznacza, że nie będzie automatycznej dystrybucji dla tych towarów. Rekomendowane ustawienie to asymetryczne lub ręczne dla klimatu arktycznego, ponieważ banki nie będą wysyłać złota spowrotem do kopalni złota. Dla umiarkowanego i tropikalnego klimatu możesz także wybrać symetryczne, ponieważ banki będą wysyłać kosztowności spowrotem do banku, z którego pochodzi część kosztowności. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Tryb dystrybucji dla innych typów ładunku: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymetrycznie" oznacza, że określone ilości ładunków mogą być wysłane w obu kierunkach. "manualnie" oznacza, że dystrybucja nie będzie odbywać się automatycznie. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Dokładność dystrybucji: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Im wyżej ustawisz, tym wiecej czasu zajmie procesorowi obliczenie wykresu. Jeśli zajmuje zbyt dużo czasu, może pojawić sie lag. Natomiast zbyt mała ilość powoduje niedokładną dystrybucję, co można zauważyć gdy towar nie jest wysyłany do miejsc do których się spodziewasz aby dotarł. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Wpływ odległości na dystrybucję: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ustawisz tę wartość na więcej niż 0, to dystans pomiędzy stacją początkową A jakiegoś towaru a prawdopodobną stacją docelową B będzie miało wpływ na ilość towaru wysłanego z A do B. Im dalej z A do B, tym mniej towaru zostanie wysłane. Im wększa wartość, tym mniej towaru będzie wysłane do dalekich stacji, a więcej towaru będzie wysłane do bliższych stacji. +STR_CONFIG_SETTING_DEMAND_SIZE :Ilość powracającego ładunku dla trybu symetrycznego: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawiając to na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej towaru będzie zwróconego jeśli pewna ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Zapełnienie krótkich tras przed wybraniem tras o dużej przepustowości: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Często są różne trasy pomiędzy dwoma stacjami. Cargodist zapełni najpierw najkrótsza trasę, później wykorzystuje kolejną z najkrótszych tras aż ta jest pełna itd. Zapełnienie jest określone przez obliczenie pojemności wraz z planowanym użyciem. Kiedy już wszystkie trasy są zapełnione, a istnieje wciąż zapotrzebowanie, przepełni wszystkie trasy, preferując jednak te z dużą pojemnością.Jednak w większości algorytm oblicza pojemności niedokładnie. Te ustawienia pozwolą Ci sprecyzować, jaki ma być procent zapełnienia krótszych tras zanim zostaną wybrane dłuższe. Ustaw na mniej niż 100% w celu uniknięcia przepełnienia stacji w razie zawyżenia pojemności. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednostki prędkości: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kiedy prędkość jest pokazywana w interfejsie użytkownika, wyświetl ją w wybranych jednostkach @@ -1958,19 +2015,25 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metryczne (km/h STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednostka mocy pojazdów: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kiedy moc pojazdu jest pokazywana w interfejsie użytkownika, wyświetl ją w wybranych jednostkach STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperialne (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metryczne (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jednostki wagi: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Jeśli kiedykolwiek waga jest pokazywana w interfejsie użytkownika, wyświetl ją w wybranych jednostkach +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperialne (skrót t/tona) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metryczne (t/tony) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Jednostki głośności: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Jednostki objętości: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Jeśli kiedykolwiek objętość jest pokazywana w interfejsie użytkownika, wyświetl ją w wybranych jednostkach STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperialne (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metryczne (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Jednostka siły napędowej: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Jeśli kiedykolwiek siła napędowa jest pokazana w interfejsie użytkownika, pokaż ją w wybranych jednostkach STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperialna (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metryczna (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) @@ -1978,30 +2041,32 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Jednostki wysokości: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Jeśli kiedykolwiek wysokości są pokazywane w interfejsie użytkownika, pokaż je w wybranych jednostkach STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperialne (ft) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrzyczne (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metryczne (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interfejs STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizacja -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstrukcje +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Dźwięk +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfejs +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Ogólne +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Widok +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstrukcje +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Wiadomości i porady +STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Finanse STR_CONFIG_SETTING_VEHICLES :{ORANGE}Pojazdy -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacje -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomia -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Dystrybucja Ładunku (Cargo Distribution) +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizyka +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wyznaczanie trasy +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ograniczenia +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Awarie i katastrofy +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Tworzenie mapy +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Środowisko +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Władze lokalne +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Miasta +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Przedsiębiorstwa +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dystrybucja towarów STR_CONFIG_SETTING_AI :{ORANGE}Rywale -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opcje wyświetlania -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakcja -STR_CONFIG_SETTING_SOUND :{ORANGE}Efekty dźwiękowe -STR_CONFIG_SETTING_NEWS :{ORANGE}Wiadomości -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sygnały -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Obsługa ładunków STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gracze komputerowi -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoodnowa -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Serwisowanie -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wyznaczanie trasy -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Pociągi -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Miasta -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Przedsiębiorstwa STR_CONFIG_SETTING_PATHFINDER_OPF :Oryginalne STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -2050,7 +2115,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Gra wiel STR_INTRO_GAME_OPTIONS :{BLACK}Opcje gry STR_INTRO_HIGHSCORE :{BLACK}Tabela wyników -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ustawienia zaawansowane +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ustawienia STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ustawienia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Sprawdź dodatki online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Ustawienia SI/Game Script @@ -2070,7 +2135,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wybierz STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Wyświetl opcje gry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Wyświetl tabelę wyników -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Wyświetl ustawienia zaawansowane +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ustawienia wyświetlania STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Wyświetl ustawienia NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Poszukaj nowych lub zaktualizowanych dodatków do pobrania STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Pokaż ustawienia SI / Game Script @@ -2110,6 +2175,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Grasz j STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magiczny buldożer (usuwanie przedsiębiorstw, obiektów nieprzesuwalnych): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunele mogą się przecinać: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Odrzutowce nie będą rozbijać się (często) na małych lotniskach: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edytuj maksymalną wysokość mapy: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edytuj maksymalną wysokość gór na mapie STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Klimat umiarkowany STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Klimat arktyczny STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Klimat tropikalny @@ -2123,7 +2190,7 @@ STR_LIVERY_CAPTION :{WHITE}Nowy sch STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Pokaż ogólne schematy koloru STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Pokaż schematy koloru pociągów -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż schematy koloru samochodów +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż schematy koloru pojazdów STR_LIVERY_SHIP_TOOLTIP :{BLACK}Pokaż schematy koloru statków STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Pokaż schematy koloru samolotów STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Wybierz główny kolor dla wybranego schematu. Ctrl + klik ustawi ten kolor dla wszystkich schematów @@ -2158,6 +2225,7 @@ STR_LIVERY_FREIGHT_TRAM :Tramwaj towarow STR_FACE_CAPTION :{WHITE}Wybór twarzy STR_FACE_CANCEL_TOOLTIP :{BLACK}Anuluj wybór nowej twarzy STR_FACE_OK_TOOLTIP :{BLACK}Zatwierdź wybór nowej twarzy +STR_FACE_RANDOM :{BLACK}Losuj STR_FACE_MALE_BUTTON :{BLACK}Mężczyzna STR_FACE_MALE_TOOLTIP :{BLACK}Wybierz męską twarz @@ -2213,7 +2281,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Zmień k # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Gra wieloosobowa -STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Reklamowany +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Publiczny STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Wybierz między rozgrywkami reklamowanymi (internetowymi) a niereklamowanymi (w sieci lokalnej LAN) STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nie STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Tak @@ -2278,13 +2346,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpie STR_NETWORK_START_SERVER_UNADVERTISED :Nie STR_NETWORK_START_SERVER_ADVERTISED :Tak STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" ów ów} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Dopuszczalna ilość klientów: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Dopuszczalna liczba klientów: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Ustaw maksymalną liczbę klientów. Nie wszystkie pola muszą być wypełnione. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firm{P a y ""} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksymalna ilość firm: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksymalna liczba firm: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ogranicz serwer do określonej ilości firm STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} widz{P "" ów ów} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksymalna ilość widzów: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksymalna liczba widzów: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ogranicz serwer do określonej ilości widzów STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Używany język: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Inni gracze będą poinformowani jaki język jest używany na serwerze @@ -2332,10 +2400,10 @@ STR_NETWORK_LANG_LATVIAN :Łotewski ############ End of leave-in-this-order # Network game lobby -STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Lobby gry wieloosobowej +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Rozpoczęcie gry wieloosobowej STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Przygotowanie do połączenia: {ORANGE}{STRING} -STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Lista wszystkich firm w grze. Możesz przyłączyć się do jednej z nich lub założyć nowa +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Lista wszystkich firm w grze. Możesz przyłączyć się do jednej z nich, lub założyć nową STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INFO O FIRMIE STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nazwa firmy: {WHITE}{STRING} @@ -2351,7 +2419,7 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Gracze: STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nowa firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Rozpoczęcie działalności nowej firmy -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Gra obserwowana +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Obserwuj grę STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Oglądaj grę jako widz STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Połącz z firmą STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomóż zarządzać tą firmą @@ -2397,6 +2465,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Widzowie STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wprowadź ilość pieniędzy, które chcesz przekazać +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Obserwator # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nie zapisuj podanego hasła @@ -2616,17 +2685,17 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Połącz STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zbuduj oddzielny pkt. orientacyjny # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstrukcja torowiska -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstrukcja torowiska elektryfikowanego -STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstrukcja torowiska jednoszynowego -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstrukcja torowiska Maglev +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstrukcja linii kolejowej +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstrukcja linii zelektryfikowanej +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstrukcja linii jednoszynowej +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstrukcja linii Maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Budowa torów kolejowych. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Zbuduj tory kolejowe za pomocą trybu Autotory. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Budowa zajezdni kolejowej (do kupowania i serwisowania pociągów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Budowa warsztatów (do kupowania i serwisowania pociągów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Zamiana torów na pkt. orientacyjny. Ctrl umożliwia łączenie pkt. orientacyjnych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Zbuduj stację kolejową. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zbuduj sygnały kolejowe. Ctrl przełącza semafory/sygnały świetlne{}Przeciągnięcie pozwala na budowę sygnałów wzdłuż prostej linii torów. Ctrl pozwala na budowę sygnałów do następnego skrzyżowania{}Ctrl+klik przełącza do okna wyboru sygnałów. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zbuduj sygnały kolejowe. Ctrl przełącza semafory/sygnały świetlne{}Przeciągnięcie pozwala na budowę sygnałów wzdłuż prostej linii torów. Ctrl pozwala na budowę sygnałów do następnego skrzyżowania{}Ctrl+klik przełącza do okna wyboru sygnałów. Shift przełącza pomiędzy budowaniem a szacowaniem kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Zbuduj most kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Zbuduj tunel kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Przełącz buduj/usuń dla torów kolejowych, sygnałów, pkt. orientacyjnych i stacji. Przetrzymanie Ctrl usuwa także tory kolejowe z pkt. orientacyjnych i stacji @@ -2638,8 +2707,8 @@ STR_RAIL_NAME_MONORAIL :Kolej jednoszyn STR_RAIL_NAME_MAGLEV :Kolej magnetyczna (Maglev) # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Ukierunkowanie zajezdni -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie zajezdni kolejowej +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Ukierunkowanie hali warsztatów +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie warsztatów # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pkt. orientacyjny @@ -2664,18 +2733,18 @@ STR_STATION_CLASS_WAYP :Pkt. orientacyj # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Wybór sygnałów -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (semafor){}Najprostszy typ sygnału umożliwiający na przebywanie w jednym bloku wyłącznie jednemu pociągowi na raz +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (semafor){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (semafor){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym wypadku czerwony. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (semafor){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (semafor){}Sygnalizator złożony zachowuje się jak kombinacja sygnalizatorów wejściowych oraz wyjściowych. Umożliwia to budowę wielkich "drzew" presygnalizatorów -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (elektryczny){}Najprostszy typ sygnału umożliwiający na przebywanie w jednym bloku wyłącznie jednemu pociągowi na raz +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (elektryczny){}Najprostszy typ sygnału pozwalający na przebywanie w jednym bloku wyłącznie jednemu pociągowi naraz STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (elektryczny){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym przypadku czerwony STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (elektryczny){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (elektryczny){}Sygnalizator złożony działa jako sygnał wejściowy i wyjściowy. Umożliwia to budowę wielkich "drzew" presygnalizatorów -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatorów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę go na wybrany typ i wariant. CTRL+klik przełącza istniejący wariant. Shift+klik pokazuje szacowany koszt zamiany STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gęstość sygnałów przy przeciąganiu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Zmniejsz gęstość sygnałów przy przeciąganiu @@ -2699,9 +2768,9 @@ STR_BRIDGE_TUBULAR_SILICON :Cylindryczny, k # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Budowa dróg -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Budowa torowiska tramwajowego +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Budowa linii tramwajowej STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Zbuduj drogę. Ctrl przełącza buduj/usuń dla konstrukcji drogowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Zbuduj torowisko tramwajowe. Ctrl przełącza buduj/usuń dla konstrukcji tramwajowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Zbuduj tory tramwajowe. Ctrl przełącza buduj/usuń dla konstrukcji tramwajowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Zbuduj drogę używając trybu Autoroad. Ctrl przełącza buduj/usuń dla konstrukcji drogowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Zbuduj tory tramwajowe używając trybu Autotram. Ctrl przełącza buduj/usuń dla konstrukcji tramwajowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Wybuduj zajezdnię samochodową (do kupowania i serwisowania pojazdów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów @@ -2716,7 +2785,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Zbuduj m STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Zbuduj tunel drogowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Zbuduj tunel tramwajowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Przełącz buduj/usuń dla konstrukcji dróg -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Przełącz buduj/usuń dla konstrukcji torowiska tramwajowego +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Przełącz buduj/usuń dla konstrukcji tramwajowej # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Ukierunkowanie zajezdni samochodowej @@ -2771,7 +2840,7 @@ STR_AIRPORT_COMMUTER :Lokalne STR_AIRPORT_INTERCONTINENTAL :Międzykontynentalne STR_AIRPORT_HELIPORT :Klasyczne STR_AIRPORT_HELIDEPOT :Serwisowe -STR_AIRPORT_HELISTATION :Stacja +STR_AIRPORT_HELISTATION :Lotnisko helikopterów STR_AIRPORT_CLASS_SMALL :Małe lotniska STR_AIRPORT_CLASS_LARGE :Duże lotniska @@ -2822,7 +2891,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Jesteś # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Tworzenie miast STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nowe miasto -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Zbuduj nowe miasto. Shift+Click pokazuje szacunkowy koszt +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Zbuduj nowe miasto. Shift+klik pokazuje szacunkowy koszt STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Losowe miasto STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Budowa miasta w losowym miejscu STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Wiele losowych miast @@ -2900,7 +2969,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nazwa po STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akceptowany ładunek: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limit prędkości torowiska {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limit prędkości linii kolejowej: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Drogowe ograniczenie prędkości: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Skały @@ -2933,7 +3003,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} tor z STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} tor z semaforami złożonymi (combo) i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} tor z semaforami złożonymi (combo) i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} tor z semaforami trasy i jednokierunkowymi semaforami trasy -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{G=f}{STRING} zajezdnia +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{G=f}Warsztaty - {STRING} STR_LAI_ROAD_DESCRIPTION_ROAD :Droga STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Droga z oświetleniem ulicznym @@ -2968,7 +3038,7 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Stocznia # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tunel kolejowy -STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunel samochodowy +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunel drogowy STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Podwieszany most kolejowy ze stali STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Dźwigarowy most kolejowy ze stali @@ -2997,7 +3067,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-2013 Zespół OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 Zespół OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę @@ -3016,6 +3086,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Zapisz STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Zapisz bieżącą grę używając wybranej nazwy STR_SAVELOAD_LOAD_BUTTON :{BLACK}Wczytaj STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Wczytaj wybraną grę +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Wczytaj wybraną mapę wysokości STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Szczegóły gry STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Brak dostępnych informacji STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -3025,24 +3096,23 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Wprowad # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Tworzenie świata -STR_MAPGEN_MAPSIZE :{BLACK}Rozmiar Mapy: +STR_MAPGEN_MAPSIZE :{BLACK}Rozmiar mapy: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Wybierz rozmiar mapy w kwadratach. Liczba dostępnych kwadratów będzie nieco mniejsza STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Ilość miast: +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Liczba miast: STR_MAPGEN_DATE :{BLACK}Data: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Ilość przedsiębiorstw +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Liczba przedsiębiorstw: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksymalna wysokość mapy +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Podnieś maksymalną wysokość gór na mapie o jeden +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Zmniejsz maksymalną wysokość gór na mapie o jeden STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Śnieg od wysokości: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Podnieś wysokość śniegu o jeden w górę STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Obniż wysokość śniegu o jeden w dół -STR_MAPGEN_RANDOM_SEED :{BLACK}Losowy numer: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliknij aby wpisać losowy numer -STR_MAPGEN_RANDOM :{BLACK}Losuj -STR_MAPGEN_RANDOM_HELP :{BLACK}Zmień losowy numer używany przy tworzeniu terenu STR_MAPGEN_LAND_GENERATOR :{BLACK}Generator terenu: STR_MAPGEN_TREE_PLACER :{BLACK}Algorytm drzew: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ terenu: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Poziom wody: -STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rzeki: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Liczba rzek: STR_MAPGEN_SMOOTHNESS :{BLACK}Gładkość: STR_MAPGEN_VARIETY :{BLACK}Różnorodność: STR_MAPGEN_GENERATE :{WHITE}Stwórz @@ -3064,7 +3134,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nazwa ma STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Rozmiar: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Wprowadź losowe ziarno +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Zmień maksymalną wysokość mapy STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Zmień wysokość linii śniegowej STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Zmień datę rozpoczęcia @@ -3119,6 +3189,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Do góry STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Przesuń zaznaczony plik NewGRF w górę listy STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Na dół STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Przesuń zaznaczony plik NewGRF na dół listy +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Aktualizacja +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Aktualizacja pliku NewGRF do już zainstalowanej nowszej wersji STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Lista zainstalowanych plików NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Ustaw parametry @@ -3143,6 +3215,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nie znalez STR_NEWGRF_SETTINGS_DISABLED :{RED}Niedostępny STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Niekompatybilne z tą wersją OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Zapis schematu +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista dostępnych schematów. Wybierz jeden z nich, aby wykonać zapis z taką nazwą +STR_SAVE_PRESET_TITLE :{BLACK}Wprowadź nazwę schematu +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Aktualna nazwa dla zapisywanego schematu +STR_SAVE_PRESET_CANCEL :{BLACK}Anuluj +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Nie wprowadzaj zmian +STR_SAVE_PRESET_SAVE :{BLACK}Zapisz +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Zapisz schemat z wybraną nazwą + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Zmień parametry NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zamknij @@ -3166,14 +3248,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR z # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Dostosowanie obrazka {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Następny obrazek -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Idź do następnego obrazka, pomijając pseudo/kolorowe/znakowe obrazki i przenieś je na koniec +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Idź do następnego normalnego obrazka, pomijając jakiekolwiek pseudo/kolorowe/znakowe obrazki i zawijaj je od ostatniego do pierwszego STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idź do obrazka STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Idź do danego obrazka. Jeśli dany obrazek nie jest normalnym obrazkiem, idź do następnego normalnego obrazka STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Poprzedni obrazek -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego obrazka, pomijając wszystkie pseudo/kolorowe/znakowe obrazki i przenieś je na początek +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego normalnego obrazka, pomijając jakiekolwiek pseudo/kolorowe/znakowe obrazki i zawijaj je od pierwszego do ostatniego STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Przedstawienie wybranego orbazka. Dostosowanie jest ignorowane podczas rysowania tego obrazka STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Poruszaj obrazkiem, zmieniając przesunięcia X i Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Przesunięcie X: {NUM}, Przesunięcie Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetuj zależność +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetuj aktualne offsety zależne +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Całkowity) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Zależny) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Wybierz obrazek STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wybierz obrazek z dowolnego miejsca na ekranie @@ -3228,8 +3313,9 @@ STR_NEWGRF_LIST_MISSING :{RED}Brakujące # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Zachowanie NewGRF '{0:STRING}' może powodować desynchronizacje i/lub błędy -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmienia stan wagonu dla '{1:ENGINE}' gdy nie jest w zajezdni -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmienia długość pojazdu dla '{1:ENGINE}' gdy nie jest w zajezdni +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmieniony stan wagonu silnikowego '{1:ENGINE}', gdy był poza halą warsztatów +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmiana długości pojazdu '{1:ENGINE}' , który nie jest zatrzymany w hali +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Zmieniono ładowność pojazdu na '{1:ENGINE}', kiedy nie był w hali warsztatów lub w trakcie przebudowy STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg '{VEHICLE}' należący do '{COMPANY}' ma niepoprawną długość. Prawdopodobnie spowodowane jest to problemami z NewGRFami. Gra może stracić synchronizację lub się zawiesić STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' dostarcza niepoprawnych danych @@ -3240,13 +3326,16 @@ STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Wywołan # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} jednost{P ka ki ek} STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanowanie NewGRFów -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanuje NewGRFy. Może to zająć chwilę w zależności od ilości... +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanuję NewGRFy. Może to zająć chwilę w zależności od ich ilości... STR_NEWGRF_SCAN_STATUS :{BLACK}Przeskanowano {NUM} NewGRF{P "" y ów} z około {NUM} NewGRFów STR_NEWGRF_SCAN_ARCHIVES :Skanowanie w poszukiwaniu archiwum @@ -3281,8 +3370,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{G=f}{ORANGE}{STRING}{GREEN} dostarczona STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{G=m}{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (wciąż wymagany) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{G=m}{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (dostarczony) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK} {P dzień dni dni} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK} {P dzień dni dni} (ufundowane) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK}{NBSP}{P dzień dni dni} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK}{NBSP}{P dzień dni dni} (ufundowane) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Miasto {RED}nie{BLACK} rośnie STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limit hałasu w mieście: {ORANGE}{COMMA}{BLACK} maksymalnie: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na mieście. Ctrl+klik otwiera nowy podgląd na lokację miasta @@ -3298,7 +3387,7 @@ STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Skasuj t STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Zmień nazwę miasta # Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} lokalne władze +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Lokalne władze m. {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ocena transportu firmy: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Możliwe działania: @@ -3309,7 +3398,7 @@ STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Wykonaj STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Mała kampania reklamowa STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Średnia kampania reklamowa STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Duża kampania reklamowa -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Ufunduj rekonstrukcję dróg +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Ufunduj miastu rekonstrukcję dróg STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Zbuduj statuę właściciela STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Ufunduj nowe budynki STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kup wyłączność transportową @@ -3334,7 +3423,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nie d STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Cele firmy: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknij na celu by wyśrodkować widok na przedsiębiorstwie/mieście/tytule. Ctrl+kliknięcie otwiera nowe okno podglądu lokacji danego przedsiębiorstwa.miasta/tytułu +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknij na celu by wyśrodkować widok na przedsiębiorstwie/mieście/polu. Ctrl+klik otwiera nowe okno podglądu # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pytanie @@ -3342,7 +3431,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacja STR_GOAL_QUESTION_CAPTION_WARNING :Ostrzeżenie STR_GOAL_QUESTION_CAPTION_ERROR :Błąd -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Anuluj STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nie @@ -3361,6 +3450,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restartuj STR_GOAL_QUESTION_BUTTON_POSTPONE :Odłóż STR_GOAL_QUESTION_BUTTON_SURRENDER :Poddaj się STR_GOAL_QUESTION_BUTTON_CLOSE :Zamknij +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsydia @@ -3372,13 +3462,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik na usłudze żeby wyśrodkować widok na fabrykę/miasto. Ctrl+klik otwiera nowy podgląd na pozycji fabryki/miasta # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Album Historii Firmy {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalne okno opowieści STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strona {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skocz na specyficzną stronę wybierając ją z listy. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skocz na właściwą stronę wybierając ją z listy. STR_STORY_BOOK_PREV_PAGE :{BLACK}Wstecz STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Idź na poprzednią stronę STR_STORY_BOOK_NEXT_PAGE :{BLACK}Dalej STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Idź na następną stronę +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Niepoprawne odniesienie do celu # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nazwa stacji - kliknij na nazwie aby wyśrodkować główny widok na stacji. Ctrl+klik otwiera nowy podgląd na lokację stacji @@ -3393,7 +3486,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nie ma # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Czeka: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} zarezerwowane do załadunku) @@ -3411,6 +3503,10 @@ STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Miesięc STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Grupuj według +STR_STATION_VIEW_WAITING_STATION :Stacja: W oczekiwaniu +STR_STATION_VIEW_WAITING_AMOUNT :Ilość: W oczekiwaniu +STR_STATION_VIEW_PLANNED_STATION :Stacja: Planowana +STR_STATION_VIEW_PLANNED_AMOUNT :Ilość: Planowana STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} ze stacji {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} przez stację {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} na stację {STATION} @@ -3418,9 +3514,16 @@ STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHO STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} na dowolną stację STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} za pośrednictwem dowolnej stacji STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} z tej stacji +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} zatrzymuje się na tej stacji STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do tej stacji STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop +STR_STATION_VIEW_GROUP_S_V_D :Źródło-Przez-Cel +STR_STATION_VIEW_GROUP_S_D_V :Źródło-Cel-Przez +STR_STATION_VIEW_GROUP_V_S_D :Przez-Źródło-Cel +STR_STATION_VIEW_GROUP_V_D_S :Przez-Cel-Źródło +STR_STATION_VIEW_GROUP_D_S_V :Cel-Źródło-Przez +STR_STATION_VIEW_GROUP_D_V_S :Cel-Przez-Źródło ############ range for rating starts STR_CARGO_RATING_APPALLING :Zatrważające @@ -3437,7 +3540,7 @@ STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centruj STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Zmień nazwę stacji STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Pokazuje wszystkie pociągi, które mają tę stację w swoim rozkładzie -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Pokazuje wszystkie samochody, które mają tę stację w swoim rozkładzie +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Pokazuje wszystkie pojazdy, które mają ten przystanek w swoim rozkładzie STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Pokazuje wszystkie samoloty, które mają tę stację w swoim rozkładzie STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Pokazuje wszystkie statki, które mają tę stację w swoim rozkładzie @@ -3462,12 +3565,12 @@ STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstrukcje STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nowe pojazdy STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Utrzymanie pociągów -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Utrzymanie samochodów +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Utrzymanie pojazdów drogowych STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Utrzymanie samolotów STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Utrzymanie statków STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Utrzymywanie własności STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Przychód z pociągów -STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Przychód z samochodów +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Przychód z pojazdów drogowych STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Przychód z samolotów STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Przychód ze statków STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Odsetki od pożyczki @@ -3477,7 +3580,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Łącznie: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bilans bankowy STR_FINANCES_LOAN_TITLE :{WHITE}Pożyczka -STR_FINANCES_MAX_LOAN :{WHITE}Maks. pożyczka: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maksymalna pożyczka: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pożyczka {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Zwiększ wielkość pożyczki. Ctrl+Klik spłaca maksymalną możliwą kwotę pożyczki @@ -3527,8 +3630,8 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Zmień i STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kup 25% udziałów w firmie STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sprzedaj 25% udziałów w firmie -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kup 25% udziałów w tej firmie. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sprzedaj 25% udziałów tej firmy. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kup 25% udziałów w tej firmie. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sprzedaj 25% udziałów tej firmy. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nazwa firmy STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nazwisko prezesa @@ -3588,7 +3691,7 @@ STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} samolot{P "" y ów} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Pociągi - klik na pojeździe aby uzyskać informacje -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Samochody - klik na pojeździe po więcej informacji +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Pojazdy drogowe - klik na pojeździe po więcej informacji STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Statki - kliknij aby uzyskać informacje o statku STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Samolot - klik na samolocie aby uzyskać informacje @@ -3605,7 +3708,7 @@ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Wyślij STR_VEHICLE_LIST_REPLACE_VEHICLES :Zastąp pojazdy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Wyślij do serwisu -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Wyślij do zajezdni +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Wyślij do warsztatów STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Wyślij do zajezdni STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Wyślij do stoczni STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Wyślij do hangaru @@ -3617,21 +3720,24 @@ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Poleceni # Group window STR_GROUP_ALL_TRAINS :Wszystkie pociągi -STR_GROUP_ALL_ROAD_VEHICLES :Wszystkie samochody +STR_GROUP_ALL_ROAD_VEHICLES :Wszystkie pojazdy STR_GROUP_ALL_SHIPS :Wszystkie statki STR_GROUP_ALL_AIRCRAFTS :Wszystkie samoloty STR_GROUP_DEFAULT_TRAINS :Pociągi bez grupy -STR_GROUP_DEFAULT_ROAD_VEHICLES :Samochody bez grupy +STR_GROUP_DEFAULT_ROAD_VEHICLES :Pojazdy bez grupy STR_GROUP_DEFAULT_SHIPS :Statki bez grupy STR_GROUP_DEFAULT_AIRCRAFTS :Samoloty bez grupy -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupy - Kliknij na grupie aby wyświetlić wszystkie pojazdy z grupy +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupy - kliknij na grupę, aby wyświetlić wszystkie pojazdy z grupy. Przeciągnij i upuść grupy, aby dostosować hierarchię. STR_GROUP_CREATE_TOOLTIP :{BLACK}Kliknij aby stworzyć grupę STR_GROUP_DELETE_TOOLTIP :{BLACK}Usuń zaznaczoną grupę STR_GROUP_RENAME_TOOLTIP :{BLACK}Zmień nazwę zaznaczonej grupy STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Kliknij, aby ochronić tę grupę przed globalną zamianą pojazdów +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Skasuj Grupę +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Jesteś pewien, że chcesz skasować tą grupę i wszytskich jej członków? + STR_GROUP_ADD_SHARED_VEHICLE :Dodaj poj. współdzielące STR_GROUP_REMOVE_ALL_VEHICLES :Usuń wszystkie pojazdy @@ -3669,20 +3775,20 @@ STR_PURCHASE_INFO_ALL_BUT :wszystko opróc 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista wyboru pociągów - kliknij na pojeździe, aby uzyskać informacje -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista wyboru pojazdów drogowych - kliknij na pojeździe, aby uzyskać więcej informacji -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista wyboru statków - kliknij na statku, aby uzyskać informacje -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista wyboru samolotów - kliknij na samolocie, aby uzyskać informacje +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista wyboru statków - kliknij na statku, aby uzyskać informacje. Ctrl+klik przełącza ukrywanie typu statku +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista wyboru samolotów - kliknij na samolocie, aby uzyskać informacje. Ctrl+klik przełącza ukrywanie typu samolotu -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kup pociąg +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kup tabor kolejowy STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kup pojazd drogowy STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kup statek STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kup samolot -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pociąg. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pojazd drogowy. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony statek. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony samolot. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pociąg. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pojazd drogowy. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony statek. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony samolot. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Zmień nazwę @@ -3690,20 +3796,35 @@ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Zmień n STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Zmiana nazwy typu pociągu -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu samochodu +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu pojazdu STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu statku STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu samolotu +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ukryj +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ukryj +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ukryj +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ukryj + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Wyświetl +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Wyświetl +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Wyświetl +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Wyświetl + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu taboru +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu pojazdu +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu statku +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu ssamolotu + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zmiana nazwy typu pociągu -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Zmień nazwę typu samochodu +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Zmień nazwę typu pojazdu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Zmień nazwę typu statku STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Zmień nazwę typu samolotu # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} -STR_DEPOT_RENAME_TOOLTIP :{BLACK}Zmiana nazwy zajezdni -STR_DEPOT_RENAME_DEPOT_CAPTION :Zmień nazwę zajezdni +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Zmiana nazwy hali warsztatów +STR_DEPOT_RENAME_DEPOT_CAPTION :Zmień nazwę hali warsztatów STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} @@ -3716,21 +3837,21 @@ STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Statki - STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Samolot - prawy-klik na samolocie aby uzyskać informacje STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj pociąg aby go sprzedać -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj samochód aby go sprzedać +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj pojazd, aby go sprzedać STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj statek aby go sprzedać STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj samolot aby go sprzedać -STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj lokomotywę by sprzedać cały pociąg +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj lokomotywę, by sprzedać cały pociąg -STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sprzedaj wszystkie pociągi z zajezdni -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sprzedaj wszystkie samochody z zajezdni +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sprzedaj wszystkie pociągi z hali warsztatów +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sprzedaj wszystkie pojazdy z tej zajezdni STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sprzedaj wszystkie statki ze stoczni STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sprzedaj wszystkie samoloty z hangaru -STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Zamień wszystkie pociągi w zajezdni -STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Zamień wszystkie samochody w zajezdni -STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Zamień wszystkie statki w stoczni -STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Zamień wszystkie samoloty w hangarze +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Autoodnowa wszystkich pociągów z hali warsztatów +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autoodnowa wszystkich pojazdów stojących w zajezdni +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autoodnowa wszystkich statków stojących w stoczni +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autoodnowa wszystkich samolotów stojących w hangarze STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nowe pojazdy STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nowe pojazdy @@ -3747,32 +3868,32 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonuj p STR_DEPOT_CLONE_SHIP :{BLACK}Klonuj statek STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonuj samolot -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pociągu wraz ze wszystkimi wagonami. Kliknij na przycisk a następnie na pociąg wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pojazdu drogowego. Kliknij na przycisk a następnie na pojazd wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Spowoduje zakup kopii statku. Kliknij na przycisk a następnie na statek wewnątrz lub na zewnątrz stoczni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Spowoduje zakup kopii samolotu. Kliknij na przycisk a następnie na samolot wewnątrz lub na zewnątrz hangaru. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pociągu wraz ze wszystkimi wagonami. Kliknij na przycisk a następnie na pociąg wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pojazdu drogowego. Kliknij na przycisk a następnie na pojazd wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Spowoduje zakup kopii statku. Kliknij na przycisk a następnie na statek wewnątrz lub na zewnątrz stoczni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Spowoduje zakup kopii samolotu. Kliknij na przycisk a następnie na samolot wewnątrz lub na zewnątrz hangaru. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik pokazuje szacunkowy koszt bez dokonania zakupu -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji zajezdni. Ctrl+klik otwiera nowy podgląd na pozycji zajezdni +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na warsztatach. Ctrl+klik otwiera nowy podgląd na pozycji hali STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruj główne okno na pozycji zajezdni samochodowej. Ctrl+klik otwiera nowy podgląd na pozycję zajezdni samochodowej -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji stoczni. Ctrl+klik otwiera nowy podgląd na pozycję stoczni +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na stoczni. Ctrl+klik otwiera nowy podgląd na pozycję stoczni STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji hangaru. Ctrl+klik otwiera nowy podgląd na pozycję hangaru -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Pokaż listę wszystkich pociągów z tą zajezdnia w swoich poleceniach -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż listę wszystkich samochodów z tą zajezdnia w swoich poleceniach -STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Pokaż listę wszystkich statków z tą stocznia w swoich poleceniach +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Pokaż listę wszystkich pociągów z tymi warsztatami w swoich poleceniach +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż listę wszystkich pojazdów z tą zajezdnią w swoich poleceniach +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Pokaż listę wszystkich statków z tą stocznią w swoich poleceniach STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Pokaż listę wszystkich samolotów z hangarem na tym lotnisku w swoich poleceniach -STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie pociągi w zajezdni -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie samochody w zajezdni +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie pociągi w hali warsztatów +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie pojazdy w zajezdni STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie statki w stoczni STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie samoloty w hangarze -STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie pociągi w zajezdni -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie samochody w zajezdni -STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie statki w stoczni -STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie samoloty w hangarze +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij, aby uruchomić wszystkie pociągi z warsztatów +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij, aby uruchomić wszystkie pojazdy w zajezdni +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij, aby uruchomić wszystkie statki w stoczni +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Kliknij, aby uruchomić wszystkie samoloty w hangarze -STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sprzedasz wszystkie pojazdy z zajezdni. Jesteś pewien? +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sprzedajesz wszystkie pojazdy z tych warsztatów. Jesteś pewien? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Wiadomość od producenta pojazdów @@ -3780,7 +3901,7 @@ STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Właśnie STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}lokomotywa STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.b :{G=f}lokomotywę STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}pojazd -STR_ENGINE_PREVIEW_ROAD_VEHICLE.b :{G=m}samochód +STR_ENGINE_PREVIEW_ROAD_VEHICLE.b :{G=m}pojazd STR_ENGINE_PREVIEW_AIRCRAFT :{G=m}samolot STR_ENGINE_PREVIEW_AIRCRAFT.b :{G=m}samolot STR_ENGINE_PREVIEW_SHIP :{G=m}statek @@ -3800,10 +3921,15 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Koszt: { # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastąp {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Pociąg -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Samochód +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Pojazd STR_REPLACE_VEHICLE_SHIP :Statek STR_REPLACE_VEHICLE_AIRCRAFT :Samolot +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Używane pojazdy +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Lista posiadanych pojazdów +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{BLACK}Dostępne pojazdy +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Lista pojazdów dostępnych do zamiany + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wybierz typ pojazdu do zamiany STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wybierz typ pojazdu jakim chcesz zastąpić pojazd zaznaczony po lewej stronie @@ -3840,7 +3966,7 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruj STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji statku. Ctrl+klik by podążać za statkiem w głównym oknie STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji samolotu. Ctrl+klik by podążać za samolotem w głównym oknie -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij pociąg do zajezdni +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij pociąg do warsztatów STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij pojazd do zajezdni STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij statek do stoczni STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij samolot do hangaru @@ -3853,7 +3979,7 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Spowoduj STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Wymuszony start pociągu bez czekania na sygnał STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Przebudowa pociągu do przewozu innego typu ładunku -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebudowa samochodu do przewozu innego typu ładunku +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebudowa pojazdu do przewozu innego typu ładunku STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Przebudowa statku do przewozu innego typu ładunku STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Przebudowa samolotu do przewozu innego typu ładunku @@ -3866,7 +3992,7 @@ STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Pokaż p STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Pokaż polecenia samolotu. Ctrl+klik pokazuje harmonogram lotów samolotu. STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły pociągu -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż detale samochodu +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż detale pojazdu STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły statku STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły samolotu @@ -3903,7 +4029,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE STR_VEHICLE_NAME_BUTTON :{BLACK}Nazwa STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Zmień nazwę pociągu -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Zmień nazwę samochodu +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Zmień nazwę pojazdu STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Zmień nazwę statku STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Zmień nazwę samolotu @@ -3928,7 +4054,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ładowno STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Wartość ładunku: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}dni{BLACK} Ostatni serwis: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}{NBSP}dni{BLACK} Ostatni serwis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}%{BLACK} Ostatni serwis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zwiększ okres między serwisowaniami o 10. Ctrl+klik zwiększa okres między serwisowaniami o 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zmniejsz okres między serwisowaniami o 10. Ctrl+klik zmniejsza okres między serwisowaniami o 5 @@ -3939,7 +4065,7 @@ STR_VEHICLE_DETAILS_DAYS :Dni STR_VEHICLE_DETAILS_PERCENT :Procent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nazwa pociągu -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nazwa samochodu +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nazwa pojazdu STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nazwa statku STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nazwa samolotu @@ -3970,23 +4096,23 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Ładowno STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Przebudowa) STR_REFIT_TITLE :{GOLD}Wybierz typ ładunku do przewozu: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}{}{BLACK}Koszt przebudowy: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nowa pojemność: {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Koszt przebudowy: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nowa pojemność: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Wybierz pojazdy do przebudowania. Przeciągając myszkę można wybierać więcej pojazdów. Klikając na puste pole zaznaczysz cały pojazd. Ctrl+klik zaznaczy pojazd i dołączony skład STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przewozić pociąg -STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wybierz ładunek jaki ma przewozić ten samochód +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wybierz ładunek, jaki ma przewozić ten pojazd STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przewozić statek STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przenosić samolot STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Przebudowa pociągu -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Przebudowa samochodu +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Przebudowa pojazdu STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Przebudowa statku STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Przebudowa samolotu STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Przebuduj pociąg do przewozu zaznaczonego typu ładunku -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebuduj samochód do przewozu zaznaczonego typu ładunku +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebuduj pojazd do przewozu zaznaczonego typu ładunku STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Przebuduj statek do przewozu zaznaczonego typu ładunku STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Przebuduj samolot do przewozu zaznaczonego typu ładunku @@ -4026,8 +4152,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Zmień s STR_ORDER_REFIT :{BLACK}Przebudowa STR_ORDER_REFIT_TOOLTIP :{BLACK}Wybierz typ ładunku do przebudowy. Ctrl+klik usuwa polecenie -STR_ORDER_REFIT_AUTO :{BLACK}Automatyczna przebudowa -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wybierz typ ładunku do automatycznej przebudowy. Ctrl+klik usuwa polecenie. Automatyczna przebudowa zostanie wykonana jedynie, jeśli dany pojazd na to pozwala +STR_ORDER_REFIT_AUTO :{BLACK}Przebudowa na stacji +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wybierz typ ładunku do przebudowy. Ctrl+klik usuwa polecenie. Przebudowa na stacji zostanie wykonana jedynie, jeśli dany pojazd na to pozwala i nie powoduje to zmiany jego wyglądu STR_ORDER_DROP_REFIT_AUTO :Ustalony ładunek STR_ORDER_DROP_REFIT_AUTO_ANY :Dostępny ładunek @@ -4071,7 +4197,7 @@ STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Przesta STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Przestań dzielić listę poleceń. Ctrl+Klik dodatkowo usuwa wszystkie polecenia tego pojazdu STR_ORDERS_GO_TO_BUTTON :{BLACK}Idź do -STR_ORDER_GO_TO_NEAREST_DEPOT :Idź do najbliższej zajezdni +STR_ORDER_GO_TO_NEAREST_DEPOT :Idź do najbliższego serwisu STR_ORDER_GO_TO_NEAREST_HANGAR :Leć do najbliższego hangaru STR_ORDER_CONDITIONAL :Warunkowy skok poleceń STR_ORDER_SHARE :Współdzielenie poleceń @@ -4086,9 +4212,9 @@ STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idź bez zatrzy STR_ORDER_SERVICE_AT :Serwisuj w STR_ORDER_SERVICE_NON_STOP_AT :Serwisuj non-stop w -STR_ORDER_NEAREST_DEPOT :najbliższy +STR_ORDER_NEAREST_DEPOT :najbliższych STR_ORDER_NEAREST_HANGAR :najbliższy hangar -STR_ORDER_TRAIN_DEPOT :Zajezdni kolejowej +STR_ORDER_TRAIN_DEPOT :Warsztatów STR_ORDER_ROAD_VEHICLE_DEPOT :Zajezdni samochodowej STR_ORDER_SHIP_DEPOT :Doku STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} @@ -4120,10 +4246,10 @@ STR_ORDER_NO_UNLOAD_NO_LOAD :(Nie rozładowu STR_ORDER_AUTO_REFIT :(Przebuduj na {STRING.b}) STR_ORDER_FULL_LOAD_REFIT :(Przebuduj na {STRING.b} i czekaj na pełny załadunek) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Przebuduj na {STRING.b} i czekaj na pełny załadunek któregoś z towarów) STR_ORDER_UNLOAD_REFIT :(Rozładuj, przebuduj na {STRING.b} i zabierz ładunek) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Rozładuj, przebuduj na {STRING.b} i czekaj na pełny załadunek) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Rozładuj, przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Rozładuj, przebuduj na {STRING.b} i czekaj na pełny załadunek któregoś z towarów) STR_ORDER_TRANSFER_REFIT :(Przeładuj, przebuduj na {STRING.b} i zabierz ładunek) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Przeładuj, przebuduj na {STRING.b} i czekaj na pełny załadunek) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Przeładuj, przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) @@ -4155,13 +4281,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Rozkład STR_TIMETABLE_NO_TRAVEL :Nie podróżuje STR_TIMETABLE_NOT_TIMETABLEABLE :Podróż (automatycznie; zaplanowana przez następny ręczny rozkaz) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Przejazd (bez ustalonego czasu) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Podróżuj z maksymalną prędkością {2:VELOCITY} (poza rozkładem) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Podróżuj (poza rozkładem) z maksymalną prędkością {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Przejazd przez {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Podróżuj przez {STRING} z maksymalną prędkością {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Przejazd przez {STRING} (poza rozkładem) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Podróżuj przez {STRING} z prędkością {VELOCITY} maks. (poza rozkładem) +STR_TIMETABLE_STAY_FOR_ESTIMATED :(postój w {STRING} poza rozkładem) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(przejazd przez {STRING} poza rozkładem) STR_TIMETABLE_STAY_FOR :i zostań tam przez {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :i podróżuje przez{STRING} -STR_TIMETABLE_DAYS :{COMMA} d{P zień ni ni} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" i ów} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}d{P zień ni ni} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" i ów} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ten rozkład jazdy zajmie {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ten rozkład jazdy zajmie przynajmniej {STRING} (nie wszystkie stacje są na rozkładzie) @@ -4173,6 +4303,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ten rozk STR_TIMETABLE_STATUS_START_AT :{BLACK}Ten rozkład jazdy rozpocznie się {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data początkowa +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wybierz początkową datę rozkładu jazdy. Ctrl+klik ustawia startowy punkt tego rozkładu oraz, jeśli ten jest kompletny, rozdziela go po kolei wszystkim pojazdom współdzielącym go, zależnie od ich kolejności ułożenia STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmień czas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmień ilość czasu którą zaznaczone zadanie powinno zająć @@ -4216,7 +4347,7 @@ STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nazwa sk STR_AI_DEBUG_SETTINGS :{BLACK}Ustawienia STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Zmień ustawienia skryptu STR_AI_DEBUG_RELOAD :{BLACK}Przeładuj SI -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Zabij SI, przeładuj skrypt i zrestartuj SI +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Wyłącz SI, przeładuj skrypt i zrestartuj SI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Włącz/wyłącz przerwanie, kiedy wiadomość SI zgadza się z wiadomością przerywającą STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Zatrzymaj gdy: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Zatrzymaj gdy @@ -4286,6 +4417,8 @@ STR_AI_SETTINGS_START_DELAY :Liczba dni, kt STR_TEXTFILE_README_CAPTION :{WHITE}'CzytajTo' dla {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Zmiany w {STRING} dla {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licencja dla {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Zawijaj tekst +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zawijjaj tekst w oknie, żeby był cały widoczny bez konieczności przewijania STR_TEXTFILE_VIEW_README :{BLACK}Odczytaj plik readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Lista zmian STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencja @@ -4385,8 +4518,8 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Niedozwo # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Lokalne władze miasta {TOWN} nie pozwalają na to STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Lokalne władze miasta {TOWN} nie pozwalają na budowę kolejnego lotniska w tym mieście -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} lokalne władzę odmawiają zgody na lotnisko ze względu na poziom hałasu -STR_ERROR_BRIBE_FAILED :{WHITE}Twoja próba przekupstwa została wykryta przez okolicznych śledczych +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Lokalne władze miasta {TOWN} odmawiają zgody na lotnisko ze względu na poziom hałasu +STR_ERROR_BRIBE_FAILED :{WHITE}Twoja próba przekupstwa została wykryta przez miejscowych śledczych # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Nie można tutaj podnieść lądu... @@ -4396,6 +4529,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Wykop zn STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... już na poziomie morza STR_ERROR_TOO_HIGH :{WHITE}... zbyt wysoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... już wyrównany +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Potem most powyżej byłby zbyt wysoko. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nie można zmienić nazwy firmy... @@ -4422,7 +4556,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... zbyt STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... zbyt blisko innego miasta STR_ERROR_TOO_MANY_TOWNS :{WHITE}... zbyt wiele miast STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nie ma więcej miejsca na mapie -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Miasto nie będzie budować dróg. Możesz zezwolić na budowę dróg poprzez Ustawienia zaawansowane->Ekonomia->Miasta +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Miasto nie będzie budować dróg. Możesz zezwolić na budowę dróg poprzez Ustawienia->Środowisko->Miasta STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trwają roboty drogowe STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nie można usunąć tego miasta...{}Stacja lub zajezdnia przynależy do tego miasta lub obszar miasta nie może być usunięty STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... w centrum tego miasta nie ma odpowiedniego miejsca na pomnik @@ -4446,6 +4580,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... las STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... można zbudować tylko powyżej linii śniegu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... można zbudować tylko poniżej linii śniegu +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nie ma odpowiednich miejsc dla przedsiębiorstw '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Zmień parametry tworzenia map, żeby uzyskać lepsze mapy + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nie można tutaj wybudować stacji... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nie można zbudować przystanku... @@ -4483,8 +4620,8 @@ STR_ERROR_THERE_IS_NO_STATION :{WHITE}...brak STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Należy najpierw usunąć stację kolejową STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Należy najpierw usunąć przystanek autobusowy STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Należy najpierw usunąć stację załadunku ciężarówek -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zniszczyć przystanek tramwajowy -STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zniszczyć tramwajową stację załadunkową +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zburzyć przystanek tramwajowy +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zburzyć tramwajową stację załadunkową STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Należy najpierw usunąć port STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Należy najpierw usunąć lotnisko @@ -4502,19 +4639,19 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boja STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boja w użyciu przez inna firmę! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nie można tutaj wybudować zajezdni... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nie można tutaj wybudować warsztatów kolejowych... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni tramwajowej... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nie można tutaj wybudować stoczni... -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nie można zmienić nazwy zajezdni... +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nie można zmienić nazwy warsztatów... -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w zajezdni +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w hali warsztatów STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w zajezdni samochodowej STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w stoczni STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... musi być zatrzymany w hangarze -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Pociąg może być modyfikowany tylko gdy jest zatrzymany w zajezdni +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Pociąg może być modyfikowany tylko, gdy jest zatrzymany w hali warsztatów STR_ERROR_TRAIN_TOO_LONG :{WHITE}Pociąg jest zbyt długi STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Nie można zawrócić pociągu... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... składa się z wielu jednostek @@ -4522,7 +4659,7 @@ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Niezgodne typy STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nie można ruszyć pojazdem... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Tylna lokomotywa zawsze porusza się razem z przednią -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nie można znaleźć drogi do zajezdni. +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nie można znaleźć drogi do najbliższych warsztatów STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nie można znaleźć zajezdni STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Zły typ zajezdni @@ -4582,6 +4719,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Należy STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nie można zaczynać i kończyć w tym samym miejscu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Początki mostu nie są na tej samej wysokości STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most jest za nisko dla tego terenu +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Most jest zbyt wysoki dla tego terenu. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Początek i koniec muszą być w jednej linii STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... końce mostu muszą znajdować się na lądzie STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... za długi most @@ -4608,33 +4746,34 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... to j STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nie można stworzyć grupy... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nie można usunąć tej grupy... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nie można zmienić nazwy grupy... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nie można ustawić grupy nadrzędnej... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nie można usunąć wszystkich pojazdów z tej grupy... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nie można dodać pojazdu do tej grupy... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nie można dodać pojazdów współdzielących polecenia do grupy... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Pociąg na drodze -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Samochód na drodze +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Pojazd na drodze STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Statek na drodze STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Samolot na drodze STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nie można przebudować pociągu... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nie można przebudować samochodu... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nie można przebudować pojazdu... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nie można przebudować statku... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nie można przebudować samolotu... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nie można zmienić nazwy pociągu... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nie można zmienić nazwy samochodu... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nie można zmienić nazwy pojazdu... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nie można zmienić nazwy statku... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nie można zmienić nazwy samolotu... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nie można zatrzymać/ruszyć pociagu... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nie można zatrzymać/ruszyć samochodu... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nie można zatrzymać/ruszyć pojazdu... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nie można zatrzymać/ruszyć statku... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nie można zatrzymać/ruszyć samolotu... -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nie można wysłać pociągu do zajezdni... -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nie można wysłać samochodu do zajezdni... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nie można wysłać pociągu do warsztatów... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nie można wysłać pojazdu do zajezdni... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nie można wysłać statku do stoczni... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nie można wysłać samolotu do hangaru... @@ -4644,12 +4783,12 @@ STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nie moż STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nie można kupić samolotu... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nie można zmienić nazwy typu pociągu... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nie można zmienić nazwy typu samochodu... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nie można zmienić nazwy typu pojazdu... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nie można zmienić nazwy typu statku... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nie można zmienić nazwy typu samolotu... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nie można sprzedać lokomotywy... -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nie można sprzedać samochodu... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nie można sprzedać pojazdu... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nie można sprzedać statku... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nie można sprzedać samolotu... @@ -4839,7 +4978,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE.d :{G=f}kopalni cu STR_SV_EMPTY : STR_SV_UNNAMED :Bez nazwy STR_SV_TRAIN_NAME :Pociąg {COMMA} -STR_SV_ROAD_VEHICLE_NAME :Samochód {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Pojazd {COMMA} STR_SV_SHIP_NAME :Statek {COMMA} STR_SV_AIRCRAFT_NAME :Samolot {COMMA} @@ -4853,7 +4992,7 @@ STR_SV_STNAME_TRANSFER :{STRING} Transf STR_SV_STNAME_HALT :Przedmieścia {STRING} STR_SV_STNAME_VALLEY :{STRING} Dolina STR_SV_STNAME_HEIGHTS :{STRING} Wzgórza -STR_SV_STNAME_WOODS :{STRING} Las +STR_SV_STNAME_WOODS :{STRING} Podlesie STR_SV_STNAME_LAKESIDE :{STRING} Jezioro STR_SV_STNAME_EXCHANGE :{STRING} Wymiana STR_SV_STNAME_AIRPORT :Lotnisko {STRING} @@ -4879,7 +5018,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parowóz) @@ -5139,20 +5278,20 @@ STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} -STR_FORMAT_BUOY_NAME :{TOWN} Boja -STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boja #{COMMA} +STR_FORMAT_BUOY_NAME :Boja {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Boja {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Grupa {COMMA} -STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} -STR_FORMAT_WAYPOINT_NAME :Pkt. orientacyjny {TOWN} -STR_FORMAT_WAYPOINT_NAME_SERIAL :Pkt. orientacyjny {TOWN} #{COMMA} - -STR_FORMAT_DEPOT_NAME_TRAIN :Zajezdnia w {TOWN} -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Zajezdnia w {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Zajezdnia samochodowa w {TOWN} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Zajezdnia samochodowa w {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :Stocznia w {TOWN} -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Stocznia w {TOWN} #{COMMA} +STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} +STR_FORMAT_WAYPOINT_NAME :Post. {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :Post. {TOWN} #{COMMA} + +STR_FORMAT_DEPOT_NAME_TRAIN :Warsztaty {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Warsztaty {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Zajezdnia samochodowa {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Zajezdnia samochodowa {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :Stocznia {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Stocznia {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangar {STATION} STR_UNKNOWN_STATION :Nieznana stacja @@ -5182,6 +5321,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ukryty) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5217,8 +5357,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5229,9 +5367,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index b11ba44be9..5b2192292d 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -96,7 +96,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Bebidas Gasosas # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passageiro{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passageiro{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de carvão STR_QUANTITY_MAIL :{COMMA} saco{P "" s} de correio STR_QUANTITY_OIL :{VOLUME_LONG} de petróleo @@ -229,6 +229,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Chave de STR_LIST_FILTER_OSKTITLE :{BLACK}Insira uma frase para filtrar por STR_LIST_FILTER_TOOLTIP :{BLACK}Insira uma palavra-chave para filtrar a lista por +STR_TOOLTIP_GROUP_ORDER :{BLACK}Seleccionar ordem de agrupamento STR_TOOLTIP_SORT_ORDER :{BLACK}Seleccione forma de ordenação (descendente/ascendente) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Seleccione critério de ordenação STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Seleccione o critério de filtragem/procura @@ -241,13 +242,24 @@ STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título STR_TOOLTIP_SHADE :{BLACK}Encolher janela - apenas mostra a barra de título STR_TOOLTIP_DEBUG :{BLACK}Mostrar informação de depuração de NewGRF STR_TOOLTIP_DEFSIZE :{BLACK}Reajusta janela para tamanho por defeito. Ctrl+Clique para manter o tamanho actual como o por defeito -STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas' +STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas'. Ctrl+Clique para tambem salvar o estado como por omissão STR_TOOLTIP_RESIZE :{BLACK}Clique e arraste para reajustar janela STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de deslize - desloca a lista para cima/baixo STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de deslize - desloca a lista para a esquerda/direita STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir edifícios, etc. num quadrado de terreno. Ctrl selecciona a área na diagonal. Shift alterna construção/mostrando estimativa de custos +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar escondido +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostrar escondido +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostrar escondido +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostrar escondido + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ao activar este botão, os veículos ferroviários ocultos também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ao activar este botão, os veículos rodoviários ocultos também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ao activar este botão, os navios ocultos também serão exibidos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ao activar este botão, os aviões ocultos também serão exibidos + # Query window STR_BUTTON_DEFAULT :{BLACK}Por Omissão STR_BUTTON_CANCEL :{BLACK}Cancelar @@ -285,6 +297,8 @@ STR_SORT_BY_LENGTH :Comprimento STR_SORT_BY_LIFE_TIME :Tempo de vida restante STR_SORT_BY_TIMETABLE_DELAY :Atraso do horário STR_SORT_BY_FACILITY :Tipo de Estação +STR_SORT_BY_WAITING_TOTAL :Carga total em espera +STR_SORT_BY_WAITING_AVAILABLE :Carga em espera disponível STR_SORT_BY_RATING_MAX :Maior carga STR_SORT_BY_RATING_MIN :Menor carga STR_SORT_BY_ENGINE_ID :EngineID (ordem clássica) @@ -310,6 +324,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostrar STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostrar lista de estações da empresa STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostrar informações financeiras da empresa STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostrar informações gerais da empresa +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostrar livro de história +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostrar lista de objetivos STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostrar gráficos STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostrar tabela de classificação de empresas STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financiar a construção de uma nova indústria @@ -357,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Sair ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opções do Jogo -STR_SETTINGS_MENU_CONFIG_SETTINGS :Opções Avançadas +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Definições STR_SETTINGS_MENU_SCRIPT_SETTINGS :Definições de IA / Scripts de Jogo STR_SETTINGS_MENU_NEWGRF_SETTINGS :Definições NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opções de Transparência @@ -383,6 +399,7 @@ STR_FILE_MENU_EXIT :Sair # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa do mundo STR_MAP_MENU_EXTRA_VIEW_PORT :Visualizador extra +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda de fluxo de carga STR_MAP_MENU_SIGN_LIST :Lista de sinais ############ range for town menu starts @@ -465,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Alternar as cai STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Ligar/Desligar coloração de blocos sujos ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -481,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -669,17 +704,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Contornos STR_SMALLMAP_TYPE_VEHICLES :Veículos STR_SMALLMAP_TYPE_INDUSTRIES :Indústrias +STR_SMALLMAP_TYPE_ROUTEMAP :Fluxo de Carga STR_SMALLMAP_TYPE_ROUTES :Rotas STR_SMALLMAP_TYPE_VEGETATION :Vegetação STR_SMALLMAP_TYPE_OWNERS :Proprietários STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostrar contornos do terreno no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostrar veículos no mapa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostrar indústrias no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostrar fluxo de carga no mapa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostrar rotas de transporte no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostrar vegetação no mapa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostrar proprietários do terreno no mapa STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clique num tipo de indústria para alternar exibi-lo. Ctrl+Clique desativa todos os tipos, exceto a selecionada. Ctrl+Clique novamente para ativar todos os tipos de indústria STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK} Clique em uma empresa para alternar exibindo as suas propriedades. Ctrl+Clique desativa todas as empresas, exceto a selecionada. Ctrl+Clique nele novamente para habilitar todas as empresas +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clique numa carga para alternar exibindo as suas propriedades. Ctrl+Clique desabilita todas as cargas, exceto a selecionada. Ctrl + Clique novamente para ativar todas as cargas STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Estradas STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Caminhos-de-ferro @@ -724,6 +762,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Alternar a disposição do mapa de alturas STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Mostrar propriedades que não sejam de empresas no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostrar todos as propriedades da empresa no mapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Não mostrar cargas no mapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostrar todas as cargas no mapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar a última mensagem ou notícia @@ -800,13 +840,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} está a aguardar no depósito STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} está a aguardar no hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tem poucas ordens no horário STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tem uma ordem nula STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tem ordens duplicadas STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tem uma ordem inválida no seu horário -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está a ficar velho STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está a ficar muito velho @@ -889,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Veículos rodoviários STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Seleccione o lado da estrada por onde os veículos circulam STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Circular pela esquerda @@ -928,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalão STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Guardar automaticamente STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccionar o intervalo para guardar automático +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desactivado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mês STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleccionar o idioma da interface do jogo @@ -944,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resoluç STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Seleccione a resolução do ecrã que deseja utilizar STR_GAME_OPTIONS_RESOLUTION_OTHER :outra -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato da captura de ecrã -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Seleccione o formato de captura de ecrã que deseja utilizar +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamanho interface +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleccionar tamanho do elemento de interface a usar + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobro do tamanho +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quádruplo do tamanho STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Seleccione o conjunto de gráficos base a usar @@ -961,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccio STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ficheiro corrompido{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de música base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Erro ao obter uma lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de ecrã inteiro falhou # Custom currency window @@ -1039,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Muito Plano STR_TERRAIN_TYPE_FLAT :Plano STR_TERRAIN_TYPE_HILLY :Acidentado STR_TERRAIN_TYPE_MOUNTAINOUS :Montanhoso +STR_TERRAIN_TYPE_ALPINIST :Alpinista STR_CITY_APPROVAL_PERMISSIVE :Permissivo STR_CITY_APPROVAL_TOLERANT :Tolerante @@ -1046,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Hostil STR_WARNING_NO_SUITABLE_AI :{WHITE}Não existem IA utilizáveis...{}Pode encontrar IAs disponiveis pelo sistema 'Verificar conteúdo online' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Opções Avançadas +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Definições STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrar frase: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir todas STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsar todas @@ -1060,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Configuração STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Configurações de empresa (guardado; afeta apenas novos jogos) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Configurações de empresa (guardado; afeta apenas a empresa atual) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mostrar: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo para mostrar apenas opções modificadas -STR_CONFIG_SETTING_RESTRICT_BASIC :Opções Básicas -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Opções Avançadas -STR_CONFIG_SETTING_RESTRICT_ALL :Opções Avançadas / Todas as Opções +STR_CONFIG_SETTING_RESTRICT_BASIC :Opções Básicas (mostra apenas definições importantes) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avançado (mostra grande parte das definições) +STR_CONFIG_SETTING_RESTRICT_ALL :Avançado (mostrar todas as definições, incluindo as estranhas) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Opções com um valor diferente das de origem STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Preferências com um valor diferente das preferências para novos jogos STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo para mostrar apenas certos tipos de opções -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todas as configurações +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todo o tipo de configurações STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configuração de cliente (não guardado; afeta todos os jogos) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configuração do jogo (guardado; afeta apenas novos jogos) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configuração do jogo (guardado; afeta apenas jogo atual) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configurações de empresa (guardado; afeta apenas novos jogos) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configurações de empresa (guardado; afeta apenas companhia actual) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostrar todos os resultados de pesquisa por configuração{}{SILVER}Categoria {BLACK}para {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar todos os resultados de pesquisa por configuração{}{SILVER}Tipo {BLACK}para {WHITE}Todos os tipos de configuração +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostrar todos os resultados de pesquisa por configuração{}{SILVER}Categoria {BLACK}para {WHITE}{STRING} {BLACK}e {SILVER}Tipo {BLACK}para {WHITE}Todos os tipos de configuração +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nenhum - STR_CONFIG_SETTING_OFF :Desligado STR_CONFIG_SETTING_ON :Ligado @@ -1095,7 +1142,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Direita STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Valor máximo do empréstimo inicial: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantia máxima que uma companhia pode pedir (sem ter em conta a inflação) STR_CONFIG_SETTING_INTEREST_RATE :Taxa de juro: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taxa de juro do empréstimo; também controla a inflacção se activo +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taxa de juro do empréstimo; também controla a inflacção, se activo STR_CONFIG_SETTING_RUNNING_COSTS :Custos operacionais: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Configurar nível de manutenção e custos operacionais de veículos e infraestrutura STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidade de construção: {STRING} @@ -1109,14 +1156,15 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Configurar o n STR_CONFIG_SETTING_RECESSIONS :Recessões: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se activo, podem ocorrer recessões em intervalos de poucos anos. Durante uma recessão a produção em geral é mais baixa (volta aos níveis anteriores quando termina) STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar inversão de combóios nas estações: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Quando activo, os combóios não podem inverter marcha em estações não-terminais, se existir um caminho mais curto para o destino seguinte com inversão +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Quando activo, os combóios não podem inverter marcha em estações não-terminais, mesmo se existir um caminho mais curto para o destino seguinte com inversão STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa desastres que podem ocasionalmente bloquear ou destruir veículos ou infraestruturas STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da do Concelho Municipal em relação a reestruturação de áreas: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolha quanto ruído e estragos ambientais causados pelas empresas afecta o rating da povoação e futuras acções de construção na área -STR_CONFIG_SETTING_BUILDONSLOPES :Permitir a construção em declives e encostas: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Se ligado, linhas de comboio e estações podem ser construídas na maior parte das inclinações. Se desligado, só são permitidos em inclinações com a mesma direção não necessitando de alicerces +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima do mapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Define altura máxima permitida para montanhas no mapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Pode aumentar a altura máxima do mapa para este valor. Pelo menos uma montanha no mapa é mais alta STR_CONFIG_SETTING_AUTOSLOPE :Permitir formação de terra sob os edifícios, vias, etc. (auto-declive): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permitir formação de terras debaixo de edifícios e linhas sem os remover STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista de áreas de abrangência: {STRING} @@ -1141,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Proibir comboio STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas de 90 graus ocorrem quando uma pista horizontal é directamente seguida por outra vertical num quadrado adjacente, fazendo com que o combóio vire 90 graus quando atravessa a fronteira dos quadrados, ao invés dos habituais 45 graus para outras combinações de pistas. Também se aplica ao raio de curvatura dos navios STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir juntar estações não adjacentes: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permitir adicionar novas partes a uma estação sem tocar nas partes já existentes. Requer pressionar CTRL+click para adicionar as novas partes -STR_CONFIG_SETTING_IMPROVEDLOAD :Usar algoritmo de carregamento melhorado: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Se activo, veículos múltiplos à espera em estações são carregados sequencialmente. O carregamento do veículo seguinte só começa quando existe mercadoria suficiente para encher o primeiro veículo -STR_CONFIG_SETTING_GRADUAL_LOADING :Carregar veículos gradualmente: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Carrega os veículos gradualmente utilizando durações específicas por veículo, em vez de carregar tudo de uma só vez com um tempo fixo que depende apenas da quantidade de mercadoria a carregar STR_CONFIG_SETTING_INFLATION :Inflação: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ativar inflação na economia, para que os preços subam ligeiramente mais rápido do que os pagamentos -STR_CONFIG_SETTING_SELECTGOODS :Entregar carga a uma estação só quando houver procura: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Apenas entrega mercadoria a uma estação que foi pedida a um veículo em carga. Previne ratings negativos para mercadorias que não são entregues numa estação STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Tamanho máximo de ponte: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Tamanho máximo para construção de pontes +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de ponte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima para construir pontes 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} @@ -1176,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local onde um c STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :no extremo perto STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :no meio STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :no extremo longe -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Fila de veículos rodoviários (com efeitos de quantidade): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Fazer com que os veículos rodoviários esperem até que as estradas bloqueadas sejam desocupadas STR_CONFIG_SETTING_AUTOSCROLL :Deslocar janela quando o rato está na borda do mapa: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quando activo, os visualizadores começam a deslocar-se logo que o rato esteja no extremo da janela STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desligado @@ -1208,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estaç STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construção de paragens drive-through em ruas que são prorpiedade das povoações STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir estações de passagem em estradas do adversário: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construção de paragens drive-through em ruas que são prorpiedade de outras companhias -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permitir construção de estações adjacentes: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permitir que estações diferentes se toquem -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Utilizar múltiplos conjuntos NewGRF de veículos: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opção de compatibilidade com NewGRFs antigos. Não desactive se não sabe exactamente o que está a fazer. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Não é possível mudar quando já existem veículos. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenção de infraestruturas: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quando activo, as infraestruturas têm custos de manutenção. O custo cresce mais do que proporcionalmente com o tamanho da rede e com isso afecta mais as companhias maiores comparado com as mais pequeneas @@ -1242,8 +1280,8 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da me STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duração da visualização de mensagens de erro em janela vermelha. Note que algumas mensagens de erro (críticas) não são fechadas após este tempo e têm que ser fechadas manualmente STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} segundo{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Mostrar textos de ajuda: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Atraso após o qual os textos de ajuda são mostrados após parar o cursor sobre algum elemento da interface. Alternativamente, os textos de ajuda podem ser mostrados com o botão direito do rato -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Parar o rato por {COMMA} segundo{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Atraso após o qual os textos de ajuda são mostrados após parar o cursor sobre algum elemento da interface. Alternativamente, os textos de ajuda podem ser mostrados com o botão direito do rato quando este valor está definido como 0 +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Parar o rato por {COMMA} milisegundo{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Clique com botão direito STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra população da cidade na janela da cidade: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mostrar a população das povoações na sua etiqueta no mapa @@ -1253,24 +1291,34 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Largura da linh STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de terra: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo de terreno: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade industrial: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas indústrias devem ser geradas e que nível deve ser mantido durante o jogo STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distância máxima entre o limite do mapa e Refinarias de Petróleo: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias de petróleo são construídas apenas próximo da borda do mapa, isto é, na costa para mapas de ilha STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altura a neve começa em paisagens sub-árticas. A neve também afecta a geração de indústrias e os requisitos de crescimento das cidades STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rudeza do terreno (apenas TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Apenas TerraGenesis) Escolhe a frequência de montes: paisagens macias têm menos montes e mais espalhados. Paisagens duras têm muitos montes, que podem parecer repetitivos STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Acidentado STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muito acidentado +STR_CONFIG_SETTING_VARIETY :Distribuição de variedade: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Apenas TerraGenesis) Controla se o mapa contém áreas planas e montanhosas. Como isto apenas torna o mapa mais plano, outras definições devem ser definidas como montanhosas +STR_CONFIG_SETTING_RIVER_AMOUNT :Quantidade de rios: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolhe quantos rios serão gerados STR_CONFIG_SETTING_TREE_PLACER :Algoritmo de colocação de árvores: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Escolhe a distribuição de árvores no mapa: 'Original' planta árvores espalhadas uniformemente, 'Melhorado' planta-as em grupos STR_CONFIG_SETTING_TREE_PLACER_NONE :Nenhum STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Melhorada +STR_CONFIG_SETTING_ROAD_SIDE :Veículo rodoviários: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Escolhe o lado de condução STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação mapa de alt.: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sentido anti-horário STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Sentido horário STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altura com que um cenário plano fica: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Activar formação de terra nas bordas do mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Se desligado, as bordas do mapa serão sempre oceano STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Um ou mais quadrados no canto norte não estão vazios STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Um ou mais quadrados num dos cantos não é água @@ -1321,17 +1369,15 @@ 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_AUTOSAVE :Guardar automaticamente: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleccione o intervalo entre gravações automáticas + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Usar formato de data {STRING} para jogos gravados. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato da data nos ficheiros de jogos gravados STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longo (31 Dez 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta predefinida para NewGRFs que não especificam paleta: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Palete a usar por omissão para NewGRFs que não especifiquem qual necessitam -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Palete DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Palete Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausa automática ao iniciar um novo jogo: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quando activo, o jogo ficará em pausa automaticamente num novo jogo, permitindo o estudo ao pormenor do mapa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Durante pausa permitir: {STRING} @@ -1369,7 +1415,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reproduzir efei STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fim do ano: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproduzir efeito sonoro ao fim do ano que resume a performance da empresa em comparação com o ano anterior STR_CONFIG_SETTING_SOUND_CONFIRM :Construção: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproduzir efeito sonoro de construções e outras acções bem sucedidas +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproduzir efeito sonoro nas construções ou outras acções bem sucedidas STR_CONFIG_SETTING_SOUND_CLICK :Cliques de botões: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Reproduzir um bip quando botões são clicados STR_CONFIG_SETTING_SOUND_DISASTER :Desastres/acidentes: {STRING} @@ -1377,7 +1423,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Reproduzir efei STR_CONFIG_SETTING_SOUND_VEHICLE :Veículos: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Reproduzir efeitos sonoros dos veículos STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiente: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproduzir efeitos sonoros ambiente do mapa, indústrias e cidades +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproduzir efeitos sonoros da paisagem, indústrias e cidades STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desativar construção de infra-estrutura quando não estão disponíveis veículos adequados: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Quando activo, as infraestruturas só estão disponíveis se os veículos estiverem também, prevenindo desperdícios de tempo e dinheiro em infraestruturas sem utilidade. @@ -1454,7 +1500,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostrar mensage STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novos veículos: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostrar um jornal quando é disponibilizado um tipo de veículo novo STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Alterações de aceitação de carga: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostrar um jornal quando é alterada a aceitação de carga de estações +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Exibir mensagens sobre as estações alterarem a aceitação de algumas cargas STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsídios: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Mostrar um jornal para acontecimentos relacionados com subsídios STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informações gerais: {STRING} @@ -1481,7 +1527,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Seleccionar o c STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Usar automaticamente sinais clássicos antes de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Configurar o ano em que sinais eléctricos podem ser usados para os carris. Antes deste ano, sinais não-eléctricos serão usados (que têm a mesma funcionalidade, mas aspecto diferente) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activar ferramenta de sinais: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Mostrar uma janela para escolher o tipo de sinais a construir, em vez de escolher a rotação de sinais com +clique em sinais +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Mostrar uma janela para escolher o tipo de sinais a construir, em vez de escolher a rotação de sinais com Ctrl+clique em sinais construídos STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipo de farol padrão para construir: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipo de sinal a usar por omissão STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Sinais de bloqueio @@ -1553,57 +1599,78 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 em {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenhum STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial para dimensão da metrópole: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamanho relativo das cidades em relação ao tamanho normal das mesmas aquando o inicio do jogo -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remover partes absurdas durante a constr. de estradas: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remover blocos de estrada sem ligação aquando do financiamento de reconstrução +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualizar gráfico de distribuição a cada {STRING} dia{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tempo entre recalculos subsequentes de cada gráfico. Cada recalculo calcula os planos para cada componente do gráfico. Isto significa que um valor X para essa configuração não indica que o gráfico será todo actualizado a cada X dias. Apenas alguns componentes serão. Quanto mais curto o definir, mais tempo será necessário ao CPU para o calcular. Quanto mais longo, mais tempo levará até que a distribuição da carga inicie em novas rotas. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Requer {STRING} dia{P 0:2 "" s} para recalculo do gráfico de distribuição +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tempo para cada recalculo de um componente de um gráfico. Quando um recalculo começa, um processo é criado e é executado para esse número de dias. Quantos menos dias forem definidos, maior a probabilidade do processo não terminar quando já deveria ter terminado. Neste caso, o jogo irá parar até ele terminar ("lag"). Quanto maior o definir, mais tempo levará para a distribuição ser actualizada quando as rotas mudarem. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrico STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrico - +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribuição para os passageiros: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simétrico" significa que aproximadamente o mesmo numero de passageiros irá de uma estação A para estação B e de B para A. "assimétrico" significa que um numero arbitrário de passageiros poderá seguir em qualquer direcção. "manual" significa que nenhuma distribuição automática terá lugar para passageiros. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribuição para o correio: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simétrico" significa que aproximadamente a mesma quantidade de correio será enviada de uma estação A para estação B assim como de B para A. "assimétrico" significa que uma quantidade arbitrária de correio poderá ser enviada em qualquer direcção. "manual" significa que nenhuma distribuição automática terá lugar para o correio. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribuição para a classe de carga ARMOURED: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe de carga ARMOURED contém valores no clima temperado, diamantes no tropical ou ouro no árctico. Os NewGRFs podem mudar isto. "simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para estação B assim como da B para a A. "assimétrico" significa que quantidades arbitrárias dessa carga podem ser enviadas em qualquer direcção. "manual" significa que nenhuma distribuição automática ocorrerá para essa carga. Recomenda-se que seja definido para assimétrico ou manual quando a jogar no árctico, pois os bancos não devolvem ouro para as minas de ouro. Para o temperado e tropical pode ser escolhido simétrico pois os bancos irão devolver valores ao banco de origem de algumas cargas de valores. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribuição para outras classes de carga: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simetrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para estação B assim como da B para a A. "asimetrico" significa que o arbitrario dessa carga pode ser enviada em qualquer direção. "manual" significa que nenhuma distribuição automática ocorrerá para essa carga. Provavelmente será melhor definir como "assimétrico" ou manual. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisão de distribuição: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto mais alto o definir, mais tempo o CPU demorará a calcular o gráfico de ligações. Se demorar muito poderá notar-se algum lag. Se no entanto for definido um valor reduzido a distribuição será imprecisa, e poderá verificar cargas não serem entregues onde seriam esperadas. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito de distância nos pedidos: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se definir para um valor maior que 0, a distância entre a estação de origem A para alguma carga e um possível destino B terá um efeito na quantidade de carga transportada de A para B. Quanto maior a distância de B para A, menos carga será enviada. Quanto maior o valor definido, menos carga será transportada para estações distantes, e mais carga será levada para estações próximas. +STR_CONFIG_SETTING_DEMAND_SIZE :Quantidade de carga a regressar para o modo simétrico: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isto para menos de 100% torna a distribuição simétrica reagir mais como a assimétrica. Menos carga será forçada a ser devolvida se uma determinada quantidade for enviada para uma estação. Se for definido para 0% a distribuição simétrica irá reagir como a assimétrica. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de percursos curtos antes de usar percursos de grande capacidade: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente existem múltiplos trajectos entre duas estações. Cargodist irá saturar o trajecto mais curto primeiro, depois usar o segundo trajecto mais curto até o saturar, e assim por diante. A saturação é determinada pelo estimativa da capacidade do uso planeado. Ao saturar todos os caminhos, se ainda existir procura, irá sobrecarregar todos os trajectos, com preferência pelos de maior capacidade. No entanto, grande parte das vezes o algoritmo não irá estimar correctamente a capacidade. Esta configuração permite definir até que percentagem um trajecto mais curto deverá ser saturado na primeira passagem antes do algoritmo proceder ao próximo. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade super-estimada. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidade: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Quando uma velocidade é mostrada no interface de utilizador, mostrar na unidade selecionada STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Métrico (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidades de potência de veículos: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Quando a potência de um veículo é mostrada no interface de utilizador, mostrar na unidade seleccionada STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unidades de peso: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Quando os pesos são mostrados no interface de utilizador, mostrar na unidade seleccionada STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrico (t/tonelada) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unidades de volume: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Quando os volumes são mostrados no interface de utilizador, mostrar na unidade seleccionada STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esforço de tracção: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quando a força de tracção é mostrada no interface de utilizador, mostrar na unidade seleccionada STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unidades de altura: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quando as alturas são mostradas no interface de utilizador, mostrar na unidade seleccionada STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft/pé) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localização -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construção +STR_CONFIG_SETTING_SOUND :{ORANGE}Efeitos sonoros +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construção STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veículos -STR_CONFIG_SETTING_STATIONS :{ORANGE}Estações -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economia +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Em rota +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Cidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuição de Carga STR_CONFIG_SETTING_AI :{ORANGE}Oponentes -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opções de visualização -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacção -STR_CONFIG_SETTING_SOUND :{ORANGE}Efeitos sonoros -STR_CONFIG_SETTING_NEWS :{ORANGE}Notícias e mensagens -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinais -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Manipulação de carga STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jogadores computador -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Auto-renovação -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Em serviço -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Em rota -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Comboios -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Cidades -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1637,6 +1704,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... a ignorar conjunto de Gráficos Base '{STRING}': não encontrado STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... a ignorar conjunto Base de Sons '{STRING}': não encontrado STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... a ignorar conjunto Musica Base '{STRING}': não encontrado +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Falta de memória +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Falha a alocar {BYTES} da cache de sprites. a cache de sprites foi reduzida para {BYTES}. Isto irá reduzir a performance do OpenTTD. Para baixar os requisitos de memória poderá desabilitar gráficos de 32bpp e/ou niveis de zoom # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1650,7 +1719,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multi-jo STR_INTRO_GAME_OPTIONS :{BLACK}Opções do Jogo STR_INTRO_HIGHSCORE :{BLACK}Tabela de Classificações -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Opções Avançadas +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Definições STR_INTRO_NEWGRF_SETTINGS :{BLACK}Definições NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Verificar Conteúdo Online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Definições de IA / Script de Jogo @@ -1670,7 +1739,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Seleccio STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Mostrar opções de jogo STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostrar tabela de classificações -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostrar opções avançadas +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Definições de Display STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostrar definições de NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Verificar conteúdo novo e actualizado para descarga STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostrar definições de IA e de script de jogo @@ -1710,6 +1779,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer mágico (destrói indústrias, objectos amovíveis etc.): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Os túneis poderão cruzar-se: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Aviões a jacto não irão ter acidentes (frequentes) em aeroportos pequenos: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Editar altura máxima do mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Editar altura máxima de montanhas no mapa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Terreno temperado STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Terreno subárctico STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Terreno subtropical @@ -1758,6 +1829,7 @@ STR_LIVERY_FREIGHT_TRAM :Eléctrico de M STR_FACE_CAPTION :{WHITE}Selecção de Cara STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancelar selecção da nova cara STR_FACE_OK_TOOLTIP :{BLACK}Aceitar selecção da nova cara +STR_FACE_RANDOM :{BLACK}Gerar aleatório STR_FACE_MALE_BUTTON :{BLACK}Masculino STR_FACE_MALE_TOOLTIP :{BLACK}Seleccionar caras masculinas @@ -1813,6 +1885,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mudar gr # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multi-jogador +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Anunciado +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Escolher entre jogo público (internet) e privado (Área de Rede Local, LAN) STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Não STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Sim STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nome do jogador: @@ -1995,6 +2069,7 @@ STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Insira a quantidade de dinheiro que pretende dar +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Espectador # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não gravar a palavra-chave introduzida @@ -2113,6 +2188,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. act STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcar todo o conteúdo que seja actualização ao conteúdo existente a ser descarregado STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Desseleccionar tudo STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcar todo o conteúdo que não deva ser descarregado +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pesquisar sites externos +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Escolher conteudo não disponivel no serviço de conteúdo do OpenTTD em sites não associados ao OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Está a sair do OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condições para o download de conteúdo de sites externos variam.{}Terá que se referir aos sites externos para instruções em como instalar o conteúdo no OpenTTD.{}Pretende continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Filtrar por etiqueta/nome: STR_CONTENT_OPEN_URL :{BLACK}Visitar a página web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar a página web para este conteúdo @@ -2183,11 +2262,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Alterar STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Definir objectos como invisíveis em vez de transparentes # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda de Fluxo de Carga STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todos STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nenhuma STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecione as companhias a serem mostradas # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}não usado +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturado +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}sobrecarregado # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Exibir área de cobertura @@ -2216,11 +2299,11 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito ferroviário (para compra e manutenção de comboios). Shift alterna contruir/mostrar custo estimado STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Converter linha em ponto de controlo. Ctrl permite juntar pontos de controlo. Shift alterna contruir/mostrar custo estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estação ferroviária. Ctrl permite juntar estações. Shift alterna contruir/mostrar custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna entre s. clássicos/luminosos{}Arrastar constrói sinais numa linha de caminho-de-ferro. Ctrl constrói sinais até a próxima junção{}Ctrl+Clique alterna entre abrir a janela de selecção de sinais. Shift alterna contruir/mostrar custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna entre sinais clássicos/luminosos{}Arrastar constrói sinais ao longo de uma linha recta de carris. Ctrl constrói sinais até a próxima junção ou sinal{}Ctrl+Clique alterna entre abrir a janela de selecção de sinais. Shift alterna contruir/mostrar custo estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir ponte ferroviária. Shift alterna contruir/mostrar custo estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviário. Shift alterna contruir/mostrar custo estimado STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alternar entre construir/remover linha férrea, sinais, pontos de passagem e estações. Fixar o Ctrl também remove a linha férrea de pontos de passagem e estações -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converter/Actualizar tipo de linha. Shift alterna contruir/mostrar custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converter/Atualizar tipo de linha. Shift alterna contruir/mostrar custo estimado STR_RAIL_NAME_RAILROAD :Caminhos-de-ferro STR_RAIL_NAME_ELRAIL :Caminhos-de-ferro elétricos @@ -2491,6 +2574,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceite: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {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} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas @@ -2587,7 +2671,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-2013 A equipa do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 A equipa do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo @@ -2606,6 +2690,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Guardar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Guardar o jogo actual, usando o nome escolhido STR_SAVELOAD_LOAD_BUTTON :{BLACK}Carregar STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carregar o jogo selecionado +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carregar mapa de alturas seleccionado STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalhes do Jogo STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma informação disponível STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2616,17 +2701,17 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Introduz # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Gerador de Mapas STR_MAPGEN_MAPSIZE :{BLACK}Dim. do mapa: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Seleccionar o tamanho do mapa em mosaicos. O numero de mosaicos disponiveis será ligeiramente menor STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Num. de cidades: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Num. de indústrias: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altura máxima do mapa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumentar altura máxima das montanhas no mapa em um +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Diminuir altura máxima das montanhas no mapa em um STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altura linha neve: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mover a linha de neve um nível acima STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mover a linha de neve um nível abaixo -STR_MAPGEN_RANDOM_SEED :{BLACK}Semente aleatória: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Clique para inserir uma semente aleatória -STR_MAPGEN_RANDOM :{BLACK}Gerar aleatório -STR_MAPGEN_RANDOM_HELP :{BLACK}Mudar a semente aleatória para a criação do terreno STR_MAPGEN_LAND_GENERATOR :{BLACK}Criação do terreno: STR_MAPGEN_TREE_PLACER :{BLACK}Alg. de colocação de árvores: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno: @@ -2653,7 +2738,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome map STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamanho: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Insira um número aleatório de base +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Mudar altura máxima do mapa STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mudar a altura da linha de neve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar ano de início @@ -2708,12 +2793,14 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Para Cim STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move o ficheiro NewGRF seleccionado para cima na lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Para Baixo STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move o ficheiro NewGRF seleccionado para baixo na lista +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualiza +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Actualiza ficheiros NewGRF para os quais tens uma versão mais recente instalada STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Uma lista dos ficheiros NewGRF que estão instalados STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Definir parâmetros -STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parametros -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Alternar palete -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Alterna a palete do NewGRF seleccionado.{}Alterne quando os gráficos deste NewGRF aparecerem a cor-de-rosa no jogo +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parâmetros +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Alternar paleta +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Alterna a paleta do NewGRF seleccionado.{}Alterne quando os gráficos deste NewGRF aparecerem a cor-de-rosa no jogo STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplicar alterações STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Encontrar conteúdo em falta online @@ -2724,7 +2811,7 @@ STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versão: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Versão mínima compatível: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palete: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parâmetros: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Sem informação disponível @@ -2732,6 +2819,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ficheiro c STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatível com esta versão do OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Gravar predefinição +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecciona uma para a copiar para o nome da gravação abaixo +STR_SAVE_PRESET_TITLE :{BLACK}Intriduza um nome para a predefinição +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome seleccionado actualmente para gravação da predefinição +STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar +STR_SAVE_PRESET_CANCEL_TOOLTIP :Não mudar a predefinição +STR_SAVE_PRESET_SAVE :{BLACK}Grava +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Grava a predefinição com o nome seleccionado + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fechar @@ -2762,7 +2859,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Gráfico STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceder ao gráfico normal anterior, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no início STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do gráfico seleccionado actualmente. O alinhamento é ignorado a desenhar este gráfico STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover o gráfico, mudando os desvios X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desvio X: {NUM}, Desvio Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Escolher gráfico STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Escolha um gráfico de qualquer lado no ecrã @@ -2802,6 +2898,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vai alt STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Impossível adicionar ficheiro: GRF ID duplicado STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ficheiro correspondente não encontrado (GRF compatível carregado) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Impossivel adicionar ficheiro: alcançado limite de ficheiros NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatíveis carregados para ficheiros em falta STR_NEWGRF_DISABLED_WARNING :{WHITE}Ficheiro(s) GRF em falta foram desactivados @@ -2818,6 +2915,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Faltam fic STR_NEWGRF_BROKEN :{WHITE}O comportamento do NewGRF '{0:STRING}' pode causar dessincronizações e/ou outros problemas. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Mudou o estado electrificado do modelo de vagão '{1:ENGINE}' quando fora do depósito. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Modifica o comprimento do veículo para '{1:ENGINE}' quando fora do depósito. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Mudou a capacidade do veículo para '{1:ENGINE}' quando não estiver no interior do depósito ou em adaptação STR_BROKEN_VEHICLE_LENGTH :{WHITE}O Comboio '{VEHICLE}' pertencente a '{COMPANY}' tem um comprimento inválido. Possivelmente devido a problemas com os novos NewGRFs. Podem ocorrer erros de sincronização e a aplicação pode terminar. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' fornece informação incorrecta @@ -2832,6 +2930,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Procurar NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Procurar NewGRFs. Dependendo da quantidade, isto pode demorar algum tempo... @@ -2930,7 +3031,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informação STR_GOAL_QUESTION_CAPTION_WARNING :Aviso STR_GOAL_QUESTION_CAPTION_ERROR :Erro -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar STR_GOAL_QUESTION_BUTTON_OK :Confirmar STR_GOAL_QUESTION_BUTTON_NO :Não @@ -2949,6 +3050,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Reiniciar STR_GOAL_QUESTION_BUTTON_POSTPONE :Adiar STR_GOAL_QUESTION_BUTTON_SURRENDER :Render-se STR_GOAL_QUESTION_BUTTON_CLOSE :Fechar +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsídios @@ -2960,12 +3062,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique num serviço para centrar a visualização numa indústria/cidade. Ctrl+Clique abre um novo visualizador na localização da indústria/cidade # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Livro de História +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Livro de História Global STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página nº {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Saltar para uma pagina especifica escolhendo-a nesta lista. STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir para a página anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Próxima STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir para a próxima página +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referência de objectivos inválida # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nome da estação - clique no nome para centrar a visualização na estação. Ctrl+Clique abre um novo visualizador na localização da estação @@ -2980,9 +3086,9 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nenhuma # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Em espera: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} -STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} em rota de {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} de {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para carregamento) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceita STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de carga aceite @@ -2997,12 +3103,27 @@ STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Abasteci STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Agrupar por +STR_STATION_VIEW_WAITING_STATION :Estação: A aguardar +STR_STATION_VIEW_WAITING_AMOUNT :Quantidade: A aguardar +STR_STATION_VIEW_PLANNED_STATION :Estação: Planeado +STR_STATION_VIEW_PLANNED_AMOUNT :Quantidade: Planeado STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} de {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} para {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} de estação desconhecida +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} para qualquer estação +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via qualquer estação +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} desta estação +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} a parar nesta estação STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} para esta estação STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sem parar +STR_STATION_VIEW_GROUP_S_V_D :Fonte-Via-Destino +STR_STATION_VIEW_GROUP_S_D_V :Fonte-Destino-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Fonte-Destino +STR_STATION_VIEW_GROUP_V_D_S :Via-Destino-Fonte +STR_STATION_VIEW_GROUP_D_S_V :Destino-Fonte-Via +STR_STATION_VIEW_GROUP_D_V_S :Destino-Via-Fonte ############ range for rating starts STR_CARGO_RATING_APPALLING :Inexistente @@ -3145,6 +3266,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produç STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportado) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização da indústria. Ctrl+Clique abre um novo visualizador na localização da indústria STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nível de produção: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A indústria anunciou encerramento iminente! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING} @@ -3213,6 +3335,8 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Remover STR_GROUP_RENAME_TOOLTIP :{BLACK}Mudar o nome do grupo seleccionado STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para proteger este grupo da autosubstituição global +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Apagar Grupo + STR_GROUP_ADD_SHARED_VEHICLE :Adic. veíc. partilh. STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos @@ -3252,7 +3376,7 @@ STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: 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 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de barcos - clique num barco para informações +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selecção de navios. Clique num navio para informações. Ctrl+Clique para alternar/ocultar o tipo de navio STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de aeronaves - clique na aeronave para informações STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar Veículo @@ -3275,6 +3399,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renomear STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renomear tipo de barco STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renomear tipo de aeronave +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Esconder +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Esconder +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Esconder +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Esconder + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar o tipo de veículo ferroviário +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar o tipo de veículo rodoviário +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Define mostrar/esconder tipo de barco +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Define mostrar/esconder tipo de aeronave + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renomear tipo de veículo ferroviário STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renomear tipo de veículo rodoviário STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renomear tipo de barco @@ -3328,7 +3467,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonar V STR_DEPOT_CLONE_SHIP :{BLACK}Clonar Barco STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar Aeronave -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um comboio, incluindo as carruagens. Clique neste botão e, de seguida, num comboio que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um comboio, incluindo todas as carruagens. Clique neste botão e, de seguida, num comboio que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um veículo rodoviário. Clique neste botão e, de seguida, num veículo que se encontre dentro ou fora de um depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um barco. Clique neste botão e, de seguida, num barco que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esta acção comprará uma cópia de uma aeronave. Clique neste botão e, de seguida, numa aeronave que se encontre dentro ou fora do hangar. Ctrl+Clique ira partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar @@ -3379,6 +3518,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Veículo rodovi STR_REPLACE_VEHICLE_SHIP :Barco STR_REPLACE_VEHICLE_AIRCRAFT :Aeronave +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Veículos em utilização +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Coluna com veículos que possui +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Veículos disponiveis +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Coluna com veículos disponíveis para substituição + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Seleccione o tipo de motor a substituir STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Seleccione o novo tipo de motor para substituir o que seleccionou à esquerda @@ -3508,6 +3652,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Aumentar o intervalo de serviço por 10. Ctrl+Clique aumenta o intervalo de serviço por 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Diminuir intervalo de serviço por 10. Ctrl+Clique diminui o intervalo de serviço por 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Alterar tipo de intervalo de manutenção STR_VEHICLE_DETAILS_DEFAULT :Por Defeito STR_VEHICLE_DETAILS_DAYS :Dias STR_VEHICLE_DETAILS_PERCENT :Percentagem @@ -3747,6 +3892,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este hor STR_TIMETABLE_STATUS_START_AT :{BLACK}Este horário começa a {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data de início +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleccionar uma data como ponto de partida deste horário. Ctrl+Clique define o ponto de partida deste horário e distribui uniformemente todos os veiculos partilhando esta ordem pela sua ordem relativa, se a ordem for completamente calendarizada STR_TIMETABLE_CHANGE_TIME :{BLACK}Mudar Tempo STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muda o espaço de tempo que a ordem seleccionada deve durar @@ -3768,7 +3914,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Preenche STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Marcado -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alterne entre tempo esperado e marcado +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar entre tempo esperado e marcado STR_TIMETABLE_ARRIVAL_ABBREVIATION :C: STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: @@ -3860,6 +4006,8 @@ STR_AI_SETTINGS_START_DELAY :Número de dias STR_TEXTFILE_README_CAPTION :{WHITE}Leiame {STRING} de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Lista de alterações {STRING} de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licença {STRING} de {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Envolver o texto +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Envolve o texto da janela de forma que não é necessário deslizar listagem STR_TEXTFILE_VIEW_README :{BLACK}Ver leia-me STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Lista de alterações STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licença @@ -3882,6 +4030,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Lucro: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transferir: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Custo Estimado: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Lucro Estimado: {CURRENCY_LONG} @@ -3966,6 +4118,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... já está ao nível do mar STR_ERROR_TOO_HIGH :{WHITE}... demasiado alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... já plano +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Ponte acima seria demasiado alta. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Não é possível alterar o nome da empresa... @@ -4016,6 +4169,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... a fl STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... só se pode construir acima da linha da neve STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só se pode construir abaixo da linha da neve +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Não foram encontrados locais adequados para '{STRING}' indústrias +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Altera os parâmetros de geração do mapa para obter um mapa melhor + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Não é possível construir estação ferroviária aqui... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Não é possível construir estação de autocarros... @@ -4152,6 +4308,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Deverá STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Não é possível iniciar e finalizar no mesmo ponto STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Extremos da ponte não estão ao mesmo nível STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponte muito baixa para o terreno +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Ponte é demasiado alta para este terreno. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Início e fim devem estar alinhados STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambos os extremos da ponte devem estar em terra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte demasiado longa @@ -4178,6 +4335,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... já STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossível criar grupo... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossível remover este grupo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossível renomear o grupo... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Não é possível definir grupo parente... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Não é possível remover todos os veículos deste grupo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossível adicionar o veículo a este grupo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Impossível adicionar veículos com ordens partilhadas ao grupo... @@ -4233,6 +4391,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Não é STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... o veículo está destruido +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nenhum veículo estará disponível +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a sua configuração NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nenhum veículo ainda disponível +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Começar um novo jogo depois de {DATE_SHORT} ou utilizar um NewGRF que forneça veículos iniciais # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Não é possível fazer o comboio passar o sinal com perigo... @@ -4382,7 +4544,7 @@ STR_SV_STNAME_TRANSFER :{STRING} Transp STR_SV_STNAME_HALT :Paragem de {STRING} STR_SV_STNAME_VALLEY :Vale de {STRING} STR_SV_STNAME_HEIGHTS :Montes de {STRING} -STR_SV_STNAME_WOODS :Floresta de {STRING} +STR_SV_STNAME_WOODS :Bosque de {STRING} STR_SV_STNAME_LAKESIDE :Lago de {STRING} STR_SV_STNAME_EXCHANGE :Intercâmbio de {STRING} STR_SV_STNAME_AIRPORT :Aeroporto de {STRING} @@ -4408,7 +4570,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor) @@ -4617,7 +4779,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Barco de Passag STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Barco de Passageiros Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Barco de Mercadorias Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Barco de Mercadorias Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco de Mercadorias Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco de Mercadorias MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Barco de Mercadorias Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4711,6 +4873,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (escondido) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4746,8 +4909,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4758,9 +4919,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 5208ba4b00..fef8733955 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}cp STR_UNITS_POWER_METRIC :{COMMA}cp STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P ă e} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P ă e} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galo{P n ane} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P u i} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kgf STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -221,6 +228,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtru: STR_LIST_FILTER_OSKTITLE :{BLACK}Filtru STR_LIST_FILTER_TOOLTIP :{BLACK}Introduceți un cuvânt-cheie pentru filtrarea listei +STR_TOOLTIP_GROUP_ORDER :{BLACK}Selectează ordinea de grupare STR_TOOLTIP_SORT_ORDER :{BLACK}Alegeți ordinea de sortare (ascendentă/descendentă) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Alegeți criteriul de sortare STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Alegeți criteriul de filtrare @@ -233,13 +241,24 @@ STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul f STR_TOOLTIP_SHADE :{BLACK}Minimizează fereastra - Afișează doar bara de titlu STR_TOOLTIP_DEBUG :{BLACK}Arată informații depanare NewGRF STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionează fereastra la dimensiunea standard. Ctrl+Click pentru a surprascrie dimensiunea standard cu dimensiunea curentă -STR_TOOLTIP_STICKY :{BLACK}Previne închiderea acestei ferestre de către tasta 'Închide toate ferestrele' +STR_TOOLTIP_STICKY :{BLACK}Marchează ca această fereastră să nu fie închisă de tasta "Închide toate ferestrele". Ctrl+Click pentru a salva starea ca implicită STR_TOOLTIP_RESIZE :{BLACK}Apasă și trage pentru redimensionarea ferestrei STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Comutator pentru dimensiunea ferestrei STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bara de defilare - defilează în listă sus/jos STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bara de defilare - stânga/dreapta STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolează clădiri, străzi, etc. pe un pătrățel de teren. Ctrl pentru selectare pe diagonală. Shift comută construcție/estimare cost +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Arată ascunse + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Activând acest buton, și trenurile vor fi afișate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Activând acest buton, și autovehiculele vor fi afișate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Activând acest button, și vapoarele ascunse vor fi afișate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Activând acest buton, și aeronavele ascunse vor fi afișate + # Query window STR_BUTTON_DEFAULT :{BLACK}Prestabilit(e) STR_BUTTON_CANCEL :{BLACK}Anulează @@ -277,6 +296,8 @@ STR_SORT_BY_LENGTH :Lungime STR_SORT_BY_LIFE_TIME :Durată de viaţă rămasă STR_SORT_BY_TIMETABLE_DELAY :Întârzieri STR_SORT_BY_FACILITY :Tipul staţiei +STR_SORT_BY_WAITING_TOTAL :Încărcătură totală în aşteptare +STR_SORT_BY_WAITING_AVAILABLE :Încărcătură disponibilă în aşteptare STR_SORT_BY_RATING_MAX :Cel mai mare rating STR_SORT_BY_RATING_MIN :Cel mai mic rating STR_SORT_BY_ENGINE_ID :IDMotor (model clasic) @@ -285,10 +306,11 @@ STR_SORT_BY_POWER :Putere STR_SORT_BY_TRACTIVE_EFFORT :Efort tractor STR_SORT_BY_INTRO_DATE :Data lansării STR_SORT_BY_RUNNING_COST :Cost exploatare -STR_SORT_BY_POWER_VS_RUNNING_COST :Cost exploatare/putere +STR_SORT_BY_POWER_VS_RUNNING_COST :Putere/Cost exploatare STR_SORT_BY_CARGO_CAPACITY :Capacitate încărcătură STR_SORT_BY_RANGE :Raza de acțiune STR_SORT_BY_POPULATION :Populaţia +STR_SORT_BY_RATING :Cotaţie # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauză joc @@ -301,6 +323,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Afişeaz STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Afişează lista cu staţiile companiei STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Afişează informaţiile financiare ale companiei STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Afişează date generale despre companie +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Afişează cartea de poveste +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Afişează lista de scopuri STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Afişează grafice STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Afişează clasamentul companiilor STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Listează sau fondează obiectivele industriale @@ -348,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Ieşire din joc ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opţiunile jocului -STR_SETTINGS_MENU_CONFIG_SETTINGS :Setări avansate +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Setări STR_SETTINGS_MENU_SCRIPT_SETTINGS :Setări IA / Script Joc STR_SETTINGS_MENU_NEWGRF_SETTINGS :Setări NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opţiuni transparenţă @@ -457,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Afişează/ascu STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Comutator pentru colorarea secțiunilor murdare ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -473,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -708,6 +750,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Comutator pentru afișarea numele oraşelor pe hartă STR_SMALLMAP_CENTER :{BLACK}Centrează harta mică la poziţia actuală STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Dezactivează toate @@ -796,13 +839,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în depou STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} are prea puţine ordine în program STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nu are nici un ordin STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} are ordine duplicate STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} are o staţie invalidă în ordine -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} este vechi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} este foarte vechi @@ -881,12 +922,10 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanian STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-corean (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-african (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizată... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgian (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranian (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autovehiculele circulă... STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Alege partea străzii pe care se circulă STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Pe partea stângă @@ -922,11 +961,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalană STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvare automată STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Alege intervalul de timp dintre salvările automate +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dezactivată STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :În fiecare lună STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :La fiecare 3 luni STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :La fiecare 6 luni STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :La fiecare 12 luni +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Limba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Alege limba în care doreşti afişată interfaţa @@ -938,8 +979,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rezoluţ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Alege rezoluţia dorită pentru joc STR_GAME_OPTIONS_RESOLUTION_OTHER :(alta/nespecificată) -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formatul capturii de ecran -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Alege tipul fişierului în care se salvează captura de ecran (screenshot) +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Mărime interfată +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Alege mărimea elementelor de interfaţa + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normală +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Mărime dublă +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Mărime împătrită STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafic de bază STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selectează setul grafic de bază utilizat în joc @@ -1033,6 +1078,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Foarte plat STR_TERRAIN_TYPE_FLAT :Plat STR_TERRAIN_TYPE_HILLY :Deluros STR_TERRAIN_TYPE_MOUNTAINOUS :Muntos +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Permisivă STR_CITY_APPROVAL_TOLERANT :Tolerantă @@ -1040,8 +1086,8 @@ STR_CITY_APPROVAL_HOSTILE :Ostilă STR_WARNING_NO_SUITABLE_AI :{WHITE}Nu este disponibil nici un modul de Inteligenţă Artificială...{}Puteţi descărca diferite module de Inteligenţă Artificială prin sistemul de 'Resurse Online' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Setări avansate +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Setări STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtru: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Extinde toate STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsează toate @@ -1054,16 +1100,15 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Setări joc (st STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Setări companie (stocate în fişierele de salvare; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Setări companie (stocate în fişierul de salvare; afectează doar compania curentă) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Arată: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Arată în lista de mai jos doar setările modificate -STR_CONFIG_SETTING_RESTRICT_BASIC :Setări de bază -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Setări avansate -STR_CONFIG_SETTING_RESTRICT_ALL :Setări expert / toate setările +STR_CONFIG_SETTING_RESTRICT_BASIC :Setări de bază (afişează numai setări importante) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Setări avansate (afişează majoritatea setărilor) +STR_CONFIG_SETTING_RESTRICT_ALL :Setări expert (afişează toate setările) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Setări cu altă valoare decît cea prestabilită STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Setări cu valori diferite față de cele setate de tine pentru joc nou STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Limitează lista de mai jos la anumite tipuri de setări -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Toate setările +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Toate tipurile de setări STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Setări client (nu sunt stocate în salvări; afectează toate jocurile) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Setări joc (stocate în salvări; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Setări joc (stocate în salvări; afectează doar jocul curent) @@ -1101,16 +1146,17 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Alege cât de m STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costuri de construcție: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Alege nivelul de construcție și costurile de achiziție STR_CONFIG_SETTING_RECESSIONS :Recesiuni: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Dacă este activată, este posibil să existe recesiuni la perioade de câțiva ani. În timpul recesiunii, toată producția este semnificativ mai mică (revine la nivelul anterior când recesiunea se termină) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Dacă este activată, este posibil să existe recesiuni la perioade de câțiva ani. În timpul recesiunii, toată producția este semnificativ redusă (revine la nivelul anterior când recesiunea se termină) STR_CONFIG_SETTING_TRAIN_REVERSING :Nu permite întoarcerea trenurilor in statie: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Dacă este activată, trenurile nu vor intoarce într-o stație care nu este capăt de linie, dacă există o cale mai scurtă către destinația următoare la întoarcere +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Dacă este activată, trenurile nu vor întoarce într-o stație care nu este capăt de linie, chiar dacă există o cale mai scurtă către destinația următoare la întoarcere STR_CONFIG_SETTING_DISASTERS :Dezastre: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Comută dezastre care ocazional pot bloca sau distruge vehicule sau infrastructură STR_CONFIG_SETTING_CITY_APPROVAL :Atitudinea consiliului orașului cu privire la restructurarea zonei: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Alege în ce măsură poluarea fonică si deranjamentul local provocat de o companie va afecta impresia orașului despre aceasta, si viitoarele planuri de construcție in zonă -STR_CONFIG_SETTING_BUILDONSLOPES :Permite construirea pe coastă şi în pantă: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Dacă este activat, şinele şi staţiile pot fi construite pe majoritatea pantelor. Dacă este dezactivat, acestea pot fi construite doar pe pante care coincid cu direcţia şinelor şi astfel nu necesită fundaţie +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Înălţimea maximă a harţii: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Setează înălţimea maxim permisă a munţilor pe hartă +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nu poţi seta înălţimea maxima a hărţii la aceasta valoare. Cel puţin un munte pe hartă are o înălţime mai mare. STR_CONFIG_SETTING_AUTOSLOPE :Permite terra-formarea sub clădiri, şine, etc. (auto-pante): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite terraformarea sub clădiri şi şine fără eliminarea acestora STR_CONFIG_SETTING_CATCHMENT :Permite arii de cuprindere mai realiste: {STRING} @@ -1135,16 +1181,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Interzice trenu STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Întoarcerile la 90 de grade au loc atunci când o bucată orizontală de şină este urmată imediat de o bucată verticală, astfel făcând trenul să întoarcă la 90 de grade când traversează muchia unui pătrăţel faţă de întoarcerile obişnuite de la 45 de grade pentru alte combinaţii de şină. Aceasta se aplică şi unghiului de întoarcere al navelor STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permite unirea staţiilor neînvecinate: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite adăugarea de elemente unei staţii fără a atinge direct elemente existente. Necesită Ctrl+Click pentru adăugărea elementelor noi -STR_CONFIG_SETTING_IMPROVEDLOAD :Foloseşte algoritm de încărcare îmbunătăţit: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Dacă este activată, încărcarea vehiculelor care aşteaptă în aceeaşi staţie se va face în secvenţă. Încărcarea următorului vehicul începe doar dacă există destul cargo pentru a umple complet primul vehicul -STR_CONFIG_SETTING_GRADUAL_LOADING :Încarcă vehiculele gradual: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Încarcă vehiculele gradual folosind duratele de încarcare specifice fiecărui vehicul, în loc să se încarce totul dintr-o dată folosind o durată fixată în funcţie de cantitatea de cargo încărcată STR_CONFIG_SETTING_INFLATION :Inflaţia: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activează inflaţia în economie, unde costurile cresc ceva mai rapid decât plăţile -STR_CONFIG_SETTING_SELECTGOODS :Livrează marfa doar în staţiile unde aceasta este cerută: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Livrează cargo doar către o staţie unde există cereri de la vehicule pentru încărcare. Aceasta previne rating-uri slabe pentru cargo care nu este ridicat din staţie STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Lungimea maximă a podurilor: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Lungimea maximă pentru construcţia de poduri +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Întăltimea maximă a podurilor: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Întăltimea maximă pentru construcţia de poduri STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Lungimea maximă a tunelurilor: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Lungimea maximă pentru construcţia de tuneluri STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metoda manuală de construcţie a industriilor primare: {STRING} @@ -1170,8 +1212,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Locul unde un t STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :capătul apropiat al STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :mijlocul STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :capătul îndepartat al -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Autovehiculele pot forma cozi (cu efecte cuantice): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Vehiculele așteptă în fața stației pînă se eliberează STR_CONFIG_SETTING_AUTOSCROLL :Mută imaginea când mouse-ul este la marginea ecranului: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Cand este activată, ecranele se vor deplasa cînd mouse-ul este aproape de margine STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :dezactivat @@ -1202,10 +1242,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite constru STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construcția stațiilor pe drumurile construite de un oraș STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permite construirea staţiilor pe drumurile competitorilor: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construcția stațiilor pe drumurile construite de altă companie -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permite construirea de staţii adiacente: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permite staților diferite sa se atingă -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Permite mai multe seturi NewGRF simultan: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Optiune de compatibilitate pentru vechile fișiere NewGRF. Nu dezactiva asta, decât dacă știi exact ce faci! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Schimbarea acestei setări nu este permisă când există vehicule în joc STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mentenanță infrastructură: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cand este activă, infrastructura necesita cheltuieli cu intreținerea. Costurile cresc proporțional cu rețeaua de transport, afectând companiile mari mai mult decât companiile mici @@ -1236,8 +1272,8 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Durata de afiș STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durata afișării mesajelor de eroare în fereastra roșie. Unele mesaje de eroare (cele critice) nu sunt închise automat după trecerea acestei perioade, și trebuie închise manual. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} secund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY :Afișează texte informative: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Durata dinaintea afișării textelor informative când se ține mouse-ul pe un element al interfeței. Alternativ, afișarea textelor informative poate fi setată pentru click-dreapta -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :După {COMMA} secund{P 0 ă e} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Durata dinaintea afișării sfaturilor când se ține mausul pe un element al interfeței. Alternativ, afișarea sfaturilor poate fi setată pentru clic-dreapta +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Plutește {COMMA} milisecund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Click dreapta STR_CONFIG_SETTING_POPULATION_IN_LABEL :Afişează populaţia unui oras lângă nume: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Afișează populația orașelor în numele afișate pe hartă @@ -1263,8 +1299,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotaţie hartă STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Spre stânga STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Spre dreapta STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Nivelul înălţimii pentru hărţile plane: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Permite terraformarea suprafeţelor din marginea hărţii: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Dacă este dezactivat, marginile hărţii vor fi întotdeauna ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una sau mai multe suprafeţe din marginea nordică nu sunt goale STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una sau mai multe suprafeţe din marginea hărţii nu contin apă @@ -1315,17 +1349,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Oprit STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Derulare ecran cu click-stânga: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activează derularea hărții prin tragerea acesteia cu butonul stâng al mouse-ului. Această opțiune este în special utilă când se folosește un ecran tactil pentru deplasare + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Foloseşte formatul datei {STRING} pentru numele salvărilor STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formatul datei in numele salvărilor STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lung (31 Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :scurt (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta implicită pentru NewGRF-uri care nu specifică o paletă: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta implicită care va fi folosită cu un NewGRF, dacă acesta nu specifică o anume paletă -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paletă DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paletă Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :La pornirea unui joc nou, pune-l pe pauză: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Când este activată, jocul se va comuta automat in mod pauză la pornirea unui nou joc, permițând astfel un studiu mai atent al hărții STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Când jocul este în pauză permite: {STRING} @@ -1343,6 +1373,7 @@ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Arată timpii d STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Afişează plecările şi sosirile în orare: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Arată timpii estimați de plecare și sosire în orar STR_CONFIG_SETTING_QUICKGOTO :Creare rapidă a ordinelor pentru vehicule: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselectează cursorul "mergi la" când se deschide fereastra de comenzi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipul implicit de şină (după joc nou/încarcare joc): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipul de cale feroviară care va fi ales la pornirea sau îmcărcarea jocului. 'Prima disponibilă' alege cel mai nou tip de cale feroviară și 'Cea mai folosită' alege tipul cel mai des folosit în acel moment. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Prima disponibilă @@ -1407,6 +1438,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaluri de STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Alege dacă întreținerea vehiculelor este activată de trecerea unei anumite perioade de timp, sau scăzând un anumit procent din gradul de rezistență al vehiculului STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalul de întreținere implicit al trenurilor: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alege perioada de întreținere implicită pentru noi vehicule feroviare, dacă nu există un interval de întreținere stabilit pentru vehicul +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} zi{P 0 "" le}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Dezactivat STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalul de întreținere implicit al vehiculelor rutiere: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Alege perioada de întreținere implicită pentru noi vehicule rutiere, dacă nu există un interval de întreținere stabilit pentru vehicul @@ -1463,21 +1495,29 @@ STR_CONFIG_SETTING_SMOOTH_ECONOMY :Economie cu sch STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Dacă este activată, nivelul de producție al industriilor se schimbă mai des și în pași mai mici. Această opțiune de regulă nu are efect dacă tipul industriei este furnizat printr-un NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Permite cumpărarea de acţiuni de la alte companii: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Dacă este activată, se permite cumpărarea și vânzarea de acțiuni ale companiilor. Acțiunile devin disponibile doar când compania depășește o anumită vârstă +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentul din profitul pe secţiune care să fie plătit pentru alimentare: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procentul din câştig care este oferit legăturilor intermediare pentru alimentare, oferind mai mult control asupra încasărilor +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Când se trage cu mouse-ul, plasează semnale la fiecare: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Configurează distanţa la care se vor construi semnale pe şină până la următorul obstacol (semnal, intersecţie), dacâ se trage cu mouse-ul +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} pătrăţel{P 0 "" e} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :La plasarea mai multor semale, păstrează distanţa fixă între acestea: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construieşte automat semafoare înainte de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Alege anul din care se vor folosi semnale electrice pe calea feroviară. Înainte de acest an, se vor folosi semnale non-electrice care au aceeasi funcționalitate dar arată diferit STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activare GUI pentru semnale: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Afişează o fereastră pentru alegerea tipului de semnal de construit, în loc de Ctrl+Click STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tip semnal implicit: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipul de semnal implicit STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Semnal de bloc STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Semnale pentru linii STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Sens unic avansat STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Ciclu prin tipurile de semnal: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selectează între care tipuri de semnale să se cicleze când se apasă Ctrl+Click pe un semnal folosind unealta de construcţie STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Doar normal STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Doar avansat STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Toate STR_CONFIG_SETTING_TOWN_LAYOUT :Modelul drumurilor pentru oraşele noi: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Poziţionarea sistemului rutier în oraşe STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :drumuri mai bune STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grilă 2x2 @@ -1502,9 +1542,14 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :doar în pădur STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :peste tot STR_CONFIG_SETTING_TOOLBAR_POS :Poziţia barei principale de instrumente: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Poziţia orizontală a barei principale în partea de sus a ecranului STR_CONFIG_SETTING_STATUSBAR_POS :Poziţia barei de stare: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Poziţia orizontală a barei principale în partea de jos a ecranului +STR_CONFIG_SETTING_SNAP_RADIUS :Raza "magnetică" a ferestrelor: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" i} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Dezactivat STR_CONFIG_SETTING_SOFT_LIMIT :Numărul maxim de ferestre nefixate: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :dezactivat STR_CONFIG_SETTING_ZOOM_MIN :Nivelul maxim de apropiere imagine: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :Nivelul maxim de îndepărtare imagine: {STRING} @@ -1527,35 +1572,68 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 din {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :deloc STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicator iniţial dimensiune oraş: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Dimensiunea medie a oraşelor mari relativ la oraşele normale, la începutul jocului -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Elimină elementele de drum absurde pe durata construcţiei drumului: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Elimină capatul drumurilor înfundate în timpul reconstrucţiei finanţată a drumurilor - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Interfaţă -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construcţie +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualizează graficul de distribuţie la fiecare {STRING} zi{P 0:2 "" le} +STR_CONFIG_SETTING_LINKGRAPH_TIME :Acordă {STRING} zi{P 0:2 "" le} pentru recalcularea graficului de distribuţie +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetric +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetric +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modalitatea de distribuire a pasagerilor: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modalitatea de distribuire a poştei: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modalitatea de distribuire pentru clasa de cargo BLINDAT: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modalitatea de distribuire pentru alte clase de cargo: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Acurateţea distribuţiei: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :Efectul distanţei asupra cererii: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Cantitatea de cargo la întoarcere pentru modul simetric: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturaţia căilor de capacitate mică înainte de a utiliza căi de capacitate mare: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitate viteză: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Afişează viteza în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metric (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unitate putere vehicule: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Afişează puterea vehiculelor în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (cp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (cp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unitate pentru greutate: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Afişează greutatea în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t/tonă scurtă) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonă) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unitate volum: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Afişează volumele în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unitate efort de tracţiune: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Afişează efortul de tracţiune, denumit şi forţa de tracţiune, în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unitate înălţime: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Afişează înălţimile în interfaţă folosind unităţile selectate +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizare +STR_CONFIG_SETTING_SOUND :{ORANGE}Efecte sonore +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaţă +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcţie STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicule -STR_CONFIG_SETTING_STATIONS :{ORANGE}Staţii -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economie +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Direcţionare +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Oraşe +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrii +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuţie cargo STR_CONFIG_SETTING_AI :{ORANGE}Concurenţi -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Setări vizuale -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacţiune -STR_CONFIG_SETTING_SOUND :{ORANGE}Efecte sonore -STR_CONFIG_SETTING_NEWS :{ORANGE}Știri și mesaje -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Semnale (semafoare) -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Operare marfă STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jucători virtuali -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Reînnoire automată -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Service -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Direcţionare -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenuri -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Oraşe -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrii STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1604,7 +1682,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multipla STR_INTRO_GAME_OPTIONS :{BLACK}Opţiuni STR_INTRO_HIGHSCORE :{BLACK}Tabela cu scoruri maxime -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Setări avansate +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Setări STR_INTRO_NEWGRF_SETTINGS :{BLACK}Setări NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Resurse online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Setări IA / Scripturi Joc @@ -1624,7 +1702,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Alege pe STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Afişează opţiunile jocului STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Afișează tabela cu scoruri maxime -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Afişează setările avansate +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Setări afişare STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Afişează setările NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Verifică dacă există resurse noi sau actualizate pentru descărcare STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Afişează setările pentru Inteligența Artificială şi pentru Scripturi Joc @@ -1664,6 +1742,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Joacă STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Buldozer magic (demolează industrii şi lucruri amovibile): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunelele se pot intersecta: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Avioanele cu reacţie nu se vor prăbuşi (frecvent) pe aeroporturile mici: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Schimbă înălţimea maximă a harţii: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Schimbă înălţimea maxima a munţilor pe hartă STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :peisajul temperat STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :peisajul sub-arctic STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :peisajul sub-tropical @@ -1712,6 +1792,7 @@ STR_LIVERY_FREIGHT_TRAM :Tramvai marfă STR_FACE_CAPTION :{WHITE}Alegerea pozei STR_FACE_CANCEL_TOOLTIP :{BLACK}Anulează alegerea unei poze noi STR_FACE_OK_TOOLTIP :{BLACK}Acceptă poza selectată +STR_FACE_RANDOM :{BLACK}Aleator STR_FACE_MALE_BUTTON :{BLACK}Bărbat STR_FACE_MALE_TOOLTIP :{BLACK}Alege figură masculină @@ -1767,6 +1848,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Schimbă # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Publicat STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Alege între un joc publicat (prin Internet) și unul privat (reț) game STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nu STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Da @@ -1950,6 +2032,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectatori STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduceţi suma pe care o oferiţi +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Parola introdusă nu se va salva @@ -2229,7 +2312,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Semnal d STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Semnal combinat (electric){}Semnalul combinat se comportă atât ca semnal de intrare cât şi de ieşire. Acest lucru permite construcţia "arborilor" mari de presemnalizare STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Semnal de cale (electric){}Un semnal de cale va permite trecerea în acelaşi timp în blocurile de semnale a mai multor trenuri, dacă trenurile pot găsi o cale până la un punct sigur pentru oprire. Semnalele standard de cale permit trecerea din ambele sensuri STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Semnal de cale cu sens unic (electric){}Un semnal de cale permite trecerea simultană a mai multor trenuri prin blocurile de semnale, dacă trenul poate rezerva o cale până la un punct sigur de oprire. Semnalele de cale cu sens unic permit trecerea intr-un singur sens -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversie semnal{}Când este selectat, click-ul pe un semafor existent îl va converti în tipul şi varianta selectată de semnalizare, iar Ctrl+Click va comuta varianta existentă. Shift+Click afişează costul estimat al conversiei +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversie semnal{}Când este selectat, click-ul pe un semafor existent îl va converti în tipul şi varianta selectată de semnalizare. Ctrl+Click va comuta varianta existentă. Shift+Click afişează costul estimat al conversiei STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densitatea semnalelor plasate prin tragerea cu mouse-ul STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Scade densitatea semnalelor plasate prin tragerea cu mouse-ul STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Creşte densitatea semnalelor plasate prin tragerea cu mouse-ul @@ -2550,7 +2633,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-2013 Echipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Echipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc @@ -2584,13 +2667,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. de oraşe: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. de industrii: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Înălţimea maximă a harţii: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Măreşte înălţimea maximă a munţilor pe hartă cu unu +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Reduce înălţimea maximă a munţilor pe hartă cu unu STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Înălţimea zăpezii: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mută linia zăpezii cu un punct în sus STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mută linia zăpezii cu un punct în jos -STR_MAPGEN_RANDOM_SEED :{BLACK}Parametru aleator: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click pt introducerea unui parametru aleator -STR_MAPGEN_RANDOM :{BLACK}Aleator -STR_MAPGEN_RANDOM_HELP :{BLACK}Modifică parametrul aleator folosit pentru Generarea Terenului STR_MAPGEN_LAND_GENERATOR :{BLACK}Generator de teren: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritm arbore: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tip teren: @@ -2617,7 +2699,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nume har STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Dimensiune: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Introduceţi o valoare de pornire pentru numerele aleatoare +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Modifică înălţimea maximă a harţi STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Modifică înălţimea zăpezii STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifică anul de început @@ -2672,7 +2754,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mută î STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mută fişierul NewGRF selectat mai sus în listă STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mută în jos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mută fişierul NewGRF selectat mai jos în listă -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}O listă a fişierelor NewGRF instalate. +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}O listă a fişierelor NewGRF instalate STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Setează parametri STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Afișează parametrii @@ -2696,6 +2778,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Niciun fis STR_NEWGRF_SETTINGS_DISABLED :{RED}Dezactivat STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibil cu această versiune de OpenTTD +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Schimbă parametrii NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Închide @@ -2726,7 +2810,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Imaginea STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mergi la precedenta imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi şi reporneşte când s-a ajuns la sfârşit STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezentarea imaginii curente. Aliniamentul este ignorat STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mişcă imaginea schimbând distanţele pe axele X şi Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}distanţa X: {NUM}, distanţa Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetează relativele +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetază limitele relative actuale +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Limita X: {NUM}, Limita Y: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Limita X: {NUM}, Limita Y: {NUM} (Relativ) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Alege imagine STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Alege o imagine de oriunde de pe ecran @@ -2797,6 +2884,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanez resursele NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Se scanează resursele NewGRF. În funcție de numărul acestora, această operație poate dura un timp... @@ -2878,9 +2968,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Cumpăr STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Mituieşte autorităţile locale pentru a-ţi îmbunătăţi ratingul, dar cu riscul de a fi prins şi de a plăti amenzi serioase.{} Cost: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Scopuri +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Scopuri globale STR_GOALS_GLOBAL_TITLE :{BLACK}Ţinte globale: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nici unul - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nu este aplicabil - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Ţintele companiei: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click pe ţintă pentru a centra ecranul principal pe industrie/oraş/zonă. Ctrl+Click deschide o fereastră nouă de vizualizare a industriei/oraşului/zonei @@ -2890,7 +2985,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informație STR_GOAL_QUESTION_CAPTION_WARNING :Atenționare STR_GOAL_QUESTION_CAPTION_ERROR :Eroare -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Anulează STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nu @@ -2909,6 +3004,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Reîncearcă STR_GOAL_QUESTION_BUTTON_POSTPONE :Amână STR_GOAL_QUESTION_BUTTON_SURRENDER :Renunță STR_GOAL_QUESTION_BUTTON_CLOSE :Închide +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvenţii (F6) @@ -2920,6 +3016,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}- {STRI STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click pe serviciu pentru a centra imaginea pe industrie/oraş. Ctrl+Click deshide o fereastră cu locaţia industriei/oraşului # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Carte de poveste +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Cartea de poveste globală +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Sari la o pagină specifică selectând-o din lista derulantă +STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Mergi la pagina anterioară +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Următor +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Mergi la pagina următoare +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referinţă invalidă pentru scop # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Numele staţiilor - clic pe un nume pentru a centra imaginea pe staţia respectivă. Ctrl+Click deshide o fereastra cu locaţia staţiei @@ -2934,7 +3040,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nu este # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}În aşteptare: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} pe drum de la {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervat pentru încărcare) @@ -2948,8 +3053,30 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Evaluări STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Afişează evaluările staţiei - - +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grupează după +STR_STATION_VIEW_WAITING_STATION :Staţie: Aşteptare +STR_STATION_VIEW_WAITING_AMOUNT :Sumă: Aşteptare +STR_STATION_VIEW_PLANNED_STATION :Staţie: Planificat +STR_STATION_VIEW_PLANNED_AMOUNT :Sumă: Planificat +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} de la {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} către {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} de la staţie necunoscută +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} către orice staţie +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} prin orice staţie +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} de la această staţie +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} opreşte la această staţie +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} către această staţie +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Sursă-Via-Destinaţie +STR_STATION_VIEW_GROUP_S_D_V :Sursă-Destinaţie-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Sursă-Destinaţie +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinaţie-Sursă +STR_STATION_VIEW_GROUP_D_S_V :Destinaţie-Sursă-Via +STR_STATION_VIEW_GROUP_D_V_S :Destinaţie-Via-Sursă ############ range for rating starts STR_CARGO_RATING_APPALLING :Deplorabil @@ -3092,6 +3219,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producţ STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia industriei. Ctrl+Click deshide o fereastra cu locaţia industriei STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivelul producţiei: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industria a anunţat închiderea iminentă! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING} @@ -3160,6 +3288,8 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Şterge STR_GROUP_RENAME_TOOLTIP :{BLACK}Redenumeşte grupul selectat STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click aici pentru a proteja acest grup de la înlocuirile automate globale +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Şterge Grup + STR_GROUP_ADD_SHARED_VEHICLE :Adaugă vehicule partajate STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate vehiculele @@ -3222,6 +3352,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Redenume STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Redenumeşte modelul de navă STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Redenumeşte modelul de aeronavă +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Afișează +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Afișează +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Afișează +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Afișează + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comută ascunderea/afișarea tipului de tren +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afişarea tipului de autovehicul +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afişarea tipului de navă +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afişarea tipului de aeronavă + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Redenumeste modelul vehiculului feroviar STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Redenumeşte modelul de autovehicul STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Redenumeşte modelul de navă @@ -3326,6 +3471,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Autovehicolul STR_REPLACE_VEHICLE_SHIP :Nava STR_REPLACE_VEHICLE_AIRCRAFT :Aeronava +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicule în uz +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Coloana vehiculelor pe care le deții +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehicule disponibile +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Coloana vehiculelor disponibile pentru înlocuire + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Alege tipul de motor pentru înlocuire STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Alege noul tip de motor pe care doreşti să-l foloseşti în locul motorului selectat în stânga @@ -3918,6 +4068,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Săpătu STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Deja la nivelul mării STR_ERROR_TOO_HIGH :{WHITE}Prea înalt STR_ERROR_ALREADY_LEVELLED :{WHITE}... este deja plat +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}După aceea podul deasupra ar deveni prea înalt. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nu se poate schimba numele companiei... @@ -3968,6 +4119,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... păd STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... poate fi construit doar deasupra liniei zăpezii STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... poate fi construit doar sub linia zăpezii +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Modifică parametrii generatorului ca să obții o hartă mai bună + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nu se poate construi o gară aici... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nu se poate construi staţie de autobuz... @@ -4104,6 +4257,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Mai înt STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Cele două capete nu se pot situa în acelaşi loc STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Capetele podului nu sunt la acelasi nivel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Podul este prea jos pentru terenul corespunzator +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Podul este prea înalt pentru acest teren. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Cele două capete trebuie să se situeze în linie STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambele capete ale podului trebuie să se situeze pe uscat STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... podul este prea lung @@ -4129,7 +4283,8 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... este # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nu pot crea grup... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nu pot şterge grup... -STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nu se poate redenumi grupul... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nu pot redenumi grup... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nu pot seta grupul predecesor... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nu pot elimina toate vehiculele din acest grup... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nu pot adauga vehiculul in acest grup... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nu pot adauga vehicule partajate in grup... @@ -4185,6 +4340,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nu se po STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehiculul este distrus +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Niciun vehicul nu va fi disponibil +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Schimbă configuraţia NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Niciun vehicul nu este disponibil încă +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Începe un joc nou după {DATE_SHORT} sau utilizează un NewGRF care oferă vehicule în avans # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nu se poate permite trenului să treacă în caz de pericol... @@ -4360,7 +4519,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Aburi) @@ -4569,7 +4728,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Feribot de căl STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Feribot de călători Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Navă de marfă Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Navă de marfă Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navă de marfă Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navă de marfă MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Navă de marfă Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4663,6 +4822,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ascuns) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4686,6 +4846,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4697,8 +4858,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4709,9 +4868,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 9738f79c74..59385132dc 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -221,30 +221,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.acc :газиров # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} пассажир{P "" а ов} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}пассажир{P "" а ов} STR_QUANTITY_COAL :{WEIGHT_LONG} угля -STR_QUANTITY_MAIL :{COMMA} меш{P ок ка ков} почты +STR_QUANTITY_MAIL :{COMMA}{NBSP}меш{P ок ка ков} почты STR_QUANTITY_OIL :{VOLUME_LONG} нефти -STR_QUANTITY_LIVESTOCK :{COMMA} голов{P а ы ""} домашнего скота -STR_QUANTITY_GOODS :{COMMA} ящик{P "" а ов} товаров +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}голов{P а ы ""} домашнего скота +STR_QUANTITY_GOODS :{COMMA}{NBSP}ящик{P "" а ов} товаров STR_QUANTITY_GRAIN :{WEIGHT_LONG} зерна STR_QUANTITY_WOOD :{WEIGHT_LONG} древесины STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} железной руды STR_QUANTITY_STEEL :{WEIGHT_LONG} стали -STR_QUANTITY_VALUABLES :{COMMA} меш{P ок ка ков} драгоценностей +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}меш{P ок ка ков} драгоценностей STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} медной руды STR_QUANTITY_MAIZE :{WEIGHT_LONG} кукурузы STR_QUANTITY_FRUIT :{WEIGHT_LONG} фруктов -STR_QUANTITY_DIAMONDS :{COMMA} меш{P ок ка ков} алмазов +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}меш{P ок ка ков} алмазов STR_QUANTITY_FOOD :{WEIGHT_LONG} продуктов STR_QUANTITY_PAPER :{WEIGHT_LONG} бумаги -STR_QUANTITY_GOLD :{COMMA} меш{P ок ка ков} золота +STR_QUANTITY_GOLD :{COMMA}{NBSP}меш{P ок ка ков} золота STR_QUANTITY_WATER :{VOLUME_LONG} воды STR_QUANTITY_WHEAT :{WEIGHT_LONG} пшеницы STR_QUANTITY_RUBBER :{VOLUME_LONG} каучука STR_QUANTITY_SUGAR :{WEIGHT_LONG} сахара -STR_QUANTITY_TOYS :{COMMA} игруш{P ка ки ек} -STR_QUANTITY_SWEETS :{COMMA} короб{P ка ки ок} конфет +STR_QUANTITY_TOYS :{COMMA}{NBSP}игруш{P ка ки ек} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}короб{P ка ки ок} конфет STR_QUANTITY_COLA :{VOLUME_LONG} колы STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} сахарной ваты STR_QUANTITY_BUBBLES :{COMMA} пузыр{P ёк ька ьков} @@ -291,12 +291,12 @@ STR_ABBREV_NONE :{TINY_FONT}НЕ STR_ABBREV_ALL :{TINY_FONT}Все # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} пассажир{P "" а ов} -STR_BAGS :{COMMA} меш{P ок ка ков} -STR_TONS :{COMMA} тонн{P а ы ""} -STR_LITERS :{COMMA} литр{P "" а ов} -STR_ITEMS :{COMMA} штук{P а и ""} -STR_CRATES :{COMMA} ящик{P "" а ов} +STR_PASSENGERS :{COMMA}{NBSP}пассажир{P "" а ов} +STR_BAGS :{COMMA}{NBSP}меш{P ок ка ков} +STR_TONS :{COMMA}{NBSP}тонн{P а ы ""} +STR_LITERS :{COMMA}{NBSP}литр{P "" а ов} +STR_ITEMS :{COMMA}{NBSP}штук{P а и ""} +STR_CRATES :{COMMA}{NBSP}ящик{P "" а ов} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Тёмно-синий @@ -317,37 +317,37 @@ STR_COLOUR_GREY :Серый STR_COLOUR_WHITE :Белый # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мил{P я и ь}/ч -STR_UNITS_VELOCITY_METRIC :{COMMA} км/ч -STR_UNITS_VELOCITY_SI :{COMMA} м/с +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}мил{P я и ь}/ч +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}км/ч +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}м/с -STR_UNITS_POWER_IMPERIAL :{COMMA} лс -STR_UNITS_POWER_METRIC :{COMMA} лс -STR_UNITS_POWER_SI :{COMMA} кВт +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}лс +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}лс +STR_UNITS_POWER_SI :{COMMA}{NBSP}кВт -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} т -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}кг -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} тонн{P а ы ""} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тонн{P а ы ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}тонн{P а ы ""} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}тонн{P а ы ""} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}кг -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} гал. -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л -STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}гал. +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}л +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}м³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} галлон{P "" а ов} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} литр{P "" а ов} -STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}галлон{P "" а ов} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}литр{P "" а ов} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}м³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} фунт{P "" а ов}-силы -STR_UNITS_FORCE_METRIC :{COMMA} кгс -STR_UNITS_FORCE_SI :{COMMA} кН +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}фунт{P "" а ов}-силы +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}кгс +STR_UNITS_FORCE_SI :{COMMA}{NBSP}кН -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут{P "" а ов} -STR_UNITS_HEIGHT_METRIC :{COMMA} м -STR_UNITS_HEIGHT_SI :{COMMA} м +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}фут{P "" а ов} +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}м +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фильтр: @@ -374,6 +374,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Прок STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Прокрутка влево/вправо STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Полная очистка прямоугольного участка земли. Ctrl - выбор области по диагонали. При нажатом Shift - оценка стоимости очистки. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Показать скрытые +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Показать скрытые +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Показать скрытые +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Показать скрытые + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Если эта кнопка нажата, скрытые модели локомотивов и вагонов также будут показаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Если эта кнопка нажата, скрытые модели автомобилей также будут показаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Если эта кнопка нажата, скрытые модели кораблей также будут показаны +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Если эта кнопка нажата, скрытые модели воздушных судов также будут показаны + # Query window STR_BUTTON_DEFAULT :{BLACK}По умолчанию STR_BUTTON_CANCEL :{BLACK}Отмена @@ -487,7 +498,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Выход ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Настройки игры -STR_SETTINGS_MENU_CONFIG_SETTINGS :Расширенные настройки +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Настройки STR_SETTINGS_MENU_SCRIPT_SETTINGS :Настройки ИИ / скрипта STR_SETTINGS_MENU_NEWGRF_SETTINGS :Настройки NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Настройки прозрачности @@ -596,7 +607,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Переклю STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Подкрашивать блоки, требующие перерисовки ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1-е STR_ORDINAL_NUMBER_2ND :2-е STR_ORDINAL_NUMBER_3RD :3-е @@ -612,22 +623,40 @@ STR_ORDINAL_NUMBER_12TH :12-е STR_ORDINAL_NUMBER_13TH :13-е STR_ORDINAL_NUMBER_14TH :14-е STR_ORDINAL_NUMBER_15TH :15-е -STR_ORDINAL_NUMBER_16TH :16-е -STR_ORDINAL_NUMBER_17TH :17-е -STR_ORDINAL_NUMBER_18TH :18-е -STR_ORDINAL_NUMBER_19TH :19-е -STR_ORDINAL_NUMBER_20TH :20-е -STR_ORDINAL_NUMBER_21ST :21-е -STR_ORDINAL_NUMBER_22ND :22-е -STR_ORDINAL_NUMBER_23RD :23-е -STR_ORDINAL_NUMBER_24TH :24-е -STR_ORDINAL_NUMBER_25TH :25-е -STR_ORDINAL_NUMBER_26TH :26-е -STR_ORDINAL_NUMBER_27TH :27-е -STR_ORDINAL_NUMBER_28TH :28-е -STR_ORDINAL_NUMBER_29TH :29-е -STR_ORDINAL_NUMBER_30TH :30-е -STR_ORDINAL_NUMBER_31ST :31-е +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1-е +STR_DAY_NUMBER_2ND :2-е +STR_DAY_NUMBER_3RD :3-е +STR_DAY_NUMBER_4TH :4-е +STR_DAY_NUMBER_5TH :5-е +STR_DAY_NUMBER_6TH :6-е +STR_DAY_NUMBER_7TH :7-е +STR_DAY_NUMBER_8TH :8-е +STR_DAY_NUMBER_9TH :9-е +STR_DAY_NUMBER_10TH :10-е +STR_DAY_NUMBER_11TH :11-е +STR_DAY_NUMBER_12TH :12-е +STR_DAY_NUMBER_13TH :13-е +STR_DAY_NUMBER_14TH :14-е +STR_DAY_NUMBER_15TH :15-е +STR_DAY_NUMBER_16TH :16-е +STR_DAY_NUMBER_17TH :17-е +STR_DAY_NUMBER_18TH :18-е +STR_DAY_NUMBER_19TH :19-е +STR_DAY_NUMBER_20TH :20-е +STR_DAY_NUMBER_21ST :21-е +STR_DAY_NUMBER_22ND :22-е +STR_DAY_NUMBER_23RD :23-е +STR_DAY_NUMBER_24TH :24-е +STR_DAY_NUMBER_25TH :25-е +STR_DAY_NUMBER_26TH :26-е +STR_DAY_NUMBER_27TH :27-е +STR_DAY_NUMBER_28TH :28-е +STR_DAY_NUMBER_29TH :29-е +STR_DAY_NUMBER_30TH :30-е +STR_DAY_NUMBER_31ST :31-е ############ range for days ends ############ range for months starts @@ -955,13 +984,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}ТС «{ STR_NEWS_SHIP_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в доке STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в ангаре -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}У ТС «{VEHICLE}» мало заданий STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}У ТС «{VEHICLE}» недействительное задание STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}У ТС «{VEHICLE}» повторяющиеся задания STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}У ТС «{VEHICLE}» некорректный пункт назначения -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} направлен{G 0 "" а о ы} в аэропорт со слишком короткой полосой STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}ТС «{VEHICLE}» устарело STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}ТС «{VEHICLE}» сильно устарело @@ -1044,14 +1072,10 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Грузинс STR_GAME_OPTIONS_CURRENCY_IRR :Иранский риал (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Направление движения STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}По какой стороне дороги ездит автотранспорт -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Левостороннее -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Правостороннее +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :левостороннее +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :правостороннее STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Названия городов STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}На каком языке будут названы населённые пункты @@ -1083,11 +1107,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталан STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автосохранение STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервал автосохранения игры +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Отключено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Каждый месяц STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Каждые 3 месяца STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Каждые 6 месяцев STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Каждый год +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Язык STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Язык пользовательского интерфейса @@ -1099,8 +1125,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Разр STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Выбор разрешения экрана STR_GAME_OPTIONS_RESOLUTION_OTHER :Другое -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат снимков экрана -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Формат, в котором будут сохраняться снимки экрана +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Размер элементов интерфейса +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Выберите размер элементов интерфейса + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Обычный +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Удвоенный +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Учетверённый STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовый набор графики STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбрать базовый набор графики @@ -1117,6 +1147,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выбе STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} повреждённы{P й х х} файл{P 0 "" а ов} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о наборе базовой музыки +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не удалось получить список поддерживаемых разрешений экрана STR_ERROR_FULLSCREEN_FAILED :{WHITE}Сбой полноэкранного режима # Custom currency window @@ -1186,28 +1217,29 @@ STR_RIVERS_FEW :Малое STR_RIVERS_MODERATE :Среднее STR_RIVERS_LOT :Большое -STR_DISASTER_NONE :Выключено -STR_DISASTER_REDUCED :Умеренная -STR_DISASTER_NORMAL :Обычная +STR_DISASTER_NONE :нет +STR_DISASTER_REDUCED :сниженная +STR_DISASTER_NORMAL :обычная STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 -STR_TERRAIN_TYPE_VERY_FLAT :Очень плоский -STR_TERRAIN_TYPE_FLAT :Плоский +STR_TERRAIN_TYPE_VERY_FLAT :Плоский +STR_TERRAIN_TYPE_FLAT :Равнинный STR_TERRAIN_TYPE_HILLY :Холмистый -STR_TERRAIN_TYPE_MOUNTAINOUS :Гористый +STR_TERRAIN_TYPE_MOUNTAINOUS :Преимущественно горный +STR_TERRAIN_TYPE_ALPINIST :Исключительно горный -STR_CITY_APPROVAL_PERMISSIVE :Дозволяющее -STR_CITY_APPROVAL_TOLERANT :Терпимое -STR_CITY_APPROVAL_HOSTILE :Враждебное +STR_CITY_APPROVAL_PERMISSIVE :дозволяющее +STR_CITY_APPROVAL_TOLERANT :терпимое +STR_CITY_APPROVAL_HOSTILE :отрицательное STR_WARNING_NO_SUITABLE_AI :{WHITE}Модули ИИ отсутствуют.{}Их можно скачать через систему проверки онлайн-контента. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Расширенные настройки +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Настройки STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Фильтр: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Развернуть всё STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Свернуть всё @@ -1220,11 +1252,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Настрой STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Настройки компании (содержатся в файлах сохранений; действительны только для новых игр) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Настройки компании (содержатся в файлах сохранений; действительны только для текущей игры) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Показывать: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Отображать в списке только изменённые настройки -STR_CONFIG_SETTING_RESTRICT_BASIC :Основные настройки -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Расширенные настройки -STR_CONFIG_SETTING_RESTRICT_ALL :Специальные настройки / все настройки +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Категория: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Тип: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Отображать в списке только настройки, соответствующие выбранной категории +STR_CONFIG_SETTING_RESTRICT_BASIC :Основные настройки (только самые важные) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Расширенные настройки (практически все) +STR_CONFIG_SETTING_RESTRICT_ALL :Специальные настройки (все, включая самые непонятные) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Настройки со значениями, отличающимися от значений по умолчанию STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Настройки со значениями, отличающимися от настроек новой игры @@ -1235,6 +1268,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Настрой STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Настройки игры (записываются в сохранение; влияют только на текущую игру) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Настройки компании (записываются в сохранения; влияют только на новые игры) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Настройки компании (записываются в сохранение; влияют только на текущую компанию) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Чтобы показать все результаты поиска, выберите{}{SILVER}категорию{BLACK}: {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Чтобы показать все результаты поиска, выберите{}{SILVER}тип{BLACK}: {WHITE}Все настройки +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Чтобы показать все результаты поиска, выберите{}{SILVER}категорию{BLACK}: {WHITE}{STRING} {BLACK}и {SILVER}тип{BLACK}: {WHITE}Все настройки +STR_CONFIG_SETTINGS_NONE :{WHITE}- Нет - STR_CONFIG_SETTING_OFF :нет STR_CONFIG_SETTING_ON :да @@ -1262,8 +1299,8 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Эксплуа STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Установите уровень стоимости обслуживания и эксплуатации транспорта и инфраструктуры STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Скорость строительства: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ограничьте количество строительных мероприятий для ИИ -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Поломки транспорта: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Задайте частоту поломок недостаточно качественно обслуженного транспорта +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Вероятность поломки транспорта: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Частота поломок недостаточно качественно обслуживаемого транспорта STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Множитель субсидий: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Установите множитель оплаты за субсидируемые перевозки STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Затраты на строительство: {STRING} @@ -1277,8 +1314,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включен STR_CONFIG_SETTING_CITY_APPROVAL :Отношение городского совета к реструктуризации окрестностей: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберите уровень влияния шума и загрязнения окружающей среды компаниями на их рейтинг в городах и возможность дальнейшего строительства около городов -STR_CONFIG_SETTING_BUILDONSLOPES :Разрешить строительство на склонах и берегах: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :При включении пути и станции можно строить на склонах с использованием насыпей. При отключении пути можно строить только на склонах, ориентация которых совпадает с направлением дороги. +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максимальная высота: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Установка максимально допустимой высоты гор на карте +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Невозможно изменить максимальную высоту. На карте есть горы выше этого значения. STR_CONFIG_SETTING_AUTOSLOPE :Разрешить изм. ландшафта под зданиями, дорогами и т. д. (автоспуски): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разрешить изменение ландшафта под домами и дорогами, не требуя их сноса STR_CONFIG_SETTING_CATCHMENT :Зона покрытия зависит от типа станции: {STRING} @@ -1303,16 +1341,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Запрети STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Поворот на 90° происходит, когда к горизонтальному участку рельсов примыкает вертикальный. В остальных случаях поезда поворачивают на 45°. Запрет поворота на 90° относится также и к кораблям. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Разрешить объединение не примыкающих друг к другу станций: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Разрешить объединять несколько станций в одну, даже если они не примыкают друг к другу. Требуется нажать Ctrl+щелчок при расширении станции. -STR_CONFIG_SETTING_IMPROVEDLOAD :Использовать улучшенный алгоритм загрузки: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :При включении транспортные средства загружаются последовательно одно за другим. Только тот груз, который не поместится на первый транспорт, будет погружен на следующий в очереди на станции. -STR_CONFIG_SETTING_GRADUAL_LOADING :Постепенная загрузка транспорта: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Если включено - транспорт загружается постепенно; время погрузки зависит от типа транспорта.{}Если отключено - весь доступный груз перемещается на транспорт; время погрузки зависит от количества груза. STR_CONFIG_SETTING_INFLATION :Включить инфляцию: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Включить инфляцию, при которой затраты растут немного быстрее, чем доходы -STR_CONFIG_SETTING_SELECTGOODS :Поставлять груз на станцию, только если на него был спрос: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Доставлять на станцию только тот груз, за которым хоть раз пришёл транспорт. Это позволяет избежать плохих рейтингов доставки для грузов, перевозка которых не осуществляется. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимальная длина моста: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Ограничение на длину строящихся мостов +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Максимальная высота мостов: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Максимальная допустимая высота мостов STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максимальная длина туннеля: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Ограничение на длину строящихся туннелей STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Способ создания сырьевых предприятий: {STRING} @@ -1338,8 +1372,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Укажите, STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :в начале STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :в середине STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :в конце -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Автотранспорт строится в очередь у станции: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Если остановка или грузовой терминал заняты, то автотранспорт будет ждать своей очереди у въезда на станцию. STR_CONFIG_SETTING_AUTOSCROLL :Смещать обзор, когда курсор находится у края экрана: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Включает смещение обзора при приближении указателя мыши к краю экрана STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :нет @@ -1370,10 +1402,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Позволя STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Разрешить компаниям строить сквозные остановки на муниципальных дорогах STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Разрешить проезд через остановки соперников по их дорогам: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Разрешить компаниям строить сквозные остановки на дорогах, принадлежащих другим транспортным компаниям -STR_CONFIG_SETTING_ADJACENT_STATIONS :Разрешить строительство смежных станций: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Разрешить размещение различных станций на соседних клетках -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Включить поддержку нескольких наборов NewGRF с транспортом: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Эта настройка требуется для совместимости со старыми модулями NewGRF. Не отключайте её без необходимости. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Изменение этого параметра невозможно, если в игре есть транспортные средства. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Обслуживание инфраструктуры: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Включает затраты на содержание инфраструктуры. Стоимость непропорционально увеличивается с ростом транспортной сети, оказывая, таким образом, большее влияние на крупные компании, чем на малые. @@ -1404,35 +1432,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Длитель STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Длительность показа красных окон с сообщениями об ошибках. Эта настройка не действует на некоторые сообщения (о критических ошибках) - они не закрываются автоматически, только вручную. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} секунд{P а ы ""} STR_CONFIG_SETTING_HOVER_DELAY :Показывать подсказки: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Задержка между наведением указателя мыши на элемент интерфейса и появлением подсказки. Можно привязать появление подсказки к щелчку правой кнопкой мыши. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :при наведении указателя на {COMMA} секунд{P у ы ""} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Задержка между наведением указателя мыши на элемент интерфейса и появлением подсказки. Если это значение равно 0, подсказки появляются по щелчку правой кнопки мыши. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :при наведении указателя на {COMMA} миллисекунд{P у ы ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :щелчком правой кнопкой мыши STR_CONFIG_SETTING_POPULATION_IN_LABEL :Показывать количество жителей в названии города: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Показывать количество жителей городов в названиях STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Толщина линий графиков: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Толщина линий графиков. Тонкие линии более точны; толстые линии лучше видны и их цвета лучше различимы. +STR_CONFIG_SETTING_LANDSCAPE :Тип карты: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Выбор типа карты определяет основу игрового процесса, например, доступные типы транспорта и грузов, различные условия роста городов. Всё это также может быть изменено с помощью модулей NewGRF и игровых скриптов. STR_CONFIG_SETTING_LAND_GENERATOR :Генератор ландшафта: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Оригинальный генератор рассчитан на базовый графический набор и создаёт ландшафт из типовых элементов.{}TerraGenesis использует для создания ландшафта шум Перлина и более тонко настраивается. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Оригинальный STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Тип ландшафта: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Только для TerraGenesis){}Холмистость ландшафта +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Количество предприятий: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Выберите, сколько предприятий создавать в начале и на каком уровне поддерживать их количество в процессе игры. STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Максимальное расстояние от края карты до нефтезаводов: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нефтеперерабатывающие заводы всегда строятся у краёв карты или на берегах островов, находящихся недалеко от края STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Высота снеговой линии: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Неровность земли (только для TerraGenesis): {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Укажите, на какой высоте в субарктическом климате устанавливается снеговой покров. Наличие снега влияет на расстановку предприятий и на условия роста городов. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубость ландшафта: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Только для TerraGenesis){}Выберите количество гор и холмов на карте. На гладком ландшафте холмов немного и они более пологие. На грубом - много гор, и ландшафт может показаться слишком однообразным. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Очень гладкий STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Гладкий STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Грубый STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Очень грубый +STR_CONFIG_SETTING_VARIETY :Разнообразие ландшафта: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Только для TerraGenesis){}Определяет наличие на карте как горных, так и равнинных областей. Поскольку данная настройка влияет только на сглаживание карты, остальные настройки должны быть выставлены в горный ландшафт. +STR_CONFIG_SETTING_RIVER_AMOUNT :Количество рек: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Выберите количество рек на карте STR_CONFIG_SETTING_TREE_PLACER :Алгоритм рассадки деревьев: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Выберите способ распределения деревьев на карте: «оригинальный» алгоритм высаживает их равномерно по всей карте; «улучшенный» - группами. STR_CONFIG_SETTING_TREE_PLACER_NONE :Нет STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Оригинальный STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Улучшенный +STR_CONFIG_SETTING_ROAD_SIDE :Движение автотранспорта: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Выберите сторону дороги, по которой движется автотранспорт STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Вращение карты высот: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Против часовой стрелки STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :По часовой стрелке STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Уровень высоты для карт с плоским рельефом: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Разрешить изменение ландшафта на краю карты: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :При отключении края карты всегда будут водными STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Одна или несколько клеток в северном углу не пусты STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна или несколько клеток берега без воды @@ -1458,7 +1500,7 @@ STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Включит STR_CONFIG_SETTING_LIVERIES_NONE :нет STR_CONFIG_SETTING_LIVERIES_OWN :только для своей компании STR_CONFIG_SETTING_LIVERIES_ALL :для всех компаний -STR_CONFIG_SETTING_PREFER_TEAMCHAT :Предпочитать командный чат при нажатии Enter: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Открывать командный чат при нажатии Enter: {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Настроить внутрикорпоративный чат на клавишу «Enter», а общий - на «Ctrl+Enter» STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Использовать колесо прокрутки: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Можно настроить смещение обзора с помощью качающегося колеса прокрутки @@ -1469,10 +1511,10 @@ STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Скорост STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Настройка скорости смещения обзора с помощью колеса прокрутки STR_CONFIG_SETTING_OSK_ACTIVATION :Экранная клавиатура: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Выберите способ открытия экранной клавиатуры для ввода текста с помощью указателя. Эта настройка предназначена для мобильных устройств, не имеющих клавиатуры. -STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Отключено -STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Двойной щелчок -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Одиночный щелчок (когда выделено) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Одиночный щелчок (немедленно) +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :отключена +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :двойной щелчок +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :одиночный щелчок (когда фокус в поле ввода) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :одиночный щелчок (немедленно) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Эмуляция нажатия правой кнопки мыши: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Выбор способа эмуляции нажатия правой кнопки мыши @@ -1483,17 +1525,15 @@ 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_AUTOSAVE :Автосохранения: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Укажите интервал между автоматическими сохранениями + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Использовать {STRING} формат даты для имён сохранений STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Формат даты, использующийся в названиях сохранённых игр STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :длинный (31-е дек 2008 г.) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :короткий (31.12.2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Если в NewGRF не указана палитра, использовать: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палитра по умолчанию для модулей NewGRF, в которых не указана требуемая палитра -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :палитру DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :палитру Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Автопауза в начале игры: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Включение паузы при старте новой игры, чтобы лучше изучить карту STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Во время паузы разрешить: {STRING} @@ -1502,7 +1542,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :ничего STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :все действия, кроме строительства STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :все действия, кроме изменения ландшафта STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :все действия -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Использовать расширенный список транспорта: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Показывать группы в списке транспорта: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Включить расширенный список транспорта, позволяющий объединять транспортные средства в группы STR_CONFIG_SETTING_LOADING_INDICATORS :Показывать индикатор загрузки: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Отображение индикаторов загрузки над загружающимся и разгружающимся транспортом @@ -1534,7 +1574,7 @@ STR_CONFIG_SETTING_SOUND_CONFIRM :Строите STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Воспроизводить звуковые эффекты при строительстве и других действиях STR_CONFIG_SETTING_SOUND_CLICK :Нажатия кнопок: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Воспроизводить звук нажатий на кнопки -STR_CONFIG_SETTING_SOUND_DISASTER :Аварии/катастрофы: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER :Аварии и катастрофы: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Воспроизводить звук аварий и катастроф STR_CONFIG_SETTING_SOUND_VEHICLE :Транспорт: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Воспроизводить звук, издаваемый транспортом @@ -1576,7 +1616,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интерва STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Выберите, должно ли техническое обслуживание транспорта выполняться через определённые промежутки времени, либо при снижении надёжности транспортного средства на определённый процент от максимума STR_CONFIG_SETTING_SERVINT_TRAINS :Интервал обслуживания по умолчанию для поездов: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Настройка периодичности тех. обслуживания для новых поездов -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P ень ня ней}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P ень ня ней}/% STR_CONFIG_SETTING_SERVINT_DISABLED :отключен STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Интервал обслуживания по умолчанию для автотранспорта: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Настройка периодичности тех. обслуживания для новых автомобилей @@ -1611,7 +1651,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Изм. про STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Показывать новости об изменении производительности предприятий, обслуживаемых конкурентами STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Изм. производительности предпр., никем не обслуживаемых: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Показывать новости об изменении производительности никем не обслуживаемых предприятий -STR_CONFIG_SETTING_NEWS_ADVICE :Советы/сведения по транспорту компании: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE :Советы и сведения, касающиеся транспорта компании: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Показывать сообщения о транспортных средствах, на которые следует обратить внимание STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новый транспорт: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Показывать новости о новых моделях транспортных средств @@ -1622,9 +1662,9 @@ STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Показыв STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Общая информация: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Показывать общие новости, вроде покупки эксклюзивных транспортных прав или проведения реконструкции дорог -STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Выкл -STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Кратко -STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Полно +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :отключено +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :кратко +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :полностью STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Цветные газеты появляются в {STRING} году STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Обычно в газетах печатают чёрно-белые изображения, а начиная с указанного года - цветные @@ -1657,11 +1697,11 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :все STR_CONFIG_SETTING_TOWN_LAYOUT :Тип дорожной сети для новых городов: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Тип дорожной сети в новых городах -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :старый алгоритм +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :классический алгоритм STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :улучшенный алгоритм STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :решёткой 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :решёткой 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :случайно +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :выбирается случайно STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Городам разрешено строить дороги: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Разрешить администрации городов расширять дорожную сеть. При отключенной настройке города самостоятельно расти не будут. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Города могут создавать ж/д переезды: {STRING} @@ -1669,7 +1709,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Разреши STR_CONFIG_SETTING_NOISE_LEVEL :Разрешить городам контролировать уровень шума аэропортов: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При выключенной настройке количество аэропортов ограничено двумя на каждый город. При включенной - администрация города ограничивает только уровень допустимого шума (он зависит от количества жителей). Уровень шума, производимого аэропортом, зависит от его типа и расстояния от центра города. STR_CONFIG_SETTING_TOWN_FOUNDING :Строительство городов в игре: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Разрешить игрокам создавать новые города +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Включение данной настройки позволяет игрокам основывать новые города STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :запрещено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :разрешено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :разрешено с выбором сети дорог @@ -1715,12 +1755,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 из {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :нет STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Стартовый множитель размера мегаполисов: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Средний размер мегаполисов по сравнению с остальными городами в начале игры -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Удалять бесполезные элементы дорог во время реконструкции: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Удалять тупиковые элементы дорог при реконструкции -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Обновлять граф распределения раз в {STRING} д{P 0:2 ень ня ней} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Обновлять граф распределения раз в {STRING}{NBSP}д{P 0:2 ень ня ней} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Период перерасчёта графов распределения. В каждом цикле рассчитывается не граф полностью, а только один из его компонентов. Чем меньше это значение, тем больше будет нагрузка на процессор. Чем больше значение, тем больше времени пройдёт перед началом расчёта графов для новых маршрутов. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Пересчитывать граф распределения раз в {STRING} д{P 0:2 ень ня ней} +STR_CONFIG_SETTING_LINKGRAPH_TIME :Пересчитывать граф распределения раз в {STRING}{NBSP}д{P 0:2 ень ня ней} STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Время, отведённое для перерасчёта компонентов графа. Расчёт запускается отдельным потоком и продолжается в течение указанного количества игровых дней. Если значение будет слишком маленьким, то, возможно, расчёт не успеет завершиться, и игра будет ждать завершения (это приведёт к задержкам). При больших значениях графы распределения будут медленнее обновляться при изменениях маршрутов. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :вручную STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :несимметричное @@ -1732,14 +1770,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :«Симмет STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Распределение ценных грузов: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Ценные грузы - это драгоценности, алмазы и золото. Модули NewGRF могут изменить определения грузов.{}«Симметричное» означает, что примерно одинаковое количество груза будет направляться по прямому и обратному маршрутам.{}«Несимметричное» означает, что объёмы грузов в любых направлениях не будут зависеть друг от друга.{}«Вручную» - не использовать автоматическое распределение грузов.{}На субарктических картах рекомендуется установить несимметричное или ручное распределение, так как банки не возвращают золото в шахты. В умеренном или субтропическом климате можно установить симметричное распределение, так как банки обмениваются ценностями между собой. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Распределение прочих грузов: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Симметричное» означает, что примерно одинаковое количество груза будет направляться по прямому и обратному маршрутам.{}«Несимметричное» означает, что объёмы грузов в любых направлениях не будут зависеть друг от друга.{}«Вручную» - не использовать автоматическое распределение грузов.{}Вам, скорее всего, потребуется несимметричное или ручное распределение. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Несимметричное» означает, что объёмы грузов в любых направлениях не будут зависеть друг от друга.{}«Вручную» - не использовать автоматическое распределение грузов. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Точность распределения: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чем выше данное значение, тем больше процессорного времени используется для расчёта графа грузоперевозок. При высоких значениях возможны задержки в игре. Однако при низких значениях расчёты грузопотоков будут неточными, и грузы, возможно, будут отправляться не туда, куда нужно. STR_CONFIG_SETTING_DEMAND_DISTANCE :Зависимость спроса от расстояния: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Если это значение больше 0, то количество груза, отправляемого с одной станции на другую, будет зависеть от расстояния между станциями. Чем выше это значение, тем больше груза будет отправляться к ближним станциям и меньше{NBSP}- к дальним. STR_CONFIG_SETTING_DEMAND_SIZE :Количество возвращаемого груза при симметричном распределении: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Установка этого значения ниже 100% заставит распределение быть менее «симметричным»: количество возвращаемого груза сможет быть меньше, чем количество отправленного. Установка в 0% сделает распределение полностью несимметричным. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Насыщение коротких маршрутов перед использованием вместительных: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Предел загрузки коротких маршрутов перед использованием вместительных: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :При наличии нескольких маршрутов между станциями алгоритм распределения грузов будет использовать кратчайший маршрут до его загрузки, потом следующий по длине и т.{NBSP}д. При избытке груза маршруты будут перегружаться начиная с самых производительных. Загрузка рассчитывается исходя из оценки пропускной способности (которая может быть неточной) и интенсивности использования. Эта настройка определяет, насколько загружать маршрут перед тем, как начать использовать следующий. Установите значение ниже 100% для того, чтобы избежать задержки груза, если пропускная способность маршрута будет переоценена алгоритмом. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Система единиц для скорости: {STRING} @@ -1749,13 +1787,13 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :метриче STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :СИ (м/с) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Система единиц для мощности: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Показывать мощность двигателей транспортных средств в выбранной системе единиц +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Показывать значения мощности двигателей транспортных средств в выбранной системе единиц STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :английская (л. с.) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :метрическая (л. с.) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :СИ (кВт) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Система единиц для массы: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Показывать величины массы в выбранной системе единиц +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Показывать значения массы в выбранной системе единиц STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :английская (малая тонна) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :метрическая (т) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :СИ (кг) @@ -1778,27 +1816,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :английс STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :метрическая (м) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СИ (м) -STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Локализация -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Строительство +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графика +STR_CONFIG_SETTING_SOUND :{ORANGE}Звуковые эффекты +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Общие настройки +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Окна просмотра +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Строительство +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Новости и информация +STR_CONFIG_SETTING_COMPANY :{ORANGE}Компания +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Финансы STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт -STR_CONFIG_SETTING_STATIONS :{ORANGE}Станции -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Экономика -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Распределение грузов +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Физическая модель +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ограничения +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Аварии и катастрофы +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Создание карты +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Окружающая среда +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Городская администрация +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Города +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Предприятия +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Распределение грузов STR_CONFIG_SETTING_AI :{ORANGE}Конкуренты -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Настройки экрана -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Взаимодействие -STR_CONFIG_SETTING_SOUND :{ORANGE}Звуковые эффекты -STR_CONFIG_SETTING_NEWS :{ORANGE}Новости и сообщения -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сигналы -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Перемещение грузов STR_CONFIG_SETTING_AI_NPC :{ORANGE}Искусственный интеллект -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автообновление -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Обслуживание -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Поезда -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Города -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Предприятия STR_CONFIG_SETTING_PATHFINDER_OPF :оригинальный STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1847,7 +1887,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Сете STR_INTRO_GAME_OPTIONS :{BLACK}Настройки игры STR_INTRO_HIGHSCORE :{BLACK}Таблица рекордов -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Расширенные настройки +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Настройки STR_INTRO_NEWGRF_SETTINGS :{BLACK}Настройки NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Проверить онлайн-контент STR_INTRO_SCRIPT_SETTINGS :{BLACK}Настройки ИИ / скрипта @@ -1867,7 +1907,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Выбр STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Открыть настройки игры STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показать таблицу рекордов -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Показать расширенные настройки +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Окно настроек STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показать настройки NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Найти новый и обновлённый контент для загрузки STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Изменить настройки ИИ / игрового скрипта @@ -1907,6 +1947,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Игр STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Волшебный динамит (снос ВСЕГО): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Туннели могут пересекаться: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Большие самолёты реже разбиваются в малых аэропортах: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Изменить макс. высоту карты: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Изменить максимальную высоту гор на карте STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Умеренный ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Субарктический ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Субтропический ландшафт @@ -1955,6 +1997,7 @@ STR_LIVERY_FREIGHT_TRAM :Грузово STR_FACE_CAPTION :{WHITE}Внешний вид STR_FACE_CANCEL_TOOLTIP :{BLACK}Не менять внешность STR_FACE_OK_TOOLTIP :{BLACK}Применить новую внешность +STR_FACE_RANDOM :{BLACK}Случайное STR_FACE_MALE_BUTTON :{BLACK}Мужское STR_FACE_MALE_TOOLTIP :{BLACK}Выбор мужских лиц @@ -2075,13 +2118,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Защи STR_NETWORK_START_SERVER_UNADVERTISED :Нет STR_NETWORK_START_SERVER_ADVERTISED :Да STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клиент{P "" а ов} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клиентов: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. количество клиентов: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Выбор максимального числа клиентов. Не все места должны быть заняты STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} компани{P я и й} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Макс. компаний: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Макс. количество компаний: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ограничить максимальное количество компаний на сервере STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} наблюдател{P ь я ей} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Макс. наблюдателей: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Макс. количество наблюдателей: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ограничить максимальное количество наблюдателей на сервере STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Язык общения: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Другие игроки будут знать, на каком языке общаются на сервере @@ -2194,6 +2237,7 @@ STR_NETWORK_CLIENT :Клиент STR_NETWORK_SPECTATORS :Наблюдатели STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введите сумму денег, которую вы хотите передать +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Наблюдатель # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не сохранять пароль @@ -2338,7 +2382,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Раз STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Выбрано вместе с {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Зависимости: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Теги: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD собрана без поддержки библиотеки «zlib»... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD скомпилирован без поддержки библиотеки «zlib»... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... загрузка контента невозможна! # Order of these is important! @@ -2439,7 +2483,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Стро STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Строительство депо (для приобретения и обслуживания поездов). При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Установка на рельсах точек пути. Нажатие Ctrl позволяет объединять точки. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Строительство ж/д станций. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Установка сигналов. Ctrl переключает семафоры/светофоры.{}Перетаскиваием можно строить сигналы на прямом участке пути. Ctrl строит сигналы до ближайшего пересечения.{}Ctrl+щелчок переключает открытие окна выбора сигналов. При нажатом Shift - оценка стоимости строительства. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Установка сигналов. Ctrl переключает семафоры/светофоры.{}Перетаскиванием можно строить сигналы на прямом участке пути. С нажатым Ctrl - строительство сигналов до ближайшего пересечения или сигнала.{}Ctrl+щелчок переключает открытие окна выбора сигналов. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Строительство ж/д мостов. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Строительство ж/д туннелей. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Переключение между строительством и удалением ж/д путей, сигналов, станций. При нажатом Ctrl убирает станции с рельсами. @@ -2726,6 +2770,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Принимает: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Макс. скорость ж/д: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Макс. скорость авто: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Камни @@ -2822,7 +2867,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-2013 Команда разработчиков OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Команда разработчиков OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру @@ -2831,7 +2876,7 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Сохр STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Загрузить сценарий STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Загрузить карту STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Сохранить карту высот -STR_SAVELOAD_HOME_BUTTON :{BLACK}Щёлкните, чтобы перейти к текущей папке загрузки/сохранения по умолчанию +STR_SAVELOAD_HOME_BUTTON :{BLACK}Переход в каталог загрузки и сохранения, установленный по умолчанию STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} свободно STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Список дисков, папок и сохранённых игр STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Выбранное название для сохранения игры @@ -2841,6 +2886,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Сохр STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Сохранить игру под выбранным именем STR_SAVELOAD_LOAD_BUTTON :{BLACK}Загрузить STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Загрузить выбранную игру +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Загрузить выбранную карту высот STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Информация об игре STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Нет информации. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2856,19 +2902,18 @@ STR_MAPGEN_BY :{BLACK}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Количество городов: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кол-во предпр.: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Макс. высота карты: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Увеличить максимальную высоту гор на карте на 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Уменьшить максимальную высоту гор на карте на 1 STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Снеговая линия: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Поднять снеговую линию STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Опустить снеговую линию -STR_MAPGEN_RANDOM_SEED :{BLACK}Начальное число: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Ландшафт генерируется псевдослучайно, число - опорная точка в последовательности случайных чисел. -STR_MAPGEN_RANDOM :{BLACK}Случайное -STR_MAPGEN_RANDOM_HELP :{BLACK}Изменить случайный номер, используемый генератором ландшафта STR_MAPGEN_LAND_GENERATOR :{BLACK}Генератор ландшафта: STR_MAPGEN_TREE_PLACER :{BLACK}Генератор лесов: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип ландшафта: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Количество морей и озёр: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Количество рек: -STR_MAPGEN_SMOOTHNESS :{BLACK}Гладкость: +STR_MAPGEN_SMOOTHNESS :{BLACK}Грубость ландшафта: STR_MAPGEN_VARIETY :{BLACK}Разнообразие ландшафта: STR_MAPGEN_GENERATE :{WHITE}Создать @@ -2889,7 +2934,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назв STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Размер: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Введите случайное число +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Максимальная высота карты STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Изменить высоту снеговой линии STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Изменить год начала игры @@ -2944,6 +2989,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Ввер STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Переместить выбранный файл NewGRF выше по списку STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Вниз STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Переместить выбранный файл NewGRF ниже по списку +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Обновить +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Обновить файлы модулей NewGRF, если есть такая возможность STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Список используемых файлов NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Параметры @@ -2968,6 +3015,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Файл STR_NEWGRF_SETTINGS_DISABLED :{RED}Отключено STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Несовместимо с данной версией OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Сохранение набора +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Список доступных наборов. Выберите один из них, чтобы скопировать его название в строку имени. +STR_SAVE_PRESET_TITLE :{BLACK}Введите имя набора +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Текущее имя для сохранения набора +STR_SAVE_PRESET_CANCEL :{BLACK}Отмена +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не делать никаких изменений +STR_SAVE_PRESET_SAVE :{BLACK}Сохранить +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Сохранить набор под выбранным именем + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Изменить параметры NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрыть @@ -2991,14 +3048,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Пара # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выравнивание спрайта {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следующий спрайт -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перейти к следующему нормальному спрайту, пропуская псевдоспрайты, а также изм.{NBSP}цвета/шрифтовые. +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перейти к следующему нормальному спрайту, пропуская изменяющие цвет, шрифтовые, псевдоспрайты. Переход из конца списка к первому спрайту. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перейти к спрайту STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Перейти к заданному спрайту. Если спрайт не нормальный, переход пройзойдет к следующему нормальному. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Предыдущий спрайт -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перейти к предыдущему нормальному спрайту, пропуская псевдоспрайты, а также изм.{NBSP}цвета/шрифтовые. +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перейти к предыдущему нормальному спрайту, пропуская изменяющие цвет, шрифтовые, псевдоспрайты. Переход из начала списка к последнему спрайту. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Представление выбранного спрайта. Выравнивание не учитывается при прорисовке этого спрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Двигайте спрайт, изменяя смещение по X и по Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Смещение по X: {NUM}, Смещение по Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Сброс смещения +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Сбросить значения относительного смещения +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Смещение X: {NUM}; смещение Y: {NUM} (абсолютное) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Смещение X: {NUM}; смещение Y: {NUM} (относительное) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Выбрать спрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Выберите любой спрайт на экране @@ -3055,6 +3115,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Файлы STR_NEWGRF_BROKEN :{WHITE}Файл NewGRF «{0:STRING}» может привести к потере синхронизации и вылету игры. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Меняется состояние локомотива «{1:ENGINE}», находящегося вне депо STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Меняется длина транспорта «{1:ENGINE}», находящегося вне депо +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Он изменил ёмкость ТС «{1:ENGINE}» за пределами депо или без задания на переоборудование STR_BROKEN_VEHICLE_LENGTH :{WHITE}Поезд «{VEHICLE}», принадлежащий «{COMPANY}», имеет неправильную длину. Вероятно, это вызвано проблемами в файле новой графики (NewGRF). Игра может рассинхронизироваться или вылететь. STR_NEWGRF_BUGGY :{WHITE}NewGRF «{0:STRING}» предоставляет неверную информацию. @@ -3069,6 +3130,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <неи STR_NEWGRF_INVALID_ENGINE :<неправильная модель> STR_NEWGRF_INVALID_INDUSTRYTYPE :<неизвестное предприятие> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<недопустимое ТС> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Сканирование NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Идёт сканирование NewGRF. Это займёт некоторое время... @@ -3106,8 +3170,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} доставлено STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (недостаточно) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (достаточно) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK} д{P ень ня ней} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK} д{P ень ня ней} (профинансировано) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK}{NBSP}д{P ень ня ней} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK}{NBSP}д{P ень ня ней} (профинансировано) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Город {RED}не{BLACK} развивается STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Уровень шума в городе: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Показать город в основном окне. Ctrl+щелчок - показать в дополнительном окне. @@ -3167,7 +3231,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Информа STR_GOAL_QUESTION_CAPTION_WARNING :Предупреждение STR_GOAL_QUESTION_CAPTION_ERROR :Ошибка -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Отменить STR_GOAL_QUESTION_BUTTON_OK :Ok STR_GOAL_QUESTION_BUTTON_NO :Нет @@ -3186,6 +3250,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Перезап STR_GOAL_QUESTION_BUTTON_POSTPONE :Отсрочить STR_GOAL_QUESTION_BUTTON_SURRENDER :Сдаться STR_GOAL_QUESTION_BUTTON_CLOSE :Закрыть +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсидии @@ -3206,6 +3271,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Пред STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Предыдущая страница STR_STORY_BOOK_NEXT_PAGE :{BLACK}Следующая STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Следующая страница +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Неверная ссылка на достижение # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Список станций - щелчок по названию показывает станцию в основном окне. Ctrl+щелчок показывает в дополнительном окне. @@ -3220,7 +3286,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}На с # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ожидает: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} транзитом из {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} зарезервировано для погрузки) @@ -3315,7 +3380,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}ИТОГО: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Баланс: STR_FINANCES_LOAN_TITLE :{WHITE}Заём -STR_FINANCES_MAX_LOAN :{WHITE}Максимальный заём: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Макс. сумма займа: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Занять {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Взять деньги взаймы. Ctrl+щелчок - увеличить заём до максимума. @@ -3464,12 +3529,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Без груп STR_GROUP_DEFAULT_SHIPS :Без группы STR_GROUP_DEFAULT_AIRCRAFTS :Без группы -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Щёлкните по имени группы для отображения списка транспорта +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Щёлкните по имени группы для отображения списка транспорта. Можно создавать вложенные группы с помощью перетаскивания. STR_GROUP_CREATE_TOOLTIP :{BLACK}Создать группу STR_GROUP_DELETE_TOOLTIP :{BLACK}Удалить выбранную группу STR_GROUP_RENAME_TOOLTIP :{BLACK}Переименовать выбранную группу STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Защита транспорта в группе от глобальной автозамены +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Удаление группы +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Удалить эту и все вложенные группы? + STR_GROUP_ADD_SHARED_VEHICLE :Добавить транспорт с общим маршрутом STR_GROUP_REMOVE_ALL_VEHICLES :Удалить все @@ -3507,10 +3575,10 @@ STR_PURCHASE_INFO_ALL_BUT :Всё, кро STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. тяговое усилие: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальность: {GOLD}{COMMA} клет{P ка ки ок} -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список локомотивов и вагонов - щёлкните для получения информации -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автотранспорта - щёлкните для получения информации -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблей - щёлкните для получения информации -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список воздушных судов - щёлкните для получения информации +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список локомотивов и вагонов - щёлкните для получения информации. Ctrl+щелчок скроет/покажет ТС. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автотранспорта - щёлкните для получения информации. Ctrl+щелчок скроет/покажет выбранный автомобиль. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблей - щёлкните для получения информации. Ctrl+щелчок скроет/покажет выбранный корабль. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список воздушных судов - щёлкните для получения информации. Ctrl+щелчок скроет/покажет ТС. STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купить STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купить @@ -3532,6 +3600,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Изме STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Изменить название модели корабля STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Изменить название модели возд. судна +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Скрыть +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Скрыть +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Скрыть +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Скрыть + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Показать +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Показать +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Показать +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Показать + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Переключить скрытие/отображение выбранного локомотива/вагона +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Переключить скрытие/отображение выбранной модели автомобиля +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Переключить скрытие/отображение выбранной модели корабля +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Переключить скрытие/отображение выбранной модели воздушного судна + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Название модели поезда STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Название модели автомобиля STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Название модели корабля @@ -3646,6 +3729,11 @@ STR_REPLACE_VEHICLE_SHIP.gen :корабле STR_REPLACE_VEHICLE_AIRCRAFT :Авиатранспорт STR_REPLACE_VEHICLE_AIRCRAFT.gen :воздушного транспорта +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Имеющиеся ТС +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Здесь перечислены модели используемых транспортных средств +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Доступные ТС +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Здесь перечислены модели транспортных средств, доступные для замены + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Выбор типа транспорта для замены STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Выбор типа транспорта, на который следует заменить @@ -3770,7 +3858,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ёмко STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Выручка перевозки: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Осмотр каждые {LTBLUE}{COMMA} дней{BLACK} Последний раз: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Осмотр каждые {LTBLUE}{COMMA}{NBSP}дней{BLACK} Последний раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Осмотр каждые {LTBLUE}{COMMA}%{BLACK} Последний раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Увеличить интервал обслуживания на 10. Ctrl+щелчок увеличивает интервал обслуживания на 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Уменьшить интервал обслуживания на 10. Ctrl+щелчок уменьшает интервал обслуживания на 5. @@ -3996,14 +4084,18 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Граф STR_TIMETABLE_NO_TRAVEL :Нет назначения STR_TIMETABLE_NOT_TIMETABLEABLE :В пути (время учтено в ближайшем не автоматическом задании) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В пути (время не задано) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :В пути со скоростью не более {2:VELOCITY} (время не задано) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В пути (график не составлен) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Идти со скоростью не более {2:VELOCITY} (график не составлен) STR_TIMETABLE_TRAVEL_FOR :В пути {STRING} -STR_TIMETABLE_TRAVEL_FOR_SPEED :В пути {STRING} со скоростью не более {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Идти {STRING} со скоростью не более {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :В пути примерно {STRING} (график не составлен) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Идти примерно {STRING} со скоростью не более {VELOCITY} (график не составлен) +STR_TIMETABLE_STAY_FOR_ESTIMATED :(ждать {STRING}, график не составлен) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(в пути {STRING}, график не составлен) STR_TIMETABLE_STAY_FOR :и ждать {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :и идти в {STRING} -STR_TIMETABLE_DAYS :{COMMA} д{P ень ня ней} -STR_TIMETABLE_TICKS :{COMMA} тик{P "" а ов} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}д{P ень ня ней} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}тик{P "" а ов} STR_TIMETABLE_TOTAL_TIME :{BLACK}Весь маршрут займёт {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Движение по маршруту займёт {STRING} (не всё учтено) @@ -4129,6 +4221,8 @@ STR_AI_SETTINGS_START_DELAY :Запуска STR_TEXTFILE_README_CAPTION :{WHITE}Инструкция к {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Список изменений к {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Лицензия к {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Переносить текст +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Переносить текст так, чтобы он помещался в окне без необходимости прокрутки STR_TEXTFILE_VIEW_README :{BLACK}Посмотреть инструкцию STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Список изменений STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лицензия @@ -4239,6 +4333,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Земл STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Уже на уровне моря STR_ERROR_TOO_HIGH :{WHITE}Слишком высоко STR_ERROR_ALREADY_LEVELLED :{WHITE}... уже ровно +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}После этого высота моста будет недопустимо большой. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Невозможно изменить название компании... @@ -4265,7 +4360,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... сл STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... слишком близко к другому городу STR_ERROR_TOO_MANY_TOWNS :{WHITE}... слишком много городов STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... нет места на карте -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Города не будут строить дороги. Вы можете включить строительство дорог в Расш. настройки->Экономика->Города +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Города не будут строить дороги сами. Вы можете включить строительство дорог в разделе «Настройки -> Окр.{NBSP}среда -> Города». STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Идут дорожные работы... STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Невозможно уничтожить город:{}к нему относится станция или депо, либо невозможно очистить одну из занимаемых им клеток. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}...в центре города нет места для статуи @@ -4289,6 +4384,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ле STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... можно строить только выше снеговой линии STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... можно строить только ниже снеговой линии +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Нет подходящего места для {STRING.gen} +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Измените настройки создания карты для получения более подходящей карты + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Здесь невозможно построить станцию... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Здесь невозможно построить остановку... @@ -4425,6 +4523,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Снач STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Не может начинаться и заканчиваться в той же точке STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Опоры моста должны быть на одном уровне STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Слишком низкий мост +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Мосты такой высоты строить нельзя. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Начало и конец должны быть на одной линии STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... оба конца моста должны опираться на землю STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... мост слишком длинный @@ -4451,6 +4550,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... вы STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Не удалось создать группу... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Не удалось удалить группу... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Не удалось переименовать группу... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Не удалось установить корректное вложение групп... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Не удалось удалить весь транспорт из группы... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Не удалось добавить транспорт в группу... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Не удалось добавить транспорт с общим маршрутом в группу... @@ -4722,7 +4822,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Паровоз STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :Тепловоз MJS 250 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Паровоз Ploddyphut «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Паровоз Powernaut «Чу-Чу» -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паровоз Mightymover «Чу-Чу» +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паровоз MightyMover «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Тепловоз Ploddyphut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Тепловоз Powernaut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Паровоз Wills 2-8-0 @@ -4931,7 +5031,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пассажи STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пассажир. судно Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Сухогруз Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Сухогруз Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухогруз Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухогруз MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Сухогруз Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -5025,6 +5125,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (скрыт) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5060,8 +5161,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -5072,9 +5171,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 0620db7100..95a47a4e38 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -391,6 +391,7 @@ STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P a e a} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a e a} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg @@ -398,6 +399,7 @@ STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P "" a a} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ar ra ara} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ @@ -426,6 +428,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zatvori STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Naslov - povucite mišem da biste pomerili prozor STR_TOOLTIP_SHADE :{BLACK}Zamotaj prozor - prikazuje se samo naslov STR_TOOLTIP_DEBUG :{BLACK}Prikazuje NewGRF podatake o otklanjanju grešaka +STR_TOOLTIP_DEFSIZE :{BLACK}Menja veličinu prozora na podrazumevanu. Ctrl+Klik da sačuvate tekuću veličinu kao podrazumevanu STR_TOOLTIP_STICKY :{BLACK}Markirajte ovaj prozor kao ne za zatvaranje tipkom 'Zatvaranje svih prozora'. Uz Ctrl+Click to stanje će biti zapamćeno. STR_TOOLTIP_RESIZE :{BLACK}Pritisnite i povucite kako bi prozor promenio veličinu STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Izbor velikog/malog prozora @@ -433,6 +436,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrol - STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizač - pomera spisak levo/desno STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Uklanja građevinu i dr. na kvadratu tla. Ctrl obeležava dijagonalno područje. Shift prebacuje između izgradnje i prikaza procene troškova +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Prikaži skriveni vozovi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Prikaži skrivena drumska vozila +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Prikaži skrivene brodove +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Prikaži skrivene letilice + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Omogućavanje ovog podešavanja znači da će se i skriveni vozevi biti prikazani. +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Omugućavanjem ovog dogmeta, sakrivena drumska vozila će takođe biti prikazan +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Omugućavanjem ovog dogmeta, sakriveni brod će takođe biti prikazan +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Omugućavanjem ovog dogmeta, sakriveni avion će takođe biti prikazan + # Query window STR_BUTTON_DEFAULT :{BLACK}Prvobitno STR_BUTTON_CANCEL :{BLACK}Otkaži @@ -470,16 +484,18 @@ STR_SORT_BY_LENGTH :Dužini STR_SORT_BY_LIFE_TIME :Isticanju životnog veka STR_SORT_BY_TIMETABLE_DELAY :Kašnjenje u rasporedu STR_SORT_BY_FACILITY :Vrsti stanice +STR_SORT_BY_WAITING_TOTAL :Ukupan teret na čekanju +STR_SORT_BY_WAITING_AVAILABLE :Dostupan teret na čekanju STR_SORT_BY_RATING_MAX :Najvišoj oceni tereta STR_SORT_BY_RATING_MIN :Najnižoj oceni tereta STR_SORT_BY_ENGINE_ID :ID mašine (standardno) STR_SORT_BY_COST :Ceni STR_SORT_BY_POWER :Snazi STR_SORT_BY_TRACTIVE_EFFORT :Vučnoj snazi -STR_SORT_BY_INTRO_DATE :Datumu uvođenja +STR_SORT_BY_INTRO_DATE :Datum uvođenja STR_SORT_BY_RUNNING_COST :Troškovima održavanja STR_SORT_BY_POWER_VS_RUNNING_COST :Snazi/Troškovima održavanja -STR_SORT_BY_CARGO_CAPACITY :Nosivosti tovara +STR_SORT_BY_CARGO_CAPACITY :Nosivosti tereta STR_SORT_BY_RANGE :Dometu STR_SORT_BY_POPULATION :Naseljenosti STR_SORT_BY_RATING :Rejtingu @@ -516,7 +532,7 @@ STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Podaci o STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Zamenjuje trake sa alatima # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Čuvanje scenaria, učitavanje scenarija, napuštanje editora, izlaz +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Čuvanje scenarija, učitavanje scenarija, napuštanje editora, izlaz STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor scenarija STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Pomeranje datuma početka za jednu godinu unazad @@ -543,7 +559,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Izađi ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opcije -STR_SETTINGS_MENU_CONFIG_SETTINGS :Detaljna podešavanja +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Podešavanja STR_SETTINGS_MENU_SCRIPT_SETTINGS :Podešavanja VI/Skripte partije STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF podešavanja STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcije transparentnosti @@ -643,7 +659,7 @@ STR_ABOUT_MENU_TOGGLE_CONSOLE :Uključi/isklju STR_ABOUT_MENU_AI_DEBUG :Korekcija veštačke inteligencije / skripte partije STR_ABOUT_MENU_SCREENSHOT :Sačuvaj sliku STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Čuva sliku skroz približenog terena -STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Uobičajna udaljenost za sliku +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Podrazumevani nivo zuma za sliku ekrana STR_ABOUT_MENU_GIANT_SCREENSHOT :Sačuvaj sliku celog terena STR_ABOUT_MENU_ABOUT_OPENTTD :O OpenTTD-u STR_ABOUT_MENU_SPRITE_ALIGNER :Poravnjavanje sprajta @@ -651,7 +667,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Uključi/isklju STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Uključi/Isključi bojenje nesređenih blokova ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -667,22 +683,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -868,6 +902,7 @@ STR_SMALLMAP_TYPE_OWNERS :Vlasnici STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Prikazuje reljef na karti STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Prikazuje vozila na karti STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Prikazuje fabrike na karti +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Prikazuje protok tereta na karti STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Prikazuje putne rute na karti STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Prikazuje vegetaciju na karti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Prikazuje vlasništva na karti @@ -906,6 +941,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Prikazuje imena naselja na karti STR_SMALLMAP_CENTER :{BLACK}Pozicionira kartu na trenutnu poziciju STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Sva sakrivena @@ -916,6 +952,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Prikaži STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Promena prikaza elevacije STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Uklanja prikaz vlasništva preduzeća sa karte STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikazuje vlasništvo preduzeća na karti +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ne prikazuje nijedan teret na mapi +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Prikazuje sve terete na mapi # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Prikaži poslednju poruku ili izveštaj @@ -948,7 +986,7 @@ STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLAC STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Cepelin se srušio kod {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Drumskom vozilo uništeno pri sudaru sa 'NLO'! -STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozija naftnte rafinerije blizu naselja {TOWN}! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozija naftne rafinerije blizu naselja {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrika uništena pri nepoznatim okolnostima blizu naselja {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'NLO' sleteo blizu naselja {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Urušavanje rudnika uglja uništilo je svoju okolinu blizu naselja {TOWN}! @@ -974,7 +1012,7 @@ STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problem sa zalihama je prouzrokovao da {STRING} objavi prestanak sa daljim radom! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Nedostatak obližnjeg drveća je prouzrokovao da {STRING} objavi prestanak sa daljim radom! -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropska Monetarna Unija!{}{}Euro je uveden kao jedina valuta za uobičajne transakcije u vašoj zemlji! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropska Monetarna Unija!{}{}Euro je uveden kao jedina valuta za uobičajene transakcije u vašoj zemlji! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Svetska recesija!{}{}Finansijski eksperti se plaše najgoreg dok ekonomija slabi sve više! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recesija završena!{}{}Preokret u trgovini pruža podršku industrijama dok ekonomija jača! @@ -992,13 +1030,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeka u depou STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeka u hangaru -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo naredbi u voznom redu STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima neodređenu naredbu STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima dupliciranu naredbu STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima neodgovarajuću stanicu u naredbi -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zastareva STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} previše zastareva @@ -1081,10 +1117,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rijal (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Drumska vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Izaberi stranu puta kojom će se kretati drumska vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Levom stranom @@ -1120,24 +1152,30 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonska STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Auto čuvanje pozicije STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izbor vremenskog intervala između dve automatski sačuvane pozicije +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Isključeno -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svaki mesec +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svakog meseca STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Svaka 3 meseca STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Svakih 6 meseci STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Svakih 12 meseci +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Odaberite jezik koji će se koristiti STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Ceo ekran -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Pritisnite ovde kako bi ste igrali OpenTTD na celom ekranu +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Pritisnite ovde kako biste igrali OpenTTD na celom ekranu STR_GAME_OPTIONS_RESOLUTION :{BLACK}Veličina ekrana STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Odaberite željenu veličinu ekrana STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format slike ekrana -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Odaberite željeni format slike ekrana +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veličina interfejsa +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Izaberite većinu elementa koja će se koristiti + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normalna veličina +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Uvećavajte veličinu dva puta +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Uvećavajte veličinu četiri puta STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni skup grafika STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberite željeni skup osnovnih grafika @@ -1153,6 +1191,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberit STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} oštećen{P a e ih} datotek{P a e a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatni podaci o osnovnom skupu muzike +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Neuspešno dobijanje spiska podržanih rezolucija STR_ERROR_FULLSCREEN_FAILED :{WHITE}Neuspešno prebacivanje u ceo ekran # Custom currency window @@ -1206,12 +1245,12 @@ STR_AI_SPEED_MEDIUM :srednja STR_AI_SPEED_FAST :brza STR_AI_SPEED_VERY_FAST :jako brza -STR_SEA_LEVEL_VERY_LOW :Vrlo Niska -STR_SEA_LEVEL_LOW :Niska -STR_SEA_LEVEL_MEDIUM :Srednja -STR_SEA_LEVEL_HIGH :Visoka -STR_SEA_LEVEL_CUSTOM :Prilagođeno -STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Prilagođeno ({NUM}%) +STR_SEA_LEVEL_VERY_LOW :Vrlo nizak +STR_SEA_LEVEL_LOW :Nizak +STR_SEA_LEVEL_MEDIUM :Srednji +STR_SEA_LEVEL_HIGH :Visok +STR_SEA_LEVEL_CUSTOM :Prilagođen +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Prilagođen ({NUM}%) STR_RIVERS_NONE :Nijedna STR_RIVERS_FEW :Nekoliko @@ -1231,6 +1270,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Ravničarski STR_TERRAIN_TYPE_FLAT :Brdski STR_TERRAIN_TYPE_HILLY :Brdsko-planinski STR_TERRAIN_TYPE_MOUNTAINOUS :Planinski +STR_TERRAIN_TYPE_ALPINIST :Planinar STR_CITY_APPROVAL_PERMISSIVE :Popustljiv STR_CITY_APPROVAL_TOLERANT :Tolerantan @@ -1238,8 +1278,8 @@ STR_CITY_APPROVAL_HOSTILE :Neprijateljski STR_WARNING_NO_SUITABLE_AI :{WHITE}Nisu dostupne odgovarajuće VI...{}Možete preuzeti nekoliko VI preko sistema za preuzimanje dodataka -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Napredna Podešavanja +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Podešavanja STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtriraj po: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Proširi sve STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skupi sve @@ -1252,7 +1292,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Podešavanja ig STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Podešavanja preduzeća (čuvaju se prilikom snimanja; utiču samo na nove igre) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Podešavanja preduzeća (čuvaju se prilikom snimanja; utiču samo tekuće preduzeće) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Prikaži: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ograničava donju listu tako da prikazuje samo promenjena podešavanja STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovna podešavanja STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredna podešavanja @@ -1261,7 +1300,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Podešavanja sa STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Podešavanja sa vrednošću različitom od vrednosti za novu igru STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ograničava donju listu na određen tip podešavanja -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sva podešavanja +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tipovi svih podešavanja STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Podešavanja klijenta (nisu uskladištena u sačuvanoj igri; utiču na sve partije) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Podešavanja igre (biće uskladištena u sačuvanoj igri; ima efekta samo na nove partije) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Podešavanja igre (biće uskladištena u sačuvanoj igri; ima efekta samo na nove partije) @@ -1307,8 +1346,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Uključuje i is STR_CONFIG_SETTING_CITY_APPROVAL :Stav gradskog odbora u pogledu restrukturiranja zone: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Izbor koliko će buka i zagađenje koje proizvode kompanije uticati na njihov gradski rejting i dalje građevinske akcije u toj zoni -STR_CONFIG_SETTING_BUILDONSLOPES :Dozvoljena gradnja na kosinama i obalama: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ako je uključeno, rute i stanice mogu se graditi na većini strmina. Ako je isključeno, mogu se graditi samo na strminama koje odgovaraju smeru rute i ne traže posebnu osnovu +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimalna visina mape: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Namestite dozvoljen maksimum visine planina na ovoj mapi +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Ne mozete namestiti maksimalnu visinu mape ovoj vrednosti. Barem još jedna planina je veća STR_CONFIG_SETTING_AUTOSLOPE :Dozvoljena izmena nagiba ispod zgrada, koloseka, itd. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dozvoli iskopavanja ispod građevina i pruge bez da se uklone STR_CONFIG_SETTING_CATCHMENT :Realističnije veličine prihvatnih površina: {STRING} @@ -1333,16 +1373,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Zabranjeno okre STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Okretanje za 90 stepeni se dešava kada se uspravna pruga nalazi odmah posle vodoravne pruge na susednoj pločici i time čini da voz skreće pod 90 stepeni kad prelazi sa pločice na pločicu, umesto uobičajenih 45 stepeni kod drugih kombinacija pruge. Ovo takođe važi i za radijus zaokreta brodova STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dozvoljeno sjedinjavanje udaljenih stanica: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Dozvoljava dodavanje delova stanici bez da oni dodiruju postojeće delove stanice. Zahteva Ctrl+Klik kod postavljanja novih delova -STR_CONFIG_SETTING_IMPROVEDLOAD :Koristiti poboljšan algoritam utovara: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ako je omogućen, više vozila koja čekaju u stanici će se utovarivati jedno za drugim. Sledeće vozilo će početi sa utovarom kada čeka dovoljno tereta da napuni prethodno vozilo -STR_CONFIG_SETTING_GRADUAL_LOADING :Postepeno utovarivanje u vozilo: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupno utovaruj vozila koristeći različito vreme utovara za svako vozilo, umesto utovara odjednom za fiksno vreme koje zavisi samo od količine tovara STR_CONFIG_SETTING_INFLATION :Inflacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Omogućuje inflaciju tako da troškovi rastu malo brže od isplata -STR_CONFIG_SETTING_SELECTGOODS :Dostavljanje tovara na stanicu samo ako ima potražnje: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dostavlja na stanicu samo onaj tovar koji je potreban vozilu koje se utovaruje. Ovo onemogućava loš rejting za one vrste tovara koji ne mogu da se iskoriste u stanici STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Najveća dužina mosta: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimalna dužina za podizanje mostova +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Najveća visina mosta: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimalna visina za dradjenje mostova STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Najveća dužina tunela: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimalna dužina za iskopavanje tunela STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metod izgradnje finansiranih primarnih industrija: {STRING} @@ -1368,10 +1404,10 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mesto gde će s STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :početak STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredina STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :kraj -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Vozila čekaju u koloni (na zauzetim stanicama): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Čini da drumsko vozilo čeka ispred zauzetih stanica dok se ne raščiste STR_CONFIG_SETTING_AUTOSCROLL :Pomeranje prozora kada miš priđe ivicama: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ako je omogućeno, prikaz će početi da skroluje kada je kursor miša blizu ivice prozora STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Isključeno +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Glavni prikaz, samo u režimu preko celog ekrana STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Glavni prikaz STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Svaki prikaz STR_CONFIG_SETTING_BRIBE :Dozvoljeno podmićivanje lokalnih vlasti: {STRING} @@ -1385,6 +1421,7 @@ STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dozvoljava pred STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Dozvoljeno slanje novca drugim preduzećima: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Dozvoljava prenos novca između preduzeća u modu za više igrača STR_CONFIG_SETTING_FREIGHT_TRAINS :Množilac težine tovara za simulaciju opterećenja vozova: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Podesi uticaj nošenje tereta u vozovima. Veća vrednost čini nošenje tereta zahtevniji za vozove, posebno na brdima STR_CONFIG_SETTING_PLANE_SPEED :Faktor brzine aviona: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Postavlja brzinu aviona relativno u odnosu na druge vrste vozila kako bi se ograničio prihod od avio saobraćaja STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} @@ -1397,57 +1434,70 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dozvoljene uli STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dozvoljava izgradnju protočnih drumskih stanica na putevima čiji je vlasnik naselje STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Dozvoljene ulične stanice na kolovozima u vlasništvu drugih preduzeća: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dozvoljava izgradnju protočnih drumskih stanica na putevima čiji je vlasnik drugo preduzeće -STR_CONFIG_SETTING_ADJACENT_STATIONS :Dozvoljena gradnja stanica jedne pored druge: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Dozvoljava da se različite stanice dodiruju -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Dozvoljeno više NewGRF kolekcija mašina: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Promena ovog podešavanja nije moguća dok postoje vozila STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Održavanje infrastrukture: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ako je omogućeno, infrastruktura će imati troškove održavanja. Trošak raste brže sa porastom veličine putne mreže i time više pogađa veća preduzeća od manjih STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Nezastarevanje aerodroma: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Omogućavanje ovog podešavanja čini svaki tip aerodroma zauvek pristupan nakon njegovog uvođenja STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Upozorenje ukoliko se vozilo izgubi: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Prikazuje poruke o vozilima koja ne mogu da nađu put do odredišta STR_CONFIG_SETTING_ORDER_REVIEW :Provera naredbi vozila: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Kada je omogućeno, naređenja vozila se periodično proveravaju, i neke jasne probleme su izveštavane sa vestnom porukom kada su detektovane STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nijedno STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :da, osim zaustavljenih vozila STR_CONFIG_SETTING_ORDER_REVIEW_ON :svih vozila STR_CONFIG_SETTING_WARN_INCOME_LESS :Upozorenje ukoliko vozilo pravi gubitke: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ako je omogućeno, šalje vest kada vozilo u toku kalendarske godine nije ostvarilo zaradu STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila nikad ne zastarevaju: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ako je omogućeno, svi modeli vozila ostaju zauvek dostupni (posle njihovog predstavljanja) STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatska zamena kada vozilo ostari: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kada je omogućeno, vozilo blizu kraja života će se automatski zameniti kada su ispunjeni uslovi obnavljanja STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatska zamena kada je vozilo staro najviše {STRING} STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Starost vozila pri kojoj postaje kandidat za automatsku zamenu STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mesec{P "" a i} pre STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mesec{P "" a i} posle STR_CONFIG_SETTING_AUTORENEW_MONEY :Najmanja potrebna količina novca za zamenu: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Najmanji iznos novca koji mora ostati u banci pre automatskog obnavljanja vozila STR_CONFIG_SETTING_ERRMSG_DURATION :Trajanje poruke o greški: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Prikazivanje broja populacije pored naziva naselja: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trajanje prikazivanja poruka o greškama u crvenom prozoru. Neke (kritične) poruke o greškama se ne zatvaraju automatski posle ovog vremena nego moraju da se zatvore ručno +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P a e i} +STR_CONFIG_SETTING_HOVER_DELAY :Prikaži poruke u balončićima: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Desni klik +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Prikazivati br. stanovnika pored naziva naselja: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikazuje broj stanovnika naselja na njihovoj oznaci na karti STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debljina linija u grafikonima: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Širina linije na grafiku. Tanka linija je preciznija a debelu je lakše videti i lakše je razlikovati boje STR_CONFIG_SETTING_LAND_GENERATOR :Oblikovanje reljefa: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originalno STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveće rastojanje od ivice za Rafinerije Nafte: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Nivo snežnog pokrivača: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Vrste terena (samo za TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ravnomerna -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Malo Valovita +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Malo valovita STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Valovita -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Vrlo Valovita +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Vrlo valovita STR_CONFIG_SETTING_TREE_PLACER :Posađivanje drveća: {STRING} -STR_CONFIG_SETTING_TREE_PLACER_NONE :Nikakavo -STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalano -STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Unapređeno +STR_CONFIG_SETTING_TREE_PLACER_NONE :Nikakav +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalni +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Unapređen +STR_CONFIG_SETTING_ROAD_SIDE :Drumskih vozila: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Odaberite stranu saobraćaja STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Orijentacija elevacione karte: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nalevo STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Nadesno STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Visina ravnog terena je: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Dozvoljeno oblikovanje reljefa na ivicama terena: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedan ili više sektora na severnoj ivici nije prazan STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedan ili više sektora na jednoj od ivica nije voda STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatsko servisiranje helikoptera na heliodromima: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servisiraj helikoptere posle svakog sletanja, čak i kada nema depoa na aerodromu STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Poveži traku alatki za reljef sa železničkim/drumskim/brodskim/avionskim trakama: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Boja tla na karti: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Boja terena na karti STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tamno zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Ljubičasta @@ -1460,10 +1510,17 @@ STR_CONFIG_SETTING_LIVERIES_OWN :Samo sopstvene STR_CONFIG_SETTING_LIVERIES_ALL :Svih STR_CONFIG_SETTING_PREFER_TEAMCHAT :Slanje poruka svojoj ekipi sa : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Uloga točkića na mišu: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Omogući skrolovanje sa dvodimenzionalnim točkićima na mišu STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Promena uvećanja terena STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Pomeranje terena STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Nikakva STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Osetljivost točkića: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroliše osetljivost skrolovanja preko točkića na mišu +STR_CONFIG_SETTING_OSK_ACTIVATION :Tastatura na ekranu: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Onemogućeno +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dupli klik +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Klik (ako je u fokusu) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Klik (odmah) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Oponašanje desnog klika: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Klik @@ -1472,15 +1529,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Nikakvo STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Pomeranje sa levim klikom: {STRING} + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Koristiti {STRING} oblik datuma u nazivima sačuvanih partija +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma u imenima fajlova sačuvanih partija STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dugačak (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kratak (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Uobičajna paleta za NewGRF: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleta -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleta - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pauzirati odmah po pokretanju nove partije : {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Tokom pauze dozvoljene su: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :nikakve aktivnosti @@ -1496,8 +1551,9 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Podešena vrsta STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Prva dostupna STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Zadnja dostupna STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Najčešće korišćena -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Prikazati rezervisane pruge: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Prikazivati rezervisane pruge: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Zadržati aktivne alate za gradnju posle upotrebe: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Ostavi alate za gradnju mostova, tunela itd. otvorene nakon korišćenja STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupisati troškove u finansijskom prozoru preduzeća: {STRING} STR_CONFIG_SETTING_SOUND_TICKER :Telegrafski zvuk: {STRING} @@ -1537,6 +1593,7 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Računar ne mo STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Omogućavanje ovog podešavanja znači da računar ne može da stvara brodove STR_CONFIG_SETTING_AI_PROFILE :Podrazumevani profil podešavanja: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Odaberi koji profil podešavanja se koristi za proizvoljne VI ili za početne vrednosti kada se dodaje nova AI ili skript STR_CONFIG_SETTING_AI_PROFILE_EASY :Lak STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Srednji STR_CONFIG_SETTING_AI_PROFILE_HARD :Težak @@ -1549,6 +1606,8 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Najveći broj k STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervali servisiranja u procentima: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Da li se intervali servisiranja vozila okidaju vremenom proteklim od prošlog servisiranja ili padom pouzdanosti za određeni procenat u odnosu na najveću pouzdanost STR_CONFIG_SETTING_SERVINT_TRAINS :Podrazumevani servisni interval za vozove: {STRING} +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dan{P 0 "" a a}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogućeno STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Podrazumevani servisni interval za drumska vozila: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Podrazumevani servisni interval za letilice: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS :Podrazumevani servisni interval za brodove: {STRING} @@ -1567,31 +1626,32 @@ STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikazuje novin STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otvaranje nove fabrike: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikazuje novinske naslove kada se otvori nova fabrika STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zatvaranje fabrike: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaži novinske naslove o zatvaranju fabrika +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikazuje novinske naslove o zatvaranju fabrika STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Promene u ekonomiji: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaži novinske naslove o globalnim ekonomskim promenama +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikazuje novinske naslove o globalnim ekonomskim promenama STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Promene u proizvodnji usluženih industrija: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži novinske naslove kada se promeni nivo proizvodnje u industriji koja je pokrivena od strane naše kompanije +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikazuje novinske naslove kada se promeni nivo proizvodnje u industriji koju naša kompanija pokriva STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Promene u proizvodnji industrija usluženih konkurencijom: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Prikaži novinske naslove kada se promeni nivo proizvodnje u industriji koja jeste pokrivena od strane konkurencije +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Prikazuje novinske naslove kada se promeni nivo proizvodnje u industriji koju konkurencija pokriva STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Promene u proizvodnji ostalih industrija: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikaži novinske naslove kada se promeni nivo proizvodnje u industriji koja nije pokrivena ni od strane kompanije, ni od strane konkurencije +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikazuje novinske naslove kada se promeni nivo proizvodnje u industriji koju ne pokriva ni naša kompanija, ni konkurencija STR_CONFIG_SETTING_NEWS_ADVICE :Savet / Izveštaji o vozilima preduzeća: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Prikaži poruke o događajima na vozilima koji zahtevaju intervenciju STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nova vozila: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Prikaži novinske naslove kada postane dostupan novi tip vozila +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Prikazuje novinske naslove kada postane dostupan novi tip vozila STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Promene u prihvatanju tovara: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Prikaži poruke kada stanice promene tip prijema robe i putnika STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencije: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikaži novinske naslove o događajima u vezi sa subvencijama +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikazuje novinske naslove o događajima u vezi sa subvencijama STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Opšta obaveštenja: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikaži novinske naslove o opštim događajima, kao što kupovina ekskluzivnih prava ili finansiranje rekonstrukcije puteva +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikazuje novinske naslove o opštim događajima, kao što su kupovina ekskluzivnih prava ili finansiranje rekonstrukcije puteva STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Isključeno STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sažeto STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Potpuno -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Vesti u boji se objavljuju od: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Vesti u boji se objavljuju počev od godine: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Godina počev od koje se vesti objavljuju u boji. Pre ove godine se objavljuju u crno/beloj tehnici. STR_CONFIG_SETTING_STARTING_YEAR :Početna godina: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključena glatka ekonomija (više, manjih promena): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ako je omogućeno, industrijska proizvodnja se češće menja u manjim koracima. Ako se vrste industrija učitavaju preko NewGRF dodataka ovo podešavanje uglavnom nema efekta @@ -1599,9 +1659,11 @@ STR_CONFIG_SETTING_ALLOW_SHARES :Dozvoljena kupo STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ako je omogućeno, dozvoljava kupovinu i prodaju deonica preduzeća. Deonice su dostupne tek kad preduzeće dostigne određenu starost STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Prilikom prevlačenja, postavi signale na svakih: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} pločic{P 0 u e e} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Prilikom prevlačenja, čuvaj fiksno rastojanje između signala: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatsko postavljanje semafora do: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Omogućena traka za signalizaciju:{STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Uobičajena vrsta signalizacije za izgradnju: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Podrazumevani tip signala STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok signalizacija STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Putna signalizacija STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Jednosmerna putna signalizacija @@ -1611,6 +1673,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Samo putna STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Sva STR_CONFIG_SETTING_TOWN_LAYOUT :Plan gradnje novih puteva u naseljima: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Menja način izgradnje puteva u naseljima STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :originalno STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :unapređeni putevi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 mreže @@ -1618,8 +1681,11 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 mreže STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :proizvoljan plan STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Naseljima je dozvoljeno da grade kolovoze: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Naseljima je dozvoljeno da grade putne prelaze: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Omogućava naseljima da grade prelaz pruge preko puta STR_CONFIG_SETTING_NOISE_LEVEL :Naseljima je dozvoljeno da kontrolišu nivo buke aerodroma: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ako je ovo podešavanje onemogućeno mogu postojati 2 aerodroma u svakom naselju. Ako je podešavanje omogućeno, broj aerodroma u gradu je ograničen dozvoljenim nivoom buke u gradu koji zavisi od populacije i od veličine i udaljenosti aerodroma STR_CONFIG_SETTING_TOWN_FOUNDING :Osnivanje naselja u toku partije: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Dozvoljava igračima osnivanje novih naselja u toku igre STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :zabranjeno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :dozvoljeno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :dozvoljeno, zaseban plan gradnje @@ -1630,8 +1696,14 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :samo u tropskim STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :svuda STR_CONFIG_SETTING_TOOLBAR_POS :Lokacija glavne trake sa alatima: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontalna pozicija glavne trake s alatkama na vrhu ekrana STR_CONFIG_SETTING_STATUSBAR_POS :Položaj statusne linije: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontalna pozicija statusne linije na dnu ekrana +STR_CONFIG_SETTING_SNAP_RADIUS :Udaljenost na kojoj će prozor da se prilepi uz susedni: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel{P 0 "" a a} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Isključeno STR_CONFIG_SETTING_SOFT_LIMIT :Najviše nepridenutih prozora: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_ZOOM_MIN :Najbliži nivo: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :Najudaljeniji nivo: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x @@ -1647,68 +1719,76 @@ STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sporo STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normalno STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Brzo STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Veoma brzo +STR_CONFIG_SETTING_LARGER_TOWNS :Odnos naselja koja će postati gradovi: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Broj naselja koja će postati gradovi i time počinju veća od ostalih i brže rastu +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 u {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nijedan STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Inicijalni množilac razvoja gradova: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Uklanjati besmislene kolovoze u naseljima: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Prosečna veličina naselja relativno u odnosu na gradove na početku partije +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ručno +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrično +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrično +STR_CONFIG_SETTING_DEMAND_DISTANCE :Uticaj daljine na zahteve: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ako podesite ovu vrednost veće od 0, daljina između porekla stanice A nekog tereta i moguće destinacije B će imati uticaj na iznos poslatog tereta od A do B. Što daljnije B je od A, smaniće se iznos tereta što će biti poslat. Ako vrednost povećavate, manji iznos tereta će biti poslat dalekim mestima i veći iznos tereta će biti poslat bližnjim stanicama. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Mere brzine: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kada brzina bude pokazana u interfejsu, pokaži u željenoj meri -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperialne mere (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperijalne mere (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metričke mere (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperialne mere (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Mere za snagu vozila: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperijalne mere (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metričke mere (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Mera težine: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Mere težine: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kad težine budu pokazane u interfejsu, pokazi u željenoj meri +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperijalne (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metričke mere (t/toni) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperialne mere (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Mere zapremine: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperijalne mere (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metričke mere (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperialne mere (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Mere za silu trenja: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperijalne mere (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metričke mere (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Mera visine: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Mere visine: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kad visine budu pokazane u interfejsu, pokazi u željenoj meri -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperialne mere (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperijalne mere (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metričke mere (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Okruženje STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Prevod -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Izgradnja +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Okruženje +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Izgradnja STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stanice -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomija +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutiranje +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Naselja +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrije +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribucija Tovara STR_CONFIG_SETTING_AI :{ORANGE}Suparnici -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Prikazivanje -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakcija -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti -STR_CONFIG_SETTING_NEWS :{ORANGE}Vesti i poruke -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signali -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Baratanje teretom STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računar -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatska zamena -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servsiranje -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutiranje -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vozovi -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Naselja -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrije STR_CONFIG_SETTING_PATHFINDER_OPF :Originalno STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Preporučuje se) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pretraživanje putanja vozova: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritam pronalaženja puta za vozove STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pretraživanje putanja drumskih vozila: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algoritam pronalaženja puta za drumska vozila STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pretraživanje putanja brodova: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algoritam pronalaženja puta za brodove STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatska promena smera kod signalizacije: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dozvoljeno okretanje vozova na signalu, ako su dugo čekali STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Promena vrednosti @@ -1726,6 +1806,7 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nekompatibilno STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nepoznato STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivo kompresije '{STRING}' nije ispravan STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format sačuvane partije '{STRING}' nije dostupan. Vraćanje na '{STRING}' +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nema više memorije # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1739,7 +1820,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Partija STR_INTRO_GAME_OPTIONS :{BLACK}Opcije STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljih rezultata -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredna Podešavanja +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Podešavanja STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Podešavanja STR_INTRO_ONLINE_CONTENT :{BLACK}Spisak Dodataka na Mreži STR_INTRO_SCRIPT_SETTINGS :{BLACK}Podešavanja VI/Skripte Partije @@ -1759,7 +1840,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izbor 'z STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikazuje opcije igre STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikazuje tabelu najboljih rezultata -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Prikazuje prozor sa detaljnim podešavanjima +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Prikaži podešavanje STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikazuje NewGRF podešavanja STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pregled novih i ažureiranih dodatka za preuzimanje STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikazuje podešavanja za VI/Skriptu partije @@ -1799,6 +1880,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Upravlj STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magični buldožer (uklanja fabrike, nepokretnosti): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneli mogu da se ukrštaju: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Veliki avioni se neće (često) rušiti kod malih aerodorma: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Promenite maksimalnu visinu mape: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Promenite maksimalnu visinu planina na mapi STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Umereni klimatski pojas STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subpolarni klimatski pojas STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Suptropski klimatski pojas @@ -1819,7 +1902,7 @@ STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izaberit STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izaberite dodatnu boju za označenu kategoriju. Ctrl+klik će izabrati ovu boju za sve kategorije STR_LIVERY_PANEL_TOOLTIP :{BLACK}Označite kategoriju za izmenu boje, ili više njih koristeći Ctrl+Klik. Kliknite na kvadratić kako biste aktivirali korišćenje boje -STR_LIVERY_DEFAULT :Uobičajne Boje +STR_LIVERY_DEFAULT :Uobičajene Boje STR_LIVERY_STEAM :Parna Lokomotiva STR_LIVERY_DIESEL :Dizel Lokomotiva STR_LIVERY_ELECTRIC :Električna Lokomotiva @@ -1847,6 +1930,7 @@ STR_LIVERY_FREIGHT_TRAM :Teretni Tramvaj STR_FACE_CAPTION :{WHITE}Izbor lica STR_FACE_CANCEL_TOOLTIP :{BLACK}Poništi ovo lice STR_FACE_OK_TOOLTIP :{BLACK}Prihvati ovo lice +STR_FACE_RANDOM :{BLACK}Proizvoljno STR_FACE_MALE_BUTTON :{BLACK}Muško STR_FACE_MALE_TOOLTIP :{BLACK}Izbor muškog lica @@ -1902,6 +1986,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Promena # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Mrežna partija +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ne +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Da STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ime igrača: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Sa ovim imenom će Vas drugi igrači (pre)poznavati @@ -1960,6 +2046,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Naziv pa STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Postavi lozinku STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Ukoliko ne želite da bude javno dostupna zaštitite Vašu partiju lozinkom +STR_NETWORK_START_SERVER_UNADVERTISED :Ne +STR_NETWORK_START_SERVER_ADVERTISED :Da STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} igrač{P "" a a} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Najviše igrača: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Odaberite koliko najviše može da ima igrača. Nemoraju sva mesta da budu popunjena @@ -2085,8 +2173,8 @@ STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Unesite STR_COMPANY_PASSWORD_CANCEL :{BLACK}Otkaži unetu lozinku STR_COMPANY_PASSWORD_OK :{BLACK}Postavi preduzeću novu lozinku STR_COMPANY_PASSWORD_CAPTION :{WHITE}Lozinka za preduzeće -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Uobičajna lozinka za preduzeće -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Koristite ovu lozinku kao uobičajnu za nova preduzeća +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Uobičajena lozinka za preduzeće +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Koristite ovu lozinku kao uobičajenu za nova preduzeća # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridružite se @@ -2280,7 +2368,7 @@ STR_STATION_BUILD_COVERAGE_ON :{BLACK}Uključe STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Isključi označavanje zahvaćenog područja STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Uključi označavanje zahvaćenog područja STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Prihvata: {GOLD}{CARGO_LIST.aku} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Snadbeva: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Snabdeva: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Pridruži stanicu @@ -2333,7 +2421,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Gradnja STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Izbor klase stanica za prikaz STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Odaberite vrstu stanice za gradnju -STR_STATION_CLASS_DFLT :Uobičajna stanica +STR_STATION_CLASS_DFLT :Podrazumevana stanica STR_STATION_CLASS_WAYP :Putanje # Signal window @@ -2389,8 +2477,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Izgradnj STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Izgradnja tramvajskog mosta. Shift prebacuje između izgradnje i prikaza procene troškova STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Izgradnja drumskog tunela. Shift prebacuje između izgradnje i prikaza procene troškova STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Izgradnja tramvajskog tunela. Shift prebacuje između izgradnje i prikaza procene troškova -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Uklanjanje puteva (kada je uključeno) -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Uklanjanje tramvajskih građevina (kada je uključeno) +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Uključi građenje/rušenje drumskih puteva +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Uključi građenje/rušenje tramvajskih građevina # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orijentacija drumskog depoa @@ -2515,11 +2603,11 @@ STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Veliko STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Slučajan STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Izbor veličine naselja STR_FOUND_TOWN_CITY :{BLACK}Grad -STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Gradovi se razvijaju brže nego uobičajna naselja{}U zavisnosti od podešavanja, veći su prilikom osnivanja +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Gradovi se razvijaju brže nego uobičajena naselja{}U zavisnosti od podešavanja, veći su prilikom osnivanja STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Mreža puteva u naselju: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Izbor plana mreže puteva u naselju -STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalano +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalno STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Napredno STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 mreža STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 mreža @@ -2538,11 +2626,11 @@ STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansir # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Lanac snabdevanja - {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Lanac proizvodnje - {STRING} -STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Snadbevačke industrije +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Snabdevačke industrije STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Potrošačke industrije STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Domaćinstva -STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikom na industriju prikazuju se njegovi snadbevači i potrošači -STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikom na tovar prikazuju se njegovi snadbevači i potrošači +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikom na industriju prikazuju se njegovi snabdevači i potrošači +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikom na tovar prikazuju se njegovi snabdevači i potrošači STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Lanac STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Prikazuje lanac snabdevanja industrija STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Obeleži na karti @@ -2670,7 +2758,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-2013 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju @@ -2679,7 +2767,7 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sačuvaj STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Učitaj scenario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Učitavanje Elevacione karte STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Sačuvaj Elevacionu kartu -STR_SAVELOAD_HOME_BUTTON :{BLACK}Pritisnite ovde kako biste otišli u uobičajni direktorijum za čuvanje pozicije +STR_SAVELOAD_HOME_BUTTON :{BLACK}Pritisnite ovde kako biste otišli u uobičajeni direktorijum za čuvanje pozicije STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} slobodno STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Spisak diskova, direktorijuma i datoteka sa sačuvanim pozicijama STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Ime sačuvane pozicije @@ -2704,13 +2792,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj naselja: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj fabrika: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimalna visina mape +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Povećaj maksimalnu visinu planina na mapi za jedan +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Smanji maksimalnu visinu planina na mapi za jedan STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Nivo snežnog pokrivača: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Sužava snežni pokrivač naviše za jedan STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Proširuje snežni pojas naniže za jedan -STR_MAPGEN_RANDOM_SEED :{BLACK}Klica Proizvoljnosti: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliknite za unos klice proizvoljnosti -STR_MAPGEN_RANDOM :{BLACK}Proizvoljno -STR_MAPGEN_RANDOM_HELP :{BLACK}Promena klice proizvoljnosti za Oblikovanje Reljefa STR_MAPGEN_LAND_GENERATOR :{BLACK}Oblikovanje reljefa: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritam za drveća: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vrsta terena: @@ -2737,7 +2824,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Naziv el STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Veličina: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Unos nove vrednosti klice +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Promenite maksimalnu visinu mape STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Promena donjeg nivoa snežnog pojasa STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promena početne godine @@ -2792,6 +2879,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Naviše STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Pomera označenu NewGRF datoteku više na spisku STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Naniže STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Pomera označenu NewGRF datoteku niže na spisku +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Ažuriraj STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Spisak instaliranih NewGRF datoteka. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Postavi parametre @@ -2816,6 +2904,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Odabrana d STR_NEWGRF_SETTINGS_DISABLED :{RED}Isključen STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nije kompatibilno sa ovom OpenTTD verzijom +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Promena NewGRF parametara STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zatvori @@ -2846,7 +2936,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prethodn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Vraća se na prethodni normalan sprajt, preskačući sve pseudo/prebojavajuće/font sprajtove i prelazi na kraj posle početnog STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prikaz trenutno odabranog sprajta. Poravnanje se ignoriše tokom iscrtavanja ovog sprajta STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Premeštanje sprajta po kordinatama, menjanjem X i Y pomeraja -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X pomeraj: {NUM}, Y pomeraj: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Odabiranje sprajta STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Odabiranje sprajta bilo gde sa ekrana @@ -2917,6 +3006,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Pregledanje NewGRF-ova STR_NEWGRF_SCAN_MESSAGE :{BLACK}Pregledanje NewGRF-ova. U zavisnosti od količine ovo može i da potraje... @@ -3003,6 +3095,8 @@ STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalni STR_GOALS_GLOBAL_TITLE :{BLACK}Opšti ciljevi: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nema - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Ciljevi preduzeća: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikom na cilj premešta se glavni pogled na fabriku/naselje/pločicu. Ctrl+Kilk otvara novi pogled na lokaciju fabrike/naselja/pločice @@ -3012,7 +3106,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Obaveštenje STR_GOAL_QUESTION_CAPTION_WARNING :Upozorenje STR_GOAL_QUESTION_CAPTION_ERROR :Greška -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Otkaži STR_GOAL_QUESTION_BUTTON_OK :U redu STR_GOAL_QUESTION_BUTTON_NO :Ne @@ -3031,6 +3125,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Restartuj STR_GOAL_QUESTION_BUTTON_POSTPONE :Odloži STR_GOAL_QUESTION_BUTTON_SURRENDER :Predaja STR_GOAL_QUESTION_BUTTON_CLOSE :Zatvori +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije @@ -3042,8 +3137,10 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikom na uslugu prebacuje glavni pogled na lokaciju fabrike/naselja. Ctrl+Klik otvara novi pogled na to mesto # Story book window +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Stranica {NUM} STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Idi do željene stranice uz izbor te stranice u ovoj listi. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Prethodni STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Idi do prethodne stranice STR_STORY_BOOK_NEXT_PAGE :{BLACK}Sledeće STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Idi do sledeće stranice @@ -3061,9 +3158,9 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ni jedna # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čeka: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} na putu iz {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervisan za utovar) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prihvata STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Prikaži spisak tovara koje stanica prihvata @@ -3074,6 +3171,8 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaži ocene stanice +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mesečna proizvodnja i rejting preduzeća: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Sortiraj po STR_STATION_VIEW_WAITING_STATION :Stanica: Čekajuća @@ -3085,11 +3184,18 @@ STR_STATION_VIEW_VIA :{YELLOW}{CARGO_ STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION} STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} od nepoznate stanice STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do bilo koje stanice -STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} preko bilo koju stanicu +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} preko bilo koje stanice STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} od ove stanice +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} uz stajanje na ovoj stanici STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do te stanice STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} bez prekida +STR_STATION_VIEW_GROUP_S_V_D :Polazište-Via-Odredište +STR_STATION_VIEW_GROUP_S_D_V :Polazište-Odredište-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Polazište-Odredište +STR_STATION_VIEW_GROUP_V_D_S :Via-Odredište-Polazište +STR_STATION_VIEW_GROUP_D_S_V :Odredište-Polazište-Via +STR_STATION_VIEW_GROUP_D_V_S :Odredište-Via-Polazište ############ range for rating starts STR_CARGO_RATING_APPALLING :užas @@ -3113,6 +3219,7 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Prikazuj STR_STATION_VIEW_RENAME_STATION_CAPTION :Preimenuj stanicu STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zatvori aerodrom +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Spreči letelicu da sleti na ovaj aerodrom # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -3231,6 +3338,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Prošlom STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prevezeno) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Prebacuje glavni pogled na lokaciju fabrike. Ctrl+Klik otvara novi pogled na lokaciju fabrike STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivo proizvodnje: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Fabrika je objavila da može svakog trenutka da se zatvori! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potražuje: {YELLOW}{STRING.aku}{STRING} @@ -3293,12 +3401,13 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupisana dru STR_GROUP_DEFAULT_SHIPS :Negrupisani brodovi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupisane letilice -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupe - klikom na grupu se prikazuje spisak vozila u grupi +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupe - klikom na grupu se prikazuje spisak vozila u grupi. Hijerarhija grupa se uređuje metodom "prevuci i pusti" STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikom se pravi nova grupa STR_GROUP_DELETE_TOOLTIP :{BLACK}Briše se označena grupa STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenovanje označene grupe STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikom se ova grupa štiti od globalne automatske zamene + STR_GROUP_ADD_SHARED_VEHICLE :Dodaj deljeno vozilo STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozila @@ -3307,7 +3416,7 @@ STR_GROUP_RENAME_CAPTION :{BLACK}Preimenu # 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 -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nova Jenodšinska Vozila +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nova Jednošinska Vozila STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nova Maglev Vozila STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Šinska Vozila @@ -3331,7 +3440,7 @@ STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cena: {G STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Nosivost: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Motorni vagoni: {GOLD}+{POWER}{BLACK} Težina: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Prepravljivo za: {GOLD}{STRING} -STR_PURCHASE_INFO_ALL_TYPES :Sve vrste tovara +STR_PURCHASE_INFO_ALL_TYPES :Sve vrste tereta STR_PURCHASE_INFO_ALL_BUT :Sve sem {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Najveća vučna snaga: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} pločica @@ -3361,6 +3470,13 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Promenit STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Promenite naziv vrste broda STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Promenite naziv vrste letilice + + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Uključi skrivanje/prikazivanje tip voza +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Uključi skrivanje/prikazivanje tip drumskog vozila +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Uključi skrivanje/prikazivanje tip broda +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Uključi skrivanje/prikazivanje tip letilice + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Promena naziva vrste šinskog vozila STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Naziv vrste drumskog vozila STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Promena naziva vrste broda @@ -3481,6 +3597,9 @@ STR_REPLACE_VEHICLE_SHIP.aku :brod STR_REPLACE_VEHICLE_AIRCRAFT :letelica STR_REPLACE_VEHICLE_AIRCRAFT.aku :letelicu +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Upotrebljena vozila +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Dostupna vozila + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izaberite vrstu lokomotive za zamenu STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izaberite novu vrstu lokomotive koju biste želeli da koristite umesto obeležene s leve strane @@ -3527,7 +3646,7 @@ STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ovim će STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ovim ćete kupiti isti brod. Sa Ctrl+Klik će imati zajedničke naredbe. Shift+Klik prikazuje procenu troškova bez kupovine STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ovim ćete kupiti kopiju letilice. Sa Ctrl+Klik će imati zajedničke naredbe. Shift+Klik prikazuje procenu troškova bez kupovine -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Voz će krenuti bez čekanja na signal za slobodan kolosek +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Nateraj voza da krene bez čekanja na signal za slobodan kolosek STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Prepravlja voz kako bi prevozio drugu vrstu tereta STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Prepravite drumsko vozilo kako bi prevozio drugu vrstu tovara @@ -3560,7 +3679,7 @@ STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pokvaren STR_VEHICLE_STATUS_STOPPED :{RED}Zaustavljen STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Zaustavlja se, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nema struje -STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čekanje za slobadan prolaz +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čekanje za slobodan prolaz STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Previše je daleko do sledeće destinacije STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ide ka {STATION}, {VELOCITY} @@ -3613,6 +3732,7 @@ STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Smanjuje STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Promeni tip intervala za servis STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :dani +STR_VEHICLE_DETAILS_PERCENT :Procenat STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Naziv voza STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Naziv drumskog vozila @@ -3646,7 +3766,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Nosivost STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Prepravljanje) STR_REFIT_TITLE :{GOLD}Izaberite vrstu tereta za prevoz: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}{}{BLACK}Cena prepravke: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}{}{BLACK}Prihod od prepravke: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena prepravke: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihod od prepravke: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Obeležavanje vozila za prepravku. Povlačenjem miša moguće je obležiti više vozila. Klikom na prazan prostor obležava celo vozilo. Sa Ctrl+Klik će se obeležiti vozilo i prateći lanac STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Označite vrstu tovara za prepravljanje voza @@ -3736,7 +3858,7 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Vrednost STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Unos vrednosti za poređenje STR_ORDERS_SKIP_BUTTON :{BLACK}Preskoči -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskače tekuću naredbu, i prelazi na sledeću. Ctrl+Klik preskače naredbe do obeležene +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskoči tekuću naredbu, i prelazi na sledeću. Ctrl+Klik preskače naredbe do obeležene STR_ORDERS_DELETE_BUTTON :{BLACK}Izbriši STR_ORDERS_DELETE_TOOLTIP :{BLACK}Uklanja obeleženu naredbu @@ -3983,6 +4105,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Prihod: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transfer: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Prihod: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Prihod: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Trošak: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Trošak: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Procena troška: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Procena zarade: {CURRENCY_LONG} @@ -4067,6 +4193,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Iskopava STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... teren je već na nivou mora STR_ERROR_TOO_HIGH :{WHITE}... previsoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... već je ravno +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Posle toga most bi bio previše visok. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Preduzeće se ne može preimenovati... @@ -4117,6 +4244,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... šum STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... može biti izgrađena samo iznad linije snega STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... može biti izgrađena samo ispod linije snega +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nije bilo odgovarajućih mesta za '{STRING}' fabrike + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Izgradnja železničke stanice ovde nije moguća... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Izgradnja autobuske stanice ovde nije moguća... @@ -4253,6 +4382,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Potrebno STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ne može da se završava na istom mestu gde i počinje STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Krajevi mosta nisu na istom nivou STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je nizak u odnosu na teren +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Most je previše visok zaovaj teren STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u istoj liniji STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba kraja mosta moraju biti na čvrstom tlu STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je previše dugačak @@ -4334,6 +4464,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Servisni STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uništeno +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nijedno vozilo neće biti dostupno +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promenite konfiguraciju za NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nijedno vozilo još uvek nije dostupno +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokrenite novu igru koja počinje posle {DATE_SHORT} ili koristite NewGRF koji omogućava ranija vozila # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nemoguć je prolaz voza na signal opasnosti... @@ -4509,7 +4643,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dizel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut (para) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut (para) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover (para) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover (para) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (dizel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (dizel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (para) @@ -4718,7 +4852,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pu STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Putnički Feribot STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Teretni brod STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Teretni brod -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Teretni brod +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Teretni brod STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Teretni brod STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4812,6 +4946,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (sakriveno) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4847,8 +4982,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4859,9 +4992,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index a723477bb5..7ce4e7f6a8 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -57,7 +57,7 @@ STR_CARGO_PLURAL_BUBBLES :泡泡 STR_CARGO_PLURAL_TOFFEE :太妃糖 STR_CARGO_PLURAL_BATTERIES :电池 STR_CARGO_PLURAL_PLASTIC :塑料块 -STR_CARGO_PLURAL_FIZZY_DRINKS :跳跳水 +STR_CARGO_PLURAL_FIZZY_DRINKS :汽水 # Singular cargo name STR_CARGO_SINGULAR_NOTHING : @@ -91,41 +91,41 @@ STR_CARGO_SINGULAR_BUBBLE :泡泡 STR_CARGO_SINGULAR_TOFFEE :太妃糖 STR_CARGO_SINGULAR_BATTERY :电池 STR_CARGO_SINGULAR_PLASTIC :塑料 -STR_CARGO_SINGULAR_FIZZY_DRINK :跳跳水 +STR_CARGO_SINGULAR_FIZZY_DRINK :汽水 # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} 位旅客 +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}位旅客 STR_QUANTITY_COAL :{WEIGHT_LONG} 煤炭 -STR_QUANTITY_MAIL :{COMMA} 包邮件 +STR_QUANTITY_MAIL :{COMMA}{NBSP}包邮件 STR_QUANTITY_OIL :{VOLUME_LONG} 原油 -STR_QUANTITY_LIVESTOCK :{COMMA} 头牲畜 -STR_QUANTITY_GOODS :{COMMA} 件货物 +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}头牲畜 +STR_QUANTITY_GOODS :{COMMA}{NBSP}件货物 STR_QUANTITY_GRAIN :{WEIGHT_LONG} 谷物 STR_QUANTITY_WOOD :{WEIGHT_LONG} 木材 STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} 铁矿石 STR_QUANTITY_STEEL :{WEIGHT_LONG} 钢材 -STR_QUANTITY_VALUABLES :{COMMA} 包贵重品 +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}包贵重品 STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} 铜矿石 STR_QUANTITY_MAIZE :{WEIGHT_LONG} 玉米 STR_QUANTITY_FRUIT :{WEIGHT_LONG} 水果 -STR_QUANTITY_DIAMONDS :{COMMA} 包钻石 +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}包钻石 STR_QUANTITY_FOOD :{WEIGHT_LONG} 食品 STR_QUANTITY_PAPER :{WEIGHT_LONG} 纸张 -STR_QUANTITY_GOLD :{COMMA} 包黄金 +STR_QUANTITY_GOLD :{COMMA}{NBSP}包黄金 STR_QUANTITY_WATER :{VOLUME_LONG} 饮用水 STR_QUANTITY_WHEAT :{WEIGHT_LONG} 小麦 STR_QUANTITY_RUBBER :{VOLUME_LONG} 橡胶 STR_QUANTITY_SUGAR :{WEIGHT_LONG} 蔗糖 -STR_QUANTITY_TOYS :{COMMA} 件玩具 -STR_QUANTITY_SWEETS :{COMMA} 包糖果 +STR_QUANTITY_TOYS :{COMMA}{NBSP}件玩具 +STR_QUANTITY_SWEETS :{COMMA}{NBSP}包糖果 STR_QUANTITY_COLA :{VOLUME_LONG} 可乐 STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} 棉花糖 STR_QUANTITY_BUBBLES :{COMMA} 个泡泡 STR_QUANTITY_TOFFEE :{WEIGHT_LONG} 太妃糖 STR_QUANTITY_BATTERIES :{COMMA} 箱电池 STR_QUANTITY_PLASTIC :{VOLUME_LONG} 塑料 -STR_QUANTITY_FIZZY_DRINKS :{COMMA} 瓶跳跳水 +STR_QUANTITY_FIZZY_DRINKS :{COMMA} 瓶汽水 STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name @@ -160,23 +160,23 @@ STR_ABBREV_BUBBLES :{TINY_FONT}泡 STR_ABBREV_TOFFEE :{TINY_FONT}太 STR_ABBREV_BATTERIES :{TINY_FONT}电 STR_ABBREV_PLASTIC :{TINY_FONT}塑 -STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}跳 +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}汽 STR_ABBREV_NONE :{TINY_FONT}无 STR_ABBREV_ALL :{TINY_FONT}全 # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} 旅客 -STR_BAGS :{COMMA} 包 -STR_TONS :{COMMA} 英吨 -STR_LITERS :{COMMA} 升 -STR_ITEMS :{COMMA} 件 -STR_CRATES :{COMMA} 件 +STR_PASSENGERS :{COMMA}{NBSP}旅客 +STR_BAGS :{COMMA}{NBSP}包 +STR_TONS :{COMMA}{NBSP}英吨 +STR_LITERS :{COMMA}{NBSP}升 +STR_ITEMS :{COMMA}{NBSP}头 +STR_CRATES :{COMMA}{NBSP}件 # Colours, do not shuffle STR_COLOUR_DARK_BLUE :深蓝色 STR_COLOUR_PALE_GREEN :浅绿色 STR_COLOUR_PINK :粉红色 -STR_COLOUR_YELLOW :明黄色 +STR_COLOUR_YELLOW :黄 色 STR_COLOUR_RED :红 色 STR_COLOUR_LIGHT_BLUE :淡蓝色 STR_COLOUR_GREEN :绿 色 @@ -191,37 +191,37 @@ STR_COLOUR_GREY :浅灰色 STR_COLOUR_WHITE :白 色 # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/小时 -STR_UNITS_VELOCITY_METRIC :{COMMA} 千米/小时 -STR_UNITS_VELOCITY_SI :{COMMA} 米/秒 +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}英里/小时 +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}千米/小时 +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}米/秒 -STR_UNITS_POWER_IMPERIAL :{COMMA} 马力 -STR_UNITS_POWER_METRIC :{COMMA} 马力 -STR_UNITS_POWER_SI :{COMMA} 千瓦 +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}匹马力 +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}匹马力 +STR_UNITS_POWER_SI :{COMMA}{NBSP}千瓦 -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} 短吨 -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} 吨 -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} 千克 +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}英吨 +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}吨 +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}千克 -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} 短吨 -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} 公吨 -STR_UNITS_WEIGHT_LONG_SI :{COMMA} 千克 +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}英吨 +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}吨 +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}千克 -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} 加仑 -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} 升 -STR_UNITS_VOLUME_SHORT_SI :{COMMA} 立方米 +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}加仑 +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}升 +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}立方米 -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} 加仑 -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} 升 -STR_UNITS_VOLUME_LONG_SI :{COMMA} 立方米 +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}加仑 +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}升 +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}立方米 -STR_UNITS_FORCE_IMPERIAL :{COMMA} 磅力 -STR_UNITS_FORCE_METRIC :{COMMA} 千克力 -STR_UNITS_FORCE_SI :{COMMA} 千牛顿 +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}磅力 +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}千克力 +STR_UNITS_FORCE_SI :{COMMA}{NBSP}千牛 -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} 英呎 -STR_UNITS_HEIGHT_METRIC :{COMMA} 米 -STR_UNITS_HEIGHT_SI :{COMMA} 公尺 +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}英尺 +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}米 +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}米 # Common window strings STR_LIST_FILTER_TITLE :{BLACK}过滤字串: @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动 STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 左右滚动列表 STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}拆除地块上的建筑物等设施,按住Ctrl键选择对角线区域,按住Shift键操作只提示预计成本 +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}显示被隐藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}显示被隐藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}显示被隐藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}显示被隐藏的 + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}如启用此按键,被隐藏的铁路列车也会被显示出来 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}如启用此按键,被隐藏的路面车辆也会被显示出来 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}如启用此按键,被隐藏的船舶也会被显示出来 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}如启用此按键,被隐藏的飞机也会被显示出来 + # Query window STR_BUTTON_DEFAULT :{BLACK}默认 STR_BUTTON_CANCEL :{BLACK}取消 @@ -293,7 +304,7 @@ STR_SORT_BY_ENGINE_ID :引擎ID (默 STR_SORT_BY_COST :售价 STR_SORT_BY_POWER :功率 STR_SORT_BY_TRACTIVE_EFFORT :牵引力 -STR_SORT_BY_INTRO_DATE :设计日期 +STR_SORT_BY_INTRO_DATE :面世日期 STR_SORT_BY_RUNNING_COST :运行费用 STR_SORT_BY_POWER_VS_RUNNING_COST :功率/运行费用 比值 STR_SORT_BY_CARGO_CAPACITY :运载能力 @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :退出 ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :游戏选项 -STR_SETTINGS_MENU_CONFIG_SETTINGS :高级设置 +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :设置 STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / 游戏脚本设定 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 设置 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透明选项 @@ -470,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :切换边界框 STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :切换脏方块的颜色 ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1号 STR_ORDINAL_NUMBER_2ND :2号 STR_ORDINAL_NUMBER_3RD :3号 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12号 STR_ORDINAL_NUMBER_13TH :13号 STR_ORDINAL_NUMBER_14TH :14号 STR_ORDINAL_NUMBER_15TH :15号 -STR_ORDINAL_NUMBER_16TH :16号 -STR_ORDINAL_NUMBER_17TH :17号 -STR_ORDINAL_NUMBER_18TH :18号 -STR_ORDINAL_NUMBER_19TH :19号 -STR_ORDINAL_NUMBER_20TH :20号 -STR_ORDINAL_NUMBER_21ST :21号 -STR_ORDINAL_NUMBER_22ND :22号 -STR_ORDINAL_NUMBER_23RD :23号 -STR_ORDINAL_NUMBER_24TH :24号 -STR_ORDINAL_NUMBER_25TH :25号 -STR_ORDINAL_NUMBER_26TH :26号 -STR_ORDINAL_NUMBER_27TH :27号 -STR_ORDINAL_NUMBER_28TH :28号 -STR_ORDINAL_NUMBER_29TH :29号 -STR_ORDINAL_NUMBER_30TH :30号 -STR_ORDINAL_NUMBER_31ST :31号 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1号 +STR_DAY_NUMBER_2ND :2号 +STR_DAY_NUMBER_3RD :3号 +STR_DAY_NUMBER_4TH :4号 +STR_DAY_NUMBER_5TH :5号 +STR_DAY_NUMBER_6TH :6号 +STR_DAY_NUMBER_7TH :7号 +STR_DAY_NUMBER_8TH :8号 +STR_DAY_NUMBER_9TH :9号 +STR_DAY_NUMBER_10TH :10号 +STR_DAY_NUMBER_11TH :11号 +STR_DAY_NUMBER_12TH :12号 +STR_DAY_NUMBER_13TH :13号 +STR_DAY_NUMBER_14TH :14号 +STR_DAY_NUMBER_15TH :15号 +STR_DAY_NUMBER_16TH :16号 +STR_DAY_NUMBER_17TH :17号 +STR_DAY_NUMBER_18TH :18号 +STR_DAY_NUMBER_19TH :19号 +STR_DAY_NUMBER_20TH :20号 +STR_DAY_NUMBER_21ST :21号 +STR_DAY_NUMBER_22ND :22号 +STR_DAY_NUMBER_23RD :23号 +STR_DAY_NUMBER_24TH :24号 +STR_DAY_NUMBER_25TH :25号 +STR_DAY_NUMBER_26TH :26号 +STR_DAY_NUMBER_27TH :27号 +STR_DAY_NUMBER_28TH :28号 +STR_DAY_NUMBER_29TH :29号 +STR_DAY_NUMBER_30TH :30号 +STR_DAY_NUMBER_31ST :31号 ############ range for days ends ############ range for months starts @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} 正在船坞待命 STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} 正在机库待命 -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} 的调度计划太少 STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE}的调度计划中有无效调度命令 STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} 有重复调度命令 STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE}的调度计划有无效的车站 -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} 的计划列表中有机场跑道太短不足及起降 STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} 即将达到报废年限 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} 已经达到报废年限 @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :格鲁吉亚拉 STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亚尔(IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}汽车行驶 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}选择汽车行驶的方向 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :左侧通行 @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :加泰罗尼亚 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自动保存 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择自动保存的周期 +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :每月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :每 3 个月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :每 6 个月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :每 12 个月 +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言 @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}屏幕 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}选择要使用的屏幕分辨率 STR_GAME_OPTIONS_RESOLUTION_OTHER :其他 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}屏幕截图类型 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}选择屏幕截图类型 +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}界面大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}选择使用的界面元素大小 + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :正常大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :两倍大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :四倍大小 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基础图形组 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}选择要使用的基础图形组 @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}选择 STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} 文件已损坏 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}有关基础音乐组的附加信息 +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}无法撷取可用的屏幕分辨率清单 STR_ERROR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式{}尝试使用不同的分辨率 # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :非常平整 STR_TERRAIN_TYPE_FLAT :平整 STR_TERRAIN_TYPE_HILLY :丘陵 STR_TERRAIN_TYPE_MOUNTAINOUS :山地 +STR_TERRAIN_TYPE_ALPINIST :多山 STR_CITY_APPROVAL_PERMISSIVE :宽容 STR_CITY_APPROVAL_TOLERANT :隐忍 @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :对立 STR_WARNING_NO_SUITABLE_AI :{WHITE}无合适的 AI 可用...{}你可以在线下载各种 AI 。 -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}高级设置 +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}设置 STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}关键字过滤: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}展开全部 STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}关闭全部 @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :当前游戏设 STR_CONFIG_SETTING_TYPE_COMPANY_MENU :当前公司设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :当前公司设置(可保存在存档中,仅对现行公司生效) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}显示: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}筛选设定: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}适用范围: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}仅显示修改过的选项 -STR_CONFIG_SETTING_RESTRICT_BASIC :基础设置 -STR_CONFIG_SETTING_RESTRICT_ADVANCED :高级设置 -STR_CONFIG_SETTING_RESTRICT_ALL :高级设置/全部设置 +STR_CONFIG_SETTING_RESTRICT_BASIC :基本 (仅显示重要设置) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :高级 (显示大部份设置) +STR_CONFIG_SETTING_RESTRICT_ALL :专业 (显示所有设置) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :修改默认值 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :设置一个与当前游戏设置不同的值 STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}限定某一类设置显示在下面列表中 -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :所有设置 +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :所有设置种类 STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :客户端设置(不保存在存档中,影响所有游戏) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :当前游戏设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :当前游戏设置(可保存在存档中,仅对当前游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :当前公司设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :当前公司设置(可保存在存档中,仅对当前公司生效) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}在 {SILVER}筛选设定 {BLACK}一栏选择 {WHITE}{STRING} {BLACK}以显示所有搜寻结果 +STR_CONFIG_SETTING_TYPE_HIDES :在 {SILVER}适用范围 {BLACK}一栏选择 {WHITE}所有适用范围 {BLACK}以显示所有搜寻结果 +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}在 {SILVER}筛选设定 {BLACK}一栏选择 {WHITE}{STRING} 并在 {SILVER}适用范围 {BLACK}一栏选择 {WHITE}所有适用范围 {BLACK}以显示所有搜寻结果 +STR_CONFIG_SETTINGS_NONE :{WHITE}- 无 - STR_CONFIG_SETTING_OFF :关闭 STR_CONFIG_SETTING_ON :打开 @@ -1125,8 +1162,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :灾难可能引 STR_CONFIG_SETTING_CITY_APPROVAL :地区政府对区域改造的态度: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :设置相关参数以决定各公司造成的噪音及环境破坏时,各城镇对该公司的评价及未来区域建设的影响。 -STR_CONFIG_SETTING_BUILDONSLOPES :允许在斜坡和河岸上建设:{STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :启用时轨道和站台能够建造在斜坡上,禁止时只能建设与斜坡方向相同的轨道,因而不需要改变地形 +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :最高地面高度:{STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :此设置决定地图上的山丘最高可以到达什么高度 +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}您不能把最高地面高度设为这个值,因为地图上至少有一座山丘的高度比这个值还大 STR_CONFIG_SETTING_AUTOSLOPE :允许在建筑、轨道等下方改变地形(自动斜坡): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :允许在建筑和轨道下方改变地形而不需要拆除他们 STR_CONFIG_SETTING_CATCHMENT :允许更真实的客源范围:{STRING} @@ -1143,24 +1181,20 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :选择列车加 STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :汽车加速模型: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :选择汽车加速度模型,选“原版”时斜坡对所有汽车影响相同,选“真实”时依赖引擎性能,比如“牵引力” STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :斜坡对火车的影响率:{STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对火车速度的影响率,数值越大,火车越难爬上山 +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对火车速度的影响率,数值越大,火车越难爬上斜坡 STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :斜坡对汽车速度影响率: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对汽车速度的影响率,数值越大,汽车越难爬上山 +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对汽车速度的影响率,数值越大,汽车越难爬上斜坡 STR_CONFIG_SETTING_FORBID_90_DEG :禁止列车和轮船 90 度转弯:{STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :当水平方向轨道与垂直方向轨道交叉时,没有采用45度的轨道组合连接,而是采用轨道90度直接连接时,列车通过时需要90度转弯,当本设置”打开“时,将禁止火车90度转弯,本设置同样影响船只转弯时的航线。 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :允许非毗邻站台合并:{STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :“打开”时允许为已经存在的车站添加不相邻的站台,建造新的部分时需要按住Ctrl键 -STR_CONFIG_SETTING_IMPROVEDLOAD :使用进阶的装货算法:{STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :“打开”时,多辆车在一个车站依次排队装货,只有当货物足够装满第一列车时才同时为下一列车装货 -STR_CONFIG_SETTING_GRADUAL_LOADING :装货时循序渐进:{STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :根据车辆的特定装货时间来逐渐装货, 而不要根据货物量在一定时间内一次装满全部货物 STR_CONFIG_SETTING_INFLATION :通货膨胀:{STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :“打开”通货膨胀时,支出比收入增长得稍快 -STR_CONFIG_SETTING_SELECTGOODS :仅在车站接受此货物时卸货:{STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :“打开”时只有车站接收此货物时才卸载 STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :桥梁的最大长度: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :建设桥梁时允许的最大长度 +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :最高桥梁高度:{STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :桥梁与地面之间的最大高度 STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :隧道最大长度: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :建设隧道时允许的最大长度 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :原料工业建设方式: {STRING} @@ -1181,13 +1215,11 @@ STR_CONFIG_SETTING_SHOWFINANCES :在年终显示 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :“打开”时,在年底显示财务报表窗口,方便查看公司财务状况 STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新的调度命令默认为“不停车”: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :通常,车辆在它经过的每一个车站都会停车。“打开”本选项时,车辆会不停车的通过所有中间车站前往最终目的地。注意:这只是为每一条新调度命令设置一个默认信息,仍然可以为每条调度命令设置明确的信息 -STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠车站月台 {STRING} 位置 -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入月台的那一端,“中间”是月台中间位置,“远端”是原理车辆进入月台的那一端 +STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠在站台{STRING} 位置 +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入的那一端,“中间”是站台中间位置,“远端”是远离车辆进入的那一端 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中间 STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :远端 -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :汽车自动排队 (有量子效应): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :“打开”时汽车在堵车的道路上排队等候,直到道路畅通 STR_CONFIG_SETTING_AUTOSCROLL :当鼠标移动到屏幕边缘时移动屏幕:{STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :启用后,鼠标移动到视点窗口边缘时,视点窗口自动滚动 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :禁用 @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇 STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站 STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :允许在竞争对手所属的道路上建通过式车站: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :“打开”时,允许在其它公司所属的道路上建设通过式车站 -STR_CONFIG_SETTING_ADJACENT_STATIONS :允许建设临近站台: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :“打开”时,允许不同车站相邻 -STR_CONFIG_SETTING_DYNAMIC_ENGINES :允许使用多GRF运输工具: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :为旧版本的NewGRF准备的兼容性选项,不要禁止本选项,除非你明白你在做什么! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}当有车辆时,不可能更改此设定。 STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :加强版固定资产维护: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :固定资产会发生维护费用,“打开”本选项时,维护费用的增长会超过交通网络的增长规模,因而,对大公司影响更大。 @@ -1252,39 +1280,53 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :错误信息持 STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :红色窗口显示错误信息的持续时间,在这个时间内一些紧急的错误信息不会自动关闭,必须手动关闭 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} 秒 STR_CONFIG_SETTING_HOVER_DELAY :显示提示信息:{STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :设置当鼠标停留在某些界面时显示相应提示信息的延迟时间 -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :停留{COMMA} 秒 +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :此设置决定鼠标停留在图标、按键或功能时显示提示信息的时间。如果此设置被赋值为 0,您必须揿住鼠标右键来显示图标、按键或功能的提示信息。 +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :停留 {COMMA} 毫秒 STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右键点击 STR_CONFIG_SETTING_POPULATION_IN_LABEL :在城镇名称的标签中同时显示人口:{STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :在地图城镇名称标签上显示人口数量 STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :图表曲线宽度: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :图表中曲线的宽度,细线清晰易读,粗线容易分辨颜色 +STR_CONFIG_SETTING_LANDSCAPE :景观: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :此设置决定基本的游戏场景、有什么货物可供运输,以及城镇发展的所需条件。然而,NewGRF 及游戏脚本可以比此设置更加细致地设置游戏场景 STR_CONFIG_SETTING_LAND_GENERATOR :生成地形:{STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :使用原始算法时,系统会依赖基础图形组去生成固定的地形。新算法则是一个建基于 Perlin 噪声原理的地形生成程序,并支援较为细致的地形设置 STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :原始算法 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :新算法 +STR_CONFIG_SETTING_TERRAIN_TYPE :地貌类型: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(仅限生成地图时) 多丘陵地形 +STR_CONFIG_SETTING_INDUSTRY_DENSITY :工业布局: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :设置地图生成过程中,工业数量及一、二级工业比例。 STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :炼油厂距地图边缘的最大距离:{STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :炼油厂只能在地图边缘建设或者海岛海岸。 STR_CONFIG_SETTING_SNOWLINE_HEIGHT :雪线高度:{STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地面粗糙度 (仅限 TerraGenesis):{STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :控制在寒带气候中雪线高度.大雪会影响工业和城镇发展需求. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地面粗糙度 (仅限生成地图时):{STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(仅限新算法) 选择在地图上的山丘密度。光滑的地形会包含较少、相互之间较分散的山丘。粗糙的地形的山丘较密集,但可能会使地图显得重复 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :非常光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :粗糙 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :非常粗糙 +STR_CONFIG_SETTING_VARIETY :多样的分发: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(仅限新算法) 此设置控制地图是否同时包含多山及平坦的地带。由于此设置只会使地图的一部份変得较平坦,请把其他相关设置(如 "地形特点")的值设为 "山地" +STR_CONFIG_SETTING_RIVER_AMOUNT :河流数量: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :选择生成河流的数量 STR_CONFIG_SETTING_TREE_PLACER :森林算法:{STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :选择地图上树木的分布方式:“原版”树木各处一致分布,“改良”各类树木成片分布 STR_CONFIG_SETTING_TREE_PLACER_NONE :没有 STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :原始的 STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :增强的 +STR_CONFIG_SETTING_ROAD_SIDE :道路车辆: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :选择道路通行方向 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :高度图旋转:{STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :逆时针 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :顺时针 STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :由水面场景得到的高度:{STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :允许调整地图边缘的地块地形:{STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :禁用后,地图边缘将变成海洋 STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}一个或多个北边的地块不是闲置的 STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}一个或多个地图某边的地块不是水域 -STR_CONFIG_SETTING_STATION_SPREAD :车站最大占地: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :车站占地上限格数: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :设置车站最大占地面积,注意:太大影响游戏速度 STR_CONFIG_SETTING_SERVICEATHELIPAD :直升机在降落平台自动保养:{STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :直升飞机在降落平台自动保养,即使机场没有机库 @@ -1331,17 +1373,15 @@ 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_AUTOSAVE :自动保存: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :选择自动存档时间间隔 + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 形式的文件名存档 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :游戏存档文件名中日期的格式 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :完整时间 (2008年12月31日) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :英式时间 (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :简短形式 (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :当NewGRF没有指定调色板时,使用: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :设置当NewGRF没有指定时的默认调色板 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS调色板 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows调色板 - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :开始新游戏时自动暂停: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :“打开”时,为了让玩家有时间研究地图,开启新游戏自动暂停游戏 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :暂停时允许: {STRING} @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :保养周期( STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :选择触发车辆保养的条件,距离上一次保养的时间或者与最高可靠性的百分比 STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期 -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}天(%) +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}天/% STR_CONFIG_SETTING_SERVINT_DISABLED :关闭 STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :汽车默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :如果没有为汽车指定保养周期,设定汽车的默认保养周期 @@ -1491,16 +1531,16 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :选择以Ctrl+ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :在 {STRING} 年前自动设置悬臂信号 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :设置电子信号灯出现的时间,在此之前,使用悬臂信号灯(功能相同,外观不同) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :使用信号GUI: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :显示一个供选择信号灯的窗口,取代用Ctrl加点击的方式在各种形式信号灯之间切换的方法 +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :此设置让您在建造铁路信号灯时,看到一个包括所有信号灯种类的窗口,从而毋须按住 Ctrl 键再点击信号灯多次去更换信号灯的种类 STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :默认建造的信号灯类型: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :默认信号灯类型 -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :普通 -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :高级 -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :高级单向 +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :通过信号灯 +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :路径信号灯 +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :单向路径信号灯 STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :在以下信号类型中循环: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :选择用Ctrl+点击的方式切换信号灯时的切换类型 -STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :仅有普通 -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :仅有高级 +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :仅有通过信号灯 +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :仅有路径信号灯 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :全部 STR_CONFIG_SETTING_TOWN_LAYOUT :新建城镇道路自动延伸: {STRING} @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 / {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :没有 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始城市规模因子:{STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值 -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :在道路建设过程中移除荒废的道路元素:{STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :在道路重建改造过程中,移除荒废的道路元素 -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :每 {STRING} 天更新一次统计图 +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :每 {STRING}{NBSP}天刷新一次分配图 STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :指定每次计算货物分配图之间的时间。由于每次重新计算只会处理一个货物分配图元件,因此本设定不代表“每若干日重新计算整个货物分配图”。{}如果此设定赋值越小,則系统需要使用更多处理器时间计算货物分配图。相反,如果此设定赋值越大,則货物被派往新路线所需的时间越长。 -STR_CONFIG_SETTING_LINKGRAPH_TIME :每次刷新货物分配图持续 {STRING} 天 +STR_CONFIG_SETTING_LINKGRAPH_TIME :容许系统用 {STRING}{NBSP}天时间刷新货物分配图 STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :當刷新货物分配图时,系统會衍生一条线程。本设定的值即为线程的持续时间。{}这设定赋值越小,线程越有可能在应当停止的时候还未完成,游戏会暂停运作至线程完成工作。相反,这设定赋值越大,則货物分配功能需要较长时间反映线路网変动的影晌。 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :手动 STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :不对称 @@ -1578,9 +1616,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :假设有交通 STR_CONFIG_SETTING_DISTRIBUTION_MAIL :邮件分配方式:{STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的邮件数量與乙站往甲站的邮件数量大致相同。“不对称”指任何一站往另一站的邮件数量皆由系统随意决定。“手动”指系统不会自动分配邮件的目的地。 STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :装甲货物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :依原有设定,“装甲货物”包括溫带景观的“贵重品”、寒带景观的“金块”及沙漠景观的“钻石”。一些NewGRF可能有不同设置。{} 假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的货物数量與乙站往甲站的装甲货物数量大致相同。“不对称”指任何一站往另一站的装甲货物数量皆由系统随意决定。“手动”指系统不会自动分配装甲货物的目的地。{} 建议的设定:在溫带景观应使用“对称”,因为银行会互相运送贵重品;而在寒带及沙漠景观应使用“不对称”,因为银行不会把金块或钻石送回矿场。 +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :“装甲货物”包括溫带场景的“贵重品”、寒带场景的“金块”及沙漠场景的“钻石”。使用 NewGRF 可能会改変以上设置。{} 假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的货物数量與乙站往甲站的装甲货物数量大致相同。“不对称”指任何一站往另一站的装甲货物数量皆由系统随意决定。“手动”指系统不会自动分配装甲货物的目的地。{} 建议在溫带及沙漠场景使用“对称”,因为银行之间会相互发送贵重品或钻石;在寒带则应使用“不对称”,因为银行不会把金块送回金矿。 STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :其他货物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的货物数量與乙站往甲站的货物数量大致相同。“不对称”指任何一站往另一站的货物数量皆由系统随意决定。“手动”指系统不会自动分配货物的目的地。{}由於货物一般只会被单方向运输,此设定应赋值为“不对称”或“手动”。 +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :如为此设置赋值“不对称”,则任何一站往另一站的货物数量皆由系统随意决定。如为此设置赋值“手动”,则系统不会依据交通路线分配货物的目的地。 STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :分配精确度:{STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :此设定赋值越大,則运算连结图所需的处理器时间越长,您可能会因此见到游戏运行延迟。如果此设定赋值越小,则货物分配的准确度越低,而您可能会发现部份货物沒有被送往您预期它们会到达的目的地。 STR_CONFIG_SETTING_DEMAND_DISTANCE :距离对需求的影晌:{STRING} @@ -1593,60 +1631,62 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :货物分配功 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :速度单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :在界面上以所选择的单位表示速度 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :英制(英里/小时) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :米制(千米/小时) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :国际单位(米/秒) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :公制(千米/小时) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :国际单位制(米/秒) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :运输工具功率单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :在界面上以所选择的单位表示运输工具的功率 STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :英制(马力) -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :米制(马力) -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :国际单位(千瓦) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :公制(马力) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :国际单位制(千瓦) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :重量单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :在界面上以所选择的单位表示重量 -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :英制(短吨) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :米制(公吨) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :国际单位(千克) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :英制(英吨) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :公制(吨) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :国际单位制(千克) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :体积单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :在界面上以所选择的单位表示体积 STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :英制(加仑) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :米制(升) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :国际单位(立方米) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :公制(升) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :国际单位制(立方米) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :牵引力单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :在界面上以所选择的单位表示牵引力 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :英制(磅力) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :米制(千克力) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :国际单位(千牛顿) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :公制(千克力) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :国际单位制(千牛顿) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :高度单位:{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :在界面上以所选择的单位表示高度 STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :英制(呎) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :米制(米) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :国际单位(米) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :公制(米) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :国际单位制(米) -STR_CONFIG_SETTING_GUI :{ORANGE}界面 STR_CONFIG_SETTING_LOCALISATION :{ORANGE}本地化 -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}建设 +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}图形 +STR_CONFIG_SETTING_SOUND :{ORANGE}音效 +STR_CONFIG_SETTING_INTERFACE :{ORANGE}界面 +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}通用 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}视点 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建设 +STR_CONFIG_SETTING_ADVISORS :{ORANGE}消息/新闻 +STR_CONFIG_SETTING_COMPANY :{ORANGE}公司 +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}财务管理 STR_CONFIG_SETTING_VEHICLES :{ORANGE}车辆 -STR_CONFIG_SETTING_STATIONS :{ORANGE}车站 -STR_CONFIG_SETTING_ECONOMY :{ORANGE}经济 -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}货物分配 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理 +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}经由 +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}限制 +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}灾难/事故 +STR_CONFIG_SETTING_GENWORLD :{ORANGE}生成地图 +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}环境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}政府监管 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}城镇 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}工业设施 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}货物分配 STR_CONFIG_SETTING_AI :{ORANGE}竞争 -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}显示选项 -STR_CONFIG_SETTING_INTERACTION :{ORANGE}互动 -STR_CONFIG_SETTING_SOUND :{ORANGE}音响效果 -STR_CONFIG_SETTING_NEWS :{ORANGE}新闻和消息 -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}信号灯 -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}货物处理 STR_CONFIG_SETTING_AI_NPC :{ORANGE}电脑玩家 -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}自动更新 -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}维修 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}经由 -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}列车 -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}城镇 -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}工业设施 STR_CONFIG_SETTING_PATHFINDER_OPF :原始的 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}联机 STR_INTRO_GAME_OPTIONS :{BLACK}游戏选项 STR_INTRO_HIGHSCORE :{BLACK}高分榜 -STR_INTRO_ADVANCED_SETTINGS :{BLACK}高级设置 +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}设置 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 设置 STR_INTRO_ONLINE_CONTENT :{BLACK}在线查找扩展包 STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / 脚本 设定 @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}选择 ' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}显示游戏选项 STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}显示高分榜 -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}显示高级设置 +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}显示设置 STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}显示GRF设定 STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}连接服务器并查找扩展包 STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}查看AI和脚本设定 @@ -1755,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}作为{ STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇推土机 (清除工业设施和其他不可移除物): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}隧道可以相交:{ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}喷气式飞机不会(经常)在小机场坠毁:{ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}修改最高地面高度:{ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}修改地图上山丘的最高高度 STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :温带景观 STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :寒带景观 STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :沙漠景观 @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :货运电车 STR_FACE_CAPTION :{WHITE}选择头像 STR_FACE_CANCEL_TOOLTIP :{BLACK}放弃新的头像 STR_FACE_OK_TOOLTIP :{BLACK}使用新的头像 +STR_FACE_RANDOM :{BLACK}随机种子 STR_FACE_MALE_BUTTON :{BLACK}男性 STR_FACE_MALE_TOOLTIP :{BLACK}选择男性的头像 @@ -1858,8 +1901,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}选择 # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}联机游戏 -STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}已啟用宣传 -STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}选择是否在互联网上宣传此游戏 +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}发布到互联网 +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}选择是否将游戏发布到官方服务器列表。发布的话,可以让互联网上的玩家找到你的服务器并加入游戏,否则进行局域网内的游戏。 STR_NETWORK_SERVER_LIST_ADVERTISED_NO :否 STR_NETWORK_SERVER_LIST_ADVERTISED_YES :是 STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}玩家名称: @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :客户端 STR_NETWORK_SPECTATORS :旁观者 STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}请输入您想赠与的资金数 +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}旁观者 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}不保存所输入的密码 @@ -2266,15 +2310,15 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :电气化铁路 STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :单轨铁路建设 STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :磁悬浮铁路建设 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁轨。按住 Ctrl 键切换建设/移除铁轨。按住 Shift 键显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}使用多向路轨工具铺设铁轨。按住 Ctrl 键切换建设/移除铁轨。按住 Shift 键显示预计费用。 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设轨道。按住 Ctrl 键切换建设/移除轨道。按住 Shift 键显示预计费用。 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}使用多向路轨工具铺设轨道。按住 Ctrl 键切换建设/移除轨道。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}建设列车车库(可以购买或维护列车)按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}将铁路变为路点。按住 Ctrl 键允许合并路点。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}建设火车站。按住 Ctrl 键允许合并站台。按住 Shift 键显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}设置铁路信号。按住 Ctrl 键可以切换悬臂式/光板式信号灯{}拖拽可以沿此分支建立信号灯。按住 Ctrl 键可以建立到下一个联结点。{}按住 Ctrl 键单击此按钮可以开关信号灯选择窗口{}按住 Shift 键显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}建造铁路信号。{} 按住 Ctrl 键点选铁路,系统会切换悬臂式/电子式信号灯,或者更改被点选信号灯的种类{} 在一段直线铁路上拖拽,系统会依照设置的信号间距,沿铁路建立信号灯。如果按住 Ctrl 键拖拽,系统会建造信号灯至拖拽方向前的下一个道岔{} 如果按住 Shift 键点击铁路或在铁路上拖拽,系统会显示建置成本但不设置信号灯{} 如果按住 Ctrl 键点击此键,系统会切换信号灯选择窗口的显示状态 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}建设铁路桥梁。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}建设铁路隧道。按住 Shift 键显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建设/拆除铁轨、信号灯、路点和车站。按住 Ctrl 键可在移除路点和车站时同时移除铁轨。 +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建设/拆除轨道、信号灯、路点和车站。按住 Ctrl 键可在移除路点和车站时同时移除轨道。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}转换/升级 铁路类型。按住 Shift 键显示预计费用。 STR_RAIL_NAME_RAILROAD :铁路 @@ -2295,9 +2339,9 @@ STR_STATION_BUILD_RAIL_CAPTION :{WHITE}火车 STR_STATION_BUILD_ORIENTATION :{BLACK}方向 STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}选择火车站的方向 STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}轨道数量 -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}选择车站月台的数量 -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}月台长度 -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}选择车站月台的长度 +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}选择车站站台的数量 +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}站台长度 +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}选择车站站台的长度 STR_STATION_BUILD_DRAG_DROP :{BLACK}拖动模式 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}使用拖动模式建设车站 @@ -2309,19 +2353,19 @@ STR_STATION_CLASS_WAYP :路标 # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}信号灯 -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}标准信号(悬臂){}信号灯是多列车铁路系统的必备设施 -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号(悬臂){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号(悬臂){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号(悬臂){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}双向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}标准信号(电子){}信号灯是多列车铁路系统的必备设施 -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号(电子){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号(电子){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}双向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号灯转换工具{}当此按钮按下时再选择信号灯种类{}就可以转换信号灯为选择的种类{}CTRL+点击{}可以把现有信号灯在电子和旗帜间转换 +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}通过信号灯(悬臂){}是最基本的信号灯,只允许一列车进入该信号灯以后的区间 +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号灯(悬臂){}在下一轨道区间上至少有一个出口信号灯是绿色时此信号亮绿灯,否则亮红灯 +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号灯(悬臂){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号灯(悬臂){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}路径信号灯(悬臂){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}单向路径信号灯(悬臂){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}通过信号灯(电子){}是最基本的信号灯,只允许一列车进入该信号灯以后的区间 +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号灯(电子){}当下一轨道区间至少有一个出口信号灯是绿色时,此信号灯亮绿灯,否则亮红灯 +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号灯(电子){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}路径信号灯(电子){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}单向路径信号灯(电子){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号灯转换工具{}按下此按钮,可以将已经存在的信号灯转化为选择的信号灯类型,按下CTRL键盘再点击,可以在电子和悬臂型之间转换 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}拖拽布置信号灯的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}减少拖拽布置信号灯的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}增加拖拽布置信号灯的间隔距离 @@ -2512,7 +2556,7 @@ STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}供应商 STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}采购商 STR_INDUSTRY_CARGOES_HOUSES :{WHITE}房屋 -STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}点該工业可显示其上下游工业 +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}点击查看上下游产业链 STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}点该货物可显示其上下游工业 STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}显示产业链 STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}显示货物的上下游工业 @@ -2546,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}接受货物:{LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}轨道限速: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}道路限速:{LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :岩石 @@ -2557,27 +2602,27 @@ STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :雪地 STR_LAI_CLEAR_DESCRIPTION_DESERT :沙漠 STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} 轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :有信号灯的{STRING}铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} 预信号灯轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} 出口信号灯轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} 复合信号灯轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} 普通信号灯轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} 单向信号灯轨道 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} 具有入口信号灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} 具有出口信号灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} 具有组合信号灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} 具有高级信号灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} 具有高级单向信号灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} 同时有入口灯和出口灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} 同时有入口灯和组合灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} 同时有入口灯和高级灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} 同时有入口灯和单向高级灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} 同时有出口灯和组合灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} 同时有出口灯和高级灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} 同时有出口灯和单向高级灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} 同时有组合灯和高级灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} 同时有组合灯和高级单向灯的铁轨 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} 同时有高级灯和单向高级灯的铁轨 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :有通过信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :有入口信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :有出口信号灯的{STRING} 轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :有复合信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :有路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} 有单向路径信号灯的轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :有通过信号灯和入口信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :有通过信号灯和出口信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :有通过信号灯和复合信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :有通过信号灯和路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :有通过信号灯和单向路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :有入口信号灯和出口信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :有入口信号灯和复合信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :有入口信号灯和路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :有入口信号灯和单向路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :有出口信号灯和复合信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :有出口信号灯和路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :有出口信号灯和单向路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :有复合信号灯和路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :有复合信号灯和单向路径信号灯的{STRING}轨道 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :有路径信号灯和单向路径信号灯的{STRING}轨道 STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} 列车车库 STR_LAI_ROAD_DESCRIPTION_ROAD :公路 @@ -2642,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-2013 OpenTTD 团队 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD 团队 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏 @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}保存 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}以选定的名字保存当前游戏 STR_SAVELOAD_LOAD_BUTTON :{BLACK}载入 STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}载入所选 +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}载入选定的高度图 STR_SAVELOAD_DETAIL_CAPTION :{BLACK}游戏详情 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}无可用信息 STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2676,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}城镇数量: STR_MAPGEN_DATE :{BLACK}日期: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}工业数量: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}最高地面高度: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}把地图上山丘的最高高度加 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}把地图上山丘的最高高度减 1 STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}雪线高度: STR_MAPGEN_SNOW_LINE_UP :{BLACK}提高雪线高度 STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}降低雪线高度 -STR_MAPGEN_RANDOM_SEED :{BLACK}随机种子: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}点志这里可以输入一个随机种子 -STR_MAPGEN_RANDOM :{BLACK}随机种子 -STR_MAPGEN_RANDOM_HELP :{BLACK}改变生成地形所用的随机种子 STR_MAPGEN_LAND_GENERATOR :{BLACK}生成地形: STR_MAPGEN_TREE_PLACER :{BLACK}生成树木: STR_MAPGEN_TERRAIN_TYPE :{BLACK}地形特点: @@ -2709,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}高度 STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}地图尺寸: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}请输入随机种子 +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}改変地图上的最高地面高度 STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}改变雪线高度 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}改变游戏开始的日期 @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}上移 STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}将选定的 NewGRF 文件向上移动 STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}下移 STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}将选定的 NewGRF 文件向下移动 +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}更新 +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}更新当前已安装的扩展包 STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}已经安装的 NewGRF 文件列表{}点击可以改变参数 STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}设置参数 @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}没有找 STR_NEWGRF_SETTINGS_DISABLED :{RED}禁用 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}与此版本OpenTTD不兼容 +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}保存预设值 +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}可用的预设名称,请选择一个来复制到存档列表中 +STR_SAVE_PRESET_TITLE :{BLACK}输入预设名称 +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}保存预设值到当前选定的名称 +STR_SAVE_PRESET_CANCEL :{BLACK}取消 +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}不修改默认设置 +STR_SAVE_PRESET_SAVE :{BLACK}保存 +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}以当前选定的名称保存预设值 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}调整 NewGRF 参数 STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}关闭 @@ -2811,14 +2868,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一个 sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的 sprite,略过任何伪 (pseudo)/重新着色/文字 sprite 及结尾的换行标记。 +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到最后的图形元素后,返回第一个图形元素继续处理。 STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}前往选定的sprite。若其不正常,则继续前进到下个sprite。 STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一个 sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处理上一个正常的 sprite,略过任何伪 (pseudo)/重新着色/文字 sprite 及开头的换行标记。 +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处理上一个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到第一个图形元素后,返回最后的图形元素继续处理。 STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}显示目前选取的 sprite。当 sprite 正在描绘时会忽略其定位。 STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}移动 sprite 到指定的 X 与 Y 座标位移 -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X 座标位移: {NUM}, Y 座标位移: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}重置相关 +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}重置当前相关偏移 +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X 偏移: {NUM}, Y 偏移: {NUM} (绝对) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X 偏移: {NUM}, Y 偏移: {NUM} (相对) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}选择 sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}请从屏幕画面中任意选取一个 sprite @@ -2846,7 +2906,7 @@ STR_NEWGRF_ERROR_INVALID_ID :尝试使用非 STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 含有损坏的图形元素{}所有损坏的图形元素{}将显示为红色的问号(?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :图像读取时发生越界错误 (sprite {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}当前基础图组缺失参数.{}请进行修正 +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}当前基础图形组缺失部分图片。{}请升级图形组。 STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}当前使用的基础图形包参数有误。{}请更新基础图形包。{}如果你正在使用 {YELLOW}OPENTTD的开发测试版{WHITE},你需要 {YELLOW}相应配套的基础图形包。{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :GRF源文件不可访问 (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} 被 {STRING} 禁用 @@ -2875,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}缺失文 STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}'的行为可能造成同步错误或是崩溃。 STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}{1:ENGINE}机车车厢的状态没在车库内发生变动 STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}当车辆不在车库中时,这将改变 '{1:ENGINE}' 的车辆长度. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}它会在 '{1:ENGINE}' 在机厂外或不在接受改装时改変其运载能力 STR_BROKEN_VEHICLE_LENGTH :{WHITE}列车 '{VEHICLE}' 属于 '{COMPANY}' 使长度无效化了. 这可能是NewGRF导致的. 有可能会发生崩溃或同步错误. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' 的信息不正确 @@ -2889,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<种类不明的运输工具> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}正在扫描 NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}正在扫描 NewGRF。 这可能需要一些时间,取决于其数量... @@ -2926,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}已运输 {GREEN} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}已运输:{CARGO_TINY} /{RED}总需求: {CARGO_LONG} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (已运输) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK} 天成长一次 -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK} 天成长一次(加速中) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK}{NBSP}天成长一次 +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK}{NBSP}天成长一次 (正接受资助) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK} 城镇发展正在 {RED}停滞 {BLACK}! STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}当前城镇噪音: {ORANGE}{COMMA}{BLACK} 最大: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到城镇所在的位置. 单击的同时按住Ctrl会在新视点中显示城镇位置 @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :信息 STR_GOAL_QUESTION_CAPTION_WARNING :警告 STR_GOAL_QUESTION_CAPTION_ERROR :错误 -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :取消 STR_GOAL_QUESTION_BUTTON_OK :确定 STR_GOAL_QUESTION_BUTTON_NO :取消 @@ -3006,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :重新开启 STR_GOAL_QUESTION_BUTTON_POSTPONE :暂缓 STR_GOAL_QUESTION_BUTTON_SURRENDER :放弃 STR_GOAL_QUESTION_BUTTON_CLOSE :关闭 +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}财政补贴项目 @@ -3026,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}上一 STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}转到上一页 STR_STORY_BOOK_NEXT_PAGE :{BLACK}下一个 STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}转到下一页 +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}无效的目标参照 # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}车站名称{}点击可将屏幕中心移动到车站所在位置. 单击的同时按住Ctrl会在新视点中显示车站位置 @@ -3040,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}选择 # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}等待:{WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} 转运自 {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} 等待装货) @@ -3073,12 +3138,12 @@ STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_S STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} 前往 本站 STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} 直达该站 -STR_STATION_VIEW_GROUP_S_V_D :來源-途经-目的地 -STR_STATION_VIEW_GROUP_S_D_V :來源-目的地-途经 -STR_STATION_VIEW_GROUP_V_S_D :途经-來源-目的地 -STR_STATION_VIEW_GROUP_V_D_S :途经-目的地-來源 -STR_STATION_VIEW_GROUP_D_S_V :目的地-來源-途经 -STR_STATION_VIEW_GROUP_D_V_S :目的地-途经-來源 +STR_STATION_VIEW_GROUP_S_V_D :来源-途经-目的地 +STR_STATION_VIEW_GROUP_S_D_V :来源-目的地-途经 +STR_STATION_VIEW_GROUP_V_S_D :途经-来源-目的地 +STR_STATION_VIEW_GROUP_V_D_S :途经-目的地-来源 +STR_STATION_VIEW_GROUP_D_S_V :目的地-来源-途经 +STR_STATION_VIEW_GROUP_D_V_S :目的地-途经-来源 ############ range for rating starts STR_CARGO_RATING_APPALLING :垃圾(最差评价) @@ -3284,16 +3349,19 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :未分组汽车 STR_GROUP_DEFAULT_SHIPS :未分组船只 STR_GROUP_DEFAULT_AIRCRAFTS :未分组飞机 -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}组 - 点击以列出本组所有车辆 +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}组 - 点击一个组别以显示所有隶属此组的车辆。拖曳组别标签以重新排列组别的次序和层级。 STR_GROUP_CREATE_TOOLTIP :{BLACK}创建分组 STR_GROUP_DELETE_TOOLTIP :{BLACK}删除分组 STR_GROUP_RENAME_TOOLTIP :{BLACK}重命名该分组 STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}点击以停止本组自动更新功能的使用 +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}删除分组 +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}确定要删除这个分组及其下级分组么? + STR_GROUP_ADD_SHARED_VEHICLE :添加共享车辆 STR_GROUP_REMOVE_ALL_VEHICLES :移除所有车辆 -STR_GROUP_RENAME_CAPTION :{BLACK}移除分组 +STR_GROUP_RENAME_CAPTION :{BLACK}重命名分组 # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :购买普通列车 @@ -3327,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :除了 {CARGO_L STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牵引力:{GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航行距离: {GOLD}{COMMA} 格 -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车选择列表 - 点击可以查看详细信息 -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}汽车列表 - 点击可以查看详细信息 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船只列表 - 点击可以查看详细信息 -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞机列表 - 点击可以查看详细信息 +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车车辆选择列表。点击车辆查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏车辆的种类 +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}路面车辆选择列表。点击车辆查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏车辆的种类 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶选择列表。点击船舶查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏船舶的种类 +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞行器选择列表。点击飞行器查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏飞行器的种类 STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}购买车头/车厢 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}购买汽车 @@ -3352,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}重命 STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}重命名船只型号 STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}重命名飞机型号 +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}隐藏 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}隐藏 +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}隐藏 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}隐藏 + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}显示 +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}显示 +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}显示 +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}显示 + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切换隐藏还是显示有关的铁路列车类型 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切换隐藏还是显示有关的路面车辆类型 +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切换隐藏还是显示有关的船舶类型 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切换是否显示飞机类型 + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}重命名车辆的类型 STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}重命名汽车型号 STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}重命名船只型号 @@ -3405,7 +3488,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}克隆 STR_DEPOT_CLONE_SHIP :{BLACK}克隆船只 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}克隆飞机 -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}复制列车。按此按钮后{}点击一辆在车库内或外面的列车即可{}按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}点击此键后,再点击任何列车,即会购买一列跟它一样的列车。{}如果点击此键后,按住 Ctrl 键点击列车,则新列车会与旧列车共享调度计划。{}如果点击此键后,按住 Shift 键点击列车,系统会显示购买复制列车的所需资金,但不会建造新列车。 STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}复制汽车。按此按钮后{}点击一辆在车库内或外面的汽车即可{}按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}复制船只。按此按钮后{}点击一个在船坞内或外面的船只即可。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}复制飞机。按此按钮后{}点击一个在机库内或外面的飞机即可。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 @@ -3456,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :汽车 STR_REPLACE_VEHICLE_SHIP :船只 STR_REPLACE_VEHICLE_AIRCRAFT :飞机 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}正在使用的运输工具 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}此行显示您拥有的运输工具 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}可用的运输工具 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}此行显示可供替换的运输工具 + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}选择要更新的车辆类型 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}选择用来替换左侧指定车辆的新车辆 @@ -3580,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}运载 STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}转运成本: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}保养周期:{LTBLUE}{COMMA}天{BLACK} 上次保养:{LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}保养周期:{LTBLUE}{COMMA}天{BLACK} 上次保养日期:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}保养周期:{LTBLUE}{COMMA}%{BLACK} 上次保养:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}增大检修时间间隔,以10为单位进行调整. 按住Ctrl同时点击则以5为单位进行调整 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}减少检修时间间隔,以10为单位进行调整. 按住Ctrl同时点击则以5为单位进行调整 @@ -3785,9 +3873,9 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(不卸货且 STR_ORDER_AUTO_REFIT_ANY :可用类型 -STR_ORDER_STOP_LOCATION_NEAR_END :[月台近端] -STR_ORDER_STOP_LOCATION_MIDDLE :[月台中间] -STR_ORDER_STOP_LOCATION_FAR_END :[月台远端] +STR_ORDER_STOP_LOCATION_NEAR_END :[近端] +STR_ORDER_STOP_LOCATION_MIDDLE :[中间] +STR_ORDER_STOP_LOCATION_FAR_END :[远端] STR_ORDER_OUT_OF_RANGE :{RED} (下一个目的地距离过远) @@ -3810,10 +3898,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :行驶 (无时 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :限速 {2:VELOCITY} (无时间表) STR_TIMETABLE_TRAVEL_FOR :途中行驶 {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :开往{STRING} ,限速为 {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :行驶 ({STRING}, 无时间表) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :前往 {STRING},以最大速度 {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(停靠 {STRING}, 无时间表) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(驶往 {STRING}, 无时间表) STR_TIMETABLE_STAY_FOR :并且停留 {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :并行驶{STRING} -STR_TIMETABLE_DAYS :{COMMA} 天 -STR_TIMETABLE_TICKS :{COMMA} 个时间标记 +STR_TIMETABLE_DAYS :{COMMA}{NBSP}天 +STR_TIMETABLE_TICKS :{COMMA}{NBSP}个时间标记 STR_TIMETABLE_TOTAL_TIME :{BLACK}该时间表需要 {STRING} 完成 STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}该时间表至少需要 {STRING} 完成(并非全部计划的时间) @@ -3939,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :当前AI在前 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} 的说明 STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} 的更新日志 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} 的版权信息 +STR_TEXTFILE_WRAP_TEXT :{WHITE}強迫文字换行 +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}強迫宽于窗格的內文自动换行 STR_TEXTFILE_VIEW_README :{BLACK}查看说明 STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}更新日志 STR_TEXTFILE_VIEW_LICENCE :{BLACK}版权信息 @@ -4049,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}挖掘 STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}已经是海平面了 STR_ERROR_TOO_HIGH :{WHITE}太高了 STR_ERROR_ALREADY_LEVELLED :{WHITE}... 已经平了 +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}这样的话,在它上面的桥梁会太高 # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}不能为公司更名…… @@ -4075,7 +4170,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}太靠 STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}太靠近另一个城镇了 STR_ERROR_TOO_MANY_TOWNS :{WHITE}城镇太多了 STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}地图上没有多余的地方了 -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}这个城镇不会修建道路{}请在在"高级设置->经济->城镇"处{}设置允许城镇建设道路 +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}城镇不会修建道路{}您可以在“设置->环境->城镇”选项下开启建设道路的功能 STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}正在进行道路工程 STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}无法删除城镇...{}城镇范围内还有车站、车库或无法移除的区块 STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 城市中心没有合适的地方放置公司塑像 @@ -4099,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}林场 STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... 只能在雪线以上建造 STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... 只能在雪线以下建造 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}没有合适的地方建设 “{STRING}” 工业设施 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}请更改参数以生成较好的场景 + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}不能在这里建设火车站…… STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}不能建设公共汽车站 @@ -4186,15 +4284,15 @@ STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}当前 STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(现金不够) # Rail construction errors -STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}不可能的铁轨组合 +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}不可能的轨道组合 STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}必须先拆除信号灯 -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}没有合适的铁轨 -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}必须先拆除铁轨 +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}没有合适的轨道 +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}必须先拆除轨道 STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}这是单行道或这条路被堵死了 STR_ERROR_CROSSING_DISALLOWED :{WHITE}该轨道类型不允许建设平交道 STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}不能在这里设置信号灯…… -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在这里铺设铁轨…… -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}不能从这里拆除铁轨…… +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在这里铺设轨道…… +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}不能从这里拆除轨道…… STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}不能从这里拆除信号灯…… STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}无法转换此处的信号灯… STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 这里没有铁路 @@ -4235,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}必须 STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}起止点不能相同 STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}桥梁起止点不在同一水平高度 STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}桥梁对于现有地形来说位置太低了 +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}这桥梁对这个地形而言太高了 STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}起止两端必须在一条线上 STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}桥的两端必须都位于地面上 STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 桥梁太长 @@ -4261,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}你已 STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}无法新建分组…… STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}无法删除分组…… STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}无法重命名分组…… +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}无法移动分组... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}无法从该组移除所有运输工具 STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}无法添加运输工具到该组…… STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}无法添加共享指令的运输工具到该组…… @@ -4444,7 +4544,7 @@ STR_INDUSTRY_NAME_COLA_WELLS :可乐泉 STR_INDUSTRY_NAME_TOY_SHOP :玩具店 STR_INDUSTRY_NAME_TOY_FACTORY :玩具工厂 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :塑料喷泉 -STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :跳跳水工厂 +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :汽水工厂 STR_INDUSTRY_NAME_BUBBLE_GENERATOR :泡泡小屋 STR_INDUSTRY_NAME_TOFFEE_QUARRY :太妃场 STR_INDUSTRY_NAME_SUGAR_MINE :蔗糖矿 @@ -4495,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut 内燃机车 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut 内燃机车 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (蒸汽机) @@ -4543,7 +4643,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :可乐罐车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :糖果篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :电池挂车 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :跳跳汁挂车 +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :汽水挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :塑料挂车 STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (电力) @@ -4704,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake 客轮 STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate 货轮 STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell 货轮 -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover 货轮 +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover 货轮 STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut 货轮 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (隐藏) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 012d1c5a2c..223f0491bf 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -3,8 +3,8 @@ ##isocode sk_SK ##plural 10 ##textdir ltr -##digitsep . -##digitsepcur . +##digitsep {NBSP} +##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x041b ##grflangid 0x16 @@ -159,7 +159,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.g :malinovky # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} cestujuci{P "" "" ch} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}cestujuci{P "" "" ch} STR_QUANTITY_COAL :{WEIGHT_LONG} uhlia STR_QUANTITY_MAIL :{COMMA} balik{P "" y ov} pošty STR_QUANTITY_OIL :{VOLUME_LONG} ropy @@ -312,6 +312,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Navigacn STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvná lišta - posúva zoznam doľava/doprava STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolácia budov atď. na rovný terén. CTRL označí oblasť diagonálne. Shift zobrazí odhad nákladov +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Ukáž skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Ukáž skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Ukáž skryté +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Ukáž skryté + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Zapnutím tohoto tlačítka sa budú zobrazovať aj skyté koľajové vozidlá +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Zapnutím tohoto tlačítka sa budú zobrazovať aj skyté cestné vozidlá +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Zapnutím tohoto tlačítka sa budú zobrazovať aj skyté lode +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zapnutím tohoto tlačítka sa budú zobrazovať aj skyté lietadlá + # Query window STR_BUTTON_DEFAULT :{BLACK}Štandardné STR_BUTTON_CANCEL :{BLACK}Zrušiť @@ -358,8 +369,8 @@ STR_SORT_BY_COST :Cena STR_SORT_BY_POWER :Výkon STR_SORT_BY_TRACTIVE_EFFORT :Trakčná sila STR_SORT_BY_INTRO_DATE :Uvedenie na trh -STR_SORT_BY_RUNNING_COST :Náklady na prevádzku -STR_SORT_BY_POWER_VS_RUNNING_COST :Výkon/Náklady na prevádzku +STR_SORT_BY_RUNNING_COST :Prevádzkové náklady +STR_SORT_BY_POWER_VS_RUNNING_COST :Výkon/Prevádzkové náklady STR_SORT_BY_CARGO_CAPACITY :Kapacita nákladu STR_SORT_BY_RANGE :Rozsah STR_SORT_BY_POPULATION :Populácia @@ -425,7 +436,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Koniec ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Nastavenia hry -STR_SETTINGS_MENU_CONFIG_SETTINGS :Rozšírené nastavenia +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Nastavenia STR_SETTINGS_MENU_SCRIPT_SETTINGS :Umelá inteligencia / Nastavenia hry STR_SETTINGS_MENU_NEWGRF_SETTINGS :Nastavenie NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavenie priehľadnosti @@ -534,7 +545,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Prepnúť okraj STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Prepnutie zafarbenia blokov hliny ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -550,22 +561,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -659,7 +688,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Úver: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Spolu: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Počet vozidiel (automobilov, vlakov, lodí a lietadiel), ktoré zmenili zisk minulý rok -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Počet nedávno obsluhovaných staníc. Železničná stanica, autobus. zastávka, letisko sa počítajú oddelenie aj keď patria do rovnakej stanice +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Počet nedávno obsluhovaných staníc. Železničná stanica, autobus. zastávka, letisko sa počítajú oddelene aj keď patria do rovnakej stanice STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Zisk vozidla s najnižším príjmom (zo všetkých vozidiel starších ako 2 roky) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Množstvo peňazí zarobených v kvartáli s najmenším ziskom v posledných 12 kvartáloch STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Množstvo peňazí zarobených v kvartáli s najväčším ziskom v posledných 12 kvartáloch @@ -821,7 +850,7 @@ STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLAC STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvý vlak dorazil do stanice {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvý autobus dorazil do {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvý automobil dorazil do {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvá elektricka dorazila do stanice {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvá električka dorazila do stanice {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvá nákladná električka dorazila do stanice {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvá loď dorazila do {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Mesto oslavuje . . .{}Prvé lietadlo pristálo na {STATION}! @@ -853,8 +882,8 @@ STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDE STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponzoroval výstavbu nového mesta {TOWN}! -STR_NEWS_INDUSTRY_CONSTRUCTION :{G=s}{BIG_FONT}{BLACK}Nové {STRING} sa začína stavať neďaleko mesta {TOWN}! -STR_NEWS_INDUSTRY_PLANTED :{G=s}{BIG_FONT}{BLACK}Nové {STRING} bude postavené neďaleko mesta {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{G=s}{BIG_FONT}{BLACK}Nov{G "ý" "á" "é"} {STRING} sa začína stavať neďaleko mesta {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{G=s}{BIG_FONT}{BLACK}Nov{G "ý" "á" "é"} {STRING} bude postaven{G "ý" "á" "é"} neďaleko mesta {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} oznamuje skoré uzavretie! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Kvôli zásobovacím problémom {STRING} oznamuje skoré uzavretie! @@ -862,11 +891,11 @@ STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLAC STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Európska Menová Únia!{}{}Euro bolo uvedené ako hlavná mena pre bežné používanie v tejto krajine! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Svetová kríza!{}{}Finanční experti majú obavy z prepadu ekonomiky! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Koniec kíizy!{}{}Očakáva sa vzostup predaja a posilnenie ekonomiky! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Koniec krízy!{}{}Očakáva sa vzostup predaja a posilnenie ekonomiky! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} zvyšuje produkciu! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nove nalezisko uhlia sa objavilo v {INDUSTRY}!{}Ocakava sa zdvojnasobenie produkcie! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nove nalezisko ropy sa objavilo na {INDUSTRY}!{}Ocakava sa zdvojnasobenie produkcie! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nové nálezisko uhlia sa objavilo v {INDUSTRY}!{}Očakáva sa zdvojnásobenie produkcie! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nové nálezisko ropy sa objavilo na {INDUSTRY}!{}Očakáva sa zdvojnásobenie produkcie! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Na {INDUSTRY} zlepsili pouzivane metody!Ocakava sa zdvojnasobenie produkcie! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} zvyšuje produkciu {0:STRING.g} o {2:COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} znižuje produkciu o 50% @@ -878,28 +907,27 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čaká v depe STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čaká v leteckom hangári -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} má veľmi málo príkazov v poriadku STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} má neplatný príkaz STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} má dvojité príkazy STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} má nesprávnu stanicu v zozname -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} má v zozname príkazov letisko, ktorého dráha je príliš krátka STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zastaralo STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} je veľmi zastaralé STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} je veľmi zastaralé a urgentne potrebuje výmenu STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nemôže nájsť cestu k pokračovaniu -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} sa stratilo +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} sa stratil{G 0 "" "a" "o"} STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} zisk vozidla v minulom roku bol {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} sa nemôže dostať do ďalšej stanice, pretože tá je príliš ďaleko STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Príkaz zmeňiť tovar po zlyhaní zastavil {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autoobnovenie zlyhalo u {VEHICLE}{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nové {STRING} dostupné! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nov{G "ý" "á" "é"} {STRING} dostupn{G 0 "ý" "á" "é"}! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nové {STRING} dostupné! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G "ý" "á" "é"} {STRING} dostupn{G "ý" "á" "é"}! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} už neprijíma {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} už neprijíma {STRING} alebo {STRING} @@ -967,10 +995,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gruzínske Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iránsky rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestné vozidlá STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Strana po ktorej jazdia cestne vozidla STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Jazdia nalavo @@ -1006,11 +1030,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanske STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukladanie STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vyber interval automatickeho ukladania +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Vypnuté STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Každý mesiac STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Každé 3 mesiace STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Každých 6 mesiacov STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Každých 12 mesiacov +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jazyk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Výber jazyka rozhrania @@ -1022,8 +1048,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozlíš STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Voľba rozlíšenia obrazovky STR_GAME_OPTIONS_RESOLUTION_OTHER :iné -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formát screenshotov -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Zvoľte formát screenshotov +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veľkosť rozhrania +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vyberte si veľkosť prvkov rozhrania + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normálne +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná veľkosť +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Štvornásobná veľkosť STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základná sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvoľte sadu grafiky, ktorá má byť použitá @@ -1039,6 +1069,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Zvoľte STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškoden{P ý é ých} súbor{P "" y ov} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatočné informácie o základnej sade hudby +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepodarilo sa načítať zoznam podporovaných rozlíšení STR_ERROR_FULLSCREEN_FAILED :{WHITE}Zobrazovanie na celú obrazovku zlyhalo # Custom currency window @@ -1117,6 +1148,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Veľmi rovný STR_TERRAIN_TYPE_FLAT :Rovný STR_TERRAIN_TYPE_HILLY :Kopcovitý STR_TERRAIN_TYPE_MOUNTAINOUS :Horský +STR_TERRAIN_TYPE_ALPINIST :Alpinista STR_CITY_APPROVAL_PERMISSIVE :Pozitivny STR_CITY_APPROVAL_TOLERANT :Tolerantny @@ -1124,22 +1156,23 @@ STR_CITY_APPROVAL_HOSTILE :Odmietavy STR_WARNING_NO_SUITABLE_AI :{WHITE}Nieje dostupné žiadne použiteľné AI...{}Niekoľko AI je možné stiahnuť cez 'Online obsah' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Rozšírené nastavenia +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Nastavenia STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrovací reťazec: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Rozšíriť všetko STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Zbaliť všetky STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(nie je potrebné vysvetlenie) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Pôvodná hodnota: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Nastavenie typu: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE_CLIENT :Nastavenia klienta (neuložia sa; ovplyvní všetky hry) +STR_CONFIG_SETTING_TYPE_CLIENT :Nastavenia klienta (neuchovávané v uložených hrách; ovplyvní všetky hry) STR_CONFIG_SETTING_TYPE_GAME_MENU :Nastavenia hry (uložia sa; ovplyvní iba nové hry) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavenia hry (uložia sa; ovplyvní iba aktuálnu hru) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavenia spoločnosti (uložia sa; ovplyvní iba nové hry) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavenia spoločnosti (uložia sa; ovplyvní iba aktuálnu firmu) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Ukáž: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Obmedzuje zoznam nižšie len na nastavenia, ktoré boli zmenené +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategória: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typ: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Filtruje zoznam podľa definovaných nastavení STR_CONFIG_SETTING_RESTRICT_BASIC :Základné nastavenia STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé nastavenia STR_CONFIG_SETTING_RESTRICT_ALL :Odborné nastavenia / všetky nastavenia @@ -1147,12 +1180,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavenia s od STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavenia s odlišnou hodnotou než aké má tvoja nová hra STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Obmedzuje zoznam nižšie na niektoré typy nastavení -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všetky nastavenia -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavenia klienta (nieje uložené v uložených hrách; ovplyvní všetky hry) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všetky typy nastavení +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavenia klienta (nieje uložené; ovplyvní všetky hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavenia hry (uložené v uložených hrách; ovplyvní iba nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavenia hry (uložené v uložených hrách; ovplyvní iba aktuálnu hru) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavenia spoločnosti (uložené v uložených hrách; ovplyvní iba nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavenia spoločnosti (uchované v uloženej hre; ovplyvnia iba aktuálnu spoločnosť) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Zobrazenie všetkých výsledkov vyhľadávania nastavením{}{SILVER}kategórie {BLACK}na {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Zobrazenie všetkých výsledkov vyhľadávania nastavením{}{SILVER}typu {BLACK}na {WHITE}Všetky typy nastavenia +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Zobrazenie všetkých výsledkov vyhľadávania nastavením{}{SILVER}kategórie {BLACK}na {WHITE}{STRING} {BLACK}a {SILVER}typu {BLACK}na {WHITE}Všetky typy nastavenia +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nič - STR_CONFIG_SETTING_OFF :nie STR_CONFIG_SETTING_ON :áno @@ -1190,12 +1227,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Zakázať otá STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ak je povolené vlaky sa nebudú otáčať v staniciach, ktoré niesu na konci trate, aj keby sa im tým skrátila cesta do ďalšieho cieľa STR_CONFIG_SETTING_DISASTERS :Havárie: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Vypne alebo zapne katastrofy, ktoré môžu občas zablokovať alebo zničiť vozidlá alebo infraštruktúru -STR_CONFIG_SETTING_CITY_APPROVAL :Postoj mestskej správy k zmenám v ich oblasti: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Postoj mestskej správy k reštrukturalizácii v oblasti: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Zvoľte ako veľmi ovplyvňuje hluk a poškodzovanie prostredia spoločnosťami ich hodnotenie v meste a ich budúce možnosti výstavby v oblasti vlastnenej mestom -STR_CONFIG_SETTING_BUILDONSLOPES :Umožniť výstavbu na svahoch a na pobreží: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ak je zapnuté, trate a stanice môžu byť stavané na svahoch. Ak je vypnuté, stavanie je možné len na svahoch ktoré su rovnakého smeru ako trate čiže nepotrebujú podporu -STR_CONFIG_SETTING_AUTOSLOPE :Povoliť úpravy terénu pod budovami, koľajami, a pod.: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximálna výška mapy: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Nastav maximálnu povolenú výšku pohorí na mape +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nemôžete nastaviť takúto maximálnu výšku mapy. Najmenej jeden vrch na mape je vyšší. +STR_CONFIG_SETTING_AUTOSLOPE :Povoliť úpravy terénu pod budovami, koľajami, atď.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Umožňuje úpravy terénu pod budovami a traťami bez potreby ich odstránenia STR_CONFIG_SETTING_CATCHMENT :Povoliť realistickejšiu veľkosť oblasti pokrytia: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Má úchytné plochy rôznych veľkostí pre rôzne typy staníc a letísk @@ -1218,17 +1256,13 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Strmosť svahu STR_CONFIG_SETTING_FORBID_90_DEG :Zakázať vlakom a lodiam otáčanie o 90°: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 stupňové zákruty vznikajú keď sa spojí horizontálna a vertikálna dráha. Týmto vznikne potreba vlaku "otočiť sa" o 90 stupňov pri prechode touto zákrutou namiesto 45 stupňovího prejazdu ako pri ostatných kombináciách trate. Toto isté platí aj pre lode. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Povoliť spájať stanice nepriamo hraničiace: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povoluje pridanie časti stanice bez priamej manipulácie s existujúcimi časťami. Použite CTRL+CLICK na položenie novej časti. -STR_CONFIG_SETTING_IMPROVEDLOAD :Použiť vylepšený algoritmus nakladania: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ak je zapnuté, viaceré vozidlá budú nakladané na na nakládke postupne. Nakládka daľšieho vozidla začne len ak je na nakládke dostatok nákladu pre predošlé vozidlo. -STR_CONFIG_SETTING_GRADUAL_LOADING :Postupné nakladanie vozidiel: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupne nakladaj vozidlá s použitím špecifických nakladacích časov, namiesto nakladania všetkého naraz s fixným časom. Čas zavysí od množstva nakladaného nákladu. +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povoľuje pridanie časti stanice bez priamej manipulácie s existujúcimi časťami. Použite Ctrl+Click na položenie novej časti. STR_CONFIG_SETTING_INFLATION :Inflácia: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Povoluje infláciu v ekonomike, kedy náklady stúpaju rýchlejšie ako platby za prepravy. -STR_CONFIG_SETTING_SELECTGOODS :Vykladať náklad len v stanici kde je dopyt: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dovezie len náklad pre stanicu ktorý bol vyžadovaný na dovezenie. Tým sa predíde zlému hodnoteniu prepravy pre stanice. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximálna dĺžka mosta: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximálna dĺžka na budovanie mostov +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximálna výška mostu: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximálna výška pre stavanie mostov STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximálna dĺžka tunela: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximálna dĺžka na budovanie tunelov STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Spôsob výstavby priemyslu produkujúceho suroviny: {STRING} @@ -1248,14 +1282,12 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Vpravo STR_CONFIG_SETTING_SHOWFINANCES :Zobraziť rozpočet na konci roku: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ak zapnuté, okno s financiami sa ukáže na konci každého roku a umožňuje tak rýchly náhľad na stav financií spoločnosti. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nové príkazy sú štandardne 'non-stop': {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normálne, vlak vťdy zastaví v každej stanici cez ktorú prechádza. Povolením tohoto nastavenia, vlak bude pokračovať cez všetky stanice ktoré má v ceste až do svojej cieľovej stanice. Uvedomte si to, že toto nastavenie definuj "pôvodné" nastavenie LEN pre nové trasy. Samostatne zadávané cesty môžu byť nastavené aj inak. +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normálne, vlak vždy zastaví v každej stanici cez ktorú prechádza. Povolením tohoto nastavenia, vlak bude pokračovať cez všetky stanice ktoré má v ceste až do svojej cieľovej stanice. Uvedomte si to, že toto nastavenie definuje "pôvodné" nastavenie LEN pre nové trasy. Samostatne zadávané cesty môžu byť nastavené aj inak. STR_CONFIG_SETTING_STOP_LOCATION :Vlaky zastavujú štandardne {STRING} stanice. STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Zvoľte kde zastaví vlak po príjazde do stanice. "Blízky koniec" znamená že vlak zastaví najbližšie ku vstupnému bodu, "Stred" že zastaví v strede stanice a "daleký koniec" že zastaví čo najďalej od vstupného bodu. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :na začiatku STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :v strede STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :na konci -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cestné vozidlá stoja v rade (podľa množstva nákladu): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Prikáže cestnému vozidlu čakať pred obsadeným nákladiskom dokiaľ nie je voľné miesto na nakládku. STR_CONFIG_SETTING_AUTOSCROLL :Posúvať pohľad, keď je kurzor myši na okraji okna: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ak je povolené, zobrazenia sa budú meniť keď je myš pri okraji okna STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Vypnuté @@ -1286,10 +1318,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Povoliť prejaz STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Povoliť budovanie "prejazdných" nakládok a zastávok na cestách vlastnených mestom. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Výstavba zastávok na cestách vlastnených konkurenciou: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Povoliť budovanie "prejazdných" nakládok a zastávok na cestách vlastnených iným hráčom. -STR_CONFIG_SETTING_ADJACENT_STATIONS :Povoliť stavbu oddelených staníc: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Povoliť aby sa rozdielne typy staníc mohli dotýkať jedna druhej. -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Povoliť viaceré NewGRF sety s rušňami: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompaktibilita so starými NewGRF. Vypnite len v prípade že viete čo robíte. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Zmena nastavenia nie je možná, pokiaľ sa tu nachádzajú vozidlá STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Správa infraštruktúry: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ak je zapnuté, infraštruktúra generuje výdavky na údržbu. Poplatky rastú proporcionálne s veľkosťou spoločnosti, čo ovplyvňuje viac veľké spoločnosti ako malé. @@ -1310,15 +1338,15 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nikdy nepresta STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ak je zapnuté, všetky vozidlá zostanú k dispozícii navždy. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatická obnova dopravných prostriedkov, keď sú staré: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Ak je zapnuté, vozidlá blížiace sa ku koncu svojej životnosti budú automaticky vymenené ak sú splnené podmienky na výmenu. -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatická obnova ak je vozidlo {STRING} maximálnej zivotnosti +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatická obnova ak je vozidlo {STRING} maximálnej životnosti STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relatívny vek kedy je vozidlo považované za staré a preto je potrebná automatická obnova STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mesiac pred -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mesiac po +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mesiac{P "" "e" "ov"} po STR_CONFIG_SETTING_AUTORENEW_MONEY :Potrebné financie pre automatickú obnovu vozidiel: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimálna suma ktorá musí zostať na účte pred plánovanou automatickou výmenou vozidiel. STR_CONFIG_SETTING_ERRMSG_DURATION :Trvanie zobrazenia chybovej hlášky: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trvanie zobrazenia chybovej hlášky v červenom okne. Uvedomte si že niektoré "kritické" správy nezmiznú po uplynutí času, ale musia byť zatvorené ručne. -STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund(y) +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sek{P unda undy únd} STR_CONFIG_SETTING_HOVER_DELAY :Ukáž nápovedu: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oneskorenie pred tým ako bude zobrazená nápoveda po ukázaní myšou. Nápoveda môže byť eventuálne nastavené aj na PRAVÉ tlačítko myši. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zobrazenie na {COMMA} sekúnd @@ -1328,27 +1356,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zobrazí popul STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Hrúbka čiar v grafe: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Hrúbka čiar v grafe. Tenké čiary sú presnejšie, hrubšie zase lepšie viditeľné. +STR_CONFIG_SETTING_LANDSCAPE :Krajina: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Krajiny definuje základný herný scenár s rôznymi tovarmi a veľkosťami miest. NewGRF a Herný Skript umožňujú ich lepšiu kontrolu STR_CONFIG_SETTING_LAND_GENERATOR :Generátor uzemia: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Pôvodný generátor závisí na základnej grafickej sade a skladá pevné tvary krajiny. TerraGenesis je generátor postavený na Perlinovom šume s jemnejšími možnosťami nastavenia STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Pôvodný STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximálna vzdialenosť rafinérií od okrajov mapy: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Typ terénu: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Len TerraGenesis) Hornatosť krajiny +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Hustota priemyslu: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Nastavte, koľko má byť vygenerovaného priemyslu a aká úroveň by mala byť zachovaná v priebehu hry +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximálna vzdialenosť od okrajov mapy pre rafinérie: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinérie ropy sú vybudované len na okrajoch mapy, tzn na pobreží pri ostrovných mapách STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Úroveň čiary snehu: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitosť terénu (len pre TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Určuje v akej výške začína sneh v subarktickej krajine. Sneh tiež ovplyvňuje generáciu priemyslu a požiadaviek rastu mesta +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitosť terénu : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Len TerraGenesis) Vyberte hustotu kopcov: Rovinaté krajiny majú menej, viac pozdĺžných kopcov. Hornaté krajiny majú veľa kopcov, ktoré sa môžu opakovať STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veľmi rovný STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Rovný STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Členitý STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veľmi členitý +STR_CONFIG_SETTING_VARIETY :Rozmanitosť distribúcie: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(len TerraGenesis) Skontrolujte či mapa obsahuje oba terény aj horský aj nížinný. Pretože to robí mapy rovinatejšie, ostatné nastavenia by mali byť zvolené ako hornatý +STR_CONFIG_SETTING_RIVER_AMOUNT :Množstvo riek: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vyberte koľko riek sa má generovať STR_CONFIG_SETTING_TREE_PLACER :Algoritmus umiestňovania stromov: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Vyberte rozloženie stromov na mape: 'Pôvodné' - stromy budú rovnomerne rozptýlené, 'Zdokonalené' - budú v skupinách STR_CONFIG_SETTING_TREE_PLACER_NONE :Žiadny STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Pôvodný STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Vylepšený +STR_CONFIG_SETTING_ROAD_SIDE :Cestné vozidlá: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Vyberte jazdnú stranu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Orientácia výškovej mapy: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Proti smeru hodinových ručičiek STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :V smere hodinových ručičiek STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Výšková uroveň pre rovinatý scenár: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Povoliť formovanie povrchu kociek na okrajoch mapy: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ak je vypnuté, okraje mapy budú vždy oceán STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedna alebo viacero kociek na severnom okraji nie sú prázdne STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedna alebo viacero kociek na jedom z okrajov nie je voda @@ -1369,7 +1411,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posúv STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Nastaví ako bude reagovať posúvanie na špecifickú pozíciu po kliknutí na minimapu, alebo po zadaní príkazu na presun na zadaný objekt. Ak je zapnuté, pohľad sa presúva plynulo. Ak je vypnuté, pohľad skočí priamo na zadané miesto/objekt. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Zobraziť údaje o rozmeroch pri výstavbe: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Zobrazí vzdialenosť v dieloch a prevýšenie pri konštrukcii ťahaním. -STR_CONFIG_SETTING_LIVERIES :Zobraziť farebné schémy spoločnosti: {STRING} +STR_CONFIG_SETTING_LIVERIES :Zobraziť farby vozidiel spoločnosti: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrola použitia vozidla-typ špecifických livrej vozidiel (v rozpore so špecificikami podniku) STR_CONFIG_SETTING_LIVERIES_NONE :žiadne STR_CONFIG_SETTING_LIVERIES_OWN :vlastná spoločnosť @@ -1399,17 +1441,15 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Žiadna STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Posúvať pohľad ľavým tlačidlom myši: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Povolí posúvanie mapy ĽAVÝM tlačítkom myši. Toto je obzvlášť užitočné pri použití dotykového displeja. +STR_CONFIG_SETTING_AUTOSAVE :Automatické ukladanie: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vyberte interval pre automatické ukladanie hry + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Použiť {STRING} dátum v názve uloženej hry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formát dátumov v názvoch uložených hier. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dlhý (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krátky (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Štandardná paleta predpokladá pre NewGRFy paletu neuvedenú: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pôvodná paleta nastavenia pre NewGRF keď nie je zadané ktoré NewGRF je potrebné -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Farby DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Farby Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatická pauza pri štarte novej hry: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ak je zapnuté, hra sa automaticky zapauzuje ked začne nová hra. Toto umožňuje lepšie preskúmanie mapy hry pred začatím. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Ak je hra pozastavená povol: {STRING} @@ -1418,7 +1458,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :žiadne akcie STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :všetky nekonštrukčné akcie STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :všetky akcie okrem úpravy terénu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :všetky činnosti -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Použit vylepšený zoznam vozidiel: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Použit skupiny v zozname vozidiel: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Povolí použitie rozšíreného zoznamu vozidiel pre skupiny STR_CONFIG_SETTING_LOADING_INDICATORS :Zobraziť ukazovatele nakladania/vykladania: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Zvoľte či indikátory nakladania/vykladania budú zobrazené nad vozidlom. @@ -1433,7 +1473,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Typ železnice STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :prvé dostupné STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :posledné dostupné STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :najpoužívanejšie -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Zobraziť rezervované trate: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Zobraziť rezervovácia pre trate: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dajte obsadenej trati inú farbu na pomoc pri problémoch s vlakmi odmietajúcimi vstúpiť na časť danej trate STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Zachovať stavebné nástroje aktívne aj po použití: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zachovaj okno s nástrojmi na stavbu mostov/tunelov otvorené aj po použití @@ -1459,13 +1499,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Prehrávať zuk STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zakázať výstavbu infraštruktúry ak nieje dostupné žiadne vhodné vozidlo: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ak je zapnuté, infraštruktúra je k dispozícii len ak su k nej pripojené vozidlá. Toto predchádza plýtvaniu peniazmi a časom pri nepoužiteľnej infraštruktúre. -STR_CONFIG_SETTING_MAX_TRAINS :Maximálny počet vlakov hráča: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximálny počet vlakov na spoločnosť: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximálny počet vlakov ktorý môže spoločnosť vlastniť. -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximálny počet automobilov hráča: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximálny počet automobilov na spoločnosť: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximálny počet automobilov ktorý môže spoločnosť vlastniť. -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximálny počet lietadiel hráča: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximálny počet lietadiel na spoločnosť: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximálny počet lietadiel ktorý môže spoločnosť vlastniť. -STR_CONFIG_SETTING_MAX_SHIPS :Maximálny počet lodí hráča: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Maximálny počet lodí na spoločnosť: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximálny počet lodí ktorý môže spoločnosť vlastniť. STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Zakázať vlaky pre počítač: {STRING} @@ -1557,7 +1597,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} diel(ov STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Pri ťahaní, zachovaj fixnú medzeru medzi semafórmi: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Zvoľte ako sa zachová umiestňovanie semafórov pri CTRL+posun. Ak je vypnuté, semafóry sú umiestnené okolo tunelov alebo mostov aby sa zabránilo dlhým úsekom bez signalizácie. Ak je zapnuité, semafóry sú umiestňované každých N dielov čím sa umožní lepšie rozloženie na paralelných tratiach. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automaticky stavať semafóry namiesto signálov pred rokom: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Zvoľte rk o ktorého sa budú používať elekrické semafór na tratach. Pred týmto rokom sa budú používať staré ne-elektrické návestidlá. Funkcionalita je ale stále rovnaká len vzhľad je iný. +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Zvoľte rok od ktorého sa budú používať elekrické semafóry na tratiach. Pred týmto rokom sa budú používať staré ne-elektrické návestidlá. Funkcionalita je ale stále rovnaká len vzhľad je iný. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Zapnúť grafické rozhranie stavby signálov: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Zobrazí okno s možnosťou výberu semafóru namiesto rotačnej voľby klikaním pomocou CTRL. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Štandardne budovaný typ signálov: {STRING} @@ -1583,7 +1623,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí mestám STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Mestá umožňujú stavbu železničných priecestí: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Povolením nastavenia umožní mestám stavať úrovňové križovania. STR_CONFIG_SETTING_NOISE_LEVEL :Povoliť mestom určené hlukové limity pre letiská: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Vypnutím nastavenia povolí pre mesto maximálne 2 letiská. Zapnutím nastavenia umožní stavanie viacerých letísk s ohľadom na hluk, zaľudnenie a vzdialenosť od mesta. +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ak je nastavenie vypnuté, potom môžu byť dve letiská v jednom meste. Ak je nastavenie zapnuté, počet letísk je obmedzený prijateľnou hlučnosťou, ktorá závisí od počtu obyvateľov a veľkosti letiska a jeho vzdialenosti od mesta STR_CONFIG_SETTING_TOWN_FOUNDING :Zakladanie nových miest počas hry: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Povolením nastavenia umožní hráčom zakladať nové mestá na mape. STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :zakázané @@ -1602,7 +1642,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS :Pozícia inform STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontálna poloha stavového riadku na spodu obrazovky STR_CONFIG_SETTING_SNAP_RADIUS :Rádius uchytenia okna: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Vzdialenosť medzi oknami pred tým ako je okno pripojené automaticky k vedľajšiemu oknu -STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel(ov) +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P "" y ov} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :vypnuté STR_CONFIG_SETTING_SOFT_LIMIT :Maximálný počet nepriľnavých okien: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Počet otvorených neprilepených okien pred tým ako sa najstrašie okno automatický zatvorí @@ -1631,8 +1671,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :žiadne STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Násobok pociatocnej velkosti mesta: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Priemerná veľkosť veľkomiest v porovnaní k mestám na začiatku hry. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Pri rekonštrukcii ciest odstrániť nezmyselné časti: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Odstráň "mŕtve" konce ciest počas financovanej rekonštrukcie ciest. STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizovať distribučný graf každ{P 0:2 "ý" "é" "ých"} {STRING} {P 0:2 "deň" "dni" "dní"} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Čas medzi nasledujúcimi prepočtami grafu spojení. Každý prepočet počíta plány pre jednu súčasť grafu. To znamená, že hodnota X pre toto nastavenie neznamená sa celý graf aktualizuje každých X dní, ale iba jedna súčasť. Čím menej nastavíte, tým viac procesorového času bude potrebného na výpočet. Čím viac nastavíte, tým dlhšie bude trvať, kým sa začne distribuovať na nové trasy. @@ -1648,14 +1686,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symetricky" zn STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Druh distribúcie pre náklad prevážaný obrnenými vozidlami: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Náklad prevážaný obrnenými vozidlami sú cennosti v miernom, diamanty v subtropickom alebo zlato v subarktickom podnebí. NewGRF to môže zmeniť. "symetricky" znamená, že rovnaké množstvo nákladu bude odoslané zo stanice A do stanice B a naopak. "asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. Doporučuje sa nastaviť na "asymetricky" alebo "manuálne" pri hraní v subarktickom, pretože banky neodošlú žiadne zlato do zlatých baní. Pre mierne a subtropické si môžete vybrať aj "symetricky", pretože banky budú posielať cennosti späť do pôvodnej banky, ktorá ich odoslala. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Druh distribúcie pre ostatné druhy nákladu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symetricky" znamená, že približne rovnaké množstvo nákladu bude odoslané zo stanice A do stanice B ako z B do A. "asymetricky"znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. Pravdepodobne budete chcieť nastaviť na "asymetricky" alebo "manuálne". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymetricky"znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Presnosť distribúcie: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čím viac nastavíte, tým viac procesorového času zaberie vypočítavanie trás spojov. Pokiaľ to bude trvať príliš dlho, môžete si všimnúť oneskorenie. Ak nastavíte nízku hodnotu, rozdelenie bude nepresné a môže sa stať, že náklad nebude odoslaný na miesta, ktoré očakávate. STR_CONFIG_SETTING_DEMAND_DISTANCE :Vplyv vzdialenosti na požiadavky: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ak nastavíte toto na hodnotu väčšiu ako 0, tak vzdialenosť medzi východiskovou stanicou A nejakého nákladu a možnou cieľovou stanicou B bude mať vplyv na množstvo nákladu poslaného z A do B. Čím bude B ďalej od A, tým menej nákladu bude odoslaného. Čím viac nastavíte, tým menej nákladu bude odoslaného do vzdialenejších staníc a viac nákladu bude odoslaného do bližších staníc. STR_CONFIG_SETTING_DEMAND_SIZE :Množstvo vráteného nákladu pre symetrický mód: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením na menej ako 100% sa bude symetrická distribúcia správať viac asymetricky. Menej nákladu sa bude povinne vracať späť, ak sa určité množstvo pošle do stanice. Ak nastavíte 0%, symetrická distribúcia sa bude správať ako asymetrická. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vyťaženie krátkych ciest pred použitím kapacitných ciest: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vyťaženie krátkych ciest pred použitím vysokokapacitných ciest: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Často je viac ciest medzi dvoma stanicami. Cargodist vyťaží najprv najkratšiu cestu, potom využije druhú najkratšiu cestu až kým nebude vyťažená atď. Vyťaženie je určené podľa odhadu kapacity a plánovaného využitia. Ak sú vyťažené všetky trasy a nepostačuje to, preťaží všetky trasy, s preferenciou najkapacitnejšej. Väčšinou algoritmus neodhadne kapacitu presne. Toto nastavenie umožňuje určiť na koľko percent musí byť vyťažená prvá pred výberom nasledujúcej dlhšej. Nastavte na menej ako 100%, aby sa zabránilo preplneniu staníc v prípade nadhodnotenia kapacity. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rýchlosti: {STRING} @@ -1694,27 +1732,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperialne (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrické (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Rozhranie STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizácia -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Výstavba +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvuk +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Rozhranie +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Všeobecné +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Náhľady +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Výstavba +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novinky / Varovania +STR_CONFIG_SETTING_COMPANY :{ORANGE}Spoločnosť +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Účtovníctvo STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozidlá -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stanice -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribúcia nákladu +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fyzika +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Smerovanie +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Obmedzenia +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofy / Nehody +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generovanie sveta +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Prostredie +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Miestne správy +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Mestá +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Priemysel +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribúcia nákladu STR_CONFIG_SETTING_AI :{ORANGE}Konkurenti -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Možnosti zobrazenia -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Chovanie -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvukové efekty -STR_CONFIG_SETTING_NEWS :{ORANGE}Novinky a správy -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signály -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Manipulácia s tovarom STR_CONFIG_SETTING_AI_NPC :{ORANGE}Počítačový hráči -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatická obnova -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servis -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Smerovanie -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlaky -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Mestá -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Priemysel STR_CONFIG_SETTING_PATHFINDER_OPF :Pôvodný STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1763,7 +1803,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Viacero STR_INTRO_GAME_OPTIONS :{BLACK}Nastavenia hry STR_INTRO_HIGHSCORE :{BLACK}Najlepší hráči -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Rozšírené nastavenia +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Nastavenia STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavenia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Skontrolovať online obsah STR_INTRO_SCRIPT_SETTINGS :{BLACK}Umelá inteligencia / Nastavenia skriptu @@ -1783,7 +1823,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vybrať STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Zobraziť nastavenia hry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zobraziť tabuľku hráčov s najvyšším skóre -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Zobraziť rozšírené nastavenia +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Nastavenie zobrazenia STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Zobraziť NewGRF nastavenia STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Skontrolovať nový a aktualizovaný obsah pre stiahnutie STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobraz umelú inteligenciu a nastavenia skriptu @@ -1823,6 +1863,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrať z STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozér (odstráni priemysel a nehnuteľnosti): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunely sa môžu navzájom krížiť: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Prúdové lietadlá nehavarujú (tak často) na malých letiskách: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Zmeň maximálnu výšku mapy: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Zmeň maximálnu výšku hôr na mape STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Krajina mierneho pásma STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subpolárna krajina STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropická krajina @@ -1871,6 +1913,7 @@ STR_LIVERY_FREIGHT_TRAM :Nákladná elek STR_FACE_CAPTION :{WHITE}Výber tváre STR_FACE_CANCEL_TOOLTIP :{BLACK}Zrušiť výber novej tváre STR_FACE_OK_TOOLTIP :{BLACK}Potvrdiť výber tváre +STR_FACE_RANDOM :{BLACK}Nový kód STR_FACE_MALE_BUTTON :{BLACK}Muž STR_FACE_MALE_TOOLTIP :{BLACK}Výber mužských tvárí @@ -1985,24 +2028,24 @@ STR_NETWORK_START_SERVER_CAPTION :{WHITE}Spustiť STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Názov hry: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Názov hry, ktorý uvidia ostatní v zozname sieťovych hier -STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavit heslo +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastaviť heslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpeč hru heslom, ak nechceš povoliť verejný prístup STR_NETWORK_START_SERVER_UNADVERTISED :Nie STR_NETWORK_START_SERVER_ADVERTISED :Áno STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" i ov} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximálny pocet klientov: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Zvol maximalny pocet klientov. Moze sa ich pripojit aj menej. -STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} spolocnost{P "" i í} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. pocet spolocnosti: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximálny počet klientov: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Zvoľ maximálny počet klientov. Môže sa ich pripojiť aj menej. +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} spoločnost{P "" i í} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximálny počet spoločností: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Obmedzenie servera na maximálny počet spoločností -STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} pozorovatel{P "" ia ov} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. pocet divakov: +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} pozorovate{P "ľ" lia ľov} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximálny počet divákov: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Obmedzenie servera na maximálny počet divákov -STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jazyk hracov: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aby ostatni hraci vedeli, akym jazykom sa bude hovorit na serveri. +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jazyk, ktorým sa hovorí: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aby ostatní hráči vedeli, akým jazykom sa bude hovoriť na serveri. -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Zadajte názov sietovej hry +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Zadajte názov sieťovej hry # Network game languages ############ Leave those lines in this order!! @@ -2110,6 +2153,7 @@ STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Pozorovatelia STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vložte čiastku ktorú chcete dať +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Pozorovateľ # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukladať zadané heslo @@ -2553,7 +2597,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Stredne STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Velke STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Náhodný STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vyber veľkosť mesta -STR_FOUND_TOWN_CITY :{BLACK}Mesto +STR_FOUND_TOWN_CITY :{BLACK}Veľkomesto STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Veľkomestá sa rozrastajú rýchlejšie než obyčajné mestá{}Záleží na nastaveniach, sú väčšie keď sú dotované STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Návrh ciest mesta: @@ -2614,6 +2658,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prijíma náklad: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rýchlostný limit koľají: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Rýchlostný limit cesty: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Skaly @@ -2710,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-2013 team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru @@ -2729,6 +2774,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Uložiť STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Uložiť aktuálnu hru s použitím vybraného mena STR_SAVELOAD_LOAD_BUTTON :{BLACK}Načítať STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Načítať označenú hru +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Nahrať vybranú výškovú mapu STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detaily hry STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Informácia nie je k dispozícii STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2744,13 +2790,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Počet miest: STR_MAPGEN_DATE :{BLACK}Rok: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Počet priemyslu: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximálna výška mapy +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Zvýš maximálnu výšku hôr na mape o jedno +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Zníž maximálnu výšku hôr na mape o jedno STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Výška línie snehu: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Zvýšiť výšku snehovej čiary STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Znížiť výšku snehovej čiary -STR_MAPGEN_RANDOM_SEED :{BLACK}Náhodný kód: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni pre zadanie náhodného kódu -STR_MAPGEN_RANDOM :{BLACK}Nový kód -STR_MAPGEN_RANDOM_HELP :{BLACK}Zmeniť náhodný kód pre generovanie terénu STR_MAPGEN_LAND_GENERATOR :{BLACK}Generátor krajiny: STR_MAPGEN_TREE_PLACER :{BLACK}Generátor stromov: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ terénu: @@ -2777,7 +2822,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Názov v STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velkost: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Zadajte náhodný kód +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Zmeniť maximálnu výšku mapy STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Zmeniť výšku línie snehu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Zmenit rok zaciatku hry @@ -2832,6 +2877,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Vyššie STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Posunút vybraný NewGRF súbor v zozname vyššie STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Nižšie STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Posunút vybraný NewGRF súbor v zozname nižšie +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Aktualizovať +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Aktualizujte NewGRF súbory ktoré máte inštalované, na novšie verzie STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Zoznam inštalovaných NewGRF súborov. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nastavit parametre @@ -2856,6 +2903,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Príslušn STR_NEWGRF_SETTINGS_DISABLED :{RED}Nedostupný STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nekompatibilné s touto verziou OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Uložiť predvoľby +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Zoznam dostupných predvolieb, zvoľte jednu na kopírovanie a uložte menom nižšie +STR_SAVE_PRESET_TITLE :{BLACK}Zadajte názov pre predvoľby +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Aktuálne vybraný názov pre uloženie predvolieb +STR_SAVE_PRESET_CANCEL :{BLACK}Zrušiť +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Nemeniť predvoľby +STR_SAVE_PRESET_SAVE :{BLACK}Uložiť +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Uložiť predvoľby do práve vybraného názvu + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Zmeniť NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zatvoriť @@ -2886,7 +2943,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Predchá STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Prejsť na predchádzajúci normálny sprite, vynechajúc akékoľvek falošné/prefarbené sprites a sprites fontu použité na začiatku STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezentuje aktuálne zvolený objekt. Zarovnanie je ignorované pri vykresľovaní objektu STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pri hýbaní objektom, sa menia X a Y súradnice -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X súradnica: {NUM}, Y súradnica: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetovať relatívne +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetovať aktuálne relatívne posunutie +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (absolútne) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (relatívne) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vybrať objekt STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vyberte objekt z obrazovky @@ -2943,6 +3003,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Chýbajúc STR_NEWGRF_BROKEN :{WHITE}Správanie NewGRF '{STRING}' môže sposobiť chybu obrazu a/alebo pád hry. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmenilo stav hnacieho vozidla v '{1:ENGINE}' keď nebolo v depe. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmenilo dĺžku vozidla '{1:ENGINE}' keď nebolo v depe. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Bola zmenená kapacita vozidla '{1:ENGINE}', hoci nebolo v depe alebo prestavané STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' patriaci '{COMPANY}' má neplatnú dlžku. Pravdeposobne to spôsobil problém s NewGRF. Môže nastať chybné zobrazenie alebo pád hry. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' poskytuje nesprávne informácie. @@ -2957,6 +3018,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} jednot{ STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skenovanie NewGRFov STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skenovanie NewGRFs. Môže chvíľu trvať v závislosti od množstva... @@ -2994,8 +3058,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} doručené STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (stále potrebné) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (doručené) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Mesto rastie každých {ORANGE}{COMMA}{BLACK} dní -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Mesto rastie každých {ORANGE}{COMMA}{BLACK} dní (dotované) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Mesto rastie každ{P 0 ý é ých} {ORANGE}{COMMA}{BLACK} {P deň dni dní} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Mesto rastie každ{P 0 ý é ých} {ORANGE}{COMMA}{BLACK} {P deň dni dní} (dotované) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Mesto {RED}nerastie{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hlukový limit v meste: {ORANGE}{COMMA}{BLACK} max.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu mesta. Ctrl+klik otvorí nové okno s pohľadom na mesto @@ -3055,7 +3119,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informácie STR_GOAL_QUESTION_CAPTION_WARNING :Varovanie STR_GOAL_QUESTION_CAPTION_ERROR :Chyba -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Zrušiť STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nie @@ -3074,6 +3138,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Spustiť znova STR_GOAL_QUESTION_BUTTON_POSTPONE :Odložiť STR_GOAL_QUESTION_BUTTON_SURRENDER :Vzdať STR_GOAL_QUESTION_BUTTON_CLOSE :Zavrieť +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Dotácie @@ -3094,6 +3159,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Predchá STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ísť na predchádzajúcu stranu STR_STORY_BOOK_NEXT_PAGE :{BLACK}Ďalšia STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ísť na ďalšiu stranu +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Neplatný odkaz na cieľ # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Názvy staníc - klikni pre pohľad na polohu stanice. Ctrl+klik presunie pohľad na stanicu @@ -3108,7 +3174,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nečaká # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čaká: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervované pre nakladanie) @@ -3203,7 +3268,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Spolu: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Zostatok na účte v banke STR_FINANCES_LOAN_TITLE :{WHITE}Úver -STR_FINANCES_MAX_LOAN :{WHITE}Úverový limit: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximálny úver: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Požičať {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Zvýšiť veľkosť úveru. Crtl+klik požičia koľko sa dá @@ -3352,12 +3417,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Nezaradené voz STR_GROUP_DEFAULT_SHIPS :Nezaradené lode STR_GROUP_DEFAULT_AIRCRAFTS :Nezaradené lietadlá -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupiny - klikni na skupinu pre zobrazenie všetkých vozidiel skupiny +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupiny - klikni na skupinu pre zobrazenie všetkých vozidiel skupiny. Ťahaj a Pusti pre usporiadanie hierarchiu v skupine STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikni pre vytvorenie skupiny STR_GROUP_DELETE_TOOLTIP :{BLACK}Zrušiť vybranú skupinu STR_GROUP_RENAME_TOOLTIP :{BLACK}Premenovať vybranú skupinu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni pre znemožnenie automatického nahradzovania v skupine +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Vymazať skupinu +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Ste si istý, že chcete vymazať túto skupinu a jej podskupiny? + STR_GROUP_ADD_SHARED_VEHICLE :Pridat zdielané vozidlá STR_GROUP_REMOVE_ALL_VEHICLES :Odstrániť všetky vozidlá @@ -3367,11 +3435,11 @@ STR_GROUP_RENAME_CAPTION :{BLACK}Premenov STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nove vlaky STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nové elektrické lokomotívy a vagóny STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nové jednokoľajové vlaky -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nove magneticke vlaky +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nové magnetické vlaky STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Železnicne vozidlá -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nove automobily -STR_BUY_VEHICLE_SHIP_CAPTION :Nove lode +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nové automobily +STR_BUY_VEHICLE_SHIP_CAPTION :Nové lode STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nove Lietadlo STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Hmotnosť: {GOLD}{WEIGHT_SHORT} @@ -3395,20 +3463,20 @@ STR_PURCHASE_INFO_ALL_BUT :Všetko okrem { STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. trakčná sila: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Dosah: {GOLD}{COMMA} políčok -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Výber vlakov - kliknúť na vlak pre informácie -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Výber vozidiel - kliknúť na vozidlo pre informácie -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Vyber lodi - kliknut pre informacie -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Výber lietadiel - kliknúť na lietadlo pre informácie +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Výber vlakov. Pre získanie informácií klikni na vlak. CTRL+klik prepne skrytie typu vlaku. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Výber cestných vozidiel. Pre získanie informácií klikni na vozidlo. CTRL+klik prepne skrytie typu vozidla. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Zoznam lodí. Pre získanie informácií klikni na loď. CTRL+klik prepnie skrytie typu lode. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zoznam lietadiel. Pre získanie informácií klikni na lietadlo. CTRL+klik prepnie skrytie typu lietadla. -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Zakupit vozidlo -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Zakupit vozidlo -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Vyrobiť loď -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Vyrobit lietadlo +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kúpiť vozidlo +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kúpiť vozidlo +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kúpiť loď +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kúpiť lietadlo -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybraný vlak. Shif+klik zobrazí predpokladanú cenu -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Zakúpiť vybraný automobil. Shif+klik zobrazí predpokladanú cenu -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Vyrobiť vybranú loď. Shif+klik zobrazí predpokladanú cenu -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Vyrobiť vybrané lietadlo. Shift+Klik ukáže predpokladanú +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybraný vlak. Shift+klik zobrazí predpokladanú cenu bez nákupu. +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané vozidlo. Shift+klik zobrazí predpokladanú cenu bez nákupu +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybranú loď. Shift+klik zobrazí predpokladanú cenu bez nákupu +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané lietadlo. Shift+klik zobrazí predpokladanú cenu bez nákupu STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Premenovať STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Premenovať @@ -3420,6 +3488,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Premenov STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Premenovať typ lode STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Premenovať typ lietadla +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Skryť +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Skryť +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Skryť +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Skryť + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Zobraziť +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Zobraziť +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Zobraziť +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Zobraziť + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prepnúť zobrazenie/skrytie typu koľajového vozidla +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prepnúť zobrazenie/skrytie typu cestného vozidla +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prepnúť zobrazenie/skrytie typu lode +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Prepnúť zobrazenie/skrytie typu lietadla + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Premenovať typ vlaku STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Premenovať typ automobilu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Premenovať typ lode @@ -3442,7 +3525,7 @@ STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Lode - p STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lietadlo - pravý kliknutím na lietadlo sa zobrazia informácie STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Presunutím lokomotívy bude predaná -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Presunutím automobilu sem sa predá +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Automobil presunutý sem bude predaný STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Presunutím lode sem sa predá STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Presunutím lietadla sem sa predá @@ -3502,13 +3585,13 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Chystá # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Správa od výrobcu dopravných prostriedkov -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Práve sme navrhli nový {STRING} - máte záujem o právo exkluzívneho používania na 1 rok? Chceme otestovať vlastnosti tohto modelu pred jeho uvedením na trh. -STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :železničná lokomotíva -STR_ENGINE_PREVIEW_ROAD_VEHICLE :automobil -STR_ENGINE_PREVIEW_AIRCRAFT :lietadlo -STR_ENGINE_PREVIEW_SHIP :loď -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :jednokoľajová lokomotíva -STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetická lokomotíva +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Práve sme navrhli nov{G "ý" "ú" "é"} {STRING} - máte záujem o právo exkluzívneho používania na 1 rok? Chceme otestovať vlastnosti tohto modelu pred jeho uvedením na trh. +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=z}železničná lokomotíva +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}automobil +STR_ENGINE_PREVIEW_AIRCRAFT :{G=s}lietadlo +STR_ENGINE_PREVIEW_SHIP :{G=z}loď +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=z}jednokoľajová lokomotíva +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=z}magnetická lokomotíva 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} @@ -3524,6 +3607,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=m}Automobil STR_REPLACE_VEHICLE_SHIP :{G=z}Loď STR_REPLACE_VEHICLE_AIRCRAFT :{G=s}Lietadlo +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Používané vozidlá +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Stĺpec s vozidlami, ktoré vlastníte +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Dostupné dopravné prostriedky +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Stĺpec s vozidlami, ktoré možno nahradiť + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Zvoľte typ lokomotívy na výmenu STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Zvoľte nový typ lokomotívy, ktorú chceš použiť namiesto typu z ľavého zoznamu @@ -3623,7 +3711,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE STR_VEHICLE_NAME_BUTTON :{BLACK}Meno STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Pomenovať vlak -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Pomenovať automobil +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Premenovať automobil STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Pomenovať loď STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Pomenovat lietadlo @@ -3648,7 +3736,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacita STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer kredity: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisný interval: {LTBLUE}{COMMA}dní{BLACK} Posledný servis: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisný interval: {LTBLUE}{COMMA}{NBSP}dní{BLACK} Posledný servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisný interval: {LTBLUE}{COMMA}%{BLACK} Posledný servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Predĺžiť servisný interval o 10. Ctrl+klik predĺži servisný interval o 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Skrátiť servisný interval o 10. Ctrl+klik pre skrátenie servisného intervalu o 5 @@ -3659,9 +3747,9 @@ STR_VEHICLE_DETAILS_DAYS :Dni STR_VEHICLE_DETAILS_PERCENT :Percentáž STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Premenovať vlak -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Pomenovať automobil -STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Pomenovať loď -STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Pomenovať lietadlo +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Premenovať automobil +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Premenovať loď +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Premenovať lietadlo # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Vyrobené: {LTBLUE}{NUM}{BLACK} Hodnota: {LTBLUE}{CURRENCY_LONG} @@ -3746,7 +3834,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Zmeniť STR_ORDER_REFIT :{BLACK}Prestavba STR_ORDER_REFIT_TOOLTIP :{BLACK}Vyberte typ nákladu na prestavbu v tomto poradí. CTRL+klik na odstránenie príkazu prestavby -STR_ORDER_REFIT_AUTO :{BLACK}Automaticky usporiadať +STR_ORDER_REFIT_AUTO :{BLACK}Automaticky modernizovať STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Vyber ktorý druh tovaru sa bude automaticky nakladať. Ctrl+Klik pre odstránenie automatického nakladania. Automatické nakladanie musí byť podporované vozidlom STR_ORDER_DROP_REFIT_AUTO :Pevný náklad STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný náklad @@ -3755,7 +3843,7 @@ STR_ORDER_SERVICE :{BLACK}Oprava STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vždy choď STR_ORDER_DROP_SERVICE_DEPOT :Servis, ak je potrebné STR_ORDER_DROP_HALT_DEPOT :Zastav -STR_ORDER_SERVICE_TOOLTIP :{BLACK}Vynechať tento príkaz pokiaľ nie je potrebná oprava +STR_ORDER_SERVICE_TOOLTIP :{BLACK}Preskočiť tento príkaz pokiaľ nie je potrebná oprava STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Údaje vozidla na základe ktorých sa vykoná skok @@ -3784,18 +3872,18 @@ STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Zadajte STR_ORDERS_SKIP_BUTTON :{BLACK}Preskočiť STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskočiť aktuálny príkaz a začať ďalší. CTRL+klik pre skok na označený príkaz -STR_ORDERS_DELETE_BUTTON :{BLACK}Vynechať +STR_ORDERS_DELETE_BUTTON :{BLACK}Vymazať STR_ORDERS_DELETE_TOOLTIP :{BLACK}Vymazať označený príkaz -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Zmazať všetky príkazy -STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Prestať zdielať -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prestať zdielať zoznam príkazov. Ctrl+Klik naviac zmaže všetky príkazy. +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Vymazať všetky príkazy +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Prestať zdieľať +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prestať zdieľať zoznam príkazov. Ctrl+Klik naviac zmaže všetky príkazy tohoto vozidla. STR_ORDERS_GO_TO_BUTTON :{BLACK}Choď do STR_ORDER_GO_TO_NEAREST_DEPOT :Choď do najbližšieho depa STR_ORDER_GO_TO_NEAREST_HANGAR :Choď do najbližšieho hangáru STR_ORDER_CONDITIONAL :Podmienený príkaz skoku STR_ORDER_SHARE :Zdieľať príkazy -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Vložiť nový príkaz pred označený príkaz, alebo na koniec zoznamu. CTRL zmení príkaz pre stanicu na 'plne nalož čokoľvek', waypoint príkazy na pokračuj 'non-stop' a pre depá servise. 'Zdieľať príkazy' alebo CTRL umožní vozidlu zdieľať príkazy s vybraným vozidlom. Kliknutím na vozidlo sa skopírujú príkazy z vozidla +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Vložiť nový príkaz pred označený príkaz alebo na koniec zoznamu. CTRL zmení príkaz pre stanicu na 'plne nalož čokoľvek', waypoint príkazy na pokračuj 'non-stop' a pre depá 'servisuj'. 'Zdieľať príkazy' alebo CTRL umožní vozidlu zdieľať príkazy s vybraným vozidlom. Kliknutím na vozidlo sa skopírujú príkazy z vozidla. Príkaz na presun do depa zneplatní automatické servisovanie vozidla STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Zobraziť všetky vozidlá s rovnakým zoznamom príkazov @@ -3838,18 +3926,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nevykladaj a STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nevykladaj a čakaj na plné naloženie akéhokoľvek nákladu) STR_ORDER_NO_UNLOAD_NO_LOAD :(Žiadné vykládanie a nakládanie) -STR_ORDER_AUTO_REFIT :(Automaticky naplň do {STRING}) +STR_ORDER_AUTO_REFIT :(Upraviť na {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Plné naloženie s automatickým nakladaním do {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Plné naloženie akéhokoľvek nákladu s automatickým nakladaním do {STRING}) -STR_ORDER_UNLOAD_REFIT :(Vyložiť a zobrať náklad s automatickým nakladaním do {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložiť a čakať pre plné naloženie s automatickým nakladaním do {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vylož a čakaj na akékoľvek plné naloženie s automatickým naložením do {STRING}) -STR_ORDER_TRANSFER_REFIT :(Prelož a zober náklad s automatickým naložením do {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Prelož a čakaj pre plné naloženie s automatickým naložením do {STRING}) +STR_ORDER_UNLOAD_REFIT :(Vyložiť a zobrať náklad automaticky do {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložiť a čakať pre plné naloženie automaticky do {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vylož a čakaj na akékoľvek plné naloženie automaticky do {STRING}) +STR_ORDER_TRANSFER_REFIT :(Presuň sa a zober náklad s automatickým naložením do {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Presuň sa a čakaj pre plné naloženie automaticky do {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Prelož a čakaj pre akékoľvek plné naloženie s automatickým nakladaním do {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Nevykladať a zobrať náklad s automatickým nakladaním do {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykladať a čakať pre plné naloženie s automatickým nakladaním od {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykladať a čakať pre akýkoľvek náklad s automatickým nakladaním do {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykladať a čakať pre plné naloženie s automatickým nakladaním do {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykladať a čakať na plné naloženie s nastavením do {STRING}) STR_ORDER_AUTO_REFIT_ANY :dostupný náklad @@ -3875,13 +3963,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Cestovn STR_TIMETABLE_NO_TRAVEL :Necestuj STR_TIMETABLE_NOT_TIMETABLEABLE :Cestovanie (automaticky; nastavené po ďalšom zadaní objednávky) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Cesta (neurcený cas) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Cestovanie nanajvýš s {2:VELOCITY} (bez cestovného plánu) -STR_TIMETABLE_TRAVEL_FOR :Cesta do {STRING} +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Cestovanie (bez cestovného plánu) s najviac {2:VELOCITY} +STR_TIMETABLE_TRAVEL_FOR :Cesta {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Cestovanie na {STRING} s {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Cesta ({STRING}, nerozvrhnuté) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Cesta (for {STRING}, nerozvrhnuté) pri najviac {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(prestávka {STRING}, nerozvrhnuté) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(cesta {STRING}, nerozvrhnuté) STR_TIMETABLE_STAY_FOR :prestávka {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :a cestuj {STRING} -STR_TIMETABLE_DAYS :{COMMA} d{P en ni ní} -STR_TIMETABLE_TICKS :{COMMA} tik{P "" y ov} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}d{P eň ni ní} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" y ov} STR_TIMETABLE_TOTAL_TIME :{BLACK}Na dokončenie cestovného poriadku je potrebných {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Na dokončenie cestovného poriadku je potrebných min. {STRING} (nie všetko je určené) @@ -4007,6 +4099,8 @@ STR_AI_SETTINGS_START_DELAY :Koľko dní pre STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "čítajma" {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} log zmien {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licencia {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Zalamovať text +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zalamovať text v okne tak, aby ho nebolo nutné posúvať STR_TEXTFILE_VIEW_README :{BLACK}Zobraz čítajma STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log zmien STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencia @@ -4117,6 +4211,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Vyhĺben STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... už na úrovni mora STR_ERROR_TOO_HIGH :{WHITE}... príliš vysoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... už vyrovnané +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Most nad tým by bol potom príliš vysoko. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Názov spoločnosti sa nedá zmeniť... @@ -4144,7 +4239,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... prí STR_ERROR_TOO_MANY_TOWNS :{WHITE}... príliš veľa miest STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nie je dalsie miesto na mape STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Mesto nebude stavať cesty. Môžete povoliť budovanie ciest cez Pokročilé nasvavenia->Ekonomika->Mestá. -STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Prebiehaju cestne prace +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Prebiehajú cestné práce STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Toto mesto nie je možné odstrániť...{}Stanica alebo depo sa odvoláva na mesto, alebo parcela vo vlastníctve mesta nemôže byť odstránená STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... v centre mesta sa nenachádza žiadne vhodné miesto pre sochu @@ -4167,6 +4262,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... les STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... môže byť postavené len nad čiarou snehu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... môže byť postavené len pod čiarou snehu +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nenašli sa žiadne vhodné miesta pre '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Pre získanie lepšej mapy zmeňte parametre jej generovania + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nemôžeš tu postaviť železničnú stanicu... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nemôžeš tu postaviť autobusovú zastávku... @@ -4303,6 +4401,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Most mus STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nemožno začať a skončiť na tom istom mieste STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Konce mosta nie sú v rovnakej výške STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je príliš nízky pre tento terén +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Most je privysoký pre tento terén. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začiatok a koniec musí byť v rovine STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba konce mosta musia byť na pevnine STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je príliš dlhý @@ -4329,6 +4428,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... už STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nie je možné vytvoriť skupinu... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nie je možné zrušiť túto skupinu... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nie je možné premenovať skupinu... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nie je možné nastaviť rodičovskú skupinu... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nie je možné odstrániť všetky vozidlá z tejto skupiny... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nie je možné pridať vozidlo do tejto skupiny STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nie je možné pridať zdielané vozidlo do skupiny @@ -4345,7 +4445,7 @@ STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nemožno STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nie je možné prestavať na nový typ nákladu... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Vlak nemožno pomenovať... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nemožno pomenovať automobil... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nemožno premenovať automobil... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nemožno pomenovať loď... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nie je možné pomenovať lietadlo... @@ -4405,14 +4505,14 @@ STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nemožno STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nemožno vymazať tento príkaz... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nemožno zmeniť tento príkaz... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Nie je možné presunúť tento príkaz... -STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nie je možné vynechať tento príkaz... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nie je možné preskočiť tento príkaz... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nie je možné preskočiť na vybraný príkaz... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vozidlo nemôže ísť do všetkých staníc STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vozidlo nemôže ísť do tejto stanice STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... vozidlo zdieľajúce tento príkaz nemôže ísť do stanice -STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nemozno zdielat zoznam smerov ... -STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nieje možné prestať zdielať zoznam príkazov... +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nemožno zdieľať zoznam príkazov ... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nie je možné prestať zdieľať zoznam príkazov... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nemozno kopirovat zoznam prikazov ... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... príliš ďaleko z predchádzajúceho cieľa STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... lietadlo nemá dostatočný dosah @@ -4443,89 +4543,89 @@ STR_BASEMUSIC_NONE_DESCRIPTION :Sada hudby neob ##id 0x2000 # Town building names -STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Vysoká kancelárska budova -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kancelarie -STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Malý bytový blok -STR_TOWN_BUILDING_NAME_CHURCH_1 :Kostol -STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Veľká kancelárska budova -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Mestske domy -STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel -STR_TOWN_BUILDING_NAME_STATUE_1 :Socha -STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontana -STR_TOWN_BUILDING_NAME_PARK_1 :Park +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :{G=z}Vysoká kancelárska budova +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kancelárie +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :{G=m}Malý bytový blok +STR_TOWN_BUILDING_NAME_CHURCH_1 :{G=m}Kostol +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :{G=z}Veľká kancelárska budova +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Mestské domy +STR_TOWN_BUILDING_NAME_HOTEL_1 :{G=m}Hotel +STR_TOWN_BUILDING_NAME_STATUE_1 :{G=z}Socha +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :{G=z}Fontána +STR_TOWN_BUILDING_NAME_PARK_1 :{G=m}Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kancelarie STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Obchody a kancelárie -STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderna administrativna budova -STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Sklad -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kancelarie -STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderná administratívna budova +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :{G=m}Sklad +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kancelárie +STR_TOWN_BUILDING_NAME_STADIUM_1 :{G=m}Stadión STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Stare domy STR_TOWN_BUILDING_NAME_COTTAGES_1 :Chaty STR_TOWN_BUILDING_NAME_HOUSES_1 :Domy STR_TOWN_BUILDING_NAME_FLATS_1 :Byty -STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Administrativa +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :{G=z}Administrativa STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Obchody a kancelarie STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Obchody a kancelarie -STR_TOWN_BUILDING_NAME_THEATER_1 :Divadlo -STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion +STR_TOWN_BUILDING_NAME_THEATER_1 :{G=s}Divadlo +STR_TOWN_BUILDING_NAME_STADIUM_2 :{G=m}Stadión STR_TOWN_BUILDING_NAME_OFFICES_1 :Kancelárie STR_TOWN_BUILDING_NAME_HOUSES_2 :Domy -STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino -STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Nákupné stredisko -STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu -STR_TOWN_BUILDING_NAME_TEPEES_1 :Vigvam -STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Kaviaren -STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Malá Banka +STR_TOWN_BUILDING_NAME_CINEMA_1 :{G=s}Kino +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :{G=s}Nákupné stredisko +STR_TOWN_BUILDING_NAME_IGLOO_1 :{G=s}Iglu +STR_TOWN_BUILDING_NAME_TEPEES_1 :{G=m}Vigvam +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :{G=z}Kaviareň +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :{G=z}Malá banka ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :Uhoľná baňa -STR_INDUSTRY_NAME_POWER_STATION :Elektráreň -STR_INDUSTRY_NAME_SAWMILL :Píla -STR_INDUSTRY_NAME_FOREST :Lesy -STR_INDUSTRY_NAME_OIL_REFINERY :Ropná rafinéria -STR_INDUSTRY_NAME_OIL_RIG :Ropná plošina -STR_INDUSTRY_NAME_FACTORY :Továreň -STR_INDUSTRY_NAME_PRINTING_WORKS :Tlačiareň -STR_INDUSTRY_NAME_STEEL_MILL :Oceliareň -STR_INDUSTRY_NAME_FARM :Farma -STR_INDUSTRY_NAME_COPPER_ORE_MINE :Medená baňa -STR_INDUSTRY_NAME_OIL_WELLS :Ropný vrt -STR_INDUSTRY_NAME_BANK :Banka -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Potravinársky podnik -STR_INDUSTRY_NAME_PAPER_MILL :Papierne -STR_INDUSTRY_NAME_GOLD_MINE :Zlatá baňa -STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banka -STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantová baňa -STR_INDUSTRY_NAME_IRON_ORE_MINE :Železorudná baňa -STR_INDUSTRY_NAME_FRUIT_PLANTATION :Ovocný sad -STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kaučuková plantáž -STR_INDUSTRY_NAME_WATER_SUPPLY :Vodný zdroj -STR_INDUSTRY_NAME_WATER_TOWER :Vodojem -STR_INDUSTRY_NAME_FACTORY_2 :Továreň -STR_INDUSTRY_NAME_FARM_2 :Farma -STR_INDUSTRY_NAME_LUMBER_MILL :Píla -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Les cukrovej vaty -STR_INDUSTRY_NAME_CANDY_FACTORY :Cukríkáreň -STR_INDUSTRY_NAME_BATTERY_FARM :Baterková farma -STR_INDUSTRY_NAME_COLA_WELLS :Kofolové studne -STR_INDUSTRY_NAME_TOY_SHOP :Hračkárstvo -STR_INDUSTRY_NAME_TOY_FACTORY :Továreň na hračky -STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Umelinové fontány -STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Továreň na malinovku -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Generátor bubliniek -STR_INDUSTRY_NAME_TOFFEE_QUARRY :Karamelový lom -STR_INDUSTRY_NAME_SUGAR_MINE :Cukrová baňa +STR_INDUSTRY_NAME_COAL_MINE :{G=z}Uhoľná baňa +STR_INDUSTRY_NAME_POWER_STATION :{G=z}Elektráreň +STR_INDUSTRY_NAME_SAWMILL :{G=z}Píla +STR_INDUSTRY_NAME_FOREST :{G=m}Les +STR_INDUSTRY_NAME_OIL_REFINERY :{G=z}Ropná rafinéria +STR_INDUSTRY_NAME_OIL_RIG :{G=z}Ropná plošina +STR_INDUSTRY_NAME_FACTORY :{G=z}Továreň +STR_INDUSTRY_NAME_PRINTING_WORKS :{G=z}Tlačiareň +STR_INDUSTRY_NAME_STEEL_MILL :{G=z}Oceliareň +STR_INDUSTRY_NAME_FARM :{G=z}Farma +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=z}Medená baňa +STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Ropný vrt +STR_INDUSTRY_NAME_BANK :{G=z}Banka +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=m}Potravinársky podnik +STR_INDUSTRY_NAME_PAPER_MILL :{G=z}Papiereň +STR_INDUSTRY_NAME_GOLD_MINE :{G=z}Zlatá baňa +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=z}Banka +STR_INDUSTRY_NAME_DIAMOND_MINE :{G=z}Diamantová baňa +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=z}Železorudná baňa +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=m}Ovocný sad +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=z}Kaučuková plantáž +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Vodný zdroj +STR_INDUSTRY_NAME_WATER_TOWER :{G=m}Vodojem +STR_INDUSTRY_NAME_FACTORY_2 :{G=z}Továreň +STR_INDUSTRY_NAME_FARM_2 :{G=z}Farma +STR_INDUSTRY_NAME_LUMBER_MILL :{G=z}Píla +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Les cukrovej vaty +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=z}Cukríkáreň +STR_INDUSTRY_NAME_BATTERY_FARM :{G=z}Baterková farma +STR_INDUSTRY_NAME_COLA_WELLS :{G=z}Kofolová studňa +STR_INDUSTRY_NAME_TOY_SHOP :{G=s}Hračkárstvo +STR_INDUSTRY_NAME_TOY_FACTORY :{G=z}Továreň na hračky +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=z}Umelinová fontána +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=z}Továreň na malinovku +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Generátor bubliniek +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=m}Karamelový lom +STR_INDUSTRY_NAME_SUGAR_MINE :{G=z}Cukrová baňa ############ WARNING, using range 0x6000 for strings that are stored in the savegame ############ These strings may never get a new id, or savegames will break! ##id 0x6000 STR_SV_EMPTY : STR_SV_UNNAMED :Bez názvu -STR_SV_TRAIN_NAME :Vlak {COMMA} -STR_SV_ROAD_VEHICLE_NAME :Automobil {COMMA} -STR_SV_SHIP_NAME :Lod {COMMA} -STR_SV_AIRCRAFT_NAME :Lietadlo {COMMA} +STR_SV_TRAIN_NAME :{G=m}Vlak {COMMA} +STR_SV_ROAD_VEHICLE_NAME :{G=m}Automobil {COMMA} +STR_SV_SHIP_NAME :{G=z}Loď {COMMA} +STR_SV_AIRCRAFT_NAME :{G=s}Lietadlo {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Sever @@ -4563,7 +4663,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parny) @@ -4772,7 +4872,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Tr STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Trajekt STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Nákladná loď STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Nákladná loď -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Nákladná loď +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Nákladná loď STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Nákladná loď STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4866,6 +4966,8 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (skryté) +STR_HIDDEN_ENGINE_NAME.g :{G=m}{ENGINE} (skrytý) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4901,8 +5003,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4913,9 +5013,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index b5c5249d8b..736c4f38aa 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -248,7 +248,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.t :Gazirano pijač # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} potnik{P "" a i ov} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}potnik{P "" a i ov} STR_QUANTITY_COAL :{WEIGHT_LONG} premoga STR_QUANTITY_MAIL :{COMMA} vreč{P a i e ""} pošte STR_QUANTITY_OIL :{VOLUME_LONG} nafte @@ -352,18 +352,24 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}KM STR_UNITS_POWER_METRIC :{COMMA}KM STR_UNITS_POWER_SI :{COMMA} kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P a i e ""} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a i e ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P a i e ""} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P er ra ri ov} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kgf STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft @@ -375,6 +381,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtrira STR_LIST_FILTER_OSKTITLE :{BLACK}Vnesite niz za filtriranje STR_LIST_FILTER_TOOLTIP :{BLACK}Vnesite ključno besedo, s katero se bo filtriral seznam +STR_TOOLTIP_GROUP_ORDER :{BLACK}Izberi vrsto grupiranja STR_TOOLTIP_SORT_ORDER :{BLACK}Izberite način razvrščanja (padajoče/naraščajoče) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izberite kriterij razvrščanja STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Izberite kriterij filtriranja @@ -386,6 +393,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zapri ok STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Naziv okna - s tem lahko premaknete okno STR_TOOLTIP_SHADE :{BLACK}Senči okno - pokaži samo naslov STR_TOOLTIP_DEBUG :{BLACK}Pokaži podatke razhroščevanja NewGRF +STR_TOOLTIP_DEFSIZE :{BLACK}Velikost okna na privzeto. Ctrl+klik shrani trenutno velikost kot privzeto. STR_TOOLTIP_STICKY :{BLACK}Označi to okno za nezapirljivo z 'Zapri vsa okna' tipko STR_TOOLTIP_RESIZE :{BLACK}Klikni in vleci to, da zmanjšaš okno STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Preklopi veliko/majhno velikost okna @@ -393,6 +401,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Drsnik - STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Drsnik - premakne seznam levo/desno STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Poruši zgradbe itd. na kvadratku zemlje. Ctrl izbere diagonalno območje. Shift preklaplja med izgradnjo in predvidenimi stroški +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Privzeto STR_BUTTON_CANCEL :{BLACK}Prekliči @@ -430,6 +441,7 @@ STR_SORT_BY_LENGTH :Dolžina STR_SORT_BY_LIFE_TIME :Preostala življenjska doba STR_SORT_BY_TIMETABLE_DELAY :Zamuda urnika STR_SORT_BY_FACILITY :Vrsta postaje +STR_SORT_BY_WAITING_TOTAL :Ves tovor na čakanju STR_SORT_BY_WAITING_AVAILABLE :Tovor na razpolago STR_SORT_BY_RATING_MAX :Najvišja ocena tovora STR_SORT_BY_RATING_MIN :Najnižja ocena tovora @@ -443,6 +455,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Moč/Cena delov STR_SORT_BY_CARGO_CAPACITY :Zmogljivost tovora STR_SORT_BY_RANGE :Domet STR_SORT_BY_POPULATION :Prebivalstvo +STR_SORT_BY_RATING :Ocena # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Premor @@ -455,6 +468,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Pokaži STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Pokaži seznam postaj podjetja STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pokaži finančne podatke podjetja STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Pokaži splošne podatke podjetja +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Prikaz zgodovinske knjige +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Prikaz seznama dosežkov STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Pokaži grafe STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Prikaži tabelo lige podjetij STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financirajte izgradnjo nove industrije ali si oglejte seznam vseh industrij @@ -502,7 +517,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Izhod ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti igre -STR_SETTINGS_MENU_CONFIG_SETTINGS :Napredne nastavitve +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Nastavitve STR_SETTINGS_MENU_SCRIPT_SETTINGS :UI/Nastavitve skriptov igre STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF nastavitve STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavitve prozornega pogleda @@ -528,6 +543,7 @@ STR_FILE_MENU_EXIT :Izhod # map menu STR_MAP_MENU_MAP_OF_WORLD :Zemljevid sveta STR_MAP_MENU_EXTRA_VIEW_PORT :Dodaten pogled +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda pretoka tovora STR_MAP_MENU_SIGN_LIST :Seznam napisov ############ range for town menu starts @@ -610,7 +626,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vklop/izklop ok STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Preklop barvanja umazanih blokov ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -626,22 +642,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -814,17 +848,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Zemljevi STR_SMALLMAP_TYPE_CONTOURS :Oblika STR_SMALLMAP_TYPE_VEHICLES :Vozila STR_SMALLMAP_TYPE_INDUSTRIES :Industrije +STR_SMALLMAP_TYPE_ROUTEMAP :Pretok tovora STR_SMALLMAP_TYPE_ROUTES :Poti STR_SMALLMAP_TYPE_VEGETATION :Rastlinje STR_SMALLMAP_TYPE_OWNERS :Lastniki STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Prikaži načrt terena na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Prikaži vozila na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Prikaži industrije na zemljevidu +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Prikaz pretoka tovora na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Prikaži transportne poti na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Prikaži vegetacijo na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Prikaži lastnike terena na zemljevidu STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikni na tip industrije za preklop vidljivosti. Ctrl+Klik onemogoči vse tipe razen izbranega. Ctrl+Klik še enkrat omogoči vse tipe STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na podjetje za preklop vidljivosti njenih nepremičnin. Ctrl+Klik onemogoči vsa podjetja razen izbranega. Ctrl+Klik še enkrat omogoči vsa podjetja +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikni na tovor za preklop prikaza lastnosti. Ctrl+klik izključi vse tovore razen izbranega. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ceste STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Železnice @@ -858,6 +895,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vključi/izključi imena mest na zemljevidu STR_SMALLMAP_CENTER :{BLACK}Centrira majhen zemljevid na trenutno lokacijo STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Onemogoči vse @@ -868,6 +906,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Na zemlj STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Preklopi vidljivost višinske karte STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ne prikaži lastnine podjetja na zemljevidu STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikaži vso lastnino podjetja na zemljevidu +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Prikaz brez tovorov na zemljevidu +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Prikaz vseh tovorov na zemljevidu # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Prikaži zadnje sporočilo ali novico @@ -944,13 +984,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čaka v ladjedelnici STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čaka v letališkem hangarju -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo ukazov na urniku STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima prazen ukaz STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima podvojene ukaze STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima eno neveljavno postajo na urniku -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} se stara STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} podlega iztrošenosti @@ -1029,12 +1067,10 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litvijske Lite STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafriški Rant (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Po meri... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestna vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Izberi smer vožnje cestnih vozil STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vožnja po levi @@ -1067,14 +1103,16 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italijanska STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonska ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Samo-shrani +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Samodejno shrani STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izberi časovni interval samodejnega shranjevanja igre +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izključeno STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Vsak mesec STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Vsake 3 mesece STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Vsakih 6 mesecev STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Vsakih 12 mesecev +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Izberi jezik vmesnika @@ -1086,8 +1124,10 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ločljiv STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Izberi ločljivost zaslona STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format zajema slike -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Izberi format zajema slike +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost vmesnika + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normalno +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojna velikost STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni komplet grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo @@ -1181,6 +1221,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Zelo raven STR_TERRAIN_TYPE_FLAT :Raven STR_TERRAIN_TYPE_HILLY :Hribovit STR_TERRAIN_TYPE_MOUNTAINOUS :Gorat +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Dopustno STR_CITY_APPROVAL_TOLERANT :Tolerantno @@ -1188,23 +1229,37 @@ STR_CITY_APPROVAL_HOSTILE :Sovražno STR_WARNING_NO_SUITABLE_AI :{WHITE}Ni na voljo nobene uporabne UI.{}UI so na voljo preko 'Prenosa vsebin'. -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Napredne nastavitve +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Nastavitve STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtriraj niz: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Razširi vse STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skrči vse STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ni razpoložljive razlage) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Privzeta vrednost: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Vrsta nastavitve: {ORANGE}{STRING} - +STR_CONFIG_SETTING_TYPE_CLIENT :Nastavitve gosta (ni shranjeno v igrah; vpliva na vse igre) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Nastavitve igre (shranjeno v igrah; vpliva samo na nove igre) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavitve igre (shranjeno v igrah; vpliva samo na tekočo igro) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavitve podjetja (shranjeno v igrah, vpliva samo na nove igre) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavitve podjetja (shranjeno v igrah, vpliva samo na trenutno podjetje) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tip: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Omeji seznam na prikaz le spremenjenih nastavitev +STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovne nastavitve +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne nastavitve +STR_CONFIG_SETTING_RESTRICT_ALL :Strokovne nastavitve / vse nastavitve +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavitve z neprivzeto vrednostjo +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavitve drugačne od privzetih za novo igro STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omeji spodnji seznam na le določene tipe nastavitev -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Vse nastavitve +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Vse vrste nastavitev STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavitve gostov (se ne zapiše ob shranjevanju; vpliva na vse igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavitve igre (zapisane ob shranjevanju; vplivajo le na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavitve igre (zapisane ob shranjevanju; vplivajo le na trenutno igro) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavitve podjetja (zapisane ob shranjevanju; vplivajo le na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavitve podjetja (zapisane ob shranjevanju; vplivajo le na trenutno podjetje) +STR_CONFIG_SETTINGS_NONE :{WHITE}- Brez - STR_CONFIG_SETTING_OFF :Izklopi STR_CONFIG_SETTING_ON :Vklopi @@ -1222,9 +1277,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Levo STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sredina STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Desno +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Najvišje začetno posojilo: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najvišji znesek, ki si ga podjetje lahko izposodi (ni vključen izračun inflacije) +STR_CONFIG_SETTING_INTEREST_RATE :Obrestna mera: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Obrestna mera; kontrolira tudi inflacijo, če je omogočena. +STR_CONFIG_SETTING_RUNNING_COSTS :Stroški delovanja: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastavitev vzdrževanja in stroškov delovanja vozil in zgradb +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Hitrost gradnje: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Nastavitev hitrosti gradnje za UI +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Okvare vozil: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Nastavitev, kako pogosto se nevzdrževana vozila lahko pokvarijo +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Faktor subvencij: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Nastavitev faktorja subvencij +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cene gradnje: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nastavitev cene gradnje in nakupa +STR_CONFIG_SETTING_RECESSIONS :Recesije: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Če je omogočeno, se recesije lahko pojavijo vsakih nekaj let. Med recesijo je proizvodnja znatno nižja, povrne se v tek po recesiji. +STR_CONFIG_SETTING_TRAIN_REVERSING :Prepovej obračanje vlakov na postajah: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Če je omogočeno, se vlaki ne obračajo na vmesnih postajah +STR_CONFIG_SETTING_DISASTERS :Nesreče: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Preklop med pojavljanjem nesreč +STR_CONFIG_SETTING_CITY_APPROVAL :Odnos mestnega sveta do prestrukturiranja površine: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Nastavitev nivoja hrupa in posameznih posegov podjetja na oceno v mestu in nadaljnjo gradnjo -STR_CONFIG_SETTING_BUILDONSLOPES :Dovoli gradnjo hiš na nagibih ali obali: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Če je omogočeno, so lahko tračnice in postaje zgradjene na večini pobočij. Če je onemogočeno, so dovoljene le na pobočjih, ki ustrezajo smeri tračnic in zato ne zahtevajo temelje. STR_CONFIG_SETTING_AUTOSLOPE :Dovoli oblikovanje terena pod objekti, tiri, ipd. (samonaklon): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dovoli spremembo terena pod zgradbami in tiri brez odstranitve STR_CONFIG_SETTING_CATCHMENT :Dovoli bolj resnični območni zajem postaj: {STRING} @@ -1249,14 +1324,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Prepreči vlako STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 stopinjski zavoj se izvrši, ko je vodoravni odsek proge tik pred navpičnim, tako da vlak, ko prevozi rob plošče zavije za 90 namesto klasičnih 45 stopinj. To vpliva tudi na zavoje ladij. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dovoli združevanje postaj, ki niso v dotiku: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Dovoli dograjevanje postaje brez direktnega dotika obstoječih delov. Ctrl+klik za postavitev novih delov. -STR_CONFIG_SETTING_IMPROVEDLOAD :Uporabi izboljšan algoritem polnjenja: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Če je omogočeno, se vozila polnijo sekvenčno. Drugo se začne polniti, ko je prvo polno, v kolikor sta dve ali več hkrati na postaji. -STR_CONFIG_SETTING_GRADUAL_LOADING :Postopno polni vozila: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postopno polnjenje vozil s specifičnim časom polnjenja, namesto vseh enako hitro in odvisno le od količine tovora STR_CONFIG_SETTING_INFLATION :Inflacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Omogoči inflacijo ekonomije, kjer se stroški zvišajo rahlo hitreje kot plačila -STR_CONFIG_SETTING_SELECTGOODS :Dostavi tovor postaji le ob povpraševanju: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dostavi postaji le tovor, ki je zahtevan od vozila. To prepreči slabe ocene za tovore, ki niso prevažani STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Največja dolžina mostov: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Največja dolžina gradnje mostov STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Največja dolžina predorov: {STRING} @@ -1284,12 +1353,16 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mesto ustavljan STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :začetni strani STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredini STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :koncu -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cestna vozila v vrsti (s quantum efekti): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Cestno vozila naj čaka pred zasedenim postankom/oviro dokler ni odstranjena. STR_CONFIG_SETTING_AUTOSCROLL :Premakni okno, ko je miška na robu: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Če je omogočeno, bo miška na robu slike sama premikala pogled naprej +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Onemogočeno +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Glavni pogled, samo cel zaslon +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Glavni pogled +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Vsi pogledi STR_CONFIG_SETTING_BRIBE :Dovoli podkupovanje mestnih oblasti: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Dovoli družbam poskus podkupovanja mestne oblasti. Če bo inšpektor odkril podkupovanje, bo družba mirovala v tistem mestu za 6 mesecev. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dovoli nakup ekskluzivnih prevoznih dovoljenj: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Če podjetje odkupi ekskluzivne transportne pravice v mestu, tekmečeve postaje ne bodo prejemale tovora za 1 leto STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dovoli naložbe v zgradbe: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dovoli družbam vlaganje denarja v mesta za gradnjo novih hiš. STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dovoli financiranje obnove lokalnih cest: {STRING} @@ -1310,10 +1383,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dovoli prehodne STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dovoli gradnjo pretočnih postaj na cesti, ki je v lasti mesta. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Dovoli prevoženja postaj na tekmečevih cestah: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dovoli gradnjo pretočnih postaj na cesti, ki je v lasti druge družbe. -STR_CONFIG_SETTING_ADJACENT_STATIONS :Dovoli gradnjo združljivih postaj: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Dovoli stikanje različnih postaj. -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Omogoči večkratni set NewGRF pogona: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Skladna možnost za stare NewGRF-je. Ne izklopi, razen če točno veš kaj delaš. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Sprememba teh nastavitev ni mogoča, ko so tam vozila STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vzdrževanje infrastrukture: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Če je omogočeno, infrastruktura upošteva vzdrževalne stroške, ki rastejo skozi čas proporcionalno z velikostjo omrežja. @@ -1352,9 +1421,13 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaz prebival STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debelina črt grafov: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debelina črte grafov. Tanjša je bolj natančna, debelejša bolj razločna. +STR_CONFIG_SETTING_LANDSCAPE :Pokrajina: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Urejevalnik terena: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Tip terena: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(samo TerraGenesis) Hribovitost pokrajine +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Gostota industrij: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Največja oddaljenost rafinerij nafte od roba: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftne rafinerije se nahajajo le pri robu kater, to je ob obali na otoških kartah STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Nadmorska višina snežne odeje: {STRING} @@ -1363,15 +1436,19 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Zelo zglajen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Zglajen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Valovit STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Zelo valovit +STR_CONFIG_SETTING_VARIETY :Raznolika distribucija: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT :Število rek: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Izberi koliko rek generirati STR_CONFIG_SETTING_TREE_PLACER :Algoritem postavljanja dreves: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Brez STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Izboljšan +STR_CONFIG_SETTING_ROAD_SIDE :Cestna vozila: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Izberi stran vožnje STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Zasuk višinskega zemljevida: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nasprotno urini smeri STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Urina smer STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Višina, do katere sega raven tip terena: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Omogoči oblikovanje terena na robovih ozemlja: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Eno ali več polj na severnem robu ni praznih STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Eno ali več polj na robu ni vodnatih @@ -1406,8 +1483,12 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Premikaj zemlje STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Izklopljeno STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Hitrost premika s kolescem miške: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontrola občutljivosti miške med pomikom pogleda +STR_CONFIG_SETTING_OSK_ACTIVATION :Tipkovnica na zaslonu: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Izberi način odpiranja tipkovnice na zaslonu za vpis teksta z miško STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Onemogočeno STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvojni klik +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enojni klik (ko je izostreno) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enojni klik (takojšnje) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulacija desnega gumba miške: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Izberi način emulacije klika desnega bumba miške @@ -1418,17 +1499,15 @@ 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_AUTOSAVE :Samodejno shrani: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Izberi časovni interval samodejnega shranjevanja igre + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uporabi {STRING} format datuma za imena shranjevanja igre STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma v imenih shranjenih iger STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dolg (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kratek (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Privzeti nabor za NewGRF-je brez izbranega nabora: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Privzeta paleta za uporabo z NewGRF-ji, kateri ne zahevajo specifične. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS nabor -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows nabor - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Avtomatsko pavziraj ob zagonu nove igre: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Če je omogočeno, se igra avtomatsko pavzira ob zagonu nove igre, za preučitev ozemlja. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Med pavzo dovoli: {STRING} @@ -1496,6 +1575,8 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Če je omogoče STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Onemogoči ladje za računalnik: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Če je omogočeno, računalniški tekmec ne more graditi ladij. +STR_CONFIG_SETTING_AI_PROFILE :Profil privzetih nastavitev: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Izberi profil nastavitev za naključne UI ali za začetne vrednosti ob dodajanju UI ali skripta STR_CONFIG_SETTING_AI_PROFILE_EASY :Lahko STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Srednje težko STR_CONFIG_SETTING_AI_PROFILE_HARD :Težko @@ -1527,12 +1608,17 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Če je omogoče STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Prihod prvega vozila na igralčevo postajo: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Prikaži novice, ko prvo vozilo prispe na novo igralčevo postajo STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Prihod prvega vozila na nasprotnikovo postajo: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaz časopisa, ko pride prvo vozilo na postajo novega tekmeca. STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nesreče / katastrofe: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikaži novice ko se zgodi nesreča STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informacije o podjetju: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikaz časopisa, ko se ustanovi novo podjetje ali ko se pripravlja na bankrot STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Odpiranje industrij: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikaz časopisa ob odprtju industrij STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zapiranje industrij: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaz časopisa ob zaprtju industrij STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomske spremembe: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaz časopisa ob globalnih ekonomskih spremembah STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Sprememba proizvodnje industrij v oskrbi podjetja: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži časopis ob spremembi proizvajalne ravni industrij, ki jih servisira podjetje ali tekmeci STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Proizvodne spremembe industrij v oskrbi tekmecev: {STRING} @@ -1567,7 +1653,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Med vlečenjem STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Razdalja postavitve signalov do naslednjega signala/prepreke pri načinu z vlečenjem. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} plošč{P 0 o i e ""} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Med vlečenjem drži trajni razmak med signali: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Izbira ozadja postavitve signalov s Ctrl+vleko signalov. Če je omogočeno, se signali postavijo vsakih Št. polj, onemogočeno - signali se postavijo ob mostovih, predorih, da ni velikih razdalj brez signalov. +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Izbira ozadja postavitve signalov s Ctrl+vleko signalov. Če je onemogočeno, se signali postavijo ob predorih in mostih, da se preprečijo dolgi odseki brez signalov. Če je omogočeno, se postavijo signali vsakih Št. polj. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Samodejno postavi semaforje pred: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Nastavitev leta, kdaj se prične uporaba električnih signalov. Pred tem so mehanski. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Omogoči vmesnik signalov: {STRING} @@ -1643,38 +1729,83 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 na {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Noben STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Začetni faktor rasti mesta: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Povprečna velikost mest relativno gledano na normalna naselja na začetku igre. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Odstrani absurdne cestne elemente med gradnjo cest: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Odstrani slepe odseke cest med financirano obnovo cest. - - - - - - +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Posodobi graf razporeda v razmaku {STRING} d{P 0:2 an neva ni ni} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Čas med ponovnimi izračuni za L-G. Vsak preračun izračuna načrte ene komponente grafa. To pomeni da vrednost X za to nastavitev ne pomeni, da bo celotni graf posodobljen vsakih X dni ampak samo nekatere komponente bodo. Krajša nastavitev pomeni več moči za izračun. Daljša pomeni, da bo pozneje tovor razporejen na nove poti. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Porabi {STRING} d{P 0:2 an neva neve dni} za preračun grafa razporeda +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Čas preračuna za vsak izračun L-G komponent. Ko se zažene preračun, se pojavi nit, ki lahko teče za to število dni. Krajša kot je nastavitev, več je možnosti, da se nit ne dokonča kadar bi se morala. Igra se ustavi do zaključka izračuna. Dlje kot je nastavljeno, dlje se osvežuje razpored, ko je pot spremenjena. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ročno +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrično +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrično +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Razporedni način za potnike: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "asymmetric" means that arbitrary numbers of passengers can go in either direction. "manual" means that no automatic distribution will take place for passengers. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Razporedni način za pošto: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of mail can be sent in either direction. "manual" means that no automatic distribution will take place for mail. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Razporedni način za OKLEPNE skupine tovorov: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Razporedni način za druge tovorne skupine: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Simetrično" pomeni, da bo skoraj enaka količina tovora poslana med postajo A in B, "asimetrično" pomeni, da bo možna količina tovora poslana med A in B. Ročno pomeni, da ni avtomatske razporeditve tovora. Priporočena je nastavitev "asimetrično" ali "ročno". +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Natančnost L-G razporeditve: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Višja kot je nastavitev, več časa se bo izračunavala vez. Če bo predolg izračun, bo postal sistem počasen. Pri nizki vrednosti pa ne bo razpored natančen in tovor mogoče ne bo šel, kamor je predvideno. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Efekt razdalje na povpraševanje: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Če je ta vrednost višja od 0, bo razdalja med postajo A nekega tovora in možnim ciljem B, imela efekt na količino poslanega tovora med njima. Dlje kot je B, manj tovora bo poslanega. Višja kot je nastavitev, manj tovora bo poslanega daljnjim postajam, več pa bližnjim.. +STR_CONFIG_SETTING_DEMAND_SIZE :Količina zavrnjenega tovora v simetričnem načinu: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavitev pod 100% naredi simetrično razporeditev bolj podobno asimetrični. Manj tovora bo zavrnjenega, če je do postaje poslana določena količina. Nastavljeno na 0% se vede kot asimetrična. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Nasičenje kratkih poti pred uporabo zmogljivejših: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Večkrat je več možnih poti med postajami. Razpored tovora bo nasičil vedno najkrajšo pot, potem drugo najkrajšo itd... Nasičenje se izračuna glede ne zmogljivost in planirano rabo poti. Če bodo vse zasičene, jih bo prekomerno nasičil. Algoritem ni vedno natančen. Nastavitve določijo procent, do katerega se nasiči pot, preden se išče naslednja. Nastavi procent pod 100, da se izogneš prekomernemu nasičenju postaj. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Enote hitrosti: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Ko bo prikazana hitrost vozil na vmesniku, bodo uporabljene izbrane enote. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Colsko (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrično (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Moč vozila: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Ko bo prikazana moč vozil na vmesniku, bodo uporabljene izbrane enote. +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Colsko (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrično (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Teža: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Ko bo prikazana teža na vmesniku, bodo uporabljene izbrane enote. +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Colsko (na kratko t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrično (t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Prostornina: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Ko bodo prikazani volumni na vmesniku, bodo uporabljene izbrane enote. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Colsko (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrično (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Vlečna moč: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Ko bo prikazana vlečna moč na vmesniku, bodo uporabljene izbrane enote. +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Colsko (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrično (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Višinske enote: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Ko je omogočen prikaz višin na vmesniku, bodo prikazane v izbranih enotah. STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperične (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrične (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Vmesnik -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Gradnja +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalno +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvočni učinki +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Vmesnik +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Splošno +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Gradnja +STR_CONFIG_SETTING_COMPANY :{ORANGE}Podjetje STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_STATIONS :{ORANGE}Postaje -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomija +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Usmerjanje +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofe / Nesreče +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Ustvarjanje sveta +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Okolje +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Mesta +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrije +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Razpored tovora STR_CONFIG_SETTING_AI :{ORANGE}Tekmeci -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Prikaži možnosti -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktivnost -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvočni učinki -STR_CONFIG_SETTING_NEWS :{ORANGE}Novice in sporočila -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signali -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Upravljanje tovora STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalniški igralci -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Samoobnova -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servisiranje -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Usmerjanje -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlaki -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Mesta -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrije STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1705,7 +1836,11 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nezdružljivo s STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :neznano STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivo stiskanja '{STRING}' ni veljaven STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format shranjevanja igre '{STRING}' ni na voljo. Vračanje na '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoriran osnovni grafični set '{STRING}': ni najden +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoriran osnovni zvočni set '{STRING}': ni najden +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriran osnovni glasbeni set '{STRING}': ni najden STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Premalo pomnilnika +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Priprava {BYTES} za predpomnilnik sličic ni uspela. Pomnilnik je bil zmanjšan na {BYTES}. To bo zmanjšalo zmogljivost OpenTTD. Za zmanjšanje potrebe po spominu onemogoči podporo za 32 bitne sličice # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1719,7 +1854,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Več igr STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljših rezultatov -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredne nastavitve +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Nastavitve STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF nastavitve STR_INTRO_ONLINE_CONTENT :{BLACK}Preveri razpoložljive vsebine STR_INTRO_SCRIPT_SETTINGS :{BLACK}UI / Nastavitve skriptov igre @@ -1739,7 +1874,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izberi o STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikaži možnosti igre STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikaži tabelo najboljših rezultatov -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Prikaz naprednih nastavitev +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Nastavitve zaslona STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikaži nastavitve NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Preveri posodobljene vsebine na strežniku,{} ki so na voljo za prenos STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži UI in Nastavitve skriptov igre @@ -1827,6 +1962,7 @@ STR_LIVERY_FREIGHT_TRAM :Tovorni tramvaj STR_FACE_CAPTION :{WHITE}Izbira obraza STR_FACE_CANCEL_TOOLTIP :{BLACK}Prekliči izbiro novega obraza STR_FACE_OK_TOOLTIP :{BLACK}Sprejmi nov obraz +STR_FACE_RANDOM :{BLACK}Naključno STR_FACE_MALE_BUTTON :{BLACK}Moški STR_FACE_MALE_TOOLTIP :{BLACK}Izberi moške slike @@ -1882,6 +2018,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Spremeni # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Več igralcev +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Oglaševano +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Izberi med oglaševano (internet) in neoglaševano (Local Area Network, LAN) igro +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ne +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Da STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ime igralca: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}To je ime, po katerem te prepoznajo drugi igralci @@ -1940,6 +2080,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Ime bo p STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavi geslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaščiti igro z geslom, če želiš preprečiti dostop nepovabljenim +STR_NETWORK_START_SERVER_UNADVERTISED :Ne +STR_NETWORK_START_SERVER_ADVERTISED :Da STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} gost{P "" a i ov} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Dovoljeno število gostov: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izberite največje število gostov. Ni potrebno, da so vsi prisotni @@ -2060,6 +2202,7 @@ STR_NETWORK_CLIENT :Gost STR_NETWORK_SPECTATORS :Gledalci STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vpiši znesek denarja za darovanje +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Gledalec # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne shrani vnešenega gesla @@ -2179,6 +2322,9 @@ STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označi STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nobena STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi vse, da ne bo prenešeno STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Poišči zunanje spletne strani +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Vsebina iskanja ni na voljo v OpenTTD-jevem servisu +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Zapuščaš OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Izjave in pogoji za prenos vsebin iz zunanjih strežnikov se spreminjajo.{}Sklicuj je na zunanje strani za navodila o instalaciji vsebin v OpenTTD.{}Želiš nadaljevati? STR_CONTENT_FILTER_TITLE :{BLACK}Oznaka/ime filtra: STR_CONTENT_OPEN_URL :{BLACK}Obišči spletno stran STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Obišči spletno mesto za to vsebino @@ -2249,8 +2395,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Preklop STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nastavi predmete nevidne namesto prosojne # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda pretoka tovora +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Vse +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Brez +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Izberi podjetja, ki bodo prikazana # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}neuporabljeno +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}nasičeno +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}prenasičeno # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Osvetlitev območja zajema @@ -2554,6 +2707,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Sprejet tovor: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Omejitev hitrosti vlakov: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Omejitev hitrosti na cestah: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamenje @@ -2650,7 +2804,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-2013 ekipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 ekipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro @@ -2669,6 +2823,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Shrani STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Shrani trenutno igro z izbranim imenom STR_SAVELOAD_LOAD_BUTTON :{BLACK}Naloži STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Naloži izbrano igro +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Naloži višinsko karto STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Podrobnosti igre STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ni informacij na voljo STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2679,17 +2834,15 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Vpiši i # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Ustvarjanje sveta STR_MAPGEN_MAPSIZE :{BLACK}Velikost ozemlja: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Izberi velikost zemljevida v ploščah. Število plošč na voljo bo nekoliko nižje. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Število mest: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Število industrij: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimalna višina mape: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Višina snežne meje: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Premik snežne meje eno enoto višje STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Premik snežne meje eno enoto nižje -STR_MAPGEN_RANDOM_SEED :{BLACK}Naključno seme: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni za vnos naključnega semena -STR_MAPGEN_RANDOM :{BLACK}Naključno -STR_MAPGEN_RANDOM_HELP :{BLACK}Spremeni naključno seme za ustvarjanje terena STR_MAPGEN_LAND_GENERATOR :{BLACK}Ustvarjalec terena: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritem dreves: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tip terena: @@ -2716,7 +2869,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ime viš STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velikost: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Vpiši naključno seme +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Spremeni maksimalno višino mape STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Spremeni višino snežne meje STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Spremeni začetno leto @@ -2771,6 +2924,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Premakni STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Premakne izbrano NewGRF gor po seznamu STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Premakni dol STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Premakne izbrano NewGRF dol po seznamu +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Nadgradi STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Seznam nameščenih NewGRF datotek. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nastavi parametre @@ -2795,6 +2949,12 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ni ujemajo STR_NEWGRF_SETTINGS_DISABLED :{RED}Onemogočeno STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nekompatibilno s to različico OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Shrani prednastavitev +STR_SAVE_PRESET_TITLE :{BLACK}Vpiši ime za prednastavitev +STR_SAVE_PRESET_CANCEL :{BLACK}Prekliči +STR_SAVE_PRESET_SAVE :{BLACK}Shrani + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Spremeni NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zapri @@ -2825,7 +2985,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prejšnj STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Nadaljuj k prejšnji navadni sličici, zanemari vse navidezne/pobarvane/besedilne sličice in okvir na koncu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Predstavitev trenutno izbrane sličice. Zamik je zanemarjen pri risanju te sličice STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Premakni sličico s spreminjanjem X in Y osi -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X zamik: {NUM}, Y zamik: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetiraj relativno +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetiraj zdajšne relativne odmike +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X odmik: {NUM}, Y odmik: {NUM} (Absolutno) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X odmik: {NUM}, Y odmik: {NUM} (Relativno) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Izberi sličico STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Izberi sličico kjerkoli na zaslonu @@ -2854,6 +3017,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Vsebuje več Ukaz 8 vnosov (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Prebrana datoteka preko meje za sličice (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}V uporabljenem osnovnem setu grafik manjkajo sličice.{}Prosim, posodobi osnovni set grafik +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutni set osnovnih grafik ne vsebuje določenih sličic. Posodobi osnovni set.{}Odkar igraš {YELLOW} razvojni pogled OpenTTD{WHITE}, nogoče potrebuješ tudi {YELLOW}razvojni pogled osnovnih grafik{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Zahtevani viri GRF niso na voljo (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je bil izklopljen zaradi {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neveljaven/neznan format zapisa sličic (sprite {3:NUM}) @@ -2864,6 +3028,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Priprav STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ne morem dodati datoteke: podvojen GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ustrezna datoteka ni najdena (naložen je kompatibilni GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemogoče dodati datoteko: Meja NewGRF datoteke je dosežena STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilni GRF-ji so naloženi namesto manjkajočih datotek STR_NEWGRF_DISABLED_WARNING :{WHITE}Manjkajoče GRF datoteke so bile onemogočene @@ -2894,6 +3059,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} od STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Preiskava NewGRF-jev STR_NEWGRF_SCAN_MESSAGE :{BLACK}Preiskujem NewGRF-je. Odvisno od količine lahko traja nekaj časa... @@ -2980,6 +3148,9 @@ STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalni STR_GOALS_GLOBAL_TITLE :{BLACK}Globalni cilji: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Brez - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ni izvedljivo - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Cilji podjetja: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cilj za pogled na industrijo/mesto/polje. Ctrl+Klik odpre novo okno na industrijo/mesto/polje @@ -2989,7 +3160,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacije STR_GOAL_QUESTION_CAPTION_WARNING :Opozorilo STR_GOAL_QUESTION_CAPTION_ERROR :Napaka -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Prekliči STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne @@ -3008,6 +3179,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Ponovni zagon STR_GOAL_QUESTION_BUTTON_POSTPONE :Preloži STR_GOAL_QUESTION_BUTTON_SURRENDER :Predaja STR_GOAL_QUESTION_BUTTON_CLOSE :Zapri +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije @@ -3019,6 +3191,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Prevoz STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na storitev za pogled na industrijo/mesto. Ctrl+Klik odpre nov pogled na lokaciji industrije/mesta # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Zgodovinska knjiga +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalna zgodovinska knjiga +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Stran {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skoči na določeno stran izbrano na tem seznamu. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Prejšnja +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Pojdi na prejšnjo stran +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Naslednja +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Pojdi na naslednjo stran +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Neveljavna ciljna referenca # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Imena postaj - klikni na ime za pogled na postajo. Ctrl+Klik odpre nov pogled na lokaciji postaje @@ -3033,7 +3215,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Noben to # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čaka: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} na poti iz {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervirano za nalaganje @@ -3047,11 +3228,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaz ocen postaje - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mesečna oskrba in lokalne ocene: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grupiraj po +STR_STATION_VIEW_WAITING_STATION :Postaja: Čaka +STR_STATION_VIEW_WAITING_AMOUNT :Količina: Čaka +STR_STATION_VIEW_PLANNED_STATION :Postaja: Planirano +STR_STATION_VIEW_PLANNED_AMOUNT :Količina: Planirano STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} na poti iz {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} skozi {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION} STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} na poti iz neznane postaje +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do katerekoli postaje +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} skozi katerokoli postajo +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} iz te postaje +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} se ustavi na tej postaji +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} na to postajo STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} brez postanka +STR_STATION_VIEW_GROUP_S_V_D :Izvor-Pot-Cilj +STR_STATION_VIEW_GROUP_S_D_V :Izvor-Cilj-Pot +STR_STATION_VIEW_GROUP_V_S_D :Pot-Izvor-Cilj +STR_STATION_VIEW_GROUP_V_D_S :Pot-Cilj-Izvor +STR_STATION_VIEW_GROUP_D_S_V :Cilj-Izvor-Pot +STR_STATION_VIEW_GROUP_D_V_S :Cilj-Pot-Izvor ############ range for rating starts STR_CARGO_RATING_APPALLING :Nizkotno @@ -3194,6 +3395,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Proizvod STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prepeljano) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo industrije. Ctrl+Klik odpre nov pogled na lokaciji industrije STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivo proizvodnje: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrija je napovedala zaprtje! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING} @@ -3262,6 +3464,8 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Izbriši STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenuj izbrano skupino STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni za zaščito skupine pred splošno samoobnovo +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Izbriši skupino + STR_GROUP_ADD_SHARED_VEHICLE :Vsa izmenljiva vozila STR_GROUP_REMOVE_ALL_VEHICLES :Odstrani vsa vozila @@ -3324,6 +3528,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Preimenu STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Preimenuj ladjo STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Preimenuj letalo + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Preimenuj železniško vozilo STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Preimenuj cestno vozilo STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Preimenuj ladjo @@ -3428,6 +3635,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Cestno vozilo STR_REPLACE_VEHICLE_SHIP :Ladja STR_REPLACE_VEHICLE_AIRCRAFT :Letalo + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izberi tip lokomotive za zamenjati STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izberi vrsto lokomotive, ki jo hočeš prestaviti na levo označeno mesto @@ -3557,6 +3765,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Obdobje STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Podaljšaj čas med servisi za 10. Ctrl+Klik podaljša za 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Skrajšaj čas med servisi za 10. Ctrl+Klik skrajša za 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Spremeni presledek tipa servisiranja STR_VEHICLE_DETAILS_DEFAULT :Privzeto STR_VEHICLE_DETAILS_DAYS :Dni STR_VEHICLE_DETAILS_PERCENT :Odstotek @@ -3796,6 +4005,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ta urnik STR_TIMETABLE_STATUS_START_AT :{BLACK}Ta urnik se bo začel ob {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Začetni datum +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izberi datum za začetek te časovne tabele. Ctrl+klik nastavi začetek te časovne tabele in razporedi vsa vozila, ki si delijo ta ukaz, enakomerno glede na njihov relativni ukaz, če je ta popolnoma naravnan po časovni tabeli STR_TIMETABLE_CHANGE_TIME :{BLACK}Spremeni čas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Spremeni čas, ki naj bi ga označeni ukaz porabil @@ -3909,6 +4119,8 @@ STR_AI_SETTINGS_START_DELAY :Število dni za STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} preberi-me od {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} zamenjaj dnevnik od {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licenca od {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Prilagodi besedilo +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Prilagodi besedilo oknu, da uporaba drsnika ni potrebna STR_TEXTFILE_VIEW_README :{BLACK}Prikaži preberi-me datoteko STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Zamenjaj dnevnik STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenca @@ -4069,6 +4281,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... gozd STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... lahko se zgradi samo nad snežno mejo STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... lahko se zgradi samo pod snežno mejo + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Tukaj ni mogoče zgraditi železniške postaje... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Tukaj ni mogoče zgraditi avtobusne postaje... @@ -4286,7 +4499,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ni mogo STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uničeno +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Sploh ni razpoložljivih vozil STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zamenjaj svojo NewGRF konfiguracijo +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ni še vozil na razpolago. +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začni novo igro po {DATE_SHORT} ali uporabi NewGRF, ki vsebuje zgodnja vozila # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ni mogoče, da vlak v nevarnosti pelje mimo signalov... @@ -4507,7 +4723,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parna) @@ -4716,7 +4932,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug po STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake potniški trajekt STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate tovorna ladja STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell tovorna ladja -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover tovorna ladja +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover tovorna ladja STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut tovorna ladja STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4845,8 +5061,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4857,9 +5071,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 4447262e71..3b8cb42b21 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :{G=m}Refresco # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} pasajero{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}pasajero{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de carbón -STR_QUANTITY_MAIL :{COMMA} bolsa{P "" s} de correo +STR_QUANTITY_MAIL :{COMMA}{NBSP}bolsa{P "" s} de correo STR_QUANTITY_OIL :{VOLUME_LONG} de petróleo -STR_QUANTITY_LIVESTOCK :{COMMA} cabeza{P "" s} de ganado -STR_QUANTITY_GOODS :{COMMA} caja{P "" s} de mercancías +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}cabeza{P "" s} de ganado +STR_QUANTITY_GOODS :{COMMA}{NBSP}caja{P "" s} de mercancías STR_QUANTITY_GRAIN :{WEIGHT_LONG} de grano STR_QUANTITY_WOOD :{WEIGHT_LONG} de madera STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de mineral de hierro STR_QUANTITY_STEEL :{WEIGHT_LONG} de acero -STR_QUANTITY_VALUABLES :{COMMA} bolsa{P "" s} de objetos de valor +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bolsa{P "" s} de objetos de valor STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de mineral de cobre STR_QUANTITY_MAIZE :{WEIGHT_LONG} de maíz STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fruta -STR_QUANTITY_DIAMONDS :{COMMA} bolsa{P "" s} de diamantes +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bolsa{P "" s} de diamantes STR_QUANTITY_FOOD :{WEIGHT_LONG} de alimento STR_QUANTITY_PAPER :{WEIGHT_LONG} de papel -STR_QUANTITY_GOLD :{COMMA} bolsa{P "" s} de oro +STR_QUANTITY_GOLD :{COMMA}{NBSP}bolsa{P "" s} de oro STR_QUANTITY_WATER :{VOLUME_LONG} de agua STR_QUANTITY_WHEAT :{WEIGHT_LONG} de trigo STR_QUANTITY_RUBBER :{VOLUME_LONG} de caucho STR_QUANTITY_SUGAR :{WEIGHT_LONG} de azúcar -STR_QUANTITY_TOYS :{COMMA} juguete{P "" s} -STR_QUANTITY_SWEETS :{COMMA} bolsa{P "" s} de dulces +STR_QUANTITY_TOYS :{COMMA}{NBSP}juguete{P "" s} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}bolsa{P "" s} de dulces STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodón dulce STR_QUANTITY_BUBBLES :{COMMA} burbuja{P "" s} @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}TOD # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} pasajero{P "" s} -STR_BAGS :{COMMA} bolsa{P "" s} -STR_TONS :{COMMA} tonelada{P "" s} -STR_LITERS :{COMMA} litro{P "" s} -STR_ITEMS :{COMMA} artículo{P "" s} -STR_CRATES :{COMMA} caja{P "" s} +STR_PASSENGERS :{COMMA}{NBSP}pasajero{P "" s} +STR_BAGS :{COMMA}{NBSP}bolsa{P "" s} +STR_TONS :{COMMA}{NBSP}tonelada{P "" s} +STR_LITERS :{COMMA}{NBSP}litro{P "" s} +STR_ITEMS :{COMMA}{NBSP}artículo{P "" s} +STR_CRATES :{COMMA}{NBSP}caja{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Azul oscuro @@ -192,37 +192,37 @@ STR_COLOUR_GREY :Gris STR_COLOUR_WHITE :Blanco # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}cv -STR_UNITS_POWER_METRIC :{COMMA}cv -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}cv +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}cv +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tonelada{P "" s} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{P "" s} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonelada{P "" s} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonelada{P "" s} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon{P "" es} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gal{P ón ones} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kp -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kp +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pies -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}pies +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Patrón de filtrado: @@ -249,6 +249,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento - mueve la lista izquierda/derecha STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un área de terreno. Ctrl permite seleccionar un área diagonalmente. Shift permite mostrar una estimación del precio +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostrar ocultos +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostrar ocultos + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Al activar este botón, los trenes ocultos también serán mostrados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Al activar este botón, los vehículos de carretera ocultos también serán mostrados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Al activar este botón, los barcos ocultos también serán mostrados +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Al activar este botón, las aeronaves ocultas también serán mostradas + # Query window STR_BUTTON_DEFAULT :{BLACK}Por defecto STR_BUTTON_CANCEL :{BLACK}Cancelar @@ -294,9 +305,9 @@ STR_SORT_BY_ENGINE_ID :ID Motor (orden STR_SORT_BY_COST :Coste STR_SORT_BY_POWER :Potencia STR_SORT_BY_TRACTIVE_EFFORT :Fuerza de tracción -STR_SORT_BY_INTRO_DATE :Fecha Introducción -STR_SORT_BY_RUNNING_COST :Coste Operación -STR_SORT_BY_POWER_VS_RUNNING_COST :Potencia/Coste Operación +STR_SORT_BY_INTRO_DATE :Fecha introducción +STR_SORT_BY_RUNNING_COST :Coste operación +STR_SORT_BY_POWER_VS_RUNNING_COST :Potencia/coste operación STR_SORT_BY_CARGO_CAPACITY :Capacidad de carga STR_SORT_BY_RANGE :Alcance STR_SORT_BY_POPULATION :Población @@ -308,7 +319,7 @@ STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avance r STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opciones STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Guardar juego, abandonar juego, salir STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Mostrar mapa -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostrar guía de pueblos +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostrar guía de municipios STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostrar subvenciones STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostrar lista de estaciones STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostrar información financiera de la empresa @@ -341,9 +352,9 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Retrocede la fecha de inicio en un año STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Avanza la fecha de inicio en un año STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Click para fijar el año inicial -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Mostrar mapa, guía de pueblos +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Mostrar mapa, guía de municipios STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generación de terreno -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Creación de pueblos +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Creación de municipios STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generación de industria STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construcción de carreteras STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árboles. Shift permite mostrar una estimación del precio @@ -362,11 +373,11 @@ STR_SCENEDIT_FILE_MENU_QUIT :Salir ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opciones de juego -STR_SETTINGS_MENU_CONFIG_SETTINGS :Opciones avanzadas +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Configuración STR_SETTINGS_MENU_SCRIPT_SETTINGS :Configuración de scripts STR_SETTINGS_MENU_NEWGRF_SETTINGS :Configuración NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opciones de transparencia -STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Ver nombres de pueblos +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Ver nombres de municipios STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Ver nombres de estaciones STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Ver puntos de ruta STR_SETTINGS_MENU_SIGNS_DISPLAYED :Ver carteles @@ -392,8 +403,8 @@ STR_MAP_MENU_LINGRAPH_LEGEND :Leyenda de Movi STR_MAP_MENU_SIGN_LIST :Lista de carteles ############ range for town menu starts -STR_TOWN_MENU_TOWN_DIRECTORY :Directorio de pueblos -STR_TOWN_MENU_FOUND_TOWN :Fundar pueblo +STR_TOWN_MENU_TOWN_DIRECTORY :Directorio de municipios +STR_TOWN_MENU_FOUND_TOWN :Fundar municipio ############ range ends here ############ range for subsidies menu starts @@ -471,7 +482,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Activar cajas d STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Activar/Desactivar coloreado de bloques modificados ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1º STR_ORDINAL_NUMBER_2ND :2º STR_ORDINAL_NUMBER_3RD :3º @@ -487,22 +498,40 @@ STR_ORDINAL_NUMBER_12TH :12º STR_ORDINAL_NUMBER_13TH :13º STR_ORDINAL_NUMBER_14TH :14º STR_ORDINAL_NUMBER_15TH :15º -STR_ORDINAL_NUMBER_16TH :16º -STR_ORDINAL_NUMBER_17TH :17º -STR_ORDINAL_NUMBER_18TH :18º -STR_ORDINAL_NUMBER_19TH :19º -STR_ORDINAL_NUMBER_20TH :20º -STR_ORDINAL_NUMBER_21ST :21º -STR_ORDINAL_NUMBER_22ND :22º -STR_ORDINAL_NUMBER_23RD :23º -STR_ORDINAL_NUMBER_24TH :24º -STR_ORDINAL_NUMBER_25TH :25º -STR_ORDINAL_NUMBER_26TH :26º -STR_ORDINAL_NUMBER_27TH :27º -STR_ORDINAL_NUMBER_28TH :28º -STR_ORDINAL_NUMBER_29TH :29º -STR_ORDINAL_NUMBER_30TH :30º -STR_ORDINAL_NUMBER_31ST :31º +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -586,8 +615,8 @@ STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Mostrar ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehículos: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Estaciones: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Beneficio Min.: -STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ingreso Min.: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Beneficio Mín.: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ingreso Mín.: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Ingreso Máx.: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Entregado: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Carga: @@ -714,12 +743,12 @@ STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rocas STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Agua STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sin propietario -STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Pueblos +STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Municipios STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrias STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desierto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Nieve -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nombres de pueblos en el mapa +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nombres de municipios en el mapa STR_SMALLMAP_CENTER :{BLACK}Centrar mapa en la posición actual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -784,7 +813,7 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}¡{STRING} ha sido adquirida por {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Presidente) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}¡{STRING} patrocina la construcción del nuevo pueblo {TOWN}! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}¡{STRING} patrocina la construcción del nuevo municipio {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} en construcción cerca de {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} está siendo plantad{G o a} cerca de {TOWN}! @@ -811,13 +840,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} está esperando en el astillero STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} está esperando en el hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings 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 una estación inválida en sus órdenes -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tiene en sus órdenes un aeropuerto con una pista demasiado corta STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} se está volviendo viejo STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} se está volviendo muy viejo @@ -900,17 +928,13 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraní (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehículos de carretera STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selecciona el lado de la carretera por donde se debe conducir STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducir por la izquierda STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Conducir por la derecha -STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nombres de pueblos -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selección del estilo del nombre de las poblaciones +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nombres de municipios +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selección del estilo del nombre de los municipios ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Inglés @@ -939,11 +963,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalán STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autoguardado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selección del intervalo entre guardados automáticos del juego +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desactivado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleccione el idioma a emplear para la interfaz del juego @@ -955,8 +981,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resoluci STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Seleccione la resolución de pantalla a usar STR_GAME_OPTIONS_RESOLUTION_OTHER :Otras -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato de captura de pantalla -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Seleccione el formato de captura de pantalla a utilizar +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño de la interfaz +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Elige el tamaño de los elementos de la interfaz a usar + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Tamaño doble +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádruple STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar @@ -972,6 +1002,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccio STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} archivo{P "" s} corrupto{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre el conjunto de música base +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No se ha podido obtener una lista de resoluciones soportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}El modo de pantalla completa ha fallado # Custom currency window @@ -1050,15 +1081,16 @@ STR_TERRAIN_TYPE_VERY_FLAT :Muy llano STR_TERRAIN_TYPE_FLAT :Llano STR_TERRAIN_TYPE_HILLY :Accidentado STR_TERRAIN_TYPE_MOUNTAINOUS :Montañoso +STR_TERRAIN_TYPE_ALPINIST :Alpino STR_CITY_APPROVAL_PERMISSIVE :Permisiva STR_CITY_APPROVAL_TOLERANT :Tolerante STR_CITY_APPROVAL_HOSTILE :Hostil -STR_WARNING_NO_SUITABLE_AI :{WHITE}No se encontraron IAs apropiadas...{}Puedes descargar IAs a través del sistema de 'Contenido Online' +STR_WARNING_NO_SUITABLE_AI :{WHITE}No se encontraron IA apropiadas...{}Puedes descargar IA a través del sistema de 'Contenido Online' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Opciones avanzadas +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Configuración STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Patrón de filtrado: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir todos STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsar todos @@ -1071,11 +1103,12 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Opción de part STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Opción de empresa (se almacena en las partidas guardadas, afecta solamente a las nuevas partidas) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Opción de empresa (almacenada en la partida guardada, afecta solamente a la empresa actual) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mostrar: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoría: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Muestra solamente las opciones modificadas en la lista -STR_CONFIG_SETTING_RESTRICT_BASIC :Opciones básicas -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Opciones avanzadas -STR_CONFIG_SETTING_RESTRICT_ALL :Opciones de experto / todas las opciones +STR_CONFIG_SETTING_RESTRICT_BASIC :Opciones básicas (solo muestra los ajustes de configuración más importantes) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanzado (muestra la mayoría de las opciones) +STR_CONFIG_SETTING_RESTRICT_ALL :Experto (muestra todas las opciones, incluidas las más extrañas) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Opciones con un valor diferente al valor por defecto STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Opciones con un valor diferente a las opciones de partida nueva @@ -1086,6 +1119,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Opciones de jue STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Opciones de juego (se almacena en las partidas guardadas, afecta solamente a la partida actual) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Opciones de empresa (se almacena en las partidas guardadas, afecta solamente a partidas nuevas) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Opciones de empresa (se almacena en las partidas guardadas, afecta solamente a la compañía actual) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostrar todos los resultados por opción de configuración{}{SILVER}Categoría {BLACK}a {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar todos los resultados por opción de configuración{}{SILVER}Tipo {BLACK}a {WHITE}Todos los tipos de opción +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostrar todos los resultados por opción de configuración{}{SILVER}Categoría {BLACK}a {WHITE}{STRING} {BLACK}y {SILVER}Tipo {BLACK}a {WHITE}Todos los tipos de opción +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ninguno - STR_CONFIG_SETTING_OFF :No STR_CONFIG_SETTING_ON :Sí @@ -1110,7 +1147,7 @@ STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Porcentaje de i STR_CONFIG_SETTING_RUNNING_COSTS :Costes de operación: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Permite fijar el nivel de los costes de mantenimiento y operación de vehículos e infraestructuras STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidad de construcción: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la velocidad de las acciones de construcción para las IAs +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la velocidad de las acciones de construcción para las IA STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Averías de vehículos: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla la frecuencia con la que los vehículos que no hayan tenido un mantenimiento adecuado se rompen STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador por subsidio: {STRING} @@ -1118,22 +1155,23 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Permite fijar a STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costes de construcción: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fija el nivel de los costes de construcción y compra STR_CONFIG_SETTING_RECESSIONS :Recesiones: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si se activa, ocurrirán recesiones cada pocos años. Durante una recesión, toda la producción es significante menor (volverá a su nivel anterior una vez acabe la recesión) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si se activa, ocurrirán recesiones cada pocos años. Durante una recesión, toda la producción es significativamente menor (volverá a su nivel anterior una vez acabe la recesión) STR_CONFIG_SETTING_TRAIN_REVERSING :Prohibir cambio de dirección de trenes en estaciones: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si se activa, los trenes no se darán la vuelta en estaciones no finales en el caso de que haya un camino más cercano si se dan la vuelta STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa desastres que ocasionalmente pueden bloquear o destruir vehículos o infraestructuras -STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de los pueblos frente a reestructuraciones en su zona: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Permite elegir la medida en la que el ruido y el daño ambiental causado por las compañías afecta a su calificación local en los pueblos +STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de los municipios frente a reestructuraciones en su zona: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Permite elegir la medida en la que el ruido y el daño ambiental causado por las compañías afecta a su calificación local en los municipios -STR_CONFIG_SETTING_BUILDONSLOPES :Permitir la construcción en cuestas y orillas: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Si se habilita, las vías y estaciones pueden construirse sobre pendiente. Si se deshabilita, las vías solamente pueden construirse sobre pendientes que sigan la misma dirección -STR_CONFIG_SETTING_AUTOSLOPE :Permitir modificar terreno bajo carreteras, raíles, etc.: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima del mapa: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Establece la altura máxima permitida para las montañas en el mapa +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No se puede establecer la altura máxima del mapa en el valor indicado. Al menos una montaña ya es más alta +STR_CONFIG_SETTING_AUTOSLOPE :Permitir modificar terreno bajo edificios, raíles, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permitir modificar el terreno debajo de edificios y raíles sin eliminarlos STR_CONFIG_SETTING_CATCHMENT :Tamaño del área de captación realista: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite tener diferentes áreas de captación para distintos tipos de estaciones y aeropuertos -STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir eliminar más propiedades de pueblos: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hace que sea más fácil eliminar infraestructuras y edificios de pueblos +STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir eliminar más propiedades de los municipios: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hace que sea más fácil eliminar infraestructuras y edificios de los municipios STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud máxima de trenes: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Permite cambiar la longitud máxima de trenes STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} casilla{P 0 "" s} @@ -1144,24 +1182,20 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selecciona el m STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de aceleración para vehículos de carretera: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selecciona el modelo físico a emplear para la aceleración de vehículos de carretera. El modelo "original" penaliza las pendientes de forma idéntica para todos los vehículos. El modelo "realista" penaliza cuestas y curvas dependiendo de varias propiedades del vehículo, como su potencia, fuerza de tracción, etcétera. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Inclinación de cuestas para trenes: {STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Pendiente de las casillas con cuesta para los trenes. Los valores altos hacen que sea mas difícil subir las colinas +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Pendiente de las casillas con cuesta para los trenes. Los valores altos hacen que sea más difícil subir las colinas STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Inclinación de cuestas para vehículos de carretera: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pendiente de las casillas con cuesta para los vehículos de carretera. Los valores altos hacen que sea mas difícil subir las colinas +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pendiente de las casillas con cuesta para los vehículos de carretera. Los valores altos hacen que sea más difícil subir las colinas STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir a trenes y barcos realizar giros de 90 grados: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Los giros de 90 grados ocurren cuando una vía en sentido horizontal está seguida por una vía en sentido vertical, haciendo que el tren gire 90 grados al pasar de una a otra en lugar de los 45 grados habituales en otras combinaciones. Esto también se aplica al radio de giro de los barcos STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir unir estaciones no adyacentes: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite añadir partes a una estación sin tener que estar en contacto directamente con las partes existentes. Necesita pulsar Ctrl+Click al añadir las nuevas partes -STR_CONFIG_SETTING_IMPROVEDLOAD :Usar algoritmo mejorado de carga: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Si se activa, cuando haya múltiples vehículos en una estación se cargarán secuencialmente. Los vehículos solamente empezarán a cargar cuando haya suficiente carga esperando como para llenar por completo al vehículo anterior -STR_CONFIG_SETTING_GRADUAL_LOADING :Cargar vehículos gradualmente: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Carga los vehículos de forma gradual usando duraciones específicas de cada tipo de vehículo, en lugar de cargar todo a la vez en un tiempo fijo que depende solamente de la cantidad de carga a tomar STR_CONFIG_SETTING_INFLATION :Inflación: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activa la inflación económica, lo cual hace que los costes aumenten ligeramente más rápido que los beneficios -STR_CONFIG_SETTING_SELECTGOODS :Entregar mercancía a una estación sólo si hay demanda: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Solamente se lleva carga a las estaciones cuando un vehículo la haya solicitado. Esto evita malos rendimientos para las cargas que no tienen servicio cada una estación STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longitud máxima de puentes: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Máxima longitud permitida para puentes +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de puentes: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima permitida al construir puentes STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longitud máxima de túneles: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Máxima longitud permitida para túneles STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de construcción de industria primaria: {STRING} @@ -1171,8 +1205,8 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como las otras STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospección STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana alrededor de industrias: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Cantidad de espacio plano alrededor de las industrias. Esto permite que haya espacio libre alrededor de las industrias para construir -STR_CONFIG_SETTING_MULTIPINDTOWN :Construcción de más de una industria similar por pueblo: {STRING} -STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, no se permite más de una industria del mismo tipo por pueblo. Con esta opción, se permiten múltiples industrias del mismo tipo en el mismo pueblo +STR_CONFIG_SETTING_MULTIPINDTOWN :Construcción de más de una industria similar por municipio: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, no se permite más de una industria del mismo tipo por municipio. Con esta opción, se permiten múltiples industrias del mismo tipo en el mismo municipio STR_CONFIG_SETTING_SIGNALSIDE :Mostrar señales: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selecciona en qué lado de la vía se colocarán las señales STR_CONFIG_SETTING_SIGNALSIDE_LEFT :A la izquierda @@ -1183,12 +1217,10 @@ STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si se activa, l STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nuevas órdenes son 'sin parada' por defecto: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, un vehículo se detendrá en todas las estaciones por las que pase. Si se activa esta opción, pasará sin detenerse a través de todas las estaciones hasta llegar a su destino. Esta opción solamente cambia el comportamiento por defecto de las órdenes nuevas. Es posible especificar para cada orden el comportamiento que se desea STR_CONFIG_SETTING_STOP_LOCATION :Nuevos trenes paran por defecto en el {STRING} de la plataforma -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Permite seleccionar en que parte de la plataforma se detendrán los trenes por defecto. 'cerca del fin' significa cerca del punto de entrada, 'centro' significa en el punto medio de la estación y 'lejos del fin' significa el punto más lejano de la estación. Esta opción solamente cambia el comportamiento por defecto de las órdenes nuevas. Es posible especificar para cada orden el comportamiento que se desea -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :principio +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Permite seleccionar en qué parte de la plataforma se detendrán los trenes por defecto. 'extremo cercano' para parar cerca del punto de entrada, 'centro' para parar en el punto medio de la estación y 'extremo lejano' para parar lo más lejos posible del punto de entrada. Esta opción solamente cambia el comportamiento por defecto de las órdenes nuevas. Es posible especificar para cada orden el comportamiento que se desea +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :extremo cercano STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :centro -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :lejos del fin -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cola de vehículos de carretera (con efecto cuantificador): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Hace que los vehículos de carretera esperen en frente de las paradas ocupadas hasta que queden libres +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :extremo lejano STR_CONFIG_SETTING_AUTOSCROLL :Desplazar ventana mediante el cursor en los bordes: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Cuando esta opción está activa, las vistas empezarán a desplazarse cuando el ratón esté cerca del borde de la ventana STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desactivado @@ -1196,13 +1228,13 @@ STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Vista principal STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Vista principal STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Todas las vistas STR_CONFIG_SETTING_BRIBE :Permitir sobornos a la autoridad local: {STRING} -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite a las compañías intentar sobornar a las autoridades locales. Si el soborno es descubierto por un inspector, la compañía no podrá actuar en el pueblo durante seis meses +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite a las compañías intentar sobornar a las autoridades locales. Si el soborno es descubierto por un inspector, la compañía no podrá actuar en el municipio durante seis meses STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permitir comprar derechos de transporte exclusivos: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si una compañía compra derechos de transporte exclusivos en un pueblo, las estaciones de sus oponentes (pasajeros o carga) no recibirán nada para transportar durante un año +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si una compañía compra derechos de transporte exclusivos en un municipio, las estaciones de sus oponentes (pasajeros o carga) no recibirán nada para transportar durante un año STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permitir la construcción de nuevos edificios: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite a las compañías dar dinero a los pueblos para crear nuevas casas +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite a las compañías dar dinero a los municipios para crear nuevas casas STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitir pagar la reconstrucción de las carreteras locales: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite a las compañías dar dinero a los pueblos para que reconstruyan sus carreteras, saboteando los servicios de carretera en la zona +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite a las compañías dar dinero a los municipios para que reconstruyan sus carreteras, saboteando los servicios de carretera en la zona STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinero a otras empresas: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite la transferencia de dinero entre compañías en modo multijugador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular trenes pesados: {STRING} @@ -1215,14 +1247,10 @@ STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Fija la probabi STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducida STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite construir paradas sobre carreteras de pueblo: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de pueblos +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite construir paradas sobre carreteras de los municipios: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de municipios STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir pasar a través de las paradas de carretera de los competidores: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de otras compañías -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permitir construcción de estaciones contiguas : {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permite que diferentes estaciones estén en contacto -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Permitir múltiples NewGRFs de vehículos: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opción de compatibilidad para NewGRFs antiguos. No debe de desactivarse, ¡a menos que sepas exactamente lo que estás haciendo! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cambiar esta opción no es posible cuando ya existen vehículos STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mantenimiento de infraestructuras: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cuando se activa, las infraestructuras tienen costes de mantenimiento. Los costes de la infraestructura aumentan con el tamaño de la red, con lo cual afectan a compañías grandes en mayor grado que a las pequeñas @@ -1243,7 +1271,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Los vehículos STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Cuando se activa, todos los modelos de vehículos permanecen disponibles para siempre una vez han sido introducidos STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Renovación automática de vehículos cuando se vuelven viejos: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Cuando se activa, los vehículos que se acerquen al final de su vida útil serán reemplazados automáticamente cuando las condiciones de renovación se cumplan -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar automáticamente cuando el vehículo tenga {STRING} años como máximo +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenueva el vehículo {STRING} de su edad máxima STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Edad relativa con la cual un vehículo debería de ser considerado para ser autorenovado STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mes{P 0 "" es} antes STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mes{P 0 "" es} después @@ -1253,35 +1281,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duración de me STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duración de los mensajes de error mostrados en ventanas rojas. Algunos mensajes de error críticos no se cierran automáticamente, y deben de ser cerrados manualmente STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} segundo{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Mostrar mensajes de ayuda: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tiempo que hace falta mantener el ratón encima de un elemento de la interfaz para mostrar su mensaje de ayuda. De forma alternativa, se puede escoger mostrar estos mensajes al pulsar el botón derecho -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Mantener ratón durante {COMMA} segundo{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tiempo necesario con el ratón sobre un elemento de la interfaz para que esta muestre su mensaje de ayuda. De forma alternativa, se puede escoger mostrar estos mensajes al pulsar el botón derecho cuando el valor de esta opción ha sido establecido a 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Mantener ratón durante {COMMA} milisegundo{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Click derecho -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Muestra la población de un pueblo en su etiqueta: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Muestra el número de habitantes de los pueblos en su etiqueta sobre el mapa +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Muestra la población de un municipio en su etiqueta: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Muestra la población de los municipios en su etiqueta sobre el mapa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grosor de las líneas en los gráficos: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grosor de las líneas en los gráficos. Una línea fina es más precisa, una línea más gruesa es más fácil de distinguir +STR_CONFIG_SETTING_LANDSCAPE :Terreno: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Los terrenos definen escenarios con diferentes tipos de carga y requisitos de crecimiento de municipios. Es posible modificarlos empleando NewGRF y scripts de juego STR_CONFIG_SETTING_LAND_GENERATOR :Generador terreno: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :El generador original depende del tipo de gráficos base, y crea formas de terreno fijas. TerraGenesis es un generador basado en ruido Perlin que permite un mayor control de configuración STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo de terreno: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Sólo TerraGenesis) Colinas del terreno +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidad de industria: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Permite fijar el número de industrias que deberían de generarse, y el nivel que debería mantenerse durante el juego STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Máxima distancia de Refinerías de Petróleo con los bordes: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Las refinerías de petróleo solamente se construyen cerca del borde del mapa, el cual es costa para los mapas con borde de océano STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura línea nieve: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Aspereza del terreno (Sólo TerraGenesis) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Permite escoger la altura a la cual la nieve comienza en el clima subártico. La nieve también afecta a la generación de industrias y a los requisitos de crecimiento de municipios +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rugosidad del terreno: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Sólo TerraGenesis) Permite elegir la frecuencia de colinas: los terrenos más planos tienen un número menor de colinas, agrupadas. Los terrenos más accidentados tienen múltiples colinas, lo cual puede resultar repetitivo STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muy Suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Áspero STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muy Áspero +STR_CONFIG_SETTING_VARIETY :Variedad: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Sólo TerraGenesis) Permite controlar si el mapa contendrá zonas montañosas y planas. Dado que esto únicamente hace que el mapa sea más plano, otras opciones deberían fijarse a Montañoso +STR_CONFIG_SETTING_RIVER_AMOUNT :Cantidad de ríos: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Elegir el número de ríos a generar STR_CONFIG_SETTING_TREE_PLACER :Algoritmo de colocación de árboles: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Permite escoger la distribución de árboles en el mapa. 'Original' coloca los árboles distribuidos de forma uniforme, mientras que 'Mejorado' los planta en grupos STR_CONFIG_SETTING_TREE_PLACER_NONE :Ninguno STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Mejorado +STR_CONFIG_SETTING_ROAD_SIDE :Vehículos de carretera: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Elegir el lado de conducción STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotación de Mapa de altura: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :A la izquierda STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Sentido horario STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :El nivel de la altura del mapa plano tiene: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Habilitar la modificación del terreno en los bordes del mapa: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Si se deshabilita, los bordes del mapa siempre serán océano STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una o más casillas del borde norte no están vacías STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una o más casillas en uno de los bordes no son agua @@ -1292,7 +1334,7 @@ STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Dar servicio a STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Une la barra de terreno a la barra de construcción: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cuando se abre una barra de herramientas de construcción, se abre también la barra de terraformación STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color de terreno usado en el mapa: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color que usar para el terreno en el mapa +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color a usar para el terreno en el mapa STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde oscuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta @@ -1302,7 +1344,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplazamiento STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla la forma en la que la vista principal se mueve a una posición específica como resultado de hacer click en el mapa o al enviar la orden de moverse a un objeto determinado del mapa. Si se activa, la vista se mueve de forma suave. Si se desactiva, la vista se mueve directamente al destino STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas usando las herramientas de construcción: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Muestra distancias en número de casillas y las diferencias de altura al arrastrar durante operaciones de construcción -STR_CONFIG_SETTING_LIVERIES :Ver estaciones de la empresa: {STRING} +STR_CONFIG_SETTING_LIVERIES :Ver tipos específicos para cada vehículo: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controla el uso de esquemas de color específicos para vehículos (en oposición a los específicos para compañías) STR_CONFIG_SETTING_LIVERIES_NONE :Ninguno STR_CONFIG_SETTING_LIVERIES_OWN :Propia empresa @@ -1332,17 +1374,15 @@ 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_AUTOSAVE :Autoguardado: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona el intervalo entre guardados automáticos del juego + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Usar formato de fecha {STRING} para los nombres de partidas guardadas STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato de la fecha en el nombre de partidas guardadas STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :largo (31 Dic 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :corto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta por defecto a asumir para NewGRF que no especifiquen una paleta: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta a usar por defecto para NewGRFs que no especifican la paleta que necesitan -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automáticamente al comenzar un juego nuevo: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Si se activa, el juego se pausará automáticamente al comenzar nuevas partidas para permitir revisar el mapa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Al pausar el juego, permitir: {STRING} @@ -1351,7 +1391,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ninguna acción STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas las acciones salvo las de construcción STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas las acciones que no modifiquen el terreno STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas las acciones -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar lista avanzada de vehículos: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar grupos en la lista de vehículos: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activa el uso de listas de vehículos avanzadas para agrupar vehículos STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Permite escoger si se deben de mostrar indicadores de carga encima de vehículos que estén en estaciones @@ -1366,7 +1406,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de ferroca STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primero disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Más usado -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Ver rutas reservadas: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Ver rutas reservadas en las vías: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Da a las vías reservadas un color especial para asistir en problemas con señales de ruta STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantener activas las herramientas de construcción tras su uso: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantiene las herramientas de construcción de puentes, túneles, etcétera, abiertas después de su uso @@ -1388,13 +1428,13 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Reproducir efec STR_CONFIG_SETTING_SOUND_VEHICLE :Vehículos: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Reproducir efectos de sonido de vehículos STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiental: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproducir sonidos ambientales de terreno, industrias y pueblos +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproducir sonidos ambientales de terreno, industrias y municipios STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Deshabilitar construcción de infraestructuras cuando no haya vehículos apropiados disponibles: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Cuando se activa, solamente se pueden construir infraestructuras si hay vehículos disponibles para ellas, previniendo un gasto innecesario de tiempo y dinero STR_CONFIG_SETTING_MAX_TRAINS :Número máximo de trenes por empresa: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Número máximo de trenes que una compañía puede tener -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Número máximo de vehículos por empresa: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Número máximo de automóviles por empresa: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Número máximo de vehículos de carretera que una compañía puede tener STR_CONFIG_SETTING_MAX_AIRCRAFT :Número máximo de aeronaves por empresa: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Número máximo de aeronaves que una compañía puede tener @@ -1402,21 +1442,21 @@ STR_CONFIG_SETTING_MAX_SHIPS :Número máximo STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Número máximo de barcos que una compañía puede tener STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desactivar trenes para el ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activar esta opción deshabilita la construcción de trenes para IAs +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activar esta opción deshabilita la construcción de trenes para las IA STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desactivar vehículos de carretera para el ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activar esta opción deshabilita la construcción de vehículos de carretra para IAs +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activar esta opción deshabilita la construcción de vehículos de carretra para las IA STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desactivar aeroplanos para el ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activar esta opción deshabilita la construcción de aeronaves para IAs +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activar esta opción deshabilita la construcción de aeronaves para las IA STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactivar barcos para el ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activar esta opción deshabilita la construcción de barcos para IAs +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activar esta opción deshabilita la construcción de barcos para las IA STR_CONFIG_SETTING_AI_PROFILE :Perfil por defecto: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Permite decidir el perfil a emplear apra IAs aleatorias o para los valores iniciales al añadir una nueva IA o un script de juego +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Permite decidir el perfil a emplear para IA aleatorias o para los valores iniciales al añadir una nueva IA o un script de juego STR_CONFIG_SETTING_AI_PROFILE_EASY :Fácil STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Intermedio STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IAs en multijugador: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA en multijugador: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite a los jugadores controlados por el ordenador participar en partidas multijugador STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de que los scripts sean suspendidos: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de operaciones de computación que un script puede realizar por turno @@ -1425,7 +1465,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalo de ma STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Permite escoger si el mantenimiento de vehículos comenzará debido al tiempo pasado desde el último mantenimiento o por una reducción de la fiabilidad más allá de un porcentaje determinado STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo de mantenimiento por defecto para trenes: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Fija el intervalo de mantenimiento por defecto para vehículos de ferrocarril nuevos, que se empleará si no se define un intervalo de forma explícita para ese vehículo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dia{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}día{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deshabilitado STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalo de mantenimiento por defecto para vehículos de carretera: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Fija el intervalo de mantenimiento por defecto para vehículos de carretera nuevos, que se empleará si no se define un intervalo de forma explícita para ese vehículo @@ -1481,7 +1521,7 @@ STR_CONFIG_SETTING_STARTING_YEAR :Fecha de inicio STR_CONFIG_SETTING_SMOOTH_ECONOMY :Activar economía suave (cambios más pequeños): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Si se activa, se producirán cambios de producción en las industrias más frecuentemente y en pasos menores. Si se usa un NewGRF para proveer industrias, esta opción generalmente no tiene efecto STR_CONFIG_SETTING_ALLOW_SHARES :Permitir comprar acciones de otras empresas: {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Cuando se activa, permite comprar y vender acciones de empresas. Las acciones de una empresa solamente estarán disponibles cuando la empresa una edad determinada +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Cuando se activa, permite comprar y vender acciones de empresas. Las acciones de una empresa solamente estarán disponibles cuando la empresa cumpla una edad determinada STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentaje del beneficio total a pagar en transferencias: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentaje de los beneficios dados a los transportes intermedios en sistemas de transferencias, dando un mayor control sobre el beneficio de cada vehículo STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Al arrastrar, colocar señales cada: {STRING} @@ -1492,7 +1532,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Fija el comport STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Señales mecánicas por defecto antes de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Fija el año a partir del cual se usarán señales eléctricas. Antes de ese año se usarán señales mecánicas (tienen la misma funcionalidad pero distinto aspecto) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activar la GUI de señales: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Muestra una ventana para escoger los tipos de señales a construir, en lugar de no usar ventana y permitir cambiar de tipo de señal solamente mediante Ctrl+Click +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Muestra una ventana para escoger los tipos de señales a construir, en lugar de no usar ventana y únicamente permitir el cambio de tipo de señal por rotación mediante Ctrl+Click sobre las señales ya construidas STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipo de señal a construir por defecto: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipo de señal a usar por defecto STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Señales de bloque @@ -1504,21 +1544,21 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Solo señales d STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Solo señales de ruta STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todas -STR_CONFIG_SETTING_TOWN_LAYOUT :Patrón de carreteras para los nuevos pueblos: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Patrón de carreteras a usar para las redes de transporte de los pueblos +STR_CONFIG_SETTING_TOWN_LAYOUT :Patrón de carreteras para los nuevos municipios: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Patrón de carreteras a usar para las redes de transporte de los municipios STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Mejorado STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :rejilla 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :rejilla 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatorio -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir que los pueblos construyan carreteras: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite a los pueblos construir carreteras para crecer. Si se deshabilita, las autoridades del pueblo no podrán construir ninguna carretera +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir que los municipios construyan carreteras: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite a los municipios construir carreteras para crecer. Si se deshabilita, las autoridades municipales no podrán construir ninguna carretera STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a las ciudades construir pasos a nivel: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Permite a los pueblos construir pasos a nivel -STR_CONFIG_SETTING_NOISE_LEVEL :Permitir al pueblo controlar el nivel de ruido de los aeropuertos: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Con esta opción desactivada, solamente puede haber dos aeropuertos por pueblo. Si se activa, el número de aeropuertos en un pueblo depende del nivel de aceptación de ruido del mismo, el cual depende de la población, del tamaño de los aeropuertos y de la distancia a la que estén -STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar pueblos: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Permite a los jugadores crear nuevos pueblos durante la partida +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Permite a los municipios construir pasos a nivel +STR_CONFIG_SETTING_NOISE_LEVEL :Permitir al municipio controlar el nivel de ruido de los aeropuertos: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Con esta opción desactivada, solamente puede haber dos aeropuertos por municipio. Si se activa, el número de aeropuertos en el municipio depende del nivel de aceptación de ruido del mismo, el cual depende de la población, del tamaño de los aeropuertos y de la distancia a la que estén +STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar municipios: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Permite a los jugadores crear nuevos municipios durante la partida STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Prohibido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, patrón de carreteras personalizado @@ -1551,25 +1591,23 @@ STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x -STR_CONFIG_SETTING_TOWN_GROWTH :Velocidad crecimiento pueblo: {STRING} -STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidad de crecimiento de los pueblos +STR_CONFIG_SETTING_TOWN_GROWTH :Velocidad crecimiento población: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidad de crecimiento de los municipios STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ninguna STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lenta STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápida STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muy rápida -STR_CONFIG_SETTING_LARGER_TOWNS :Proporción de pueblos que se convertirá en ciudades: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS :Proporción de municipios que se convertirán en ciudades: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Número de pueblos que se convertirán en ciudades. Las ciudades comienzan siendo más grandes y crecen más rápido STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ninguna STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial tamaño de ciudad: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamaño medio de las ciudades en relación a los pueblos normales al comienzo de la partida -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Quitar absurdos de la carretera durante su construcción: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Elimina carreteras sin salida durante la reconstrucción de carreteras de los pueblos -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualizar el grafo de distribución cada {STRING} día{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualizar el grafo de distribución cada {STRING}{NBSP}día{P 0:2 "" s} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Periodo de tiempo entre cálculos del grafo de distribución consecutivos. Esta opción se refiere a los cálculos para cada uno de los componentes del grafo, por lo cual fijar un valor no quiere decir que el grafo completo se actualizará tras ese número de días. Cuanto menor sea, mayor tiempo de CPU será necesario para calcular el grafo de distribución. Cuanto mayor sea, más tardará el grafo de distribución en adaptarse a nuevas rutas -STR_CONFIG_SETTING_LINKGRAPH_TIME :Usar {STRING} día{P 0:2 "" s} para el cálculo del grafo de distribución +STR_CONFIG_SETTING_LINKGRAPH_TIME :Usar {STRING}{NBSP}día{P 0:2 "" s} para el cálculo del grafo de distribución STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tiempo a emplear en el cálculo de cada uno de los componentes del grafo de distribución. Cuanto menor sea este valor, más probable es que se produzca ralentización en el juego. Cuanto mayor sea, más tiempo tardará la distribución en actualizarse cuando se producen cambios en las rutas STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrico @@ -1579,9 +1617,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :En una distribu STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribución para el correo: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :En una distribución simétrica, se envía la misma cantidad de carga de la estación A a la B que de B a A. En una distribución asimétrica se pueden enviar cantidades arbitrarias de carga en ambas direcciones. Manual significa que no se realiza una distribución automática para el correo STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribución para la clase de carga BLINDADA: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La clase de carga BLINDADA contiene los objetos de valor del clima templado, los diamantes del clima subtropical o el oro del clima subártico. Los NewGRFs pueden modificar las cargas BLINDADAS presentes en una partida. En una distribución simétrica, se envía la misma cantidad de carga de la estación A a la B que de B a A. En una distribución asimétrica se pueden enviar cantidades arbitrarias de carga en ambas direcciones. Manual significa que no se realiza una distribución automática para esta carga. Se recomienda fijar esta distribución a asimétrica o manual al jugar en subártico o subtropical. En el clima templado es posible escoger simétrica ya que los bancos pueden enviar de vuelta objetos de valor +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La clase de carga BLINDADA contiene objetos de valor en el clima templado, diamantes en el clima subtropical y oro en el clima subártico. Los NewGRFs pueden modificar esto. En una distribución "simétrica", se envía la misma cantidad de carga de la estación A a la B que de B a A. En una distribución "asimétrica" se pueden enviar cantidades arbitrarias de carga en ambas direcciones. "Manual" significa que no se realiza una distribución automática para esta carga. Se recomienda fijar esta distribución en "asimétrica" o en "manual" al jugar en subártico, y es que los bancos no enviarán oro de vuelta a sus minas de procedencia. En los climas templado y subtropical es factible escoger "simétrica" ya que los bancos pueden enviar de vuelta objetos de valor al banco origen de los mismos. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribución para otras clases de carga: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :La clase de carga BLINDADA contiene los objetos de valor del clima templado, los diamantes del clima subtropical o el oro del clima subártico. Los NewGRFs pueden modificar las cargas BLINDADAS presentes en una partida. En una distribución simétrica, se envía la misma cantidad de carga de la estación A a la B que de B a A. En una distribución asimétrica se pueden enviar cantidades arbitrarias de carga en ambas direcciones. Manual significa que no se realiza una distribución automática para esta carga. Se recomienda fijar esta distribución a asimétrica o manual al jugar en subártico o subtropical. En el clima templado es posible escoger simétrica ya que los bancos pueden enviar de vuelta objetos de valor +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimétrico" significa que se pueden mover cantidades arbitrarias de carga en ambas direcciones. "Manual" significa que no habrá distribución automática para estos tipos de carga. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisión de la distribución: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Este valor determina el tiempo de CPU empleado en calcular el grafo de distribución. Si es demasiado elevado puede producir ralentización en el juego. Si es demasiado bajo la distribución puede ser poco precisa, causando que ocasionalmente se produzcan errores en los lugares a los que va la carga STR_CONFIG_SETTING_DEMAND_DISTANCE :Efecto de la distancia en la demanda: {STRING} @@ -1604,50 +1642,52 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (cv) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unidades de peso: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Cada vez que se muestren pesos en la interfaz de usuario, se emplearán estas unidades +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Cada vez que se muestre un peso en la interfaz de usuario, se mostrará en su unidad preestablecida STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t/tonelada) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrico (t/tonelada) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unidades de volumen: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Cada vez que se muestren volúmenes en la interfaz de usuario, se emplearán estas unidades +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Cada vez que se muestre un volumen en la interfaz de usuario, se mostrará en su unidad preestablecida STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esfuerzo de tracción: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Cada vez que se muestre esfuerzo de tracción en la interfaz de usuario, se emplearán estas unidades +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Cada vez que se muestre un esfuerzo de tracción (también conocido como fuerza de tracción) en la interfaz de usuario, se mostrará en su unidad preestablecida STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kp) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unidades de altura: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Cada vez que se muestren alturas en el interfaz de usuario, se emplearán estas medidas +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Cada vez que se muestre una altura en la interfaz de usuario, se mostrará en su unidad preestablecida STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (pies) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Interfaz STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localización -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construcción -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos -STR_CONFIG_SETTING_STATIONS :{ORANGE}Estaciones -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economía -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Distribución de Carga -STR_CONFIG_SETTING_AI :{ORANGE}Competidores -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opciones de visualización -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacción +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de sonido -STR_CONFIG_SETTING_NEWS :{ORANGE}Noticias y mensajes -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Señales -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Manejo de carga -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadores de la CPU (IAs) -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Renovación automática -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servicio +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaz +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Ventanas de visualización +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcción +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Noticias / Consejos +STR_CONFIG_SETTING_COMPANY :{ORANGE}Empresa +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidad +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Leyes físicas STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Encaminamiento -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenes -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Pueblos -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitaciones +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Accidentes +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generación de mundo +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Municipios +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribución de carga +STR_CONFIG_SETTING_AI :{ORANGE}Competidores +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadores de la CPU (IA) STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1696,7 +1736,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Multijug STR_INTRO_GAME_OPTIONS :{BLACK}Opciones de Juego STR_INTRO_HIGHSCORE :{BLACK}Tabla de Puntuaciones -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Opciones Avanzadas +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configuración STR_INTRO_NEWGRF_SETTINGS :{BLACK}Configuración NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Contenido Online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Configuración de Scripts @@ -1716,13 +1756,13 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Elegir e STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Muestra las opciones del juego STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostrar tabla de puntuaciones -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostrar las opciones avanzadas +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostrar configuración STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Muestra ajustes de NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprobar si hay nuevos contenidos actualizados para descargar STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostrar configuración de scripts de IA y Juego STR_INTRO_TOOLTIP_QUIT :{BLACK}Salir de 'OpenTTD' -STR_INTRO_TRANSLATION :{BLACK}A esta traducción le faltan {NUM} cadena{P "" s}. Considera ayudar a mejorar OpenTTD convirtiéndote en traductor. Consulta readme.txt para mas detalles. +STR_INTRO_TRANSLATION :{BLACK}A esta traducción le faltan {NUM} cadena{P "" s}. Considera ayudar a mejorar OpenTTD convirtiéndote en traductor. Consulta readme.txt para más detalles. # Quit window STR_QUIT_CAPTION :{WHITE}Salir @@ -1756,6 +1796,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jugando STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldózer mágico (elimina industrias, objetos inamovibles): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Los túneles pueden cruzarse: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jets se estrellan menos en aeropuertos pequeños: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edita la altura máxima del mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edita la altura máxima de las montañas en el mapa STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Terreno templado STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Terreno subártico STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Terreno subtropical @@ -1804,6 +1846,7 @@ STR_LIVERY_FREIGHT_TRAM :Tranvía de Car STR_FACE_CAPTION :{WHITE}Selección de cara STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancelar selección de nueva cara STR_FACE_OK_TOOLTIP :{BLACK}Aceptar selección de nueva cara +STR_FACE_RANDOM :{BLACK}Aleatorio STR_FACE_MALE_BUTTON :{BLACK}Hombre STR_FACE_MALE_TOOLTIP :{BLACK}Selecciona cara masculina @@ -1924,13 +1967,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protege STR_NETWORK_START_SERVER_UNADVERTISED :No STR_NETWORK_START_SERVER_ADVERTISED :Sí STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} cliente{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Máximo de clientes: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Número máximo de clientes: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Seleccione un número máximo de clientes. No es necesario ocupar todos los espacios STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} empresa{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Número máximo de empresas: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limitar el servidor a un cierto número de empresas STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} espectador{P "" es} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Espectadores máximos: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Número máximo de espectadores: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limitar el servidor a un cierto número de espectadores STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Idioma hablado: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Otros jugadores sabrán cual es el idioma hablado en este servidor @@ -2043,6 +2086,7 @@ STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce la cantidad de dinero que deseas dar +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Espectador # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}No guardar la contraseña introducida @@ -2194,7 +2238,7 @@ STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ¡No STR_CONTENT_TYPE_BASE_GRAPHICS :{G=m}Gráficos base STR_CONTENT_TYPE_NEWGRF :{G=m}NewGRF STR_CONTENT_TYPE_AI :{G=f}IA -STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Librería de IAs +STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Librería de IA STR_CONTENT_TYPE_SCENARIO :{G=m}Escenario STR_CONTENT_TYPE_HEIGHTMAP :{G=m}Mapa de alturas STR_CONTENT_TYPE_BASE_SOUNDS :{G=m}Sonidos base @@ -2205,7 +2249,7 @@ STR_CONTENT_TYPE_GS_LIBRARY :Librería SJ # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Descargando contenido... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Solicitando ficheros... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Descargando {STRING} ({NUM} of {NUM}) +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Descargando {STRING} ({NUM} de {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Descarga completada STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} de {BYTES} descargadas ({NUM} %) @@ -2217,7 +2261,7 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... no s STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No ha sido posible descomprimir el fichero descargado STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gráficos no encontrados -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD necesita gráficos para funcionar pero no se pudo encontrar ninguno. ¿Desea permitir que OpenTTD descargue e instale dichos gráficos?. +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD necesita gráficos para funcionar pero no se pudo encontrar ninguno. ¿Desea permitir que OpenTTD descargue e instale dichos gráficos? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sí, descargar los gráficos STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, salir de OpenTTD @@ -2272,7 +2316,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito de trenes (para comprar y dar servicio a trenes). Shift permite mostrar una estimación del precio STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convertir ferrocarril a punto de ruta. Ctrl activa la unión de puntos de ruta. Shift permite mostrar una estimación del precio STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estación de ferrocarril. Ctrl activa la unión de estaciones. Shift permite mostrar una estimación del precio -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir señales de ferrocarril. Ctrl cambia entre señales mecánicas y eléctricas{}Arrastrar construye señales en el trozo de ferrocarril recorrido. Arrastrar+Ctrl construye señales hasta el próximo cruce{}Ctrl+Click no abre la ventana de selección de señales. Shift permite mostrar una estimación del precio +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir señales de ferrocarril. Ctrl cambia entre señales mecánicas y eléctricas{}Arrastrar construye señales a lo largo del tramo recto de ferrocarril seleccionado. Ctrl construye señales hasta el siguiente cruce o señal{}Ctrl+Click cambia a la ventana de selección de señales. Shift cambia entre construir/mostrar el precio estimado STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir puente de ferrocarril. Shift permite mostrar una estimación del precio STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviario. Shift permite mostrar una estimación del precio STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Cambiar entre construir/retirar ferrocarriles, señales, estaciones y puntos de ruta de ferrocarril. Mantener pulsado Ctrl retirará también el ferrocarril al retirar estaciones y puntos de ruta @@ -2445,7 +2489,7 @@ STR_OBJECT_CLASS_TRNS :Transmisor # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Árboles -STR_PLANT_TREE_TOOLTIP :{BLACK}Seleccione el tipo de árboles a plantar. Si la casilla ya tiene un árbol, se añadirán mas árboles de distintos tipos sin importar el tipo elegido +STR_PLANT_TREE_TOOLTIP :{BLACK}Seleccione el tipo de árboles a plantar. Si la casilla ya tiene un árbol, se añadirán más árboles de distintos tipos sin importar el tipo elegido STR_TREES_RANDOM_TYPE :{BLACK}Tipo aleatorio STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Colocar distintos árboles al azar. Shift permite mostrar una estimación del precio STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Árboles al azar @@ -2466,31 +2510,31 @@ STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reinicia STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}¿Está seguro de querer eliminar todas las propiedades de empresas? # Town generation window (SE) -STR_FOUND_TOWN_CAPTION :{WHITE}Creación de Pueblos -STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nuevo Pueblo -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nuevo pueblo. Shift+Click muestra una estimación del precio -STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Pueblo al Azar -STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar pueblo en lugar aleatorio -STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Varios pueblos al azar -STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cubre el mapa con pueblos colocados al azar - -STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nombre del pueblo: -STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introducir nombre de pueblo -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Click para introducir nombre de pueblo +STR_FOUND_TOWN_CAPTION :{WHITE}Creación de Municipios +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nuevo Municipio +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nuevo municipio. Shift+Click muestra una estimación del precio +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Municipio al Azar +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar municipio en lugar aleatorio +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Varios municipios al azar +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cubre el mapa con municipios colocados al azar + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nombre del municipio: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introducir nombre de municipio +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Click para introducir nombre del municipio STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nombre aleatorio STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generar nuevo nombre -STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Tamaño pueblo: +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Tamaño municipio: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Pequeña STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mediana STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grande STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatorio -STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Seleccione el tamaño del pueblo +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Seleccione el tamaño del municipio STR_FOUND_TOWN_CITY :{BLACK}Ciudad STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los pueblos{}Dependiendo de los ajustes, son mayores al ser fundadas STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Patrón de carretera: -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Seleccionar patrón de carreteras para este pueblo +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Seleccionar patrón de carreteras para este municipio STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Mejorado STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Rejilla de 2x2 @@ -2547,6 +2591,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceptada: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límite de velocidad del ferrocarril: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Límite de velocidad de carretera: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocas @@ -2643,7 +2688,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-2013 El equipo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 El equipo OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego @@ -2662,6 +2707,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Guardar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Guarda el juego actual, usando el nombre seleccionado STR_SAVELOAD_LOAD_BUTTON :{BLACK}Cargar STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Cargar la partida seleccionada +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Cargar el mapa de alturas seleccionado STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalles de la Partida STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hay información disponible STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2672,18 +2718,17 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Introduc # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generación de mundo STR_MAPGEN_MAPSIZE :{BLACK}Tamaño del mapa: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Permite seleccionar el tamaño del mapa en casillas. El numero de casillas disponible en el mapa será ligeramente inferior +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Permite seleccionar el tamaño del mapa en casillas. El número de casillas disponible en el mapa será ligeramente inferior STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de pueblos: +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de municipios: STR_MAPGEN_DATE :{BLACK}Fecha: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de industrias: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altura máxima del mapa: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumentar, una unidad, la altura máxima de las montañas del mapa +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Disminuir, una unidad, la altura máxima de las montañas del mapa STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altura línea nieve: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mover la línea de nieve hacia arriba STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mover la línea de nieve hacia abajo -STR_MAPGEN_RANDOM_SEED :{BLACK}Semilla Aleatoria: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Pulsa para introducir la semilla aleatoria -STR_MAPGEN_RANDOM :{BLACK}Aleatorio -STR_MAPGEN_RANDOM_HELP :{BLACK}Cambiar la semilla aleatoria usada por el Generador de Terrenos STR_MAPGEN_LAND_GENERATOR :{BLACK}Generador terreno: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritmo árboles: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno @@ -2710,8 +2755,8 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nombre d STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaño: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Introducir una semilla aleatoria -STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambiar altura de la línea de nieve +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Cambiar la altura máxima del mapa +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambiar la altura de la línea de nieve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Cambiar año de inicio # SE Map generation @@ -2723,7 +2768,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Altura t STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Reduce la altura de la tierra llana STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Aumenta la altura de la tierra llana -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Cambia la altura de la tierra llana +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Cambiar la altura de la tierra llana # Map generation progress STR_GENERATION_WORLD :{WHITE}Generando Mundo... @@ -2765,6 +2810,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mover Ar STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado arriba en la lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mover Abajo STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado abajo en la lista +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualiza +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Utiliza las versiones más nuevas de los archivos NewGRF que dispongan de diversas versiones instaladas STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Una lista de los ficheros NewGRF instalados STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establecer parámetros @@ -2779,7 +2826,7 @@ STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Comproba STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Fichero: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versión: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. versión compatible: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Mín. versión compatible: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING} @@ -2789,6 +2836,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Fichero no STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible con esta versión de OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Guardar perfil +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de perfiles disponibles; selecciona uno para copiar el nombre del perfil abajo +STR_SAVE_PRESET_TITLE :{BLACK}Introduce un nombre para el perfil +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nombre actualmente seleccionado del perfil a guardar +STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}No modificar el perfil +STR_SAVE_PRESET_SAVE :{BLACK}Guardar +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Guardar el perfil con el nombre seleccionado + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Cambiar parámetros NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Cerrar @@ -2812,14 +2869,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámet # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinear sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Siguiente sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir al sprite siguiente, ignorando pseudosprites, sprites recoloreados y sprites de fuente +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir al siguiente sprite (ignorando pseudosprites, sprites recoloreados y sprites de fuente) y pasar del último al primer sprite STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ir al sprite indicado. Si el sprite no es un sprite normal, ir al siguiente sprite normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite anterior -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Saltar al sprite anterior, ignorando pseudosprites, sprites recoloreados y sprites de fuente +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Saltar al sprite anterior (ignorando pseudosprites, sprites recoloreados y sprites de fuente) y pasar del primer al último sprite STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representación del sprite seleccionado. Su alineamiento es ignorado al dibujarlo STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover el sprite, cambiando los ajustes X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Ajuste X: {NUM}, Ajuste Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reiniciar coordenadas relativas +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reinicia las coordenadas relativas actuales +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Coordenada X: {NUM}, Coordenada Y: {NUM} (Absoluta) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Coordenada X: {NUM}, Coordenada Y: {NUM} (Relativa) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Seleccionar sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Seleccionar un sprite de cualquier parte de la pantalla @@ -2846,7 +2906,7 @@ STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propiedad de Ac STR_NEWGRF_ERROR_INVALID_ID :Intento de usar una ID inválida (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contiene un sprite corrupto. Todos los sprites corruptos serán mostrados como un interrogante rojo (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contiene múltiples entradas de Acción 8 (sprite {3:NUM}) -STR_NEWGRF_ERROR_READ_BOUNDS :Lectura mas allá del fin de un pseudo-sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Lectura más allá del fin de un pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Al conjunto de gráficos base actualmente en uso le faltan algunos sprites.{}El conjunto de gráficos base debe ser actualizado STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Al conjunto de gráficos base actualmente en uso le faltan algunos sprites.{}El conjunto de gráficos base debe ser actualizado.{}Dado que estás jugando una {YELLOW}versión de desarrollo de OpenTTD{WHITE}, es posible que también necesites una {YELLOW}versión de desarrollo del conjunto de gráficos base{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF solicitados no disponibles (sprite {3:NUM}) @@ -2876,6 +2936,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Ficheros q STR_NEWGRF_BROKEN :{WHITE}Es probable que el funcionamiento del NewGRF '{0:STRING}' cause desincronizaciones o fallos STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ha cambiado el estado 'vagón con potencia' para '{1:ENGINE}' fuera de un depósito STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ha cambiado la longitud del vehículo para '{1:ENGINE}' cuando no está dentro de un depósito +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ha cambiado la capacidad del vehículo para '{1:ENGINE}' fuera de un depósito o mientras no se estaba remodelando STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud incorrecta. Puede ser debido a problemas con los NewGRF. El juego puede fallar STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' da información incorrecta @@ -2890,9 +2951,12 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Comprobando NewGRFs -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Comprobando NewGRFs. Dependiendo de la cantidad ésto puede llevar un tiempo... +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Comprobando NewGRFs. Dependiendo de la cantidad, esto puede llevar un tiempo... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} comprobados de un total aproximado de {NUM} NewGRF{P "" s} STR_NEWGRF_SCAN_ARCHIVES :Comprobando archivos @@ -2909,10 +2973,10 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir al an STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introduce un nombre para el cartel # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Pueblos +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Municipios STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ninguna - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nombres de pueblo - click sobre un nombre para centrar la vista principal en el pueblo. Ctrl+Click abre un punto de vista en dicha posición +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nombres de los municipios - click sobre un nombre para centrar la vista principal en él. Ctrl+Click abre una ventana de visualización en dicha posición STR_TOWN_POPULATION :{BLACK}Población mundial: {COMMA} # Town view window @@ -2921,34 +2985,34 @@ STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} ( STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasajeros último mes: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correo último mes: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para crecimiento del pueblo: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para crecimiento del municipio: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requeridos STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerido en invierno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregado STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (todavía requerido) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregado) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}El pueblo crece cada {ORANGE}{COMMA}{BLACK} día{P "" s} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}El pueblo crece cada {ORANGE}{COMMA}{BLACK} días{P "" s} (edificios fundados) -STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}El pueblo {RED}no{BLACK} está creciendo -STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Nivel de ruido en pueblo: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrar vista sobre el pueblo. Ctrl+Click abre un punto de vista en dicha posición +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}El municipio crece cada {ORANGE}{COMMA}{BLACK}{NBSP}día{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}El municipio crece cada {ORANGE}{COMMA}{BLACK}{NBSP}días{P "" s} (edificios fundados) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}El municipio {RED}no{BLACK} está creciendo +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Nivel de ruido en municipio: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrar vista sobre el municipio. Ctrl+Click abre un punto de vista en dicha posición STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Autoridad local STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Mostrar información sobre autoridades locales -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Cambiar nombre del pueblo +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Cambiar nombre del municipio STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Aumentar -STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Aumentar tamaño del pueblo +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Aumentar la población del municipio STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Borrar -STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Borrar este pueblo completamente +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Borrar este municipio completamente -STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renombrar pueblo +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renombrar Municipio # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} autoridad local STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Calificación de empresas de transporte: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Acciones disponibles: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acciones posibles en este pueblo - Click sobre cada línea para obtener más detalles +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acciones posibles en este municipio - Click sobre cada línea para obtener más detalles STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Hágalo STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Hacer lo que se ha marcado en la opción anterior @@ -2966,8 +3030,8 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar una gran campaña publicitaria local para atraer más pasajeros y carga a sus servicios de transporte.{}Coste: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Pagar la reconstrucción de las carreteras locales. Provoca considerables complicaciones del tráfico durante 6 meses.{}Coste: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construye una estatua en honor a su empresa.{}Coste: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Pagar la construcción de nuevos edificios comerciales en el pueblo.{}Coste: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Comprar en exclusiva los derechos de transporte en este pueblo durante un año. Las autoridades solo permitirán el uso de las estaciones de su empresa.{}Coste: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Pagar la construcción de nuevos edificios comerciales en el municipio.{}Coste: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Comprar en exclusiva los derechos de transporte en este municipio durante un año. Las autoridades solo permitirán el uso de las estaciones de su empresa.{}Coste: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Sobornar a las autoridades locales para aumentar su calificación, con el riesgo de una severa penalización si es descubierto.{}Coste: {CURRENCY_LONG} # Goal window @@ -2980,7 +3044,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- No ap STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Metas de la compañía: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click en una meta para centrar la vista principal en la casilla, industria o pueblo. Ctrl+Click abre una nueva vista en esa localización +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click en una meta para centrar la vista principal en la casilla, industria o municipio. Ctrl+Click abre una nueva vista en esa localización # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pregunta @@ -2988,7 +3052,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Información STR_GOAL_QUESTION_CAPTION_WARNING :Advertencia STR_GOAL_QUESTION_CAPTION_ERROR :Error -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar STR_GOAL_QUESTION_BUTTON_OK :Ok STR_GOAL_QUESTION_BUTTON_NO :No @@ -3007,6 +3071,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Reiniciar STR_GOAL_QUESTION_BUTTON_POSTPONE :Posponer STR_GOAL_QUESTION_BUTTON_SURRENDER :Rendirse STR_GOAL_QUESTION_BUTTON_CLOSE :Cerrar +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvenciones @@ -3015,7 +3080,7 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}- Ninguno - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Líneas ya subvencionadas: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} desde {STRING} a {STRING}{YELLOW} ({COMPANY}{YELLOW}, hasta {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click sobre el servicio para centrar la vista principal en esta industria/pueblo. Ctrl+Click abre un punto de vista en dicha posición +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click sobre el servicio para centrar la vista principal en esta industria/municipio. Ctrl+Click abre un punto de vista en dicha posición # Story book window STR_STORY_BOOK_CAPTION :{WHITE}Historial de {COMPANY} @@ -3027,6 +3092,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir a la página anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Siguiente STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir a la siguiente página +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referencia de metas inválida # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nombres de estación - Click sobre un nombre para centrar la vista principal en la estación. Ctrl+Click abre un punto de vista en dicha posición @@ -3041,7 +3107,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ningún # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Esperando: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} en ruta desde {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para cargar) @@ -3050,8 +3115,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 pueblo. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró derechos de transporte exclusivo en este pueblo. +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_RATINGS_BUTTON :{BLACK}Calificación STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ver calificación de la estación @@ -3115,7 +3180,7 @@ STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Cambiar STR_EDIT_WAYPOINT_NAME :{WHITE}Editar nombre del punto de ruta # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finanzas {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}Finanzas de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Gastos/Ingresos STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcción @@ -3136,7 +3201,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Saldo en Banco STR_FINANCES_LOAN_TITLE :{WHITE}Préstamo -STR_FINANCES_MAX_LOAN :{WHITE}Préstamo Máx: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Préstamo Máximo: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pedir Préstamo {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Incrementar préstamo. Ctrl+Click solicita todo el préstamo posible @@ -3285,12 +3350,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehículos de c STR_GROUP_DEFAULT_SHIPS :Barcos sin agrupar STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sin agrupar -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Click en un grupo para ver la lista de sus vehículos +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Click en un grupo para ver la lista de sus vehículos. Es posible arrastrar grupos para modificar su jerarquía. STR_GROUP_CREATE_TOOLTIP :{BLACK}Click para crear un grupo STR_GROUP_DELETE_TOOLTIP :{BLACK}Borrar el grupo seleccionado STR_GROUP_RENAME_TOOLTIP :{BLACK}Renombrar el grupo seleccionado STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click para proteger este grupo del auto reemplazado global +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Borrar Grupo +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}¿Está seguro de querer borrar este grupo y todos sus subgrupos? + STR_GROUP_ADD_SHARED_VEHICLE :Añadir vehículos con órdenes compartidas STR_GROUP_REMOVE_ALL_VEHICLES :Quitar todos los vehículos @@ -3328,10 +3396,10 @@ STR_PURCHASE_INFO_ALL_BUT :Todo excepto {C STR_PURCHASE_INFO_MAX_TE :{BLACK}F.T máxima: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} casillas -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de raíl - Click en vehículo para información -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de carretera - Click en vehículo para información -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selección de barcos - Click en barco para información -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de selección de aeronaves- Click en aeronave para información +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de los vehículos de raíl - 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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selección de barcos - Click en el barco para más información - Ctrl+Click para mostrar/ocultar el tipo del barco +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de selección de aeronaves - Click en la aeronave para más información - Ctrl+Click para mostrar/ocultar el tipo de la aeronave STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar vehículo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar vehículo @@ -3353,6 +3421,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renombra STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renombrar tipo de barco STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renombrar tipo de aeronave +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar el tipo del tren +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar el tipo del vehículo de carretera +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar el tipo del barco +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alternar mostrar/ocultar el tipo de la aeronave + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renombrar tipo de vehículo de raíl STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renombrar tipo de vehículo de carretera STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renombrar tipo de barco @@ -3406,10 +3489,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonar v STR_DEPOT_CLONE_SHIP :{BLACK}Clonar barco STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar aeronave -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esto comprará una copia del tren incluyendo sus vagones. Pulse este botón y después en el tren dentro o fuera del depósito. Ctrl+Click compartirá las ordenes. Shift+Click muestra una estimación del precio sin realizar la compra -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esto comprará una copia del vehículo de carretera. Pulse este botón y después en el vehículo dentro o fuera del depósito. Ctrl+Click compartirá las ordenes. Shift+Click muestra una estimación del precio sin realizar la compra -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esto comprará una copia del barco. Pulse este botón y después el barco dentro o fuera del muelle. Ctrl+Click compartirá las ordenes. Shift+Click muestra una estimación del precio sin realizar la compra -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esto comprará una copia de la aeronave. Pulse este botón y después en la aeronave dentro o fuera del hangar. Ctrl+Click compartirá las ordenes. Shift+Click muestra una estimación del precio sin realizar la compra +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esto comprará una copia del tren incluyendo todos sus vagones. Pulse este botón y después en el tren dentro o fuera del depósito. Ctrl+Click compartirá las órdenes. Shift+Click muestra el precio estimado sin realizar la compra +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esto comprará una copia del vehículo de carretera. Pulse este botón y después en el vehículo dentro o fuera del depósito. Ctrl+Click compartirá las órdenes. Shift+Click muestra una estimación del precio sin realizar la compra +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esto comprará una copia del barco. Pulse este botón y después el barco dentro o fuera del muelle. Ctrl+Click compartirá las órdenes. Shift+Click muestra una estimación del precio sin realizar la compra +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esto comprará una copia de la aeronave. Pulse este botón y después en la aeronave dentro o fuera del hangar. Ctrl+Click compartirá las órdenes. Shift+Click muestra una estimación del precio sin realizar la compra STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar vista en posición del depósito de trenes. Ctrl+Click abre un punto de vista en dicha posición STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar vista en posición del depósito de vehículos. Ctrl+Click abre un punto de vista en dicha posición @@ -3445,10 +3528,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotora STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Coste: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER}{}Coste Operativo: {CURRENCY_LONG}/año{}Capacidad: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Coste: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER} F.T. Máxima: {6:FORCE}{}Coste de operación: {4:CURRENCY_LONG}/año{}Capacidad: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar {STRING} - {STRING} @@ -3457,6 +3540,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vehículo de ca STR_REPLACE_VEHICLE_SHIP :Barco STR_REPLACE_VEHICLE_AIRCRAFT :Aeronave +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehículos en uso +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Columna con los vehículos que ya posees +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehículos disponibles +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Columna con los vehículos disponibles para sustitución + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Seleccione tipo de vehículo a reemplazar STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Seleccione nuevo tipo de vehículo a usar en vez del vehículo seleccionado a la izquierda @@ -3566,9 +3654,9 @@ STR_VEHICLE_INFO_AGE :{COMMA} año{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} año{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidad Max.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Max.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Max.: {LTBLUE}{VELOCITY} {BLACK}F.T. Max.: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Máx.: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}F.T. Máx.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Beneficios este año: {LTBLUE}{CURRENCY_LONG} (último año: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidad: {LTBLUE}{COMMA}% {BLACK}Averías desde el último mantenimiento: {LTBLUE}{COMMA} @@ -3581,7 +3669,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de Transferencia: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}días{BLACK} Último mantenimiento: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}{NBSP}días{BLACK} Último mantenimiento: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}%{BLACK} Último mantenimiento: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Incrementar intervalo de mantenimiento en 10. Ctrl+Click incrementa el intervalo de mantenimiento en 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Reducir intervalo de mantenimiento en 10. Ctrl+Click reduce el intervalo de mantenimiento en 5 @@ -3679,8 +3767,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambiar STR_ORDER_REFIT :{BLACK}Reformar STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecciona el tipo de carga a reformar en esta orden. Ctrl+Click para eliminar la orden de reforma -STR_ORDER_REFIT_AUTO :{BLACK}Auto-reforma -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Seleccionar el tipo de carga con el que emplear auto-reforma para esta orden. Ctrl+Click elimina la orden de reforma. La auto-reforma solamente puede llevarse a cabo si el vehículo lo permite +STR_ORDER_REFIT_AUTO :{BLACK}Reforma en la estación +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Seleccionar el tipo de carga a la que reformar en esta orden. Ctrl+Click elimina la orden de reforma. La reforma solamente puede llevarse a cabo si el vehículo lo permite STR_ORDER_DROP_REFIT_AUTO :Carga fijada STR_ORDER_DROP_REFIT_AUTO_ANY :Carga disponible @@ -3771,24 +3859,24 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descargar y STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No descargar y esperar a cualquier carga completa) STR_ORDER_NO_UNLOAD_NO_LOAD :(No descargar y no cargar) -STR_ORDER_AUTO_REFIT :(Auto-reforma a {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Carga completa con auto-reforma a {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Cualquier carga completa con auto-reforma a {STRING}) -STR_ORDER_UNLOAD_REFIT :(Descargar y tomar carga con auto-reforma a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y esperar carga completa con auto-reforma a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y esperar a cualquier carga completa con auto-reforma a {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transferir y tomar carga con auto-reforma a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y esperar a carga completa con auto-reforma a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y esperar a cualquier carga completa con auto-reforma a {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No descargar y tomar carga con auto-reforma a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y esperar a carga completa con auto-reforma a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y esperar a cualquier carga completa con auto-reforma a {STRING}) +STR_ORDER_AUTO_REFIT :(Reforma a {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Carga completa con reforma a {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Cualquier carga completa con reforma a {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descargar y tomar carga con reforma a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y esperar carga completa con reforma a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y esperar a cualquier carga completa con reforma a {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transferir y tomar carga con reforma a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y esperar a carga completa con reforma a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y esperar a cualquier carga completa con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No descargar y tomar carga con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y esperar a carga completa con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y esperar a cualquier carga completa con reforma a {STRING}) STR_ORDER_AUTO_REFIT_ANY :carga disponible -STR_ORDER_STOP_LOCATION_NEAR_END :[cerca del fin] +STR_ORDER_STOP_LOCATION_NEAR_END :[extremo cercano] STR_ORDER_STOP_LOCATION_MIDDLE :[centro] -STR_ORDER_STOP_LOCATION_FAR_END :[lejos del fin] +STR_ORDER_STOP_LOCATION_FAR_END :[extremo lejano] STR_ORDER_OUT_OF_RANGE :{RED} (El próximo destino está fuera de alcance) @@ -3808,13 +3896,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horarios STR_TIMETABLE_NO_TRAVEL :Sin viaje STR_TIMETABLE_NOT_TIMETABLEABLE :Viajar (automático; programado por la próxima orden manual) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viaje (sin horarios) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viajar a como máximo {2:VELOCITY} (sin horarios) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viajar (sin horarios) a como máximo {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Viajar durante {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viajar a {STRING} con un límite de velocidad de {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajando (a {STRING}, sin horarios) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajando (a {STRING}, sin horario) a como máximo {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(permaneciendo por {STRING}, sin horarios) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajando a {STRING}, sin horarios) STR_TIMETABLE_STAY_FOR :y esperar {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :y viajar durante {STRING} -STR_TIMETABLE_DAYS :{COMMA} día{P "" s} -STR_TIMETABLE_TICKS :{COMMA} tic{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}día{P "" s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tic{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Los horarios tomarán {STRING} para completarse STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Estos horarios tomarán {STRING} para completarse (no todos los horarios) @@ -3871,9 +3963,9 @@ STR_AI_DEBUG_SETTINGS :{BLACK}Configur STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Cambiar la configuración del script STR_AI_DEBUG_RELOAD :{BLACK}Recarga la IA STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Elimina la IA, recarga el código y reinicia la IA -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activar / desactivar pausa cuando un mensaje de log de la IA coincide con la cadena de parada -STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Pausa activada: -STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pausa activada +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activar/desactivar la pausa automática cuando un mensaje de log de la IA coincide con la cadena de parada +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Pausar con: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pausar cuando el script registre esta cadena STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Cuando un mensaje de log de una IA coincide con esta cadena, el juego se pausa STR_AI_DEBUG_MATCH_CASE :{BLACK}Comprobar mayúsculas/minúsculas STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Activa/desactiva la comprobación de mayúsculas y minúsculas al comparar los mensajes de log de la IA con la cadena de parada @@ -3883,14 +3975,14 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Mostrar STR_AI_GAME_SCRIPT :{BLACK}Script de Juego STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Comprobar el registro del Script de Juego -STR_ERROR_AI_NO_AI_FOUND :No se encontró IA apropiada para cargar.{}Esta es una IA por defecto que no realiza acción alguna.{}Puedes descargar nuevas IAs mediante el sistema de 'Contenido Online' +STR_ERROR_AI_NO_AI_FOUND :No se encontró IA apropiada para cargar.{}Ésta es una IA por defecto que no realiza acción alguna.{}Puedes descargar nuevas IA mediante el sistema de 'Contenido Online' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Uno de los scripts ejecutados ha fallado. Por favor, reporte el fallo al autor del script con una captura de la ventana de depuración de IA / Script STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}La ventana de depuración de scripts solo está disponible para el servidor # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Configuración de Scripts STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Script de Juego que será cargado en la próxima partida -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}IAs que serán cargadas en la próxima partida +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Las IA que serán cargadas en la próxima partida STR_AI_CONFIG_HUMAN_PLAYER :Jugador Humano STR_AI_CONFIG_RANDOM_AI :IA aleatoria STR_AI_CONFIG_NONE :(ninguna) @@ -3901,7 +3993,7 @@ STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mover ha STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Mover la IA seleccionada hacia abajo STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script de Juego -STR_AI_CONFIG_AI :{SILVER}IAs +STR_AI_CONFIG_AI :{SILVER}IA STR_AI_CONFIG_CHANGE :{BLACK}Seleccionar {STRING} STR_AI_CONFIG_CHANGE_NONE : @@ -3913,7 +4005,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configur # Available AIs window STR_AI_LIST_CAPTION :{WHITE}{STRING} disponibles -STR_AI_LIST_CAPTION_AI :IAs +STR_AI_LIST_CAPTION_AI :IA STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts de Juego STR_AI_LIST_TOOLTIP :{BLACK}Click para seleccionar un script @@ -3927,9 +4019,9 @@ STR_AI_LIST_CANCEL :{BLACK}Cancelar STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}No cambiar de script # AI Parameters -STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parámetros -STR_AI_SETTINGS_CAPTION_AI :IA -STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Juego +STR_AI_SETTINGS_CAPTION :{WHITE}Parámetros {STRING} +STR_AI_SETTINGS_CAPTION_AI :de la IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :del Script de Juego STR_AI_SETTINGS_CLOSE :{BLACK}Cerrar STR_AI_SETTINGS_RESET :{BLACK}Reiniciar STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -3940,6 +4032,8 @@ STR_AI_SETTINGS_START_DELAY :Número de día STR_TEXTFILE_README_CAPTION :{WHITE}Leeme del {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registro de cambios del {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licencia del {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Unir texto +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Unir el texto de la ventana para que quepa sin tener que usar el scroll STR_TEXTFILE_VIEW_README :{BLACK}Ver leeme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Registro de cambios STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencia @@ -3986,8 +4080,8 @@ STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}El juego ha sido guardado en una versión sin soporte para tranvías. Todos los tranvías serán eliminados # Map generation messages -STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generación de mapa abortada...{}... no hay localizaciones apropiadas para pueblos -STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... no hay pueblos en el escenario +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generación de mapa abortada...{}... no hay localizaciones apropiadas para municipios +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... no hay municipios en el escenario STR_ERROR_PNGMAP :{WHITE}No se pudo cargar mapa de alturas PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fichero no encontrado @@ -4038,7 +4132,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}No permi # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Las autoridades locales de {TOWN} rechazan esto -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Las autoridades locales de {TOWN} rechazan la construcción de otro aeropuerto en este pueblo +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Las autoridades locales de {TOWN} rechazan la construcción de otro aeropuerto en este municipio STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Las autoridades locales de {TOWN} rechazan el permiso para el aeropuerto debido a su preocupación por el ruido STR_ERROR_BRIBE_FAILED :{WHITE}Su intento de soborno ha sido descubierto por un investigador regional @@ -4050,6 +4144,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}La excav STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ya está al nivel del mar STR_ERROR_TOO_HIGH :{WHITE}... demasiado alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... ya está llano +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Después del cambio, el puente sobre este terreno será demasiado alto. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}No se puede cambiar el nombre de la empresa... @@ -4068,18 +4163,18 @@ STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}No se pu STR_ERROR_PROTECTED :{WHITE}Esta empresa es demasiado reciente como para comerciar con acciones... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede construir ningún pueblo -STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede renombrar pueblo... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede construir pueblo aquí... -STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir pueblo... +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede construir ningún municipio +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede renombrar el municipio... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede construir un municipio aquí... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir municipio... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... demasiado cercano al borde del mapa -STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cercano a otro pueblo -STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiados pueblos +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cercano a otro municipio +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiados municipios STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... no hay más espacio en el mapa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. Puedes activar la función de construcción de carreteras en Opciones Avanzadas->Economía->Pueblos +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El municipio no construirá carreteras. Puedes activar la función de construcción de carreteras en Configuración->Ambiente->Municipios STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabajos de carretera en progreso -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede borrar este pueblo...{}Quedan estaciones o depósitos relacionados con la ciudad, o una propiedad del pueblo no puede ser retirada -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no existe un lugar apropiado para una estatua en el centro de este pueblo +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede borrar este municipio...{}Quedan estaciones o depósitos relacionados con él, o una propiedad suya no puede ser retirada +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no existe un lugar apropiado para una estatua en el centro de este municipio # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas industrias @@ -4087,19 +4182,22 @@ STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}No se pu STR_ERROR_CAN_T_BUILD_HERE :{WHITE}No se puede construir {STRING} aquí... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}No se puede construir este tipo de industria aquí... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... demasiado cerca de otra industria -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... debe construirse un pueblo primero -STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... solo se permite uno por pueblo -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... sólo puede ser construido en pueblos con población superior a 1200 +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... debe construirse un municipio primero +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... solo se permite uno por municipio +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... sólo puede ser construido en municipios de al menos 1.200 habitantes STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... sólo se puede construir en áreas de selva STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... sólo se puede construir en áreas desérticas -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... solo puede ser construido en pueblos (reemplazando casas) -STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... solamente puede construirse cerca del centro de un pueblo +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... solo puede ser construido en municipios (reemplazando casas) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... solamente puede construirse cerca del centro de un municipio STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... solo puede construirse en zonas bajas STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... sólo se puede colocar cerca de los bordes del mapa STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... sólo se puede plantar bosques sobre la nieve STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... solamente puede construirse por encima de la línea de nieve STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... solamente puede construirse por debajo de la línea de nieve +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No había sitios apropiados disponibles para industrias '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia los parámetros de generación del mapa para obtener un mapa mejor + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}No se puede construir estación de tren aquí... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}No se puede construir estación de autobuses... @@ -4119,7 +4217,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiad 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 renombrar estación... -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta carretera es propiedad de un pueblo +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta carretera es propiedad de un municipio STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... carretera en la dirección incorrecta STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... las estaciones de autobús de paso no pueden tener esquinas STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... las estaciones de autobús de paso no pueden tener intersecciones @@ -4236,6 +4334,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Primero STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}No se puede comenzar y acabar en la misma posición STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Las cabeceras del puente no están al mismo nivel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El puente es demasiado bajo para el terreno +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}El puente es demasiado alto para este terreno. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Comienzo y final deben estar en línea STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... los dos extremos de un puente han de estar sobre tierra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... puente demasiado largo @@ -4262,6 +4361,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ¡ya STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}No se puede crear grupo... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}No se puede borrar grupo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}No se puede renombrar grupo... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}No se puede establecer la jerarquía de grupos... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}No se pueden quitar todos los vehículos de este grupo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}No se puede añadir el vehículo a este grupo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}No se pueden añadir vehículos compartidos al grupo... @@ -4381,7 +4481,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Bloque de ofici STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Bloque de viviendas pequeño STR_TOWN_BUILDING_NAME_CHURCH_1 :Iglesia STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Gran bloque de oficinas -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas del pueblo +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas del municipio STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Estatua STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fuente @@ -4496,7 +4596,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor) @@ -4705,7 +4805,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Ferry de Pasaje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Ferry de Pasajeros Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Barco de Mercancías Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Barco de Mercancías Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco de Mercancías Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Barco de Mercancías MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Barco de Mercancías Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4799,6 +4899,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (oculto) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4834,8 +4935,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4846,9 +4945,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 55ce0df083..1fbf1641fe 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Läsk # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passagerare +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passagerare STR_QUANTITY_COAL :{WEIGHT_LONG} kol -STR_QUANTITY_MAIL :{COMMA} postsäck{P "" ar} +STR_QUANTITY_MAIL :{COMMA}{NBSP}postsäck{P "" ar} STR_QUANTITY_OIL :{VOLUME_LONG} olja -STR_QUANTITY_LIVESTOCK :{COMMA} boskap -STR_QUANTITY_GOODS :{COMMA} låd{P a or} gods +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}boskap +STR_QUANTITY_GOODS :{COMMA}{NBSP}låd{P a or} gods STR_QUANTITY_GRAIN :{WEIGHT_LONG} spannmål STR_QUANTITY_WOOD :{WEIGHT_LONG} timmer STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} järnmalm STR_QUANTITY_STEEL :{WEIGHT_LONG} stål -STR_QUANTITY_VALUABLES :{COMMA} värdesäck{P "" ar} +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}värdesäck{P "" ar} STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kopparmalm STR_QUANTITY_MAIZE :{WEIGHT_LONG} majs STR_QUANTITY_FRUIT :{WEIGHT_LONG} frukt -STR_QUANTITY_DIAMONDS :{COMMA} diamantsäck{P "" ar} +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}diamantsäck{P "" ar} STR_QUANTITY_FOOD :{WEIGHT_LONG} mat STR_QUANTITY_PAPER :{WEIGHT_LONG} papper -STR_QUANTITY_GOLD :{COMMA} guldsäck{P "" ar} +STR_QUANTITY_GOLD :{COMMA}{NBSP}guldsäck{P "" ar} STR_QUANTITY_WATER :{VOLUME_LONG} vatten STR_QUANTITY_WHEAT :{WEIGHT_LONG} vete STR_QUANTITY_RUBBER :{VOLUME_LONG} gummi STR_QUANTITY_SUGAR :{WEIGHT_LONG} socker -STR_QUANTITY_TOYS :{COMMA} leksak{P "" er} -STR_QUANTITY_SWEETS :{COMMA} godispås{P e ar} +STR_QUANTITY_TOYS :{COMMA}{NBSP}leksak{P "" er} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}godispås{P e ar} STR_QUANTITY_COLA :{VOLUME_LONG} kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sockervadd STR_QUANTITY_BUBBLES :{COMMA} bubbl{P a or} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NEJ STR_ABBREV_ALL :{TINY_FONT}ALLA # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passagerare -STR_BAGS :{COMMA} väsk{P a or} -STR_TONS :{COMMA} ton -STR_LITERS :{COMMA} liter -STR_ITEMS :{COMMA} föremål -STR_CRATES :{COMMA} låd{P a or} +STR_PASSENGERS :{COMMA}{NBSP}passagerare +STR_BAGS :{COMMA}{NBSP}väsk{P a or} +STR_TONS :{COMMA}{NBSP}ton +STR_LITERS :{COMMA}{NBSP}liter +STR_ITEMS :{COMMA}{NBSP}föremål +STR_CRATES :{COMMA}{NBSP}låd{P a or} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Mörkblå @@ -191,32 +191,37 @@ STR_COLOUR_GREY :Grå STR_COLOUR_WHITE :Vit # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hk -STR_UNITS_POWER_METRIC :{COMMA}hk -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hk +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hk +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}fot +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Sökfilter: @@ -243,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullning STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullningslist - rullar listan höger/vänster STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv byggnader etc. på en markruta. Ctrl väljer yta diagonalt. Shift växlar mellan att riva/visa beräknad kostnad +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Visa dolda +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Visa dolda +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Visa dolda +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Visa dolda + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}När denna knapp aktiveras visas även dolda lok och vagnar +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}När denna knapp aktiveras visas även dolda vägfordon +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}När denna knapp aktiveras visas även dolda fartyg +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}När denna knapp aktiveras visas även dolda flygfarkoster + # Query window STR_BUTTON_DEFAULT :{BLACK}Standardinställning STR_BUTTON_CANCEL :{BLACK}Avbryt @@ -280,6 +296,8 @@ STR_SORT_BY_LENGTH :Längd STR_SORT_BY_LIFE_TIME :Återstående livstid STR_SORT_BY_TIMETABLE_DELAY :Tidtabellsförsening STR_SORT_BY_FACILITY :Stationstyp +STR_SORT_BY_WAITING_TOTAL :Väntande gods totalt +STR_SORT_BY_WAITING_AVAILABLE :Väntande gods tillgängligt STR_SORT_BY_RATING_MAX :Högsta värdering av last STR_SORT_BY_RATING_MIN :Lägsta värdering av last STR_SORT_BY_ENGINE_ID :MotorID (klassisk sortering) @@ -354,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Avsluta ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spelinställningar -STR_SETTINGS_MENU_CONFIG_SETTINGS :Avancerade inställningar +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Inställningar STR_SETTINGS_MENU_SCRIPT_SETTINGS :Inställningar för AI / spelskript STR_SETTINGS_MENU_NEWGRF_SETTINGS :Inställningar för NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Inställningar för genomskinlighet @@ -463,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Slå av/på ytt STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Slå av/på färgläggning av smutsiga block ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -479,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -732,7 +768,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Visa all STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Visa senaste meddelande eller nyhet STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSAD * * -STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPARNING +STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPARA STR_STATUSBAR_SAVING_GAME :{RED}* * SPARAR SPEL * * # News message history @@ -751,11 +787,11 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Invånarna firar . . .{}Första fartyget ankommer till {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Invånarna firar . . .{}Första flygplanet ankommer till {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tågkrash!{}{COMMA} dog i eldklot efter kollision -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Vägfordonskrash!{}Förare dör i eldklot efter kollision med tåg -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Vägfordonskrash!{}{COMMA} dör i eldklot efter kollision med tåg -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flygplanskrasch!{}{COMMA} dör i eldklot på {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flygplanskrasch!{}Flygplanet fick slut på bränsle, {COMMA} dör i eldklot! +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tågkrasch!{}{COMMA} dog i lågorna efter kollision +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Vägfordonskrasch!{}Föraren dog i lågorna efter kollision med tåg +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Vägfordonskrasch!{}{COMMA} dog i lågorna efter kollision med tåg +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flygplanskrasch!{}{COMMA} dog i lågorna på {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flygplanskrasch!{}Flygplanet fick slut på bränsle, {COMMA} dog i lågorna! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinare-katastrof på {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Vägfordon förstört i 'UFO'-kollision! @@ -803,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} väntar i depån STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} väntar i hangaren -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har för få ordrar i schemat STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en ogiltig order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har dubblerade destinationer STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en felaktig station bland destinationerna -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} har i sina beställningar en flygplats vars bana är för kort STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} börjar bli gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} börjar bli mycket gammal @@ -856,7 +891,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaen STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Välj valutaenhet ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Britiska pund (£) +STR_GAME_OPTIONS_CURRENCY_GBP :Brittisk pund (£) STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen (¥) @@ -892,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari ( STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vägfordon STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Välj sida av vägen som fordonen kör på STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Kör på vänster sida @@ -931,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanska STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Spara automatiskt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Välj intervall mellan automatiskt sparande +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Avstängd STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Varje månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Var 3:e månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Var 6:e månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Var 12:e månad +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Välj språk att använda @@ -947,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skärmup STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Välj skärmupplösning att använda STR_GAME_OPTIONS_RESOLUTION_OTHER :annan -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skärmdumpsformat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Välj filformat för skärmdump +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Gränssnittstorlek +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken gränssnittsstorlek som används + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storlek STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikpaket som standard STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Välj vilket grafikpaket som ska användas som standard @@ -964,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Välj vi STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fil{P "" er} korrupt{P "" a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yttligare information om musikpaketet +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Det gick inte att hämta en lista över upplösningar som stöds STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskärmsläge misslyckades # Custom currency window @@ -1042,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Väldigt platt STR_TERRAIN_TYPE_FLAT :Platt STR_TERRAIN_TYPE_HILLY :Kullig STR_TERRAIN_TYPE_MOUNTAINOUS :Bergig +STR_TERRAIN_TYPE_ALPINIST :Alpin STR_CITY_APPROVAL_PERMISSIVE :Eftergiven STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1049,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Fientlig STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen passande datorspelare finns tillgänglig...{}Du kan ladda ner ett flertal datorspelare via 'Online Content'-systemet -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avancerade inställningar +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Inställningar STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sökfilter: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Utöka alla STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Stäng alla @@ -1063,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinställnin STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Företagsinställning (sparad i spel-fil och påverkar enbart nya spel) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Företagsinställning (sparad i spel-fil och påverkar enbart nuvarande företag) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Visa: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Begränsar listan till att endast visa ändrade inställningar -STR_CONFIG_SETTING_RESTRICT_BASIC :Grundläggande inställningar -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancerade inställningar -STR_CONFIG_SETTING_RESTRICT_ALL :Expertinställningar / alla inställningar +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typ: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Begränsar listan nedan med fördefinierade filter +STR_CONFIG_SETTING_RESTRICT_BASIC :Grundläggande (visa endast viktiga inställningar) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancerat (visa de flesta inställningarna) +STR_CONFIG_SETTING_RESTRICT_ALL :Expert (visa alla inställningar, inklusive de konstiga) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Inställningar med annat värde än standardvärdet STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Inställningar med annat värde än dina inställningar för nytt spel STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begränsar listan till vissa typer av inställningar -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alla inställningar +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alla typer av inställningar STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinställningar (sparas ej i spel-filer och påverkar alla spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinställningar (sparas i spel-fil och påverkar enbart nya spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spelinställningar (sparas i spel-fil och påverkar enbart nuvarande spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Företagsinställningar (sparas i spel-fil och påverkar enbart nya spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Företagsinställningar (sparas i spel-fil och påverkar bara aktuellt företag) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Visa alla sökresultat genom att sätta{}{SILVER}Kategori {BLACK}till {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Visa alla sökresultat genom att sätta{}{SILVER}Typ {BLACK}till {WHITE}Alla typer av inställningar +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Visa alla sökresultat genom att sätta{}{SILVER}Kategori {BLACK}till {WHITE}{STRING} {BLACK}och {SILVER}Typ {BLACK}till {WHITE}Alla typer av inställningar +STR_CONFIG_SETTINGS_NONE :{WHITE}- Inga - STR_CONFIG_SETTING_OFF :Av STR_CONFIG_SETTING_ON :På @@ -1115,12 +1159,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Förbjud tåg a STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Om det är aktiverat så kommer tågen inte vända på genomfartsstationer, ens om vägen till deras destination skulle ha blivit kortare ifall de vände STR_CONFIG_SETTING_DISASTERS :Katastrofer: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Slår av/på katastrofer vilka då och då kan blockera eller förstöra fordon och infrastruktur -STR_CONFIG_SETTING_CITY_APPROVAL :Stadsfullmäktiges attityd mot ombyggantion av områden: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Stadsfullmäktiges attityd mot ombyggnation av områden: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Välj hur mycket ett företags oväsen och miljöpåverkan ska påverka dess anseende och möjlighet till vidare byggnationer i området -STR_CONFIG_SETTING_BUILDONSLOPES :Tillåt konstruktion på sluttningar och kuster: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Om det är aktiverat kan räls och stationer byggas på de flesta sluttningar. Om det är inaktiverat är de bara tillåtna att bygga på sluttningar som motsvarar spårens riktning och därför inte kräver någon grund -STR_CONFIG_SETTING_AUTOSLOPE :Tillåt landskapsarkitektur under byggnader, spår, etc. (autoslope): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximal karthöjd: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Välj maximala tillåtna höjd för berg på kartan +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan inte ändra maximal karthöjd till detta värde. Åtminstone ett berg på kartan är högre +STR_CONFIG_SETTING_AUTOSLOPE :Tillåt landskapsarkitektur under byggnader, spår, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillåt landskapsarkitektur under byggnader och spår utan att ta bort dem STR_CONFIG_SETTING_CATCHMENT :Tillåt mer realistiska uppsamlingsområden för stationer: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha olika stora uppsamlingsområden för olika typer av stationer och flygplatser @@ -1144,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Förbjud tåg o STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graderssvängar inträffar då ett horisontellt spår följs direkt av ett vertikalt spår på angränsande ruta och därmed gör så att tåget svänger 90-grader om de kör längs med spåret. Detta i motsats till andra kombinationer av spårbitar där tåget svänger 45 grader i taget. Denna inställning påverkar även svängradien för fartyg STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillåt att stationer som inte är byggda direkt brevid varandra slås ihop: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillåt att lägga till delar till en station utan att de är i direktkontakt med existerande delar. Kräver Ctrl+klick vid placering av nya stationsdelar. -STR_CONFIG_SETTING_IMPROVEDLOAD :Använd förbättrad algoritm: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Om aktiverad och flera fordon befinner sig på stationen, kommer de att lastas på en efter en. Lastning av nästa fordon startar först när det finns tillräckligt med gods för att fylla det första fordonet. -STR_CONFIG_SETTING_GRADUAL_LOADING :Lasta fordon gradvis: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lasta på fordon gradvis genom att använda fordonsspecifika tider för lastning istället för att lasta på allt samtidigt med en fast tid som endast beror på mängden gods att lasta på. STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktivera inflation i ekonomin. Kostnaderna stiger något fortare än inkomsterna. -STR_CONFIG_SETTING_SELECTGOODS :Leverera gods till en station enbart om någon frågar efter det: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Leverera endast gods till en station där godstypen har efterfrågats av ett fordon genom att försöka lasta på gods. Detta förhindrar dåliga värderingar för godstyper som inte betjänas på en station. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximal brolängd: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximal längd för broar +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximal brohöjd: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximal höjd för att bygga broar STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximal tunnellängd: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximal längd för tunnlar STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metod för manuell konstruktion av primära industrier: {STRING} @@ -1179,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Grundinställni STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :början STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :mitten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :slutet -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Vägfordonsköer (med kvanteffekter): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Gör så att vägfordon väntar framför ett upptaget genomfarts-stopp tills dess att det är ledigt. STR_CONFIG_SETTING_AUTOSCROLL :Scrolla vyn när musen är vid kanten: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :När det är aktiverat börjar vyer scrolla när muspekaren är nära fönstrets kant STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Avstängd @@ -1211,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillåt genomfa STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillåt konstruktion av genomfarts-stopp på stadsägda vägar STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillåt dina fordon att köra genom motståndarens hållplatser: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillåt konstruktion av genomfarts-stopp på vägar som ägs av andra företag -STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillåt konstruktion av närliggande stationer: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Tillåt att olika stationer rör vid varandra -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Tillåt flera NewGRF-set: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompabilitetsinställning för gamla NewGRFer. Inaktivera inte detta såvida du inte vet exakt vad du håller på med! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det är inte möjligt att ändra denna inställning när det finns fordon STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Underhåll av infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Om det är aktiverat så kostar underhåll av infrastruktur. Kostnaden ökar mer än proportionellt mot nätverkets storlek, vilket innebär att större företag drabbas hårdare än små företag av underhållskostnader. @@ -1245,35 +1280,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Visningstid fö STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tid som felmeddelanden i ett rött fönster ska visas. Notera att vissa (kritiska) felmeddelanden inte stängs automatiskt efter denna tid, utan måste stängas manuellt STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" er} STR_CONFIG_SETTING_HOVER_DELAY :Visa tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Fördröjning innan tooltips visas när muspekaren hålls över ett gränssnittselement. Alternativt kan tooltips bindas till den högra musknappen -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Håll muspekaren i {COMMA} sekund{P 0 "" er} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Fördröjning innan tooltips visas när muspekaren hålls över ett gränssnittselement. Alternativt kan tooltips bindas till den högra musknappen när detta värde är satt till 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Håll muspekaren i {COMMA} millisekund{P 0 "" er} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Högerklick STR_CONFIG_SETTING_POPULATION_IN_LABEL :Visa invånarantal i stadsnamnet: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Visa antal invånare efter stadsnamnen på kartan STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linjetjocklek i grafer: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Linjernas bredd i grafernas kurvor. En tunn linje är lättare att läsa av mer precist, medan en tjockare linje är lättare att se och gör det lättare att skilja mellan de olika färgerna +STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definiera grundläggande gameplay scenarier med olika last och krav stad tillväxt. NewGRF och Game skript tillåter finare kontroll. STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den ursprungliga generatorn beror på bas grafik set, och komponerar fasta landskapsformer. TerraGenesis är en Perlin buller baserad generator med finare inställningar kontroll STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Terrängtyp: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis endast) Hilliness av landskapet +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industri densitet: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Ange hur många industrier ska genereras och vilken nivå bör bibehållas under spelet STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalt avstånd mellan oljeraffinaderier och kartans kant: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oljeraffinaderier byggs bara nära kartans kanter, alltså vid kusten om det är en ö-karta STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snölinjeshöjd: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Terrängens svårhetsgrad (TerraGenesis endast) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontroll på vilken höjd snön börjar i subarktiska landskapet. Snö påverkar också industrin generation och stad tillväxtkrav +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Terrängens svårhetsgrad: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis endast) Välj frekvensen av kullar: Smooth landskap har färre, mer utbredda kullar. Rough landskap har många kullar, som kan se repetitiva STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väldigt lätt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lätt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Svår STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Väldigt svår +STR_CONFIG_SETTING_VARIETY :Varierad distribution: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis endast) Styr om kartan innehåller både bergs och flacka områden. Eftersom detta gör bara kartan flackare bör andra inställningar ställas in på bergiga +STR_CONFIG_SETTING_RIVER_AMOUNT :Antal floder: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Välj hur många floder att generera STR_CONFIG_SETTING_TREE_PLACER :Trädplacerings-algoritm: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Välj fördelningen av träden på kartan: "Original" växter träd jämnt utspridda, "Förbättrad" växter dem i grupper STR_CONFIG_SETTING_TREE_PLACER_NONE :Inget STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Förbättrad +STR_CONFIG_SETTING_ROAD_SIDE :Väg fordon: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Välj kör sida STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Höjkartans rotation: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Motsols STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Medsols STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Vilken nivåhöjd en platt scenario-karta får: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillåt landskapsarkitektur på rutorna vid kartans kanter: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Om det är inaktiverat kommer kartans kanter alltid att vara hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}En eller fler rutor vid den norra gränsen är inte tomma STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}En eller fler rutor vid en av gränserna är inte vatten @@ -1294,7 +1343,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjuk scrollning STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrollera hur huvudvyn skrollar till en specifik position vid klick på minikartan eller när ett kommando används för att skrolla till ett specifikt objekt på kartan. Om det är aktiverat skrollar vyn mjukt, om det är inaktiverat hoppar den direkt till målet STR_CONFIG_SETTING_MEASURE_TOOLTIP :Visa måtthjälptext vid användning av byggverktyg: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Visa rutavstånd och höjdskillnader vid dragning med musen under byggoperationer -STR_CONFIG_SETTING_LIVERIES :Visa färgschema för företag: {STRING} +STR_CONFIG_SETTING_LIVERIES :Visa fordonstypsspecifika färgscheman för företag: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrollera användning av fordonstyp-specifika färgscheman för fordon (till skillnad från företagsspecifika) STR_CONFIG_SETTING_LIVERIES_NONE :Inga STR_CONFIG_SETTING_LIVERIES_OWN :Egna företaget @@ -1324,17 +1373,15 @@ 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_AUTOSAVE :Autospara: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Välj intervall mellan automatisk sparande + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Använd {STRING} som datumformat för sparfilsnamn STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format för datum i filnamnen för sparade spel STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lång (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standardpalett för NewGRF när ingen annan palett är angiven: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalett att använda med NewGRFer som inte anger vilken palett de behöver -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-palett -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows-palett - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausa automatiskt vid start av nytt spel: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Om det är aktiverat kommer OpenTTD automatiskt att pausa vid start av ett nytt spel, så att kartan kan studeras noggrannare STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :När spelet är pausat, tillåt: {STRING} @@ -1343,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Inga åtgärder STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Allt förutom att bygga STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Allt förutom landskapsarkitektur STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alla åtgärder -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Använd den avancerade fordonslistan: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Använd grupper i fordonslistan: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Möjliggör användning av avancerade fordonslistor för gruppering av fordon STR_CONFIG_SETTING_LOADING_INDICATORS :Använd lastningsindikatorer: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Välj om lastningsindikatorer visas ovanför lastande och avlastande fordon, eller ej @@ -1417,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Visa serviceint STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Välj om fordonsservice ska triggas av hur lång tid som har gått sedan senaste service eller av att tillförlitligheten faller med en viss procentsats av den maximala tillförlitligheten STR_CONFIG_SETTING_SERVINT_TRAINS :Normalt serviceintervall för tåg: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya tåg, om inget annat serviceintervall uttryckligen anges -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" ar}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" ar}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Inaktiverat STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Normalt serviceintervall för vägfordon: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya vägfordon, om inget annat serviceintervall uttryckligen anges @@ -1484,7 +1531,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Välj beteende STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg automatiskt semaforer innan: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Välj vilket år elektriska signaler ska börja användas för spår. Innan detta årtal används icke-elektriska signaler (vilka har exakt samma funktion, men annorlunda utseende) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Använd signal-GUI: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Visa ett fönster med de signaltyper som går att bygga, istället för enbart fönsterlös signaltyps-rotation genom Ctrl+klick på byggda signaler +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Visa ett fönster för att välja signaltyp att bygga, istället för enbart fönsterlös signaltyps-rotation genom Ctrl+klick på byggda signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standardsignal-typ: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Signaltyp att använda som standard STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal @@ -1556,55 +1603,90 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Inga STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial stadsstorleks-multiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storstäders genomsnittliga storlek i relation till vanliga städers vid spelets början -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Ta bort absurda väg-element under vägkonstruktion: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Ta bort återvändsgränder vid bekostad vägombyggnad -STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuell -STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk -STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Uppdatera distributionsgrafen var {STRING}:e{NBSP}dag{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tid mellan efterföljande omräkningar av länkgrafen. Varje omräkning beräknar planer för en komponent i grafen. Det medför att ett värde X för den här inställningen inte innebär att hela grafen uppdateras var X:e dag, bara vissa komponenter. Ju lägre värde du ställer in desto mer processorkraft kommer att behövas för beräkningarna. Ju högre värde du ställer in desto längre tid kommer det att ta innan distributionen av last börjar använda nya rutter. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Avsätt {STRING}{NBSP}dag{P 0:2 "" ar} för omberäkning av distributionsgraf +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Den tid varje omberäkning av en länkgrafkomponent tillåts ta. När en omberäkning startas skapas en tråd som tillåts löpa detta antal dagar. Ju kortare du sätter denna, desto mer troligt är det att tråden inte är hinner bli färdig i tid. Då kommer spelet att stanna tills den är klar (vilket gör att det laggar). Ju längre du sätter denna, desto längre tid tar det för distributionen att uppdateras när rutter ändras. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuellt +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetriskt +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetriskt +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionssätt för passagerare: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetriskt" innebär att ungefär samma antal passagerare färdas från station A till station B som från B till A. "asymmetriskt" innebär att en godtycklig mängd passagerare kan färdas i vardera riktningen. "manuellt" innebär att ingen automatisk distribution av passagerare sker. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributionssätt för post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetriskt" innebär att ungefär samma mängd post skickas från station A till station B som från B till A. "asymmetriskt" innebär att en godtycklig mängd post kan skickas i vardera riktningen. "manuellt" innebär att ingen automatisk distribution av post sker. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributionssätt för den BEPANSRADE godsklassen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den BEPANSRADE godsklassen innehåller värdesaker i det tempererade, diamanter i det subtropiska eller guld i det subarktiska klimatet. NewGRFer kan ändra detta. "symmetriskt" innebär att ungefär samma mängd av detta gods skickas från station A till station B som från B till A. "asymmetriskt" innebär att en godtycklig mängd av detta gods kan skickas i vardera riktningen. "manuellt" innebär att ingen automatisk distribution av denna godstyp sker. Det är rekommenderat att välja "asymmetriskt" eller "manuellt" vid subarktiskt klimat, då banker inte skickar tillbaka guld till guldgruvor. Vid tempererat och subtropiskt klimat kan även "symmetriskt" väljas, då banker kan skicka tillbaka värdesaker till den bank en viss last av värdesaker kom ifrån. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributionssätt för övriga godsklasser: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetriskt" innebär att en godtycklig mängd gods kan skickas i vardera riktningen. "manuellt" innebär att ingen automatisk distribution av dessa godstyper sker. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributionsnoggrannhet: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Ju högre du sätter denna, desto längre CPU-tid kommer beräkningen av länkgrafen ta. Om det tar för lång tid kan spelet lagga. Om du däremot sätter den till ett lågt värde kommer distributionen att bli inexakt, vilket kan leda till att godset inte skickas dit du förväntar dig. STR_CONFIG_SETTING_DEMAND_DISTANCE :Avståndets påverkan på efterfrågan: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Belastning av korta ruter innan längre rutter används: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Om du sätter denna till ett värde högre än 0 kommer avståndet mellan ursprungsstationen A för en viss last och en möjlig destination B påverka mängden last som skickas från A till B. Ju längre B är ifrån A, desto mindre last kommer att skickas. Ju högre du sätter den, desto mindre last kommer att skickas till avlägsna stationer och desto mer last kommer att skickas till närbelägna stationer. +STR_CONFIG_SETTING_DEMAND_SIZE :Mängd återsänd last i symmetriskt läge: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Genom att sätta denna till mindre än 100% får man den symmetriska distributionen att bete sig mer som den asymmetriska. En mindre andel än vanligt av den last som skickas till en station kommer att skickas tillbaka. Sätter du den till 0% beter sig den symmetriska distributionen precis som den asymmetriska. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Belastning av korta rutter innan rutter med hög kapacitet används: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofta finns det flera rutter mellan två givna stationer. Godsdistributionen kommer att fylla upp den första rutten först och därefter den näst kortaste tills den är mättad osv. Mättnadsgraden bestäms utifrån en uppskattning av kapaciteten och planerad användning. När godsdristributionen har belastat samtliga rutter, och om det finns kvarvarande behov, då kommer samtliga rutter att överbelastas med preferens för rutterna med högst kapacitet. Uppskattningen av kapaciteten kommer oftast inte ske med hög noggrannhet. Denna inställning tillåter dig att ställa in hur många procent som en kort rutt ska belastas innan algoritmen ska välja nästa längre rutt. Sätt värdet till under 100 % om du vill undvika överfulla stationer i händelse av överskattad kapacitet. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenhet: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Närhelst en hastighet visas i användargränssnittet, visa den i den valda enheten +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Brittisk (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Enhet för fordons motoreffekt: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Närhelst ett fordons motoreffekt visas i användargränssnittet, visa den i den valda enheten +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Brittisk (hk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (hk) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Viktenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Viktenhet: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Närhelst vikter visas i användargränssnittet, visa dem i den valda enheten +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Brittisk (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volymenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volymenhet: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Närhelst volymer visas i användargränssnittet, visa dem i den valda enheten +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Brittisk (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Dragkraftsenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :När dragkraft visas i användargränssnittet, visa den i de valda enheterna +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Brittisk (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Höjdenhet: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Närhelst en höjd visas i användargränssnittet, visa den i de valda enheterna +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Brittisk (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Gränssnitt STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik +STR_CONFIG_SETTING_SOUND :{ORANGE}Ljud +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Gränssnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vyportar +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_ADVISORS :{ORANGE} Nyheter / Rådgivare +STR_CONFIG_SETTING_COMPANY :{ORANGE}Företag +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE} Redovisning STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fordon -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationer -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomi -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Godsdistribution +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE} Fysik +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Planering av resrutt +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE} Begränsningar +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE} Katastrofer / Olyckor +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Världsgenerering +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljö +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Mydigheter +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Städer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Godsdistribution STR_CONFIG_SETTING_AI :{ORANGE}Motståndare -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Skärminställningar -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interagera -STR_CONFIG_SETTING_SOUND :{ORANGE}Ljudeffekter -STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheter och meddelanden -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Frakthantering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datorspelare -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoförnya -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Service -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Planering av resrutt -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tåg -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Städer -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrier STR_CONFIG_SETTING_PATHFINDER_OPF :Standard STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1653,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Flera sp STR_INTRO_GAME_OPTIONS :{BLACK}Spelinställningar STR_INTRO_HIGHSCORE :{BLACK}Bästa spelresultat -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancerade inställningar +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Inställningar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-inställningar STR_INTRO_ONLINE_CONTENT :{BLACK}Kontrollera online-innehåll STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / spelskript-inställningar @@ -1673,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Välj 'l STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Visa spelinställningar STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Visar en topplista över de bästa spelresultaten -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Visa avancerade inställningar +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skärminställningar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Visa inställningar för NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kolla efter nytt och nyuppdaterat innehåll för nedladdning STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Visa inställningar för datorspelare och spelskript @@ -1713,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelar STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk Bulldozer (ta bort industrier, oflyttbara objekt etc.): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnlar kan korsa varandra: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplan kommer inte att störta (frekvent) på små flygplatser: {ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Ändra maximal karthöjd: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Ändra maximal höjd för berg på kartan STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Tempererat landskap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arktiskt landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropiskt landskap @@ -1761,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Fraktspårvagn STR_FACE_CAPTION :{WHITE}Välj ansikte STR_FACE_CANCEL_TOOLTIP :{BLACK}Avbryt val av ansikte STR_FACE_OK_TOOLTIP :{BLACK}Acceptera nytt ansikte +STR_FACE_RANDOM :{BLACK}Slumpa STR_FACE_MALE_BUTTON :{BLACK}Man STR_FACE_MALE_TOOLTIP :{BLACK}Välj manliga ansikten @@ -1806,8 +1891,8 @@ STR_FACE_MOUSTACHE :Mustasch: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Ändra läppar eller mustasch STR_FACE_CHIN :Haka: STR_FACE_CHIN_TOOLTIP :{BLACK}Ändra haka -STR_FACE_JACKET :Jacka: -STR_FACE_JACKET_TOOLTIP :{BLACK}Ändra jacka +STR_FACE_JACKET :Kavaj: +STR_FACE_JACKET_TOOLTIP :{BLACK}Ändra kavaj STR_FACE_COLLAR :Krage: STR_FACE_COLLAR_TOOLTIP :{BLACK}Ändra krage STR_FACE_TIE :Slips: @@ -1884,10 +1969,10 @@ STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kl STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max antal tillåtna klienter: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Välj max antal tillåtna klienter. Alla platser måste inte fyllas. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} företag{P y ies} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max företag: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max antal företag: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begränsa antalet företag på servern STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} åskådare{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max observatörer: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max antal åskådare: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begränsa antalet observatörer på servern STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Språk som talas: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andra spelare kommer vara medvetna vilket språk som talas på servern. @@ -1997,9 +2082,10 @@ STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat meddelan STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient -STR_NETWORK_SPECTATORS :Publik +STR_NETWORK_SPECTATORS :Åskådare STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv in mängd pengar som du vill ge +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Åskådare # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Spara inte det inmatade lösenordet @@ -2504,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hastighetsgräns för järnvägsspår: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hastighetsbegränsning på väg: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stenar @@ -2600,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Mark som ägs a STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig äganderä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-2013 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel @@ -2619,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Spara STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Spara spelet med valt namn STR_SAVELOAD_LOAD_BUTTON :{BLACK}Ladda STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ladda valt spel +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Ladda vald höjdkarta STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Speldetaljer STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen information tillgänglig STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2634,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal städer: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industrier: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximal karthöjd: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Öka maximal bergshöjd med ett +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Minska maximal bergshöjd med ett STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snögränsens höjd: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Höj snögränsens höjd ett upp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Sänk snögränsens höjd ett ner -STR_MAPGEN_RANDOM_SEED :{BLACK}Slumpnummer: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klicka för att mata in ett slump-nummer -STR_MAPGEN_RANDOM :{BLACK}Slumpa -STR_MAPGEN_RANDOM_HELP :{BLACK}Ändra slumpnummer som används för terräng-generering STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Trädalgoritm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrängtyp: @@ -2667,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Namn på STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Storlek: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Mata in ett slumpmässigt frö +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Ändra maximal karthöjd STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ändra snögränsens höjd STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ändra Startår @@ -2722,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flytta u STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flytta upp den markerade NewGRF-filen i listan STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flytta ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flytta ner den markerade NewGRF-filen i listan +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Uppgradera +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Uppgradera NewGRF-filer som du har en nyare version installerad STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}En lista med installerade NewGRF-filer STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parametrar @@ -2746,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matchande STR_NEWGRF_SETTINGS_DISABLED :{RED}Avstängd STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ej kompatibel med den här versionen av OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Spara förinställning +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista över tillgängliga förinställningar, väljer man att kopiera den till spara namn nedan +STR_SAVE_PRESET_TITLE :{BLACK}Skriv in ett namn +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}För tillfället vald namn för förinställningen att spara +STR_SAVE_PRESET_CANCEL :{BLACK}Avbryt +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ändra inte det förinställda +STR_SAVE_PRESET_SAVE :{BLACK}Spara +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Spara den inställda till den nuvarande valda namnet + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ändra NewGRF parametrar STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Stäng @@ -2769,14 +2868,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Justera spriteobjekt {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nästa spriteobjekt -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsätt till nästa nomala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om vid slutet +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsätt till nästa nomala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om efter sista spriteobjektet STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå till spriteobjekt STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå till angivet spriteobjekt. Om objektet inte är ett normalt spriteobjekt, fortsätt till nästa normala spriteobjekt STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidigare spriteobjekt -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsätt till nästa normala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om vid början +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsätt till föregående normala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om från slutet efter första spriteobjektet STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation av det valda objektet. Justeringen ignoreras när objektet ritas. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytta runt objektet, ändrar X och Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Återställ relativ +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Återställ den nuvarande relativa offsetten +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offsett: {NUM}, Y offsett: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offsett: {NUM}, Y offsett: {NUM} (Relativ) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Välj objekt STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Välj ett objekt på bildskärmen @@ -2833,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Saknade fi STR_NEWGRF_BROKEN :{WHITE}'Beteendet hos '{0:STRING}' kommer troligen orsaka desynkronisering och/eller krascher STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Power wagon-tillstånd för '{1:ENGINE}' ändrades utanför en depå STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Fordonslängd för '{1:ENGINE}' ändrades utanför en depå +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Kapaciteten ändrades för '{1:ENGINE}' utan att vara i depå eller anpassning STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tåg '{VEHICLE}' som tillhör '{COMPANY}' har ogiltig längd. Detta orsakas förmodligen av problem med en NewGRF. Spelet kan desynkroniseras eller krascha STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' ger felaktig information @@ -2847,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} av STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRFer STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannar NewGRFer. Beroende på antal kan det ta en stund... @@ -2884,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} levererat STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (återstår) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (levererat) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Orten växer var {ORANGE}{COMMA}{BLACK} dag -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Orten växer var {ORANGE}{COMMA}{BLACK} dag (bekostad tillväxt) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Orten växer var {ORANGE}{COMMA}{BLACK}{NBSP}dag +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Orten växer var {ORANGE}{COMMA}{BLACK}{NBSP}dag (bekostad tillväxt) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Orten växer {RED}inte{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Bullernivågräns i stad: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på staden. Ctrl+klick öppnar en ny vy över stadens läge @@ -2945,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Varning STR_GOAL_QUESTION_CAPTION_ERROR :Fel -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt STR_GOAL_QUESTION_BUTTON_OK :Okej STR_GOAL_QUESTION_BUTTON_NO :Nej @@ -2964,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Starta om STR_GOAL_QUESTION_BUTTON_POSTPONE :Skjut upp STR_GOAL_QUESTION_BUTTON_SURRENDER :Ge upp STR_GOAL_QUESTION_BUTTON_CLOSE :Stäng +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subventioner @@ -2984,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Föregå STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå till föregående sida STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nästa STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gå till nästa sida +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ogiltig målreferens # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnamn - klicka på ett namn för att centrera huvudvyn på stationen. Ctrl+klick öppnar en ny vy över stationens läge @@ -2998,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ingen so # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Väntar: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} från {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserverat för lastning) @@ -3242,12 +3349,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ogrupperade vä STR_GROUP_DEFAULT_SHIPS :Ogrupperade skepp STR_GROUP_DEFAULT_AIRCRAFTS :Ogrupperade flygmaskiner -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klicka på en grupp för att lista alla fordon i gruppen +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klicka på en grupp för att lista alla fordon i gruppen. Dra och släpp grupper för att ordna hierarkin. STR_GROUP_CREATE_TOOLTIP :{BLACK}Klicka för att skapa en grupp STR_GROUP_DELETE_TOOLTIP :{BLACK}Ta bort vald grupp STR_GROUP_RENAME_TOOLTIP :{BLACK}Byt namn på vald grupp STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klicka för att skydda denna grupp mot allmän autoreplace +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Ta bort grupp +STR_GROUP_DELETE_QUERY_TEXT :{WHITE} Är du säker på att du vill ta bort denna grupp och alla efterkommande? + STR_GROUP_ADD_SHARED_VEHICLE :Lägg till delade fordon STR_GROUP_REMOVE_ALL_VEHICLES :Ta bort alla fordon @@ -3285,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :Allt utom {CARG STR_PURCHASE_INFO_MAX_TE :{BLACK}Maximal Dragkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Räckvidd: {GOLD}{COMMA} rutor -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista av tågvagnar - klicka på tågvagn för information -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vägfordonslista - klicka på fordon för information -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skeppslista - klicka på skepp för information -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flygplanslista - Klicka på flygplan för information +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skeppslista. Klicka på skepp för information. Ctrl+klick visar eller döljer skeppstypen +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flygplanslista. Klicka på flygplan för information. Ctrl+klick visar eller döljer flygplanstypen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Köp fordon STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Köp Fordon @@ -3310,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Byt namn STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Byt namn på skeppstyp STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Byt namn på flygplanstyp +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Dölj +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Dölj +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Dölj +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Dölj + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Visa +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Visa +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Visa +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Visa + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Växla mellan att dölja och visa lok- och vagntyp +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Växla mellan att dölja och visa fordonstyp +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Växla mellan att dölja och visa fartygstyp +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Växla mellan att dölja och visa flygfarkoststyp + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Byt namn på tågets fordonstyp STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Byt namn på vägfordonstyp STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Byt namn på skeppstyp @@ -3414,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vägfordon STR_REPLACE_VEHICLE_SHIP :Skepp STR_REPLACE_VEHICLE_AIRCRAFT :Flygplan +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Fordon i bruk +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Kolumn med fordon du äger +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Tillgängliga fordon +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Kolumn med fordon tillgängliga för att bytas ut + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Välj fordonstyp att byta ut STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Välj den nya fordonstyp du vill använda i stället för den till vänster valda typen @@ -3538,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK} Överför kredit: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Serviceintervall: {LTBLUE}{COMMA}dagar{BLACK} Senaste service: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Serviceintervall: {LTBLUE}{COMMA}{NBSP}dagar{BLACK} Senaste service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceintervall: {LTBLUE}{COMMA}%{BLACK} Senaste service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Öka serviceintervall med 10. Ctrl+klick ökar serviceintervall med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minska serviceintervall med 10. Ctrl+klick minskar servinceintervall med 5 @@ -3636,8 +3766,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ändra a STR_ORDER_REFIT :{BLACK}Anpassa STR_ORDER_REFIT_TOOLTIP :{BLACK}Välj vilken godstyp anpassningen ska göras i denna order. Ctrl-klick för att ta bort anpassningsordern -STR_ORDER_REFIT_AUTO :{BLACK}Auto-anpassning -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Välj vilket lasttyp att auto-anpassa till i den här ordern. Ctrl+klicka för att ta bort anpassningsinstruktionen. Auto-anpassning kommer enbart att utföras om fordonet tillåter det +STR_ORDER_REFIT_AUTO :{BLACK}Auto-anpassning vid station +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Välj vilket lasttyp att auto-anpassa till i den här ordningen. Ctrl+klicka för att ta bort anpassningsinstruktionen. Auto-anpassning vid stationer kommer enbart att utföras om fordonet tillåter det STR_ORDER_DROP_REFIT_AUTO :Fast lasttyp STR_ORDER_DROP_REFIT_AUTO_ANY :Tillgängliga lasttyper @@ -3765,13 +3895,17 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Tidtabel STR_TIMETABLE_NO_TRAVEL :Ingen resa STR_TIMETABLE_NOT_TIMETABLEABLE :Restid (automatisk; tidtabellen baseras på nästa manuella order) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Restid (inte angiven) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Res högst i {2:VELOCITY} (not timetabled) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Res (utan tidtabell) högst i {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Res i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Res i {STRING} med högsta hastighet {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Resor (för {STRING}, ej schemalagd) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Resor (för {STRING}, ej schemalagd) med högst {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(stanna {STRING}, ej schemalagd) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(resor för {STRING}, ej schemalagd) STR_TIMETABLE_STAY_FOR :och stanna i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :och res i {STRING} -STR_TIMETABLE_DAYS :{COMMA} dag{P "" ar} -STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" ar} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Den här tidtabellen kommer ta {STRING} att slutföra STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Denna tidtabell kommer att ta åtminstonde {STRING} att slutföra (allt är inte inlagt i en tidtabell) @@ -3897,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :Ungefärligt an STR_TEXTFILE_README_CAPTION :{WHITE} {STRING}-manual för {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Ändringshistorik för {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licens för {STRING}{STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Använd radbrytning +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt rader så att all text får plats i fönstret utan att man behöver skrolla STR_TEXTFILE_VIEW_README :{BLACK}Visa manual STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ändringshistorik STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licens @@ -4007,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgrävn STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Redan på havsnivå STR_ERROR_TOO_HIGH :{WHITE}För hög STR_ERROR_ALREADY_LEVELLED :{WHITE}... redan platt +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Efteråt skulle bron ovanför vara för hög. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan inte ändra företagsnamn... @@ -4033,7 +4170,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... för STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... för nära en annan stad STR_ERROR_TOO_MANY_TOWNS :{WHITE}... för många städer STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det finns ingen plats kvar på kartan -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Staden kommer inte bygga vägar. Du kan tillåta att staden bygger vägar via Avancerade Inställningar -> Ekonomi -> Städer +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Staden kommer inte bygga vägar. Du kan tillåta att staden bygger vägar via Inställningar->Miljö->Städer STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vägarbete pågår STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan inte ta bort den här staden...{}En station eller depå refererar till staden eller så kan inte en stadsägd ruta tas bort. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det finns ingen lämplig plats för en staty i stadens centrum @@ -4057,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan endast byggas ovanför snögränsen STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan endast byggas nedanför snögränsen +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Det fanns inga lämpliga platser för '{STRING}'-industrier +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Ändra parametrarna för kartgenereringen för att skapa en bättre karta + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan inte bygga järnvägsstation här... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan inte bygga busshållplats... @@ -4193,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Måste r STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan inte börja och sluta på samma plats STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Broändar ej på samma höjd STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bro är för låg för terrängen +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Bro är för hög för denna terräng. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start- och slutpunkt måste ligga i linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... brons båda ändar måste vara på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... för lång bro @@ -4219,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan inte skapa grupp... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan inte ta bort denna grupp... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan inte döpa om grupp... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan inte ställa föräldragrupp ... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan inte ta bort alla fordon i denna grupp... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan inte lägga till fordon i denna grupp... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan inte lägga till delade fordon i denna grupp... @@ -4453,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Ånga) @@ -4662,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagerarfärja STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate lastfartyg STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell lastfartyg -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover lastfartyg +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover lastfartyg STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut lastfartyg STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4756,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (dold) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4791,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4803,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 633b8384c5..4d9e07efb0 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -95,9 +95,9 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :குளிர # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} பயணி{P "" கள்} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP} பயணி{P "" கள்} STR_QUANTITY_COAL :{WEIGHT_LONG} நிலக்கரி -STR_QUANTITY_MAIL :{COMMA} அஞ்சல் பை{P "" கள்} +STR_QUANTITY_MAIL :{COMMA}{NBSP} அஞ்சல் பை{P "" கள்} STR_QUANTITY_OIL :{VOLUME_LONG} எண்ணெய் STR_QUANTITY_LIVESTOCK :{COMMA} கால்நடை{P "" கள்} STR_QUANTITY_GOODS :{COMMA} சரக்குப் பெட்டி{P "" கள்} @@ -169,8 +169,8 @@ STR_PASSENGERS :{COMMA} பய STR_BAGS :{COMMA} பை{P "" கள்} STR_TONS :{COMMA} டன்{P "" கள்} STR_LITERS :{COMMA} லிட்டர்{P "" கள்} -STR_ITEMS :{COMMA} பொருட்கள்{P "" s} -STR_CRATES :{COMMA} பெட்டி{P "" கள்} +STR_ITEMS :{COMMA}{NBSP}பொருள்{P "" "பொருட்கள்"} +STR_CRATES :{COMMA}{NBSP}பெட்டி{P "" கள்} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :கருநீலம் @@ -191,43 +191,44 @@ STR_COLOUR_GREY :சாம்ப STR_COLOUR_WHITE :வெள்ளை # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}டன் -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}டன் +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}டன் +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}கி.கி. -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} டன்{P "" கள்} -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} டன்{P "" கள்} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} கிலோ +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}டன்{P "" கள்} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}டன்{P "" கள்} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}கி.கி. -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}கேலன் -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}கேலன் +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}லி +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}மீ³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} கேலன்{P "" கள்} -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} லிட்டர்{P "" கள்} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}கேலன்{P "" கள்} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}லிட்டர்{P "" கள்} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}மீ³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} அடி -STR_UNITS_HEIGHT_METRIC :{COMMA} மீ -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}அடி +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}மீ +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}மீ # Common window strings STR_LIST_FILTER_TITLE :{BLACK}வடிகட்டி தொடர்: STR_LIST_FILTER_OSKTITLE :{BLACK}Enter filter string STR_LIST_FILTER_TOOLTIP :{BLACK}Enter a keyword to filter the list for +STR_TOOLTIP_GROUP_ORDER :{BLACK}குழு அமைப்பினைத் தேர்ந்தெடுக்கவும் STR_TOOLTIP_SORT_ORDER :{BLACK}Select sorting order (descending/ascending) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Select sorting criteria STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Select filtering criteria @@ -239,13 +240,20 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}சா STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}சாளர தலைப்பு - சாளரத்தை நகர்த்த இழுக்கவும் STR_TOOLTIP_SHADE :{BLACK}சாளரத்தை சுருக்கவும் - தலைப்பை மட்டும் காண்பி STR_TOOLTIP_DEBUG :{BLACK}Show NewGRF debug information -STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable by the 'Close All Windows' key +STR_TOOLTIP_STICKY :{BLACK}இந்தப் பகுதியினை மூட முடியாதபடி செய். Ctrl+சொடுக்கு அழுத்தினால் இந்த அமைப்பு சேமிக்கப்படும் STR_TOOLTIP_RESIZE :{BLACK}Click and drag to resize this window STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list up/down STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}சதுர நிலப்பகுதியில் கட்டிடம் போன்றவற்றை இடிக்க. Ctrl தேர்வுசெய்திட. Shift உத்தேச செலவை/கட்டிடத்தை காட்டிட +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}மறைந்திருப்பதை காட்டு +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}மறைந்திருப்பதை காட்டு +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}மறைந்திருப்பதை காட்டு +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}மறைந்திருப்பதை காட்டு + + # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}தவிர் @@ -292,8 +300,8 @@ STR_SORT_BY_COST :செலவு STR_SORT_BY_POWER :சக்தி STR_SORT_BY_TRACTIVE_EFFORT :இழுக்கை முயற்சி STR_SORT_BY_INTRO_DATE :அறிமுகப்படுத்தப்பட்ட தேதி -STR_SORT_BY_RUNNING_COST :நடத்துதல் செலவு -STR_SORT_BY_POWER_VS_RUNNING_COST :ஆற்றல்/நடத்துதல் செலவு +STR_SORT_BY_RUNNING_COST :நடத்துதல் செலவுகள் +STR_SORT_BY_POWER_VS_RUNNING_COST :ஆற்றல்/செயற்படுத்தல் செலவு STR_SORT_BY_CARGO_CAPACITY :சரக்கு கொள்ளளவு STR_SORT_BY_RANGE :வரையறை STR_SORT_BY_POPULATION :மக்கள் தொகை @@ -359,7 +367,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :வெளிய ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :விளையாட்டு விருப்ப பேரம் -STR_SETTINGS_MENU_CONFIG_SETTINGS :அமைப்புகள் +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :அமைப்புகள் STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / ஆட்ட அமைப்புகள் STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF அமைப்புகள் STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :ஒளி அமைப்புகள் @@ -385,6 +393,7 @@ STR_FILE_MENU_EXIT :வெளிய # map menu STR_MAP_MENU_MAP_OF_WORLD :உலகப் படம் STR_MAP_MENU_EXTRA_VIEW_PORT :கூடுதல் பார்வைபடம் +STR_MAP_MENU_LINGRAPH_LEGEND :சரக்கு செல்லும் வழிப் படம் STR_MAP_MENU_SIGN_LIST :குறிகளின் பட்டியல் ############ range for town menu starts @@ -467,7 +476,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :எல்லை STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :அழுக்கான கட்டங்களின் நிறத்தை மாற்று ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd @@ -483,22 +492,40 @@ STR_ORDINAL_NUMBER_12TH :12வது STR_ORDINAL_NUMBER_13TH :13வது STR_ORDINAL_NUMBER_14TH :14வது STR_ORDINAL_NUMBER_15TH :15வது -STR_ORDINAL_NUMBER_16TH :16வது -STR_ORDINAL_NUMBER_17TH :17வது -STR_ORDINAL_NUMBER_18TH :18வது -STR_ORDINAL_NUMBER_19TH :19வது -STR_ORDINAL_NUMBER_20TH :20வது -STR_ORDINAL_NUMBER_21ST :21வது -STR_ORDINAL_NUMBER_22ND :22வது -STR_ORDINAL_NUMBER_23RD :23வது -STR_ORDINAL_NUMBER_24TH :24வது -STR_ORDINAL_NUMBER_25TH :25வது -STR_ORDINAL_NUMBER_26TH :26வது -STR_ORDINAL_NUMBER_27TH :27வது -STR_ORDINAL_NUMBER_28TH :28வது -STR_ORDINAL_NUMBER_29TH :29வது -STR_ORDINAL_NUMBER_30TH :30வது -STR_ORDINAL_NUMBER_31ST :31வது +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1st +STR_DAY_NUMBER_2ND :2nd +STR_DAY_NUMBER_3RD :3rd +STR_DAY_NUMBER_4TH :4th +STR_DAY_NUMBER_5TH :5வது +STR_DAY_NUMBER_6TH :6வது +STR_DAY_NUMBER_7TH :7வது +STR_DAY_NUMBER_8TH :8வது +STR_DAY_NUMBER_9TH :9வது +STR_DAY_NUMBER_10TH :10வது +STR_DAY_NUMBER_11TH :11வது +STR_DAY_NUMBER_12TH :12வது +STR_DAY_NUMBER_13TH :13வது +STR_DAY_NUMBER_14TH :14வது +STR_DAY_NUMBER_15TH :15வது +STR_DAY_NUMBER_16TH :16வது +STR_DAY_NUMBER_17TH :17வது +STR_DAY_NUMBER_18TH :18வது +STR_DAY_NUMBER_19TH :19வது +STR_DAY_NUMBER_20TH :20வது +STR_DAY_NUMBER_21ST :21வது +STR_DAY_NUMBER_22ND :22வது +STR_DAY_NUMBER_23RD :23வது +STR_DAY_NUMBER_24TH :24வது +STR_DAY_NUMBER_25TH :25வது +STR_DAY_NUMBER_26TH :26வது +STR_DAY_NUMBER_27TH :27வது +STR_DAY_NUMBER_28TH :28வது +STR_DAY_NUMBER_29TH :29வது +STR_DAY_NUMBER_30TH :30வது +STR_DAY_NUMBER_31ST :31வது ############ range for days ends ############ range for months starts @@ -790,13 +817,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} அட்டவனையில் மிக குறைவாக கட்டளைகளைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} பிழையான கட்டளையைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} இரட்டடிப்பு கட்டளைகளைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} பிழையான நிலையத்தினை கட்டளைகளில் கொண்டுள்ளது -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} பழையதாகிறது STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} பழையதாகிறது @@ -868,10 +893,6 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :தென் STR_GAME_OPTIONS_CURRENCY_CUSTOM :புதிதாக... ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}சாலை வாகனங்கள் STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}வாகனங்கள் சாலையின் எந்தப்பக்கத்தில் செல்ல வேண்டும் STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :இடப்பக்கம் ஒட்டு @@ -906,11 +927,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :கடலன் STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}தானாக சேமி +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ஒவ்வொரு மாதமும் STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :மூன்று மாதங்களுக்கு ஒரு முறை STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ஆறு மாதங்களுக்கு ஒரு முறை STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ஒவ்வொரு வருடமும் +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}மொழி STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் மொழியினை தேர்ந்தெடு @@ -921,7 +944,10 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}தி STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}திரை அளவினைத் தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_RESOLUTION_OTHER :மற்றவை -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}திரைப்பிடிப்பு ஃபார்மேட் + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :சராசரி +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :இரண்டு மடங்கு +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :நான்கு மடங்கு STR_GAME_OPTIONS_BASE_GRF :{BLACK}அடிப்படை அசைவூட்டம் STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை அசைவூட்டத்தினை தேர்ந்தெடுக்கவும் @@ -1014,14 +1040,15 @@ STR_TERRAIN_TYPE_VERY_FLAT :மிகவு STR_TERRAIN_TYPE_FLAT :சமமான STR_TERRAIN_TYPE_HILLY :உயர்ந்து STR_TERRAIN_TYPE_MOUNTAINOUS :மலைகளாக +STR_TERRAIN_TYPE_ALPINIST :அல்பைனிசிட்டு STR_CITY_APPROVAL_PERMISSIVE :அனுமதிதரும் STR_CITY_APPROVAL_TOLERANT :பொறுத்துக்கொள்ளும் STR_CITY_APPROVAL_HOSTILE :அனுமதிக்காது -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}சிறப்பு அமைப்புகள் +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}அமைப்புகள் STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}வடிகட்டி: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}அனைத்தையும் விரிவாக்கு STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}அனைத்தையும் மூடு @@ -1034,19 +1061,21 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :ஆட்டத STR_CONFIG_SETTING_TYPE_COMPANY_MENU :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களை மட்டுமே மாற்றும்) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய நிறுவனத்தை மட்டுமே மாற்றும்) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}காட்டு: -STR_CONFIG_SETTING_RESTRICT_BASIC :அடிப்படை அமைப்புகள் +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}பகுப்பு: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}வகை: +STR_CONFIG_SETTING_RESTRICT_BASIC :அடிப்படை அமைப்புகளை மட்டுமே காட்டு STR_CONFIG_SETTING_RESTRICT_ADVANCED :சிறப்பு அமைப்புகள் STR_CONFIG_SETTING_RESTRICT_ALL :அதிக / அனைத்து அமைப்புகள் STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :முதலில் இருந்த மதிப்பினை மாற்றம் செய்யப்பட்ட அமைப்புகள் STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}கீழுள்ள பட்டியலினை குறிப்பிட்ட அமைப்பு வகைகளுக்கு குறைக்கும் -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :அனைத்து அமைப்புகள் +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :அனைத்து அமைப்பு வகைகள் STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client அமைப்புகள் (பதிவு செய்யப்படாது; அனைத்து ஆட்டங்களையும் மாற்றும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களில் மட்டும் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய ஆட்டத்தில் மட்டும் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களில் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய நிறுவனம் மட்டும்) +STR_CONFIG_SETTINGS_NONE :{WHITE}- ஒன்றுமில்லை - STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On @@ -1083,7 +1112,8 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :நிலைய STR_CONFIG_SETTING_DISASTERS :பேரழிவுகள்: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :நகர மறு அமைப்பின் மீது நகராட்சியின் நிலை: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :கரைகளிலும் சரிவுகளிலும் கட்ட அனுமதி: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :அதிகபட்ச வரைபட உயரம்: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :இந்த வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை அமை STR_CONFIG_SETTING_EXTRADYNAMITE :நகரத்தின் சாலைகள், பாலங்கள் மற்றும் சுரங்கங்களை நீக்க அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :நகராட்சியின் கட்டடங்கள் நீக்குவதை எளிதாக்கவும் STR_CONFIG_SETTING_TRAIN_LENGTH :இரயில்களின் அதிகபட்ச நீளம்: {STRING} @@ -1098,13 +1128,12 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :சாலை வாகங்களின் மலையேறுதல் வேகத்தடை: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :இரயில் மற்றும் கப்பல்களை 90° வளைவுகள் எடுப்பதை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :நேரடியாக இணைக்கப்படாத நிலையங்களை இணைக்க அனுமதி: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :புதிய சீரமைக்கப்பட்ட சரக்கேற்றுதலினைப் பயன்படுத்தவும்: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :பொறுமையாக வாகனங்களை ஏற்று: {STRING} STR_CONFIG_SETTING_INFLATION :விலைவாசி ஏற்றம்: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :பண வீக்கத்தினை செயல்படுத்து, இதனால் செலவுகள் வளர்ச்சி வரவுகளின் வளர்ச்சியைவிட அதிகமாகும் -STR_CONFIG_SETTING_SELECTGOODS :தேவை இருந்தால் மட்டுமே அச்சரக்குகளை நிலையத்தில் இறக்கு: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :அதிகபட்ச பால நீளம்: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :கட்டப்படும் பாலங்களின் அதிகபட்ச நீளம் +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :பாலத்தின் அதிகபட்ச உயரம்: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :பாலம் கட்டுவதற்கான அதிகபட்ச உயரம் STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :அதிகபட்ச சுரங்க நீளம்: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :கட்டப்படும் சுரங்கங்களின் அதிகபட்ச நீளம் STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :மனித அடிப்படை தொழிற்சாலை கட்டுமான வழி: {STRING} @@ -1124,7 +1153,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :பிளாட STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :அருகே உள்ள முடிவில் STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :நடு STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :தொலைவில் உள்ள முடிவில் -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :சாலை வாகன வரிசைப்படுத்துதல் (with quantum effects): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :ஒட்டில் எலி இருக்கும்பொழுது திரையினை நகர்த்தவும் : {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :முக்கிய திரைபார்வை, முழுத்திரையில் மட்டும் @@ -1145,9 +1173,6 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ஒன்று STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :குறைக்கப்பட்ட STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :இயல்பான STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :வழிசெல்லக்கூடிய சாலை நிறுத்தங்களை நகராட்சியின் சாலைகளில் அமைக்க அனுமதி: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :நிலையங்களை ஒட்டி கட்ட அனுமதி: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :வெவ்வேறு நிலையங்கள் ஒட்டி கட்டுவதற்கு அனுமதிக்கவும் -STR_CONFIG_SETTING_DYNAMIC_ENGINES :பல்வேறு NewGRF பொறிகளை செயற்படுத்தவும்: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}வாகனங்கள் இருக்கும் பொது இந்த அமைப்பினை மாற்ற இயலாது STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :கட்டட பராமரிப்பு: {STRING} @@ -1169,7 +1194,7 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY :காலாவ STR_CONFIG_SETTING_ERRMSG_DURATION :பிழை செய்திக்கான கால அளவு: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} விநாடி{P 0 "" கள்} STR_CONFIG_SETTING_HOVER_DELAY :tooltips இனை காட்டு: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :காட்டவும் {COMMA} விநாடி{P 0 "" கள்} +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :{COMMA} விநாடி{P 0 "" கள்} காட்டவும் STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :வலது சொடுக்கு STR_CONFIG_SETTING_POPULATION_IN_LABEL :நகரத்தின் மக்கள்த் தொகையினை அதன் பெயருடன் காட்டு: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :நகரத்தின் மக்கள்தொகையினை வரைபடத்தில் காட்டவும் @@ -1194,8 +1219,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :உயர்ப STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :வலமிருந்து இடமாக செல் STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :இடமிலிருந்து வலஞ்செல் STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :சமமான சித்திரக்காட்சியின் உயர அளவு: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :வரைபட எல்லைகளில் நில மாற்றங்களை செயற்படுத்தவும்: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :முடக்கப்பட்டால், வரைபடத்தின் எல்லைகள் கடலாகவே இருக்கும் STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}வடதுருவத்தில் ஒன்று அல்லது அதற்கு மேற்பட்ட கட்டங்கள் காலியாக இல்லை STR_CONFIG_SETTING_STATION_SPREAD :அதிக. நிலைய விரிப்பு: {STRING} @@ -1227,15 +1250,13 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :அணை + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{STRING} தேதி வகையினை பதிவுஆட்டங்கள் பெயர்களுக்கு பயன்படுத்தவும் STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :பதிவு ஆட்டங்கள் கோப்புப் பெயர்களில் உள்ள தேதி வகையினை அமை STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :நீளமான (31 திசம்பர் 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :சுருக்கமான (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :டாஸ் வண்ணத்தட்டு -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :விண்டோஸ் வண்ணத்தட்டு - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :புதிய ஆட்டத்தினை தொடங்கும்போது தானாக நிறுத்தவும்: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :ஆட்டம் நிருத்தபட்டிருக்கம்போது அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :ஆட்டம் நிறுத்தப்பட்டிருக்கும்போது செய்யக்கூடிய செயல்களைத் தேர்ந்தெடுக்கவும் @@ -1292,7 +1313,7 @@ STR_CONFIG_SETTING_AI_PROFILE_HARD :கடுமை STR_CONFIG_SETTING_SERVINT_ISPERCENT :பழுதுபார்த்தல்கள் இடையே உள்ள காலத்தினை சதவிகிதத்தில் காட்டவும்: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS :இரயிகளின் பழுதுபார்த்தல் இடைவேளி: {STRING} -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} நாள்{P "நாள்" நாட்கள்}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}நாள்{P "நாள்" நாட்கள்}/% STR_CONFIG_SETTING_SERVINT_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :சாலை வாகனங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT :விமாங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} @@ -1425,26 +1446,16 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :இம்பீ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :மெட்ரிக் (மீ) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (மீ) -STR_CONFIG_SETTING_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}கட்டுமானம் +STR_CONFIG_SETTING_SOUND :{ORANGE}ஒலிகள் +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}கட்டுமானம் STR_CONFIG_SETTING_VEHICLES :{ORANGE}வாகனங்கள் -STR_CONFIG_SETTING_STATIONS :{ORANGE}நிலையங்கள் -STR_CONFIG_SETTING_ECONOMY :{ORANGE}பொருளாதாரம் -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}சரக்கு பரிமாற்றம் +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}வழி மாற்றல் +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}நகரங்கள் +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}தொழிற்சாலைகள் +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}சரக்கு பரிமாற்றம் STR_CONFIG_SETTING_AI :{ORANGE}போட்டியாளர்கள் -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}திரை அமைப்புகள் -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction -STR_CONFIG_SETTING_SOUND :{ORANGE}ஒலிகள் -STR_CONFIG_SETTING_NEWS :{ORANGE}செய்திகள் மற்றும் தகவல்கள் -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}சிக்னல்கள் -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}சரக்கு பரிமாற்றம் STR_CONFIG_SETTING_AI_NPC :{ORANGE}கணினி வீரர்கள் -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}தானியங்கி புதுப்பித்தல் -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}பராமரிப்பு -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}வழி மாற்றல் -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}இரயில் வண்டிகள் -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}நகரங்கள் -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}தொழிற்சாலைகள் STR_CONFIG_SETTING_PATHFINDER_OPF :அசல் STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1485,7 +1496,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}சி STR_INTRO_GAME_OPTIONS :{BLACK}ஆட்டத்தின் அமைப்புகள் STR_INTRO_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியல் -STR_INTRO_ADVANCED_SETTINGS :{BLACK}அமைப்புகள் +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}அமைப்புகள் STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகள் STR_INTRO_ONLINE_CONTENT :{BLACK}கோப்புகளை இணையதளத்தில் தேடு STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / ஆட்டம் அமைப்புகள் @@ -1501,7 +1512,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}'பொ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ஆட்டம் அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியலினைக் காட்டவும் -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}சிறப்பு அமைப்புகளைக் காட்டு +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}திரை அமைப்புகள் STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}AI/வரிவடிவங்கள் அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_QUIT :{BLACK} 'OpenTTD'ஐ விட்டு வெளியேறு @@ -1537,6 +1548,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}இந STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}அதிசய நிலச்சமனி (தொழிற்சாலைகள் மற்றும் பொருட்களை நீக்குவதற்கு): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}சுரங்கங்கள் ஒன்றுக்கொன்று குறுக்கிடலாம்: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}சிறிய விமான நிலையங்களில் ஜெட்விமானங்கள் நொறுங்காது: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை மாற்று: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை மாற்று STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :மிதமான நிலவெளி STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :வட துருவ நிலவெளி STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :மிதவெப்பமண்டல நிலவெளி @@ -1582,6 +1595,7 @@ STR_LIVERY_FREIGHT_TRAM :சரக்க STR_FACE_CAPTION :{WHITE}முகம் தேர்ந்தெடுத்தல் STR_FACE_CANCEL_TOOLTIP :{BLACK}புதிய முக தேர்ந்தெடுத்தலை இரத்து செய் STR_FACE_OK_TOOLTIP :{BLACK}புதிய முக தேந்தெடுத்தலை ஏற்றுக்கொள் +STR_FACE_RANDOM :{BLACK}ஏதோவொன்று STR_FACE_MALE_BUTTON :{BLACK}ஆண் STR_FACE_MALE_TOOLTIP :{BLACK}ஆண் முகங்களை தேர்ந்தெடு @@ -1806,6 +1820,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :கவனிப்பவர்கள் STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}கொடுக்கப்படும் பணத்தின் அளவினை இடவும் +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}பார்வையாளர் # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}கடவுச்சொல்லினை நினைவில் வைத்திருக்காதே @@ -2253,6 +2268,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகள்: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}இரயில் வேகத் தடை: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}சாலை வேகத்தடை: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :கற்கள் @@ -2349,7 +2365,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-2013 OpenTTD குழுமம் +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD குழுமம் # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய் @@ -2380,11 +2396,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}நகரங்களின் எண்ணிக்கை: STR_MAPGEN_DATE :{BLACK}தேதி: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}தொழிற்சாலைகளின் எண்ணிக்கை: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}அதிகபட்ச வரைபட உயரம்: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை ஒரு அலகு உயர்த்து +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை ஒரு அலகு குறை STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}பனிக் கோடின் உயரம்: STR_MAPGEN_SNOW_LINE_UP :{BLACK}பனி கோடின் உயரத்தை ஒரு அடி உயர்த்து STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}பனி கோடின் உயரத்தை ஒரு அடி இறக்கு -STR_MAPGEN_RANDOM_SEED :{BLACK}ஏதோவொன்று: -STR_MAPGEN_RANDOM :{BLACK}ஏதோவொன்று STR_MAPGEN_LAND_GENERATOR :{BLACK}பூமி உருவாக்குனர்: STR_MAPGEN_TREE_PLACER :{BLACK}மரம் நடுதல்: STR_MAPGEN_TERRAIN_TYPE :{BLACK}நிலவகை: @@ -2410,6 +2427,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}உய STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}அளவு: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}வரைபடத்தின் அதிகபட்ச உயரத்தினை மாற்று STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}பனிக் கோடின் உயரத்தினை மாற்று STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}தொடங்கும் வருடத்தினை மாற்று @@ -2486,6 +2504,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}பொர STR_NEWGRF_SETTINGS_DISABLED :{RED}செயலிழக்க செய்யப்பட்டது STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}இந்த OpenTTD பதிப்புடன் பயன்படுத்த இயலாது +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF குணாதிசயங்களை மாற்று STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}மூடு @@ -2509,7 +2529,6 @@ STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ் STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}அடுத்த ஸ்பிரைட்டு STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ஸ்பிரைட்டுயிற்கு செல்லவும் STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}முந்தைய ஸ்பிரைட்டு -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}ஸ்பிரைட்டினைத் தேர்ந்தெடுக்கவும் STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}ஸ்பிரைட்டிற்கு செல்லவும் @@ -2562,6 +2581,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <ச STR_NEWGRF_INVALID_ENGINE :<செல்லுபடியாகாத வாகன வகை> STR_NEWGRF_INVALID_INDUSTRYTYPE :<தவறான தொழிற்சாலை> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<செல்லுபடியாகாத வாகனம்> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF பதிவுகள் ஆராயப்படுகின்றன STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF பதிவுகள் ஆராயப்படுகின்றன. அவற்றின் எண்ணிக்கையை பொறுத்து காலதாமதம் ஆகலாம்... @@ -2597,8 +2619,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} சேர்க்கப்பட்டவை STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (இன்னும் தேவை) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (சேர்க்கப்பட்டது) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK} நாட்களுக்கும் வளர்கிறது -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK} நாட்களுக்கும் வளர்கிறது (நிதியதவியால்) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK}{NBSP}நாட்களுக்கும் வளர்கிறது +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK}{NBSP}நாட்களுக்கும் வளர்கிறது (நிதியதவியால்) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}நகரம் {RED}வளருவதில்லை{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}நகரத்தில் ஒலி இரைச்சல் அளவு: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA} STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}நகராட்சி @@ -2652,7 +2674,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :தகவல் STR_GOAL_QUESTION_CAPTION_WARNING :எச்சரிக்கை STR_GOAL_QUESTION_CAPTION_ERROR :பிழை -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :இரத்து செய் STR_GOAL_QUESTION_BUTTON_OK :சரி STR_GOAL_QUESTION_BUTTON_NO :இல்லை @@ -2671,6 +2693,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :மீண்ட STR_GOAL_QUESTION_BUTTON_POSTPONE :தள்ளிவை STR_GOAL_QUESTION_BUTTON_SURRENDER :சரணடை STR_GOAL_QUESTION_BUTTON_CLOSE :மூடு +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}மானியங்கள் @@ -2689,6 +2712,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}மு STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}முந்தைய பக்கத்திற்குச் செல்லவும் STR_STORY_BOOK_NEXT_PAGE :{BLACK}அடுத்தது STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}அடுத்த பக்கத்திற்கு செல்லவும் +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}செல்லுபடியாகாத குறிக்கோள் மேற்கோள் # Station list window STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl அழுத்தி ஒன்றிற்கும் மேற்ப்பட்ட பொருட்களைத் தேர்ந்தெடுக்கவும் @@ -2702,7 +2726,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}எந # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}காத்திருக்கிறது: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION} இலிருந்து வந்துக்கொண்டிருக்கிறது) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} ஏற்றுவதற்காக ஒதுக்கப்பட்டுள்ளது) @@ -2719,6 +2742,7 @@ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}நி STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}மாத வினியோகம் மற்றும் பகுதி தர மதிப்பீடு: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) +STR_STATION_VIEW_GROUP :{BLACK}குழுவிடு STR_STATION_VIEW_WAITING_STATION :நிலையம்: காத்திருக்கிறது STR_STATION_VIEW_WAITING_AMOUNT :தொகை: காத்திருக்கிறது STR_STATION_VIEW_PLANNED_STATION :நிலையம்: திட்டமிடப்பட்டது @@ -2934,6 +2958,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}ஓர STR_GROUP_DELETE_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை நீக்கவும் STR_GROUP_RENAME_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை மாற்றவும் + STR_GROUP_ADD_SHARED_VEHICLE :பகிர்ந்த வாகனங்களை சேர்க்கவும் STR_GROUP_REMOVE_ALL_VEHICLES :அனைத்து வாகனங்களையும் நீக்கு @@ -2996,6 +3021,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}சா STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}கப்பல் வகையின் பெயரினை மாற்றவும் STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}விமான வகையின் பெயரினை மாற்றவும் + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}இரயில் வாகன வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}சாலை வாகன வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}கப்பல் வகையின் பெயரினை மாற்றவும் @@ -3090,6 +3118,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :சாலை STR_REPLACE_VEHICLE_SHIP :கப்பல் STR_REPLACE_VEHICLE_AIRCRAFT :விமானம் + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}மாற்றியமைக்க பொறி வகையினை தேர்ந்தெடுக்க STR_REPLACE_VEHICLES_START :{BLACK}வாகனங்களை மாற்றுவதை ஆரம்பி @@ -3203,7 +3232,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}கொ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}இடமாற்றம் வரவுகள்: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}பராமரிப்புகளுக்கிடையேயான காலம்: {LTBLUE}{COMMA}நாட்கள்{BLACK} கடைசி பராமரிப்பு: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}பராமரிப்புகளுக்கிடையேயான காலம்: {LTBLUE}{COMMA}{NBSP}நாட்கள்{BLACK} கடைசி பராமரிப்பு: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}பராமரிப்புகளுக்கிடையேயான காலம்: {LTBLUE}{COMMA}%{BLACK} கடைசி பராமரிப்பு: {LTBLUE}{DATE_LONG} STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}பழுதுபார்த்தல் இடைவேளி வகையினை மாற்றவும் @@ -3423,8 +3452,8 @@ STR_TIMETABLE_TRAVEL_FOR :{STRING} கா STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING} காலத்திற்கு பயணி, அதிகபட்ச வேகம் {VELOCITY} STR_TIMETABLE_STAY_FOR :மற்றும் {STRING} இற்கு நிற்கவும் STR_TIMETABLE_AND_TRAVEL_FOR :மற்றும் {STRING} இற்கு பயணிக்கவும் -STR_TIMETABLE_DAYS :{COMMA} நாள்{P "" கள்} -STR_TIMETABLE_TICKS :{COMMA} நொடி{P "" கள்} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}நாள்{P "" "நாட்கள்"} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}நொடி{P "" கள்} STR_TIMETABLE_TOTAL_TIME :{BLACK}இந்த கால அட்டவணை முடிய {STRING} காலமாகும் STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}இந்த கால அட்டவணை முடிய குரைந்தபட்சம் {STRING} காலமாவது ஆகும்.(ஏனெனில் அனைத்தும் கால அட்டவணைபடவில்லை) @@ -3703,6 +3732,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ப STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... பனி-கோடின் மேலே மட்டுமே கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... பனி-கோடின் கீழே மட்டுமே கட்ட முடியும் + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}இங்கே இரயில் நிலையம் கட்ட முடியாது... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}பேருந்து நிலையத்தினை கட்ட இயலாது... @@ -3839,6 +3869,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}மு STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}ஆரம்பித்த இடத்திலிருந்தே முடியக் கூடாது STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}பாலத்தின் முனைகள் ஒரே உயரத்தில் இல்லை STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}பாலம் மிகவும் உயரம் மிகவும் குறைவாக உள்ளது +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}இந்த நிலப்பரப்பிற்கு இப்பாலம் அதிகமான உயரத்திலுள்ளது. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}ஆரம்பம் மற்றும் முடிவு ஒரே கோடில் இருக்க வேண்டும் STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... பாலத்தின் முடிவுகள் இரண்டும் நிலத்திலேயே இருக்க வேண்டும் STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... பாலம் மிக நீளமாக உள்ளது @@ -4402,6 +4433,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (மறைக்கப்பட்டுள்ளது) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4437,8 +4469,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4449,9 +4479,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 3c33f63690..9b6b2780bd 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -33,11 +33,11 @@ STR_CARGO_PLURAL_MAIL :พัสดุ STR_CARGO_PLURAL_OIL :น้ำมันดิบ STR_CARGO_PLURAL_LIVESTOCK :ปศุสัตว์ STR_CARGO_PLURAL_GOODS :สินค้าแปรรูป -STR_CARGO_PLURAL_GRAIN :ข้าวสาลี -STR_CARGO_PLURAL_WOOD :ไม้ +STR_CARGO_PLURAL_GRAIN :ข้าวเปลือก +STR_CARGO_PLURAL_WOOD :ท่อนซุง STR_CARGO_PLURAL_IRON_ORE :แร่เหล็ก STR_CARGO_PLURAL_STEEL :เหล็กกล้า -STR_CARGO_PLURAL_VALUABLES :ทรัพย์สินมีมูลค่าสูง +STR_CARGO_PLURAL_VALUABLES :สินค้ามูลค่าสูง STR_CARGO_PLURAL_COPPER_ORE :แร่ทองแดง STR_CARGO_PLURAL_MAIZE :ข้าวโพด STR_CARGO_PLURAL_FRUIT :ผลไม้ @@ -51,13 +51,13 @@ STR_CARGO_PLURAL_RUBBER :ยางพา STR_CARGO_PLURAL_SUGAR :น้ำตาล STR_CARGO_PLURAL_TOYS :ของเล่น STR_CARGO_PLURAL_CANDY :ขนมสายไหม -STR_CARGO_PLURAL_COLA :น้ำโคล่า +STR_CARGO_PLURAL_COLA :โคล่า STR_CARGO_PLURAL_COTTON_CANDY :ขนมสายไหม STR_CARGO_PLURAL_BUBBLES :ฟอง STR_CARGO_PLURAL_TOFFEE :ลูกอม STR_CARGO_PLURAL_BATTERIES :ถ่านไฟฉาย STR_CARGO_PLURAL_PLASTIC :พลาสติก -STR_CARGO_PLURAL_FIZZY_DRINKS :น้ำอัดลมหรรษา +STR_CARGO_PLURAL_FIZZY_DRINKS :น้ำอัดลม # Singular cargo name STR_CARGO_SINGULAR_NOTHING : @@ -71,7 +71,7 @@ STR_CARGO_SINGULAR_GRAIN :ข้าวส STR_CARGO_SINGULAR_WOOD :ท่อนซุง STR_CARGO_SINGULAR_IRON_ORE :แร่เหล็ก STR_CARGO_SINGULAR_STEEL :เหล็กกล้า -STR_CARGO_SINGULAR_VALUABLES :ทรัพย์สินมีมูลค่าสูง +STR_CARGO_SINGULAR_VALUABLES :สินค้ามูลค่าสูง STR_CARGO_SINGULAR_COPPER_ORE :แร่ทองแดง STR_CARGO_SINGULAR_MAIZE :ข้าวโพด STR_CARGO_SINGULAR_FRUIT :ผลไม้ @@ -79,25 +79,25 @@ STR_CARGO_SINGULAR_DIAMOND :เพชร STR_CARGO_SINGULAR_FOOD :อาหาร STR_CARGO_SINGULAR_PAPER :กระดาษ STR_CARGO_SINGULAR_GOLD :ทองคำ -STR_CARGO_SINGULAR_WATER :น้ำดื่ม +STR_CARGO_SINGULAR_WATER :น้ำ STR_CARGO_SINGULAR_WHEAT :ข้าวสาลี STR_CARGO_SINGULAR_RUBBER :ยางพารา STR_CARGO_SINGULAR_SUGAR :น้ำตาล STR_CARGO_SINGULAR_TOY :ของเล่น STR_CARGO_SINGULAR_CANDY :ขนมสายไหม -STR_CARGO_SINGULAR_COLA :น้ำโคล่า +STR_CARGO_SINGULAR_COLA :โคล่า STR_CARGO_SINGULAR_COTTON_CANDY :ขนมสายไหม STR_CARGO_SINGULAR_BUBBLE :ฟอง STR_CARGO_SINGULAR_TOFFEE :ลูกอม STR_CARGO_SINGULAR_BATTERY :ถ่านไฟฉาย STR_CARGO_SINGULAR_PLASTIC :พลาสติก -STR_CARGO_SINGULAR_FIZZY_DRINK :น้ำอัดลมหรรษา +STR_CARGO_SINGULAR_FIZZY_DRINK :น้ำอัดลม # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :ผู้โดยสาร {COMMA} คน STR_QUANTITY_COAL :ถ่านหิน {WEIGHT_LONG} -STR_QUANTITY_MAIL :ไปรษณียภัณฑ์ {COMMA} ถุง +STR_QUANTITY_MAIL :ไปรษณีย์ {COMMA} ถุง STR_QUANTITY_OIL :น้ำมันดิบ {VOLUME_LONG} STR_QUANTITY_LIVESTOCK :ปศุสัตว์ {COMMA} ตัว STR_QUANTITY_GOODS :สินค้าแปรรูป {COMMA} ลัง @@ -105,7 +105,7 @@ STR_QUANTITY_GRAIN :ข้าวส STR_QUANTITY_WOOD :ท่อนซุง {WEIGHT_LONG} STR_QUANTITY_IRON_ORE :แร่เหล็ก {WEIGHT_LONG} STR_QUANTITY_STEEL :เหล็กกล้า {WEIGHT_LONG} -STR_QUANTITY_VALUABLES :ของมีค่า {COMMA} ถุง +STR_QUANTITY_VALUABLES :สินค้ามูลค่าสูง {COMMA} ถุง STR_QUANTITY_COPPER_ORE :แร่ทองแดง {WEIGHT_LONG} STR_QUANTITY_MAIZE :ข้าวโพด {WEIGHT_LONG} STR_QUANTITY_FRUIT :ผลไม้ {WEIGHT_LONG} @@ -119,13 +119,13 @@ STR_QUANTITY_RUBBER :ยางพา STR_QUANTITY_SUGAR :น้ำตาล {WEIGHT_LONG} STR_QUANTITY_TOYS :ของเล่น {COMMA} ชิ้น STR_QUANTITY_SWEETS :ขนมหวาน {COMMA} ถุง -STR_QUANTITY_COLA :น้ำโคล่า {VOLUME_LONG} สิตร +STR_QUANTITY_COLA :โคล่า {VOLUME_LONG} ลิตร STR_QUANTITY_CANDYFLOSS :ขนมสายไหม {WEIGHT_LONG} STR_QUANTITY_BUBBLES :ฟอง {COMMA} ลูก STR_QUANTITY_TOFFEE :ลูกอม {WEIGHT_LONG} STR_QUANTITY_BATTERIES :ถ่านไฟฉาย {COMMA} ก้อน STR_QUANTITY_PLASTIC :พลาสติก {VOLUME_LONG} -STR_QUANTITY_FIZZY_DRINKS :น้ำอัดลมหรรษา {COMMA} ชุด +STR_QUANTITY_FIZZY_DRINKS :น้ำอัดลม {COMMA} ชุด STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name @@ -134,13 +134,13 @@ STR_ABBREV_PASSENGERS :{TINY_FONT}ค STR_ABBREV_COAL :{TINY_FONT}ถ่าน STR_ABBREV_MAIL :{TINY_FONT}พัสดุ STR_ABBREV_OIL :{TINY_FONT}น้ำมัน -STR_ABBREV_LIVESTOCK :{TINY_FONT}เนื้อ -STR_ABBREV_GOODS :{TINY_FONT}สินค้าแปรรูป -STR_ABBREV_GRAIN :{TINY_FONT}ข้าวสาลี +STR_ABBREV_LIVESTOCK :{TINY_FONT}สัตว์ +STR_ABBREV_GOODS :{TINY_FONT}สินค้า +STR_ABBREV_GRAIN :{TINY_FONT}ข้าวเปลือก STR_ABBREV_WOOD :{TINY_FONT}ไม้ -STR_ABBREV_IRON_ORE :{TINY_FONT}แร่ +STR_ABBREV_IRON_ORE :{TINY_FONT}เหล็ก STR_ABBREV_STEEL :{TINY_FONT}เหล็กกล้า -STR_ABBREV_VALUABLES :{TINY_FONT}เงิน +STR_ABBREV_VALUABLES :{TINY_FONT}มีค่า STR_ABBREV_COPPER_ORE :{TINY_FONT}ทองแดง STR_ABBREV_MAIZE :{TINY_FONT}ข้าวโพด STR_ABBREV_FRUIT :{TINY_FONT}ผลไม้ @@ -204,7 +204,7 @@ STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} ตั STR_UNITS_WEIGHT_SHORT_SI :{COMMA} กิโลกรัม STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ตัน -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ตัน STR_UNITS_WEIGHT_LONG_SI :{COMMA} กิโลกรัม STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}แกลลอน @@ -248,6 +248,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}แถ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}แถบเลื่อน - ใช้เลื่อนรายการ ซ้าย/ขวา STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}ทำลายสิ่งก่อสร้าง และสิ่งต่างๆ ในพื้นที่ช่องหนึ่ง. กด Ctrl เพื่อเลือกพื้นที่แบบทะแยง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและแสดงมูลค่า +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}ค่าปกติ STR_BUTTON_CANCEL :{BLACK}ยกเลิก @@ -273,7 +276,7 @@ STR_SORT_BY_PRODUCTION :ผลผลิ STR_SORT_BY_TYPE :ประเภท STR_SORT_BY_TRANSPORTED :ขนส่งแล้ว STR_SORT_BY_NUMBER :ลำดับการเข้าประจำการ -STR_SORT_BY_PROFIT_LAST_YEAR :กำไรปีที่แล้ว +STR_SORT_BY_PROFIT_LAST_YEAR :กำไรปีก่อน STR_SORT_BY_PROFIT_THIS_YEAR :กำไรปีนี้ STR_SORT_BY_AGE :อายุการใช้งาน STR_SORT_BY_RELIABILITY :ประสิทธิภาพ @@ -295,8 +298,8 @@ STR_SORT_BY_POWER :พลังข STR_SORT_BY_TRACTIVE_EFFORT :กำลังลากจูง STR_SORT_BY_INTRO_DATE :วันเปิดตัว STR_SORT_BY_RUNNING_COST :ค่าใช้จ่าย -STR_SORT_BY_POWER_VS_RUNNING_COST :อัตตราส่วน กำลัง/ค่าใช้จ่าย -STR_SORT_BY_CARGO_CAPACITY :ความจุการบรรทุก +STR_SORT_BY_POWER_VS_RUNNING_COST :กำลังต่อค่าใช้จ่าย +STR_SORT_BY_CARGO_CAPACITY :ความจุบรรทุก STR_SORT_BY_RANGE :ช่วง STR_SORT_BY_POPULATION :ประชากร STR_SORT_BY_RATING :ความพึงพอใจ @@ -305,7 +308,7 @@ STR_SORT_BY_RATING :ความพ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}หยุดเกมชั่วคราว STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}เร่งความเร็วเกม STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}ตัวเลือก -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}บันทึกและออกจากเกม +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}บันทึกและเลิกเกมนี้ STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}แสดงจุดสังเกต, แผนที่และป้าย STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}แสดงทำเนียบชื่อเมือง STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}แสดงเงินสมทบ @@ -321,8 +324,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}แส STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}แสดงรายการรถยนต์ของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}แสดงรายการเรือของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}แสดงรายการอากาศยานของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}ขยายภาพเข้าใกล้ขึ้น -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}ย่อภาพให้ไกลขึ้น +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}ขยายวิว +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}ย่อวิว STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}เครื่องมือสร้างทางรถไฟ STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}สร้างถนน STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}สร้างท่าเรือ @@ -361,7 +364,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :ออก ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :ตัวเลือกเกม -STR_SETTINGS_MENU_CONFIG_SETTINGS :กำหนดค่าขั้นสูง STR_SETTINGS_MENU_SCRIPT_SETTINGS :กำหนดค่าสคริปต์ AI/Game STR_SETTINGS_MENU_NEWGRF_SETTINGS :กำหนดค่า NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :แถบเมนูตั้งค่าวัตถุโปร่งใส @@ -470,7 +472,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :เปิด/ STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :เปิด/เปิด สีของ dirty blocks ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :วันที่ 1 STR_ORDINAL_NUMBER_2ND :วันที่ 2 STR_ORDINAL_NUMBER_3RD :วันที่ 3 @@ -486,22 +488,40 @@ STR_ORDINAL_NUMBER_12TH :วันที STR_ORDINAL_NUMBER_13TH :วันที่ 13 STR_ORDINAL_NUMBER_14TH :วันที่ 14 STR_ORDINAL_NUMBER_15TH :วันที่ 15 -STR_ORDINAL_NUMBER_16TH :วันที่ 16 -STR_ORDINAL_NUMBER_17TH :วันที่ 17 -STR_ORDINAL_NUMBER_18TH :วันที่ 18 -STR_ORDINAL_NUMBER_19TH :วันที่ 19 -STR_ORDINAL_NUMBER_20TH :วันที่ 20 -STR_ORDINAL_NUMBER_21ST :วันที่ 21 -STR_ORDINAL_NUMBER_22ND :วันที่ 22 -STR_ORDINAL_NUMBER_23RD :วันที่ 23 -STR_ORDINAL_NUMBER_24TH :วันที่ 24 -STR_ORDINAL_NUMBER_25TH :วันที่ 25 -STR_ORDINAL_NUMBER_26TH :วันที่ 26 -STR_ORDINAL_NUMBER_27TH :วันที่ 27 -STR_ORDINAL_NUMBER_28TH :วันที่ 28 -STR_ORDINAL_NUMBER_29TH :วันที่ 29 -STR_ORDINAL_NUMBER_30TH :วันที่ 30 -STR_ORDINAL_NUMBER_31ST :วันที่ 31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :วันที่ 1 +STR_DAY_NUMBER_2ND :วันที่ 2 +STR_DAY_NUMBER_3RD :วันที่ 3 +STR_DAY_NUMBER_4TH :วันที่ 4 +STR_DAY_NUMBER_5TH :วันที่ 5 +STR_DAY_NUMBER_6TH :วันที่ 6 +STR_DAY_NUMBER_7TH :วันที่ 7 +STR_DAY_NUMBER_8TH :วันที่ 8 +STR_DAY_NUMBER_9TH :วันที่ 9 +STR_DAY_NUMBER_10TH :วันที่ 10 +STR_DAY_NUMBER_11TH :วันที่ 11 +STR_DAY_NUMBER_12TH :วันที่ 12 +STR_DAY_NUMBER_13TH :วันที่ 13 +STR_DAY_NUMBER_14TH :วันที่ 14 +STR_DAY_NUMBER_15TH :วันที่ 15 +STR_DAY_NUMBER_16TH :วันที่ 16 +STR_DAY_NUMBER_17TH :วันที่ 17 +STR_DAY_NUMBER_18TH :วันที่ 18 +STR_DAY_NUMBER_19TH :วันที่ 19 +STR_DAY_NUMBER_20TH :วันที่ 20 +STR_DAY_NUMBER_21ST :วันที่ 21 +STR_DAY_NUMBER_22ND :วันที่ 22 +STR_DAY_NUMBER_23RD :วันที่ 23 +STR_DAY_NUMBER_24TH :วันที่ 24 +STR_DAY_NUMBER_25TH :วันที่ 25 +STR_DAY_NUMBER_26TH :วันที่ 26 +STR_DAY_NUMBER_27TH :วันที่ 27 +STR_DAY_NUMBER_28TH :วันที่ 28 +STR_DAY_NUMBER_29TH :วันที่ 29 +STR_DAY_NUMBER_30TH :วันที่ 30 +STR_DAY_NUMBER_31ST :วันที่ 31 ############ range for days ends ############ range for months starts @@ -805,18 +825,16 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}เกิดแมลงศัตรูพืชอย่างหนักที่ {INDUSTRY}!ผลผลิต{}ลงลง 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} ผลผลิตของ {INDUSTRY} ลดลง {COMMA}%! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} กำลังรอในโรงซ่อมบำรุง +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} กำลังรอในอู่ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงซ่อม STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในอู่ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงจอด -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} มีคำสั่งน้อยเกินไปในกำหนดการเดินทาง STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} มีคำสั่งว่าง STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} มีคำสั่งซ้ำซ้อน STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} มีสถานีที่ใช้ไม่ได้ในคำสั่ง -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} เริ่มเก่าแล้ว STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} เก่ามากแล้ว @@ -852,10 +870,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}มุมมอง {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}คัดลองไปยังมุมมอง +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}คัดลอกไปยังมุมมอง STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}คัดลอกตำแหน่งของมุมมองหลังมายังมุมมองนี้ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}วางจากมุมมอง -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}วางต่ำแหน่งจากมุมมองนี้ไปยังมุมมองหลัก +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}วางตำแหน่งจากมุมมองนี้ไปยังมุมมองหลัก # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}ตัวเลือกเกม @@ -892,17 +910,13 @@ STR_GAME_OPTIONS_CURRENCY_SKK :โครูน STR_GAME_OPTIONS_CURRENCY_BRL :เรียล บราซิล (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :ครูนิ เอสโทเนีย (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) +STR_GAME_OPTIONS_CURRENCY_KRW :วอน เกาหลีใต้ (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :ระบุเอง... STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}ยานยนต์ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}เลือกฝั่งถนนในการขับยานพาหนะ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :ขับชิดซ้าย @@ -938,11 +952,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :คาตาล STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}บันทึกเกมอัตโนมัติ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}เลือกระยะห่างระหว่างการบันทึกเกมอัตโนมัติแต่ละครั้ง +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :ปิด STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ทุกๆเดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ทุก 3 เดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ทุก 6 เดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ทุก 12 เดือน +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}ภาษา STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}เลือกภาษาที่จะใช้ @@ -954,8 +970,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}คว STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}เลือกความละเอียดของหน้าจอที่จะใช้ STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}สกุลไฟล์ของ Screenshot -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}เลือกรูปแบบหน้าจอที่จะใช้ + STR_GAME_OPTIONS_BASE_GRF :{BLACK}ตั้งค่า Graphic พื้นฐาน STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}เลือกและตั้งค่าฐานกราฟิกที่จะใช้ @@ -1003,7 +1018,7 @@ STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}จำ STR_NONE :ไม่มี STR_FUNDING_ONLY :ระดมทุนเท่านั้น -STR_MINIMAL :ต่ำสุด +STR_MINIMAL :ขั้นต่ำ STR_NUM_VERY_LOW :ต่ำมาก STR_NUM_LOW :ต่ำ STR_NUM_NORMAL :ปกติ @@ -1047,8 +1062,8 @@ STR_SUBSIDY_X4 :4 เท่า STR_TERRAIN_TYPE_VERY_FLAT :แบนราบมาก STR_TERRAIN_TYPE_FLAT :แบนราบ -STR_TERRAIN_TYPE_HILLY :เป็นเนิน -STR_TERRAIN_TYPE_MOUNTAINOUS :แบบภูเขา +STR_TERRAIN_TYPE_HILLY :เนินเขา +STR_TERRAIN_TYPE_MOUNTAINOUS :ภูเขาสูง STR_CITY_APPROVAL_PERMISSIVE :อนุญาต STR_CITY_APPROVAL_TOLERANT :พอผ่อนผันให้ได้ @@ -1056,8 +1071,7 @@ STR_CITY_APPROVAL_HOSTILE :ไม่เป STR_WARNING_NO_SUITABLE_AI :{WHITE}ไม่มี AI ที่เหมาะสมปรากฎ...{}คุณสามารถดาวน์โหลด AI จากระบบ 'Online Content' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}การตั้งค่าขั้นสูง +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}เติม string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}ขยายทั้งหมด STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}ยุบลงทั้งหมด @@ -1070,7 +1084,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :ตั้งค STR_CONFIG_SETTING_TYPE_COMPANY_MENU :ตั้งค่าองค์กร (ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะการเริ่มเกมใหม่) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :ตั้งค่าองค์กร (ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะเกมปัจจุบัน) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}แสดง: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}จำกัดรายการด้านล่างให้แสดงเฉพาะการตั้งค่าที่มีการเปลี่ยนแปลง STR_CONFIG_SETTING_RESTRICT_BASIC :ตั้งค่าพื้นฐาน STR_CONFIG_SETTING_RESTRICT_ADVANCED :ตั้งค่าขั้นสูง @@ -1091,7 +1104,7 @@ STR_CONFIG_SETTING_ON :เปิด STR_CONFIG_SETTING_DISABLED :ไม่ให้เรียกใช้งาน STR_CONFIG_SETTING_COMPANIES_OFF :ปิด -STR_CONFIG_SETTING_COMPANIES_OWN :บริษัทที่เป็นเจ้าของ +STR_CONFIG_SETTING_COMPANIES_OWN :บริษัทในเครือ STR_CONFIG_SETTING_COMPANIES_ALL :บริษัททั้งหมด STR_CONFIG_SETTING_NONE :ไม่มี @@ -1111,9 +1124,9 @@ STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :กำหนด STR_CONFIG_SETTING_CONSTRUCTION_SPEED :ควานเร็วในการก่อสร้าง: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :จำกัด จำนวนของการกระทำก่อสร้างสำหรับ AIs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :ยานพาหนะขัดข้อง: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :ควบคุมความถี่ในการซ่่อมบำรุงยานพาหนะ หากได้รับการซ่อมบำรุงไม่เพียงพอยานพาหนะอาจเกิดอาการขัดข้องอยู่บ่อยครั้ง +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :ควบคุมความถี่ในการตรวจสภาพยานพาหนะ หากได้รับการตรวจสภาพไม่เพียงพออาจเกิดอาการขัดข้องบ่อยครั้งได้ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :อัตราของการให้เงินสนับสนุนโครงการ: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :ตั้งค่าการอุดหนุดสำหรับการเชื่อมต่อ +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :ตั้งค่าเงินสนับสนุนสำหรับการเชื่อมต่อ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :ค่าใช้จ่ายในการก่อสร้า: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :การตั้งค่าระดับของค่าใช้จ่ายในการก่อสร้างและซื้อ STR_CONFIG_SETTING_RECESSIONS :เศรษฐกิจถดถอย: {STRING} @@ -1125,14 +1138,12 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :ภัยพิ STR_CONFIG_SETTING_CITY_APPROVAL :ทัศนคติสภาเทศบาลเมืองที่มีต่อการปรับโครงสร้างพื้นที่: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :เลือกความรุนแรงของการทำลายสิ่งแวดล้อมและเสียงรบกวนจากบริษัทที่ส่งผลต่อความนิยมในเมืองและการก่อสร้างของพวกเขา -STR_CONFIG_SETTING_BUILDONSLOPES :อนุญาตให้สร้างบนทางลาดและตลิ่งชายฝั่ง: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้สามารถสร้างเส้นทางหรือสถานีบนพื้นที่ลาดเอียงได้ STR_CONFIG_SETTING_AUTOSLOPE :อนุญาตให้เปลี่ยนสภาพพื้นผิวใต้สิ่งก่อสร้าง, ราง, ฯลฯ (ปรับความชันอัตโนมัติ): {STRING} -STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :อนุญาตให้ปรับสภาพพื้นที่ได้โดยไม่ต้องรือถอนสาธารณูประโภค +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :อนุญาตให้ปรับสภาพพื้นที่ได้โดยไม่ต้องรื้อถอนสาธารณูปโภค STR_CONFIG_SETTING_CATCHMENT :อนุญาตให้มีขนาดของพื้นที่บริการของสถานีที่สมเหตุสมผลมากขึ้น: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :สร้างความแตกต่างของพื้นที่บริการสำหรับสถานีในประเภทที่แตกต่างกัน STR_CONFIG_SETTING_EXTRADYNAMITE :อนุญาตให้ทำลายถนน, สะพาน, สิ่งก่อสร้างของเมืองได้มากขึ้น: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :ทำให้ง่ายขึ้นสำหรับการรื้อถอนสาธารณูประโภคและสิ่งปลูกสร้างของเมือง +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :ทำให้ง่ายขึ้นสำหรับการรื้อถอนสาธารณูปโภคและสิ่งปลูกสร้างของเมือง STR_CONFIG_SETTING_TRAIN_LENGTH :ความยาวสูงสุดของขบวนรถไฟ: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :เลือกตั้งค่าความยาวสูงสุดของขบวนรถไฟ STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ช่อง @@ -1151,14 +1162,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :ห้ามร STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :ไม่อนุญาตให้รถไฟเลี้ยวโค้งแบบ 90 องศาได้ STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :อนุญาตให้เป็นสถานีเดียวกันแม้ไม่ได้ติดกัน: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :อนุญาตให้มีการสร้างชิ้นส่วนที่เป็นของสถานีให้แยกออกจากกันโดยไม่ต้องมีชิ้นส่วนอื่นๆที่เชื่อมต่อถึงกันได้ ต้องกด Ctrl+Click ในการใช้งาน -STR_CONFIG_SETTING_IMPROVEDLOAD :ใช้รูปแบบการขนถ่ายสินค้าที่มีการปรับปรุงประสิทธิภาพแล้ว: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :โดยปกติ หากมียานพาหนะ 2 คัน/ลำ เทียบอยู่เพื่อขนถ่ายสินค้า ระบบจะให้สิืทธิ์ผู้ที่มาก่อนเสมอ แต่หากเปิดใช้งานส่วนนี้ระบบจะทำการกระจายสินค้าออกไปอย่างเหมาะสม -STR_CONFIG_SETTING_GRADUAL_LOADING :บรรจุเข้าไปในพาหนะทีละน้อยๆ: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :ยานพาหนะจะใช้เวลาในการโหลดสินค้าและสัมภาระมากขึ้นเพื่อความสมจริง สำหรับรถไฟหากชานชาลามีความยาวไม่เพียงพอจะทำให้ระยะเวลาในการโหลดสินค้าเพิ่มมากขึ้น STR_CONFIG_SETTING_INFLATION :ภาวะเงินเฟ้อ: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :เมื่อเปิดการใช้งานอัตราเงินเฟ้อ ค่าเงินจะถูกลงและต้องใช้เงินมากขึ้นในการซื้อหรือสร้าง แต่ผลตอบแทนจากการขนส่งก็จะเพิ่มขึ้นด้วยเช่นกัน -STR_CONFIG_SETTING_SELECTGOODS :ส่งสินค้าที่บรรทุกลงที่สถานีที่มีความต้องการเท่านั้น: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :จะสามารถขนส่งสินค้าไปยังสถานีได้ต่อเมื่อมีการเรียกจากยานพาหนะที่ขนส่ง การที่มีความนิยมต่ำจะทำให้สินค้าไม่ใช้บริการที่สถานี STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :ความยาวสูงสุดของสะพาน: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :ปรับความยาวสูงสุดสำหรับการสร้างสะพาน STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :ความยาวสูงสุดของอุโมงค์: {STRING} @@ -1186,8 +1191,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :เลือก STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ฝั่งใกล้ STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :ตรงกลาง STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ฝั่งไกล -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :การเข้าคิวรถ (มี quantum effects): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :ทำให้รถ รออยู่ที่ทางแยกจนกว่าถนนข้างหน้าที่การจราจรจะโล่ง STR_CONFIG_SETTING_AUTOSCROLL :เลื่อนหน้าต่างเมื่อเม้าส์อยู่ใกล้ขอบหน้าจอ: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :เมื่อเปิดใช้งานจะสามารถเลื่อนหน้าจอโดยการใช้เมาส์ไปแตะที่ขอบจอได้ STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :ไม่ใช้งาน @@ -1218,10 +1221,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :อนุญา STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนของเมืองได้ STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :อนุญาตให้มีที่หยุดรถแบบขับผ่านบนถนนของบริษัทอื่นๆ: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนที่สร้างโดยบริษัทอื่นได้ -STR_CONFIG_SETTING_ADJACENT_STATIONS :อนุญาตให้สร้างสถานีที่ไม่มีส่วนที่ติดกันได้: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :สามารถสร้างสถานีรับส่งประเภทอื่นๆติดกันได้ -STR_CONFIG_SETTING_DYNAMIC_ENGINES :เปิดใช้งาน NewGRF ประเภทเดียวกัน หลายชุดพร้อมกัน: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :ความเข้ากันได้ของ NewGRFs เก่าๆ ไม่ควรทำการปิดระบบนี้ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}ไม่สามารถเปลี่ยนการตั้งค่านี้ได้เมื่อมียานพาหนะ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :ค่าบำรุงรักษาโครงสร้างพื้นฐาน: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :เมื่อเปิดใช้งาน สาธารณูประโภคที่สร้างโดยบริษัทจะมีค่าบำรุงรักษา ยิ่งเครือข่ายยิ่งมากจะยิ่งเสียค่าใช้จ่ายมากขึ้น @@ -1279,8 +1278,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :ทิศกา STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :ทวนเข็มนาฬิกา STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :ตามเข็มนาฬิกา STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :ค่าระดับความสูงต่ำสุดของพื้นราบ: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :ยอมให้เปลี่ยนสภาพพื้นผิวบริเวณช่องริมขอบแผนที่: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :ถ้าปิด ขอบแผนที่จะเป็นน้ำเสมอ STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}ขอบทางเหนือมีอย่างน้อยหนึ่งช่องหรือมากกว่านั้นที่ไม่ว่าง STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}หนึ่งช่องหรือมากกว่านั้นที่ขอบด้านในด้านหนึ่งไม่ใช่น้ำ @@ -1331,17 +1328,13 @@ 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_DATE_FORMAT_IN_SAVE_NAMES :ใช้รูปแบบวันที่ {STRING} เป็นชื่อเซฟของเกม STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :เพิ่มวันที่ในเกมลงไปในชื่อเซฟเกม เมื่อมีการเซฟเกมจะแนบวันที่ในเกมลงไปในชื่อเซฟเกมด้วยโดยอัตโนมัติ แต่หากผู้เล่นต้องการเปลี่ยนแปลงชื่อเซฟเกมก็สามารถกระทำได้ตามสะดวก STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ยาว (31 ธันวาคม 2013) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :สั้น (31-12-2013) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :มาตรฐาน (2013-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :เลือกใช้ Palette ของ NewGRFs ที่ไม่สามารถระบุประเภทได้ (Dos/Windows): {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :จะมี NewGRFs บางตัวที่ไม่สามารถระบุประเภทว่าใช้ Pelette ของ Dos หรือของ Windows การเลือกตัวเลือกนี้จะเป็นการเลือกค้าแรกเริ่มให้กับ NewGRFs เหล่านั้น -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :หยุดเกมอัตโนมัติเมื่อเริ่มเกมใหม่: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :เมื่อเปิดใช้งาน เกมจะหยุดอัตโนมัติเมื่อมีการเริ่มเกมใหม่ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :อนุญาตให้ทำสิ่งเหล่านี้เมื่อหยุดเกม: {STRING} @@ -1563,8 +1556,6 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ใน {COMMA STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ไม่มี STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :ตัวคูณขนาดเมืองเริ่มต้น: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ขนาดโดยเฉลี่ยของเมืองใหญ่ที่สัมพันธ์กับเมืองปกติ -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :นำสิ่งที่เป็นอุปสรรคของถนนออกระหว่างการก่อสร้างถนน: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :ลบทางตันของถนนระหว่างการใช้งานการปรับปรุงถนนในท้องถิ่น STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :อัพเดทกราฟการกระจายสินค้าทุกๆ {STRING} วัน STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :เวลาระหว่างการคำนวณหาเส้นทางการเชื่อมต่อของกราฟ. ทุกครั้งที่มีำการคำนวณใหม่ มีการวางแผนสำหรับหนึ่งชิ้นส่วนในกราฟ ค่าที่ตั้งไว้นี้ คือค่าที่จะให้มีการอัพเดททุกๆเวลากี่วัน การตั้งให้คำนวณถี่มากๆจะกินทรัพยากรเครื่องของท่าน @@ -1626,27 +1617,17 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :อิมพี STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :เมตริก (เมตร) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :มาตรฐานสากล (เมตร) -STR_CONFIG_SETTING_GUI :{ORANGE}ส่วนเชื่อมต่อผู้ใช้ STR_CONFIG_SETTING_LOCALISATION :{ORANGE}มาตราวัดต่างๆ -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}การก่อสร้าง +STR_CONFIG_SETTING_SOUND :{ORANGE}เสียงเอฟเฟกต์ +STR_CONFIG_SETTING_INTERFACE :{ORANGE}ส่วนเชื่อมต่อผู้ใช้ +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}การก่อสร้าง STR_CONFIG_SETTING_VEHICLES :{ORANGE}ยานพาหนะ -STR_CONFIG_SETTING_STATIONS :{ORANGE}สถานี -STR_CONFIG_SETTING_ECONOMY :{ORANGE}เศรฐกิจ -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}การกระจายสินค้า +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}การค้นหาเส้นทางของพาหนะ +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}เมือง +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}อุตสาหกรรม +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}การกระจายสินค้า STR_CONFIG_SETTING_AI :{ORANGE}คู่แข่ง -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}ตัวเลือกการแสดงผล -STR_CONFIG_SETTING_INTERACTION :{ORANGE}การโต้ตอบ -STR_CONFIG_SETTING_SOUND :{ORANGE}เสียงเอฟเฟกต์ -STR_CONFIG_SETTING_NEWS :{ORANGE}ข่าวสารและข้อความ -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}อาณัติสัญญาณ -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}การขนถ่าย STR_CONFIG_SETTING_AI_NPC :{ORANGE}ผู้เล่นคอมพิวเตอร์ -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}การแทนที่อัตโนมัติ -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}เกี่ยวกับการซ่อมบำรุง -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}การค้นหาเส้นทางของพาหนะ -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}รถไฟ -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}เมือง -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}อุตสาหกรรม STR_CONFIG_SETTING_PATHFINDER_OPF :ดั้งเดิม STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1676,6 @@ STR_INTRO_MULTIPLAYER :{BLACK}เล STR_INTRO_GAME_OPTIONS :{BLACK}ตัวเลือกเกม STR_INTRO_HIGHSCORE :{BLACK}ตารางคะแนนสูงสุด -STR_INTRO_ADVANCED_SETTINGS :{BLACK}การตั้งค่าขั้นสูง STR_INTRO_NEWGRF_SETTINGS :{BLACK}การตั้งค่า NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}ตรวจสอบเนื้อหาออนไลน์ STR_INTRO_SCRIPT_SETTINGS :{BLACK}ตั้งค่า AI/Game Script @@ -1715,7 +1695,6 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}เล STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}แสดงตัวเลือกเกม STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}แสดงตารางคะแนนสูงสุด -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}แสดงการกำหนดค่าขั้นสูง STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}แสดงการกำหนดค่า NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}ตรวจสอบเนื้อหาใหม่และการปรับปรุงสำหรับดาวโหลด STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}แสดงการตั้งค่า AI/Game script @@ -1803,6 +1782,7 @@ STR_LIVERY_FREIGHT_TRAM :รถราง STR_FACE_CAPTION :{WHITE}เลือกใบหน้า STR_FACE_CANCEL_TOOLTIP :{BLACK}ยกเลิการเลือกใบหน้าใหม่ STR_FACE_OK_TOOLTIP :{BLACK}ยอมรับการเลือกใบหน้าใหม่ +STR_FACE_RANDOM :{BLACK}สุ่ม STR_FACE_MALE_BUTTON :{BLACK}ผู้ชาย STR_FACE_MALE_TOOLTIP :{BLACK}เลือกใบหน้าผู้ชาย @@ -2042,6 +2022,7 @@ STR_NETWORK_CLIENT :ลูกข่ STR_NETWORK_SPECTATORS :ผู้ชม STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}กรอกจำนวนเงินที่ต้องการจะให้ +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}ผู้สังเกตุการณ์ # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว @@ -2068,7 +2049,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[ทีม] ถ STR_NETWORK_CHAT_CLIENT :[ส่วนตัว] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[ส่วนตัว] ถึง {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[ทั้งหมด] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_OSKTITLE :{BLACK}พิมพ์ข้อความสำหรับการพูดคุณในเน็ทเวิร์ก +STR_NETWORK_CHAT_OSKTITLE :{BLACK}พิมพ์ข้อความสำหรับการคุยในเครือข่าย # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ไม่พบอุปกรณ์เน็ทเวิร์กหรือได้ผ่านการคอมไพล์โดยไม่ได้ตัวเลือกนี้ ENABLE_NETWORK @@ -2304,7 +2285,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}สร STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะแสดง STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะสร้าง -STR_STATION_CLASS_DFLT :Default station +STR_STATION_CLASS_DFLT :สถานีมาตรฐาน STR_STATION_CLASS_WAYP :จุดตรวจ # Signal window @@ -2642,7 +2623,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-2013 ของ The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2015 ของ The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม @@ -2679,10 +2660,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}จำ STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}เส้นความสูงเขตหิมะ: STR_MAPGEN_SNOW_LINE_UP :{BLACK}ปรับเปลี่ยนความสูงของหิมะขึ้นไป 1 ระดับ STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}ปรับเปลี่ยนความสูงของหิมะลงมา 1 ระดับ -STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}คลิ๊กเมาส์เพื่อ random seed -STR_MAPGEN_RANDOM :{BLACK}สุ่ม -STR_MAPGEN_RANDOM_HELP :{BLACK}เปลี่ยนการ random seed สำหรับการสร้างพื้นดิน STR_MAPGEN_LAND_GENERATOR :{BLACK}เครื่องมือสร้างสภาพพื้นดิน: STR_MAPGEN_TREE_PLACER :{BLACK}Tอัลกอริธึมต้นไม้: STR_MAPGEN_TERRAIN_TYPE :{BLACK}ประเภทภูมิประเทศ: @@ -2709,7 +2686,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}ชื STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}ขนาด: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}ป้อนค่า random seed STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}ปรับเปลี่ยนความสูงของระดับหิมะ STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีที่เริ่มต้นเกม @@ -2788,6 +2764,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}หาไ STR_NEWGRF_SETTINGS_DISABLED :{RED}ไม่ใช้งาน STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}ไม่รองรับกับ OpenTTD เวอร์ชั่นนี้ +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}เปลี่ยนแปลง NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}ปิด @@ -2818,7 +2796,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันก่อนหน้า โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดเริ่มต้น STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}แสดง sprite ที่เลือกใหม่อีกครั้ง STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}ย้าย sprite wxiv[q, แก้ไขแกน X และ Y สำหรับความคลาดเคลื่อน -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X คลาดเคลื่อน: {NUM}, Y คลาดเคลื่อน: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}หยิบ sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}หยิบ sprite จากที่ใดก็ตามในหน้าจอ @@ -2889,6 +2866,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} ขอ STR_NEWGRF_INVALID_ENGINE :<ตัวยานพาหนะไม่ถูกต้อง> STR_NEWGRF_INVALID_INDUSTRYTYPE :<อุตสาหกรรมไม่ถูกต้อง> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<ตัวยานพาหนะไม่ถูกต้อง> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}ตรวจสอบ NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}ตรวจสอบ NewGRFs. ขึ้นอยู่กับจำนวนที่มี อาจใช้เวลาสักครู่... @@ -2987,7 +2967,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :ข้อมู STR_GOAL_QUESTION_CAPTION_WARNING :คำเตือน STR_GOAL_QUESTION_CAPTION_ERROR :ข้อผิดพลาด -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :ยกเลิก STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :ไม่ @@ -3006,6 +2986,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :เริ่ม STR_GOAL_QUESTION_BUTTON_POSTPONE :เลื่อนออกไป STR_GOAL_QUESTION_BUTTON_SURRENDER :ยอมจำนน STR_GOAL_QUESTION_BUTTON_CLOSE :ปิด +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}เงินอุดหนุน @@ -3026,6 +3007,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}ก่ STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}หน้าก่อนหน้า STR_STORY_BOOK_NEXT_PAGE :{BLACK}ถัดไป STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}หน้าถัดไป +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}จุดอ้างอิงเป้าหมายผิดพลาด # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}ชื่อสถานี - กดที่ชื่อเพื่อไปยังจุดกึ่งกลาง @@ -3040,7 +3022,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}ไม # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}กำลังรอ: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} จาก {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} สำรองไว้สำหรับการขนถ่าย) @@ -3290,6 +3271,7 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}ลบ STR_GROUP_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อกลุ่มที่เลือก STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}กดเพื่อป้องกันกลุ่มนี้จากการใช้งาน แทนที่ใหม่อัตโนมัติ + STR_GROUP_ADD_SHARED_VEHICLE :เพิ่มยานพาหนะที่ใช้รายการคำสั่งเดียวกัน STR_GROUP_REMOVE_ALL_VEHICLES :ลบยานพาหนะทั้งหมด @@ -3322,7 +3304,7 @@ STR_PURCHASE_INFO_COST_SPEED :{BLACK}มู STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}ความจุ: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}รถเสริมกำลัง: {GOLD}+{POWER}{BLACK} น้ำหนัก: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}ดัดแปลงเป็น: {GOLD}{STRING} -STR_PURCHASE_INFO_ALL_TYPES :ได้ทุกประเภทสินค้า +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} ช่อง @@ -3352,6 +3334,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}เป STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของเรือ STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของเครื่องบิน + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของรถไฟ STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของรถ STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของเรือ @@ -3456,6 +3441,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :ยานพา STR_REPLACE_VEHICLE_SHIP :ยานพาหนะทางน้ำ STR_REPLACE_VEHICLE_AIRCRAFT :อากาศยาน + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}เลือกประเภทของรถจักรที่จะแทนที่ STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}เลือกประเภทของพาหนะที่จะแทนที่ทางซ้ายมือ @@ -3939,6 +3925,8 @@ STR_AI_SETTINGS_START_DELAY :จำนวน STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme ของ {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog ของ {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} การอนุญาตของ {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap อักษร +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}จัดตัวอักษรให้พอดีกับหน้าต่าง จะได้พอดีโดยไม่ต้อง scroll STR_TEXTFILE_VIEW_README :{BLACK}แสดง readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}ข้อมูลการอัพเดต STR_TEXTFILE_VIEW_LICENCE :{BLACK}การอนุญาต @@ -4002,7 +3990,7 @@ STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}สเ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}ไม่แนะนำให้ทำการลดขนาดภาพต้นฉบับ. แน่ใจหรือไม่ว่าต้องการทำต่อ? # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}ค้นพบเฉพาะำไฟล์เสียงบางไฟล์. หากต้องการฟังเสียงอื่นๆ ทำการดาวโหลดและติดตั้งจาก Content Download System +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}พบเฉพาะไฟล์เสียงสำรอง. หากต้องการฟังเสียงอื่นๆ โปรดดาวน์โหลดและติดตั้งจาก Content Download System # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}ภาพถ่ายขนาดใหญ่ @@ -4062,8 +4050,8 @@ STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}ไม STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}ไม่สามารถส่งเงินได้ นี่คือเงินกู้ที่มาจากธนาคาร... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}ไม่สามารถซื้อกิจการได้... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}ไม่สามารถสร้างสำนักงานได้... -STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}ไม่สามารถซื้อหุ้น 25% จากริษัทนี้ได้... -STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}ไม่สามารถขายหุ้น 25% จากริษัทนี้ได้... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}ไม่สามารถซื้อหุ้น 25% จากบริษัทนี้ได้... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}ไม่สามารถขายหุ้น 25% จากบริษัทนี้ได้... STR_ERROR_PROTECTED :{WHITE}บริษัทนี้ยังไม่เก่าแก่พอที่จะซื้อหุ้นหรือซื้อกิจการได้... # Town related errors @@ -4083,12 +4071,12 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ท # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... มีอุตสาหกรรมมากเกินไป STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}ไม่สามารถสร้างอุตสาหกรรมได้... -STR_ERROR_CAN_T_BUILD_HERE :{WHITE}ไม่สามารถสร้าง {STRING} ได้ที่นี่... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}บริเวณนี้ไม่สามารถสร้าง {STRING} ได้... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}ไม่สามารถสร้างอุตสาหกรรมประเภทนี้่ได้ที่นี่... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ใกล้กับอุตสาหกรรมอื่นมากเกินไป STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... ต้องสร้างเมืองก่อน STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... อนุญาตให้สร้างได้แค่หนึ่งเดียวต่อเมืองหนึ่งเมือง -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... จะสามารถสร้างได้ต่อเมื่อเมืองมีประชากรอย่างต่ำ 1200 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... จะสามารถสร้างได้ต่อเมื่อเมืองมีประชากรอย่างน้อย 1200 คน STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... สามารถสร้างได้เฉพาะพื้นที่ป่าฝนเขตร้อน STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... สามารถสร้างได้เฉพาะในทะเลทราย STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... สามารถสร้างได้เฉพาะในเมืองเท่านั้น (แทนที่บ้าน) @@ -4099,8 +4087,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ส STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... สามารถสร้างได้ที่ระดับเหนือกว่าระดับหิมะเท่านั้น STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... สามารถสร้างได้ที่ระดับต่ำกว่าระดับหิมะเท่านั้น + # Station construction related errors -STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}ตรงนี้ไม่สามารถสร้างสถานีรถไฟได้ +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}บริเวณนี้ไม่สามารถสร้างสถานีรถไฟได้ STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}ไม่สามารถสร้าง ป้ายหยุดรถ/สถานีขนส่ง STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}ไม่สามารถสร้างสถานีรถบรรทุกได้ STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}ไม่สามารถสร้างสถานีผู้โดยสารรถรางได้ @@ -4155,19 +4144,19 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... ม STR_ERROR_BUOY_IS_IN_USE :{WHITE}... เป็นทุ่นของบริษัทอื่น # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}ไม่สามารถสร้างโรงซ่อมบำรุงรถไฟได้ -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}ตรงนี้ไม่สามารถสร้างโรงซ่อมบำรุงรถได้ +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}ไม่สามารถสร้างอู่รถไฟได้ +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}บริเวณนี้ไม่สามารถสร้างอู่รถได้ STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}ไม่สามารถสร้างโรงซ่อมบำรุงรถรางได้... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}ไม่สามารถสร้างอู่เรือได้... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}บริเวณนี้ไม่สามารถสร้างอู่เรือได้... -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}ไม่สามารถเปลี่ยนชื่อโรงซ่อมบำรุงได้.. +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}ไม่สามารถเปลี่ยนชื่ออู่ได้.. -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องหยุดในโรงซ่อมบำรุง -STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องทำการจอดสมบูรณ์ในโรงซ่อมบำรุง -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องหยุดในโรงซ่อมบำรุง +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... ต้องหยุดในโรงเก็บ -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}สามารถปรับเปลี่ยนเกี่ยวกับรถไฟได้เมื่อจอดสมบูรณ์ในโรงซ่อมบำรุง +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}สามารถปรับเปลี่ยนรถไฟได้ต่อเมื่อจอดสนิทในอู่เท่านั้น STR_ERROR_TRAIN_TOO_LONG :{WHITE}ขบวนรถยาวเกินไป STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}ไม่สามารถกลับขบวนรถได้ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... ไม่สามารถกลับข้างของรถที่พ่วงพหุกันอยู่ได้ @@ -4175,10 +4164,10 @@ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :ไม่สา STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}ไม่สามารถลบยานพาหนะได้... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}รถจักรตามหลังจะตามรถจักรคันหน้าแบบกลับข้างกันเสมอ -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}ไม่สามารถค้นหาเส้นทางที่จะไปยังโรงซ่อมบำรุงใกล้เคียงได้ -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}ไม่สามารถค้นหาโรงซ่อมบำรุงใกล้เคียงได้ +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}ไม่สามารถหาทางที่จะไปยังอู่ในละแวกได้ +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}ไม่สามารถค้นหาอู่ในละแวกได้ -STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :โรงซ่อมบำรุงผิดประเภท +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :อู่ผิดประเภท # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} จะยาวเกินไปหลังจากแทนที่ใหม่ @@ -4193,7 +4182,7 @@ STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}ต้ STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}ถนนเป็นทางเดียวหรือถูกปิดกั้น STR_ERROR_CROSSING_DISALLOWED :{WHITE}ทางตัดเสมอระดับทางไม่อนุญาตให้ตัดผ่านทางประเภทนี้ STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}ไม่สามารถสร้างเสาอาณัติสัญญาณได้... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}ตรงนี้ไม่สามารถสร้างรางรถไฟได้... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}บริเวณนี้ไม่สามารถสร้างรางรถไฟได้... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}ตรงนี้ไม่สามารถลบรางรถไฟออกไปได้ STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}ไม่สามารถลบเสาอาณัติสัญญาณได้... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}ไม่สามารถแปลงเสาอาณัติสัญญาณได้... @@ -4286,7 +4275,7 @@ STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}ไม STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}ไม่สามารถ หยุด/เริ่ม เรือ... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}ไม่สามารถ หยุด/เริ่ม อากาศยาน... -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}ไม่สามารถส่่งรถไฟไปยังโรงซ่อมบำรุง... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}ไม่สามารถส่่งรถไฟไปยังอู่ STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}ไม่สามารถส่่งรถไปยังโรงซ่อมบำรุง... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}ไม่สามารถส่่งเรือไปยังโรงซ่อมบำรุง... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}ไม่สามารถส่่งอากาศยานไปยังโรงซ่อมบำรุง... @@ -4495,7 +4484,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) @@ -4520,28 +4509,28 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elect STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passenger Carriage STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Mail Van -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Truck +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :รถบรรทุกถ่านหิน STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Livestock Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goods Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Grain Hopper -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Wood Truck +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :รถบรรทุกซุง STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Armoured Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Food Van -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Paper Truck +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :รถบรรทุกกระดาษ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Copper Ore Hopper -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Water Tanker -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruit Truck -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Rubber Truck -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sugar Truck +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :ถังเก็บน้ำ +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :รถบรรทุกผลไม้ +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :รถบรรทุกยางพารา +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :รถบรรทุกน้ำตาล STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Candyfloss Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Bubble Van -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cola Tanker -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Sweet Van -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Toy Van +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :ถังเก็บโคล่า +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :รถขนส่งขนม +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :รถขนส่งของเล่น STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Battery Truck STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Truck STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastic Truck @@ -4549,7 +4538,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electr STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passenger Carriage -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Mail Van +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :รถขนส่งไปรษณีย์ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Livestock Van @@ -4558,8 +4547,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Wood Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Armoured Van -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Food Van +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :รถขนส่งหุ้มเกราะ +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :รถขนส่งอาหาร STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Paper Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Water Tanker @@ -4568,7 +4557,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Rubber Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sugar Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Candyfloss Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffee Hopper -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Bubble Van +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :รถขนส่งฟอง STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Sweet Van STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Toy Van @@ -4704,7 +4693,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo ship -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo ship +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4833,8 +4822,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE} {CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4832,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 13249caf99..56bba19acb 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :汽水 # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} 名乘客 +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}名乘客 STR_QUANTITY_COAL :{WEIGHT_LONG} 煤碳 -STR_QUANTITY_MAIL :{COMMA} 包郵件 +STR_QUANTITY_MAIL :{COMMA}{NBSP}包郵件 STR_QUANTITY_OIL :{VOLUME_LONG} 石油 -STR_QUANTITY_LIVESTOCK :{COMMA} 頭牲畜 -STR_QUANTITY_GOODS :{COMMA} 箱商品 +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}頭牲畜 +STR_QUANTITY_GOODS :{COMMA}{NBSP}箱商品 STR_QUANTITY_GRAIN :{WEIGHT_LONG} 穀物 STR_QUANTITY_WOOD :{WEIGHT_LONG} 木材 STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} 鐵礦 STR_QUANTITY_STEEL :{WEIGHT_LONG} 鋼鐵 -STR_QUANTITY_VALUABLES :{COMMA} 包貴重物品 +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}包貴重物品 STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} 銅礦 STR_QUANTITY_MAIZE :{WEIGHT_LONG} 玉米 STR_QUANTITY_FRUIT :{WEIGHT_LONG} 水果 -STR_QUANTITY_DIAMONDS :{COMMA} 包鑽石 +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}包鑽石 STR_QUANTITY_FOOD :{WEIGHT_LONG} 食物 STR_QUANTITY_PAPER :{WEIGHT_LONG} 紙張 -STR_QUANTITY_GOLD :{COMMA} 包黃金 +STR_QUANTITY_GOLD :{COMMA}{NBSP}包黃金 STR_QUANTITY_WATER :{VOLUME_LONG} 淡水 STR_QUANTITY_WHEAT :{WEIGHT_LONG} 小麥 STR_QUANTITY_RUBBER :{VOLUME_LONG} 橡膠 STR_QUANTITY_SUGAR :{WEIGHT_LONG} 砂糖 -STR_QUANTITY_TOYS :{COMMA} 件玩具 -STR_QUANTITY_SWEETS :{COMMA} 包甜點 +STR_QUANTITY_TOYS :{COMMA}{NBSP}件玩具 +STR_QUANTITY_SWEETS :{COMMA}{NBSP}包糖果 STR_QUANTITY_COLA :{VOLUME_LONG} 可樂 STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} 棉花糖 STR_QUANTITY_BUBBLES :{COMMA} 個泡泡 @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}無 STR_ABBREV_ALL :{TINY_FONT}全 # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} 乘客 -STR_BAGS :{COMMA} 包 -STR_TONS :{COMMA} 噸 -STR_LITERS :{COMMA} 公升 -STR_ITEMS :{COMMA} 件 -STR_CRATES :{COMMA} 箱 +STR_PASSENGERS :{COMMA}{NBSP}名乘客 +STR_BAGS :{COMMA}{NBSP}包 +STR_TONS :{COMMA}{NBSP}噸 +STR_LITERS :{COMMA}{NBSP}公升 +STR_ITEMS :{COMMA}{NBSP}頭 +STR_CRATES :{COMMA}{NBSP}箱 # Colours, do not shuffle STR_COLOUR_DARK_BLUE :暗藍 @@ -191,42 +191,42 @@ STR_COLOUR_GREY :灰 STR_COLOUR_WHITE :白 # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/小時 -STR_UNITS_VELOCITY_METRIC :{COMMA} 公里/小時 -STR_UNITS_VELOCITY_SI :{COMMA} 米/秒 +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}英里/小時 +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}公里/小時 +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}米/秒 -STR_UNITS_POWER_IMPERIAL :{COMMA}匹 -STR_UNITS_POWER_METRIC :{COMMA}匹 -STR_UNITS_POWER_SI :{COMMA}千瓦 +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}匹 +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}匹 +STR_UNITS_POWER_SI :{COMMA}{NBSP}千瓦 -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} 短噸 -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}噸 -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}短噸 +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}噸 +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}公斤 -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} 短噸 -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}公噸 -STR_UNITS_WEIGHT_LONG_SI :{COMMA} 千克 +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}短噸 +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}公噸 +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}公斤 -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} 加侖 -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}升 -STR_UNITS_VOLUME_SHORT_SI :{COMMA}米³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}加侖 +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}升 +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}米³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} 加侖 -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} 公升 -STR_UNITS_VOLUME_LONG_SI :{COMMA} 立方米 +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}加侖 +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}公升 +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}立方米 -STR_UNITS_FORCE_IMPERIAL :{COMMA} 磅力 -STR_UNITS_FORCE_METRIC :{COMMA} 公斤力 -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}磅力 +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}公斤力 +STR_UNITS_FORCE_SI :{COMMA}{NBSP}千牛頓 -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} 英呎 -STR_UNITS_HEIGHT_METRIC :{COMMA} 米 -STR_UNITS_HEIGHT_SI :{COMMA} 公尺 +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}英呎 +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}米 +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}公尺 # Common window strings STR_LIST_FILTER_TITLE :{BLACK}篩選字串: STR_LIST_FILTER_OSKTITLE :{BLACK}輸入篩選字串 -STR_LIST_FILTER_TOOLTIP :{BLACK}輸入篩選所使用的關鍵字,對於清單…… +STR_LIST_FILTER_TOOLTIP :{BLACK}輸入關鍵字以篩選您想查閱或更改的選項 STR_TOOLTIP_GROUP_ORDER :{BLACK}選擇群組次序 STR_TOOLTIP_SORT_ORDER :{BLACK}選擇排序 (逆序/順序) @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}捲軸 - STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}捲軸 - 左右捲動清單 STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}拆卸建築物等。在格子裡的土地。按Ctrl以對角選擇區域。Shift切換建築或顯示預估成本。 +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}顯示被隱藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}顯示被隱藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}顯示被隱藏的 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}顯示被隱藏的 + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}如啟用此按鈕,系統會顯示本應被隱藏的機車或車廂 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}如啟用此按鈕,系統會顯示本應被隱藏的車輛 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}如啟用此按鈕,系統會顯示本應被隱藏的船舶 +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}如啟用此按鈕,系統會顯示本應被隱藏的飛機 + # Query window STR_BUTTON_DEFAULT :{BLACK}預設值 STR_BUTTON_CANCEL :{BLACK}取消 @@ -293,10 +304,10 @@ STR_SORT_BY_ENGINE_ID :引擎編號 STR_SORT_BY_COST :價值 STR_SORT_BY_POWER :功率 STR_SORT_BY_TRACTIVE_EFFORT :牽引力 -STR_SORT_BY_INTRO_DATE :登場日期 +STR_SORT_BY_INTRO_DATE :面世日期 STR_SORT_BY_RUNNING_COST :營運成本 STR_SORT_BY_POWER_VS_RUNNING_COST :功率/營運成本 -STR_SORT_BY_CARGO_CAPACITY :載貨量 +STR_SORT_BY_CARGO_CAPACITY :貨物容量 STR_SORT_BY_RANGE :範圍 STR_SORT_BY_POPULATION :人口 STR_SORT_BY_RATING :評價 @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :離開 ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :遊戲選項 -STR_SETTINGS_MENU_CONFIG_SETTINGS :進階設定 +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :設定 STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / 遊戲腳本設定 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 設定 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透明度選項 @@ -465,12 +476,12 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :最近鏡截圖 STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :在預設的縮放範圍截圖 STR_ABOUT_MENU_GIANT_SCREENSHOT :擷取全場景畫面 STR_ABOUT_MENU_ABOUT_OPENTTD :關於「OpenTTD」 -STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite 定位工具 +STR_ABOUT_MENU_SPRITE_ALIGNER :子畫面定位工具 STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :切換邊界框 STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :切換骯髒區塊的配色 ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -810,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} 正在船塢待命 STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} 正在機棚待命 -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} 的調度任務太少 STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} 有錯誤的計劃指令 STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} 有重複的指令 STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} 有無法到達的車站 -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE}之計劃中有機場跑道太短無法起降 STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} 即將退役 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} 應當馬上退役 @@ -899,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :喬治亞拉里 STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亞爾 (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}車輛 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}選擇車輛在路上的行駛位置 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :靠左行駛 @@ -938,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :加泰隆尼亞 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自動存檔 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}選擇自動存檔頻率 +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :關閉 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :每個月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :每 3 個月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :每 6 個月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :每 12 個月 +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}語言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}選擇要用的介面語言 @@ -954,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}螢幕 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}選擇螢幕解析度 STR_GAME_OPTIONS_RESOLUTION_OTHER :其它 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}畫面擷取檔案格式 -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}選擇畫面擷取檔案格式 +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}介面大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}選擇使用的介面元素大小 + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :正常大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :兩倍大小 +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :四倍大小 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基本圖形集 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}選擇要使用的基本圖形集 @@ -971,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}選擇 STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} 檔案已損毀 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}關於基本音樂集的額外資訊 +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}無法擷取可用的螢幕解析度清單 STR_ERROR_FULLSCREEN_FAILED :{WHITE}無法切換全螢幕模式 # Custom currency window @@ -1049,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :非常平坦 STR_TERRAIN_TYPE_FLAT :平坦 STR_TERRAIN_TYPE_HILLY :丘陵 STR_TERRAIN_TYPE_MOUNTAINOUS :高山 +STR_TERRAIN_TYPE_ALPINIST :多山 STR_CITY_APPROVAL_PERMISSIVE :寬容 STR_CITY_APPROVAL_TOLERANT :能忍受 @@ -1056,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :抱敵意 STR_WARNING_NO_SUITABLE_AI :{WHITE}無適合的 AI 可使用...{}您可以從「線上內容」系統中下載各種 AI。 -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}進階設定 +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}顯示設定 STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}篩選字串: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}展開所有選項 STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}折疊所有選項 @@ -1070,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :遊戲設定 ( STR_CONFIG_SETTING_TYPE_COMPANY_MENU :公司設定 (存檔時保存;僅在往後建立的新遊戲生效) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :公司設定 (存檔時保存;僅影響您正在控制的公司) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}顯示: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}篩選設定: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}適用範圍: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}限制以下列表僅顯示曾被更改的設定 -STR_CONFIG_SETTING_RESTRICT_BASIC :基本設定 -STR_CONFIG_SETTING_RESTRICT_ADVANCED :進階設定 -STR_CONFIG_SETTING_RESTRICT_ALL :專業設定 / 所有設定 +STR_CONFIG_SETTING_RESTRICT_BASIC :基本 (僅顯示重要設定) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :進階 (顯示大部份設定) +STR_CONFIG_SETTING_RESTRICT_ALL :專業 (顯示所有設定) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :與預設值有所不同的設定 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :與您開始新遊戲時所選擇的值有所不同的設定 STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}用某些設定限制下方的目錄 -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :所有設定 +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :所有設定種類 STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :客戶端設定 (儲存時不保存;影響所有遊戲) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :遊戲設定 (儲存時保存;只影響新遊戲) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :遊戲設定 (儲存時保存;只影響目前遊戲) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :公司設定 (儲存時保存;只影響新遊戲) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :公司設定 (儲存時保存;只影響目前的公司) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}在 {SILVER}篩選設定 {BLACK}一欄選擇 {WHITE}{STRING} {BLACK}以顯示所有搜尋結果 +STR_CONFIG_SETTING_TYPE_HIDES :在 {SILVER}適用範圍 {BLACK}一欄選擇 {WHITE}所有適用範圍 {BLACK}以顯示所有搜尋結果 +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}在 {SILVER}篩選設定 {BLACK}一欄選擇 {WHITE}{STRING} 並在 {SILVER}適用範圍 {BLACK}一欄選擇 {WHITE}所有適用範圍 {BLACK}以顯示所有搜尋結果 +STR_CONFIG_SETTINGS_NONE :{WHITE}- 無 - STR_CONFIG_SETTING_OFF :關 STR_CONFIG_SETTING_ON :開 @@ -1125,8 +1162,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :切換那些有 STR_CONFIG_SETTING_CITY_APPROVAL :地方政府對地區結構重組的態度: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :選擇公司所製造的噪音和環境傷害對其在市鎮的評比及未來的建設行動會造成多大影響 -STR_CONFIG_SETTING_BUILDONSLOPES :可在斜坡及岸邊興建:{STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :如果啟用此選項,路軌和車站都可在大部份斜坡上建造。如果停用此選項,則只能在符合其方向的斜坡上建造路軌,且不能在斜坡上建造車站,但這樣它們就毋需額外的地基 +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :最大地圖高度: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :設定該地圖上山丘最多能有多高 +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}您不能把地圖的最高高度設成此值。至少有一座山比這個高度更高。 STR_CONFIG_SETTING_AUTOSLOPE :允許在建築物或軌道底下改變地形斜度 (autoslope):{STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :可以在建築物或軌道底下改變地形而不需移除它們 STR_CONFIG_SETTING_CATCHMENT :容許更真實的服務範圍設定:{STRING} @@ -1151,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :禁止列車及 STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :列車於縱向路軌與橫向路軌交接之處轉向稱為「直角轉向」;列車於其他的路軌配置上轉向稱為「45度轉向」。如啟用此設定,所有列車皆不會進行直角轉向。除列車外,此設定同樣適用於船舶 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :允許將不相鄰的車站與附近的車站結合:{STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :容許以「CTRL 鍵 + 點選」的方式,加入與現有部份不相連接的車站部件。 -STR_CONFIG_SETTING_IMPROVEDLOAD :使用改善後的裝載演算法:{STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :如啟用此設定,在車站內等候的多部運輸工具會依其進站次序裝載:只有當站內的乘客或貨物足夠令第一部運輸工具滿載時,下一部運輸工具才會開始裝載 -STR_CONFIG_SETTING_GRADUAL_LOADING :運輸工具逐步裝載貨物:{STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :如啟用此設定,運輸工具會根據其裝載設定逐步裝載貨物。否則,所有運輸工具都會在特定時間內裝載所有乘客或貨物,而裝載所用的時間則取決於所裝載的乘客或貨物之數量 STR_CONFIG_SETTING_INFLATION :通貨膨脹:{STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :啟用通貨膨脹,而且成本的增長會稍為比收入的增長快 -STR_CONFIG_SETTING_SELECTGOODS :有需求才向車站供貨:{STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :車站只會在能運送有關乘客或貨物的運輸工具停靠後,才開始接收附近建築物供應的乘客或貨物。這樣可避免車站評價因為未有運輸工具使用而下降 STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :橋樑長度上限: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :建造橋樑長度的上限 +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :橋樑高度上限: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :橋樑與地面之間的最大高度 STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :隧道長度上限: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :設定建造隧道長度的上限 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :修改基礎工業的建造方式:{STRING} @@ -1186,8 +1220,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :預設列車在 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中間 STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :遠端 -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :車輛排隊 (量子效應):{STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :強制進入站點的公路車輛在未有空位時停在站前排隊等候,而非調頭離開。請注意:過多車輛等候會造成交通擠塞(此即設定標籤中所指的「量子效應」) STR_CONFIG_SETTING_AUTOSCROLL :滑鼠在視窗邊緣時移動視窗:{STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :如啟用此選項,額外視野的畫面會在游標接近其視窗邊緣時捲動 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :停用 @@ -1218,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :可在市鎮所 STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :容許在市鎮擁有的道路上建造直通型車站 STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :可在競爭對手所有的道路上建設路邊車站:{STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :容許在其他公司擁有的道路上建造直通型車站 -STR_CONFIG_SETTING_ADJACENT_STATIONS :允許按 Ctrl 鍵興建相鄰車站: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :容許不同車站相互鄰接 -STR_CONFIG_SETTING_DYNAMIC_ENGINES :允許載入多個 NewGRF 車輛組:{STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :此為對舊版 NewGRF 包的相容設定。如果您並非完全清楚其功用,請勿停用。 STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}當有運輸工具運轉時不能修改此設定 STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :基礎建設維護: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :如啟用此選項,基礎建設會產生維護成本。該成本的增長會根據公司基礎建設的規模而加倍增大,因此該設定對大公司的影響比對小公司更大 @@ -1252,7 +1280,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :錯誤訊息持 STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :設定所有以紅色對話窗顯示的錯誤訊息之持續時間。請注意有些較嚴重的錯誤訊息必須手動關閉 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} 秒 STR_CONFIG_SETTING_HOVER_DELAY :顯示工具提示: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :設定是否在游標處於工具按鈕之上時顯示工具使用提示。如停用此選項,玩家仍可在工具按鈕上右撳鼠键以顯示工具使用提示 +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :設定游標需在工具按鈕之上停留多久才會顯示工具使用提示。如此選項的值為 0,您需在工具按鈕上右撳鼠键以顯示工具使用提示 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :游標在按鈕之上停留 {COMMA} 秒 STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右撳 STR_CONFIG_SETTING_POPULATION_IN_LABEL :於標籤顯示市鎮人口:{STRING} @@ -1260,27 +1288,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :在地圖的市 STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :圖像上的線條之粗細值: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :設定圖像上的線條之粗細值。較幼細的線條能較準確地顯示數值,而較粗大的線較容易看到和分辨 +STR_CONFIG_SETTING_LANDSCAPE :場景:{STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :此設定決定基本的遊戲場景、可供運輸的貨物種類,以及城鎮發展的條件。然而,NewGRF 及遊戲腳本可提供更加細緻的設定 STR_CONFIG_SETTING_LAND_GENERATOR :地形產生器:{STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :「原版」地圖產生器根據所使用的基本圖形集來產生固定的地形。TerraGenesis 則是一個建基於 Perlin 噪音原理的地形產生程序,支援較為細緻的地形設定 STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :原版 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :地形種類:{STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(只適用於 TerraGenesis) 此設定控制產生的地圖是平坦還是峰巒起伏 +STR_CONFIG_SETTING_INDUSTRY_DENSITY :工業設施密度: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :此設定控制工業設定出現的密度。遊戲進行時,系統仍會根據此設定來決定工業設施的數量 STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :煉油廠與地圖邊緣之最遠距離: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :僅於地圖邊緣建造煉油廠,在島嶼型地圖中它們將處於海邊 STR_CONFIG_SETTING_SNOWLINE_HEIGHT :雪線高度:{STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :此設定控制在「寒帶」地圖中雪地開始出現的高度。除了外觀的不同外,雪地也會影響工業設施的分佈以及市鎮成長的條件 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地形起伏度 (只適用於 TerraGenesis):{STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(只適用於 TerraGenesis) 此設定控制地圖上的山丘密度。「平滑」的地形會包含較少而且相互距離較遠的山丘;較粗糙的地形會包含密集的山丘,但可能會使地圖顯得重複 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :非常平滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :平滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :高低不平 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :非常粗糙 +STR_CONFIG_SETTING_VARIETY :地形起伏分佈:{STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(只適用於 TerraGenesis) 此設定控制地圖是否同時包含多山及平坦的地帶。由於此設定只會使地圖的部份區域變得平坦,請把其他地形設定設為「高山」 +STR_CONFIG_SETTING_RIVER_AMOUNT :河流數量: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :選擇欲產生的河流數量 STR_CONFIG_SETTING_TREE_PLACER :樹木分佈演算法:{STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :選擇地圖上樹木的分布方式:如選擇「原版」設定,系統會把樹木均勻地散佈在地圖上;如選擇「改進版」,系統會在地圖上產生若干樹林 STR_CONFIG_SETTING_TREE_PLACER_NONE :無 STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :原版 STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :改進版 +STR_CONFIG_SETTING_ROAD_SIDE :公路車輛: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :選擇行車方向 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :旋轉高度圖:{STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :逆時針 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :順時針 STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :平面地圖高度:{STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :啟用地圖邊緣區塊平整化:{STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :如果停用此選項,地圖的邊緣必然是海洋 STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}北邊的地圖邊緣有一格以上的區塊非空地 STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}邊緣有一格以上的區塊非水域 @@ -1331,17 +1373,15 @@ 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_AUTOSAVE :自動儲存: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :選擇自動存檔的週期 + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 時間格式作為存檔檔名 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :在存檔的檔名中使用的日期格式 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :長格式 (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :短格式 (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :國際格式 (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :當 NewGRF 套包沒有指定配色時,使用的預設配色: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :為沒有指定配色的 NewGRF 套包設定預設配色 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS色盤 -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows色盤 - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :自動在開始新遊戲時暫停:{STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :如啟用此選項,遊戲在開始時會自動暫停,方便玩家詳細觀察地圖 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :當暫停時允許: {STRING} @@ -1365,7 +1405,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :設定開始新 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :最先可用的軌道 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :最新可用的軌道 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :最常用的軌道 -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :顯示列車佔用的路徑:{STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :顯示列車預留佔用的路徑:{STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :設定是否在有列車預留的軌道著色,使玩家更清楚觀察到列車經過路徑號誌時預留的路徑 STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :使建設工具在建造後仍保持啟用狀態:{STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :設定是否在完成建造橋樑、隧道或其他基礎建設後保持點選有關的工具按鈕 @@ -1424,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :維護間隔以 STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :選擇啟動運輸工具自動前往維修設施進行維護的條件:要麼以上次進行維修的時距決定,要麼以可靠度下降的百分比(相對於其最大可靠度而言)決定 STR_CONFIG_SETTING_SERVINT_TRAINS :預設的列車維護作業時距: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :設定預設的列車維護作業時距。所有沒有指定維護作業時距的列車都會使用這個預設值 -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} 日/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日/% STR_CONFIG_SETTING_SERVINT_DISABLED :停用 STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :預設的公路車輛維護作業時距: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :設定預設的公路車輛維護作業時距。所有沒有指定維護作業時距的公路車輛都會使用這個預設值 @@ -1491,7 +1531,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :選擇當進行 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :自動在指定年份前建造懸臂號誌:{STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :設定使用燈號號誌的年份。在遊戲進行到那一年之前,系統會預設豎立懸臂號誌 STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :啟用號誌介面:{STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :設定是否顯示「號誌工具列」。如否,玩家須按下 Ctrl 鍵並同時單撳已建置的號誌以更換號誌類型 +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :此設定讓您在興建號誌時,看到一個包括所有號誌種類的窗口,從而毋需按住 Ctrl 鍵再反覆點選已建置的號誌以更換號誌類型 STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :預設的號誌種類:{STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :預設建造的號誌種類 STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :閉塞號誌 @@ -1563,12 +1603,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :每 {COMMA} 座 STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :無 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始城市規模倍率:{STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :設定遊戲開始時城市的大小 (相對於一般市鎮而言) -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :鋪設道路時移除不合理的路面:{STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :設定是否在資助市鎮重建道路時移除死路 STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :每{STRING}日更新貨物分配圖 STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :指定每次計算貨物分配圖之間的時間。由於每次重新計算只會處理一個貨物分配圖元件,因此本設定不代表「每若干日重新計算整個貨物分配圖」。{}如果此設定賦值越小,則系統需要使用更多處理器時間計算貨物分配圖。相反,如果此設定賦值越大,則貨物被派往新路線所需的時間越長。 -STR_CONFIG_SETTING_LINKGRAPH_TIME :每次更新貨物分配圖持續 {STRING} 天 +STR_CONFIG_SETTING_LINKGRAPH_TIME :用 {STRING}{NBSP}天更新貨物分配圖 STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :當更新貨物分配圖時,系統會衍生一條執行緒。本設定的值即為執行緒的持續時間。{}這設定賦值越小,執行緒越有可能在應當停止的時候仍未完成運算,遊戲會暫停運行至執行緒完成工作。相反,這設定賦值越大,則貨物分配功能需要較長時間反映路線網絡變動的影響。 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :手動 STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :不對稱 @@ -1578,9 +1616,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :設使有交通 STR_CONFIG_SETTING_DISTRIBUTION_MAIL :郵件分配方式:{STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :設使有交通路線連接甲、乙兩站。「對稱」指甲站往乙站的郵件數量與乙站往甲站的郵件數量大致相同。「不對稱」指任何一站往另一站的郵件數量皆由系統隨意決定。「手動」指系統不會自動分配郵件的目的地。 STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :裝甲貨物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :依原有設定,「裝甲貨物」包括溫帶場景的「貴重物品」、寒帶場景的「金塊」及亞熱帶場景的「鑽石」。一些 NewGRF 可能有不同設定。{} 設使有交通路線連接甲、乙兩站。「對稱」指甲站往乙站的郵件數量與乙站往甲站的裝甲貨物數量大致相同。「不對稱」指任何一站往另一站的裝甲貨物數量皆由系統隨意決定。「手動」指系統不會自動分配裝甲貨物的目的地。{} 建議的設定:在溫帶場景應使用「對稱」,因為銀行會互相運送貴重物品;而在寒帶場景及亞熱帶場景應使用「不對稱」,因為銀行不會把金塊或鑽石送回礦場。 +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :「裝甲貨物」包括溫帶場景的「貴重物品」、寒帶場景的「金塊」及亞熱帶場景的「鑽石」。使用 NewGRF 可能會改變以上設定。{} 設使有交通路線連接甲、乙兩站。「對稱」指甲站往乙站的郵件數量與乙站往甲站的裝甲貨物數量大致相同。「不對稱」指任何一站往另一站的裝甲貨物數量皆由系統隨意決定。「手動」指系統不會自動分配裝甲貨物的目的地。{} 建議在溫帶及亞熱帶場景應使用「對稱」,因為銀行會互相發送貴重物品或鑽石;而在寒帶場景應使用「不對稱」,因為銀行不會把金塊送回礦場。 STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :其他貨物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :設使有交通路線連接甲、乙兩站。「對稱」指甲站往乙站的貨物數量與乙站往甲站的貨物數量大致相同。「不對稱」指任何一站往另一站的貨物數量皆由系統隨意決定。「手動」指系統不會自動分配貨物的目的地。{}由於貨物一般只會被單方向運輸,此設定應被賦值為「不對稱」或「手動」。 +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :如設定此值為「不對稱」,則任何一站往另一站的貨物數量皆由系統隨意決定。如設定此值為「手動」,則系統不會自動分配貨物的目的地。 STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :分配精確度:{STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :此設定賦值越大,則運算連結圖所需的處理器時間越長,您可能會因此見到遊戲運行延遲。如果此設定賦值越小,則貨物分配的準確度越低,而您可能會發現部份貨物沒有被送往您預期它們會到達的目的地。 STR_CONFIG_SETTING_DEMAND_DISTANCE :距離對需求的影響:{STRING} @@ -1626,27 +1664,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :英制(英呎 STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :米制(米) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :國際單位(米) -STR_CONFIG_SETTING_GUI :{ORANGE}介面 STR_CONFIG_SETTING_LOCALISATION :{ORANGE}本地化 -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}建造 +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}圖形 +STR_CONFIG_SETTING_SOUND :{ORANGE}音效 +STR_CONFIG_SETTING_INTERFACE :{ORANGE}介面 +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}基本顯示 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}顯示設定 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建造 +STR_CONFIG_SETTING_ADVISORS :{ORANGE}訊息提示 +STR_CONFIG_SETTING_COMPANY :{ORANGE}預設的基建及運具選項 +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}財務 STR_CONFIG_SETTING_VEHICLES :{ORANGE}運輸工具 -STR_CONFIG_SETTING_STATIONS :{ORANGE}車站 -STR_CONFIG_SETTING_ECONOMY :{ORANGE}經濟 -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}貨物分配 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理 +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}路線 +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}遊戲限制 +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}災難/事故 +STR_CONFIG_SETTING_GENWORLD :{ORANGE}地圖的產生 +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}環境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}地方政府 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}市鎮 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}工業 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}貨物分配 STR_CONFIG_SETTING_AI :{ORANGE}競爭對手 -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}顯示選項 -STR_CONFIG_SETTING_INTERACTION :{ORANGE}互動 -STR_CONFIG_SETTING_SOUND :{ORANGE}音效 -STR_CONFIG_SETTING_NEWS :{ORANGE}新聞與訊息 -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}號誌 -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}貨物裝載 STR_CONFIG_SETTING_AI_NPC :{ORANGE}電腦玩家 -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}自動更新 -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}維修 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}路線 -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}列車 -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}市鎮 -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}工業 STR_CONFIG_SETTING_PATHFINDER_OPF :預設 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1695,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}多人 STR_INTRO_GAME_OPTIONS :{BLACK}遊戲選項 STR_INTRO_HIGHSCORE :{BLACK}積分排行榜 -STR_INTRO_ADVANCED_SETTINGS :{BLACK}進階設定 +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}設定 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 設定 STR_INTRO_ONLINE_CONTENT :{BLACK}檢查線上內容 STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / 遊戲腳本設定 @@ -1715,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}選擇 STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}顯示遊戲選項 STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}顯示積分排行榜 -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}顯示進階設定 +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}顯示設定 STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}顯示 NewGRF 設定 STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}檢查有無最新或可更新的內容可下載 STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}顯示AI和遊戲腳本設定 @@ -1755,6 +1795,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}切換 STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇推土機 (可摧毀工業、無法移除的物件):{ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}允許隧道互相交叉:{ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}噴射機不會 (經常) 在小機場墜毀:{ORANGE} {STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}修改地圖最高高度: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}修改地圖上山丘的最高高度 STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :溫帶 STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :寒帶 STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :亞熱帶 @@ -1803,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :載貨電車 STR_FACE_CAPTION :{WHITE}選擇臉孔 STR_FACE_CANCEL_TOOLTIP :{BLACK}取消選擇新臉孔 STR_FACE_OK_TOOLTIP :{BLACK}接受新臉孔 +STR_FACE_RANDOM :{BLACK}亂數化 STR_FACE_MALE_BUTTON :{BLACK}男性 STR_FACE_MALE_TOOLTIP :{BLACK}選擇男性臉孔 @@ -2042,6 +2085,7 @@ STR_NETWORK_CLIENT :用戶端 STR_NETWORK_SPECTATORS :旁觀者 STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}請輸入你要付出多少資金 +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :(BLACK)旁觀者 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}不要儲存所輸入的密碼 @@ -2271,7 +2315,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}以自 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}興建鐵路機廠 (用來購置及維修列車)。按Shift可切換建築/顯示預估成本。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}將軌道轉成號誌站。 按住 Ctrl 可興建相鄰車站。按Shift可切換建築/顯示預估成本。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}興建火車站。 按住 Ctrl 可興建相鄰車站。按Shift可切換建築/顯示預估成本。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}興建鐵路號誌。 按住 Ctrl 點選可切換懸臂/燈號號誌{} 於直線鐵路上拖曳可興建多個號誌。 按住 Ctrl 拖曳則只興建號誌至下個岔道{} 於選單按鈕。按住 Ctrl 點選可切換顯示號誌選擇視窗。按Shift可切換建築/顯示預估成本。 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}興建鐵路號誌。{} 按住 Ctrl 鍵再點選鐵路,系統會切換懸臂/燈號號誌,或者更改被點選號誌的種類{} 在直線鐵路上拖曳,系統會依照設定的號誌間距,沿路興建多個號誌。按住 Ctrl 鍵再拖曳,系統會興建號誌至下個岔道{} 如果按住 Shift 鍵再點選鐵路或在鐵路上拖曳,系統會顯示興建號誌所需成本,但不會建造號誌{} 如果按住 Ctrl 再點選此鍵,系統會切換號誌選擇視窗的顯示狀態。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}興建鐵路橋樑。按Shift可切換建築/顯示預估成本。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}挖掘鐵路隧道。按Shift可切換建築/顯示預估成本。 STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切換建築/移除鐵軌、號誌、號誌站及車站。 按住 Ctrl 點選可移除號誌站及車站中的鐵軌 @@ -2546,13 +2590,14 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}接收貨物:{LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}軌道速限:{LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}道路速限:{LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :石頭 STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :粗地 STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :裸地 STR_LAI_CLEAR_DESCRIPTION_GRASS :草地 -STR_LAI_CLEAR_DESCRIPTION_FIELDS :農場 +STR_LAI_CLEAR_DESCRIPTION_FIELDS :田地 STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :覆雪地 STR_LAI_CLEAR_DESCRIPTION_DESERT :沙漠 @@ -2642,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-2013 OpenTTD 開發小組 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD 開發小組 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲 @@ -2661,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}儲存 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}以選定的名稱儲存目前遊戲 STR_SAVELOAD_LOAD_BUTTON :{BLACK}載入 STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}載入所選的遊戲 +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}載入所選的高度圖 STR_SAVELOAD_DETAIL_CAPTION :{BLACK}遊戲詳細資料 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}沒有可用的資訊 STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2676,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}市鎮數量: STR_MAPGEN_DATE :{BLACK}日期: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}工業數量: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}地圖最高高度 +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}將地圖上山丘的最高高度加 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}將地圖上山丘的最高高度減去 1 STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}雪線高度: STR_MAPGEN_SNOW_LINE_UP :{BLACK}將雪線高度上移一層 STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}將雪線高度下移一層 -STR_MAPGEN_RANDOM_SEED :{BLACK}亂數種子: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}點選可輸入亂數種子 -STR_MAPGEN_RANDOM :{BLACK}亂數化 -STR_MAPGEN_RANDOM_HELP :{BLACK}改變地形產生的亂數種子 STR_MAPGEN_LAND_GENERATOR :{BLACK}地形產生器: STR_MAPGEN_TREE_PLACER :{BLACK}植樹演算法: STR_MAPGEN_TERRAIN_TYPE :{BLACK}地形種類: @@ -2709,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}高度 STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}大小: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}輸入亂數種子 +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}改變地圖最高高度 STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}修改雪線高度 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}修改開始年份 @@ -2764,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}上移 STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}將選定的 NewGRF 檔往清單上方移動 STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}下移 STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}將選定的 NewGRF 檔往清單下方移動 +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}更新 +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}為您已經安裝的新版本更新NewGRF檔案 STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}已安裝的 NewGRF 檔案列表。 STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}設定參數 @@ -2788,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}找不到 STR_NEWGRF_SETTINGS_DISABLED :{RED}停用 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}與此版本的OpenTTD不相容 +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}儲存設定值 +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}現有的預設值名稱。點選一個預設值名稱,它會被複製到下方的輸入欄 +STR_SAVE_PRESET_TITLE :{BLACK}輸入預設值名稱 +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}預設值會儲存成現時選定的名稱 +STR_SAVE_PRESET_CANCEL :{BLACK}取消 +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}請勿修改預設值 +STR_SAVE_PRESET_SAVE :{BLACK}存檔 +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}儲存預設值到選擇的名稱 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}變更 NewGRF 參數 STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}關閉 @@ -2810,19 +2867,22 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF v # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 Sprite {COMMA} ({STRING}) -STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一個 Sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}繼續處理下個正常的 sprite,略過任何偽 (pseudo)/重新著色/文字 sprite 及結尾的換行標記 -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 Sprite +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一個子畫面 +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}繼續處理下個正常的子畫面,略過任何虛位/重新著色/文字字型相關的子畫面,並在到達最後的子畫面後,返回第一個子畫面繼續進行處理。 +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往子畫面 STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}前往選定的 sprite。若該 sprite 不是正常的 sprite,則繼續前進到下個 sprite -STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一個 Sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}繼續處理上個正常的 sprite,略過任何偽 (pseudo)/重新著色/文字 sprite 及開頭的換行標記 +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一個子畫面 +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}繼續處理上一個正常的子畫面,略過任何虛位/重新著色/文字字型相關的子畫面,並在到達第一個子畫面後,返回最後的子畫面繼續進行處理。 STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}顯示目前選取的 sprite。當 sprite 正在描繪時會忽略其定位 STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}移動 sprite 到指定的 X 及 Y 座標位移 -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X 座標位移:{NUM}, Y 座標位移:{NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}重設相對值 +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}重設目前的相對位移值 +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X 位移:{NUM},Y 位移:{NUM}(絕對值) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X 位移:{NUM},Y 位移:{NUM}(相對值) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}選取 Sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}請從畫面中任意選取一個 sprite -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}前往 Sprite +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}前往子畫面 # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} @@ -2875,6 +2935,7 @@ STR_NEWGRF_LIST_MISSING :{RED}缺少檔 STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' 的行為可能會造成失去同步或當機 STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}'{1:ENGINE}' 不在機廠內卻發生動力車廂列車狀態的變動。 STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}' 不在機廠內卻發生列車長度的變動。 +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}它會在 '{1:ENGINE}' 在機廠外或不在接受改装時改變其容量 STR_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:COMPANY}' 所擁有的列車 '{0:VEHICLE}' 長度無效。 這個錯誤可能是 NewGRFs 有問題所致,遊戲可能會無法同步或當機 STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' 提供了錯誤的資訊。 @@ -2889,6 +2950,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} / <無 STR_NEWGRF_INVALID_ENGINE :<無效的運輸工具型號> STR_NEWGRF_INVALID_INDUSTRYTYPE :<無效工業> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<種類不明的運輸工具> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}正在掃描 NewGRF 套件 STR_NEWGRF_SCAN_MESSAGE :{BLACK}正在掃描 NewGRF 套件。如 NewGRF 套件較多,可能需要較長時間完成... @@ -2926,8 +2990,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} 已運送 STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (仍然需要) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN}(已運送) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}該市鎮每隔 {ORANGE}{COMMA}{BLACK} 天擴張一次 -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}該市鎮每隔 {ORANGE}{COMMA}{BLACK} 天擴張一次 (有資金協助) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}該市鎮每隔 {ORANGE}{COMMA}{BLACK}{NBSP}天擴張一次 +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}該市鎮每隔 {ORANGE}{COMMA}{BLACK}{NBSP}天擴張一次 (正接受資助) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}市鎮{RED}不在{BLACK}成長 STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}市鎮噪音限制:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}將市鎮置於畫面中央。按住 Ctrl 點選可於市鎮位置開啟新視窗視野 @@ -2987,7 +3051,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :資訊 STR_GOAL_QUESTION_CAPTION_WARNING :警告 STR_GOAL_QUESTION_CAPTION_ERROR :錯誤 -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :取消 STR_GOAL_QUESTION_BUTTON_OK :確定 STR_GOAL_QUESTION_BUTTON_NO :否 @@ -3006,6 +3070,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :重新啟動 STR_GOAL_QUESTION_BUTTON_POSTPONE :延遲 STR_GOAL_QUESTION_BUTTON_SURRENDER :投降 STR_GOAL_QUESTION_BUTTON_CLOSE :關閉 +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}補助資訊 @@ -3026,6 +3091,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}上一 STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}前往上一頁繼續觀看 STR_STORY_BOOK_NEXT_PAGE :{BLACK}下一頁 STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}前往下一頁繼續觀看 +STR_STORY_BOOK_INVALID_GOAL_REF :(RED)無效的目標參照 # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}車站名稱 - 點選名稱可將車站置於畫面中央。按住 Ctrl 點選可於車站位置開啟新視窗視野 @@ -3040,7 +3106,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}無任 # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}等候:{WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} 來自 {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}(已預留裝載{CARGO_SHORT}) @@ -3284,12 +3349,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :未分組的車 STR_GROUP_DEFAULT_SHIPS :未分組的船舶 STR_GROUP_DEFAULT_AIRCRAFTS :未分組的飛機 -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}群組 - 點選群組以顯示其中的運輸工具清單 +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}群組 - 點選群組以顯示其中的運輸工具清單。拖曳群組標籤以排列群組的次序和層級。 STR_GROUP_CREATE_TOOLTIP :{BLACK}點選可建立群組 STR_GROUP_DELETE_TOOLTIP :{BLACK}移除所選群組 STR_GROUP_RENAME_TOOLTIP :{BLACK}重新命名群組 STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}點選可保護此群組排除在全域自動替換設定之外 +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}刪除群組 +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}您是否決定刪除此群組及其所有子群組? + STR_GROUP_ADD_SHARED_VEHICLE :加入共享指令的運具 STR_GROUP_REMOVE_ALL_VEHICLES :移去所有運具 @@ -3327,10 +3395,10 @@ STR_PURCHASE_INFO_ALL_BUT :所有貨物( STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牽引力:{GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}範圍: {GOLD}{COMMA} 方格 -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列車選單 - 點選列車檢視資訊 -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}車輛清單 - 點選車輛可看到詳細資料 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶清單 - 點選船舶顯示詳細資料 -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飛機清單 - 點選飛機檢視詳細資料 +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列車選單。點選機車或車卡檢視詳細資訊,或者按住 Ctrl 鍵再點選機車或車卡以切換是否顯示機車或車卡的種類 +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}車輛選單。點選車輛檢視詳細資訊,或者按住 Ctrl 鍵再點選車輛以切換是否顯示車輛的種類 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶選單。點選船舶檢視詳細資訊,或者按住 Ctrl 鍵再點選船舶以切換是否顯示船舶的種類 +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飛機選單。點選飛機檢視詳細資訊,或者按住 Ctrl 鍵再點選飛機以切換是否顯示飛機的種類 STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}購買運具 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}購買車輛 @@ -3352,6 +3420,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}重新 STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}重新命名船舶種類 STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}重新命名飛機種類 +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}隱藏 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}隱藏 +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}隱藏 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}隱藏 + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}顯示 +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}顯示 +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}顯示 +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}顯示 + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示列車類型 +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示車輛類型 +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示船舶類型 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示飛機類型 + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}重新命名列車種類 STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}重新命名車輛種類 STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}重新命名船舶種類 @@ -3405,7 +3488,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}複製 STR_DEPOT_CLONE_SHIP :{BLACK}複製船舶 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}複製飛機 -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}這會購買一列相同的列車,包含所有車廂。按下按鈕之後再點選機廠内外的其他列車,按住 CTRL 點選還可共享指令,按住 Shift 點選則只會顯示預估的購買費用 +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}點選此按鈕,然後再點選列車,系統會建造一列跟它一樣的列車。{}如果點選此按鈕之後,按住 Ctrl 鍵點選列車,則新列車會與舊列車共享指令。{}如果點選此按鈕之後,按住 Shift 鍵點選列車,系統會顯示建造新列車的費用,而不建造列車。 STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}點選此按鈕,然後點選任何一部於車廠内或外的車輛,會購買一部屬性與指令清單皆相同的車輛。如按住 Ctrl 掣點選車輛,新車輛會與原有車輛共享指令;如按住 Shift 掣點選車輛,系統會顯示預估的購買費用但不作任何購買 STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}這會購買一艘相同的船舶。按下按鈕之後再點選船塢内或外的船舶,按住 CTRL 點選還可共享指令,按住 Shift 點選則只會顯示預估的購買費用 STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}這會購買一架相同的飛機。按下此鈕之後再點選機棚内或外的飛機,按住 CTRL 點選還可共享指令,按住 Shift 點選則只會顯示預估的購買費用 @@ -3456,6 +3539,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :車輛 STR_REPLACE_VEHICLE_SHIP :船舶 STR_REPLACE_VEHICLE_AIRCRAFT :飛機 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}使用中的運輸工具 +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}此行顯示您正在擁有的運輸工具 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}可用的運輸工具 +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}此行顯示可供替換的運輸工具 + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}選擇要替換的車頭種類 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}選擇您想替換左方選定車頭的新車頭種類 @@ -3580,7 +3668,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}容量 STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}轉運潛在收入:{LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}維護間隔:{LTBLUE}{COMMA} 天{BLACK} 上次維護:{LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}每隔 {LTBLUE}{COMMA}{NBSP}天進行維護{BLACK} 上次維護日期:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}維護間隔:{LTBLUE}{COMMA}%{BLACK} 上次維護:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}以 10 為單位延長維護間隔。 按住 Ctrl 點選可以 5 為單位 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}以 10 為單位縮短維護間隔。 按住 Ctrl 點選可以 5 為單位 @@ -3810,10 +3898,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :運行中 (未 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :以不超過 {2:VELOCITY} 的速度運行 (未指定時間) STR_TIMETABLE_TRAVEL_FOR :運行需時 {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :以不超過 {1:VELOCITY} 的速度運行 {0:STRING} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :運行 {STRING} (未指定時間) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :運行 {STRING} (速度不超過 {VELOCITY},未指定時間) +STR_TIMETABLE_STAY_FOR_ESTIMATED :等待 {STRING} (未指定時間) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(運行 {STRING} ,未指定時間) STR_TIMETABLE_STAY_FOR :並等待 {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :並運行 {STRING} -STR_TIMETABLE_DAYS :{COMMA} 日 -STR_TIMETABLE_TICKS :{COMMA} tick +STR_TIMETABLE_DAYS :{COMMA}{NBSP}日 +STR_TIMETABLE_TICKS :{COMMA}{NBSP}個時間標記 STR_TIMETABLE_TOTAL_TIME :{BLACK}此時刻表跑完全程需時 {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}此時刻表跑完全程至少需時 {STRING} (此表尚未完成) @@ -3939,6 +4031,8 @@ STR_AI_SETTINGS_START_DELAY :此 AI 與上 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}{STRING}的 Readme STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}{STRING}的修訂紀錄 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}{STRING}的授權條款 +STR_TEXTFILE_WRAP_TEXT :{WHITE}強迫文字換行 +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}強迫寬於視窗的文字自動換行 STR_TEXTFILE_VIEW_README :{BLACK}檢視Readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}修訂紀錄 STR_TEXTFILE_VIEW_LICENCE :{BLACK}授權條款 @@ -4049,6 +4143,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}挖掘 STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}已到海平面 STR_ERROR_TOO_HIGH :{WHITE}... 太高 STR_ERROR_ALREADY_LEVELLED :{WHITE}... 已經平了 +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}這樣做的話,在它上面的橋樑會太高 # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}無法修改公司名稱... @@ -4075,7 +4170,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... 太 STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... 太接近另一個市鎮 STR_ERROR_TOO_MANY_TOWNS :{WHITE}... 已有太多市鎮 STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... 地圖沒有足夠空間 -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}此市鎮不會自動興建道路。你可以到 [進階設定] -> [經濟] -> [市鎮] 中啟用 [市鎮可以興建道路] 選項。 +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}市鎮不會自動興建道路。你可以在 [設定] -> [環境] -> [市鎮] 啟用市鎮自行興建道路的功能。 STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}道路施工中 STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}無法刪除此市鎮...{}市鎮範圍內還有車站或機廠或無法移除的區塊 STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 市中心沒有適合的空間建造雕像 @@ -4099,6 +4194,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... 森 STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... 只能在雪線以上建造 STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... 只能在雪線以下建造 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}無適當地點興建「{STRING}」工業 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}請更改參數以產生較佳的地圖 + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}無法在此興建火車站... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}無法興建公車站... @@ -4235,6 +4333,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}必須 STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}開始與結束的位置必須不同 STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}橋樑兩端不在同個海拔 STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}橋樑太接近地面 +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}這座橋對這個地形而言太高了 STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}開始與結束位置必須在同一直線上 STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... 橋樑的兩端應在陸地上 STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 橋樑過長 @@ -4261,6 +4360,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... 您 STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}無法建立群組... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}無法移除群組... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}無法修改群組名稱... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}無法指定母群組 STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}無法從此群組移去所有運輸工具... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}無法加入該運輸工具到此群組... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}無法加入共享指令的運輸工具到此群組... @@ -4495,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (柴油) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut 柴油 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut 柴油 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (蒸汽) @@ -4704,7 +4804,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake 載客渡輪 STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate 貨輪 STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell 貨輪 -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover 貨輪 +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover 貨輪 STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut 貨輪 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :ViColeman Count @@ -4798,6 +4898,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (隱藏) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4934,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4944,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 6d29242205..319961d6e6 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -96,30 +96,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Gazlı İçecek # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} yolcu +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}yolcu STR_QUANTITY_COAL :{WEIGHT_LONG} kömür -STR_QUANTITY_MAIL :{COMMA} çanta posta +STR_QUANTITY_MAIL :{COMMA}{NBSP}çanta posta STR_QUANTITY_OIL :{VOLUME_LONG} petrol -STR_QUANTITY_LIVESTOCK :{COMMA} tane hayvan -STR_QUANTITY_GOODS :{COMMA} kasa eşya +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}tane hayvan +STR_QUANTITY_GOODS :{COMMA}{NBSP}kasa eşya STR_QUANTITY_GRAIN :{WEIGHT_LONG} tahıl STR_QUANTITY_WOOD :{WEIGHT_LONG} odun STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} demir STR_QUANTITY_STEEL :{WEIGHT_LONG} çelik -STR_QUANTITY_VALUABLES :{COMMA} çanta değerli eşya +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}çanta değerli eşya STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bakır STR_QUANTITY_MAIZE :{WEIGHT_LONG} mısır STR_QUANTITY_FRUIT :{WEIGHT_LONG} meyve -STR_QUANTITY_DIAMONDS :{COMMA} çanta elmas +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}çanta elmas STR_QUANTITY_FOOD :{WEIGHT_LONG} gıda STR_QUANTITY_PAPER :{WEIGHT_LONG} kağıt -STR_QUANTITY_GOLD :{COMMA} çanta altın +STR_QUANTITY_GOLD :{COMMA}{NBSP}çanta altın STR_QUANTITY_WATER :{VOLUME_LONG} su STR_QUANTITY_WHEAT :{WEIGHT_LONG} buğday STR_QUANTITY_RUBBER :{VOLUME_LONG} kauçuk STR_QUANTITY_SUGAR :{WEIGHT_LONG} şeker -STR_QUANTITY_TOYS :{COMMA} oyuncak -STR_QUANTITY_SWEETS :{COMMA} çanta tatlı +STR_QUANTITY_TOYS :{COMMA}{NBSP}oyuncak +STR_QUANTITY_SWEETS :{COMMA}{NBSP}çanta tatlı STR_QUANTITY_COLA :{VOLUME_LONG} kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} pamuk şeker STR_QUANTITY_BUBBLES :{COMMA} baloncuk @@ -166,12 +166,12 @@ STR_ABBREV_NONE :{TINY_FONT}YOK STR_ABBREV_ALL :{TINY_FONT}HEPSİ # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} yolcu -STR_BAGS :{COMMA} çanta -STR_TONS :{COMMA} ton -STR_LITERS :{COMMA} litre -STR_ITEMS :{COMMA} adet -STR_CRATES :{COMMA} kasa +STR_PASSENGERS :{COMMA}{NBSP}yolcu +STR_BAGS :{COMMA}{NBSP}çanta +STR_TONS :{COMMA}{NBSP}ton +STR_LITERS :{COMMA}{NBSP}litre +STR_ITEMS :{COMMA}{NBSP}adet +STR_CRATES :{COMMA}{NBSP}kasa # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Koyu Mavi @@ -192,37 +192,37 @@ STR_COLOUR_GREY :Gri STR_COLOUR_WHITE :Beyaz # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mil/s -STR_UNITS_VELOCITY_METRIC :{COMMA} km/s -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mil/s +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/s +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}bg -STR_UNITS_POWER_METRIC :{COMMA}bg -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}bg +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}bg +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galon -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galon +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litre +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Süzgeç metni: @@ -242,13 +242,16 @@ STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Pencere STR_TOOLTIP_SHADE :{BLACK}Pencereyi gizle - yalnız başlık çubuğunu göster STR_TOOLTIP_DEBUG :{BLACK}NewGRF hata ayıklama bilgisini göster STR_TOOLTIP_DEFSIZE :{BLACK}Pencereyi varsayılan boyuta getirir. Ctrl ile tıklayarak mevcut boyutu varsayılan olarak kaydedin -STR_TOOLTIP_STICKY :{BLACK}Bu pencereyi 'Tüm pencereleri kapat' tuşuyla kapatılamaz olarak işaretle. Ctrl+tıklama aynı zamanda şu anki durumunu varsayılan olarak kaydeder +STR_TOOLTIP_STICKY :{BLACK}Bu pencereyi 'Tüm pencereleri kapat' tuşuyla kapatılamaz olarak işaretle. Ctrl+Tıklama aynı zamanda şu anki durumunu varsayılan olarak kaydeder STR_TOOLTIP_RESIZE :{BLACK}Pencereyi boyutlandirmak için tıklayıp sürükle STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pencere boyutunu büyült/küçült STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Kaydırma çubuğu - listeyi aşağı/yukarı kaydırır STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Kaydırma çubuğu - listeyi sağa/sola kaydır STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Bir arazi üzerinde bulunan binaları ve benzeri yapıları yık. Ctrl bir alanı köşeden köşeye seçer. Shift ile tıklama maliyet tahminini gösterir +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Varsayılan STR_BUTTON_CANCEL :{BLACK}İptal @@ -274,8 +277,8 @@ STR_SORT_BY_PRODUCTION :Üretim STR_SORT_BY_TYPE :Tür STR_SORT_BY_TRANSPORTED :Taşınan STR_SORT_BY_NUMBER :Numara -STR_SORT_BY_PROFIT_LAST_YEAR :Geçen seneki kâr -STR_SORT_BY_PROFIT_THIS_YEAR :Bu seneki kâr +STR_SORT_BY_PROFIT_LAST_YEAR :Geçen seneki kar +STR_SORT_BY_PROFIT_THIS_YEAR :Bu seneki kar STR_SORT_BY_AGE :Yaş STR_SORT_BY_RELIABILITY :Güvenilirlik STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Her kargo için toplam kapasite @@ -288,16 +291,16 @@ STR_SORT_BY_TIMETABLE_DELAY :Zaman çizelges STR_SORT_BY_FACILITY :İstasyon türü STR_SORT_BY_WAITING_TOTAL :Toplam bekleyen kargo STR_SORT_BY_WAITING_AVAILABLE :Kullanılabilir bekleyen kargo -STR_SORT_BY_RATING_MAX :En yüksek kargo puanı -STR_SORT_BY_RATING_MIN :En düşük kargo puanı -STR_SORT_BY_ENGINE_ID :LokoAdı (klasik sıra) +STR_SORT_BY_RATING_MAX :En yüksek kargo değerlendirmesi +STR_SORT_BY_RATING_MIN :En düşük kargo değerlendirmesi +STR_SORT_BY_ENGINE_ID :Motor No. (klasik sıra) STR_SORT_BY_COST :Fiyat STR_SORT_BY_POWER :Güç STR_SORT_BY_TRACTIVE_EFFORT :Tork -STR_SORT_BY_INTRO_DATE :Piyasaya Girişi -STR_SORT_BY_RUNNING_COST :Bakım Gideri -STR_SORT_BY_POWER_VS_RUNNING_COST :Güç/Bakım Gideri -STR_SORT_BY_CARGO_CAPACITY :Kapasite +STR_SORT_BY_INTRO_DATE :Giriş tarihi +STR_SORT_BY_RUNNING_COST :Bakım gideri +STR_SORT_BY_POWER_VS_RUNNING_COST :Güç/Bakım gideri +STR_SORT_BY_CARGO_CAPACITY :Kargo kapasitesi STR_SORT_BY_RANGE :Menzil STR_SORT_BY_POPULATION :Nüfus STR_SORT_BY_RATING :Değerlendirme @@ -362,19 +365,18 @@ STR_SCENEDIT_FILE_MENU_QUIT :Oyundan Çık ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Seçenekler -STR_SETTINGS_MENU_CONFIG_SETTINGS :Gelişmiş ayarlar STR_SETTINGS_MENU_SCRIPT_SETTINGS :YZ/Oyun betik ayarları STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF ayarları STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Şeffaflık seçenekleri STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Şehir isimlerini göster STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :İstasyon isimlerini göster -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Yolimlerini göster +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Ara nokta isimlerini göster STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tabelaları göster STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Rakip tabela ve isimlerini göster STR_SETTINGS_MENU_FULL_ANIMATION :Tüm animasyonlar STR_SETTINGS_MENU_FULL_DETAIL :Tüm detaylar STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Şeffaf binalar -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Şeffaf Tabelalar +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Şeffaf tabelalar ############ range ends here ############ range for file menu starts @@ -387,8 +389,8 @@ STR_FILE_MENU_EXIT :Çıkış # map menu STR_MAP_MENU_MAP_OF_WORLD :Dünya haritası -STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra görünüm -STR_MAP_MENU_LINGRAPH_LEGEND :Kargo Akış Lejantı +STR_MAP_MENU_EXTRA_VIEW_PORT :Ek görünüm +STR_MAP_MENU_LINGRAPH_LEGEND :Kargo Akış Göstergesi STR_MAP_MENU_SIGN_LIST :Tabela listesi ############ range for town menu starts @@ -401,7 +403,7 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Teşvikler ############ range ends here ############ range for graph menu starts -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Faaliyet kâr grafiği +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Faaliyet kar grafiği STR_GRAPH_MENU_INCOME_GRAPH :Gelir grafiği STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Taşınan kargo grafiği STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Başarı geçmişi grafiği @@ -411,7 +413,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Kargo ödeme ta ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Şirketler ligi tablosu -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Ayrıntılı performans seviyesi +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Ayrıntılı performans değerlendirmesi STR_GRAPH_MENU_HIGHSCORE :Puan tablosu ############ range ends here @@ -452,8 +454,8 @@ STR_TOOLBAR_SOUND_MUSIC :Ses/müzik ############ range ends here ############ range for message menu starts -STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Son mesaj/haber -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Mesaj Geçmişi +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Son mesaj/haber raporu +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Mesaj geçmişi ############ range ends here ############ range for about menu starts @@ -461,17 +463,17 @@ STR_ABOUT_MENU_LAND_BLOCK_INFO :Arazi bilgisi STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsolu aç/kapa STR_ABOUT_MENU_AI_DEBUG :YZ/Oyun betik hata ayıklama -STR_ABOUT_MENU_SCREENSHOT :Ekran Görüntüsü -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Ekran görüntüsüne tamamen yaklaşıldı +STR_ABOUT_MENU_SCREENSHOT :Ekran görüntüsü +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Tamamen yakınlaştırılmış ekran görüntüsü STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Varsayılan yakınlıkta ekran görüntüsü STR_ABOUT_MENU_GIANT_SCREENSHOT :Tüm harita ekran görüntüsü STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' Hakkında -STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite hizalayıcı +STR_ABOUT_MENU_SPRITE_ALIGNER :Nesne hizalayıcı STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Çerçeveleri aç/kapa STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Kirli blokları renklendir/renklendirme ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. @@ -487,22 +489,40 @@ STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. -STR_ORDINAL_NUMBER_16TH :16. -STR_ORDINAL_NUMBER_17TH :17. -STR_ORDINAL_NUMBER_18TH :18. -STR_ORDINAL_NUMBER_19TH :19. -STR_ORDINAL_NUMBER_20TH :20. -STR_ORDINAL_NUMBER_21ST :21. -STR_ORDINAL_NUMBER_22ND :22. -STR_ORDINAL_NUMBER_23RD :23. -STR_ORDINAL_NUMBER_24TH :24. -STR_ORDINAL_NUMBER_25TH :25. -STR_ORDINAL_NUMBER_26TH :26. -STR_ORDINAL_NUMBER_27TH :27. -STR_ORDINAL_NUMBER_28TH :28. -STR_ORDINAL_NUMBER_29TH :29. -STR_ORDINAL_NUMBER_30TH :30. -STR_ORDINAL_NUMBER_31ST :31. +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1. +STR_DAY_NUMBER_2ND :2. +STR_DAY_NUMBER_3RD :3. +STR_DAY_NUMBER_4TH :4. +STR_DAY_NUMBER_5TH :5. +STR_DAY_NUMBER_6TH :6. +STR_DAY_NUMBER_7TH :7. +STR_DAY_NUMBER_8TH :8. +STR_DAY_NUMBER_9TH :9. +STR_DAY_NUMBER_10TH :10. +STR_DAY_NUMBER_11TH :11. +STR_DAY_NUMBER_12TH :12. +STR_DAY_NUMBER_13TH :13. +STR_DAY_NUMBER_14TH :14. +STR_DAY_NUMBER_15TH :15. +STR_DAY_NUMBER_16TH :16. +STR_DAY_NUMBER_17TH :17. +STR_DAY_NUMBER_18TH :18. +STR_DAY_NUMBER_19TH :19. +STR_DAY_NUMBER_20TH :20. +STR_DAY_NUMBER_21ST :21. +STR_DAY_NUMBER_22ND :22. +STR_DAY_NUMBER_23RD :23. +STR_DAY_NUMBER_24TH :24. +STR_DAY_NUMBER_25TH :25. +STR_DAY_NUMBER_26TH :26. +STR_DAY_NUMBER_27TH :27. +STR_DAY_NUMBER_28TH :28. +STR_DAY_NUMBER_29TH :29. +STR_DAY_NUMBER_30TH :30. +STR_DAY_NUMBER_31ST :31. ############ range for days ends ############ range for months starts @@ -541,10 +561,10 @@ STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STR STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} -STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Faaliyet Kâr Grafiği +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Faaliyet Kar Grafiği STR_GRAPH_INCOME_CAPTION :{WHITE}Gelir Grafiği STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Taşınan kargo -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Performans seviyesi (azami=1000) +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Şirket performans değerlendirmeleri (azami=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Şirket Değerleri STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Kargo Ödeme Seviyeleri @@ -552,8 +572,8 @@ STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLA STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}20 karelik yolda 10 birim (ya da 10,000 litre) için ödeme STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Tümünü aç STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Tümünü kapat -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Kargo ödeme tablosunda tüm kargo tiplerini göster -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Kargo ödeme tablosunda hiçbir kargo tipini gösterme +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Kargo ödeme tablosunda tüm kargo türlerini göster +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Kargo ödeme tablosunda hiçbir kargo türünü gösterme STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Kargo türünü göster/gizle STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -577,7 +597,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Genel Müdür STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Kodaman # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Ayrıntılı performans oranı +STR_PERFORMANCE_DETAIL :{WHITE}Ayrıntılı performans değerlendirmesi STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detay STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) @@ -586,7 +606,7 @@ STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Bu şirk ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Araçlar: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}İstasyonlar: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Asg. kâr: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Asg. kar: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Asg. gelir: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Azm. gelir: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Taşınan: @@ -595,11 +615,11 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Para: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kredi: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Toplam: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Geçen yıl kâr eden araç sayısı. Kara araçları, trenler, uçak ve gemiler dâhil. +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Geçen yıl kar eden araç sayısı. Kara araçları, trenler, uçak ve gemiler dahil. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Yakın zamanda hizmet almış istasyon sayısı. Tren garları, otobüs durakları, havalimanları vb. aynı istasyona bağlı olsa da ayrı olarak sayılır. -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}En az gelir getiren aracın kârı (2 yaş ve yukarı araçlar için) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Son 12 çeyrek içindeki en az kârlı çeyrek -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Son 12 çeyrek içindeki en kârlı çeyrekte kazanılan para +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}En az gelir getiren aracın karı (2 yaş ve yukarı araçlar için) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Son 12 çeyrek içindeki en az karlı çeyrek +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Son 12 çeyrek içindeki en karlı çeyrekte kazanılan para STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Son dört çeyrekte taşınan kargo miktarı STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Son çeyrekte taşınan farklı kargo türü sayısı STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Bu şirketin bankadaki para miktarı @@ -609,8 +629,8 @@ STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Toplam p # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Caz Müzik Kutusu STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Hepsi -STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Eski Stil -STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Yeni Stil +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Eski Biçem +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Yeni Biçem STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Sokağı STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Özel 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Özel 2 @@ -633,9 +653,9 @@ STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Müziği STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Müziği başlat STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Efekt ve müzik sesini ayarlamak için sürükleyin STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}'Tüm şarkılar' programını seç -STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}'Eski stil' programını seç -STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}'Yeni stil' programını seç -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'Ezy Sokağı stili müzik' programını seç +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}'Eski biçem müzik' programını seç +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}'Yeni biçem' programını seç +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'Ezy Sokağı biçemi müzik' programını seç STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}'Özel 1' (kullanıcı-tanımlı) programı seç STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'Özel 2' (kullanıcı-tanımlı) programı seç STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Rastgele programı aç/kapa @@ -677,7 +697,7 @@ STR_SMALLMAP_TYPE_VEHICLES :Araçlar STR_SMALLMAP_TYPE_INDUSTRIES :Fabrikalar STR_SMALLMAP_TYPE_ROUTEMAP :Kargo Akışı STR_SMALLMAP_TYPE_ROUTES :Güzergahlar -STR_SMALLMAP_TYPE_VEGETATION :Nebatat +STR_SMALLMAP_TYPE_VEGETATION :Bitkiler STR_SMALLMAP_TYPE_OWNERS :Sahipler STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Harita üzerinde eşyükselti eğrilerini göster STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Harita üzerinde araçları göster @@ -688,7 +708,7 @@ STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Harita STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Harita üzerinde arazi sahiplerini göster STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Bir fabrika türünü gösterip gizlemek için üzerine tıklayın. Ctrl-Sol tık seçili tür dışında hepsini kapatır. Tekrar Ctrl+Sol tık ile tüm fabrika türleri görünür hale gelir. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Bir şirketin malvarlığını gösterip gizlemek için üzerine tıklayın. Ctrl+Sol tık seçili dışındaki tüm şirketleri gizler. Aynı şirket üzerinde tekrar Ctrl+Sol tıklarsanız tüm şirketler tekrar görüntülenir. -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Bir kargo tipine tıklayarak haritada gösterin/gizleyin. Ctrl+Tık seçili olan dışında tüm kargo tiplerini gizler. Tekrar Ctrl+Tık ile hepsini yeniden gösterebilirsiniz +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Bir kargo türüne tıklayarak haritada gösterin/gizleyin. Ctrl+Tıklama seçili olan dışında tüm kargo türlerini gizler. Tekrar Ctrl+Tıklama ile hepsini yeniden gösterebilirsiniz STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Yollar STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Demiryolları @@ -733,8 +753,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Haritada STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Yükseklik haritasının gösterimini aç/kapa STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Haritada şirket mülkü gösterme STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Haritada şirketlerin tüm mülklerini göster -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Haritada hiçbir kargo tipini gösterme -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Haritadaki tüm kargo tiplerini göster +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Haritada hiçbir kargo türünü gösterme +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Haritadaki tüm kargo türlerini göster # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Son mesajı ya da haberi göster @@ -798,41 +818,39 @@ STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLAC STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Kriz Atlatıldı!{}{}Ekonomi güçlendikçe ticaretin artması sanayicilere güven veriyor! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} üretimi arttırdi! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY}nde yeni kömür rezervi bulundu!{} Üretimin ikiye katlanması bekleniyor! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY}nda yeni petrol rezervi bulundu!{} Üretimin ikiye katlanması bekleniyor! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}ndeki yeni tarım tekniklerinin üretimi ikiye katlaması bekleniyor! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} endüstrisinde yeni kömür rezervi bulundu!{} Üretimin ikiye katlanması bekleniyor! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} endüstrisinde yeni petrol rezervi bulundu!{} Üretimin ikiye katlanması bekleniyor! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} endüstrisindeki yeni tarım tekniklerinin üretimi ikiye katlaması bekleniyor! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{1:INDUSTRY}'nin {BLACK}{0:STRING} üretimi %{2:COMMA} arttı! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} üretimi %50 düşürdü STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} bölgesine böcek sürüsü girdi !{} Üretim %50 düştü -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{1:INDUSTRY}'nin {BLACK}{0:STRING} üretimi %{2:COMMA} azaldı! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{1:INDUSTRY} {BLACK}{0:STRING} üretimi %{2:COMMA} azaldı! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} tren garajda bekliyor STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} garajda bekliyor STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} tersanede bekliyor STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} hangarda bekliyor -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} aracının programında çok az talimat var STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} aracının boş bir emri var STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} talimatları arasında tekrarlanmış olanlar var STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} aracının geçersiz talimatları var -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} eskiyor STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} çok eskidi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} çok eskidi ve acilen değiştirilmesi gerekiyor STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} devam edecek bir yol bulamıyor STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} kayboldu -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} geçen yıl {CURRENCY_LONG} kâr etti +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} geçen yıl {CURRENCY_LONG} kar etti STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} bir sonraki hedefe gidemiyor çünkü hedef menzil dışında -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} durdu çünkü kargo tipi değişiklik emri başarısız oldu +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} durdu çünkü kargo türü değişiklik emri başarısız oldu STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Otomatik yenileme {VEHICLE} için başarısız oldu{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}{STRING} artık kullanılabilir! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} artık kullanılabilir : {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Yeni {STRING} artık kullanılabilir! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} artık {STRING} kabul etmiyor STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} artık {STRING} veya {STRING} kabul etmiyor @@ -900,10 +918,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gürcistan Lari STR_GAME_OPTIONS_CURRENCY_IRR :İran Riyali (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Karayolu taşıtları STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Trafik akış yönünü seçin STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Soldan trafik @@ -913,7 +927,7 @@ STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Şehir i STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Şehir isimleri için bir tür seçin ############ start of townname region -STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :İngiliz (Orjinal) +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :İngiliz (Özgün) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fransız STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Alman STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :İngiliz (İlave) @@ -936,14 +950,16 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italyan STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalan ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Otokaydet -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otokaydetme sıklığını seçin +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Otomatik Kaydet +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otomatik kaydetme sıklığını seçin +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Kapalı STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Her ay STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Her üç ayda bir STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Her altı ayda bir STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Her oniki ayda bir +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Dil STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Görünen dili seçin @@ -955,11 +971,10 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekran Ç STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Kullanılacak ekran çözünürlüğünü seçin STR_GAME_OPTIONS_RESOLUTION_OTHER :diğer -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekran görüntüsü biçimi -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kullanılacak ekran görüntüsü biçimini seçin -STR_GAME_OPTIONS_BASE_GRF :{BLACK}Temel grafik seti -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kullanılacak temel grafik setini seçin + +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Temel grafik kümesi +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kullanılacak temel grafik kümesini seçin STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} kayıp/bozuk dosya STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Temel grafik setiyle ilgili ilave bilgiler @@ -972,7 +987,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kullanı STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} adet bozuk dosya var STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Temel müzik hakkında daha fazla bilgi -STR_ERROR_FULLSCREEN_FAILED :{WHITE}Tam ekran modu başarısız +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Tam ekran kipi başarısız # Custom currency window @@ -1053,39 +1068,43 @@ STR_TERRAIN_TYPE_MOUNTAINOUS :Dağlık STR_CITY_APPROVAL_PERMISSIVE :İzne tabi STR_CITY_APPROVAL_TOLERANT :Töleranslı -STR_CITY_APPROVAL_HOSTILE :Katı +STR_CITY_APPROVAL_HOSTILE :Düşman STR_WARNING_NO_SUITABLE_AI :{WHITE}Uygun YZ'ler yok...{}'Çevrimiçi içerik' sistemiyle pek çok YZ indirebilirsiniz -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Gelişmiş Ayarlar +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Süzgeç metni: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Tümünü genişlet STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Tümünü kısalt STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(açıklama bulunmamaktadır) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Varsayılan değer: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE :{LTBLUE}Ayar tipi: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE_CLIENT :Kullanıcı ayarları (kayıtlı dosyada saklanmadı; tüm oyunları etkilemektedir) -STR_CONFIG_SETTING_TYPE_GAME_MENU :Kullanıcı ayarları (kayıtlı dosyada saklandı; sadece yeni oyunları etkilemektedir) -STR_CONFIG_SETTING_TYPE_GAME_INGAME :Oyun ayarları (kayıtlı dosyada saklandı; sadece mevcut oyuna etkilemektedir) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Şirket ayarları (kayıtlı dosyada saklandı; sadece yeni oyunu etkilemektedir) -STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Şirket ayarları (kayıtlı dosyada saklandı; sadece mevcut şirketi etkilemektedir) - -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Göster: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Aşağıdaki listeyi yalnızca değişen ayarları göstererek sınırlandırır -STR_CONFIG_SETTING_RESTRICT_BASIC :Temel ayarlar -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gelişmiş ayarlar -STR_CONFIG_SETTING_RESTRICT_ALL :Uzman ayarları / tüm ayarlar +STR_CONFIG_SETTING_TYPE :{LTBLUE}Ayar türü: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Kullanıcı ayarları (kayıtlı dosyada saklanmaz; tüm oyunları etkilemektedir) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Kullanıcı ayarları (kayıtlı dosyada saklanır; sadece yeni oyunları etkilemektedir) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Oyun ayarları (kayıtlı dosyada saklanır; sadece mevcut oyunu etkilemektedir) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Şirket ayarları (kayıtlı dosyada saklanır; sadece yeni oyunu etkilemektedir) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Şirket ayarları (kayıtlı dosyada saklanır; sadece mevcut şirketi etkilemektedir) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tür: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Aşağıdaki listeyi önceden tanımlı filtreler kullanarak sınırlandırır +STR_CONFIG_SETTING_RESTRICT_BASIC :Temel (sadece önemli ayarları göster) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gelişmiş (çoğu ayarı göster) +STR_CONFIG_SETTING_RESTRICT_ALL :Uzman (garip olanlar dahil tüm ayarları göster) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Geçerli değerden farklı bir değere sahip ayarlama STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Yeni oyun ayarlarınızdan farklı bir değere sahip ayarlar STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Aşağıdaki liste belirli bir ayar türüne göre kısıtlanır -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tüm Ayarlar -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kullanıcı Ayarları (kayıtlı dosyada saklanmadı; tüm oyunları etkilemektedir) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Oyun ayarları (kayıtlı dosyada saklandı; sadece yeni oyunu etkilemektedir) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Oyun ayarları (kayıtlı dosyada saklandı; sadece yeni oyunu etkilemektedir) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Şirket ayarları (kayıtlı dosyada saklandı; sadece yeni oyunu etkilemektedir) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Şirket ayarları (kayıtlı dosyada saklandı; sadece yeni oyunu etkilemektedir) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tüm ayar türleri +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :İstemci ayarları (kayıtlı dosyada saklanmaz; tüm oyunları etkilemektedir) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Oyun ayarları (kayıtlı dosyada saklanır; sadece yeni oyunları etkilemektedir) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Oyun ayarları (kayıtlı dosyada saklanır; sadece geçerli oyunu etkilemektedir) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Şirket ayarları (kayıtlı dosyada saklanır; sadece yeni oyunları etkilemektedir) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Şirket ayarları (kayıtlı dosyada saklanır; sadece geçerli şirketi etkilemektedir) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Tüm arama sonuçlarını{}{SILVER}Kategoriyi {BLACK}{WHITE}{STRING} ayarlayarak göster +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Tüm arama sonuçlarını{}{SILVER}Türü {BLACK} {WHITE}Tüm ayar türleri olarak ayarlayarak göster +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Tüm arama sonuçlarını{}{SILVER}Kategoriyi {BLACK} {WHITE}{STRING} {BLACK}ve {SILVER}Türü {BLACK} {WHITE}Tüm ayar türleri olarak ayarlayarak göster +STR_CONFIG_SETTINGS_NONE :{WHITE}- Hiçbiri - STR_CONFIG_SETTING_OFF :Kapalı STR_CONFIG_SETTING_ON :Açık @@ -1096,7 +1115,7 @@ STR_CONFIG_SETTING_COMPANIES_OWN :Kendi şirketim STR_CONFIG_SETTING_COMPANIES_ALL :Tüm şirketler STR_CONFIG_SETTING_NONE :Yok -STR_CONFIG_SETTING_ORIGINAL :Orijinal +STR_CONFIG_SETTING_ORIGINAL :Özgün STR_CONFIG_SETTING_REALISTIC :Gerçekçi STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Sol @@ -1110,7 +1129,7 @@ STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Borç faiz oran STR_CONFIG_SETTING_RUNNING_COSTS :İşletme giderleri: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Araçlar ve altyapı için bakım ve işletme giderlerinin seviyesini ayarlayın STR_CONFIG_SETTING_CONSTRUCTION_SPEED :İnşaat hızı: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :YZler için inşaat hareketi sayısını sınırlayın +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :YZ'ler için inşaat hareketi sayısını sınırlayın STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Araç bozulmaları: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Yetersiz bakım gören araçların ne sıklıkta bozulacağını ayarlayın STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Ödenek çarpanı: {STRING} @@ -1126,23 +1145,21 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Araçları ya d STR_CONFIG_SETTING_CITY_APPROVAL :Arazi şekillendirmeye karşı belediye meclisinin tavrı: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Şirketlerin sebep olduğu gürültü ve çevreye zararın kasaba beğenilerini ve ilerideki inşaatlarını nasıl etkileyeceğini seçin -STR_CONFIG_SETTING_BUILDONSLOPES :Kıyılara ve eğimli araziye inşaat izni: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Etkinleştirilirse raylar ve istasyonlar çoğu zaman eğimlerin üzerine inşa edilebilir. Etkinliği kaldırılırsa raylar ve istasyonlar sadece raylarla aynı doğrultuda olan eğimlerin üzerine inşa edilebilir, böylelikle altyapı gerektirmez -STR_CONFIG_SETTING_AUTOSLOPE :Binaların, yolların, rayların v.b. altındaki araziyi değiştirmeye izin ver (otomatik eğim): {STRING} +STR_CONFIG_SETTING_AUTOSLOPE :Binaların, yolların vb. altındaki araziyi değiştirmeye izin ver: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Binaları ve yolları kaldırmaksızın altlarında yeryüzü şekillendirmesi yapılmasına izin ver STR_CONFIG_SETTING_CATCHMENT :İstasyon kapsama alanlarının daha gerçeğe yakın ölçülerde olmasına izin ver: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Farklı istasyon ve hava limanları için farklı büyüklükte alanlar gerekir -STR_CONFIG_SETTING_EXTRADYNAMITE :Şehirlere ait köprülerin, yolların ve tünellerin yıkılmasına izin vermeleri için, şehir yetkililerinin toleransını artır: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE :Şehirlere ait köprülerin, yolların ve tünellerin yıkılmasına izin vermeleri için, şehir yetkililerinin toleransını arttır: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Belediyelerin sahip olduğu altyapı ve binaların yıkımını kolaylaştır STR_CONFIG_SETTING_TRAIN_LENGTH :En yüksek tren uzunluğu: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :En yüksek tren uzunluğunu belirleyin +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Azami tren uzunluğunu belirleyin STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} kare STR_CONFIG_SETTING_SMOKE_AMOUNT :Araçlardan çıkan duman veya kıvılcım miktarı: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Araçlardan ne kadar duman ya da kıvılcım çakacağını ayarla STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Tren ivme modeli: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Tren hızlanmaları için fizik modelini belirle. "Orijinal" model eğimlerde tüm araçlar için eşit şekilde güçlük yaratır. “Gerçekçi” model eğimlerde ve kıvrımlarda, uzunluk ve çekiş gücü gibi çeşitli ölçütlere dayalı olarak güçlük yaratır. +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Tren hızlanmaları için fizik modelini belirle. "Özgün" model eğimlerde tüm araçlar için eşit şekilde güçlük yaratır. "Gerçekçi" model eğimlerde ve kıvrımlarda, uzunluk ve çekiş gücü gibi çeşitli ölçütlere dayalı olarak güçlük yaratır. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Kara taşıtı ivme modeli: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Kara yolu araçlarının hızlanmaları için fizik modelini belirle. "Orijinal" model eğimlerde tüm araçlar için eşit şekilde güçlük yaratır. “Gerçekçi” model eğimlerde, motorun çeşitli özelliklerine, örneğin “çekiş gücüne” göre güçlük yaratır +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Karayolu araçlarının hızlanmaları için fizik modelini belirle. "Özgün" model eğimlerde tüm araçlar için eşit şekilde güçlük yaratır. “Gerçekçi” model eğimlerde, motorun çeşitli özelliklerine, örneğin 'çekiş gücüne' göre güçlük yaratır STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Trenler için eğim dikliği: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Bir tren için eğimli bir karenin dikliği. Yüksek değerler tepeye tırmanmayı güçleştirir STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% @@ -1151,21 +1168,15 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Bir kara taşı STR_CONFIG_SETTING_FORBID_90_DEG :Tren ve gemilerin 90 derece dönmesini yasakla: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 derece dönüşler yatay bir rayı bitişik karede dikey bir ray parçası takip ettiği zaman gerçekleşir, böylelikle trenin diğer ray kombinasyonlarındaki alışılagelmiş 45 derecelik dönüşü yerine karenin kenarından geçerken 90 derecelik dönüş yapmasını sağlar. Bu aynı zamanda gemilerin dönme açısına da uygulanır STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Doğrudan bitişik olmayan istasyonları birleştirme izni: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Mevcut parçalarına doğrudan temas etmeksizin bir istasyona parçalar eklenmesine müsaade et. Yeni parçalar eklenirken Ctrl+Click basılması gerekir -STR_CONFIG_SETTING_IMPROVEDLOAD :Geliştirilmiş yükleme algoritması kullan: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Etkinleştirilirse istasyonda bekleyen araçlar sırayla yüklenecektir. Bir sonraki aracın yüklenmesi ancak istasyonda bekleyen ilk aracı tamamen doldurmaya yetecek kadar kargo olduğunda başlar -STR_CONFIG_SETTING_GRADUAL_LOADING :Araçlar yavaş yavaş dolsun: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Sadece yüklenen kargo miktarına bağlı olarak belirli bir zaman içerisinde her şeyin tek seferde yüklenmesi yerine, araçları kendilerine özel yükleme sürelerini kullanarak teker teker yükle +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Mevcut parçalarına doğrudan temas etmeksizin bir istasyona parçalar eklenmesine müsaade et. Yeni parçalar eklenirken Ctrl+Tıklama gerekir STR_CONFIG_SETTING_INFLATION :Enflasyon: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Maliyetlerin ödemelerden biraz daha hızlı arttığı ekonomide enflasyonu etkinleştir -STR_CONFIG_SETTING_SELECTGOODS :Sadece istek varsa kargo kabul edilsin: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Bir istasyona sadece bir yükleme aracından talep edilen kargoyu ulaştır. Bu ayarlama bir istasyona getirilmeyen kargolar yüzünden kötü derecelendirmeyi önler STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Azami köprü uzunluğu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Köprü inşası için azami uzunluk STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Azami tünel uzunluğu: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Tünel inşa etmek için azami uzunluk STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Üretim fabrikalarının yapım yöntemi: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Birincil bir endüstriye fon sağlamanın yolu. ‘yok’un anlamı herhangi bir endüstriye fon sağlama imkanı yok demektir. ‘araştırma’nın anlamı fon sağlama mümkün, ancak inşası harita üzerinde herhangi bir yerde olacak ve başarısız olma ihtimali de var. ‘diğer endüstriler gibi’nin anlamı birincil endüstriler işleyen diğer endüstriler gibi şirketler tarafından istenilen yerde kurulabilir +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Birincil bir endüstriye fon sağlamanın yolu. 'Hiçbiri', herhangi bir endüstriye fon sağlama imkanı yok demektir. 'Maden arama', fon sağlama mümkün, ancak inşası harita üzerinde herhangi bir yerde olacak ve başarısız olma ihtimali de var demektir. 'Diğer endüstriler gibi', birincil endüstriler işleyen diğer endüstriler gibi şirketler tarafından istenilen yerde kurulabilir STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Hiçbiri STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Diğer endüstriler gibi STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Maden arama @@ -1187,10 +1198,8 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Bir trenin plat STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :yakın uç STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :orta STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :uzak uç -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Karayolu taşıtları kuyruğa girsin (içiçe geçerek): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Kara taşıtlarını meşgul olan duraklar boşalana kadar önlerinde bekleyecek şekilde ayarlayın STR_CONFIG_SETTING_AUTOSCROLL :Fare kenardayken pencere etkin: {STRING} -STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Etkinleştirilirse mouse pencerenin kenarına yaklaştığında görüş alanı kaymaya başlayacaktır +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Etkinleştirilirse fare pencerenin kenarına yaklaştığında görüş alanı kaymaya başlayacaktır STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Kapalı STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Asıl görüş alanı, sadece tam ekran STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Ana görüş alanı @@ -1202,13 +1211,13 @@ STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Şayet bir şir STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Binaları finanse etmeye izin ver: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Şirketlerin yeni binalar yapılması için kasabalara para aktarmalarına izin ver STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Yerel yol tamiratlarına izin ver: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Şirketlerin kara yolu hizmetlerini sabote etmek için kasabaya yol tamiri yardımı yapmasına izin ver +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Şirketlerin karayolu hizmetlerini sabote etmek için kasabaya yol tamiri yardımı yapmasına izin ver STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Diğer şirketlere para gönderme izinli: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Çok oyunculu oyunlarda şirketler arası para transferine izin ver STR_CONFIG_SETTING_FREIGHT_TRAINS :Ağır yük trenleri için ağırlık çarpanı: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Trenlerde yük taşımanın etkisini ayarlayın. Yüksek bir değer trenlerde yük taşımayı özellikle tepelerde daha zor hale getirir STR_CONFIG_SETTING_PLANE_SPEED :Uçak hız faktörü: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Havayolundan elde edilen geliri azaltmak için uçakların diğer araç tiplerine göre hızını ayarlayın +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Havayolundan elde edilen geliri azaltmak için uçakların diğer araç türlerine göre hızını ayarlayın STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Uçak kazası sayısı: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Uçak kazası olasılığını belirleyin @@ -1219,16 +1228,12 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Şehiriçi yoll STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Kasabanın sahip olduğu yollarda yol üstü durakların inşasına izin verir STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Rakiplerin yolu üzerinde durak yapmaya izin ver: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Başka şirketlerin sahip olduğu yollarda yol üstü durakların inşasına izin verir -STR_CONFIG_SETTING_ADJACENT_STATIONS :Bitişik istasyonlar izinli: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Farklı istasyonların birbirine değmesine izin verir -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Birden çok NewGRF lokomotif setini aktifleştir: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Eski NewGRF'ler için uyumluluk seçeneği. Ne yaptığınızı kesin olarak bilmiyorsanız, bu seçeneği kapatmayın! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Araçlar varken bu ayarı değiştirmezsiniz STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Altyapı bakımları: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Etkinleştirildiğinde; altyapı, bakım giderine neden olur. Maliyet ağ büyüklüğüne göre daha hızlı yükselir, dolayısıyla büyük şirketleri küçüklere göre daha çok etkiler STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Havalimanlarının süresi asla dolmasın: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Bu ayar tüm havalimanı tiplerini aktif hale geldikten sonra sürekli kılar +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Bu ayarı etkinleştirmek her havaalanı türünün, tanıtımından sonra sürekli olarak kullanılabilir kalmasını sağlar. STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Araç yolunu kaybederse uyar: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Komut verilen noktaya giden yolu bulamayan araçlar için mesajlar göster. @@ -1254,7 +1259,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Kırmızı penc STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} saniye STR_CONFIG_SETTING_HOVER_DELAY :Araçlara dair bilgileri göster: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Fare bir arayüz elemanının üzerine getirildiğinde o araca dair bilgilerin gösterilmesi için geçmesi gereken süre. Alternatif olarak bu işlem için sağ fare tuşu da kullanılabilir. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Fareyi {COMMA} saniye boyunca üzerinde bekletin +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Fareyi {COMMA} milisaniye üzerinde tutun STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Sağ tıklama STR_CONFIG_SETTING_POPULATION_IN_LABEL :Şehir nüfusunu isminin yanına yaz: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Haritadaki şehir etiketlerinde nüfus bilgisini görüntüle @@ -1267,12 +1272,12 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Petrol rafinerilerinin kenarlardan azami uzaklığı: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Petrol rafinerileri sadece haritanın sınırlarında inşa edilir; ada haritalarında sahillere kurulurlar. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Kar kalınlığı: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Arazinin engebesi (sadece TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Arazinin engebesi: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Dümdüz STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Düzgün STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Engebeli STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Çok Engebeli -STR_CONFIG_SETTING_TREE_PLACER :Ağaç üretme algoritmasi: {STRING} +STR_CONFIG_SETTING_TREE_PLACER :Ağaç üretme algoritması: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Hiçbiri STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Özgün STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Gelişmiş @@ -1280,8 +1285,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Yükseklik hari STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Saat yönünün tersi STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Saat yönü STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Düzlük bir senaryonun yükseklik seviyesi: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Harita kenarlarındaki karelerde bulunan araziyi şekillendirmeye izin ver: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Kapatıldığı takdirde haritanın kenarları daima okyanusla çevrili olur. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Kuzey kenarda bir veya daha fazla kare boş değil STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Kenarlardan birinde bir veya daha fazla kare su değil @@ -1302,16 +1305,16 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Düzgün viewpo STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Küçük haritaya tıklandığında veya harita üzerindeki belli bir nesneye gidilmesi için komut verildiğinde ana görüntünün nasıl kaydırılacağını kontrol eder. Etkinleştirildiğinde harita kayarak ilerler, kapatıldığında ise doğrudan hedeflenen noktaya atlama yapar. STR_CONFIG_SETTING_MEASURE_TOOLTIP :İnşa araçları kullanılırken ölçüm ipucu göster: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :İnşaat işlemleri sırasında fareyi sürükleyince kare-uzaklıkları ve yükseklik farklarını göster. -STR_CONFIG_SETTING_LIVERIES :Şirketin renklerini göster: {STRING} -STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Araç-tipine özel görünümlerin kullanımını kontrol et (şirkete özel olanın tam tersine) +STR_CONFIG_SETTING_LIVERIES :Araç türüne özel logolar göster: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Araç türüne özel görünümlerin kullanımını kontrol et (şirkete özel olanın tam tersine) STR_CONFIG_SETTING_LIVERIES_NONE :Hiçbiri STR_CONFIG_SETTING_LIVERIES_OWN :Şirketi al STR_CONFIG_SETTING_LIVERIES_ALL :Tüm şirketler STR_CONFIG_SETTING_PREFER_TEAMCHAT : tuşu takım içi sohbette kullanılsın: {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Şirket-içi ve halka açık mesajlaşmanın tuş atamasını değiştir resp. +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Şirket içi ve halka açık mesajlaşmanın tuş atamasını değiştir yanıtla STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Fare tekerleğinin fonksiyonu: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :İki-boyutlu fare tekerleri ile ekran kaydırma özelliğini etkinleştir. -STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Haritayı yakınaştır +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Haritayı yakınlaştır STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Haritayı kaydır STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Kapalı STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Tekerlek hızı: {STRING} @@ -1332,26 +1335,22 @@ 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_DATE_FORMAT_IN_SAVE_NAMES :Kaydedilen oyun isimlerinde {STRING} tarih biçimini kullan STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Kaydedilen oyun isimlerinde kullanılan tarih biçimi STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :uzun (31 Ara 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kısa (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Palet belirtmeyen NewGRF'ler için varsayılan palet: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Hangi paleti kullandığını belirtmeyen NewGRF dosyaları için kullanılacak varsayılan palet. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleti -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleti - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Yeni bir oyun başlatırken zamanı duraklat: {STRING} -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Etkinleştirildiğinde, haritaya ayrıntılı bir bakış atabilmek için yeni oyuna başlarken otomatik olarak oyun durdurulur (pause). +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Etkinleştirildiğinde, haritaya ayrıntılı bir bakış atabilmek için yeni oyuna başlarken otomatik olarak oyun duraklatılır. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Oyun durakladığında izin verilenler: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Oyun durdurulduğunda (pause) hangi hareketlerin yapılabileceğini seçin STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Hiçbir hareket STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :İnşa içermeyen tüm hareketler STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Yer şekillendirme hareketleri dışında tüm hareketler STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Tüm hareketler -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gelişmiş araç listesini kullan: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Araç listesinde gruplar kullan: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Araçları gruplamak için gelişmiş araç listelerinin kullanımını etkinleştirir STR_CONFIG_SETTING_LOADING_INDICATORS :Araç yükleme bilgisini göster: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Yükleme veya boşaltma yapan araçların üzerinde yükleme işaretlerinin görünüp görünmeyeceğini seçin @@ -1362,12 +1361,12 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zaman çizelgel STR_CONFIG_SETTING_QUICKGOTO :Araç talimatlarının hızlı oluşturulması: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Komutlar penceresi açılırken "git" düğmesini otomatik olarak seç STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Öntanımlı ray türü (yeni oyundan/oyun yüklemeden sonra): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Oyuna başlandığında veya oyun yüklendiğinde seçilecek ray cinsi. "ilk çıkan" en eski ray cinsini, "son çıkan" en yeni ray cinsini, "en çok kullanılan" ise en fazla kullanılmış olan ray cinsini seçer. +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Oyuna başlandığında veya oyun yüklendiğinde seçilecek ray cinsi. "En eskisi" en eski ray cinsini, "en yenisi" en yeni ray cinsini, "en çok kullanılan" ise en fazla kullanılmış olan ray cinsini seçer. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :En eskisi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :En yenisi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :En çok kullanılan -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Ayrılan rayları göster: {STRING} -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Trenlerin güzergah-tabanlı bloklara girmeyi reddetmesine dair problemleri engellemek için ayrılmış (rezerve) raylar için farklı bir renk kullan. +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Raylar için yol ayrılmalarını göster: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Trenlerin güzergah tabanlı bloklara girmeyi reddetmesine dair sorunları engellemek için ayrılmış (rezerve) raylar için farklı bir renk kullan. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Yapı araçlarını kullanımdan sonra aktif tut: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Köprü, tünel vb. için kullanılan inşa araçlarını kullanımdan sonra da açık tut STR_CONFIG_SETTING_EXPENSES_LAYOUT :Şirket mali tablosunda grup harcamaları: {STRING} @@ -1394,7 +1393,7 @@ STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Uygun araç bul STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Etkinleştirildiğinde, eğer kullanılabilecek araçlar mevcutsa altyapıyı kullanılabilir hale getirir, böylece altyapıya boş yere zaman ve para harcanmasını engeller STR_CONFIG_SETTING_MAX_TRAINS :Şirket başına azami tren sayısı: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Bir şirketin sahip olabileceği azami tren sayısı -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Şirket başına azami karayolu aracı: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Şirket başına azami karayolu aracı sayısı: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Bir şirketin sahip olabileceği azami karayolu aracı sayısı STR_CONFIG_SETTING_MAX_AIRCRAFT :Şirket başına azami uçak sayısı: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Bir şirketin sahip olabileceği azami hava aracı sayısı @@ -1411,21 +1410,21 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Bilgisayar gemi STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Etkinleştirildiğinde bilgisayarın kontrol ettiği şirket gemi yapamaz STR_CONFIG_SETTING_AI_PROFILE :Varsayılan ayar profili: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Rastgele AI'ler (yapay zekalar) için veya yeni bir AI ya da Oyun Senaryosu eklerken hangi ayar profilinin kullanılacağını seç +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Rastgele YZ'ler (yapay zekalar) için veya yeni bir YZ ya da Oyun Senaryosu eklerken hangi ayar profilinin kullanılacağını seçin STR_CONFIG_SETTING_AI_PROFILE_EASY :Kolay STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Orta zorluk STR_CONFIG_SETTING_AI_PROFILE_HARD :Zor STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Çok oyunculuda yapay zekâ olsun: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :AI (yapay zeka) bilgisayar oyuncularının çok-oyunculu oyunlara katılmasına izin ver +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :YZ (yapay zeka) bilgisayar oyuncularının çok oyunculu oyunlara katılmasına izin ver STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Betikler duraklatılıncaya kadar çalıştırılacak opkod sayısı: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Bir komut dosyasının (script) bir elde kullanabileceği azami hesaplama adımı sayısı +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Bir betiğin bir elde kullanabileceği azami hesaplama adımı sayısı STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servis gecikmeleri yüzde ile: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Araçlara bakım yapılmasına bir önceki bakımın üzerinden geçen zamana göre mi, yoksa aracın güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak mı karar verileceğini seçin STR_CONFIG_SETTING_SERVINT_TRAINS :Trenler için varsayılan bakım aralığı: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Yeni tren yolu araçları için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} gün/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}gün/% STR_CONFIG_SETTING_SERVINT_DISABLED :Etkisiz STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Yol araçları için varsayılan bakım aralığı: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Yeni karayolu araçları için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir @@ -1463,7 +1462,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Ne oyuncu ne de STR_CONFIG_SETTING_NEWS_ADVICE :Şirketin araçları hakkında tavsiye / bilgi: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Dikkat gerektiren araçlar hakkında mesajlar göster STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Yeni araçlar: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Yeni bir araç tipi ortaya çıktığında gazete haberi olarak göster +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Yeni bir araç türü ortaya çıktığında gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Kargo isteğindeki değişiklikler: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Durakların bazı kargo türlerini kabul etmesiyle ilgili değişiklikler olduğunda haber ver STR_CONFIG_SETTING_NEWS_SUBSIDIES :Teşvikler: {STRING} @@ -1483,7 +1482,7 @@ STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Etkinleştirild STR_CONFIG_SETTING_ALLOW_SHARES :Diğer şirketlerin hisseleri alınabilsin: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Etkinleştirildiğinde, şirketlerin hisse senetlerinin alınıp satılması mümkün olur. Hisse senetleri sadece belli bir yaşa ulaşan şirketler için geçerlidir STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Besleme sistemlerinde, bölümlerden elde edilen kardan ödenecek yüzde: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Besleme sistemlerinde, sistemi oluşturan ara bölümlere verilen kâr yüzdesi. Böylece kâr miktarı üzerinde daha fazla kontrol elde edilmiş olur +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Besleme sistemlerinde, sistemi oluşturan ara bölümlere verilen kar yüzdesi. Böylece kar miktarı üzerinde daha fazla kontrol elde edilmiş olur STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Fare sürüklendiğinde sinyal yerleştirme sıklığı: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Fareyi sürükleyerek sinyal inşa ederken, sinyallerin ray üzerindeki bir sonraki engele dek (sinyal, kavşak) ne kadar mesafe bırakarak inşa edileceğini belirler STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kare @@ -1492,21 +1491,21 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Ctrl+fare sür STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bu tarihten önce ışık yerine semafor kullan: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Raylar için elektrikli sinyallerin kullanılmaya başlanacağı yılı belirler. Bu tarihe kadar elektriksiz sinyaller kullanılır (bunlar da aynı işi görür, sadece görünüşleri farklıdır) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Sinyal arayüzünü etkinleştir: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Pencere kullanmaksızın Ctrl+tıklama ile farklı sinyal çeşitleri seçmek yerine, hangi sinyal tipinin inşa edileceğinin seçilebildiği bir pencere göster -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Varsayılan sinyal tipi: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Kullanılacak varsayılan sinyal tipi +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Pencere kullanmaksızın Ctrl+Tıklama ile farklı sinyal çeşitleri seçmek yerine, hangi sinyal türünün inşa edileceğinin seçilebildiği bir pencere görüntüle +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Varsayılan sinyal türü: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Kullanılacak varsayılan sinyal türü STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok sinyalleri STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Yol sinyalleri STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Tek yön yol sinyalleri -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Sinyal tipleri arasında dön: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Ctrl+tıklama ile sinyal inşa ederken hangi sinyal tiplerinin kullanılacağını seç +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Sinyal türleri arasında dön: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Ctrl+Tıklama ile sinyal inşa ederken hangi sinyal türlerinin kullanılacağını seç STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Yalnızca blok sinyalleri STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Yalnızca yol sinyalleri STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Hepsi STR_CONFIG_SETTING_TOWN_LAYOUT :Yeni kasabalar için yol yerleşimi: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Şehirlerin karayolu ağlarını gösteren şema -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Orjinal +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Özgün STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Daha iyi yollar STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 @@ -1529,10 +1528,10 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Hiçbiri {RED}( STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Yalnız yağmur ormanlarında STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Her yerde -STR_CONFIG_SETTING_TOOLBAR_POS :Ana araç çubuğu pozisyonu: {STRING} -STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Ekranın üst kısmındaki ana araç çubuğunun yatay pozisyonu +STR_CONFIG_SETTING_TOOLBAR_POS :Ana araç çubuğu konumu: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Ekranın üst kısmındaki ana araç çubuğunun yatay konumu STR_CONFIG_SETTING_STATUSBAR_POS :Durum çubuğunun konumu: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Ekranın alt kısmındaki durum çubuğunun yatay pozisyonu +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Ekranın alt kısmındaki durum çubuğunun yatay konu STR_CONFIG_SETTING_SNAP_RADIUS :Pencere yaslama çapı: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Bir pencereyi yanındaki pencereye otomatik olarak yaslamak için iki pencere arasında bulunması gereken mesafe STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel @@ -1542,7 +1541,7 @@ STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Yeni pencereler STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :etkisiz STR_CONFIG_SETTING_ZOOM_MIN :Azami yaklaşma seviyesi: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Haritadan kısımlar gösteren pencereler (viewport) için azami yaklaştırma (zoom-in) seviyesi. Daha yüksek yaklaştırma ayarları oyunun bellek gereksinimini artırır. +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Haritadan kısımlar gösteren pencereler (viewport) için azami yaklaştırma (zoom-in) seviyesi. Daha yüksek yaklaştırma ayarları oyunun bellek gereksinimini arttırır. STR_CONFIG_SETTING_ZOOM_MAX :Azami uzaklaşma seviyesi: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Haritadan kısımlar gösteren pencereler (viewport) için azami uzaklaştırma (zoom-out) seviyesi. Daha yüksek uzaklaştırma ayarları oyunda gecikmelere sebep olabilir STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x @@ -1564,36 +1563,34 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :{COMMA}'de 1 STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Hiçbiri STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Birincil şehir büyüklüğü çarpanı: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Oyun başlangıcında şehirlerin normal kasabalara kıyasla ortalama büyüklüğü -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Yol yapımı sırasında gerçekçi olmayan yerleri kaldır: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Yolların yeniden yapılmasını finanse ederken çıkmaz sokakları kaldır -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Dağıtım grafiğini her {STRING} günde bir güncelle +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Dağıtım grafiğini her {STRING}{NBSP}günde bir güncelle STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Bağlantı grafiğinin tekrar hesaplamaları arasında geçen süre. Her tekrar hesaplama grafiğin öğelerinden biri için planları hesaplar. Yani bu ayar için girdiğiniz X değeri tüm grafiğin her X günde bir güncelleneceği manasına gelmez; sadece grafiğin öğelerinden biri güncellenir. Daha kısa sürelere ayarladıkça hesaplamalar için daha fazla işlemci süresi gerekir. Daha uzun süreler seçtikçe yeni güzergahlardaki kargo dağıtımının başlaması da daha uzun sürer. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Dağıtım grafiğini {STRING} güne göre tekrar hesapla +STR_CONFIG_SETTING_LINKGRAPH_TIME :Dağıtım grafiğini {STRING}{NBSP}güne göre tekrar hesapla STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Bağlantı grafiğini oluşturan parçaların her tekrar hesaplaması için kullanılan zaman. Tekrar hesaplama başlatıldığında bu kadar gün sürecek bir işlem başlatılmış olur. Buraya daha kısa süreler girdikçe işlemin bitmesi gerekirken bitmemiş olma ihtimali artar. Ardından oyun ("lag") olana dek durur. Daha uzun süreler girdiğinizde güzergahlar değiştikçe dağıtımın güncellenmesi daha uzun sürer. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :el ile (manual) STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrik STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrik -STR_CONFIG_SETTING_DISTRIBUTION_PAX :Yolcular için dağıtım modu: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Yolcular için dağıtım kipi: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simetrik" seçildiğinde A durağından B durağına taşınan ile B'den A'ya taşınan yolcu miktarı kabaca eşit olur. "asimetrik" seçildiğinde iki yönde de rastgele miktarda yolcu gönderilebilir. "el ile" seçildiğinde yolcular için otomatik dağıtım yapılmaz. -STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Posta için dağıtım modu: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Posta için dağıtım kipi: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simetrik" seçildiğinde A durağından B durağına gönderilen ile B'den A'ya gönderilen posta miktarı kabaca eşit olur. "asimetrik" seçildiğinde iki yönde de rastgele miktarda posta gönderilebilir. "el ile" seçildiğinde posta için otomatik dağıtım yapılmaz. -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :ZIRHLI kargo sınıfı için dağıtım modu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :ZIRHLI kargo sınıfı ılımlı iklimde değerli mallar, yarı-tropik iklimde elmaslar, veya yarı-arktik iklimde altın içerir. NewGRF dosyaları bunu değiştirebilir. "simetrik" olarak ayarlandığında a durağından B durağına gönderilen kargo miktarı, B'den A'ya gönderilene kabaca eşit olur. "asimetrik" ise herhangi bir yönde rsatgele miktarda kargo gönderilebileceğini gösterir. "el ile" seçildiğinde o kargo için otomatik dağıtım yapılmaz. Yarı-arktik iklimde oynarken bu değeri "asimetrik" veya "el ile" olarak ayarlamanız tavsiye edilir, çünkü bankalar altınları altın madenine geri göndermez. Ilımlı ve yarı-tropik iklim için aynı zamanda "simetrik" seçebilirsiniz, zira bankalar değerli malların bir kısmını malların geldiği kaynak bankaya geri gönderir. -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Diğer kargo sınıfları için dağılım modu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simetrik", A durağından B durağına gönderilen kargo miktarının B'den A'ya gönderilene kabaca eşit olacağını gösterir. "asimetrik" ise iki yönde de rastgele miktarda kargo gönderileceğini gösterir. "el ile" seçildiği takdirde o kargolar için otomatik dağılım yapılmaz. Bu seçeneği muhtemelen "asimetrik" veya "el ile" olarak ayarlamak istersiniz. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :ZIRHLI kargo sınıfı için dağıtım kipi: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :ZIRHLI kargo sınıfı ılıman iklimde değerli mallar, yarı-tropik iklimde elmaslar, veya yarı-soğuk iklimde altın içerir. NewGRF dosyaları bunu değiştirebilir. "Simetrik" olarak ayarlandığında A durağından B durağına gönderilen kargo miktarı, B'den A'ya gönderilene kabaca eşit olur. "Asimetrik" ise herhangi bir yönde rastgele miktarda kargo gönderilebileceğini gösterir. "El ile" seçildiğinde o kargo için otomatik dağıtım yapılmaz. Yarı-soğuk iklimde oynarken bu değeri "asimetrik" veya "el ile" olarak ayarlamanız tavsiye edilir, çünkü bankalar altınları altın madenine geri göndermez. Ilıman ve yarı-tropik iklim için aynı zamanda "simetrik" seçebilirsiniz, zira bankalar değerli malların bir kısmını malların geldiği kaynak bankaya geri gönderir. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Diğer kargo sınıfları için dağılım kipi: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asimetrik", kargonun iki yönde de rastgele miktarda gönderileceğini gösterir. "el ile" seçildiği takdirde o kargolar için otomatik dağılım yapılmaz. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Dağılım isabetliliği: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Buraya daha yüksek değerler girildikçe bağlantı grafiğinin hesaplanmasına daha fazla işlemci zamanı harcanır. Eğer hesaplama çok uzun sürerse gecikmeler olabilir. Fakat düşük bir değer girerseniz dağılım isabetli olmayacaktır ve kargonun beklediğiniz yerlere gönderilmediğini fark edebilirsiniz. STR_CONFIG_SETTING_DEMAND_DISTANCE :Mesafenin talep üzerindeki etkisi: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Eğer buraya 0'dan büyük bir değer girerseniz bir kargonun yola çıktığı A durağı ve olası bir B istikameti arasındaki mesafe, A'dan B'ye gönderilen kargo miktarını etkiler. B A'dan ne kadar uzaksa o kadar az kargo gönderilir. Daha yüksek değerler girdikçe uzak duraklara daha az kargo, yakın duraklara ise daha fazla kargo gönderilir. -STR_CONFIG_SETTING_DEMAND_SIZE :Simetrik mod için geri gönderilen kargo miktarı: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Simetrik kip için geri gönderilen kargo miktarı: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Buraya %100'den küçük bir değer girmek simetrik dağılımın asimetrik bir dağılıma benzer şekilde davranmasına sebep olur. Eğer bir durağa belli miktar kargo gönderilmişse, daha az kargo zorla geri gönderilir. Eğer %0 olarak ayarlarsanız simetrik dağılım aynen asimetrik dağılım gibi davranmaya başlar. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Kapasitesi daha yüksek güzergahları kullanmadan önce daha kısa güzergahların ulaşması gereken doygunluk: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sıklıkla iki durak arasında birden fazla güzergah bulunur. Cargodist önce en kısa güzergahı doygunluğa ulaşana kadar kullanır, ardından ikinci en kısa güzergahı doygunluğa ulaşana kadar kullanır ve böyle devam eder. Doygunluk kapasite tahmini ve planlanan kullanım miktarına göre hesaplanır. Tüm güzergahlar doygunluğa ulaştığında eğer hala talep varsa, yüksek kapasiteli olan güzergahları tercih ederek tüm güzergahları aşırı yükler. Fakat çoğu zaman algoritma kapasiteyi isabetli olarak hesaplayamaz. Bu değer, daha kısa bir güzergahın yüzde kaç oranında doygunluğa ulaştığı zaman bir sonraki güzergahın seçileceğini ayarlamanızı sağlar. Yanlış (büyük) kapasite tahmini ihtimaline karşı aşırı dolu durakları önlemek için %100'den daha düşük bir değer seçin. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Yüksek kapasiteli güzergahları kullanmadan önce daha kısa güzergah doygunluğu: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sıklıkla iki durak arasında birden fazla güzergah bulunur. Kargo dağıtımı önce en kısa güzergahı doygunluğa ulaştırır, ardından ikinci en kısa güzergahı doygunluğa ulaşana kadar kullanır ve böyle devam eder. Doygunluk, kapasite tahmini ve planlanan kullanım miktarına göre hesaplanır. Tüm güzergahlar doygunluğa ulaştığında eğer hala talep varsa, yüksek kapasiteli olan güzergahları tercih ederek tüm güzergahları aşırı yükler. Fakat çoğu zaman algoritma kapasiteyi isabetli olarak hesaplayamaz. Bu değer, daha kısa bir güzergahın yüzde kaç oranında doygunluğa ulaştığı zaman bir sonraki güzergahın seçileceğini ayarlamanızı sağlar. Yanlış (büyük) kapasite tahmini ihtimaline karşı aşırı dolu durakları önlemek için %100'den daha düşük bir değer seçin. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hız ölçü birimi: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kullanıcı arayüzünde hız görüntülendiğinde, bunu seçili ölçü biriminde göster. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hız birimi: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kullanıcı arayüzünde hız görüntülendiğinde, bunu seçili birimde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (İngiliz ölçü birimleri) (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrik (km/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (Uluslararası Ölçüm Sistemi) (m/s) @@ -1604,52 +1601,42 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrik (hp/beyg STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (Uluslararası Ölçüm Sistemi) (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Ağırlık ölçü birimi: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kullanıcı arayüzünde ağırlıklar görüntülendiğinde, bunları seçili ölçü biriminde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kullanıcı arayüzünde ağırlıklar görüntülendiğinde, bunları seçili ölçü biriminde göster STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (kısa t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrik (t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (Uluslararası Ölçüm Sistemi) (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Hacim ölçü birimi: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kullanıcı arayüzünde hacimler görüntülendiğinde, bunları seçili ölçü biriminde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kullanıcı arayüzünde hacimler görüntülendiğinde, bunları seçili ölçü biriminde göster STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrik (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (Uluslararası Ölçüm Sistemi) (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Çekici güç ölçü birimi: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Kullanıcı arayüzünde çekici güç görüntülendiğinde, bunları seçili ölçü biriminde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Kullanıcı arayüzünde çekici güç görüntülendiğinde (çekici yük olarak da bilinir), bunları seçili ölçü biriminde göster STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrik (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (Uluslararası Ölçüm Sistemi) (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Yükseklik ölçü birimi: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kullanıcı arayüzünde yükseklikler görüntülendiğinde, bunları seçili ölçü biriminde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kullanıcı arayüzünde yükseklikler görüntülendiğinde, bunları seçili ölçü biriminde göster STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (Uluslararası Ölçüm Sistemi) (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Arayüz STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Yerelleştirme -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}İnşaat +STR_CONFIG_SETTING_SOUND :{ORANGE}Ses +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Arayüz +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}İnşaat STR_CONFIG_SETTING_VEHICLES :{ORANGE}Araçlar -STR_CONFIG_SETTING_STATIONS :{ORANGE}İstasyonlar -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomi -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Kargo Dağılımı +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Yönlenme +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Şehirler +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Endüstri +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kargo dağılımı STR_CONFIG_SETTING_AI :{ORANGE}Rakipler -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Görüntü seçenekleri -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Etkileşim -STR_CONFIG_SETTING_SOUND :{ORANGE}Ses efektleri -STR_CONFIG_SETTING_NEWS :{ORANGE}Haberler ve mesajlar -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinyaller -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kargo idaresi STR_CONFIG_SETTING_AI_NPC :{ORANGE}Bilgisayar oyuncuları -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Otomatik yenileme -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Bakımlar -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Yönlenme -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenler -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Şehirler -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Endüstri -STR_CONFIG_SETTING_PATHFINDER_OPF :Orjinal +STR_CONFIG_SETTING_PATHFINDER_OPF :Özgün STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Önerilen) @@ -1678,9 +1665,9 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :OpenTTD'nin bu STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :bilinmiyor STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... sıkıştırma seviyesi '{STRING}' geçerli değil STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... kaydedilmiş oyun formatı olarak '{STRING}' mevcut değil. '{STRING}' formatına çevriliyor -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... Temel Grafik seti görmezden geliniyor '{STRING}': bulunamadı -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... Temel Ses seti görmezden geliniyor '{STRING}': bulunamadı -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... Temel Müzik seti görmezden geliniyor '{STRING}': bulunamadı +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... Temel Grafik kümesi görmezden geliniyor '{STRING}': bulunamadı +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... Temel Ses kümesi görmezden geliniyor '{STRING}': bulunamadı +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... Temel Müzik kümesi görmezden geliniyor '{STRING}': bulunamadı STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Bellek yetersiz STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} sprite-önbelleği ayırma işlemi başarısız. Sprite-önbelleği {BYTES}'a düşürüldü. Bu OpenTTD'nin performansını azaltacak. Bellek gereksinimini azaltmak için 32bpp grafikleri ve/veya yakınlaştırma seviyelerini kapatmayı deneyebilirsiniz @@ -1696,27 +1683,25 @@ STR_INTRO_MULTIPLAYER :{BLACK}Çok Oyu STR_INTRO_GAME_OPTIONS :{BLACK}Seçenekler STR_INTRO_HIGHSCORE :{BLACK}Puan Tablosu -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Gelişmiş Ayarlar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Ayarları STR_INTRO_ONLINE_CONTENT :{BLACK}Çevrimiçi İçeriği Kontrol Et STR_INTRO_SCRIPT_SETTINGS :{BLACK}YZ/Oyun Betik Ayarları STR_INTRO_QUIT :{BLACK}Çıkış -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Yeni oyuna başla. Ctrl+Click harita ayarlamasını atlar. +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Yeni oyuna başla. Ctrl+Tıklama harita ayarlamasını atlar. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Oyun yükle STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Yükseklik haritasını kullanarak yeni oyun başlat STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Özel bir senaryo kullanarak yeni oyun başlat STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Kendi dünyanı/senaryonu yarat STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Çok oyunculu oyun başlat -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}'ılıman' yer stilini seç -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}'soğuk' yer stilini seç -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}'tropik' yer stilini seç -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}'oyuncak' yer stilini seç +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}'Ilıman' yer biçemini seç +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}'Soğuk' yer biçemini seç +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}'Tropik' yer biçemini seç +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}'Oyuncak' yer biçemini seç STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Seçenekleri göster STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Puan tablosunu göster -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Gelişmiş ayarları görüntüle STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF ayarlarını göster STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}İndirilecek yeni ve güncellenmiş içeriği kontrol et STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}YZ ve Oyun betik ayarlarını göster @@ -1774,7 +1759,7 @@ STR_LIVERY_SHIP_TOOLTIP :{BLACK}Gemi ren STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Uçakların renk şemalarını göster STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Seçili düzen için birincil rengi seç. Ctrl ile tıklama bu rengi bütün düzenler için kaydedecek STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Seçili düzen için ikincil rengi seç. Ctrl ile tıklama bu rengi bütün düzenler için kaydedecek -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Değiştirilecek bir renk düzeni seçin ya da CTRL+tıklama ile birden düzen seçin. Düzenin kullanımını açıp kapatmak için kutuya tıklayın. +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Değiştirilecek bir renk düzeni seçin ya da CTRL+Tıklama ile birden düzen seçin. Düzenin kullanımını açıp kapatmak için kutuya tıklayın. STR_LIVERY_DEFAULT :Şirket Rengi STR_LIVERY_STEAM :Buharlı Lokomotif @@ -1804,6 +1789,7 @@ STR_LIVERY_FREIGHT_TRAM :Yük Tramvayı STR_FACE_CAPTION :{WHITE}Surat Seçimi STR_FACE_CANCEL_TOOLTIP :{BLACK}Seçimi iptal et STR_FACE_OK_TOOLTIP :{BLACK}Seçimi Kabul et +STR_FACE_RANDOM :{BLACK}Rastgele STR_FACE_MALE_BUTTON :{BLACK}Erkek STR_FACE_MALE_TOOLTIP :{BLACK}Erkek suratlarıni seç @@ -1860,7 +1846,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Kravatı # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Çok Oyunculu STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Duyurulan -STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Duyurulan (internet) ve duyurulmayan (yerel ağ, LAN) oyun tiplerinden birini seçin +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Duyurulan (internet) ve duyurulmayan (yerel ağ, LAN) oyun türlerinden birini seçin STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Hayır STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Evet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Oyuncu adı: @@ -1872,8 +1858,8 @@ STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/ STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Oyuncular STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Bağlı oyuncular / en fazla oyuncu STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Harita ebadı -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Oyunun harita ebadı{}Alana göre sıralamak için tıklayın +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Harita boyutu +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Oyunun harita boyutu{}Alana göre sıralamak için tıklayın STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Tarih STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Güncel tarih STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Yıl @@ -1881,7 +1867,7 @@ STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Oyunda g STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Dil, sunucu sürümü, vb. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Seçmek için listeden bir oyun tıklayın -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Geçen sefer katıldığınız sunucu: +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}En son katıldığınız sunucu: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Son oynadığınız sunucuya katılmak için tıklayın STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}OYUN BİLGİSİ @@ -1911,7 +1897,7 @@ STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Sunucu b STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Kendi sunucunu başlat STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}İsminizi girin -STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Sunucunun ip'sini ve portunu girin +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Sunucunun adresini girin # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Yeni çok oyunculu oyun başlat @@ -1924,13 +1910,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Erişimi STR_NETWORK_START_SERVER_UNADVERTISED :Hayır STR_NETWORK_START_SERVER_ADVERTISED :Evet STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} istemci -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}İzin verilen en fazla oyuncu: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Azami istemci sayısı: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}İzin verilen en fazla oyuncu sayısını seç. Her yerin dolması gerekmez STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} şirket -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}En fazla şirket: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}En fazla şirket sayısı: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Sunucudaki şirket sayısını sınırla STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} seyirci -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}En fazla izleyici: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}En fazla izleyici sayısı: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Sunucudaki izleyici sayısını sınırla STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Konuşulan dil: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Diğer oyuncular sunucuda hangi dilin konuşulacağını bilecek @@ -2043,6 +2029,7 @@ STR_NETWORK_CLIENT :İstemci STR_NETWORK_SPECTATORS :İzleyiciler STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vermek istediğiniz para miktarını girin +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}İzleyici # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Girilen parolayı kaydetme @@ -2072,7 +2059,7 @@ STR_NETWORK_CHAT_ALL :[Herkes] {STRIN STR_NETWORK_CHAT_OSKTITLE :{BLACK}Ağ sohbeti için yazı girin # Network messages -STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Network aygıtı bulunamadı veya ENABLE_NETWORK olmadan derlendi +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ağ aygıtı bulunamadı veya ENABLE_NETWORK olmadan derlendi STR_NETWORK_ERROR_NOSERVER :{WHITE}Network oyunu bulunamadı STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Sunucu isteğe cevap vermedi STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF uyuşmazlığı yüzünden bağlanılamadı @@ -2207,7 +2194,7 @@ STR_CONTENT_DOWNLOAD_TITLE :{WHITE}İçerik STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Dosyalar isteniyor... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Şu an indirilen {STRING} ({2:NUM} adedin {1:NUM}.si) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}İndirme tamamlandı -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{1:BYTES}'ın {0:BYTES}'ı indirildi ({2:NUM} %) +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{1:BYTES}'ın {0:BYTES}'ı indirildi (%{2:NUM}) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}İçerik sunucusuna bağlanılamadı... @@ -2235,14 +2222,14 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transpar STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nesneleri şeffaf değil görünmez yap # Linkgraph legend window -STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Kargo Akış Lejantı +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Kargo Akış Göstergesi STR_LINKGRAPH_LEGEND_ALL :{BLACK}Hepsi STR_LINKGRAPH_LEGEND_NONE :{BLACK}Hiçbiri STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Gösterilecek şirketleri seçin # Linkgraph legend window and linkgraph legend in smallmap STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}kullanılmayan -STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}satüre +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}doygun STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}aşırı dolu # Base for station construction window(s) @@ -2268,11 +2255,11 @@ STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monoray Yapım STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev Yapımı STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Demiryolu yap. Ctrl demiryolu inşa ederken silmeyi açar/kapatır. Shift ile tıklama maliyet tahminini gösterir -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Otoray modunda ray yap. Ctrl ray yap/kaldır seçimini değiştirir. Shift ile tıklama maliyet tahminini gösterir -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Tren deposu yap (tren yapımı ve bakımı için). Shift ile tıklama maliyet tahminini gösterir +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Otoray kipinde ray yap. Ctrl ray yap/kaldır seçimini değiştirir. Shift ile tıklama maliyet tahminini gösterir +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Tren garajı yap (tren yapımı ve bakımı için). ÜstKarakter ile tıklama maliyet tahminini gösterir STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Rayı yerimine çevir. Ctrl yerimlerini birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Tren istasyonu yap. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Demiryolu sinyali yap. Ctrl semafor/ışıklı işaret seçimi yapar{}Sürükleme düz bir ray boyunca işaretleri koyar. Ctrl sonraki kavşağa kadar işaretleri koyar{}Ctrl+tık işaret seçim penceresini açar/kapatır. Shift ile tıklama maliyet tahminini gösterir +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Demiryolu sinyali yap. Ctrl semafor/ışıklı işaret seçimi yapar{}Sürükleme düz bir ray boyunca işaretleri koyar. Ctrl sonraki kavşağa kadar işaretleri koyar{}Ctrl+Tıklama işaret seçim penceresini açar/kapatır. Shift ile tıklama maliyet tahminini gösterir STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Demiryolu köprüsü yap. Shift ile tıklama maliyet tahminini gösterir STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Demiryolu tüneli yap. Shift ile tıklama maliyet tahminini gösterir STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Trenyolu, işaret, yerimi ve istasyon yapımında sil/yap arasında geçiş. Yerimi ve istasyon raylarını da silmek için Ctrl'yi basılı tutun @@ -2284,8 +2271,8 @@ STR_RAIL_NAME_MONORAIL :Monoray STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Tren Garı Yönü -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tren garı yönünü seçin +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Tren Garajı Yönü +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tren garajı yönünü seçin # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Yerimi @@ -2310,13 +2297,13 @@ STR_STATION_CLASS_WAYP :Yerimleri # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Sinyal Seçimi -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Sinyali (semafor){}Bu en temel sinyal tipidir, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Sinyali (semafor){}Bu en temel sinyal türüdür, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Giriş-Sinyali (semafor){}Yolun devam eden bölümünde en az bir yeşil çıkış sinyali olduğu sürece yeşil yanar. Aksi halde kırmızı yanar STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Çıkış Sinyali (semafor){}Blok sinyali ile aynı şekilde çalışır ancak giriş ve karışık ön sinyaller ile doğru rengi tetiklemek gerekmektedir STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (semafor){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu şekilde büyük ön sinyal "ağaçları" yapabilirsiniz STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Yol Sinyali (semafor){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Standart yol sinyalleri arka taraftan geçişe izin verir STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Tek Yön Yol Sinyali (semafor){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Tek yön yol sinyalleri arka taraftan geçişe izin vermez -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blok Sinyali (elektrikli){}En temel sinyal tipidir, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blok Sinyali (elektrikli){}En temel sinyal türüdür, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Giriş-Sinyali (elektrikli){}Yolun devam eden bölümünde en az bir yeşil çıkış sinyali olduğu sürece yeşil yanar. Aksi halde kırmızı yanar STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Çıkış Sinyali (elektrikli){}Blok sinyali ile aynı şekilde çalışır ancak giriş ve karışık ön sinyaller ile doğru rengi tetiklemek gerekmektedir STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (elektrikli){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu şekilde büyük ön sinyal "ağaçları" yapabilirsiniz @@ -2348,8 +2335,8 @@ STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Yol Yap STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramvay Yapımı STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Yol bölmesi yap. Ctrl yol için yap/kaldır geçişi sağlar. Shift ile tıklama maliyet tahminini gösterir STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tramvay yolu yap. Ctrl tramvay yolu için yap/kaldır geçişi sağlar. Shift ile tıklama maliyet tahminini gösterir -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Otoyol modunu kullanarak yol yap. Ctrl yol yapımı için yap/kaldır geçişi sağlar. Shift ile tıklama maliyet tahminini gösterir -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Otoray modunu kullanarak tramvay yolu yap. Ctrl ile tıklamak ray inşası için ekle/çıkar modunu değiştirir. Shift ile tıklamak inşa etmek/tahmini maliyeti göstermek modunu değiştirir +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Otomatik yol kipini kullanarak yol yap. Ctrl yol yapımı için yap/kaldır geçişi sağlar. Shift ile tıklama maliyet tahminini gösterir +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Otomatik ray kipini kullanarak tramvay yolu yap. Ctrl ile tıklamak ray inşası için ekle/çıkar modunu değiştirir. Shift ile tıklamak inşa etmek/tahmini maliyeti göstermek modunu değiştirir STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garaj inşa et (araç alımı ve bakımı için). Shift ile tıklama satın alma/tahmini maliyeti gösterme arasında geçiş yapar STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tramvay garı inşa et (araç alımı ve bakımı için). Shift ile tıklamak satın alma/tahmini maliyeti gösterme arasında geçiş yapar STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Otobüs durağı inşa et. Ctrl ile tıklamak istasyonları birleştirmeyi aktif eder. Shift ile tıklamak inşa etmek/tahmini maliyeti göstermek arasında geçiş yapar. @@ -2445,7 +2432,7 @@ STR_OBJECT_CLASS_TRNS :Vericiler # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Ağaçlar -STR_PLANT_TREE_TOOLTIP :{BLACK}Dikilecek ağaç türünü seçin. Eğer alan zaten ağaç içeriyorsa, bu seçimden bağımsız olarak karışık ağaç tipleri ekleyecek. +STR_PLANT_TREE_TOOLTIP :{BLACK}Dikilecek ağaç türünü seçin. Eğer alan zaten ağaç içeriyorsa, bu seçimden bağımsız olarak karışık ağaç türleri ekleyecek. STR_TREES_RANDOM_TYPE :{BLACK}Rastgele türde ağaçlar STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Rastgele türde ağaçlar koy. Shift ile ağaç koyma/maliyet gösterme tercihi yapılır STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Rastgele Ağaç @@ -2460,7 +2447,7 @@ STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Yükselt STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Rastgele harita yarat STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Yeni senaryo oluştur STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Haritayı sıfırla -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Haritada şirkete ait olan herşeyi sil +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Haritada şirkete ait olan her şeyi sil STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Haritayı Sıfırla STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Şirkete ait olan her şeyi silmek istediğinize emin misiniz? @@ -2491,7 +2478,7 @@ STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Şehirle STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Kasaba yol yerleşimi: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Bu kasaba için kullanılacak yol yerleşimini seç -STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Orijinal +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Özgün STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Daha iyi yollar STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 şebeke STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 şebeke @@ -2509,7 +2496,7 @@ STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Parayla # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} fabrikası için sanayi zinciri -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} kargo tipi için sanayi zinciri +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} kargo türü için sanayi zinciri STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Üreten fabrikalar STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Kabul eden fabrikalar STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Evler @@ -2547,6 +2534,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}İstenen: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ray hız sınırı: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Yol hız sınırı: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kayalar @@ -2579,7 +2567,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} çık STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} karışık ve tek yön yol sinyalli ray STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} karışık ve tek yön yol sinyalli ray STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} yol ve tek yön yol sinyalli ray -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} tren deposu +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} tren garajı STR_LAI_ROAD_DESCRIPTION_ROAD :Yol STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Sokak lambalı yol @@ -2642,8 +2630,8 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Satın alınmı # About OpenTTD window 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 {REV} versiyonu -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD ekibi +STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV} +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 OpenTTD ekibi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet @@ -2662,6 +2650,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Kaydet STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Oyunu seçilen isimle kaydet STR_SAVELOAD_LOAD_BUTTON :{BLACK}Yükle STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Seçili oyunu yükle +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Seçili yükseklik haritasını yükle STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Oyun Ayrıntıları STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Mevcut bilgi yok STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2680,12 +2669,8 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Fabrika STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Kar yüksekliği: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Kar yüksekliğini bir arttır STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Kar yüksekliğini bir azalt -STR_MAPGEN_RANDOM_SEED :{BLACK}Rastgele Sayı: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Rastgele bir sayı girmek için tıklayın -STR_MAPGEN_RANDOM :{BLACK}Rastgele -STR_MAPGEN_RANDOM_HELP :{BLACK}Harita yapımı için kullanilan rastgele sayıyi değiştir STR_MAPGEN_LAND_GENERATOR :{BLACK}Harita üretici: -STR_MAPGEN_TREE_PLACER :{BLACK}Ağaç algoritmasi: +STR_MAPGEN_TREE_PLACER :{BLACK}Ağaç algoritması: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Arazi türü: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Deniz seviyesi: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Nehirler: @@ -2710,7 +2695,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Yüksekl STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Boyut: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Rastgele bir tohum girin STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Kar yüksekliğini değiştir STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Başlangıç yılını değiştir @@ -2749,12 +2733,12 @@ STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktif Ne STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Aktif olmayan NewGRF dosyaları STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Önceden belirlenmiş ayar seçin: STR_NEWGRF_FILTER_TITLE :{ORANGE}Süzgeç metni: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Seçili seçkiyi yükle -STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Seçkiyi kaydet -STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Şimdiki listeyi seçki olarak kaydet -STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Seçki için isim girin -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Seçkiyi sil -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Seçili olan seçkiyi sil +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Seçili önayarı yükle +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Önayarı kaydet +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Şimdiki listeyi önayar olarak kaydet +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Önayar için isim girin +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Önayarı sil +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Seçili önayarı sil STR_NEWGRF_SETTINGS_ADD :{BLACK}Ekle STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}seçili NewGRF'i ayarlarıma ekle STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Dosyaları tekrar tara @@ -2789,6 +2773,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Eşleşen STR_NEWGRF_SETTINGS_DISABLED :{RED}Etkisiz STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}OpenTTD'nin bu sürümüyle uyumlu değil +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF parametrelerini değiştir STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Kapat @@ -2805,25 +2791,24 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Kaynak k STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{1:HEX}'deki {0:STRING} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Nesne -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Ray tipi +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Ray türü STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF değişkeni 60+x parametresi (onaltılı) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Sprayt hizalanıyor {COMMA} ({STRING}) -STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sonraki sprayt -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/font spraytlarını ve sondaki sargıyı atlayarak bir sonraki normal sprayta geç -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Sprayta git -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Verilen sprayta git. Eğer normal bir spray değilse, bir sonraki normal sprayta geç -STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Önceki sprayt -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/font spraytlarını ve baştaki sargıyı atlayarak bir önceki normal sprayta geç -STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Seçili spraytın mevcut gösterimi. Bu spraytı çizerken hizalama ihmal edilir -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Spraytı X ve Y ofsetlerini değiştirerek gezdir -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X ofseti: {NUM}, Y ofseti: {NUM} -STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprayt seç -STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Ekrandaki herhangi bir yerden bir sprayt seçin - -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Sprayta git +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Nesne hizalanıyor {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sonraki nesne +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/yazı tipi nesnelerini ve sondaki nesneden atlayarak bir sonraki normal nesneye geç +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nesneye git +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Verilen nesneye git. Eğer normal bir nesne değilse, bir sonraki normal nesneye geç +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Önceki nesne +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/yazı tipi nesnelerini ve baştaki sargıyı atlayarak bir önceki normal nesneye geç +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Seçili nesnenin mevcut gösterimi. Bu nesneyi çizerken hizalama ihmal edilir +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Nesneyi X ve Y ofsetlerini değiştirerek gezdir +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Nesne seç +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Ekrandaki herhangi bir yerden bir nesne seçin + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Nesneye git # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} @@ -2841,17 +2826,17 @@ STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} Open STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF dosyası çeviri için yapılmış STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Çok fazla NewGRF yüklendi STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{1:STRING} adlı NewGRF'yi {STRING} ile birlikte kullanmak senkronizasyon sorunu oluşturabilir -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Beklenmedik sprayt (sprayt {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Bilinmeyen Action 0 özelliği {4:HEX} (sprayt {3:NUM}) -STR_NEWGRF_ERROR_INVALID_ID :Geçersiz ID kullanım girişimi (sprayt {3:NUM}) -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bozuk bir sprayt içeriyor. Tüm bozuk spraytlar kırmızı bir soru işareti (?) olarak görünecektir -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Birden çok Action 8 girişi içeriyor (sprayt {3:NUM}) -STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo-sprayt bitiminden sonrasını okudu (sprayt {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Kullanımda olan temel grafik kümesi bazı spraytları içermiyor.{}Lütfen temel grafik kümesini güncelleyin -STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Kullanımdaki temel grafik seti bazı spraytları içermiyor.{}Lütfen temel grafik setinizi güncelleyin .{}{YELLOW}OpenTTD'nin geliştirme kopyasını {WHITE}kullandığınız için, {YELLOW}temel grafiklerin de{WHITE} geliştirme kopyasını kullanmalısınız. -STR_NEWGRF_ERROR_GRM_FAILED :İstenen GRF kaynakları mevcut değil (sprayt {3:NUM}) +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Beklenmedik nesne (nesne {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Bilinmeyen Action 0 özelliği {4:HEX} (nesne {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Geçersiz ID kullanım girişimi (nesne {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bozuk bir nesne içeriyor. Tüm bozuk nesneler kırmızı bir soru işareti (?) olarak görünecektir +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Birden çok Action 8 girişi içeriyor (nesne {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo-nesne bitiminden sonrasını okudu (nesne {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Kullanımda olan temel grafik kümesi bazı nesneleri içermiyor.{}Lütfen temel grafik kümesini güncelleyin +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Kullanımdaki temel grafik kümesi bazı nesneleri içermiyor.{}Lütfen temel grafik setinizi güncelleyin .{}{YELLOW}OpenTTD'nin geliştirme kopyasını {WHITE}kullandığınız için, {YELLOW}temel grafiklerin de{WHITE} geliştirme kopyasını kullanmalısınız. +STR_NEWGRF_ERROR_GRM_FAILED :İstenen GRF kaynakları mevcut değil (nesne {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} {STRING} tarafından deaktive edildi -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Geçersiz bilinmeyen sprayt yerleşim biçimi (sprayt {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Geçersiz/bilinmeyen nesne yerleşim biçimi (nesne {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uyarı! @@ -2876,6 +2861,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Eksik dosy STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' davranışı muhtemelen senkron kaybı ve/veya çakılmalara neden olacak STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}'{1:ENGINE}' için enerjilendirilmiş wagon durumunu depo dışındayken değiştirdi STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}' hangar içinde değilken araç uzunluğunu değiştirdi +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Bir garajda veya tamir halinde değilken araç kapasitesini '{1:ENGINE}' için değiştirdi STR_BROKEN_VEHICLE_LENGTH :{WHITE}'{VEHICLE}' adlı tren '{COMPANY}' şirketine ait olup uzunluğu geçersizdir. Muhtemelen NewGRF'lerle ilgili bir problemden kaynaklanıyor. Oyun senkron kaybına uğrayabilir ya da çakılabilir STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' geçersiz bilgi vermektedir @@ -2890,6 +2876,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF'ler taranıyor STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF'ler taranıyor. Sayıya bağlı olarak bu işlem biraz zaman alabilir... @@ -2927,8 +2916,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} taşındı STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (hala ihtiyaç var) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (taşındı) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Kasaba {ORANGE}{COMMA}{BLACK} günde bir büyür -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Kasaba {ORANGE}{COMMA}{BLACK} günde bir büyür (finanse edildiğinde) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Kasaba her {ORANGE}{COMMA}{BLACK}{NBSP}günde bir büyür +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Kasaba her {ORANGE}{COMMA}{BLACK}{NBSP}günde bir büyür (finanse edildiğinde) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Kasaba {RED}büyümüyor{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Kasabadaki gürültü sınırı: {ORANGE}{COMMA}{BLACK} En fazla: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Ana görüntüyü şehrin üzerine ortala. Ctrl ile tıklama şehrin konumunu gösteren yeni bir pencere açar @@ -2968,7 +2957,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW} Yol ta STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Şirket sahibinin heykelini dik.{}Fiyatı: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Şehirde ticari binaların yapımı için bağış yap.{}Fiyatı: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Bir yıllık ayrıcalıklı nakliyat haklarını satın al. Belediye şehirde sadece senin şirketine yolcu ve kargo taşıma izni verir.{} Fiyat: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Yakalanma riskini göze alarak belediyeye rüşvet ver.{} Fiyat: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Yakalanma riskini göze alarak belediyeye rüşvet ver.{}Fiyat: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} Hedefler @@ -2988,7 +2977,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Bilgi STR_GOAL_QUESTION_CAPTION_WARNING :Uyarı STR_GOAL_QUESTION_CAPTION_ERROR :Hata -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :İptal STR_GOAL_QUESTION_BUTTON_OK :Tamam STR_GOAL_QUESTION_BUTTON_NO :Hayır @@ -3007,6 +2996,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Yeniden başlat STR_GOAL_QUESTION_BUTTON_POSTPONE :Ertele STR_GOAL_QUESTION_BUTTON_SURRENDER :Yenilgiyi kabul et STR_GOAL_QUESTION_BUTTON_CLOSE :Kapat +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Teşvikler @@ -3027,11 +3017,12 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Bir önc STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Bir önceki sayfaya git STR_STORY_BOOK_NEXT_PAGE :{BLACK}Bir sonraki STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Bir sonraki sayfaya git +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Geçersiz amaç referansı # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}İstasyon isimleri - gitmek için istasyon ismini tıklayın. Ctrl ile tıklama istasyonun konumunu gösteren yeni bir pencere açar STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Birden fazla nesne seçmek için Ctrl'yi basılı tutun -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} istasyonları +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} İstasyon STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Yok - @@ -3041,7 +3032,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Hiç kar # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Bekleyen: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}'dan) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} yükleme için rezerve edilmiş) @@ -3108,7 +3098,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Uçağı # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü güzegaha ortala. Ctrl ile tıklama güzegahın konumunu gösteren yeni bir pencere açar -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Yolimi adını değiştir +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Ara nokta adını değiştir STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü şamandıra konumuna ortala. Ctrl ile tıklama şamandıranın konumunu gösteren yeni bir pencere açar STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Şamandıra adını değiştir @@ -3139,9 +3129,9 @@ STR_FINANCES_LOAN_TITLE :{WHITE}Kredi STR_FINANCES_MAX_LOAN :{WHITE}Azami Kredi: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} Kredi Al -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Borcu arttır. Ctrl+Tık alınabilen en yüksek borcu alır. +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Borcu arttır. Ctrl+Tıklama alınabilen en yüksek borcu alır STR_FINANCES_REPAY_BUTTON :{BLACK}{CURRENCY_LONG} Geri Öde -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Krediyi kısmen öde. Ctrl+Tık ödenebildiği kadar öder. +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Krediyi kısmen öde. Ctrl+Tıklama ödenebildiği kadar öder. STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Altyapı # Company view @@ -3251,7 +3241,7 @@ STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Karayolu STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Gemiler - bilgi için gemiye tıkla STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Uçak - ayrıntılı bilgi için uçağı tıkla -STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Bu seneki kâr: {CURRENCY_LONG} (geçen sene: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Bu seneki kar: {CURRENCY_LONG} (geçen sene: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Kullanılabilir Trenler STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Kullanılabilir Araçlar @@ -3285,12 +3275,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Gruplanmamış STR_GROUP_DEFAULT_SHIPS :Gruplanmamış gemiler STR_GROUP_DEFAULT_AIRCRAFTS :Gruplanmamış uçaklar -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruplar - gruba ait araçları listelemek için grubun üzerine tıklayın +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruplar - gruba ait araçları listelemek için grubun üzerine tıklayın. Hiyerarşiyi düzenlemek için grupları sürükleyip bırakın. STR_GROUP_CREATE_TOOLTIP :{BLACK}Grup oluşturmak için tıklayın STR_GROUP_DELETE_TOOLTIP :{BLACK}Seçili grubu sil STR_GROUP_RENAME_TOOLTIP :{BLACK}Seçili grubun ismini değiştir STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Bu grubu otomatik yenilemeden ayrı tutmak için tıklayın +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grubu Sil +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Bu ve alt gruplarını silmek istediğinizden emin misiniz? + STR_GROUP_ADD_SHARED_VEHICLE :Bütün paylaşılan araçlar STR_GROUP_REMOVE_ALL_VEHICLES :Bütün araçları çıkar @@ -3316,7 +3309,7 @@ STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Bakım: STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasite: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(modifiyeli) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Yapım yılı: {GOLD}{NUM}{BLACK} Ömür: {GOLD}{COMMA} sene -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Mak. Güvenilirlik: {GOLD}%{COMMA} +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Aza. Güvenilirlik: {GOLD}%{COMMA} STR_PURCHASE_INFO_COST :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Ağırlık: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG}{BLACK} Hız: {GOLD}{VELOCITY} @@ -3325,13 +3318,13 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Güç Ve STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Dönüştürülebildiği kargolar: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Tüm kargo türleri STR_PURCHASE_INFO_ALL_BUT :Şunlar hariç tümü: {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Mak. Çekim Gücü: {GOLD}{FORCE} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Aza. Çekim Gücü: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Menzil: {GOLD}{COMMA} kare -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tren seçim listesi - daha fazla bilgi için araca tıklayın -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Karayolu araçları listesi - bilgi için araca tıklayın -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Gemi seçim listesi - bilgi için gemiye tıkla -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Uçak listesi - bilgi için uçaga tıklayın +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Gemi seçim listesi. Bilgi için gemiye tıklayın. Ctrl+Tıklama gemi türünün gizlenmesini açar/kapatır +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Uçak seçim listesi. Bilgi için uçağa tıklayın. Ctrl+Tıklama, uçak türünün gizliliğini açar/kapatır STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Araç Satın Al STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Araç Satın Al @@ -3353,6 +3346,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Araç t STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Gemi türünü adlandır STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Uçak türünü adlandır + + + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Tren yeniden adlandırılamaz STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Araç türünü yeniden adlandır STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Gemi türünü adlandır @@ -3406,13 +3402,13 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Aracı K STR_DEPOT_CLONE_SHIP :{BLACK}Gemiyi kopyala STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Uçağı kopyala -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Tüm vagonlarla birlikte treni kopyalar. Önce bu düğmeye sonra da garın içindeki veya dışındaki bir araca tıklayın. Ctrl-tıklama talimatları paylaştırır. Shift ile tıklama satın almadan tahmini maliyeti gösterir. -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Karayolu aracının bir kopyasını yapar. Önce bu düğmeye sonra da garın içindeki veya dışındaki bir araca tıklayın. Ctrl+tıklama talimatları paylaştırır. Shift+tıklama satın almadan tahmini maliyeti gösterir +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Tüm vagonlarla birlikte treni kopyalar. Önce bu düğmeye sonra da garın içindeki veya dışındaki bir trene tıklayın. Ctrl+tıklama talimatları paylaştırır. Shift+tıklama satın almadan tahmini maliyeti gösterir. +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Karayolu aracının bir kopyasını yapar. Önce bu düğmeye sonra da garın içindeki veya dışındaki bir araca tıklayın. Ctrl+Tıklama talimatları paylaştırır. Shift+Tıklama satın almadan tahmini maliyeti gösterir STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Geminin bir kopyasını oluşturur. Önce bu düğmeye sonra da tersanenin içindeki veya dışındaki bir gemiye tıklayın. Ctrl-tıklama talimatları paylaştırır. Shift ile tıklama satın almadan tahmini maliyeti gösterir STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Uçağın bir kopyasını oluşturur. Önce bu düğmeye sonra da hangarın içindeki veya dışındaki bir uçaga tıklayın. Ctrl-tıklama talimatları paylaştırır. Shift ile tıklama satın almadan tahmini maliyeti gösterir STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Tren garını göster. Ctrl ile tıklama garın konumunu gösteren yeni bir pencere açar -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Kara taşıtı garajını göster. Ctrl+tıklama garajın konumunu gösteren yeni bir pencere açar +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Kara taşıtı garajını göster. Ctrl+Tıklama garajın konumunu gösteren yeni bir pencere açar STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Tersaneyi göster. Ctrl ile tıklama tershanenin konumunu gösteren yeni bir pencere açar STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Hangarı göster. Ctrl ile tıklama hangarın konumunu gösteren yeni bir pencere açar @@ -3434,8 +3430,8 @@ STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Hangarda STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Garajdaki bütün araçları satmak üzeresiniz. Emin misiniz? # Engine preview window -STR_ENGINE_PREVIEW_CAPTION :{WHITE}Araç yapimcisindan mesaj -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Yeni bir araç dizayn ettik: {STRING} - bizim için bunu bir yıl denemeyi kabul ediyor musunuz? +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Araç üreticisinden mesaj +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Yeni bir {STRING} tasarladık - bizim için bunu bir yıl denemeyi kabul ediyor musunuz? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotif STR_ENGINE_PREVIEW_ROAD_VEHICLE :karayolu aracı STR_ENGINE_PREVIEW_AIRCRAFT :uçak @@ -3457,6 +3453,7 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Karayolu taşı STR_REPLACE_VEHICLE_SHIP :Gemi STR_REPLACE_VEHICLE_AIRCRAFT :Uçak + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Değiştirilecek türü seçin STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Değiştirilecek türün yerine geçecek türü seçin @@ -3507,7 +3504,7 @@ STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Treni si STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Treni başka bir kargo taşıması için modifiye et STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Kamyonu başka türde kargo taşıyabilmesi için modifiye et -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Başka bir kargo tipi için gemiyi modifiye et +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Başka bir kargo türü için gemiyi modifiye et STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Başka bir yük taşımak için modifiye et STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Treni ters çevir @@ -3524,9 +3521,9 @@ STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Gemi ayr STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Uçak ayrıntılarını göster STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Trenin mevcut hareketi - treni durdurmak/başlatmak için buraya tıklayın. Hedefe gitmek için CTRL+Tıkla -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Aracın mevcut hareketi - durdurmak/başlatmak için tıklayın. Hedefe gitmek için CTRL+Tıkla -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Geminin mevcut hareketi - durdurmak/başlatmak için buraya tıkla. Hedefe gitmek için CTRL+Tıkla -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Uçağın durumu - uçağı durdurmak/başlatmak için tıkla. Ctrl+Tık ile hedefe git +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Aracın mevcut hareketi - durdurmak/başlatmak için tıklayın. Hedefe gitmek için CTRL+Tıklama +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Geminin mevcut hareketi - durdurmak/başlatmak için buraya tıklayın. Hedefe gitmek için CTRL+Tıklama +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Uçağın durumu - uçağı durdurmak/başlatmak için tıklayın. Ctrl+Tıklama ile hedefe gidin # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Yükleme / Boşaltma @@ -3539,10 +3536,10 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Elektrik y STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Boş yol bekleniyor STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Bir sonraki hedefe çok uzak -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} durağına gidiyor, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} istikametine gidiyor, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Talimat yok, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Gidilen -> {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{DEPOT}'na doğru hareket ediyor, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{DEPOT} istikametine gidiyor, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{DEPOT}'nda bakıma gir, {VELOCITY} # Vehicle stopped/started animations @@ -3581,12 +3578,12 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Aktarma Maliyeti: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Bakım zamanı: {LTBLUE}{COMMA}günde bir{BLACK} Son bakım: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Bakım aralığı: {LTBLUE}{COMMA}{NBSP}günde bir{BLACK} Son bakım: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Bakım zamanı: {LTBLUE}%{COMMA}{BLACK} Son bakım: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Bakım periyodunu 10 artır. Ctrl-tık bakım periyodunu 5 artırır. -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Bakım periyodunu 10 azalt. Ctrl+tık bakım periyodunu 5 azaltır +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Bakım periyodunu 10 arttır. Ctrl-tıklama bakım periyodunu 5 arttırır. +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Bakım periyodunu 10 azalt. Ctrl+Tıklama bakım periyodunu 5 azaltır -STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Bakım aralığı tipini değiştir +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Bakım aralığı türünü değiştir STR_VEHICLE_DETAILS_DEFAULT :Varsayılan STR_VEHICLE_DETAILS_DAYS :Gün STR_VEHICLE_DETAILS_PERCENT :Yüzde @@ -3615,23 +3612,23 @@ STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Trenin a STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasite STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Her aracın kapasitesi STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Toplam Kargo -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Trenin kargo türlerine ayrilmis toplam kapasitesini göster +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Trenin kargo türlerine ayrılmış toplam kapasitesini göster STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasite: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Modifiye) -STR_REFIT_TITLE :{GOLD}Tasinacak kargo türünü seçin: +STR_REFIT_TITLE :{GOLD}Taşınacak kargo türünü seçin: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Yeni kapasite: {GOLD}{CARGO_LONG}{}{BLACK}Modifiye fiyatı: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Yeni kapasite: {GOLD}{CARGO_LONG}{}{BLACK}Modifiyeden elde edilen kar: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Yeni kapasite: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Modifiye bedeli: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Yeni kapasite: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Modifiyeden elde edilen gelir: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Dönüşecek araçları seçin. Fare ile sürüklemek birden fazla aracı seçmeye izin verir. Boş alana tıklamak tüm aracı seçtirir. Ctrl+tık bir aracı ve takip eden katarı seçmeye olan sağlar +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Dönüşecek araçları seçin. Fare ile sürüklemek birden fazla aracı seçmeye izin verir. Boş alana tıklamak tüm aracı seçtirir. Ctrl+Tıklama bir aracı ve takip eden katarı seçmeye olan sağlar STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Trenin taşıyacağı kargo türünü seçin STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Kamyonun taşıyacağı kargo türünü seçin -STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Tasinacak kargoyu seçin -STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Tasinacak kargo türünü seçin +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Taşınacak kargoyu seçin +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Uçak tarafından taşınacak kargo türünü seçin STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Modifiye STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Aracı modifiye et @@ -3641,7 +3638,7 @@ STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Modifiye STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Treni seçilen kargoyu taşıyacak şekilde modifiye et STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Kamyonu seçili kargoyu taşıyabilmesi için modifiye et STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Seçili kargoyu taşımak için modifiye et -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Seçili kargoyu taşımasi için uçağı modifiye et +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Seçili kargoyu taşıması için uçağı modifiye et # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Talimatlar) @@ -3679,10 +3676,10 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Seçili STR_ORDER_REFIT :{BLACK}Modifiye STR_ORDER_REFIT_TOOLTIP :{BLACK}Bu talimatta değiştirilecek kargo türünü seçin. Değiştirmeyi kaldırmak için Ctrl ile tıklayın -STR_ORDER_REFIT_AUTO :{BLACK}Otomatik modifiye et -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Bu talimatta hangi kargo türünün otomatik onarılacağını seçin. Ctrl+Tık ile otomatik onarım talimatını kaldırın. Otomatik onarım izin verilen araçlarda mümkündür -STR_ORDER_DROP_REFIT_AUTO :Sabit kargo tipi -STR_ORDER_DROP_REFIT_AUTO_ANY :Var olan kargo tipi +STR_ORDER_REFIT_AUTO :{BLACK}İstasyonda taşı +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Bu talimatta hangi kargo türünün taşınacağını seçin. Ctrl+Tıklama ile taşıma talimatını kaldırın. İstasyonlarda taşıma sadece izin verilen araçlarda mümkündür +STR_ORDER_DROP_REFIT_AUTO :Sabit kargo +STR_ORDER_DROP_REFIT_AUTO_ANY :Kullanılabilir kargo STR_ORDER_SERVICE :{BLACK}Bakım STR_ORDER_DROP_GO_ALWAYS_DEPOT :Her zaman git @@ -3721,14 +3718,14 @@ STR_ORDERS_DELETE_BUTTON :{BLACK}Sil STR_ORDERS_DELETE_TOOLTIP :{BLACK}Seçili talimatı sil STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Tüm talimatları sil STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Paylaşmaktan vazgeç -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Talimat listesini paylaşmaktan vazgeç. Ctrl+Tık ayrıca tüm talimat listesini siler +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Talimat listesini paylaşmaktan vazgeç. Ctrl+Tıklama ayrıca tüm talimat listesini siler STR_ORDERS_GO_TO_BUTTON :{BLACK}Git STR_ORDER_GO_TO_NEAREST_DEPOT :En yakın gara git STR_ORDER_GO_TO_NEAREST_HANGAR :En yakın hangara git STR_ORDER_CONDITIONAL :Duruma göre dallan STR_ORDER_SHARE :Emirleri paylaştır -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Seçili talimatın önüne ya da listenin sonuna yeni talimat ekle. Ctrl tuşuna basmak; istasyon talimatlarını 'bir kargo tipini tam yükle', yol imi talimatlarını 'durmaksızın', garaj talimatlarını 'bakıma gir' olarak değiştirir. 'Talimatları paylaş' veya Ctrl bu aracın talimatlarını seçili araçla paylaşmasını sağlar. Bir araca tıklamak o aracın talimatlarını kopyalar. Bir garaj talimatı araca otomatik olarak bakım yapılması özelliğini kapatır +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Seçili talimatın önüne ya da listenin sonuna yeni talimat ekle. Ctrl tuşuna basmak; istasyon talimatlarını 'bir kargo türünü tam yükle', yol imi talimatlarını 'durmaksızın', garaj talimatlarını 'bakıma gir' olarak değiştirir. 'Talimatları paylaş' veya Ctrl bu aracın talimatlarını seçili araçla paylaşmasını sağlar. Bir araca tıklamak o aracın talimatlarını kopyalar. Bir garaj talimatı araca otomatik olarak bakım yapılması özelliğini kapatır STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Aynı talimatlara sahip bütün araçları göster @@ -3741,14 +3738,14 @@ STR_ORDER_SERVICE_NON_STOP_AT :Durmaksızın b STR_ORDER_NEAREST_DEPOT :en yakın STR_ORDER_NEAREST_HANGAR :en yakın Hangar -STR_ORDER_TRAIN_DEPOT :Tren Garı +STR_ORDER_TRAIN_DEPOT :Tren Garajı STR_ORDER_ROAD_VEHICLE_DEPOT :Karayolu Garajı STR_ORDER_SHIP_DEPOT :Tersane STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Moifiye ile > {STRING}) -STR_ORDER_REFIT_STOP_ORDER :(Kargo tipini {STRING} yap ve dur) +STR_ORDER_REFIT_STOP_ORDER :(Kargo türünü {STRING} yap ve dur) STR_ORDER_STOP_ORDER :(Dur) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -3771,20 +3768,20 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Boşaltma ve t STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Boşaltma ve herhangi bir tam dolduruşu bekle) STR_ORDER_NO_UNLOAD_NO_LOAD :(Boşaltma ve yükleme yok) -STR_ORDER_AUTO_REFIT :({STRING} taşımak için otomatik modifiye et) -STR_ORDER_FULL_LOAD_REFIT :({STRING} taşımak için otomatik modifiye et ve tam doldur) -STR_ORDER_FULL_LOAD_ANY_REFIT :({STRING} taşımak için otomatik modifiye et ve herhangi bir kargoyu tam doldur) -STR_ORDER_UNLOAD_REFIT :({STRING} taşımak için otomatik modifiye et ve boşalt) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :({STRING} taşımak için otomatik modifiye et, boşalt ve tam doldur) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING} taşımak için otomatik modifiye et, boşalt ve herhangi bir kargoyu tam doldur) -STR_ORDER_TRANSFER_REFIT :({STRING} taşımak için otomatik modifiye et, aktar ve kargo al) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :({STRING} taşımak için otomatik modifiye et, aktar ve tam doldur) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :({STRING} taşımak için otomatik modifiye et, aktar ve herhangi bir kargoyu tam doldur) -STR_ORDER_NO_UNLOAD_REFIT :({STRING} taşımak için otomatik modifiye et, boşaltmadan kargo al) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :({STRING} taşımak için otomatik modifiye et ve boşaltmadan tam doldur) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING} taşımak için otomatik modifiye et, boşaltmadan herhangi bir kargoyu tam doldur) - -STR_ORDER_AUTO_REFIT_ANY :var olan kargo tipi +STR_ORDER_AUTO_REFIT :({STRING} taşımak için) +STR_ORDER_FULL_LOAD_REFIT :({STRING} taşımak için tam doldur) +STR_ORDER_FULL_LOAD_ANY_REFIT :({STRING} taşımak için herhangi bir kargoyu tam doldur) +STR_ORDER_UNLOAD_REFIT :({STRING} taşımak için boşalt ve kargoyu al) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :({STRING} taşımak için boşalt ve tam doldur) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING} taşımak için boşalt ve herhangi bir kargoyu tam doldur) +STR_ORDER_TRANSFER_REFIT :({STRING} taşımak için aktar ve kargo al) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :({STRING} taşımak için aktar ve tam doldur) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :({STRING} taşımak için aktar ve herhangi bir kargoyu tam doldur) +STR_ORDER_NO_UNLOAD_REFIT :({STRING} taşımak için boşaltmadan kargo al) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :({STRING} taşımak için boşaltmadan tam doldur) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :({STRING} taşımak için boşaltmadan herhangi bir kargoyu tam doldur) + +STR_ORDER_AUTO_REFIT_ANY :kullanılabilir kargo STR_ORDER_STOP_LOCATION_NEAR_END :[yakın uç] STR_ORDER_STOP_LOCATION_MIDDLE :[orta] @@ -3813,8 +3810,8 @@ STR_TIMETABLE_TRAVEL_FOR :{STRING} boyunc STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING} boyunca en çok {VELOCITY} hız ile git STR_TIMETABLE_STAY_FOR :{STRING} bekle STR_TIMETABLE_AND_TRAVEL_FOR :ve şuraya sefer yap: {STRING} -STR_TIMETABLE_DAYS :{COMMA} gün -STR_TIMETABLE_TICKS :{COMMA} birim +STR_TIMETABLE_DAYS :{COMMA}{NBSP}gün +STR_TIMETABLE_TICKS :{COMMA}{NBSP}birim STR_TIMETABLE_TOTAL_TIME :{BLACK}Bu zaman çizelgesinin bitmesi {STRING} sürecek STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Bu zaman çizelgesinin bitmesi en az {STRING} sürecek (tamamı hesaplanmadı) @@ -3826,7 +3823,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Bu çize STR_TIMETABLE_STATUS_START_AT :{BLACK}Bu çizelge {STRING} tarihinde başlayacak STR_TIMETABLE_STARTING_DATE :{BLACK}Başlangıç tarihi -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Bu zaman çizelgesinin başlangıcı olarak bir tarih seçin. Ctrl+Tık bu zaman çizelgesinin başlangıcını seçer ve eğer komuta zaman çizelgesi uygulanmışsa bu komutu paylaşan tüm araçlara göreli komutlarını baz alarak eşit dağıtır. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Bu zaman çizelgesinin başlangıcı olarak bir tarih seçin. Ctrl+Tıklama bu zaman çizelgesinin başlangıcını seçer ve eğer komuta zaman çizelgesi uygulanmışsa bu komutu paylaşan tüm araçlara göreli komutlarını baz alarak eşit dağıtır. STR_TIMETABLE_CHANGE_TIME :{BLACK}Zamanı değiştir STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Seçili talimatın harcaması gereken süreyi değiştir @@ -3866,9 +3863,9 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Yılı s # AI debug window STR_AI_DEBUG :{WHITE}YZ Hata Ayıklama STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Komut dosyası (script) adı +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Betik adı STR_AI_DEBUG_SETTINGS :{BLACK}YZ Ayarları -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Komut dosyası (script) ayarlarını değiştir +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Betik ayarlarını değiştir STR_AI_DEBUG_RELOAD :{BLACK}YZ'yı baştan yükle STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}YZ'yı öldür, kodu tekrar yükle ve YZ'yı tekrar başlat STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}YZ log iletisi durma metni ile eşleştiğinde duraklatmayı aç/kapa @@ -3876,7 +3873,7 @@ STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Geldiği STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Geldiğinde duraklatılacak metin STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Bir YZ log mesajı metin ile eşleşirse, oyun duraklatılır STR_AI_DEBUG_MATCH_CASE :{BLACK}Büyük/küçük harf eşleştir -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}YZ log iletilerini durma metni ile karşılaştırırken büyük/küçük harf eşleşmesini aç/kapa +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}YZ günlük iletilerini durma metni ile karşılaştırırken büyük/küçük harf eşleşmesini aç/kapa STR_AI_DEBUG_CONTINUE :{BLACK}Devam et STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}YZ'yi devam ettir STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Bu YZ için hata ayıklama çıktısı göster @@ -3884,12 +3881,12 @@ STR_AI_GAME_SCRIPT :{BLACK}Oyun Bet STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Oyun Betiği günlüğünü kontrol edin STR_ERROR_AI_NO_AI_FOUND :Yüklenecek uygun bir YZ bulunamadı.{}Bu YZ boş bir YZ'dir ve hiçbir şey yapmaz.{}'Çevrimiçi İçerik" sistemiyle pekçok YZ'yi indirebilirsiniz -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Çalışan komut dosyalarından (script) biri çakıldı. Lütfen bu durumu AI Hata Ayıklama Penceresi görüntüsüyle birlikte dosyanın yazarına bildirin +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Çalışan betiklerden biri çöktü. Lütfen bu durumu YZ Hata Ayıklama Penceresi görüntüsüyle birlikte dosyanın yazarına bildirin STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}YZ Hata Ayıklama penceresi sadece sunucu içindir # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}YZ Yapılandırması -STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Bir sonraki oyunda yüklenecek Oyun Betiği (script) +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Bir sonraki oyunda yüklenecek Oyun Betiği STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Bir sonraki oyunda yüklenecek YZ'ler STR_AI_CONFIG_HUMAN_PLAYER :İnsan oyuncu STR_AI_CONFIG_RANDOM_AI :Rastgele YZ @@ -3901,35 +3898,35 @@ STR_AI_CONFIG_MOVE_DOWN :{BLACK}Aşağı STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Seçilen YZ'yi listede aşağı taşı STR_AI_CONFIG_GAMESCRIPT :{SILVER}Oyun Betiği -STR_AI_CONFIG_AI :{SILVER}YZler +STR_AI_CONFIG_AI :{SILVER}YZ'ler -STR_AI_CONFIG_CHANGE :{BLACK}Seç {STRING} +STR_AI_CONFIG_CHANGE :{BLACK}{STRING} Seç STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :YZ STR_AI_CONFIG_CHANGE_GAMESCRIPT :Oyun Betiği STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Başka bir betik yükle STR_AI_CONFIG_CONFIGURE :{BLACK}Yapılandır -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Komut dosyası (script) parametrelerini yapılandır +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Betik parametrelerini yapılandır # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Mevcut {STRING} STR_AI_LIST_CAPTION_AI :YZ'ler -STR_AI_LIST_CAPTION_GAMESCRIPT :Oyun Betikleri (script) -STR_AI_LIST_TOOLTIP :{BLACK}Komut dosyası (script) seçmek için bir tuşa basın +STR_AI_LIST_CAPTION_GAMESCRIPT :Oyun Betikleri +STR_AI_LIST_TOOLTIP :{BLACK}Bir betik seçmek için tıklayın STR_AI_LIST_AUTHOR :{LTBLUE}Yazar: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Sürüm: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Kabul et -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vurgulanan komut dosyasını (script) seç +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vurgulanan betiği seç STR_AI_LIST_CANCEL :{BLACK}İptal -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Komut dosyası (script) değişmesin +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Betiği değiştirme # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametreler STR_AI_SETTINGS_CAPTION_AI :YZ -STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Oyun Betiği (script) +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Oyun Betiği STR_AI_SETTINGS_CLOSE :{BLACK}Kapat STR_AI_SETTINGS_RESET :{BLACK}Yeniden başlat STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -3940,6 +3937,8 @@ STR_AI_SETTINGS_START_DELAY :Bu YZ bir önce STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} adlı {STRING}'nin benioku dosyası STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} adlı {STRING}'nin değişiklik kaydı STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} adlı {STRING}'nin lisansı +STR_TEXTFILE_WRAP_TEXT :{WHITE}Metni kaydır +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Metni, okumak için gezinmeyi önlemek üzere kaydır STR_TEXTFILE_VIEW_README :{BLACK}Benioku dosyasını göster STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Değişiklik kayıtları STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisans @@ -3971,7 +3970,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tahmini # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Kayıt işlemi sürüyor,{}lütfen bitene kadar bekleyin! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Otokayıt başarısız +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Otomatik kayıt başarısız STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Sürücü okunamıyor STR_ERROR_GAME_SAVE_FAILED :{WHITE}Oyun kaydedilemedi{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Dosya silinemedi @@ -4020,7 +4019,7 @@ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mesaj ( STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Harita kenarında STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Sınıra çok yakın STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Para yetersiz - gerekli miktar: {CURRENCY_LONG} -STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Zeminin düzleştirilmesi lazım +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Zeminin düzleştirilmesi gerekli STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Arazi yanlış yöne doğru meyilli STR_ERROR_CAN_T_DO_THIS :{WHITE}Bu yapılamaz... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Önce bina yıkılmalı @@ -4076,7 +4075,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... hari STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... başka bir şehire çok yakın STR_ERROR_TOO_MANY_TOWNS :{WHITE}... çok fazla şehir var STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... haritada boş yer yok -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Şehir yol yapmayacak. Yol yapımını Gelişmiş Ayarlar->Ekonomi->Şehirler'den etkinleştirebilirsiniz +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Kasaba yol yapmayacak. Yol yapımını Gelişmiş Ayarlar->Ekonomi->Şehirler'den etkinleştirebilirsiniz STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Yol çalışmaları STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Bu kasaba silinemiyor...{}Bir istasyon veya garaj kasabaya atıfta bulunuyor ya da bir kasaba karesi kaldırılamıyor STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... bu şehrin merkezinde heykel için uygun bir yer yok @@ -4100,6 +4099,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... orma STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... yalnız kar çizgisinin üzerinde yapılabilir STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... yalnız kar çizgisinin altında yapılabilir + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Buraya tren istasyonu yapılamıyor... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Otobüs durağı yapılamıyor... @@ -4192,7 +4192,7 @@ STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Önce i STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Uygun ray yok STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Önce ray kaldırılmalı STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Yol tek yönlü veya kapalı -STR_ERROR_CROSSING_DISALLOWED :{WHITE}Bu ray tipi için hemzemin geçit yapılamaz +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Bu ray türü için hemzemin geçit yapılamaz STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Buraya sinyal yapılamıyor... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Buraya ray yapılamıyor... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Buradan ray kaldırılamıyor... @@ -4253,7 +4253,7 @@ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tün # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... çok fazla nesne var STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Nesne inşa edilemiyor... -STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Yolda birsey var +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Yolda nesne var STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... yolda şirket binası var STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Burası satın alınamaz... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... zaten senin! @@ -4262,6 +4262,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... zate STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Grup oluşturulamıyor... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Bu grup silinemiyor... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Grubun ismi değiştirilemiyor... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Üst grup ayarlanamıyor... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Bu gruptaki bütün araçlar çıkartılamıyor... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Araç bu gruba eklenemiyor... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Paylaşılan araçlar bu gruba eklenemiyor... @@ -4365,13 +4366,13 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Tabelay STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe'ü temel alan bir simülasyon oyunu # Translatable descriptions in media/baseset/*.ob* files -STR_BASEGRAPHICS_DOS_DESCRIPTION :Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri. -STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. -STR_BASEGRAPHICS_WIN_DESCRIPTION :Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri. -STR_BASESOUNDS_DOS_DESCRIPTION :Orijinal Transport Tycoon Deluxe DOS sürümü sesleri. -STR_BASESOUNDS_WIN_DESCRIPTION :Orijinal Transport Tycoon Deluxe Windows sürümü sesleri. +STR_BASEGRAPHICS_DOS_DESCRIPTION :Özgün Transport Tycoon Deluxe DOS sürümü grafikleri. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Özgün Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Özgün Transport Tycoon Deluxe Windows sürümü grafikleri. +STR_BASESOUNDS_DOS_DESCRIPTION :Özgün Transport Tycoon Deluxe DOS sürümü sesleri. +STR_BASESOUNDS_WIN_DESCRIPTION :Özgün Transport Tycoon Deluxe Windows sürümü sesleri. STR_BASESOUNDS_NONE_DESCRIPTION :Ses içermeyen boş bir ses kümesi. -STR_BASEMUSIC_WIN_DESCRIPTION :Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri. +STR_BASEMUSIC_WIN_DESCRIPTION :Özgün Transport Tycoon Deluxe Windows sürümü müzikleri. STR_BASEMUSIC_NONE_DESCRIPTION :Müzik içermeyen boş bir müzik paketi. ##id 0x2000 @@ -4506,7 +4507,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dizel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dizel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dizel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Buhar) @@ -4715,7 +4716,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug De STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Deniz otobüsü STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Kargo gemisi STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Kargo gemisi -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Kargo gemisi +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Kargo gemisi STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Kargo gemisi STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4774,8 +4775,8 @@ STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING. STR_FORMAT_WAYPOINT_NAME :Yerimi {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Yerimi {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Tren Deposu -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Tren Deposu #{COMMA} +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Tren Garajı +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Tren Garajı #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Karayolu Taşıtı Garajı STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Karayolu Taşıtı Garajı #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Tersanesi @@ -4844,8 +4845,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4856,9 +4855,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index bddf3a6bc2..f5ff1162fd 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -220,30 +220,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.z :газован # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} пасажир{P "" и iв} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}пасажир{P "" и iв} STR_QUANTITY_COAL :{WEIGHT_LONG} вугілля -STR_QUANTITY_MAIL :{COMMA} сум{P ка ки ок} пошти +STR_QUANTITY_MAIL :{COMMA}{NBSP}міш{P ок ка ків} пошти STR_QUANTITY_OIL :{VOLUME_LONG} нафти -STR_QUANTITY_LIVESTOCK :{COMMA} гол{P ова ови ів} худоби -STR_QUANTITY_GOODS :{COMMA} ящи{P к ки ків} товарів +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}гол{P ова ови ів} худоби +STR_QUANTITY_GOODS :{COMMA}{NBSP}ящи{P к ки ків} товарів STR_QUANTITY_GRAIN :{WEIGHT_LONG} зерна STR_QUANTITY_WOOD :{WEIGHT_LONG} деревини STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} залізної руди STR_QUANTITY_STEEL :{WEIGHT_LONG} сталі -STR_QUANTITY_VALUABLES :{COMMA} сум{P ка ки ок} коштовностей +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}міш{P ок ка ків} коштовностей STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} мідної руди STR_QUANTITY_MAIZE :{WEIGHT_LONG} кукурудзи STR_QUANTITY_FRUIT :{WEIGHT_LONG} фруктів -STR_QUANTITY_DIAMONDS :{COMMA} сум{P ка ки ок} діамантів +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}міш{P ок ки ків} діамантів STR_QUANTITY_FOOD :{WEIGHT_LONG} продуктів STR_QUANTITY_PAPER :{WEIGHT_LONG} паперу -STR_QUANTITY_GOLD :{COMMA} міш{P ок ки ків} золота +STR_QUANTITY_GOLD :{COMMA}{NBSP}міш{P ок ки ків} золота STR_QUANTITY_WATER :{VOLUME_LONG} води STR_QUANTITY_WHEAT :{WEIGHT_LONG} пшениці STR_QUANTITY_RUBBER :{VOLUME_LONG} каучуку STR_QUANTITY_SUGAR :{WEIGHT_LONG} цукру -STR_QUANTITY_TOYS :{COMMA} іграш{P ка ки ок} -STR_QUANTITY_SWEETS :{COMMA} пакун{P ок ки ків} цукерок +STR_QUANTITY_TOYS :{COMMA}{NBSP}іграш{P ка ки ок} +STR_QUANTITY_SWEETS :{COMMA}{NBSP}пакун{P ок ки ків} цукерок STR_QUANTITY_COLA :{VOLUME_LONG} Коли STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} солодкої вати STR_QUANTITY_BUBBLES :{COMMA} бульбаш{P ка ки ок} @@ -290,12 +290,12 @@ STR_ABBREV_NONE :{TINY_FONT}НІ STR_ABBREV_ALL :{TINY_FONT}Все # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} пасажир{P "" и ів} -STR_BAGS :{COMMA} міш{P ок ка ків} -STR_TONS :{COMMA} тон{P а и ""} -STR_LITERS :{COMMA} літр{P "" а ів} -STR_ITEMS :{COMMA} штук{P а и ""} -STR_CRATES :{COMMA} ящик{P "" а ів} +STR_PASSENGERS :{COMMA}{NBSP}пасажир{P "" и ів} +STR_BAGS :{COMMA}{NBSP}міш{P ок ка ків} +STR_TONS :{COMMA}{NBSP}тон{P "а" "и" ""} +STR_LITERS :{COMMA}{NBSP}літр{P "" "а" "ів"} +STR_ITEMS :{COMMA}{NBSP}штук{P "а" "и" ""} +STR_CRATES :{COMMA}{NBSP}ящик{P "" а ів} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Темно-синій @@ -316,36 +316,44 @@ STR_COLOUR_GREY :Сірий STR_COLOUR_WHITE :Білий # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} миль/год -STR_UNITS_VELOCITY_METRIC :{COMMA} км/год -STR_UNITS_VELOCITY_SI :{COMMA} м/с +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}миль/год +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}км/год +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}м/с -STR_UNITS_POWER_IMPERIAL :{COMMA}к.с. -STR_UNITS_POWER_METRIC :{COMMA}к.с. -STR_UNITS_POWER_SI :{COMMA}кВт +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}к.с. +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}к.с. +STR_UNITS_POWER_SI :{COMMA}{NBSP}кВт -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}т -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}кг +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}т +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}кг -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P а и ""} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}тонн{P "а" "и" ""} +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}тон{P а и ""} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}кг -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}л -STR_UNITS_VOLUME_SHORT_SI :{COMMA}м³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}гал +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}л +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}м³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} літр{P "" а ів} -STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}галон{P "" и ів} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}літр{P "" "а" "ів"} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}м³ -STR_UNITS_FORCE_SI :{COMMA} кН +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}фунт-сила +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}кгс +STR_UNITS_FORCE_SI :{COMMA}{NBSP}кН -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фт -STR_UNITS_HEIGHT_SI :{COMMA} м +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}фт +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}м +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фільтр: STR_LIST_FILTER_OSKTITLE :{BLACK}Введіть рядок фільтру STR_LIST_FILTER_TOOLTIP :{BLACK}Введіть ключове слово для фільтраціі списку +STR_TOOLTIP_GROUP_ORDER :{BLACK}Виберіть порядок групування STR_TOOLTIP_SORT_ORDER :{BLACK}Оберіть напрямок сортування (спадаючий/зростаючий) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Оберіть критерій сортування STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Оберіть критерій фільтру @@ -357,13 +365,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закр STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Заголовок вікна - потягніть для переміщення вікна STR_TOOLTIP_SHADE :{BLACK}Згорнути вікно - показувати тільки заголовок STR_TOOLTIP_DEBUG :{BLACK}Показати інформацію для відлагодження NewGRF -STR_TOOLTIP_STICKY :{BLACK}Закріпити вікно - воно не буде закриватися командою "Закрити всі вікна" +STR_TOOLTIP_DEFSIZE :{BLACK}Повернути розмір вікна до типового. Ctrl+Click робить поточний розмір типовим +STR_TOOLTIP_STICKY :{BLACK}Не закривати вікно кнопкою "Закрити всі вікна". Ctrl+клац мишою зберігає налаштування як базове STR_TOOLTIP_RESIZE :{BLACK}Натисніть і тягніть для зміни розміру вікна STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Розмір вікна великий/малий STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вверх/вниз STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вліво/вправо STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги і т.п. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу витрат на руйнування +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Показати сховане +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Показати сховане +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Показати сховане +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Показати сховане + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}натискання цієї кнопки зробить видимими приховані потяги +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}натискання цієї кнопки зробить видимим прихований колісний транспорт +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}натискання цієї кнопки зробить видимими приховані кораблі +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}натискання цієї кнопки зробить видимими приховані літальні апарати + # Query window STR_BUTTON_DEFAULT :{BLACK}Стандартно STR_BUTTON_CANCEL :{BLACK}Відміна @@ -401,6 +421,8 @@ STR_SORT_BY_LENGTH :за довжи STR_SORT_BY_LIFE_TIME :за залишком строку служби STR_SORT_BY_TIMETABLE_DELAY :за відхиленням від розкладу STR_SORT_BY_FACILITY :за типом станції +STR_SORT_BY_WAITING_TOTAL :Загалом очікує вантажів +STR_SORT_BY_WAITING_AVAILABLE :очікує доступних вантажів STR_SORT_BY_RATING_MAX :за найвищим рейтингом STR_SORT_BY_RATING_MIN :за найнижчим рейтингом STR_SORT_BY_ENGINE_ID :за ID (класичний порядок) @@ -426,14 +448,15 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Пока STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Показати список станцій компанії STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Фінансова інформація STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Головна інформація +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Показати історію STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Показати список завдань STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Показати графіки STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Показати таблицю компаній STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Фінансувати будівництво нової промисловості -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Показати список поїздів компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Показати список дорожнього транспорту компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Показати список кораблів компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Показати список повітряного транспорту компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Показати список поїздів компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Показати список дорожнього транспорту компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Показати список кораблів компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Показати список повітряного транспорту компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Збільшити STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Зменшити STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати залізницю @@ -474,7 +497,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Вихід ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Налаштування гри -STR_SETTINGS_MENU_CONFIG_SETTINGS :Розширені налаштування +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Налаштування STR_SETTINGS_MENU_SCRIPT_SETTINGS :Налаштування AI / Ігрового скрипта STR_SETTINGS_MENU_NEWGRF_SETTINGS :Налаштування NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Налаштування прозорості @@ -492,7 +515,7 @@ STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Прозорі ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Зберегти гру STR_FILE_MENU_LOAD_GAME :Завантажити гру -STR_FILE_MENU_QUIT_GAME :Залишити гру +STR_FILE_MENU_QUIT_GAME :Покинути гру STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Вихід ############ range ends here @@ -500,6 +523,7 @@ STR_FILE_MENU_EXIT :Вихід # map menu STR_MAP_MENU_MAP_OF_WORLD :Карта світу STR_MAP_MENU_EXTRA_VIEW_PORT :Додаткове вікно +STR_MAP_MENU_LINGRAPH_LEGEND :Легенда вантажопотоку STR_MAP_MENU_SIGN_LIST :Список позначок ############ range for town menu starts @@ -582,7 +606,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вкл./від STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Вкл./відкл. підсвічування застарілих блоків ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -598,22 +622,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -630,7 +672,10 @@ STR_MONTH_ABBREV_OCT :Жов STR_MONTH_ABBREV_NOV :Лис STR_MONTH_ABBREV_DEC :Гру -STR_MONTH_JAN :Січень +STR_MONTH_JAN :cічень +STR_MONTH_JAN.r :січня +STR_MONTH_JAN.d :січневі +STR_MONTH_JAN.z :січень STR_MONTH_FEB :Лютий STR_MONTH_MAR :Березень STR_MONTH_APR :Квітень @@ -762,7 +807,7 @@ STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLA STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Очистити STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистити програму (тільки для Набору 1 або Набору 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Виберіть доріжку, щоб додати до програми (тільки для Набору 1 або Набору 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клікніть на мелодії для її видалення зі списку (лише Набір1 та Набір2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клацніть мишою на мелодії для її видалення зі списку (лише Набір1 та Набір2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Кращі компанії, які досягли {NUM} @@ -786,17 +831,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Карт STR_SMALLMAP_TYPE_CONTOURS :Рельєф STR_SMALLMAP_TYPE_VEHICLES :Транспорт STR_SMALLMAP_TYPE_INDUSTRIES :Підприємства +STR_SMALLMAP_TYPE_ROUTEMAP :Потік вантажу STR_SMALLMAP_TYPE_ROUTES :Маршрути STR_SMALLMAP_TYPE_VEGETATION :Рослинність STR_SMALLMAP_TYPE_OWNERS :Власники STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Показати рельєф на карті STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Показати транспорт на карті STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Показати підприємства на карті +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Показувати потік вантажу на карті STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Показати маршрути на карті STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Показати рослинність на карті STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Показати власників землі на карті -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Щоб відобразити певний вид підприємств, клацніть на ньому мишкою. Ctrl + клік мишкою вмикає/вимикає відображення всіх видів, окрім обраного. -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Натисніть на компанію аби відобразити її власність. Ctrl + клік мишкою вмикає/вимикає відображення власності всіх компаній, окрім обраної. +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Щоб відобразити певний вид підприємств, клацніть на ньому мишою. Ctrl+клац мишою вмикає/вимикає відображення всіх видів, окрім обраного +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Натисніть на компанію аби відобразити її власність. Ctrl+клац мишою вмикає/вимикає відображення власності всіх компаній, окрім обраної +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Натискання на вантаж покаже його власника. Ctrl+клац мишою відключить усі вантажі, крім одного обраного. Повторний Ctrl+клац мишою підключить усі вантажі STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Дороги STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Залізниці @@ -830,6 +878,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Показати назви міст на карті STR_SMALLMAP_CENTER :{BLACK}Центрувати мінікарту по поточній позиції STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Вимкнути всі @@ -840,6 +889,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Пока STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Вкл./відкл. карту висот STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Не показувати власність жодної компанії на карті STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Показати власність всіх компаній на карті +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Не показувати вантажі на карті +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Показати всі вантажі на карті # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Показати останнє повідомлення або новину @@ -916,13 +967,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чекає в депо STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чекає в ангарі -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} має замало завдань STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} має недійсне завдання STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} має подвоєння завдань STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} має невірну станцію в завданнях -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE} Один із пунктів призначення {VEHICLE} має закоротку злітну смугу STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} застарів STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} дуже застарів @@ -1001,12 +1051,10 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Литовсь STR_GAME_OPTIONS_CURRENCY_KRW :Південнокорейський вон (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Південноафриканський ранд (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Власна... +STR_GAME_OPTIONS_CURRENCY_GEL :Грузинські ларі (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Іранський ріал (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Сторона руху транспорту STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Виберіть, по якій стороні рухається дорожній транспорт STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :лівосторонній рух @@ -1042,11 +1090,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталон STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозбереження STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть період автозбереження гри +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :вимкнено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :щомісяця STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :кожні три місяці STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :кожні півроку STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :щороку +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Виберіть мову інтерфейса користувача @@ -1058,8 +1108,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Розд STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть роздільну здатність екрану STR_GAME_OPTIONS_RESOLUTION_OTHER :інша -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат знімків екрану -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Виберіть формат для створення копій екрану +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Розмір інтерфейсу +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Оберіть розмір елементів інтерфейсу + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Нормальний розмір +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Подвійний розмір +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Почетверний розмір STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати @@ -1075,6 +1129,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Обер STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} зіпсовани{P й х х} файл{P "" а ів} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допоміжна інформація про базовий музичний набір +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не вдалося отримати список підтримуваних дозволів STR_ERROR_FULLSCREEN_FAILED :{WHITE}Повноекранний режим не працює # Custom currency window @@ -1135,10 +1190,10 @@ STR_SEA_LEVEL_HIGH :високий STR_SEA_LEVEL_CUSTOM :вибірковий STR_SEA_LEVEL_CUSTOM_PERCENTAGE :вибірковий ({NUM}%) -STR_RIVERS_NONE :Нема -STR_RIVERS_FEW :Кілька -STR_RIVERS_MODERATE :Середньо -STR_RIVERS_LOT :Багато +STR_RIVERS_NONE :немає +STR_RIVERS_FEW :кілька +STR_RIVERS_MODERATE :середньо +STR_RIVERS_LOT :багато STR_DISASTER_NONE :відкл. STR_DISASTER_REDUCED :знижено @@ -1153,6 +1208,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :плаский STR_TERRAIN_TYPE_FLAT :рівнинний STR_TERRAIN_TYPE_HILLY :пагористий STR_TERRAIN_TYPE_MOUNTAINOUS :гористий +STR_TERRAIN_TYPE_ALPINIST :скелястий STR_CITY_APPROVAL_PERMISSIVE :допустиме STR_CITY_APPROVAL_TOLERANT :терпиме @@ -1160,8 +1216,8 @@ STR_CITY_APPROVAL_HOSTILE :вороже STR_WARNING_NO_SUITABLE_AI :{WHITE}Немає відповідних AI...{}Ви можете завантажити кілька AI через систему 'Вмісту в Інтернеті' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Розширені налаштування +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Налаштування STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Фільтр: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Розгорнути всі STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Згорнути всі @@ -1169,26 +1225,31 @@ STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(пояснен STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Стандартне значення: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Тип: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Налаштування клієнта (не присутні в збережених іграх; впливають на будь-яку гру) -STR_CONFIG_SETTING_TYPE_GAME_MENU :Налаштування гри (знаходяться в збережених іграх; впливають тільки на нову гру) -STR_CONFIG_SETTING_TYPE_GAME_INGAME :Налаштування гри (знаходяться в збережених іграх; впливають тільки на поточну гру) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Налаштування компанії (знаходяться в збережених іграх; впливають тільки на нову гру) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Налаштування гри (залишаються при збереженні; впливають тільки на нову гру) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Налаштування гри (залишаються при збереженні; впливають тільки на поточну гру) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Налаштування компанії (залишаються при збереженні; впливають тільки на нові ігри) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Налаштування компанії (знаходяться в збережених іграх; впливають тільки на поточну гру) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Показати: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Показати лише налаштування, які було змінено -STR_CONFIG_SETTING_RESTRICT_BASIC :Основні налаштування -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Розширені налаштування -STR_CONFIG_SETTING_RESTRICT_ALL :Всі / експертні налаштування -STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Налаштування, що відрізняються від дефолтних +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Категорія: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Тип: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Показати лише відфільтровані налаштування +STR_CONFIG_SETTING_RESTRICT_BASIC :Основні (показує лише найважливіші налаштування) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Розширені (показати основні налаштування) +STR_CONFIG_SETTING_RESTRICT_ALL :Експертні / (показати всі налаштування, в тому числі незвичні) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Налаштування, що відрізняються від стандартних STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Налаштування, що відрізняються від налаштувань нової гри STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Обмежує перелік нижче визначеними типами налаштувань -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Всі налаштування -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Налаштування клієнта (не присутні в збережених іграх; впливають на всі ігри) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Налаштування гри (знаходяться в збережених іграх; впливають лише на нові ігри) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Налаштування гри (знаходяться в збережених іграх; впливають лише на поточну гру) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Усі типи налаштувань +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Налаштування клієнта (не залишаються при збереженні; впливають на всі ігри) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Налаштування гри (залишаються при збереженні; впливають лише на нові ігри) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Налаштування гри (залишаються при збереженні; впливають лише на поточну гру) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Налаштування компанії (знаходяться в збережених іграх; впливають лише на нові ігри) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Налаштування компанії (знаходяться у збережених іграх; впливають лише на поточну компанію) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Показати всі результати пошуку встановивши{}{SILVER}Категорію {BLACK}на {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Показати всі результати пошуку встановивши{}{SILVER}Тип {BLACK}на {WHITE}Всі типи налаштувань +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Показати всі результати пошуку встановивши{}{SILVER}Категорію {BLACK}на {WHITE}{STRING} {BLACK}і {SILVER}Тип {BLACK}на {WHITE}Всі типи налаштувань +STR_CONFIG_SETTINGS_NONE :{WHITE}- немає - STR_CONFIG_SETTING_OFF :ні STR_CONFIG_SETTING_ON :так @@ -1209,7 +1270,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :правору STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Максимальна сума позики: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальна сума позики для компанії (без урахування інфляції) STR_CONFIG_SETTING_INTEREST_RATE :Процентна ставка: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентна ставка за позиками; також контролює інфляцію, якщо увімкнена +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентна ставка за позиками; також контролює інфляцію, якщо вона увімкнена STR_CONFIG_SETTING_RUNNING_COSTS :Експлуатаційні витрати: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та експлуатаційні витрати на транспорт та інфраструктуру STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Швидкість будівництва: {STRING} @@ -1221,16 +1282,17 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Встанов STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Вартість будівництва: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Встановити рівень витрат на будівництво та придбання STR_CONFIG_SETTING_RECESSIONS :Рецесії: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Якщо увімкнено, рецесії можуть відбуватися кожні декілька років. Під час рецессії обсяг всіх виробництв значно знижений (він повертається на попередній рівень, коли рецесія закінчується) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Якщо увімкнено, рецесії можуть відбуватися кожні декілька років. Під час рецессії обсяг виробництва на всіх підприємствах значно знижений (він повертається на попередній рівень, коли рецесія закінчується) STR_CONFIG_SETTING_TRAIN_REVERSING :Заборонити поїздам розвертатися на станціях: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Якщо увімкнено, поїзди не будуть розвертатися у не кінцевих зупинках, якщо є коротший шлях до їх наступного пункту призначення при русі заднім ходом +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Якщо увімкнено, поїзди не будуть розвертатися на некінцевих станціях, навіть якщо є коротший шлях до їх наступного пункту призначення, який вимагає розвороту STR_CONFIG_SETTING_DISASTERS :Стихійні лиха: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Перемкнути стихійні лиха, які можуть випадково зруйнувати транспорт або інфраструктуру -STR_CONFIG_SETTING_CITY_APPROVAL :Ставлення ради міста до реструктуризації його території: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Ставлення ради міста до зміни його території: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Виберіть, який рівень шуму та руйнування довкілля компаніями впливає на їх рейтинг для міст та подальші будівельні дії в їх межах -STR_CONFIG_SETTING_BUILDONSLOPES :Дозволити будівництво на схилах та узбережжях: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :При включенні шляхи та станції можна будувати на більшості схилів. При відключенні допускається лише будівництво, що не потребує добудови фундаментів (шляхи за напрямом схилу, станції на повністю рівній землі) +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максимальна висота карти: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Встановити максимально дозволену висоту гір на карті +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Неможливо встановити таку висоти карти. Як мінімум одна гора на карті є вищою STR_CONFIG_SETTING_AUTOSLOPE :Дозволити зміну схилів під будівлями, дорогами тощо: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Можливість змінювати ландшафт під будівлями та дорогами без необхідності їх зносу STR_CONFIG_SETTING_CATCHMENT :Більш реалістічні зони покриття станцій: {STRING} @@ -1255,16 +1317,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Заборон STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :При включенні прямокутні перетини шляхів не будуть вважатися поворотами. Для повороту необходно прокладати шляхи під кутом 45°. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Станції можуть складатися з не суміжних частин: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Дозволяє об'єднання в одну станцію частин, що не примикають одна до одної. Щоб приєднати нову станцію до існуючої необхідно використовувати Ctrl+Click при будівництві. -STR_CONFIG_SETTING_IMPROVEDLOAD :Використовувати поліпшений алгоритм вантаження: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :При включенні вантаження декількох транспортних засобів на станції здійснюється по черзі. Вантаження наступного транспортного засобу починається тільки після завантаження попереднього. -STR_CONFIG_SETTING_GRADUAL_LOADING :Поступове вантаження: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :При включенні транспортні засоби завантажуються поступово, а час вантаження залежить від типу транспорту. Інакше весь вантаж переміщується одразу за час, що залежить від його кількості. STR_CONFIG_SETTING_INFLATION :Інфляція: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Дозволяє інфляцію в економіці. При цьому витрати з часом зростають дещо швидше за прибутки -STR_CONFIG_SETTING_SELECTGOODS :Постачати вантаж на станцію тільки якщо на нього був попит: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Дозволити постачання на станцію тільки тих вантажів, які можуть перевозити транспортні засоби, що прибували до цієї станції. Це запобігає низькому рейтингу відносно вантажів, що не обслуговуються. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимальна довжина мостів: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Максимально допустима довжина мостів +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Максимальна висота моста: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Максимальна висота при будівництві мостів STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максимальна довжина тунелів: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Максимально допустима довжина тунелів STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Спосіб створення сировинних підприємств: {STRING} @@ -1290,8 +1348,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Задайте, STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :на початку STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :посередині STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :наприкінці -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Автотранспорт шикується в чергу на зупинках: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :При включенні дорожній транспорт буде очікувати в черзі перед зайнятими зупинками. STR_CONFIG_SETTING_AUTOSCROLL :Прокручувати вікно, коли курсор з краю: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :При включенні вміст вікон огляду буде прокручуватись при підведенні курсора до краю вікна STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Вимкнено @@ -1322,13 +1378,9 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Дозволи STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіє місто. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Дозволити встановлення зупинок на дорогах конкурентів: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіють конкуренти. -STR_CONFIG_SETTING_ADJACENT_STATIONS :Різні станції можуть примикати одна до одної: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Різні станції можуть примикати одна до одної -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Дозволити декілька NewGRF наборів транспорту: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Налаштування для сумісності зі старими файлами NewGRF. Не відключайте, якщо не впевнені в необхідності цього! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Цю настройку не можливо змінити при наявності транспорту у грі STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Витрати на утримання інфраструктури: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі. +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аеропорти не застарівають: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включенні кожен аеропорт буде доступним для будівництва безстроково після його впровадження. @@ -1346,7 +1398,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспо STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включенні будь-яка модель транспортного засобу буде доступна для придбання безстроково після її впровадження. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Автозаміна зношених транспортних засобів: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :При включенні транспортні засоби з вичерпаним строком служби автоматично замінюються на нові (при виконанні умов автозаміни). -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Автозаміна транспрорту {STRING} закінчення строку експлуатаціі +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Автозаміна транспрорту {STRING} закінчення строку експлуатації STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Момент з якого транспортний засіб підлягає автоматичній заміні. STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} місяц{P ь я ів} до STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} місяц{P ь я ів} після @@ -1356,35 +1408,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Тривалі STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Тривалість відображення повідомлень про помилки (червоне вікно повідомлень). Деякі (критичні) повідомлення необхідно закривати власноруч. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} секунд{P а и ""} STR_CONFIG_SETTING_HOVER_DELAY :Відображати підказки: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затримка перед відображенням підказок при наведенні курсором на елементи інтерфейса. Окрім того, відображення підказок можна призначити на праву кнопку миші. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :При наведенні, через {COMMA} секунд{P у и ""} -STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :По правому кліку +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затримка перед відображенням підказок при наведенні курсором на елементи інтерфейса. Окрім того, відображення підказок можна призначити на праву кнопку миші, якщо це значення поставити на 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :При наведенні, через {COMMA} мілісекунд{P у и ""} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :По правому клацу миші STR_CONFIG_SETTING_POPULATION_IN_LABEL :Показувати населення в назві міста: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Відображати кількість населення міста поряд з його назвою на карті STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Товщина ліній на графіках: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Товщина ліній на графіках. Тонкі лінії дають більш точне відображення, а товстіші - більш розбірливі. +STR_CONFIG_SETTING_LANDSCAPE :Ландшафт: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Пейзажі визначають базові ігрові сценарії з різними вантажами, необхідними для зростання міст. NewGRF'и й ігрові скрипти дозволяють тонший контроль STR_CONFIG_SETTING_LAND_GENERATOR :Генератор ландшафту: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Стандартний залежить від базового набору графіки і створює стандартні форми ландшафту. TerraGenesis базується на генераторі шумів Перлина з тоншими налаштуваннями управління STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :стандартний STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Тип ландшафту: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Тільки TerraGenesis) Горбистість ландшафту +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Густота підприємств: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Встановіть кількість підприємств, що будуть створені і кількість підприємств, що існуватимуть впродовж гри STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. відстань від краю карти до нафтопереробних заводів: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нафтопереробні заводи завжди будуються не далеко від краю карти або узбережжя. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Рівень снігової шапки: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубість ландшафту (TerraGenesis) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :дуже плавний -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :плавний -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :грубий -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :дуже грубий +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Контроль висоти, вище якої лежить сніг в субарктичному ландшафті. Сніг впливає на генерування підприємств та на умови росту міст +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубість ландшафту: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Тільки для TerraGenesis) Оберіть частоту пагорбів: Плавний пейзаж має менше пагорбів, вони менш круті. Грубий ландшафт має багато пагорбів, що можуть повторюватись один за одним +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :дуже плавно +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :плавно +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :грубо +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :дуже грубо +STR_CONFIG_SETTING_VARIETY :Розподіл різноманітності: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Тільки для TerraGenesis) Перевірка наявності на карті гір і рівнин. Оскільки це робить карту плоскішою, інші налаштування необхідно встановити гірськими +STR_CONFIG_SETTING_RIVER_AMOUNT :Кількість річок: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Виберіть кількість річок STR_CONFIG_SETTING_TREE_PLACER :Алгоритм розміщення дерев: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Виберіть модель розподілу дерев на карті: "Стандартно" розподіляє дерева рівномірно, "Покращено" розташовує їх групами STR_CONFIG_SETTING_TREE_PLACER_NONE :немає -STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :стандартний -STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :покращений +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :стандартно +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :покращено +STR_CONFIG_SETTING_ROAD_SIDE :Автотранспорт: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Виберіть сторону, по якій рухається автотранспорт STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Поворот карти висот: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :проти годинникової стрілки STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :за годинниковою стрілкою STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Основний рівень суші плаского рельєфу: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Дозволити зміну рельєфу на краю карти: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :В разі відключення краї карти завжди будуть водними STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Одна або більше клітинок з північного краю не є вільними STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна або більше клітинок на одному з країв не є водними @@ -1402,10 +1468,10 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіолето STR_CONFIG_SETTING_REVERSE_SCROLLING :Змінити напрямок прокрутки: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Налаштування переміщення по карті правою кнопкою миші. При включенні переміщується карта. При виключенні - камера. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавна прокрутка у вікні: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Налаштування способу прокрутки основного екрану при кліках по зменшенній карті, або інших діях, що призводять до переміщення по карті (кнопки "Оглянути", тощо). При включенні опції переміщення карти відбувається плавно. При виключенні - відбувається моментальне переміщення в необхідну точку. +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Налаштування способу прокрутки основного екрану при клацанні мишою по зменшенній карті, або інших діях, що призводять до переміщення по карті (кнопки "Оглянути", тощо). При включенні опції переміщення карти відбувається плавно. При виключенні - відбувається моментальне переміщення в необхідну точку STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показувати підказки про розміри під час будівництва: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Відображати довжини та різниці висот в підказках в процесі будівництва. -STR_CONFIG_SETTING_LIVERIES :Індивідуальні кольорові схеми: {STRING} +STR_CONFIG_SETTING_LIVERIES :Показувати кольорові схеми видів транспорту: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Використовувати індивідуальні кольорові схеми різних типів транспорту замість загальної кольорової схеми компанії. STR_CONFIG_SETTING_LIVERIES_NONE :не використовувати STR_CONFIG_SETTING_LIVERIES_OWN :тільки для своєї компанії @@ -1422,30 +1488,28 @@ STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Налашту STR_CONFIG_SETTING_OSK_ACTIVATION :Екранна клавіатура: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Виберіть спосіб відкриття екранної клавіатури для введення тексту у поля тільки за допомогою вказівного пристрою. Це призначено для невеликих пристроїв без фактичної клавіатури STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Вимкнено -STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Подвійний клік -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Одиночний клік (коли виділено) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Одиночний клік (негайно) - -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Емуляція правого кліку: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Задає спосіб емуляції правого кліку -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+клік -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клік +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Подвійний клац мишою +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Одиночний клац мишою (коли виділено) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Одиночний клац мишою (негайно) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Емуляція правого клацу миші: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Задає спосіб емуляції правого клацу миші +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда+клац мишою +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клац мишою STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :не емулювати -STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Прокрутка по лівому кліку: {STRING} +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Прокрутка по лівому клацу миші: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Дозволяє "тягати" карту утримуючи ліву кнопку миші, що дає можливість використовувати сенсорні екрани природнім способом.. +STR_CONFIG_SETTING_AUTOSAVE :Автозбереження: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Оберіть проміжок між автоматичними збереженнями гри + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Формат дати в іменах файлів збереження: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Формат дати в іменах файлів збереження STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :довгий (31 Гру 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :короткий (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Стандартна палітра файлів NewGRF: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Налаштування палітри для файлів NewGRF, в яких вона не вказана. -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Палітра DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Палітра Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Пауза на початку нової гри: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :При включенні на початку гри автоматично вмикається пауза. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Дозволити в режимі паузи: {STRING} @@ -1454,7 +1518,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ніяких д STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Всі дії, крім будівництва STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Всі дії, крім зміни ландшафту STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Всі дії -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Відкривати розширенний список транспорту: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Використовувати групи у списку транспорту: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Вмикає використання розширенного інтерфейсу списків транспорту, що має інструменти групування транспортних засобів. STR_CONFIG_SETTING_LOADING_INDICATORS :Показувати індикатори завантаження: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Вмикає\вимикає відображення індикатора процесу завантаження над транспортними засобами. @@ -1469,7 +1533,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тип колі STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :перший доступний STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :останній доступний STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :найбільш вживаний -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Показувати зарезервовану колію: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Показувати зарезервований шлях для колій: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Вмикає відображення зарезервованної потягом ділянки колії, що може допомогти при наявності проблем з маршрутними сигналами. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Залишати інструменти активними після використання: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Залишати інструменти будівництва активними після використання. @@ -1481,9 +1545,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Відтвор STR_CONFIG_SETTING_SOUND_NEWS :Газета: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Відтворювати звуковий ефект при відображенні газет STR_CONFIG_SETTING_SOUND_NEW_YEAR :Кінець року: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Грати звуковий ефект в кінці року при підведенні результатів діяльності компанії протягом року в порівнянні з попереднім роком +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Грати звуковий ефект у кінці року при підбитті результатів річної діяльності компанії порівняно з попереднім роком STR_CONFIG_SETTING_SOUND_CONFIRM :Будівництво: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Відтворювати звуковий ефект при успішному будівництві споруд або інших дій +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Відтворювати звуковий ефект при успішному будівництві споруд або інших діях STR_CONFIG_SETTING_SOUND_CLICK :Натискання кнопок: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Звуковий сигнал при натисканні кнопок STR_CONFIG_SETTING_SOUND_DISASTER :Катастрофи/аварії: {STRING} @@ -1491,7 +1555,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Відтвор STR_CONFIG_SETTING_SOUND_VEHICLE :Транспортні засоби: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Відтворювати звукові ефекти транспортних засобів STR_CONFIG_SETTING_SOUND_AMBIENT :Навколишнє середовище: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Відтворювати звуки навколишнього середовища ландшафту, промисловості та міст +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Відтворювати звуки довкілля: ландшафту, промисловості та міст STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Заборонити будівництво інфраструктури, для якої немає відповідного транспорту: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :При включенні будівництво тої чи іншої інфраструктури можливе тільки при доступності відповідних транспортних засобів. Це запобігає марним витратам часу та коштів на інфраструктуру, що не використовується. @@ -1528,7 +1592,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Інтерва STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Налаштування способу визначення необхідності проведення техогляду: через вказаний проміжок часу після попереднього техогляду чи коли поточна надійність транспортного засобу стане нижчою від максимальної його надійності на вказаний процент. STR_CONFIG_SETTING_SERVINT_TRAINS :Інтервал техогляду залізничного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Налаштування інтервалу техогляду для нового залізничного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P ень ні нів}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 "ень" "ні" "нів"}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Відключено STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Інтервал техогляду дорожнього транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Налаштування інтервалу техогляду для нового дорожнього транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). @@ -1548,7 +1612,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Показат STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Прибуття першого транспорту на станцію конкурента: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Показати газету коли перший транспортний засіб прибуває на нову станцію конкурента STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Нещасні випадки / стихійні лиха: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Показати газету коли стається аварія або катастрофа +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Показати газету при аварії або катастрофі STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Інформація щодо компанії: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Показати газету коли відкривається нова компанія, або коли компанії ризикують збанкрутувати STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Відкриття підприємств: {STRING} @@ -1568,7 +1632,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Показат STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новий транспорт: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Показати газету, коли стає доступним новий засіб пересування STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Зміни в списку грузів, що приймаються: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Показати повідомлення про зміну прийняття деяких вантажів станціями +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Показати повідомлення, якщо станція змінює приймані типи вантажів STR_CONFIG_SETTING_NEWS_SUBSIDIES :Субсидії: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Показати газети про події, пов'язані з субсидіями STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Загальна інформація: {STRING} @@ -1591,18 +1655,18 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При прот STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Налаштування відстані між сигналами при будівництві сигналів протягуванням. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клітин{P ку ки ок} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :При протягуванні дотримуватись фіксованої дистанціі між сигналами: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Налаштування способу встановлення сигналів при протягуванні з утриманням Ctrl. Якщо опція відключена, то сигнали обов'язково встановлюються на кінцях мостів та тунелів. При включенні опції заданий інтервал встановлювання сигналів витримується більш строго (з метою вирівнювання сигналів на паралельних коліях). +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Вибрати спосіб встановлення сигналів при протягуванні мишою з утриманням Ctrl. Якщо опція вимкнена, то сигнали встановлюються навколо мостів та тунелів аби не було великих відрізків шляху без сигналів. Якщо увімкнено, заданий інтервал встановлювання сигналів витримується більш строго - через кожні n клітинок (веде до легшого вирівнювання сигналів на паралельних коліях) STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Автоматично будувати семафори до {STRING} року STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Налаштування року впровадження світлофорів замість семафорів. До цього року будуть встановлюватись лише семафори. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Використовувати меню сигналів: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :При включенні відображає допоміжну панель інструментів для вибору типу сигналу при їх встановленні. При відключенні доступна лише заміна типу вже встановлених сигналів за допомогою Ctrl+кліка. +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Показувати вікно для вибору типу сигналів для будівництва, замість безвіконної зміни сигнал-типу з Ctrl+клацанням мишою на побудованих сигналах STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Тип сигналів за умовчанням: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Тип сигналу, що встановлюється за замовчанням. STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :блок-сигнали STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :маршрутні STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :односторонні маршрутні STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Сигнали, доступні при циклічному переборі: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Налаштування типів сигналів, що доступні при ротації за допомогою Ctrl+кліка. +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Налаштування типу сигналів, що доступні при зміні типу за допомогою Ctrl+клацання мишою STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :тільки блок-сигнали STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :тільки маршрутні STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :всі @@ -1619,7 +1683,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Дозволя STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Міська влада може будувати переїзди: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Дозволяє містам самостійно будувати залізничні переїзди. STR_CONFIG_SETTING_NOISE_LEVEL :Міська влада може контролювати рівень шуму аеропортів: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При відключенні дозволяється будувати два аеропорти на місто. Інакше кількість аеропортів буде залежати від допустимого рівня шуму, що в свою чергу залежить від населення міста, розміру аеропорта та відстані між аеропортами. +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При відключенні дозволяється будувати два аеропорти у кожному місті. При увімкненні кількість аеропортів залежить від допустимого рівня шуму, що в свою чергу залежить від кількості населення міста, розміру аеропорта та відстані STR_CONFIG_SETTING_TOWN_FOUNDING :Засновування нових міст під час гри: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Дозволяє заснування нових міст гравцями під час гри. STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Заборонено @@ -1667,35 +1731,90 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 з {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Жодного STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Множник розміру мегаполісів: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Середньостатистичне відношення початкового розміру мегаполісів порівняно зі звичайними містами. -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Прибрати безглузді елементи доріг під час їх будівництва: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Дозволяє видаляти тупіки на дорогах міста під час рекострукції доріг. - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Інтерфейс -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Будівництво +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Оновлювати графік доставки раз на {STRING}{NBSP}д{P 0:2 "ень" "ні" "нів"} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Час між послідовними обрахунками зв'язків на графіку. Кожен обрахунок здійснюється для одного параметра графіку. Тобто значення Х у налаштуваннях не означає, що графік оновлюється кожні Х днів. Лише деякі складові. При виборі параметру "часто" ЦП потрібно більше часу для обрахунку. При виборі параметру "рідко" наступний обрахунок почнеться після запуску доставки за новим маршрутом. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Обраховувати графік доставки раз на {STRING}{NBSP}д{P 0:2 "ень" "ні" "нів"} +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Час, який займає переобчислення кожного зв'язку з компонентом графу. При запуску переобчислення створюється потік, якому дозволяється працювати декілька днів. Чим менше ви поставите це, тим більш можливо, що потік не буде завершено вчасно. Тоді гра зупиниться на час "лагу". Чим довше ви поставите, тим довше займе розподіл доставки при зміні маршрутів. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ручний +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :асиметричний +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :симетричний +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Режим розподілу для пасажирів: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :В "симетричному" режимі від станції A до станції B відправлятиметься приблизно стільки ж пасажирів, як від B до A. В "асиметричному" режимі дозволяється відправляти довільну кількість пасажирів в обох напрямках. Ручний режим означає, що розподіл пасажирів не здійснюватиметься автоматично. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Режим розподілу для пошти: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :В "симетричному" режимі від станції A до станції B надсилатиметься приблизно стільки ж пошти, як від B до A. В "асиметричному" режимі дозволяється надсилати довільну кількість пошти в обох напрямках. Ручний режим означає, що розподіл пошти не здійснюватиметься автоматично. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Режим розподілу для броньованого транспорту: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :БРОНЬОВАНИЙ клас вантажу містить: коштовності — в помірному ландшафті, діаманти — в субтропічному чи золото — в субарктичному. NewGRF може змінювати це. В "симетричному" режимі від станції A до станції B надсилатиметься приблизно стільки ж вантажів, як від B до A. В "асиметричному" режимі дозволяється надсилати довільну кількість вантажів в обох напрямках. "Ручний" режим означає, що розподіл цих вантажів не здійснюватиметься автоматично. Рекомендується встановити "асиметричний" або "ручний" режим, якщо гра відбувається в субарктичному ландшафті, тому що банки не надсилають золото назад до шахт. В помірному або субтропічному ландшафті можна також вибрати "симетричний" режим, оскільки банки будуть надсилають коштовності назад до оригінального банку у вигляді вантажу з якимись цінностями. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Режим розподілу для інших видів вантажу: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Асиметричний» означає можливість відправки довільної кількості вантажу в будь-якому напрямку. «Ручний» означає, неавтоматичний розподіл для цих вантажів. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Точність розподілу: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чим більше значення буде встановлено, тим більше часу процесора буде витрачатися на розрахунок графа зв’язків. Якщо це буде тривати довго, ви можете зауважити гальмування. Якщо встановити тут мале значення, розподіл буде неточним і вантаж, можливо, надсилатиметься не в ті місця, куди ви очікуєте. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Сила впливу відстані на попит: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Якщо це значення встановити більшим за 0, відстань між відправною станцією A якогось вантажу та приймаючою станцією B впливатиме на кількість вантажу, який надсилатиметься від A до B. Чим більша відстань від A до B, тим менше вантажу надсилатиметься. Чим більшим буде це значення, тим менше вантажу буде надсилатися до дальніх станцій і тим більше — до ближніх. +STR_CONFIG_SETTING_DEMAND_SIZE :Кількість вантажу, що повертається у симетричному режимі: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Встановивши це на менше ніж 100% можна зробити симетричну доставку схожою на асиметричну. Менше вантажу буде примусово повертатися назад, якщо певна його кількість надсилається на станцію. При 0% - симетрична доставка поводить себе зовсім як асиметрична. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Рівень заповнення коротких маршрутів перед переходом до містких: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Часто між двома заданими станціями є більше, ніж один шлях. Cargodist заповнить спочатку найкоротший маршрут, потім другий після найкоротшого і т. д. Рівень заповнення визначається за допомогою оцінки місткості та запланованого використання. Якщо всі маршрути буде заповнено, а джерело вантажу не вичерпається, алгоритм почне переповнювати маршрути, починаючи з наймісткіших. Ця настройка дозволяє задати рівень заповнення в процентах, якого треба досягнути на першому маршруті перед тим, як перейти до заповнення наступного. Варто встановити цей рівень меншим за 100%, щоб уникнути переповнення станцій в разі переоцінки місткості маршруту. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Одиниці швидкості: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Показувати швидкості в таких одиницях +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Імперські (милі/год) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Метричні (км/год) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :СІ (м/с) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Одиниці потужності: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Показувати потужності в таких одиницях: +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Імперські (к. с.) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Метричні (к. с.) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :СІ (кВт) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Одиниці маси: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Якщо вага відображається на інтерфейсі: показувати її в обраній системі виміру +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Імперські (короткі тонни) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Метричні (т) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :СІ (кг) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Одиниці об’єму: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Якщо об'єм відображається на інтерфейсі: показувати його в обраній системі виміру +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Імперські (галони) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Метричні (л) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (м³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Одиниці тяглової сили: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Якщо тяглова сила відображається на інтерфейсі: показувати її в обраній одиниці виміру +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Імперські (фунт-сили) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Метричні (кгс) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :СІ (кН) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Одиниці висоти: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Якщо висоти відображаються на інтерфейсі: показувати в обраній одиниці виміру +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Імперські (фути) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Метричні (м) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СІ (м) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Локалізація +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графіки +STR_CONFIG_SETTING_SOUND :{ORANGE}Звук +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Інтерфейс +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Загальні +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Точки огляду +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Будівництво +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Новини / Поради +STR_CONFIG_SETTING_COMPANY :{ORANGE}Компанія +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Облік STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт -STR_CONFIG_SETTING_STATIONS :{ORANGE}Станції -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Економіка +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Фізика +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрути +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Обмеження +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Катастрофи +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Створення світу +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Довкілля +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Органи влади +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Міста +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Підприємства +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Розподіл вантажів STR_CONFIG_SETTING_AI :{ORANGE}Конкуренти -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Параметри відображення -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Параметри взаємодії -STR_CONFIG_SETTING_SOUND :{ORANGE}Звукові ефекти -STR_CONFIG_SETTING_NEWS :{ORANGE}Новини та повідомлення -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сигнали -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Обробка вантажів STR_CONFIG_SETTING_AI_NPC :{ORANGE}Віртуальні гравці -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автозаміна -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Техогляд -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрути -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Поїзди -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Міста -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Підприємства STR_CONFIG_SETTING_PATHFINDER_OPF :стандартний STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1730,6 +1849,7 @@ STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ба STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... базовий набір звуків '{STRING}' не знайдено STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... базовий набір музики '{STRING}' не знайдено STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Не вистачає пам'яті +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Не вдалося розподілити {BYTES} спрайт-кешу. Спрайт кеш було зменшено до {BYTES}. Це зменшить швидкість роботи OpenTTD. Аби зменшити використання пам'яті спробуйте заборонити 32-бітну графіку і/або ступені масшатабування екрану # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1743,28 +1863,28 @@ STR_INTRO_MULTIPLAYER :{BLACK}Мере STR_INTRO_GAME_OPTIONS :{BLACK}Налаштування гри STR_INTRO_HIGHSCORE :{BLACK}Таблиця рекордів -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Розширені налаштування +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Налаштування STR_INTRO_NEWGRF_SETTINGS :{BLACK}Налаштування NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Додатковий контент STR_INTRO_SCRIPT_SETTINGS :{BLACK}Налаштування AI / GS STR_INTRO_QUIT :{BLACK}Вихід -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Почати нову гру. Ctrl+клік пропускає конфігурацію карти +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Почати нову гру. Ctrl+клац мишою пропускає конфігурацію карти STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Продовжити збережену гру STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Почати нову гру з використанням готової карти висот (рельєфу) STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Почати нову гру з використанням готового сценарію STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Створити свій сценарій STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Почати мережеву гру -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Вибрати 'помірний' клімат -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Вибрати 'субарктичний' клімат -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Вибрати 'тропічний' клімат -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Вибрати 'іграшковий' варіант +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Вибрати 'помірний' ландшафт +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Вибрати 'субарктичний' ландшафт +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Вибрати 'тропічний' ландшафт +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Вибрати 'іграшковий' ландшафт STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Показати налаштування гри STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показати таблицю рекордів -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Показати розширені налаштування -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показати настройки NewGRF +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Налаштування відображення +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показати налаштування NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Перевірити доступний для завантаження додатковий контент STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Показати налаштування AI / Ігрового Скрипта STR_INTRO_TOOLTIP_QUIT :{BLACK}Вийти з OpenTTD @@ -1790,8 +1910,8 @@ STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Залишити гру -STR_ABANDON_GAME_QUERY :{YELLOW}Ви дійсно хочете залишити гру? +STR_ABANDON_GAME_CAPTION :{WHITE}Покинути гру +STR_ABANDON_GAME_QUERY :{YELLOW}Ви дійсно хочете покинути гру? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєте вийти з цього сценарію? # Cheat window @@ -1803,6 +1923,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Гра STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Супербульдозер (руйнує все): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Тунелі перетинаються: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Реактивні літаки не будуть (часто) розбиватися в малих аеропортах: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Змінити максимальну висоту карти: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Змінити максимальну висоту гір на карті STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Помірний ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Субарктичний ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Субтропічний ландшафт @@ -1819,9 +1941,9 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Пока STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Показати фарбування автотранспорта STR_LIVERY_SHIP_TOOLTIP :{BLACK}Показати фарбування кораблів STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Показати фарбування авіації -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Оберіть основний колір для обраної схеми. Ctrl+клік встановить обраний колір для всіх схем. -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Оберіть другорядний колір для обраної схеми. Ctrl+клік встановить обраний колір для всіх схем. -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Оберіть кольорову схему для зміни, чи декілька з Ctrl+клік. Клікніть на прямокутнику, щоб ввімкнути/вимкнути використання схем +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Оберіть основний колір для обраної схеми. Ctrl+клац мишою встановить обраний колір для всіх схем +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Оберіть другорядний колір для обраної схеми. Ctrl+клац мишою встановить обраний колір для всіх схем +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Оберіть кольорову схему для зміни, чи декілька з Ctrl+клац мишою. Клацніть на прямокутнику, щоб ввімкнути/вимкнути використання схем STR_LIVERY_DEFAULT :Стандартний колір STR_LIVERY_STEAM :Паровоз @@ -1851,6 +1973,7 @@ STR_LIVERY_FREIGHT_TRAM :Вантажн STR_FACE_CAPTION :{WHITE}Вибір обличчя STR_FACE_CANCEL_TOOLTIP :{BLACK}Відмінити вибір нового обличчя STR_FACE_OK_TOOLTIP :{BLACK}Підтвердити вибір нового обличчя +STR_FACE_RANDOM :{BLACK}Випадково STR_FACE_MALE_BUTTON :{BLACK}Чоловік STR_FACE_MALE_TOOLTIP :{BLACK}Вибрати чоловіче обличчя @@ -1906,6 +2029,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Змін # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Мережева гра +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Інтернет +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Вибір між рекламованою (інтернет) і не рекламованою (локальна мережа, LAN) грою +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ні +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Так STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ім'я гравця: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ім'я, за яким тебе розпізнаватимуть інші гравці @@ -1916,7 +2043,7 @@ STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Кліє STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Клієнти в мережі/макс.клієнтів{}Компанії в мережі/макс.компаній STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Розмір карти -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Розмір карти гри{}Клікніть для сортування за районом +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Розмір карти гри{}Клацніть мишою для сортування за районом STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Дата STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Поточна дата STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Роки @@ -1964,6 +2091,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Назв STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Встановити пароль STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Захистіть вашу гру паролем, якщо не бажаєте загального доступу +STR_NETWORK_START_SERVER_UNADVERTISED :Ні +STR_NETWORK_START_SERVER_ADVERTISED :Так STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клієнт{P "" а ів} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клієнтів: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Виберіть максимальну кількість клієнтів. Не всі слоти мають бути зайняті @@ -2038,7 +2167,7 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Гра STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Нова компанія STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Створити нову компанію -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Гра глядачем +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Спостерігати гру STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Спостерігати за грою як глядач STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Приєднатись до компанії STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Допомогти керувати цією компанією @@ -2084,6 +2213,7 @@ STR_NETWORK_CLIENT :Клієнт STR_NETWORK_SPECTATORS :Спостерігачі STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введіть суму грошей, яку Ви хочете віддати +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Глядач # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не запам'ятовувати введений пароль @@ -2133,7 +2263,7 @@ STR_NETWORK_ERROR_CHEATER :{WHITE}На ц STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Ви посилали забагато команд серверу STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Ви занадто довго вводили пароль STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ви дуже довго приєднувалися -STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Ви дуже довго завантажували мапу +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Ви дуже довго завантажували карту STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Ви дуже довго приєднувалися до серверу ############ Leave those lines in this order!! @@ -2155,8 +2285,8 @@ STR_NETWORK_ERROR_CLIENT_SERVER_FULL :сервер п STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :посилав забагато команд STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :пароль не отримано за відведений час STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :час вийшов -STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :мапа дуже довго завантажувалась -STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :мапа дуже довго оброблювалась +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :карта дуже довго завантажувалась +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :карта дуже довго оброблювалась ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Можлива втрата з'єднання @@ -2195,13 +2325,17 @@ STR_CONTENT_TYPE_CAPTION :{BLACK}Тип STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Тип вмісту STR_CONTENT_NAME_CAPTION :{BLACK}Назва STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Назва вмісту -STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Клікніть на рядку, щоб побачити деталі{}Клікніть позначку, щоб обрати його для завантаження +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Клацніть мишою на рядку, щоб побачити деталі{}Клацніть позначку, щоб обрати його для завантаження STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Вибрати всі STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Позначити для завантаження весь вміст STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Вибрати оновлення STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Позначити весь вміст, що є оновленням існуючого, для завантаження STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Зняти позначки STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Не завантажувати нічого +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Шукати на сторонніх веб-сайтах +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Шукати додатки, недоступні на серверах OpenTTD на сторонніх веб-сайтах +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ви виходите з OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Умови використання додатків з зовнішніх веб-сайтів можуть відрізнятися.{}Інструкції по встановленню даних додатків у OpenTTD шукайте на відповідних веб-сайтах.{}Продовжити? STR_CONTENT_FILTER_TITLE :{BLACK}Фільтр за назвою: STR_CONTENT_OPEN_URL :{BLACK}Відвідати вебсайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Відвітати вебсайт цього контенту @@ -2272,8 +2406,18 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Змін STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Зробити об'єкти невидимими, а не прозорими # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Легенда вантажопотоку +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Усе +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Немає +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Виберіть компанії для відображення # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}не використовується +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}заповнений +STR_LINKGRAPH_LEGEND_OVERLOADED :{G=m}{TINY_FONT}{BLACK}перевантажений +STR_LINKGRAPH_LEGEND_OVERLOADED.r :{G=m}{TINY_FONT}{BLACK}перевантаженого +STR_LINKGRAPH_LEGEND_OVERLOADED.d :{G=m}{TINY_FONT}{BLACK}перевантаженому +STR_LINKGRAPH_LEGEND_OVERLOADED.z :{G=m}{TINY_FONT}{BLACK}перевантажений # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Підсвічення зони покриття @@ -2302,7 +2446,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Буду STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Будувати залізничне депо (для купівлі та обслуговування поїздів). Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Перетворити колію на точку маршруту. Ctrl дозволяє об'єднання точок маршруту. Утримуйте Shift для показу очікуваних витрат STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Будувати станцію. Ctrl дозволяє об'єднання станцій. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати сигнали. Ctrl переключає семафори/світлові сигнали{}Протяжка будує сигнали вздовж прямої ділянки рейок. Ctrl будує сигнали до наступної розв'язки{}Ctrl+клік перемикає показ вікна вибору сигналів. Утримуйте Shift для показу витрат на будівництво +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати залізничні сигнали. Ctrl переключає семафори/світлові сигнали{}Протяжка мишою будує сигнали вздовж прямої ділянки рейок. Ctrl будує сигнали до наступної розв'язки чи сигналу{}Ctrl+клац мишою вмикає показ вікна вибору сигналів. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати міст. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати тунель. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будувати/демонтувати колію, сигнали, точки маршруту і станції. Утримання Ctrl також демонтує колію з точок маршрутів і станцій @@ -2577,6 +2721,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Приймає: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ліміт швидкості залізниці: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ліміт швидкості авто: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Каміння @@ -2673,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-2013 команда OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 команда OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру @@ -2692,6 +2837,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Збер STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Зберегти поточну гру, використовуючи вибране ім'я файлу STR_SAVELOAD_LOAD_BUTTON :{BLACK}Завантажити STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Завантажити обрану гру +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Завантажити вибрану карту висот STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Деталі гри STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Інформація відсутня STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2707,13 +2853,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Міста: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кількість виробництв: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Максимальна висота карти +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Збільшити максимальну висоту гір на карті на одиницю +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Зменшити максимальну висоту гір на карті на одиницю STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Висота лінії снігу: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Підвищити лінію снігу STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Понизити лінію снігу -STR_MAPGEN_RANDOM_SEED :{BLACK}Випадкове число: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Клік для вводу значення -STR_MAPGEN_RANDOM :{BLACK}Випадково -STR_MAPGEN_RANDOM_HELP :{BLACK}Змінити початкове значення для генератора STR_MAPGEN_LAND_GENERATOR :{BLACK}Ландшафт: STR_MAPGEN_TREE_PLACER :{BLACK}Насадження дерев: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип ландшафту: @@ -2740,7 +2885,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назв STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Розмір: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Введіть випадкове число +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Змінити максимальну висоту карти STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Змінити висоту лінії снігу STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Змінити рік початку гри @@ -2779,12 +2924,12 @@ STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Акти STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Неактивні файли NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Обрати набір: STR_NEWGRF_FILTER_TITLE :{ORANGE}Фільтр за строкою: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Завантажити обрані настройки -STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Записати настройки -STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Записати поточний список як настройки +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Завантажити обрані налаштування +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Записати налаштування +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Записати поточний список як профіль налаштування STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Введіть назву настройок -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Видалити настройки -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Видалити обрані настройки +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Видалити налаштування +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Видалити обрані налаштування STR_NEWGRF_SETTINGS_ADD :{BLACK}Додати STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Додати вибраний NewGRF файл до Вашої конфігурації STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Пересканувати файли @@ -2795,6 +2940,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Вище STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Перемістити вибрані файли вверх по списку STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Нижче STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Перемістити вибрані файли вниз по списку +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Оновити +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Оновити новішими версіями файли встановлених NewGRF'ів STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Список встановлених файлів NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Встановлення параметрів @@ -2819,6 +2966,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Таких STR_NEWGRF_SETTINGS_DISABLED :{RED}Вимкнено STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Несумісне з поточною версією OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Зберегти шаблон +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Список доступних шаблонів, скопіюйте один для збереження імені нижче +STR_SAVE_PRESET_TITLE :{BLACK}Введіть ім'я для шаблону +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Обране поточне ім'я для збереження в шаблоні +STR_SAVE_PRESET_CANCEL :{BLACK}Скасувати +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не змінювати шаблон +STR_SAVE_PRESET_SAVE :{BLACK}Зберегти +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Зберегти шаблон для поточного обраного імені + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Змінити параметри NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрити @@ -2842,14 +2999,17 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Пара # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Вирівнювання спрайту {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступний спрайт -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Йти до наступного нормального спрайту, пропускаючи будь-які псевдоспрайти, спрайти зі зміненими кольорами та шрифтові спрайти, а також обгортки (wrap) навколо на початку +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Йти до наступного нормального спрайту, пропускаючи будь-які псевдо/перемальовані/шрифтові спрайти і загортаючи навколо (wrap) починаючи з останнього спрайту закінчуючи першим STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Йти до спрайту STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Йти до заданого спрайту. Якщо він не є нормальним, йти до наступного нормального STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Попередній спрайт -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Повернутися до попереднього нормального спрайту, пропускаючи будь-які псевдоспрайти, спрайти зі зміненими кольорами та шрифтові спрайти, а також обгортки (wrap) навколо на початку +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Повернутися до попереднього нормального спрайту, пропускаючи будь-які псевдо/перемальовані/шрифтові спрайти і обгортаючи (wrap) навколо починаючи з першого спрайту і закінчуючи останнім STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Відображення обраного спрайту (вирівнювання ігнорується) STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Рухайте спрайт навколо, змінюючи його зміщення за X та Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Зміщення за X: {NUM}, Зміщення за Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Відновити відносні +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Відновити поточні зсуви (відносні) +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Зсув по осі X: {NUM}, Зсув по осі Y: {NUM} (Абсолютно) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Зсув по осі X: {NUM}, Зсув по осі Y: {NUM} (Відносно) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Вибрати спрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Оберіть будь-який спрайт на екрані @@ -2906,6 +3066,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Відсу STR_NEWGRF_BROKEN :{WHITE}Поведінка NewGRF '{0:STRING}' може спричинити розсинхронізацію та/або аварійне завершення STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Це змінило стан локомотиву '{1:ENGINE}', коли він не у депо STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Це змінило довжину транспорту для '{1:ENGINE}', якщо він не в депо +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Було змінено вантажомісткість транспорту для '{1:ENGINE}' поза гаражом чи рембазою STR_BROKEN_VEHICLE_LENGTH :{WHITE}Потяг '{VEHICLE}', який належить '{COMPANY}', має неправильну довжину. Можливо, це спричинено проблемами з NewGRFs. Гра може розсинхронізуватись або аварійно завершитись STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' надає невірну інформацію @@ -2920,6 +3081,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <нев STR_NEWGRF_INVALID_ENGINE :<невірна модель транспорту> STR_NEWGRF_INVALID_INDUSTRYTYPE :<невірне виробництво> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<невірний транспорт> + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Шукаю NewGRF'и STR_NEWGRF_SCAN_MESSAGE :{BLACK}Шукаю NewGRF'и. Якщо їх багато, це може зайняти деякий час... @@ -2942,7 +3106,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введ STR_TOWN_DIRECTORY_CAPTION :{WHITE}Міста STR_TOWN_DIRECTORY_NONE :{ORANGE}- немає - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на місто +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на місто STR_TOWN_POPULATION :{BLACK}Населення світу: {COMMA} # Town view window @@ -2957,11 +3121,11 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} доставлено STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (потрібно ще) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (доставлено) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Місто зростає кожен {ORANGE}{COMMA}{BLACK} день -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Місто зростає кожен {ORANGE}{COMMA}{BLACK} день (профінансовано) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Місто зростає раз на {ORANGE}{COMMA}{BLACK} д{P ень ні нів} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Місто зростає раз на {ORANGE}{COMMA}{BLACK}{NBSP}д{P ень ні нів} (профінансовано) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Місто {RED}не{BLACK} зростає STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Ліміт шуму в місті: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Показати місто у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на місто +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Показати місто у центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на місто STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Місцева влада STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Інформація про місцеву владу STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Змінити назву міста @@ -3001,11 +3165,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Куп STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Підкупити місцеву владу для збільшення вашого рейтингу, при викритті загрожує суворим покаранням.{}Вартість: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}Цілі {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Глобальні цілі: STR_GOALS_GLOBAL_TITLE :{BLACK}Глобальні цілі: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- нема - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Неможливо застосувати - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Цілі компанії: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клік мишкою на цілі (меті) відобразить по центру виробництва/місто/клітинку у головному вікні. Ctrl+клік відкриє міні-вікно +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клац мишою на цілі (меті) відобразить по центру виробництва/місто/клітинку у головному вікні. Ctrl+клац мишою відкриє міні-вікно # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Питання @@ -3013,7 +3182,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Інформа STR_GOAL_QUESTION_CAPTION_WARNING :Попередження STR_GOAL_QUESTION_CAPTION_ERROR :Помилка -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Відмінити STR_GOAL_QUESTION_BUTTON_OK :Гаразд STR_GOAL_QUESTION_BUTTON_NO :Ні @@ -3032,6 +3201,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Перезап STR_GOAL_QUESTION_BUTTON_POSTPONE :Відкласти STR_GOAL_QUESTION_BUTTON_SURRENDER :Здатися STR_GOAL_QUESTION_BUTTON_CLOSE :Закрити +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсидії @@ -3040,12 +3210,22 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}Пер STR_SUBSIDIES_NONE :{ORANGE}- немає - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Призначені субсидії: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}{YELLOW} ({COMPANY}{YELLOW}, по {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть на субсидії, щоб показати підприємство/місто у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на підприємство/місто +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть на субсидії, щоб показати підприємство/місто у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на підприємство/місто # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Історія {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Світова історія +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Стор. {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перейти до сторінки, вибраної в цьому списку. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Попередня сторінка +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}На попередню сторінку +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Далі +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Наступна сторінка +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Невірне посилання на завдання # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Утримання Ctrl відкриває нове вікно з видом на станцію +STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на станцію STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте Ctrl для вибору декількох пунктів STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} станці{P я ї й} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -3057,9 +3237,9 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Звід # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чекає: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} з {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} зарезервовано для завантаження) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Приймає STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Показати список приймання вантажів @@ -3070,8 +3250,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції - - +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Щомісячна пропозиція і місцевий рейтинг: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Групувати по +STR_STATION_VIEW_WAITING_STATION :Станція: Очікується +STR_STATION_VIEW_WAITING_AMOUNT :Кількість: Очікується +STR_STATION_VIEW_PLANNED_STATION :Станція: Заплановано +STR_STATION_VIEW_PLANNED_AMOUNT :Кількість: Заплановано +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} з {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} через {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} до {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} з невідомої станції +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} до будь-якої станції +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} через будь-яку станцію +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} з цієї станції +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} зупиняється на цій станції +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} до цієї станції +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} без зупинки + +STR_STATION_VIEW_GROUP_S_V_D :Джерело-Через-Місце призначення +STR_STATION_VIEW_GROUP_S_D_V :Джерело-Місце призначення-Через +STR_STATION_VIEW_GROUP_V_S_D :Через-Джерело-Місце призначення +STR_STATION_VIEW_GROUP_V_D_S :Через-Місце призначення-Джерело +STR_STATION_VIEW_GROUP_D_S_V :Місце призначення-Джерело-Через +STR_STATION_VIEW_GROUP_D_V_S :Місце призначення-Через-Джерело ############ range for rating starts STR_CARGO_RATING_APPALLING :жахливо @@ -3084,7 +3287,7 @@ STR_CARGO_RATING_EXCELLENT :відмінн STR_CARGO_RATING_OUTSTANDING :найкраще ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показати станцію в центрі екрану. Утримання Ctrl відкриє нове вікно з видом на станцію +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показати станцію в центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на станцію STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Перейменувати станцію STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Показати всі поїзди, які заходять на цю станцію @@ -3099,15 +3302,15 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Забо # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показати точку маршруту в центрі єкрану. Ctrl+клік відкриє нове вікно у місці розташування точки маршруту +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показати точку маршруту в центрі екрану. Ctrl+клац мишою відкриє нове вікно у місці розташування точки маршруту STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Перейменувати точку маршруту -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показати буй в центрі екрану. Ctrl+клік відкриє нове вікно у місці розташування буя +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показати буй в центрі екрану. Ctrl+клац мишою відкриє нове вікно у місці розташування буя STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Перейменувати буй STR_EDIT_WAYPOINT_NAME :{WHITE}Перейменуйте точку маршруту # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} - фінанси {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}Фінанси {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Витрати/доходи STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Будівництво @@ -3131,9 +3334,9 @@ STR_FINANCES_LOAN_TITLE :{WHITE}Пози STR_FINANCES_MAX_LOAN :{WHITE}Макс. позика: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Позичити {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Збільшити розмір позики. Ctrl+клік позичає якнайбільше +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Збільшити розмір позики. Ctrl+клац мишою позичає якнайбільше STR_FINANCES_REPAY_BUTTON :{BLACK}Повернути {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Повернути частину позики. Ctrl+клік повертає якнайбільше +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Повернути частину позики. Ctrl+клац мишою повертає якнайбільше STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Інфраструктура # Company view @@ -3206,14 +3409,15 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- не STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Назви підприємств - клікніть на назву, щоб показати підприємство у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на підприємство +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Назви підприємств - клацніть мишою на назву, щоб показати підприємство у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на підприємство # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Вироблено за місяць: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% перевезено) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показати підприємство у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на підприємство +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показати підприємство у центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на підприємство STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Обсяг виробництва: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Підприємство оголосило про близьке закриття! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z} @@ -3237,7 +3441,7 @@ STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} кораб{P ель лі лів} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} літак{P "" и ів} -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Поїзди - клікніть на поїзді для детальної інформації +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Поїзди - клацніть на поїзд для детальної інформації STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Авто - натисніть на авто для інформації STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Кораблі - натисніть для інформації STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Літаки - натисніть на літак для інформації @@ -3276,11 +3480,14 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Незгруп STR_GROUP_DEFAULT_SHIPS :Незгруповані кораблі STR_GROUP_DEFAULT_AIRCRAFTS :Незгруповані літаки -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Групи - клікніть на групі, щоб побачити список транспорту цієї групи -STR_GROUP_CREATE_TOOLTIP :{BLACK}Клікніть, щоб створити групу +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Групи - клацніть мишою на групі, щоб побачити список транспорту цієї групи. Перетягуйте групи, щоб змінити ієрархію. +STR_GROUP_CREATE_TOOLTIP :{BLACK}Клацніть мишою, щоб створити групу STR_GROUP_DELETE_TOOLTIP :{BLACK}Стерти вибрану групу STR_GROUP_RENAME_TOOLTIP :{BLACK}Перейменувати вибрану групу -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клікніть, щоб захистити групу від глобальної автозаміни +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клацніть мишою, щоб захистити групу від глобальної автозаміни + +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Видалити групу +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Ви впевнені, що хочете видалити цю групу та всі вкладені групи? STR_GROUP_ADD_SHARED_VEHICLE :Додати спільний транспорт STR_GROUP_REMOVE_ALL_VEHICLES :Позбутися всього транспорту @@ -3315,14 +3522,14 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Міст STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Потужність: {GOLD}+{POWER}{BLACK} Вага: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Може бути переобладненим на: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Всі типи вантажів -STR_PURCHASE_INFO_ALL_BUT :Всі крім {CARGO_LIST} +STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальна тягова сила: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список поїздів - клікніть на поїзді для інформації -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список авто - натисніть на авто для інформації -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список вибору кораблів - натисніть на корабель для інформації -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список вибору літаків - натисніть на літак для інформації +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список поїздів. Клацніть на поїзд для інформації. Ctrl+клац мишою вимикає показ типу транспорту +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автомобілів. Клацніть на авто для отримання інформації. Ctrl+клац мишою вимикає показ типу транспорту +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблів. Клацніть на корабель для отримання інформації. Ctrl+клац мишою вимикає показ типу транспорту +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список літальних апаратів. Клацніть на літальному апараті для отримання інформації. Ctrl+клац мишою вимикає показ типу транспорту STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купити @@ -3344,7 +3551,22 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Пере STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Перейменувати тип корабля STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Перейменувати тип літака -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Перейменувати тип поїзду +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Сховати +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Сховати +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Сховати +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Сховати + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Показати +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Показати +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Показати +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Показати + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Увімкнути/вимкнути відображення типів залізничного транспорту +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Увімкнути/вимкнути відображення типів автотранспорту +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Увімкнути/вимкнути відображення типів кораблів +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Увімкнути/вимкнути відображення типів авіації + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Перейменувати тип поїзда STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Перейменувати тип авто STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Перейменувати тип корабля STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Перейменувати тип літака @@ -3397,15 +3619,15 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Клон STR_DEPOT_CLONE_SHIP :{BLACK}Клонувати STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Клонувати -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Купити копію поїзда з усіма вагонами. Натисніть на цю кнопку і потім на поїзд в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Купити копію поїзда, включно з усіма автомобілями. Натисніть на цю кнопку, а потім на поїзд в депо або ззовні. Ctrl+клац мишою дозволить поділитися спільними завданнями. Shift+клац мишою покаже орієнтовні витрати на придбання STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Купити копію авто. Натисніть на цю кнопку і потім на авто в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Купити копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Купити копію літака. Натисніть на цю кнопку і потім на літак в ангарі або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати залізничне депо у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на залізничне депо -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати гараж у центрі екрану. Утримання Ctrl вікдриває нове вікно з видом на гараж -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Показати док у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на док -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати ангар в центрі екрану. Утримання Ctrl відкриє нове вікно з видом на ангар +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати залізничне депо у центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на залізничне депо +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати гараж у центрі екрану. Ctrl+клац мишою вікдриває нове вікно з видом на гараж +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Показати док у центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на док +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати ангар в центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на ангар STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Отримати список усіх поїздів, що заходять до цього депо STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Отримати список усіх автомобілів, що заходять до цього депо @@ -3448,6 +3670,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Авто STR_REPLACE_VEHICLE_SHIP :Корабель STR_REPLACE_VEHICLE_AIRCRAFT :Літак +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Транспорт, що використовується +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Стовпчик з наявними транспортними засобами +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Доступний транспорт +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Стовпчик з транспортними засобами, доступними для заміни + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Виберіть транспорт для оновлення STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Виберіть новий транспорт, яким ви бажаєте замінити старий @@ -3479,10 +3706,10 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозв # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати поїзд у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати автомобіль у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Показати корабель у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати літак у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати поїзд у центрі екрану. Ctrl+клац мишою спричинить слідкування за ним у головному вікні +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати автомобіль у центрі екрану. Ctrl+клац мишою спричинить слідкування за ним у головному вікні +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Показати корабель у центрі екрану. Ctrl+клац мишою спричинить слідкування за ним у головному вікні +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати літак у центрі екрану. Ctrl+клац мишою спричинить слідкування за ним у головному вікні STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити поїзд у депо STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити авто в депо @@ -3572,11 +3799,15 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Міст STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Плата за трансфер: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA} днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}{NBSP}днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Збільшити інтервал техогляду на 10. Ctrl+клік збільшує інтервал техогляду на 5 -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Зменшити період техогляду на 10. Ctrl+клік зменшує інтервал техогляду на 5 +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Збільшити інтервал техогляду на 10. Ctrl+клац мишою збільшує інтервал техогляду на 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Зменшити період техогляду на 10. Ctrl+клац мишою зменшує інтервал техогляду на 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :Відлік інтервалу між техоглядами +STR_VEHICLE_DETAILS_DEFAULT :Стандартно +STR_VEHICLE_DETAILS_DAYS :Дні +STR_VEHICLE_DETAILS_PERCENT :Проценти STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Назвати поїзд STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Назвати авто @@ -3613,7 +3844,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нова STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Вартість переобладнання: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Вибрати транспорт для переобладнання. Перетягування мишкою дозволяє виділити декілька одиниць транспорту. Клік на порожньому місці виділить усю одиницю транспорту. Ctrl+клік мишкою виділить транспорт та ланцюжок перевезень за ним +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Вибрати транспорт для переобладнання. Перетягування мишою дозволяє виділити декілька одиниць транспорту. Клац мишою на порожньому місці виділить усю одиницю транспорту. Ctrl+клац мишою виділить транспорт та ланцюжок перевезень за ним STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Виберіть вид вантажу для перевезення STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Оберіть тип вантажу для перевезення @@ -3635,7 +3866,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Розклад STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Переключитись на розклад -STR_ORDERS_LIST_TOOLTIP :{BLACK}Маршрутний лист - клацніть на завданні для його вибору. CTRL+клік мишкою показує станцію +STR_ORDERS_LIST_TOOLTIP :{BLACK}Маршрутний лист - клацніть на завданні для його вибору. Ctrl+клац мишою показує станцію призначення STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3665,9 +3896,9 @@ STR_ORDER_DROP_NO_UNLOADING :Не розва STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Змінити поведінку розвантаження виділеного пункту STR_ORDER_REFIT :{BLACK}Переобладнати -STR_ORDER_REFIT_TOOLTIP :{BLACK}Оберіть, на який тип вантажу переобладнати у цьому завданні. Ctrl+клік для видалення команди переобладнання -STR_ORDER_REFIT_AUTO :{BLACK}Авто-переобладнання -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Вибирає тип вантажу, для якого треба автопереобладнати транспорт в цьому наказі. Ctrl+клік видаляє автопереобладнання. Автопереобладнання буде виконано, тільки якщо транспорт підтримує його +STR_ORDER_REFIT_TOOLTIP :{BLACK}Оберіть, на який тип вантажу переобладнати у цьому завданні. Ctrl+клац мишою для видалення команди переобладнання +STR_ORDER_REFIT_AUTO :{BLACK}Переобладнати на станції +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Обрати тип вантажу, для якого треба переобладнати транспорт. Ctrl+клац мишою скасовує переобладнання. Переобладнання на станції відбудеться, тільки якщо транспорт допускає це STR_ORDER_DROP_REFIT_AUTO :Зазначений вантаж STR_ORDER_DROP_REFIT_AUTO_ANY :Доступний вантаж @@ -3702,20 +3933,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Знач STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Введіть значення для порівняння STR_ORDERS_SKIP_BUTTON :{BLACK}Пропуск -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточний наказ, і виконувати наступний. CTRL + клік переходить до вибраного наказу +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточний наказ, і виконувати наступний. Ctrl+клац мишою переходить до вибраного наказу STR_ORDERS_DELETE_BUTTON :{BLACK}Видалити STR_ORDERS_DELETE_TOOLTIP :{BLACK}Видалити виділене завдання STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі накази STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Відмінити спільні накази -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Перестати використовути спільні накази. Ctrl+клік мишкою видаляє всі накази для цього транспорту. +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Перестати використовути спільні накази. Ctrl+клац мишою видаляє всі накази для цього транспорту STR_ORDERS_GO_TO_BUTTON :{BLACK}Прямувати STR_ORDER_GO_TO_NEAREST_DEPOT :Прямувати до найближчого депо STR_ORDER_GO_TO_NEAREST_HANGAR :Прямувати в найближчий ангар STR_ORDER_CONDITIONAL :Зміна наказу з умовою STR_ORDER_SHARE :Спільні накази -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити новий наказ перед вибраним, або додати в кінець списку. Утримуйте Ctrl аби створити наказ як "повне завантаження будь-якого вантажу", для точок маршруту - "без зупинок", і для депо - "обслуговування". Пункт "Спільні накази" або утримування Ctrl дозволяє поділитися спільними наказами з виділеним транспортом. Клік на транспорті копіює з нього накази +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити новий наказ перед вибраним, або додати в кінець списку. Утримуйте Ctrl аби створити наказ як "повне завантаження будь-якого вантажу", для точок маршруту - "без зупинок", і для депо - "обслуговування". Пункт "Спільні накази" або утримування Ctrl дозволяє поділитися спільними наказами з виділеним транспортом. Клац мишою на транспорті копіює з нього накази STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показати транспорт з таким самим маршрутом @@ -3758,17 +3989,17 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Не розв STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Не розвантажуватись і чекати повного завантаження будь-якого виду) STR_ORDER_NO_UNLOAD_NO_LOAD :(Не розвантажуватись і не завантажуватись) -STR_ORDER_AUTO_REFIT :(Автоматично переобладнати в {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Завантажити все з автопереобладнанням в {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Повністю завантажити будь-який вид вантажу з автопереобладнанням в {STRING}) -STR_ORDER_UNLOAD_REFIT :(Розвантажити і взяти вантаж з автопереобладнанням в {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Розвантажити і чекати повного завантаження вантажу з автопереобладнанням в {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Розвантажити і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) -STR_ORDER_TRANSFER_REFIT :(Передати і взяти вантаж з автопереобладнанням в {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Передати і чекати повного завантаження з автопереобладнанням в {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Передати і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Не розвантажуватись і взяти вантаж з автопереобладнанням в {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не розвантажуватись і чекати повного завантаження з автопереобладнанням в {STRING}) +STR_ORDER_AUTO_REFIT :(Переобладнати в {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Завантажити все з переобладнанням в {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Повністю завантажити будь-який вид вантажу з переобладнанням в {STRING}) +STR_ORDER_UNLOAD_REFIT :(Розвантажити і взяти вантаж з переобладнанням в {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Розвантажитись і чекати повного завантаження вантажу з переобладнанням в {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Розвантажитись і чекати повного завантаження будь-якого вантажу з переобладнанням в {STRING}) +STR_ORDER_TRANSFER_REFIT :(Передати і взяти вантаж з переобладнанням в {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Передати і чекати повного завантаження з переобладнанням в {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Передати і чекати повного завантаження будь-якого вантажу з переобладнанням в {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Не розвантажуватись і взяти вантаж з переобладнанням в {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не розвантажуватись і чекати повного завантаження з переобладнанням в {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Не розвантажуватись і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) STR_ORDER_AUTO_REFIT_ANY :доступний вантаж @@ -3790,18 +4021,22 @@ STR_TIMETABLE_TITLE :{WHITE}{VEHICLE STR_TIMETABLE_ORDER_VIEW :{BLACK}Завдання STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Переключитись до вікна завдань -STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клікніть на наказ, щоб виділити його +STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клацніть мишою на наказ, щоб виділити його STR_TIMETABLE_NO_TRAVEL :Не прямувати STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному наказі) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В дорозі (час не вказано) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :В дорозі зі швидкістю, що не перевищує {2:VELOCITY} (час не вказано) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Прямувати (без розкладу) зі швидкістю, що не перевищує {2:VELOCITY} (час не вказано) STR_TIMETABLE_TRAVEL_FOR :В дорозі {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :В дорозі {STRING} зі швидкістю, що не перевищує {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Поїздка (для {STRING}, без розкладу) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Їхати (протягом {STRING}, без розкладу) зі швидкістю не більше {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(стояти протягом {STRING}, без розкладу) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(їхати протягом {STRING}, без розкладу) STR_TIMETABLE_STAY_FOR :і стояти {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :і прямувати до {STRING} -STR_TIMETABLE_DAYS :{COMMA} д{P ень ні нів} -STR_TIMETABLE_TICKS :{COMMA} одиниц{P я і ь} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}д{P ень ні нів} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}одиниц{P я і ь} STR_TIMETABLE_TOTAL_TIME :{BLACK}Цей розклад займе {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Цей розклад займе якнайменше {STRING} (не все враховано) @@ -3813,6 +4048,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Цей STR_TIMETABLE_STATUS_START_AT :{BLACK}Цей розклад почнеться о {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Дата початку +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Оберіть дату як точку відліку даного розкладу. Ctrl+клац мишою встановлює точку відліку даного розкладу і рівномірно розподіляє весь транспорт, що виконує це завдання згідно його відносного порядку розміщення, якщо порядок повністю розписаний у розкладі STR_TIMETABLE_CHANGE_TIME :{BLACK}Змінити час STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ @@ -3834,7 +4070,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Авто STR_TIMETABLE_EXPECTED :{BLACK}Очікується STR_TIMETABLE_SCHEDULED :{BLACK}Призначено -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Переключити між очікуваним і запланованим +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Перемкнути очікуване на заплановане STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: STR_TIMETABLE_DEPARTURE_ABBREVIATION :В: @@ -3901,7 +4137,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Наст STR_AI_LIST_CAPTION :{WHITE}Доступні {STRING} STR_AI_LIST_CAPTION_AI :Модулі АІ STR_AI_LIST_CAPTION_GAMESCRIPT :Ігрові Скрипти -STR_AI_LIST_TOOLTIP :{BLACK}Клікніть, щоб вибрати скрипт +STR_AI_LIST_TOOLTIP :{BLACK}Клацніть мишою, щоб вибрати скрипт STR_AI_LIST_AUTHOR :{LTBLUE}Автор: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Версія: {ORANGE}{NUM} @@ -3926,6 +4162,8 @@ STR_AI_SETTINGS_START_DELAY :Кількіс STR_TEXTFILE_README_CAPTION :{WHITE}Документація до {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Зміни в {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Ліцензія до {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Розмістити текст +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Розмістити текст у вікні без необхідності прокрутки STR_TEXTFILE_VIEW_README :{BLACK}Інструкція STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Зміни STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ліцензія @@ -3948,6 +4186,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Прибуток: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Пересадка: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Пересадка: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Перерахувати: {CURRENCY_LONG}{WHITE} / {GREEN}Дохід: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Перерахувати: {CURRENCY_LONG}{WHITE} / {GREEN}Дохід: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Перерахувати: {CURRENCY_LONG}{WHITE} / {RED}Вартість: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Перерахувати: {CURRENCY_LONG}{WHITE} / {RED}Вартість: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Приблизні витрати: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приблизний прибуток: {CURRENCY_LONG} @@ -4032,6 +4274,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Робо STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Вже понижено до рівня моря STR_ERROR_TOO_HIGH :{WHITE}Дуже високо STR_ERROR_ALREADY_LEVELLED :{WHITE}... вже рівна +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Пізніше, міст над цим місцем буде занадто високо. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Неможливо змінити назву компанії... @@ -4058,7 +4301,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... на STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... надто близько до іншого міста STR_ERROR_TOO_MANY_TOWNS :{WHITE}... забагато міст STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... на карті немає вільного місця -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Місто не буде будувати дороги. Ви можете дозволити будівництво доріг у вікні Розширені налаштування->Економіка->Міста +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Місто не будуватиме дороги. Ви можете дозволити будівництво доріг через налаштування->Довкілля->Міста STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Дорога ремонтується STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Не можна видалити це місто...{}Станція або депо, що відносяться до міста або знаходяться на землі у власності міста, не можуть бути видалені STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... немає придатного місця для статуї в центрі цього міста @@ -4082,6 +4325,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... са STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... можна будувати тільки вище рівня снігу STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... можна будувати тільки нижче рівня снігу +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Відсутні місця, придатні для '{STRING}' виробництва +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Змініть параметри генерування карти, щоб отримати кращу карту + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Неможливо будувати станцію тут... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Неможливо будувати зупинку тут... @@ -4218,6 +4464,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Споч STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Початок та кінець не можуть бути в одному місці STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Кінці мостів на різних рівнях STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Висота мосту є занадто великою для даного ландшафту STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... обидва кінці мосту мають бути на землі STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... міст надто довгий @@ -4244,6 +4491,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... це STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Не можна створити групу... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Не можна стерти групу... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Не можна перейменувати групу... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Неможливо встановити головну групу... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Не можна позбутися всього транспорту цієї групи... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Не можна додати цей транспорт у групу... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Не можна додати спільний транспорт у групу... @@ -4299,6 +4547,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не м STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспорт знищено +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Недоступний жоден транспортний засіб +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Змінити налаштування встановленого NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Жоден вид транспорту ще не став доступним +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Починайте нову гру після {DATE_SHORT} або використовуйте NewGRF, в якому транспорт з’являється раніше # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Неможливо проїхати сигнал - небезпечно... @@ -4325,8 +4577,8 @@ STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... тр STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Неможливо розділити список завдань... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо відмінити спільні накази... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Неможливо скопіювати список завдань... -STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... дуже далеко від попереднього пункту призначення -STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... літак не літає так далеко +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... занадто далеко від попереднього пункту призначення +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... літак не може летіти так далеко # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не можна встановити розклад для транспорту... @@ -4343,6 +4595,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не м STR_DESKTOP_SHORTCUT_COMMENT :Гра-симулятор, заснована на Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe DOS edition. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe Windows edition. +STR_BASESOUNDS_DOS_DESCRIPTION :Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition. +STR_BASESOUNDS_WIN_DESCRIPTION :Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition. +STR_BASESOUNDS_NONE_DESCRIPTION :Порожній набір звуків. +STR_BASEMUSIC_WIN_DESCRIPTION :Оригінальна музика з Transport Tycoon Deluxe Windows edition. +STR_BASEMUSIC_NONE_DESCRIPTION :Порожній набір музики. ##id 0x2000 # Town building names @@ -4503,7 +4763,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паровоз) @@ -4710,10 +4970,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Пасажир STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Судно на повітряній подушці Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пасажирский пором Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пасажирский пором Shivershake -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Вантажний корабель Yate -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Вантажний корабель Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Вантажний корабель Mightymover -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Вантажний корабель Powernaut +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Вантажний корабель Яхта +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Вантажний корабель Бейквел +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Вантажний корабель MightyMover +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Вантажний корабель Потужний STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4806,6 +5066,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (приховано) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4829,6 +5090,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4840,8 +5102,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4852,9 +5112,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/chuvash.txt b/src/lang/unfinished/chuvash.txt index d44668b31e..a76dd73c35 100644 --- a/src/lang/unfinished/chuvash.txt +++ b/src/lang/unfinished/chuvash.txt @@ -171,6 +171,9 @@ STR_BUTTON_RENAME :{BLACK}Ята STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Чӳречене хуп +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Пӳрнӗ пек STR_BUTTON_CANCEL :{BLACK}Улӑштар @@ -275,7 +278,7 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Яланхил STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' çинчен ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1мӗш STR_ORDINAL_NUMBER_2ND :2мӗш STR_ORDINAL_NUMBER_3RD :3-мӗш @@ -291,22 +294,40 @@ STR_ORDINAL_NUMBER_12TH :12-мӗш STR_ORDINAL_NUMBER_13TH :13-мӗш STR_ORDINAL_NUMBER_14TH :14-мӗш STR_ORDINAL_NUMBER_15TH :15-мӗш -STR_ORDINAL_NUMBER_16TH :16-мӗш -STR_ORDINAL_NUMBER_17TH :17-мӗш -STR_ORDINAL_NUMBER_18TH :18-мӗш -STR_ORDINAL_NUMBER_19TH :19-мӗш -STR_ORDINAL_NUMBER_20TH :20-мӗш -STR_ORDINAL_NUMBER_21ST :21-мӗш -STR_ORDINAL_NUMBER_22ND :22-мӗш -STR_ORDINAL_NUMBER_23RD :23-мӗш -STR_ORDINAL_NUMBER_24TH :24-мӗш -STR_ORDINAL_NUMBER_25TH :25-мӗш -STR_ORDINAL_NUMBER_26TH :26-мӗш -STR_ORDINAL_NUMBER_27TH :27-мӗш -STR_ORDINAL_NUMBER_28TH :28-мӗш -STR_ORDINAL_NUMBER_29TH :29-мӗш -STR_ORDINAL_NUMBER_30TH :30-мӗш -STR_ORDINAL_NUMBER_31ST :31-мӗш +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1мӗш +STR_DAY_NUMBER_2ND :2мӗш +STR_DAY_NUMBER_3RD :3-мӗш +STR_DAY_NUMBER_4TH :4-мӗш +STR_DAY_NUMBER_5TH :5-мӗш +STR_DAY_NUMBER_6TH :6-мӗш +STR_DAY_NUMBER_7TH :7-мӗш +STR_DAY_NUMBER_8TH :8-мӗш +STR_DAY_NUMBER_9TH :9-мӗш +STR_DAY_NUMBER_10TH :10-мӗш +STR_DAY_NUMBER_11TH :11-мӗш +STR_DAY_NUMBER_12TH :12-мӗш +STR_DAY_NUMBER_13TH :13-мӗш +STR_DAY_NUMBER_14TH :14-мӗш +STR_DAY_NUMBER_15TH :15-мӗш +STR_DAY_NUMBER_16TH :16-мӗш +STR_DAY_NUMBER_17TH :17-мӗш +STR_DAY_NUMBER_18TH :18-мӗш +STR_DAY_NUMBER_19TH :19-мӗш +STR_DAY_NUMBER_20TH :20-мӗш +STR_DAY_NUMBER_21ST :21-мӗш +STR_DAY_NUMBER_22ND :22-мӗш +STR_DAY_NUMBER_23RD :23-мӗш +STR_DAY_NUMBER_24TH :24-мӗш +STR_DAY_NUMBER_25TH :25-мӗш +STR_DAY_NUMBER_26TH :26-мӗш +STR_DAY_NUMBER_27TH :27-мӗш +STR_DAY_NUMBER_28TH :28-мӗш +STR_DAY_NUMBER_29TH :29-мӗш +STR_DAY_NUMBER_30TH :30-мӗш +STR_DAY_NUMBER_31ST :31-мӗш ############ range for days ends ############ range for months starts @@ -440,9 +461,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлт -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system +# Order review system / warnings @@ -459,10 +478,6 @@ STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла ############ end of currency region -############ start of measuring units region -############ end of measuring units region - - ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Акӑлчан @@ -488,7 +503,9 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Катталу STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Хӑй управ +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Сӳнтер +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Чӗлхи @@ -497,7 +514,7 @@ STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Тулл STR_GAME_OPTIONS_RESOLUTION :{BLACK}Экрана сӑнарлама пултарни STR_GAME_OPTIONS_RESOLUTION_OTHER :расна -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат экран сӑнӗ + @@ -535,7 +552,7 @@ STR_SUBSIDY_X4 :x4 -# Advanced settings window +# Settings tree window @@ -572,6 +589,7 @@ STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Сӳнтер STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Сӳнтер + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :вӑрӑм (2008 раш 31меш) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :кӗске (2008-12-31) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) @@ -583,7 +601,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31 - STR_CONFIG_SETTING_NEWS_SUBSIDIES :Грантсем: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Сӳнтер @@ -611,14 +628,11 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Питӗ хӑв -STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Лартӑм +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Лартӑм STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ҫул-йӗр: -STR_CONFIG_SETTING_STATIONS :{ORANGE}Станцисем: +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Хуласем STR_CONFIG_SETTING_AI :{ORANGE}Ӑмӑртуҫӑсем -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автоҫӗнет -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Пуйӑссем -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Хуласем STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -981,6 +995,8 @@ STR_GENERATION_OBJECT_GENERATION :{BLACK}Объе STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верси: {SILVER}{NUM} +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Хуп STR_NEWGRF_PARAMETERS_RESET :{BLACK}Сикӗ @@ -1011,6 +1027,8 @@ STR_NEWGRF_LIST_NONE :Ҫук # 'User removed essential NewGRFs'-placeholders for stuff without specs +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -1037,7 +1055,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_NONE :{ORANGE}- Ҫук - @@ -1112,6 +1131,7 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу + # Build vehicle window @@ -1122,6 +1142,9 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу + + + # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -1154,6 +1177,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} + # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -1309,6 +1333,7 @@ STR_ERROR_MESSAGE_CAPTION :{YELLOW}Пӗл # Industry related errors + # Station construction related errors @@ -1467,8 +1492,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -1479,9 +1502,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 6f96819d17..b99af4e20d 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -39,7 +39,7 @@ STR_CARGO_PLURAL_IRON_ORE :Izererts STR_CARGO_PLURAL_STEEL :Stiel STR_CARGO_PLURAL_VALUABLES :Kostberheden STR_CARGO_PLURAL_COPPER_ORE :Kopererts -STR_CARGO_PLURAL_MAIZE :Mais +STR_CARGO_PLURAL_MAIZE :Stynske weet STR_CARGO_PLURAL_FRUIT :Fruit STR_CARGO_PLURAL_DIAMONDS :Diamanten STR_CARGO_PLURAL_FOOD :Iten @@ -73,7 +73,7 @@ STR_CARGO_SINGULAR_IRON_ORE :Iizererts STR_CARGO_SINGULAR_STEEL :Stiel STR_CARGO_SINGULAR_VALUABLES :Kostberheden STR_CARGO_SINGULAR_COPPER_ORE :Kopererts -STR_CARGO_SINGULAR_MAIZE :Mais +STR_CARGO_SINGULAR_MAIZE :Stynske weet STR_CARGO_SINGULAR_FRUIT :Fruit STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_FOOD :Iten @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Frisdrinken # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} passazjier{P "" s} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passazjier{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} fan stienkoal -STR_QUANTITY_MAIL :{COMMA} tas{P "" sen} mei post +STR_QUANTITY_MAIL :{COMMA}{NBSP}tas{P "" sen} mei post STR_QUANTITY_OIL :{VOLUME_LONG} fan oalje -STR_QUANTITY_LIVESTOCK :{COMMA} In stikmennich bist{P "" en} -STR_QUANTITY_GOODS :{COMMA} krat{P "" ten} guod +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}Bist{P "" en} +STR_QUANTITY_GOODS :{COMMA}{NBSP}kret{P "" ten} guod STR_QUANTITY_GRAIN :{WEIGHT_LONG} fan nôt STR_QUANTITY_WOOD :{WEIGHT_LONG} fan hout STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} fan izererts STR_QUANTITY_STEEL :{WEIGHT_LONG} fan stiel -STR_QUANTITY_VALUABLES :{COMMA} sek{P "" ken} kostberheden +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}sek{P "" ken} kostberheden STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} fan kopererts -STR_QUANTITY_MAIZE :{WEIGHT_LONG} fan mais +STR_QUANTITY_MAIZE :{WEIGHT_LONG} stynske weet STR_QUANTITY_FRUIT :{WEIGHT_LONG} fan fruit -STR_QUANTITY_DIAMONDS :{COMMA} sek{P "" ken} diamanten +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}sek{P "" ken} diamanten STR_QUANTITY_FOOD :{WEIGHT_LONG} fan iten STR_QUANTITY_PAPER :{WEIGHT_LONG} fan papier -STR_QUANTITY_GOLD :{COMMA} sek{P "" ken} goud +STR_QUANTITY_GOLD :{COMMA}{NBSP}sek{P "" ken} goud STR_QUANTITY_WATER :{VOLUME_LONG} fan wetter STR_QUANTITY_WHEAT :{WEIGHT_LONG} fan weet STR_QUANTITY_RUBBER :{VOLUME_LONG} fan rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} fan sûker -STR_QUANTITY_TOYS :{COMMA} boartersguod -STR_QUANTITY_SWEETS :{COMMA} sek{P "" ken} snobbersguod +STR_QUANTITY_TOYS :{COMMA}{NBSP}kret{P "" ten} boartersguod +STR_QUANTITY_SWEETS :{COMMA}{NBSP}sek{P "" ken} snobbersguod STR_QUANTITY_COLA :{VOLUME_LONG} fan kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} fan sûkerspin STR_QUANTITY_BUBBLES :{COMMA} bûle{P "" n} @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NE STR_ABBREV_ALL :{TINY_FONT}AL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} passazjier{P "" s} -STR_BAGS :{COMMA} sek{P "" ken} -STR_TONS :{COMMA} Ton -STR_LITERS :{COMMA} liter{P "" s} -STR_ITEMS :{COMMA} foarwerp{P "" en} -STR_CRATES :{COMMA} kret{P "" ten} +STR_PASSENGERS :{COMMA}{NBSP}passazjier{P "" s} +STR_BAGS :{COMMA}{NBSP}sek{P "" ken} +STR_TONS :{COMMA}{NBSP}Ton +STR_LITERS :{COMMA}{NBSP}liter{P "" s} +STR_ITEMS :{COMMA}{NBSP}foarwerp{P "" en} +STR_CRATES :{COMMA}{NBSP}kret{P "" ten} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Donkerblau @@ -191,35 +191,44 @@ STR_COLOUR_GREY :Griis STR_COLOUR_WHITE :Wyt # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mpo -STR_UNITS_VELOCITY_METRIC :{COMMA} km/o -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mpo +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/o +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hk -STR_UNITS_POWER_METRIC :{COMMA}hk -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P "" nen} -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}ton{P "" nen} +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" s} +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtertekst: STR_LIST_FILTER_OSKTITLE :{BLACK}Foer filter namme yn STR_LIST_FILTER_TOOLTIP :{BLACK}Typ in wurd yn om de list te filterjen +STR_TOOLTIP_GROUP_ORDER :{BLACK}Groepearfolchoarder selektearje STR_TOOLTIP_SORT_ORDER :{BLACK}Selektear skiftrjochting (oprinnend/ôfrinnend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selektear skiftnoarm STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selekear filternoarm @@ -231,13 +240,25 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Slút fi STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Finstertitel - hjirmei kinst it finster ferslepe STR_TOOLTIP_SHADE :{BLACK}Skaad finster - allinne titel balke sjen litte STR_TOOLTIP_DEBUG :{BLACK}Lit NijeGRF debug ynformaasje sjen -STR_TOOLTIP_STICKY :{BLACK}Skerm as net-slútber markeare mei de knop 'Slút alle skermen' +STR_TOOLTIP_DEFSIZE :{BLACK}Feroarje finster nei de standerdgrutte. Ctrl+Klik om de hjoeddeiske grutte as standerd yn te stellen +STR_TOOLTIP_STICKY :{BLACK}Finster as net-slútber markearje mei de knop 'Slút alle finsters' STR_TOOLTIP_RESIZE :{BLACK}Klik en sleep om skermgrutte oan te passen STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Wikselje tusken lyts/grutter skermgrutte STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skowbalke - skow de list op/del STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skowbalke - skow list links/rjochts STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Brek gebouen ensafierder ôf op in stikje lân. Ctrl selektearet it gebiet diagonaal. Shift skeakelt tusken bouwe/taksearje fan de kosten +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Ferburgen treinen sjen litte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Ferburgen weinen sjen litte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Ferburgen skepen sjen litte +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Ferburgen fleanmasines sjen litte + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Mei it ynskeakelje fan dizze knop wurde ek ferburgen treinen toand +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Mei it ynskeakelje fan dizze knop wurde ek ferburgen weinen toand +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Mei it ynskeakelje fan dizze knop wurde ek ferburgen skepen toand +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mei it ynskeakelje fan dizze knop wurde ek ferburgen fleantúgen toand + # Query window STR_BUTTON_DEFAULT :{BLACK}Standert STR_BUTTON_CANCEL :{BLACK}Annulearje @@ -265,7 +286,7 @@ STR_SORT_BY_TRANSPORTED :Ferfierd STR_SORT_BY_NUMBER :Nûmer STR_SORT_BY_PROFIT_LAST_YEAR :Fertsjinste lêste jier STR_SORT_BY_PROFIT_THIS_YEAR :Fertsjinste dit jier -STR_SORT_BY_AGE :âlderdom +STR_SORT_BY_AGE :Alderdom STR_SORT_BY_RELIABILITY :Betrouberens STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kapasiteit per soart fracht STR_SORT_BY_MAX_SPEED :Maksimumfaasje @@ -275,30 +296,35 @@ STR_SORT_BY_LENGTH :Lingte STR_SORT_BY_LIFE_TIME :Restearjende libbensdagen STR_SORT_BY_TIMETABLE_DELAY :Opûnthâld yn de tsjinstregeling STR_SORT_BY_FACILITY :Stasjonstype -STR_SORT_BY_RATING_MAX :Heechste fracht foldwaning -STR_SORT_BY_RATING_MIN :Minste fracht foldwanning -STR_SORT_BY_ENGINE_ID :Reau ID (klassyke soart) +STR_SORT_BY_WAITING_TOTAL :Totaal wachtsjende fracht +STR_SORT_BY_WAITING_AVAILABLE :Wachtsjend besikbere fracht +STR_SORT_BY_RATING_MAX :Heechste frachtfoldwaning +STR_SORT_BY_RATING_MIN :Minste frachtfoldwanning +STR_SORT_BY_ENGINE_ID :Fiertúch-ID (klassyke soart) STR_SORT_BY_COST :Kosten STR_SORT_BY_POWER :Krêft STR_SORT_BY_TRACTIVE_EFFORT :Lûkkrêft STR_SORT_BY_INTRO_DATE :Yntroduksjedatum STR_SORT_BY_RUNNING_COST :Bedriuwskosten -STR_SORT_BY_POWER_VS_RUNNING_COST :Vermogen/Bedriuwskosten +STR_SORT_BY_POWER_VS_RUNNING_COST :Fermogen/Bedriuwskosten STR_SORT_BY_CARGO_CAPACITY :Frachtkapasiteit STR_SORT_BY_RANGE :Beryk STR_SORT_BY_POPULATION :Ynwenners +STR_SORT_BY_RATING :Rang # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausear spul -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}De tiid hâldt gjin skoft (rapper) +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spul skoftsjen +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Tiid hurder rinne litte STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsjes STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Opslaan, ferlitte, ôfslúte -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Lit de kaart sjen, ekstra finster of buordsje list +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Kaar sjen litte, ekstra finster of buordlist STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Lit in list fan alle stêden sjen STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Lit Subsydzjes sjen -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Lit de list mei stasjons fan it bedriuw sjen +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Lit in list mei stasjons fan it bedriuw sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Lit finansjele ynformaasje oer it bedriuw sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Lit algemiene bedriuwsynformaasje sjen +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Ferhalenboek sjen litte +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Doellist sjen litte STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Lit grafyken sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Lit de bedriuwskompetysjetabel sjen STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Betelje de bou fan in nije yndustry @@ -308,55 +334,57 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lit in l STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Lit in list sjen fan de fleantúgen fan dit bedriuw. Ctrl+Klik skeakelt tusken de list groep/reau STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ynzoome STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}ûtzoome -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou in spoarwei -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Dike-oanlizze +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoarwegen +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bou diken STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bou havens STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bou fleanfjilden -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Iepenje it lânskips ark om it lân te ferheegje/ferleegje, beamplantsje, etsetera +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Iepenje it lânskipsark om it lân te ferheegje/ferleegje, beamen te plantsjen, etsetera STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Lit lûd/musyk finster sjen -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Lit lêste (neis)berjocht sjen / lit berjocht ynstellings sjen -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Lân ynformaasje, console, script debug, screenshots, oer OpenTTD +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Lit lêste (nijs)berjocht sjen, lit berjochtynstellings sjen +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Lânynformaasje, console, script-debug, skermôfbyldings, oer OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skeakelje tusken ark # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Bewarje Lânskips bouer, Lânskips bouer lade, Lânskips bouer ferlitte, slût ôf +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Senario opslaan, senario lade, senariobouwer ferlitte, ôfslute STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}Iepen TTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Lânskips bouer +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Senariobouwer STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Set it startjier 1 jier efterút STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Set it startjier 1 jier foarút STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klik om it startjier yn te fieren -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Lit de kaart en de stêdenlist sjen -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Lânskip untwikkeling -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Stêd generaasje +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Kaart sjen litte, stêdlist sjen litte +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Lânskipgeneraasje +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Stêdgeneraasje STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Yndustry generaasje -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Wegenbou +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Dikenbou STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Beammen plantsje. Shift skeakelt tusken bouwe/taksearje fan de kosten STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Set in buordsje del -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Jou objekt in plak. Shift skeakelt tusken bouwe/taksearje fan de kosten +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Pleats in objekt. Shift skeakelt tusken bouwe/taksearje fan de kosten ############ range for SE file menu starts -STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Lânskipsbouer bewarje -STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Lânskipsbouer lade +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Senario opslaan +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Senariobouwer lade STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Hichtekaart bewarje STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Hichtekaart lade -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Lânskipsbouer ofslute +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Senariobouwer ôfslute STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ofslute ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Spul opsje -STR_SETTINGS_MENU_CONFIG_SETTINGS :wiidweidiche ynstellings -STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF ynstellings -STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Trochsjoch opsjes -STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Stêd nammen sjen litte +STR_SETTINGS_MENU_GAME_OPTIONS :Spulopsjes +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Ynstellings +STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spulskriptynstellings +STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-ynstellings +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Trochsichtigensopsjes +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Stêdsnammen sjen litte STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stasjon nammen sjen litte STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Nammen fan kontrôleposten sjen litte STR_SETTINGS_MENU_SIGNS_DISPLAYED :Buordsjes sjen litte -STR_SETTINGS_MENU_FULL_ANIMATION :Folsleine animaasje -STR_SETTINGS_MENU_FULL_DETAIL :Folsleine detais +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Lit boerden en nammen fan tsjinstanners sjen +STR_SETTINGS_MENU_FULL_ANIMATION :Folsleine animaasjes +STR_SETTINGS_MENU_FULL_DETAIL :Folsleine details STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Trochsichtige gebouwen -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Trochsjoch nammen +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Trochsichtige nammen ############ range ends here ############ range for file menu starts @@ -364,17 +392,18 @@ STR_FILE_MENU_SAVE_GAME :Spul opslaan STR_FILE_MENU_LOAD_GAME :Spul lade STR_FILE_MENU_QUIT_GAME :Spul ferlitte STR_FILE_MENU_SEPARATOR : -STR_FILE_MENU_EXIT :Ofslúte +STR_FILE_MENU_EXIT :Ofslute ############ range ends here # map menu -STR_MAP_MENU_MAP_OF_WORLD :Kaart fan 'e wrâld -STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra sichtber diel +STR_MAP_MENU_MAP_OF_WORLD :Wrâldkaart +STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra finster +STR_MAP_MENU_LINGRAPH_LEGEND :Frachtstreamleginda STR_MAP_MENU_SIGN_LIST :Buordsjeslist ############ range for town menu starts -STR_TOWN_MENU_TOWN_DIRECTORY :Stêden list -STR_TOWN_MENU_FOUND_TOWN :Sticht in stêd +STR_TOWN_MENU_TOWN_DIRECTORY :Stêdlist +STR_TOWN_MENU_FOUND_TOWN :In stêd stichte ############ range ends here ############ range for subsidies menu starts @@ -383,26 +412,28 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Subsydzjes ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Fertsjinstengrafyk -STR_GRAPH_MENU_INCOME_GRAPH :Ynkomsten grafyk -STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Oflevere fracht grafyk +STR_GRAPH_MENU_INCOME_GRAPH :Ynkomstengrafyk +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Oflevere frachtgrafyk STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Prestaasjeskiednisgrafyk -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Bedriuwswearde grafyk -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Frachtpriize grafyk +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Bedriuwsweardegrafyk +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Frachtprizengrafyk ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Bedriuwskompetysje tabel +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Bedriuwskompetysjetabel STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Wiidweidiche prestaasjewurdearring +STR_GRAPH_MENU_HIGHSCORE :Topskoretabel ############ range ends here ############ range for industry menu starts -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Yndustry list -STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Betelje nije yndustry +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Yndustrylist +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Yndustrykeatlings +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Nije yndustry finansierje ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Spoarwei bouwe -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektryske spoarwei bouwe +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektifisearre spoarwei bouwe STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monorail bouwe STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev bouwe ############ range ends here @@ -421,9 +452,9 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Fleanfjild bouw ############ range ends here ############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :Lânskips foarming +STR_LANDSCAPING_MENU_LANDSCAPING :Lânskipsfoarming STR_LANDSCAPING_MENU_PLANT_TREES :Plantsje beammen -STR_LANDSCAPING_MENU_PLACE_SIGN :Set buordsje del +STR_LANDSCAPING_MENU_PLACE_SIGN :Buordsje delsette ############ range ends here ############ range for music menu starts @@ -431,23 +462,26 @@ STR_TOOLBAR_SOUND_MUSIC :Lûd/musyk ############ range ends here ############ range for message menu starts -STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Lêste (neis)berjocht +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Lêtste (nijs)berjocht STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Berjochtenskiednis ############ range ends here ############ range for about menu starts -STR_ABOUT_MENU_LAND_BLOCK_INFO :Gebiets ynformaasje +STR_ABOUT_MENU_LAND_BLOCK_INFO :Gebietsynformaasje STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Skeakel console oan/ût STR_ABOUT_MENU_AI_DEBUG :AI/Gamescript debug -STR_ABOUT_MENU_SCREENSHOT :Skermfoto -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Tichtby helje skermfoto -STR_ABOUT_MENU_GIANT_SCREENSHOT :Skermfoto fan de hiele wrald -STR_ABOUT_MENU_ABOUT_OPENTTD :Oer 'IepenTTD' +STR_ABOUT_MENU_SCREENSHOT :Skermôfbylding +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Tichtby helle skermôfbylding +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Standerdzoom skermôfbylding +STR_ABOUT_MENU_GIANT_SCREENSHOT :Skermôfbylding fan 'e hiele wrâld +STR_ABOUT_MENU_ABOUT_OPENTTD :Oer 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Flakken rjochtsje +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Skeakel seleksjekaders oan/út +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Kleurjen smoarge tegels oan/út ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2e STR_ORDINAL_NUMBER_3RD :3e @@ -463,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12e STR_ORDINAL_NUMBER_13TH :13e STR_ORDINAL_NUMBER_14TH :14e STR_ORDINAL_NUMBER_15TH :15e -STR_ORDINAL_NUMBER_16TH :16e -STR_ORDINAL_NUMBER_17TH :17e -STR_ORDINAL_NUMBER_18TH :18e -STR_ORDINAL_NUMBER_19TH :19e -STR_ORDINAL_NUMBER_20TH :20e -STR_ORDINAL_NUMBER_21ST :21e -STR_ORDINAL_NUMBER_22ND :22e -STR_ORDINAL_NUMBER_23RD :23e -STR_ORDINAL_NUMBER_24TH :24e -STR_ORDINAL_NUMBER_25TH :25e -STR_ORDINAL_NUMBER_26TH :26e -STR_ORDINAL_NUMBER_27TH :27e -STR_ORDINAL_NUMBER_28TH :28e -STR_ORDINAL_NUMBER_29TH :29e -STR_ORDINAL_NUMBER_30TH :30e -STR_ORDINAL_NUMBER_31ST :31e +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1st +STR_DAY_NUMBER_2ND :2e +STR_DAY_NUMBER_3RD :3e +STR_DAY_NUMBER_4TH :4e +STR_DAY_NUMBER_5TH :5e +STR_DAY_NUMBER_6TH :6e +STR_DAY_NUMBER_7TH :7e +STR_DAY_NUMBER_8TH :8e +STR_DAY_NUMBER_9TH :9e +STR_DAY_NUMBER_10TH :10e +STR_DAY_NUMBER_11TH :11e +STR_DAY_NUMBER_12TH :12e +STR_DAY_NUMBER_13TH :13e +STR_DAY_NUMBER_14TH :14e +STR_DAY_NUMBER_15TH :15e +STR_DAY_NUMBER_16TH :16e +STR_DAY_NUMBER_17TH :17e +STR_DAY_NUMBER_18TH :18e +STR_DAY_NUMBER_19TH :19e +STR_DAY_NUMBER_20TH :20e +STR_DAY_NUMBER_21ST :21e +STR_DAY_NUMBER_22ND :22e +STR_DAY_NUMBER_23RD :23e +STR_DAY_NUMBER_24TH :24e +STR_DAY_NUMBER_25TH :25e +STR_DAY_NUMBER_26TH :26e +STR_DAY_NUMBER_27TH :27e +STR_DAY_NUMBER_28TH :28e +STR_DAY_NUMBER_29TH :29e +STR_DAY_NUMBER_30TH :30e +STR_DAY_NUMBER_31ST :31e ############ range for days ends ############ range for months starts @@ -533,7 +585,7 @@ STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Lit gjin STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Set grafyk foar frachtsoart oan/út STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} -STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Lit detaillearre prestaasje sjen +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Lit detaillearre prestaasjewurdearring sjen # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Kaai foar bedriuwsgrafiken @@ -544,8 +596,8 @@ STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Bedriuws STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inzjenieur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Ferkearslieder -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transport coördinator -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rûte Opsichter +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportkoördinator +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rûteopsichter STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Bestjoerder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Direkteur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Foarsitter @@ -553,14 +605,14 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Yndustrieel # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Detaillearre prestaasje score +STR_PERFORMANCE_DETAIL :{WHITE}Detaillearre prestaasjescore STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Sjoch de details oer dit bedriuw +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Besjoch de details oer dit bedriuw ############ Those following lines need to be in this order!! -STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Reau: +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Fiertugen: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjons: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. fertsjinste: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. ynkomsten: @@ -571,16 +623,16 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Jild: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lean: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totaal: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}oantal vehikels dy't winst makke hawwe yn it lêste jier. Hjirbij telle Reau -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}In stikmennich koartlyn makke stasjon underdielen. elk underdiel fan in stasjon (û.o. trein stasjon, bus halte, fleanfjild) binne teld, sels all binne se oaninoar plakt as ien stasjon -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}De winst fan it reau mei it leechste ynkomme (fan alle reau alder dan 2 yier) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}In mannich jild dat is fertsjinne yn it fearnsjier mei de leechste winst fan de ôfrûne 12 fearnsjierren -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}In mannich jild dat is fertsjinne yn it fearnsjier mei de heechste winst fan de ôfrûne 12 fearnsjierren -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}In stikmannich guod ôflevere yn de lêste 12 moanne -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Oantal soarten guod ôlevere yn de lêste trije moanne +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Tal fiertugen hokker winst makke hawwe it ôfrûne jier. Hjiryn wurde weinen, treinen, skippen en fleantugen meinaam +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Tal koartlyn oandiene stasjons. Treinstasjons, bushaltes, fleanfjilder en sa fierder wurde ek apart telt ek al binne se part fan itselde stasjon +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}De winst fan it fiertúch mei de leechste ynkomsten (allinnich fiertugen âlder as 2 jier wurde meinaam) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Bedrach dat fertsjinne is yn it fearnsjier mei de leechste winst fan 'e lêste 12 fearnsjieren +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Bedrach dat fertsjinne is yn it fearnsjier mei de heechste winst fan 'e lêste 12 fearnsjieren +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Ienheden fracht ôflevere yn de lêste fjouwer fearnsjieren +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Oantal typen fracht ôlevere yn it lêste fearnsjier STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Jild dat dit beriuw op de bank stean hat STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Jild dat dit bedriuw lient hat fan de bank -STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Folslein oantal punten ut alle mooglike punten +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Folslein oantal punten út alle mooglike punten # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox @@ -590,8 +642,8 @@ STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLA STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Strjitte STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Oanpast 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Oanpast 2 -STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musyk Folume -STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effekten Folume +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musykfolume +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effektenfolume STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' @@ -602,7 +654,7 @@ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKG STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Nûmer STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mjokselje -STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programma +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Werom nei foargeand nûmer yn seleksje STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Foarút nei folgjend nûmer yn seleksje STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stopje musyk ôf te spyljen @@ -612,25 +664,25 @@ STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selektea STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selektear programma: 'âlde stijl' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selektear programma: 'nije stijl' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selektear 'Ezy Strjitte' musyk programma -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selektear programma: 'Oanpast 1 (selsmakke) -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selektear programma: 'Oanpast 2 (selsmakke) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selektearje program: 'Oanpast 1' (selsmakke) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selektearje program: 'Oanpast 2' (selsmakke) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Set musyk mjokselje oan/út -STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Lit musyk seleksje skerm sjen. +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Lit musykseleksjeskerm sjen. -STR_ERROR_NO_SONGS :{WHITE}In musykset sûnder nûmers is selektearje. Gjin nûmers sille spile wurden +STR_ERROR_NO_SONGS :{WHITE}In musykset sûnder nûmers is selektearre. Gjin nûmers sille spile wurden # Playlist window -STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musyk Programma Seleksje +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musykprogramseleksje STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" -STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nûmer Yndex -STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}' +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nûmeryndeks +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Leech meitsje -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Leechje dit programma (allinnich Oanpast 1 of Oanpast 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op musyknûmer om ta te foegjen oan dit programma (allinnich Oanpast 1 of Oanpast 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op musyknûmmer om't út it aktive programma it heljen (allinnich Oanpast1 of Oanpast2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Leechje dit program (allinnich Oanpast 1 of Oanpast 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op musyknûmer om ta te foegjen oan dit program (allinnich Oanpast 1 of Oanpast 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op musyknûmmer om't út it aktive program it heljen (allinnich Oanpast1 of Oanpast2) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top bedriuwen dy't niveau {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Topbedriuwen dy't niveau {NUM} helle hawwe STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Bedriuwskompetysjetabel yn {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Sakeman @@ -638,7 +690,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Undernimmer STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Yndustrialist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaat -STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mongoal +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon fan 'e Ieuw STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) @@ -649,29 +701,32 @@ STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHIT STR_SMALLMAP_CAPTION :{WHITE}Kaart - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Kontoeren -STR_SMALLMAP_TYPE_VEHICLES :Reauen +STR_SMALLMAP_TYPE_VEHICLES :Fiertugen STR_SMALLMAP_TYPE_INDUSTRIES :Yndustryen +STR_SMALLMAP_TYPE_ROUTEMAP :Frachtstream STR_SMALLMAP_TYPE_ROUTES :Rûtes STR_SMALLMAP_TYPE_VEGETATION :Fegetaasje STR_SMALLMAP_TYPE_OWNERS :Eigners -STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Lit de lân kontoeren sjen op de kaart -STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Lit reauen sjen op 'e kaart -STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Lit yndustrieen sjen op 'e kaart +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Lit de lânkontoeren sjen op de kaart +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Lit fiertugen sjen op 'e kaart +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Lit yndustryen sjen op 'e kaart +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Frachtstream op 'e kaart sjen litte STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Lit transportrûtes sjen op 'e kaart STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Lit fegetaasje sjen op 'e kaart -STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Lit lân eigners sjen op 'e kaart -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}klik op in yndustry soart om it finster te slute. Ctrl+klick skeakelje alle typen út útsein de selektearje. Ctrl+klick opnij om alle yndustry soarte oan te setten -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK} klik op in bedriuw om syn eigendom sjen te litten. Ctrl+klick skeakelje alle bedriuwe út útsein de selektearje. Ctrl+klick opnij om alle bedriuwe oan te setten +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Lit lâneigners sjen op 'e kaart +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik op in yndustrytype om dizze wol as net sjen te litten. Ctrl+Klik skeakelt alle types út útsein de ni selektearre. Ctrl+Klik opnij om alle yndustrytypen oan te setten +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik op in bedriuw om syn eigendom sjen te litten. Ctrl+Klik skeakelt alle bedriuwe út útsein de no selektearre. Ctrl+Klik opnij om alle bedriuwen wer sjen te litten +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klik op in frachttype om syn eigenskippen wol as net sjen te litten. Ctrl+Klik ferberget alle ty[es útsein de no selektearre ien. Ctrl+Klik noch ris om alles wer sjen te litten. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Diken -STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Treinspoaren +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Spoarwegen STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stasjons/Fleanfjilden/Havens STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Gebouwen/Yndustrieen -STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Reauen +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Fiertugen STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Treinen STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Auto's -STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skepen -STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Fleantúgen +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skippen +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Fleantugen STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportrûtes STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Bosk STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Treinstasjon @@ -688,13 +743,14 @@ STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Wetter STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Gjin eigner STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Stêden -STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Yndustrieen +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Yndustryen STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Woastyn STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snie -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Set doarpsnammen oan/út op 'e kaart +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Set stêdsnammen oan/út op 'e kaart STR_SMALLMAP_CENTER :{BLACK}Set dit plak sintraal yn de kaart STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Alles ûtsette @@ -703,19 +759,21 @@ STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Lit hich STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Lit gjin yndustryen op de kaart sjen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Lit alle yndustryen op de kaart sjen STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Skeakel sjen litte fan hichte oan/ut -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Lit gjin bedriuws eigendomen op de map sjen -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Lit alle bedriuws eigendomen op de map sjen +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Lit gjin bedriuwseigendomen op 'e kaart sjen +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Lit alle bedriuwseigendomen op 'e kaart sjen +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Gjin frachten op de kaart sjen litte +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Alle frachten sjen litte op de kaart # Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Lit lêste (neis)berjocht sjen +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Lit lêtste (nijs)berjocht sjen STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSEARRE * * +STR_STATUSBAR_PAUSED :{YELLOW}* * SKOFTE* * STR_STATUSBAR_AUTOSAVE :{RED}Automatysk bewarje -STR_STATUSBAR_SAVING_GAME :{RED}* * Dit spul bewarje * * +STR_STATUSBAR_SAVING_GAME :{RED}* * SLAAT SPUL OP * * # News message history -STR_MESSAGE_HISTORY :{WHITE}Berjochten histoarje -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}In list fan Nije neisberjochten +STR_MESSAGE_HISTORY :{WHITE}Berjochtenskiednis +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}In list fan resinte nijsberjochten STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Berjocht @@ -729,75 +787,75 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste skip komt oan yn {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste fleanmasine komt oan yn {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Trein ûngemak!{}{COMMA} Elkenien dea troch fjoerbol nei ûngemak -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Auto ûngemak!{}Bestjoerder dea troch fjoerbol nei ûngemak -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Auto ûngemak!{}{COMMA} minsken dea troch fjoerbol nei ûngemak -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fleantúg dêlstoart!{}{COMMA} deaden troch fjoerbol nei ûngemak op startbaan {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fleantúg dêlstoart!{}Fleantúg hie net genôch kerosine, {COMMA} deaden troch fjoerbol nei ûngemak +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Treinûngemak!{}{COMMA} Elkenien dea troch fjoerbol nei botsing +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Autoûngemak!{}Bestjoerder dea troch fjoerbol nei botsing +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Autoûngemak!{}{COMMA} minsken dea troch fjoerbol nei ûngemak +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fleantúch delstoart!{}{COMMA} deaden troch fjoerbol nei ûngemak op 'e startbaan {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fleantúch dêlstoart!{}Fleantúch hie net genôch kerosine, {COMMA} gean dea yn in fjoerbol -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelin ramp yn {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Auto verneatige troch UFO -STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksploazje op Oaljefjild yn {TOWN}! -STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabriek ynstoart yn {TOWN}! -STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' delkaam yn{TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Stienkoalemyn stoart yn, in stikmennich deaden {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Oerstreaming!{}Op syn minst {COMMA} Lju dy't mist wurde of dea nei Oerstreaming! +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinramp by {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Wein ferneatige troch UFO +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksploazje oaljeraffinaderij by {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabryk ynstoart ûnder fertochte omstannnichheden by {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO'-landing by {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Stienkoalmyn stoart yn en lit in spoan fan destruksje efter by {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Oerstreaming!{}Op syn minst {COMMA} lju dy't mist wurde, sy wurde toch dea te wêzen! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportbedriuw yn'e problemen! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sil ferkeape of fallyt ferkleare wurde wannear prestaasjes net ferbetterje -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportbedriuw oernimme! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sil ferkeape of fallyt ferkleare wurde wannear prestaasjes net gau ferbetterje! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportbedriuw fusearre! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is ferkocht oan {STRING} foar {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Fallyt! -STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is slúten troch skuldeaskers en alles is ferkocht! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is slúten troch skuldeaskers en al har besit is ferkocht! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nij transportbedriuw oprjochte! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} begjint te bouen yn {TOWN}! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} begjint te bouen by {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} is oernaam troch {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direkteur) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsor jild om in nije stêd te bouen{TOWN}! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} stipet de bou fan in nije stêd{TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nij {STRING} yn oanbou by {TOWN}! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nij {STRING} oanplante {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nij {STRING} yn oanplant by {TOWN}! -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ferkondigt driigjende slúting! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Troch problemen mei de oanfier ferkondigt {STRING} driigjende slúting! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Troch in tekoart oan beammen ferkondigt {STRING} driigjende slúting! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} kundicht driigjend sluten oan! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Troch problemen mei de oanfier ferkondigt {STRING} driigjende sluting oan! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Troch in tekoart oan beammen ferkondigt {STRING} driigjende sluting oan! -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Jeropeeske Jild Unie!{}{}Fan no ôf wurdt de euro brûkt om mei te beteljen -STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Resesje!{}{}Finansieel eksperts binne bang foar it minste fanwegen de minne ekonomy! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Resesje foarby!{}{}Opgong yn hannel jout fertrouwen oan yndustry en de ekonomy wurdt better! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Jeropeeske Jilduny!{}{}Fan no ôf oan wurdt de euro brûkt foar deistige transaksjes yn jo lân! +STR_NEWS_BEGIN_OF_RECESSION :inne b{BIG_FONT}{BLACK}Resesje!{}{}Finansjeel eksperts binne bang foar it minste no't de ekonomy nei ûnderen giet! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Resesje foarby!{}{}Opgong yn hannel jout fertrouwen oan yndustry wylst de ekonomie ferbetterd! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} hellet produksje oan! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nije koalier fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbelje! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nije oaljereserves fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbelje! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Troch ferbetterede metoden wurdt de produskje fan {INDUSTRY} te ferdûbelje! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} Produksje by {INDUSTRY} giet omheech {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nije koalier fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbeljen! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nije oaljereserves fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbeljen! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Troch ferbetterde metoades wurdt de produskje fan {INDUSTRY} ferwachte te ferdûbeljen! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} Produksje by {INDUSTRY} giet omheech mei {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK} Produksje fan {INDUSTRY} giet omleech mei 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Troch in insektenpleach by {INDUSTRY}!{}Produksje giet omleech mei 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksje fan {INDUSTRY} hat in tebeksetter fan {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektenpleach jout gaos by {INDUSTRY}!{}Produksje giet omleech mei 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksje fan {INDUSTRY} wurdt tebekset mei {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn hangar -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hat net genôch opdrachten op e list stean +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hat te min opdrachten yn it skema stean STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hat in leeche opdracht -STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hat deselde opdracht -STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hat in ferkeard stasjon yn syn opdrachten -# end of order system +STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hat dûbele opdrachten +STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hat in in ûnjildich stasjon yn syn opdrachten +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE}Hat in fleanfjild in syn tjinstregeling wêrfan de lâningsbaan te koart is -STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} wurdt âld -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} wurdt tige âld -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} wurdt tige âld en is nedich oan ferfanging ta +STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} begjint âld te wurden +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} begjint tige âld te wurden +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} begjint tige âld te wurden en is nedich oan ferfanging ta STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kin gjin paad finne om fierder te gean STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} is it paad kwyt. -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}winst wie it lêste jier{CURRENCY_LONG} +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} hie ôfrûne jier in winst fan {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kin net op de folgjende bestimming komme, dizze leit bûten de aksjeradius -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} is stoppe om't it ombouwen mislearje is -STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatysk fernije is mislearje by {VEHICLE}{}{STRING} +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} is stoppe om't it ombouwen mislearre is +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatysk fernije is mislearre by {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Neie {STRING} is no beskikber! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} @@ -816,153 +874,162 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt trijedûbel betelle foar it kommende jier! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt fjouwerdûbel betelle foar it kommende jier! -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Ferkears gaos yn {TOWN}!{}{}Dyk reparaasje betelle troch {STRING} bringt jo 6 moannen duorjend yrritaasje ferkearsdielnimmers! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Ferkearsgaos yn {TOWN}!{}{}Dykreparaasje betelle troch {STRING} bringt 6 moannen oan ellinde foar ferkearsdielnimmers! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopoalje! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Gemeente fan {TOWN} tekent in kontrakt mei {STRING} foar in jier lang eksklusive ferfiersrjochen! # Extra view window -STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjochfinster {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopy nei sjochfinster -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiearje dizze lokaasje fan it haad finster nei dit sjochfinster -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Plakke fan ut it sjochfinster -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}plak de lokaasje fan dit sjochfinster nei it haad finster +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Loaitsfinster {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiearje nei loaitsfinster +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiearje de lokaasje fan it haadfinster nei dit loaitsfinster +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Plak fanút loaitsfinster +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Plak de lokaasje fan dit loaitsfinster nei it haadfinster # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Spul Opsjes +STR_GAME_OPTIONS_CAPTION :{WHITE}Spulopsjes STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Muntienheid -STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Munt ienheid seleksje +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Muntienheidseleksje ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Pûnen (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollars (USD) +STR_GAME_OPTIONS_CURRENCY_GBP :Britske Pûn (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanske Dollars (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Australyske Shilling (ASS) +STR_GAME_OPTIONS_CURRENCY_JPY :Japanske Yen (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Eastenrykske Shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgyske Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Switserske Frank (SWF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechyske Koruna (TSK) -STR_GAME_OPTIONS_CURRENCY_DEM :Dútske mark (DÛM) -STR_GAME_OPTIONS_CURRENCY_DKK :Deenske Krone (DNK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) +STR_GAME_OPTIONS_CURRENCY_CHF :Switserske Frank (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechyske Koruna (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Dútske mark (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Deenske Kroan (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Spaanske Peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grykse Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint (HOF) -STR_GAME_OPTIONS_CURRENCY_ISK :Yslânske Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italjaanske lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederlânske gûne (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Noorse Krone (NOK) +STR_GAME_OPTIONS_CURRENCY_FRF :Frânske Franc (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Grykske Drachma (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarske Forint (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Yslânske Kroan (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Italjaanske Lire (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlânske Gûne (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Noorske Kroan (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Poalske Zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Roemeenske Leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russyske Rubels (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenske Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Sweedske Krona (SEK) +STR_GAME_OPTIONS_CURRENCY_SEK :Sweedske Kroan (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakske kroan (SKK) +STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakske Kroan (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Braziljaanse Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estlânske kroan (EEK) +STR_GAME_OPTIONS_CURRENCY_EEK :Estlânske Kroan (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litouwske Litas (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Súd-Koreaanske Won (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Súd-Afrikaanske Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oanpasse... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgyske Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanske Rial (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Auto's -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selektear op hokker side fan 'e dyk de auto's ride moatte +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Weinen +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selektearje de kant fan de dyk dêr't weinen ride moatte STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lofts ride STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Rjochts ride -STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Stêd nammen -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selektear stijl fan 'e nammen +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Stêdnammen +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selektearje nammestyl ############ start of townname region -STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ingelsk (Orisjineel) +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ingelsk (Orizjineel) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Frânsk -STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Dúts -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ingelsk +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Dútsk +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ingelsk (Ekstra) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latynsk-Amerikaansk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Ût mâlens STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sweedsk -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Hollânsk +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nederlânsk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poalsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slowaaks STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Noorsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hongaarsk -STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Australysk -STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romeensk +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Eastenryksk +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Roemeensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tsjechysk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Switsersk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Deensk -STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turks +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turksk STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italjaansk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalaansk ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatysk bewarje -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selektear tiid tusken automatyske spul bewarje +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatysk opslaan +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selektearje de interval foar automatysk opslaan +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ut STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Eltse moanne STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Eltse 3 moannen STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Eltse 6 moannen STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Eltse 12 moannen +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal -STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selektearje de interface taal +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selektearje de interfacetaal STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Folslein skerm -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Finkje dit fakje oan om Iepen TTD te boartsje yn in folslein skerm +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Finkje dit fakje oan om OpenTTD te boartsje yn in folslein skerm -STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm resolusje -STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selektearje de skerm resolutje om te brûke +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skermresolusje +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selektearje de skermresolutje om te brûken STR_GAME_OPTIONS_RESOLUTION_OTHER :oars -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermfoto formaat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selektearje it skerm formaat om te brûke +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacegrutte + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normaal +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dûbele grutte +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fjouwerdûbele grutte -STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisstik for graphics -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektearje basisstik for graphics om te brûke +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset for ôfbyldings +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektearje de basis ôfbyldingsset om te brûken STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ûntbrekke{P "" nde}/korrupt{P "" e} bestân -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar graphics +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar ôfbyldings -STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basisset foar lûds effekten -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selektearje it basisstik lûds effekten om te brûke -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset lûd +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basisset foar lûdseffekten +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selektearje de basislûdsset om te brûken +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basislûdsset STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset foar musyk -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selektearje it basisstik lûd om te brûke +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selektearje de basisset foar musyk om te brûken STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupt{P "" e} bestân{P "" en} -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset muzyk +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar musyk -STR_ERROR_FULLSCREEN_FAILED :{WHITE}Folslein skerm mode mislearre +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Koe gjin list mei brûkbere resolúsjes ophelje +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Folslein skermmodus mislearre # Custom currency window -STR_CURRENCY_WINDOW :{WHITE}Oanpast faluta +STR_CURRENCY_WINDOW :{WHITE}Oanpaste faluta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wikselkoers: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferleegje de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferheegje de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Stel de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferleegje de wikselkoers fan jo faluta yn ferlyk mei de Britske Pûn (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferheegje de wikselkoers fan jo faluta yn ferlyk mei de Britske Pûn (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Stel de wikselkoers fan dyn faluta yn ferlyk mei de Britske Pûn (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Skiedingteken: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Stel it skiedingteken foar dien muntienheid +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Stel it skiedingteken foar dyn faluta STR_CURRENCY_PREFIX :{LTBLUE}Foarheaksel: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Stel dien foarrinteken yn foar dien muntienheid +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Stel it foarrinteken yn foar jo faluta STR_CURRENCY_SUFFIX :{LTBLUE}Efterheaksel: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Stel it efterheaksel foar dien muntienheid +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Stel it efterheaksel foar jo faluta -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Gea oer nij de Euro: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Gea oer nij de euro: {ORANGE}nea -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Stel it earste jier fan de Euro yn -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gea earder ny de Euro -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gea letter ny de Euro +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Gean oer nei de Euro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Gean oer nei de euro: {ORANGE}nea +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Hokker jier fynt de wiksel nei de Euro plak +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gean earder oer op de Euro +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gean letter oer op de Euro STR_CURRENCY_PREVIEW :{LTBLUE}Foarbyld: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pûn (£) yn dien muntienheid +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pûn (£) yn jo faluta STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Feroarje opsje fan oanpaste faluta -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimum oantal tsjinstanders: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimum oantal tsjinstanners: {ORANGE}{COMMA} STR_NONE :Gjin STR_FUNDING_ONLY :Allinnich finansierje @@ -981,7 +1048,7 @@ STR_VARIETY_MEDIUM :Middel STR_VARIETY_HIGH :Heech STR_VARIETY_VERY_HIGH :Hiel Heech -STR_AI_SPEED_VERY_SLOW :Traach +STR_AI_SPEED_VERY_SLOW :Hiel Stadich STR_AI_SPEED_SLOW :Stadich STR_AI_SPEED_MEDIUM :Gewoan STR_AI_SPEED_FAST :Hurd @@ -994,20 +1061,25 @@ STR_SEA_LEVEL_HIGH :Heech STR_SEA_LEVEL_CUSTOM :Oanpast STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Oanpast ({NUM}%) +STR_RIVERS_NONE :Gjin +STR_RIVERS_FEW :In bytsje +STR_RIVERS_MODERATE :Middel +STR_RIVERS_LOT :In protte STR_DISASTER_NONE :Gjin STR_DISASTER_REDUCED :Minder STR_DISASTER_NORMAL :Gewoan -STR_SUBSIDY_X1_5 :x1.5 +STR_SUBSIDY_X1_5 :x1,5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 -STR_TERRAIN_TYPE_VERY_FLAT :Hiel Flak -STR_TERRAIN_TYPE_FLAT :Flak -STR_TERRAIN_TYPE_HILLY :Heuvelachtich -STR_TERRAIN_TYPE_MOUNTAINOUS :Bergachtich +STR_TERRAIN_TYPE_VERY_FLAT :Hiel Sljocht +STR_TERRAIN_TYPE_FLAT :Sljocht +STR_TERRAIN_TYPE_HILLY :Heuvelich +STR_TERRAIN_TYPE_MOUNTAINOUS :Bergich +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Tajouwend STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1015,199 +1087,427 @@ STR_CITY_APPROVAL_HOSTILE :Fijannich STR_WARNING_NO_SUITABLE_AI :{WHITE}Gjin brûkbere AIs beskikber...{}jo kinne ferskillende AIs downloade fia it 'Online Content' systeem -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Avansearre ynstellings - - - -STR_CONFIG_SETTING_OFF :út -STR_CONFIG_SETTING_ON :oan -STR_CONFIG_SETTING_DISABLED :Útskeakele - -STR_CONFIG_SETTING_COMPANIES_OFF :Ût +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ynstellings +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtertekst: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles útklappe +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles ynklappe +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(gjin útlis beskikber) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standerdwaarde: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Ynstellingstype: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Kliïntynstellings (wurdt net per spul opslein; hat ynvloed op alle spullen) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Spulynstellings (wurdt per spul opslein; hat allinich effekt op nije spullen) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spulynstellings (wurdt per spul opslein; hat allinich effekt op it hjoeddeiske spul) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Bedriuwynstellings (wurdt per spul opslein; hat allinich effekt op nije spullen) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Bedriuwynstellings (wurdt per spul opslein; hat allinich effekt op it hjoeddeiske bedriuw) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategory: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Behein de ûndersteande list ta feroare ynstellings +STR_CONFIG_SETTING_RESTRICT_BASIC :Basisynstellings (allinich wichtige ynstellings sjen litte) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Wiidweidige ynstellings (measte ynstellings sjen litte) +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspêrynstelltings (alle ynstellings sjen litte, wêrûnder fremde) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ynstellings dy't net op de standerdwaarde stean +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ynstellings dy't in oare waarde hawwe as dy foar it nije spul + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Behein de ûndersteande list ta bepaalde ynstellingtypes +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle ynstellingtypes +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliïntynstellings (wurdt net per spul opslein; hat ynvloed op alle spullen) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spulynstellings (wurdt per spul opslein; hat allinich effekt op nije spullen) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spulynstellings (wurdt per spul opslein; hat allinich effekt op it hjoeddeiske spul) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Bedriuwynstellings (wurdt per spul opslein; hat allinich effekt op nije spullen) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Bedriuwynstellings (wurdt per spul opslein; hat allinich effekt op it hjoeddeiske bedriuw) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Lit alle sykresultaten per ynstelling sjen{}{SILVER}Katagory {BLACK}oant {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Lit alle sykresultaten per ynstelling sjen{}{SILVER}Type {BLACK}oant {WHITE}Alle ynstellingtypes +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Lit alle sykresyltaten per ynstelling sjen{}{SILVER}Katagory {BLACK}oant {WHITE}{STRING} {BLACK}en {SILVER}Type {BLACK}oant {WHITE}Alle ynstellingtypes +STR_CONFIG_SETTINGS_NONE :{WHITE}- Gjin - + +STR_CONFIG_SETTING_OFF :Ut +STR_CONFIG_SETTING_ON :Oan +STR_CONFIG_SETTING_DISABLED :Utskeakele + +STR_CONFIG_SETTING_COMPANIES_OFF :Ut STR_CONFIG_SETTING_COMPANIES_OWN :Eigen bedriuw STR_CONFIG_SETTING_COMPANIES_ALL :Alle bedriuwen STR_CONFIG_SETTING_NONE :Gjin -STR_CONFIG_SETTING_ORIGINAL :Orizjiniel +STR_CONFIG_SETTING_ORIGINAL :Orizjineel STR_CONFIG_SETTING_REALISTIC :Realistysk STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Lofts STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midden STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Rjochts - -STR_CONFIG_SETTING_BUILDONSLOPES :It boue op in helling tastean: {STRING} -STR_CONFIG_SETTING_AUTOSLOPE :Omkriten oanpasse under gebouen, spoaren, ensafuorthinne tastean (autoslope): {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimale startersliening: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimale bedrach hokker troch in bedriuw lient wurde kin (sûnder acht te slaan op de ynflaasje) +STR_CONFIG_SETTING_INTEREST_RATE :Rinte: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Rinte op lienings; behearsket ek ynflaasje at dizze oan stiet +STR_CONFIG_SETTING_RUNNING_COSTS :Eksploitaasjekosten: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stel hichte ûnderhâlds- en ekploitaasjekosten fan fiertugen en ynfrastruktuer yn +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Boufaasje: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Behein it oantal bouwaksjes foar AI's +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Fiertúchsteurings: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Behearskje hoe faak min ûnderhâlden fiertúgen in steuring hawwe meie +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsydzjefermannichfâldiger: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stel yn hoefolle der betelle wurdt foar subsidiearre ferbinings +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Boukosten: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stel hichte bouw- en oankeapkosten yn +STR_CONFIG_SETTING_RECESSIONS :Resesjes: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :By ynskeakeljen kinne der om de safolle jier resesjes plakfine. Under in resesje nim de produksje op alle flakken ôf (sadree in resesje oergean is giet de produkje wer nei it âlde nivo omheech) +STR_CONFIG_SETTING_TRAIN_REVERSING :Ferbied treinen te draaien yn stasjons: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :By ynskeakeljen sille treinen net draaie op net kopstasjons, ek net as der in koarter paad is nei de folgjende bestimming by it wol omdraaien +STR_CONFIG_SETTING_DISASTERS :Rampen: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skeakel rampen oan/út. Rampen kinne sa no en dan fiertugen en ynfrastruktuer sawol blokearje as ferneatigje +STR_CONFIG_SETTING_CITY_APPROVAL :Hâlding gemeenten tsjinoer werstrukturearring: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoe grut ympact fan lûdsoerlêst en omwrâldskea toch bedriuwen is op har reputaasje by de lokale bestjoeren en takomstige konstruksje yn harren mêd + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimale kaarthichte: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Maksimale tastiene hichte fan bergen op 'e kaart ynstelle +STR_CONFIG_SETTING_AUTOSLOPE :Omkriten oanpasse under gebouen, spoaren, ensafuorthinne tastean: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Stean lânskipsbewurkings ûnder gebouwen en spoarbanen ta sûnder dat dizze ferwidere wurde STR_CONFIG_SETTING_CATCHMENT :Gebrûk meer realistyske hannelsgebieten: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Brûk ferskillende opheinbewâlden foar ferskillende typen stasjons en fleanfjilden STR_CONFIG_SETTING_EXTRADYNAMITE :Stjin ferwiderje fan stedelike dyken, brêgen en tunnels ta: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Meitsje it makliker om gebouwen en ynfrastruktuer dy't yn it besit fan in stêd binne te ferwiderjen +STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimale treinlingte: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Stelt de maksimale lingte fan treinen yn +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} teil{P 0 "" en} STR_CONFIG_SETTING_SMOKE_AMOUNT :Utjefte fan steam/fonken by treinen: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Trein akselerasje model: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Dyk reau akselerasje model: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG :Ferbied treinen en boarten om 90° te swaaien: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :stjin it gearfoegje fan stasjons ta diet net oaniensletten binne: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :gebrûk it ferbettere algoritme: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Laad reau stadichoan: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Stel yn hoefolle smoke as fonken fiertugen útstjitte +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Treinakseleraasjemodel: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selektearje it natuerkundige model foar de treinfersnelling. It 'orizjinele' model straffet alle fiertugen itselde op skeantes. It 'realistyske' model straffet fiertugen op skeantes en yn bochten op basis fan feskate eigenskippen sa as lingte en lûkkrêft +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Akseleraasjemodel foar dykfiertugen: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selektearje it natuerkundige model foar de akseleraasje fan dykfiertugen. It "Orizjinele" model straft skeantes itselde foar alle fiertugen. It "realistyske" model straft fiertugen op skeantes op basis fan ferskeidene eigenskippen fan it fiertuch sa as syn 'lûkkrêft' +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Steitle skeanten foar treinen: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steilte fan skeanten foar treinen. Hegere weardes meitsje it dreger foar treinen om skeates op te riden +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Steilte skeanten foar dykfiertugen: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steilte fan skeanten foar dykfiertugen. Hegere weardes meitsje it dreger foar dykfiertugen om skeates op te riden +STR_CONFIG_SETTING_FORBID_90_DEG :Ferbied treinen en skippen om 90° te swaaien: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Bochten fan 90 graden komme foar op it spoar at in horizontale spoarwei folge wurdt troch in fertikaal stik sparwei. In trein soe yn dizze sitewaasje in bocht fan 90 graden meitsje yn stee fan de normale 45 graden. Dizze opsje hat ek effect op de swaaisirkel fan skippen +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Stean it gearfoegjen fan stasjon dy't elkoar net reitsje ta: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Stean it ta nije parten oan in stasjon ta foegjen sûnder dat dizze in besteand diel fan it stasjon oanrekje. Brûk Ctrl+Klik om dizze parten de pleatsen STR_CONFIG_SETTING_INFLATION :Ynflaasje: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Bringst allinich besoargje by in stasjon as der fraach nei is: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Skeakel ynflaasje foar de ekonomy yn, hjirby gean de kosten justjes hurder omheech as de ynkomsten +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimale brêgelingte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimumlingte wêroerst brêgen oanlizze kinst +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimale brêgehichte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimale hichte foar brêgen +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimale tunnellingte: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimumlingte wêroerst tunnels oanlizze kinst STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Mei de hân te betsjinjen boumetoade foar primêre yndustryen: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoade foar it oprjochtsen fan primêre yndustryen. 'Gjin' bestjust dat it net mooglik is primêre yndustryen op te rjochtsjen, 'sykje' betsjut dat dat wol kin mar de lokaasje fan de nije yndustry sis samar earne wêze of der kin neat barre, 'sa as oare yndustryen betsjut datst primêre yndustryen bouwe kinst wêr'st wolst STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Gjin -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Lyk as oare yndustryen -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Probearje +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Sa oare yndustryen +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Sykje +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Sljochte romte rûnom yndustrien: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Romte rûnom yndustryen dy't sljocht hâlden wurdt. Dit soarget derfoar dat der rûnom yndustryen romte oerbliuwt foar it bouwen fan spoarweien ensafierder STR_CONFIG_SETTING_MULTIPINDTOWN :Meardere ferlykbere yndustryen de sted tastean: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normaalsprutsen wol in stêd near mear as ien yndustry fan elst type hawwe. Dizze ynstelling wurde meardere yndustryen fan itselde type wol tastien +STR_CONFIG_SETTING_SIGNALSIDE :Seinen sjen litte: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selektearje oan hokker kant fan in spoarwei seinen pleatst wurde moatte +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Oan de lofterkant +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Oan de riidkant +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Oan de rjochterkant STR_CONFIG_SETTING_SHOWFINANCES :Finansjeel oersjoch oan it ein fan it jier sjen litte: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :By ynskeakeljen wurdt der elts jier in finansjeel jierferlslach sjen litten, dit makket it makliker in oersjoch fan de finansjele steat fan it bedriuw te krijen STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nije oarder binne standert 'non-stop': {STRING} -STR_CONFIG_SETTING_STOP_LOCATION :Nije trein oarders stopje de trein standert {STRING} fan it perron -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :begjin -STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midden -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ein -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Opstopping by reau (mei bywurkingen): {STRING} -STR_CONFIG_SETTING_AUTOSCROLL :Ferskow it skerm ot de mûs op de râne is: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normaalsprutsen sil in fiertúch op alle stasjons dy't hy tsjinkomt stopje. Troch dizze opsje yn te skeakeljen sille nije oarders standerd op non-stop set wurden. Dit hat dus gjin ynvloed op besteande oarders! +STR_CONFIG_SETTING_STOP_LOCATION :Nije treinoarders stopje de trein standert {STRING} fan it perron +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plak wêr't treinen stopje by it binnenriden fan in stasjon. Dit hat allinnich ynvloed op nije oarders en kin altyd yndividueel ynstelt wurde +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :oan it ein +STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :yn it midden +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :oan it ein +STR_CONFIG_SETTING_AUTOSCROLL :Ferskow it skerm at de mûs op de râne is: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :By ynskeakeljen sil it loaitsfinster scrolle at de mûs by de râne fan it finster komt +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Utskeakele +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Haadloaitsfinster, allinnich folslein skerm +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Haadfinster +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Elts loaitsfinster STR_CONFIG_SETTING_BRIBE :It omkeapjen fan de gemeente tastean: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Eksklusyfe transport rjochten keapje tastean: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Finansierje fan dyk ûnderhâld tastean: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Jild jaan oan oarde bedriuwen tastean: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS :Gewichtsfaktor foar vracht om swiere treinen te simulearje: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES :Oantal fleanmasine ûngelokken: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Stean ta dat bedriuwen gemeentes omkeapje kinne. At dit ûntdutsem wurdt kin it bedriuw yn kwestje 6 moannen gjin saken dwaan yn de stêd +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Eksklusyfe transportrjochten keapje tastean: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :At in bedriuw eksklusive transportrjochten keapet foar in stêd sille stasjon fan tsjinstanners in jier lang gjin passazjiers en fracht ûntfange +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Nije gebouwen stipe tastean: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Stean bedriuwen ta stêden jild te jaan foar de oanlis fan nije hûzen +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dykûnderhâld stypje tastean : {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Stean bedriuwen ta stêden jild te jaan foar de rekonstrukje fan har diken om sa ferfier oer de dyk yn de stêd te sabotearjen +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Oare bedriuwen stypje tastean: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Stean de oerdacht fan jild tusken bedriuwen ta ûnder in multiplayerspul +STR_CONFIG_SETTING_FREIGHT_TRAINS :Wichtsfermannichfâldiger foar vracht om swiere treinen te simulearjen: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Stel de ympact fan fracht op treinen yn. In hegere wearde makket it dreger foar treinen om foarút te kommen, boppe-al op skeantes +STR_CONFIG_SETTING_PLANE_SPEED :Faasjefaktor fleantugen: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Stelt it faasjeferskil tusken fleantugen en oare fiertugen yn. Dit kin de ynkomsten foar luchtferfier ferminderje +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Oantal fleanmasineûngemakken: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Stel de kâns yn dat in fleanmasine in ûngemak meimakket STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Gjin STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Minder STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Gewoan -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stean ta dat Ienrjochtingsbuordsjes pleatst wurde troch de stêd behearde dyken: {STRING} -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Stean ta dat Ienrjochtingsbuordsjes pleatst wurde troch de tsjinstander behearde dyken: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Bouwe oanbuorjende stasjons tastean: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Meitsje it mooglik meardere NewGRF reau sets te brûke: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}As der reau binne kin dizze ynstelling net feroare wurde - -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Fleanfjilden ferrinne litte kin net: {STRING} - -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warskôgje as in reau it paad bjuster is: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW :Opennij besjen reau' oarders: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stean it bouwen fan haltes op troch de stêd behearde diken ta: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Stean it bouwen fan haltes op troch de stêd behearde diken ta +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Stean it bouwen fan haltes op troch in tsjinstanner behearde diken ta {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Stiet it bouwen fan haltes op troch in tsjinstanner behearde diken ta +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}At der fiertugen yn it spul binne kin dizze ynstelling net feroare wurde +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Ynfrastruktuerûnderhâld: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :By ynskeakeljen binne der koster ferbûn oan it ûnderhâld fan ynfrastruktuer. De kosten wurde heger by gruttere netwurken wêrtoch gruttere bedriuwen hjir mear lêst fan hawwe + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Fleanfjilden ferrinne nea: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :By ynskeakeljen bliuwe alle fleanfjildtypes foar ivich beskikber + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warskôgje as in fiertúch it paad bjuster is: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Lit berjochten sjen at in fiertúch gjin paad nei syn bestimming fine kin +STR_CONFIG_SETTING_ORDER_REVIEW :Hâld fiertúchoarders yn de gaten: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :By ynkeakeljen wurde de oarder fan de fiertugen sa no en dan kontrolearre en wurde flater dy't dêrby nei boppe komme melden STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nee -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, mar slút stilsteande reau ût -STR_CONFIG_SETTING_ORDER_REVIEW_ON :fan alle reau -STR_CONFIG_SETTING_WARN_INCOME_LESS :Warskôgje as de fertsjinsten fan in reau negatyf binne: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Reau ferrinne litte kin net: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Âlde reau automatysk ferfange: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum nedich bedrach by automatysk ferfange: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Ynwennertal sjen litte by in sted: {STRING} - -STR_CONFIG_SETTING_LAND_GENERATOR :Lân generator: {STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orizineel +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, mar slút stilsteande fiertugen út +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Fan alle fiertugen +STR_CONFIG_SETTING_WARN_INCOME_LESS :Warskôgje at de fertsjinsten fan in fiertúch negatyf binne: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :By ynskeakeljen wurdt der berjochte at in fiertúch it ôfrûnne jier gjin winst makke hat +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Fiertugen ferinne nea: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :By ynskeakeljen bliuwe alle fiertugen foar ivich beskikber +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Ferfang âlde fiertugen automatysk: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :By ynskeakeljen wurden fiertugen dy't hast op harren ein binne automatyske ferfongen +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Ferfang in fiertúch automatysk nei {STRING} maksimale âldens +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Leeftiid wêrop in fiertúch yn oanmerking komt foar automatysk fernije +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} moanne fan te foaren +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} moannen letter +STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimumbedrach benedicht foar automatysk fernije: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Bedrach wat oerbliuwe moat foardat der oer neitocht wurdt in fiertúch automatysk te ferfangen +STR_CONFIG_SETTING_ERRMSG_DURATION :Doer flatermeldings: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Doer fan reade flatermeldings. Guon krityske flater wurde net automatysk ôfsluten +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} seconde{P "" s} +STR_CONFIG_SETTING_HOVER_DELAY :Arktips sjen litte: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tiid wernei arktips sjen litten wurde at jo de mûs de boppe hâlde. Arktips kinne ek oan de rjochtermûsknop bûn wurde asto dizze wearde op 0 set +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Sweve foar {COMMA} milliseconde{P "" s} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rjochtsklikje +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Ynwennertal sjen litte by steden: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Lit it ynwennteral fan steden in harren labels sjen +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Groute fan grafyklijnen: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Widens dan de linen yn de grafiken. Tinne linen binne presyser, groutere linen binne makliker te sjen + +STR_CONFIG_SETTING_LANDSCAPE :Lânskip: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR :Lângenerator: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orizjineel STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snie hichte: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rûgens fan it terrein (allinich TerraGenesis) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :O sa glêd +STR_CONFIG_SETTING_TERRAIN_TYPE :Terreintype: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Allinich TerraGenesis) Heuvelichhied fan it lânskip +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Yndustry tichtens: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimale ôfstan fanôf de râne fan 'e kaart foar oaljeraffinaderijen: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oaljeraffinaderijen wurde allinnich tichtoan de râne fan 'e kaart bout +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniehichte: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rûgens fan it terrein: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Tige glêd STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glêd STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rûch -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :O sa rûch +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Tige rûch +STR_CONFIG_SETTING_VARIETY :Fariaasjedistribusje: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT :Tal rivieren: {STRING} STR_CONFIG_SETTING_TREE_PLACER :Algoritme foar pleatsing beamen: {STRING} -STR_CONFIG_SETTING_TREE_PLACER_NONE :Gjint +STR_CONFIG_SETTING_TREE_PLACER_NONE :Gjin STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Orizjineel STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Ferbettere -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotaasje: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE :Weinen: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Kies riidkant +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Hichtekaartrotaasje: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tsjin de klok yn STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Mei de klok mei STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :De hichte fan in plat senario wurdt: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Oanpasse fan de hichte oan de kanten fan de kaart tastean: {STRING} -STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ien as meardere fakjes oan de noardkant binne net leech -STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ien as meardere fakjes oan de kant binne gjin wetter +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ien as meardere teilen oan de noardkant binne net leech +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ien as meardere teilen oan de kant binne gjin wetter +STR_CONFIG_SETTING_STATION_SPREAD :Maksimale sprieding stasjons: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksimaal gebiert weroer't de parten fan in stasjon útspriede wêze meie. Hegere weardes meitje it spul stadiger STR_CONFIG_SETTING_SERVICEATHELIPAD :Helikopters automatysk reparearje op helipads: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :ferbin lânskipsarkbalke oan dy fan spoar/dyken/wetter/fleanfjild: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :lân kleur fan spiler op de lytse kaart: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Helikopters nei eltse landing in beurt jaan, ek al bestiet der gjin depot op it landingsplak +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ferbyn de lânskipsarkbalke oan dy foar spoar/dyken/wetter/fleanfjilden: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :By it iepenjen fan in arkbalke foar transport ek it lânskipsark iepenje +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Lânkleur dy't brûkt wurdt op de lytse kaart: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kleur fan it lânskip op de lytse kaart STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grien STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donker grien STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolet -STR_CONFIG_SETTING_REVERSE_SCROLLING :Draai scroll rjochtig om: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sjochfinster floeiend scrolle : {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP :Diminsje ynformaasje by it gebrûk fan ferskillende bouarken sjen litte: {STRING} -STR_CONFIG_SETTING_LIVERIES :Lit alle bedriuws kleuren sjen: {STRING} -STR_CONFIG_SETTING_LIVERIES_NONE :Gjint +STR_CONFIG_SETTING_REVERSE_SCROLLING :Draai scrollrjochtig om: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :By útskeakjen beweecht de mûs de kamera. By ynskeakeljen beweecht de mûs de kaart +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Loaitsfinster floeiend scrolle : {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Bepaalt hoe it haadfinster scrollt. By ynskeakeljen sil dit floeiend wêze. By útskeakeljen ljept it byld direktst nei de selektearre lokaasje +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Under it gebrûk fan de ferskate bou-arken diminsjes sjen litte: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Lit it oantal teilen en it hichteferskil sjen ûnder it dellizzen fan ynfrastruktuer +STR_CONFIG_SETTING_LIVERIES :Lit bedriuwskleuren sjen: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Bepaalt oft fiertúchspesifyke kleuren kleuren brûkt wurde meie oft allinnich bedriuwskleuren tastien binne +STR_CONFIG_SETTING_LIVERIES_NONE :Gjin STR_CONFIG_SETTING_LIVERIES_OWN :Eigen bedriuw STR_CONFIG_SETTING_LIVERIES_ALL :Alle bedriuwen -STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foarkar foar team chat mei : {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksje fan scrolltsjil: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foarkar foar teamchat mei : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Ferwikselje de knoppen foar bedriuwsynterne chat en publyke chat nei resp. +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksje fan it scrolltsjil: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Meitsje scrollen mei twa-dimensjonale mûstsjiltsjes mooglik STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kaart STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scroll kaart -STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Ût -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mûstsjil faasje: {STRING} - -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rjochtsklick emulasje: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klik +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Ut +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mûstsjilfaasje op 'e kaart: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Stel de gefoeligens fan de it scrollen mei it mûstsjiltsje yn +STR_CONFIG_SETTING_OSK_ACTIVATION :Skermkaaiboerd: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Stel de metoade yn foar it iepenjen fan it skermkaaiboerd. Dizze kin brûkt wurde op oanreitsapparaten sûnder in wier kaaiboerd +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Utskeakele +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dûbel klikken +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Inkele klik (ûnder fokus) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Inkele klik (direktst) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rjochtsklikemulaasje: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Selektearje de metoade dy't brûkt wurdt om rjochts-klikken mûlk te meitsjen +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+Klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ût +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ut + +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolle mei lofter mûsknop: {STRING} +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Skeakel scrollen mei de lofter mûsknop oan. Dit is brûksum foar scollen op oanreitsskermen -STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolle mei loftermûs knop: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :Automatysk bewarje: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selektearje de tiid tusken automatysk bewarje fan it spul -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Brûk de {STRING} datumformaat foar nammejouwing beware spultsjes -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lang (31st Dec 2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Brûk it {STRING} datumformaat yn de nammen fan opsleine splullen +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datumformaat foar de bestânsnammen fan opsleine spullen +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lang (31 Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :koart (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) - -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatysk skoftsje as jo in nij spul starte: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Tastean by pausseare: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :gjin aksjes -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :alle net konstruksje aksjes -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :álles útsein lânskipsoanpassings -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Eltse Aksje -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebrûk de avansearre reau list: {STRING} -STR_CONFIG_SETTING_LOADING_INDICATORS :Gebrûk laad yndikator: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatysk skoftsje by de start fan in nij spul: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :By ynskeakeljen sil it spul autmatysk skofte wurde at der in nij spul starte wurdt. Dit jout tiid om earst de kaart te besjen +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Under skoft tastean: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selektearje hokker aksjes tastien binne ûnder in skoft +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Gjin aksjes +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle net-konstruksje-aksjes +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alles útsein lânskipsoanpassings +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle aksjes +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Brûk groepen yn fiertugenlist: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Skeakelje de avansearre fiertugenlist yn foar it groepearren fan fiertugen +STR_CONFIG_SETTING_LOADING_INDICATORS :Brûk laadyndikators: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :By ynskeakeljen sille ydikators sjen litten wurde boppe fiertugen dy't oan it yn- as útladen binne STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Toan tsjinstregeling yn tikken yn stee fan yn dagen: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Lit reistiden sjen in tikken yn stee fan yn dagen op tsjinstregelings STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Toan oankomst- en ofreistiid yn de tsjinstregeling: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :Fluch reau oarders meitsje: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Lit oankomst- en ôfriidtiden sjen yn tsjinstregelings +STR_CONFIG_SETTING_QUICKGOTO :Flugge oanmaak fan fiertúchoarders: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :By it iepenjen fan it oardersfinster direktst it 'gean-nei'-ark iepenje STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standert spoarsoart (by nij of opslein spul): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Spoartype om te selektearjen nei it starten fan in nij spul. 'Earst beskikber' selektearret it âldste spoartype, 'Lêst beskikber' selektearret it nijste spoartype en 'Meast brûkt' selektearret is spoartyp hokker it measte brûkt wurdt STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Earst beskikber STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Lêst beskikber -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meast gebrûkt +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meast brûkt STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Lit reservearre spoar sjen: {STRING} -STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :lit bouark akttyf nei gebrûk: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT :Groepearje útjefte yn bedriuwsfinânsjesskerm: {STRING} - - -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ynfrastruktuer bouwurk stilsette wannear't gjin geskikte reau beskikber binne: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Maksimum oantal treinen per bedriuw: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimum oantal auto's per bedriuw: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimum oantal fleanmasines per bedriuw: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Maksimum oantal skepen per bedriuw: {STRING} - -STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Ferbied treinen foar computerspiler: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Ferbied auto's foar computerspiler: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Ferbied Fleantúg foar computerspiler: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Ferbied skippen foar computerspiler: {STRING} - +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Jou reservearre spoaren in oare kleur om it makliker te meistjen problemen mei paad-basearre seinblokken te sjen +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Lit bouark aktryf nei gebrûk: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hâld de bouarken foar brêgen, tunnels, ensaf. iepen nei gebrûk +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Groepearje útjeften yn it bedriuwsfinânsjefinster: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Stel de layout yn fan it bedriuwsfinansjefinster + +STR_CONFIG_SETTING_SOUND_TICKER :Ljochtkrante: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Lit in lûd heare by gearfette nijsberjochten +STR_CONFIG_SETTING_SOUND_NEWS :Krante: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Lit in lûd heare at der in kranteberjocht sjen litten wurdt +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Ein fan it jier: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Lit in lûd heare oan de ein fan it jier hokker de prestaasjes fan it bedriuw fergeliket mei dy fan it jier derfoar +STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksje: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Lit in lûd heare nei in sukselfolle bou- as oare aksjes +STR_CONFIG_SETTING_SOUND_CLICK :Op in knop klikke: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Lit in lûd heare at der op in knop klikke wurdt +STR_CONFIG_SETTING_SOUND_DISASTER :Rampen/ûngemakken: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Lit lûdseffekten heare ûnder rampen en ûngemakken +STR_CONFIG_SETTING_SOUND_VEHICLE :Fiertugen: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Lit lûdseffekten fan fiertugen heare +STR_CONFIG_SETTING_SOUND_AMBIENT :Omjouwing: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Lit omjouwingslûd fan bygelyks it lânskip, yndustryen en stêden heare + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Stean bouwen fan ynfrastruktuer net ta at der gjin geskikte fiertugen beskikber binne: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :By ynkeakeljen kinst allinnich ynfrastruktuer bouwe foar typen ynfrastruktuer dêr't ek fiertúgen foar beskikber binne. +STR_CONFIG_SETTING_MAX_TRAINS :Maksimaal oantal treinen per bedriuw: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimaal oantal treinen dat in bedriuw hawwe mei +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimaal oantal weinen per bedriuw: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimaal oantal auto's dat in bedriuw hawwe kin +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimaal oantal fleanmasines per bedriuw: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimaal oantal fleanmasines dat in bedriuw hawwe kin +STR_CONFIG_SETTING_MAX_SHIPS :Maksimaal oantal skepen per bedriuw: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimaal oantal skepen dat in bedriuw hawwe kin + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Ferbied treinen foar computerspilers: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :By ynskeakeljen is it ûnmooglik foar kompjûterspilers om treinen te bouwen +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Ferbied auto's foar kompjûterspilers: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :By ynskeakeljen is it ûnmooglik foar kompjûterspilers om auto's te bouwen +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Ferbied fleanmasines foar kompjûterspilers: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :By ynskeakeljen is it ûnmooglik foar kompjûterspilers om fleanmasines te bouwen +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Ferbied skippen foar kompjûterspilers: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :By ynskeakeljen is it ûnmooglik foar kompjûterspilers om skippen te bouwen + +STR_CONFIG_SETTING_AI_PROFILE :Standerd ynstellingsprofyl: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Kies hokker ynstellingsprofyl brûkt wurde moat foar ien of oare AI of foar begjinweardes by it tafoegjen fan in nije AI of Spulskript +STR_CONFIG_SETTING_AI_PROFILE_EASY :Maklik +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Middel +STR_CONFIG_SETTING_AI_PROFILE_HARD :Dreech STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Stea AIs ta yn multiplayer: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :reperaasje skemas binne yn procenten: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS :Standert reparaasjeskema foar treinen: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Stel it standert reparaasjeskema yn foar nije treinen dy't gjin eigen reparaasjeskema kenne +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 dei dagen}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Útskeakele +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standert reparaasjeskema foar weinen: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Stel it standert reparaasjeskema yn foar nije weinen dy't gjin eigen reparaasjeskema kenne +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standert reparaasjeskema foar fleantúgen: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stel it standert reparaasjeskema yn foar nije fleantugen dy't gjin eigen reparaasjeskema kenne +STR_CONFIG_SETTING_SERVINT_SHIPS :Standerd reparaasjeskema foar skippen: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stel it standerd reparaasjeskema yn foar nije skippen dy't gjin eigen reparaasjeskema kenne STR_CONFIG_SETTING_NOSERVICE :Gjin ûnderhald as stikken gean út steat: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :By ynskeakeljen sille fiertugen gjin ûnderhâld krije at sy net kapot gean kinne STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Wagon snelheids limiet: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :By ynskeakeljen sille de faasjelimyten fan de weinen meinaam wurde by it bepalen fan de maksimale faasje foar in trein STR_CONFIG_SETTING_DISABLE_ELRAILS :skeakelje elektryske spoaren út: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :By ynskeakeljen ferfalt de ferplichting spoar te elektrifisearjen foardat dizze troch elektryske treinen brûkt wurde kin STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Oankomst fan earste reau op stasjon fan spyler: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Lit in kranteberjocht sjen at der foar it earst in fiertúch oankomt op in nij stasjon fan de spiler STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Oankomst fan earste reau op stasjon fan tsjinstander: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Lit in kranteberjocht sjen at der foar it earst in fiertúch oankomt op in nij stasjon fan in tsjinstanner STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ûngelokken / rampen: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Lit in kranteberjocht sjen at der in ûngelok of ramp foarfalt STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Bedriuws ynformaasje: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Lit in kranteberjocht sjen at in nij bedriuw starten wurdt of at in bedriuw it risiko rint fallyt te gean STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Iepenje fan yndustryen: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Lit in kranteberjocht sjen at der in nije yndustry iepend STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Slute fan yndustryen: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Lit in kranteberjocht sjen at der in yndustry slút STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Feroarings yn 'e ekonomie: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Lit in kranteberjocht sjen by feroarings yn de wrâldekonomy STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjeferoarings fan yndustryen betsjinne troch it bedriuw: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Lit in kranteberjocht sjen at de produksje fan in yndustry feroaret en dy't ek troch it bedriuw oandien wurde STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjeferoarings fan yndustryen betsjinne troch konkurrint(en): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Lit in kranteberjocht sjen at de produksje fan in yndustry feroaret dy't troch tsjinstanners oandien wurdt STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Produksjeferoarings oare yndustryen: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Lit in kranteberjocht sjen at de produksje fan in yndustry feroaret dy't net troch it bedriuw of tsjinstanners oandien wurdt STR_CONFIG_SETTING_NEWS_ADVICE :Advys / ynformaasje oer bedriuws reauen: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Lit berjochten sjen oer fiertugen dy't oandacht nedich binne STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nije reauen: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Lit in kranteberjocht sjen at der in nij fiertúch beskikber komt STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Feroarings yn akseptearje fan fracht: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Lit berjochten sjen oer feroarings yn de akseptaasje fan guod fan stasjons STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsydzjes: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Lit in kranteberjocht sjen by nijs oer subsydzjes STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Algemiene ynformaasje: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Lit in kranteberjocht sjen by algemiene foarfallen sa as de oankeap fan eksklusive ferfiersrjochten of dykwerkonstruksjes STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Ut STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Gearfetting STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Folslein STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Krante verskient yn kleur yn: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :It jier wêrop kranteberjochten oergean op kleur. Foar dit jier oan binne sy swart/wyt STR_CONFIG_SETTING_STARTING_YEAR :Begjin jier: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jou de ekonomy mear lytse veroarings: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Stea it keapjen fan oandielen ta: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :By slepe, pleats seinen eltse: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tegel{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :By slepe, fêste ôfstân hâlde tusken seinen: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bou semafoor seinen foar it jier: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Brûk sein wurkbalk: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Type sein dat standaard boud wurdt: {STRING} @@ -1220,8 +1520,8 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :route seinen al STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Allegear STR_CONFIG_SETTING_TOWN_LAYOUT :Manier fan dyken bouen foar doarpen en stêden: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :orisjineel -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :bettere dyken +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Orizjineel +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bettere diken STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Soksawat @@ -1229,18 +1529,24 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Doarpen en stê STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Stêden meie spoaroergongen boue: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Wetten oer maximale lûdesdruk foar fleanfjilden: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Yn stêd boue meie: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ferbean -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :tastean -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :tastean, oanpast strittenpatroan +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Ferbean +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tastean +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tastean, oanpast strittepatroan STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Bouen fan beamen yn it spul: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :gjin {RED}(brekt houtseachmûne) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :allinech in reinwâld -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :oerol +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Gjin {RED}(brekt houtseachmûne) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Allinich yn reinwâlden +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Oerol STR_CONFIG_SETTING_TOOLBAR_POS :Plak fan de haad wurkbalk: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS :Posysje fan statusbar: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT :Maximum oantal non-sticky finsters: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS :Posysje fan statusbalke: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Útskeakele +STR_CONFIG_SETTING_SOFT_LIMIT :Maksimaal oantal non-sticky finsters: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :útskeakele +STR_CONFIG_SETTING_ZOOM_MIN :Maksimum zoom in nivo: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX :Maksimum zoom out nivo: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normaal @@ -1248,38 +1554,83 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Tempo fan stêdsútwreiding: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Tempo fan stêdsútwreiding STR_CONFIG_SETTING_TOWN_GROWTH_NONE :gjin STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :langsaam STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :gewoan STR_CONFIG_SETTING_TOWN_GROWTH_FAST :snel STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Hiel snel +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Gjin STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Begjin stêdgrutte fermenigfuldiger: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Helje frjemde stikken dyk fourt by it bouen fan nije routes: {STRING} - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}konstruksje +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :hânmjittich +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrysk +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrysk +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribusjemodus foar pazzazjiers: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribusjemodus foar post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribúsjemodus foar de PANSERFRACHT-klasse: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribusjemodus foar oare frachtklassen: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribusjekrektens: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE :Effekt fan ôfstan op fraach: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE :Tal tebekkearende frach foar de symmetryske modus: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Sêdens fan de koartste route wêrboppe routes mei in hegere kapasiteit brûkt wurde sille: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Gauris binne der meadere routes betusken twa stasjons. Frachtdistribusje sil foarearst de koartste route sêdzje, dêrnei de ien nei koartste route ensf. Sêdens wurdt bepaald troch in skatting fan de kapasiteit en pland gebrûk. Sadree it alle routes sêden hat en der noch hieltyd fraach is sil it alle routes oerlade mei in foarkar foar routes mei de heechste kapasiteit. Meestentiids sil it algoritme de kapasiteit net akkuraat ynskatte. Dizze ynstelling stelt jo yn steat hokker persintaazje fan de koartere route sêde wurde moat foardat oerstapt wurdt op de folgjende langere route. Set him op minder as 100% om grôtfolle stasjons foar te wêzen by in oerskatting fan de kapasiteit. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Faasje-ienheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wannear't in faasje sichtber is yn de interface de selektearre ienheid brûke +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Ymperiaal (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrysk (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Fermogen-ienheid fiertugen: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Wannear't it fermogen fan in fiertúch sichtber is yn de interface de selektearre ienheiden brûke +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Ymperiaal (pk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrysk (pk) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Wicht-ienheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Wannear't der wichten sichtber binne yn de interface de selektearre ienheiden brûke +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Ymperiaal (koarte ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrysk (t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Folume-ienheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wannear't der folumes sichtber binne yn de interface de selektearre ienheiden brûke +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Ymperiaal (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrysk (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Ymperiaal (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrysk (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Hichte-ienheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wannear't der hichten sichtber binne yn de interface de selektearre ienheiden brûke +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Ymperiaal (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrysk (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisaasje +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Ôfbyldings +STR_CONFIG_SETTING_SOUND :{ORANGE}Lûd +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemien +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}konstruksje +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nijs / Adviseurs +STR_CONFIG_SETTING_COMPANY :{ORANGE}Bedriuw STR_CONFIG_SETTING_VEHICLES :{ORANGE}Auto's -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjons -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomy +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Natuerkundig model +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Route +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beheinings +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Rampen / Ûngelokken +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Wrâldgeneraasje +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omwrâld +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoriteiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Stêd +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}yndustryen +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Frachtdistribusje STR_CONFIG_SETTING_AI :{ORANGE}Tsjinstânners -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Lit moglikheden sjen -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaksje -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seinen -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Fracht ôfhanneling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer spilers -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatysk fernije -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Ûnderhâld -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Route -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Treinen -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Stêd -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}yndustryen STR_CONFIG_SETTING_PATHFINDER_OPF :Orizjiniel STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1290,9 +1641,13 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder foar STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder foar skippen: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Omkeare fan treinen by seinen: {STRING} -STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}veroarje wearde +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Feroarje wearde # Config errors +STR_CONFIG_ERROR_ARRAY :{WHITE}... flater in reeks '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ûnjildige wearde '{STRING}' foar '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :Dat strykt net mei dizze ferzje fan OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ûnbekind # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1305,9 +1660,11 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Lânskip STR_INTRO_MULTIPLAYER :{BLACK}Multispiler STR_INTRO_GAME_OPTIONS :{BLACK}Spul Opsjes -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avansearre ynstellings +STR_INTRO_HIGHSCORE :{BLACK}Topskoretabel +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ynstellings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF ynstellings STR_INTRO_ONLINE_CONTENT :{BLACK}Sikje online ynhâld +STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spulskriptynstellings STR_INTRO_QUIT :{BLACK}Ôfslúte STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begjin in nei spul. Ctrl + klik slaat kaartynstelling oer @@ -1323,9 +1680,11 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selektea STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selektear 'boartersguodlân' lânskip STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Lit spul opsjes sjen -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Lit avansearre ynstellings sjen +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Topskoretabel sjen litte +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ynstellings sjen litte STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Lit NewGRF ynstellings sjen STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Strún ynternet ôf om nije ynhâld del te heljen +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}AI/Spulskriptynstellings sjen litte STR_INTRO_TOOLTIP_QUIT :{BLACK}Slút 'OpenTTD' ôf @@ -1360,6 +1719,7 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spielje STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Gigantyske sloopmodus: {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels Meie inoar krúse: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Grutte fleantúgen stoarte net faak del op lytse fleanfjilden: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Feroarje de maksimale kaarthichte: {ORANGE}{NUM} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gêrs lânskip STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Snie lânskip STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropysk lânskip @@ -1376,8 +1736,8 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Lit kleu STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Lit kleurskema sjen fan bussen en frachtauto's STR_LIVERY_SHIP_TOOLTIP :{BLACK}Lit kleurskema sjen fan skippen STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Lit kleurskema sjen fan fleantúgen -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Kies haadkleur fan it selektearre kleurskema -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Kies twadde kleur fan it selektearre kleurskema +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Kies de haadkleur foar it selektearre kleurskema. Ctrl+Klik stelt dizze kleur foar alle skema's yn. +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Kies de twadde kleur fan it selektearre kleurskema. Ctrl+Klik stelt dizze kleur yn foar alle skema's STR_LIVERY_STEAM :Steam motor STR_LIVERY_DIESEL :Diesel motor @@ -1406,18 +1766,23 @@ STR_LIVERY_FREIGHT_TRAM :Fracht Tram STR_FACE_CAPTION :{WHITE}Gesicthseleksje STR_FACE_CANCEL_TOOLTIP :{BLACK}Nije gesichtseleksje annulearje STR_FACE_OK_TOOLTIP :{BLACK}Akseptear nije gesichtseleksje +STR_FACE_RANDOM :{BLACK}Samar wat STR_FACE_MALE_BUTTON :{BLACK}Man STR_FACE_MALE_TOOLTIP :{BLACK}Selektear manlike gesichten STR_FACE_FEMALE_BUTTON :{BLACK}Frou STR_FACE_FEMALE_TOOLTIP :{BLACK}Selektear froulike gesichten STR_FACE_NEW_FACE_BUTTON :{BLACK}Nei Gesicht -STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Meistje willekeurich nij gesicht +STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Meitsje samar in nij gesicht STR_FACE_ADVANCED :{BLACK}Afansjearre +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Wiidweidige gesichtseleksje +STR_FACE_SIMPLE :{BLACK}Simpel +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Ienfâldige gesichtseleksje STR_FACE_LOAD :{BLACK}Laad STR_FACE_LOAD_TOOLTIP :{BLACK}Laad standaard gesicht STR_FACE_FACECODE :{BLACK}Spielers gesicht noemer STR_FACE_SAVE :{BLACK}Opslaan +STR_FACE_SAVE_TOOLTIP :{BLACK}Favorite gesicht opslaan STR_FACE_EUROPEAN :{BLACK}Jeropeesk STR_FACE_SELECT_EUROPEAN :{BLACK}Selektearje jeropeeske gesichten STR_FACE_AFRICAN :{BLACK}Afrikaans @@ -1427,11 +1792,34 @@ STR_FACE_NO :# STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Snorren en earbellen STR_FACE_HAIR :Hier: STR_FACE_HAIR_TOOLTIP :{BLACK}Veroarje hier +STR_FACE_EYEBROWS :Wynbrauwen: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Wynbrauwen feroarje STR_FACE_EYECOLOUR :Kleur eagen: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Feroarje eechkleur STR_FACE_GLASSES :Bril: +STR_FACE_GLASSES_TOOLTIP :{BLACK}Bril oansette +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Bril feroarje +STR_FACE_NOSE :Noas: +STR_FACE_NOSE_TOOLTIP :{BLACK}Noas feroarje +STR_FACE_LIPS :Lippen: +STR_FACE_MOUSTACHE :Snor: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Feroarje lippen of snor +STR_FACE_CHIN :Kin: +STR_FACE_CHIN_TOOLTIP :{BLACK}Feroarje kin +STR_FACE_JACKET :Jas: +STR_FACE_JACKET_TOOLTIP :{BLACK}Feroarje jas +STR_FACE_COLLAR :Kraach: +STR_FACE_COLLAR_TOOLTIP :{BLACK}Feroarje kraach +STR_FACE_TIE :Strik: +STR_FACE_EARRING :Earbel: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Feroarje strik of earbel # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Advertearre +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Kies tusken in advertearre (ynternet) of in net-advertearre (LAN) spul +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nee +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Namme fan spieler: STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Namme @@ -1449,26 +1837,36 @@ STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Taal: { STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Lânskip: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Lângrutte: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tsjinnerferzje: {WHITE}{STRING} -STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server adres: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Tsjinneradres: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER NET BESKIKBER STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER VOL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}FERKEARDE FERZJE +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}FERKEARDE NEWGRF +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Server sykje STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Tsjinner tafoegje STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start tsjinner STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start dien eigen tsjinner +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Fier dyn namme in # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start in spul foar multispilers STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spulnamme: +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Wachtwurd ynstelle +STR_NETWORK_START_SERVER_UNADVERTISED :Nee +STR_NETWORK_START_SERVER_ADVERTISED :Ja +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} bedriuw{P "" en} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksimaal tal bedriuwen: STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} taskôger{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimaal tal taskôgers: +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Sprutsen taal: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Fier in namme yn foar it networkspul # Network game languages ############ Leave those lines in this order!! @@ -1513,25 +1911,41 @@ STR_NETWORK_LANG_LATVIAN :Letsk # Network game lobby +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}BEDRIUWSYNFORMAASJE +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Bedriuwsnamme: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Bedriuwswearde: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Prestaasje: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Auto's: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stasjons: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spilers: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nei Bedriuw +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Nei bedriuw oprjochtsje +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Spul taskôgje +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Spul besjen as taskôger # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Ferbyning meitsje... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Ferbyning meitsje... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorisearje... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Wachtsje... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Lân delhelje... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Data ferwurkje... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrearje... +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Spulynformaasje ophelje... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Bedriuwsynformaasje ophelje... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} Delhelle oant STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} delhelle +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Ferbining ferbrekke +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tsjinner is beskerme. Fier wachtwurd yn +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Bedriuw is beskerme. Fier wachtwurd yn # Network company list added strings STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Taskôgje @@ -1540,14 +1954,20 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nei Bedr # Network client list STR_NETWORK_CLIENTLIST_KICK :Skoppe STR_NETWORK_CLIENTLIST_GIVE_MONEY :Jouw jild +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Priveeberjocht STR_NETWORK_SERVER :Tsjinner +STR_NETWORK_SPECTATORS :Taskôgers +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Taskôger # Network set password +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Bedriuwswachtwurd # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Mei spielje +STR_COMPANY_VIEW_PASSWORD :{BLACK}Wachtwurd +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Bedriuwswachtwurd ynstelle # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Stjoer @@ -1562,30 +1982,53 @@ STR_NETWORK_CHAT_TO_CLIENT :[Privee] Nei {S STR_NETWORK_CHAT_ALL :[Yderiin] {STRING}: {WHITE}{STRING} # Network messages +STR_NETWORK_ERROR_NOSERVER :{WHITE}Koe gjin networkspullen fine +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Networkspul ferbining kwyt +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Koe opslein spul net laden STR_NETWORK_ERROR_SERVER_START :{WHITE}Koe de tsjinner net starte STR_NETWORK_ERROR_CLIENT_START :{WHITE}Koe gjin ferbyning meitsje +STR_NETWORK_ERROR_TIMEOUT :{WHITE}Ferbining #{NUM} ferrûn +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Ferkeard wachtwurd +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}De tsjinner is vol STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Do stjoerst tevolle opdrachten ny de server ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :algemiene flater STR_NETWORK_ERROR_CLIENT_SAVEGAME :koe it lân net lade +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :ferbining kwyt +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Ferkearde NewGRF +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :net autorisearre +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ûnjildich of ûnferwacht pakket ûnfange +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :ferkearde revyzje +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :namme is al beset +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :ferkeard wachtwurd STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :joech tevolle opdrachten +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :kaart delheljen duorret te lang +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :kaart ferwurkje duorret te lang ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mooglik ferbinning kwyt -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}De lêste{NUM} secondes {P "" s} is gjin data oankom fan e server +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}De lêste{NUM} seconde{P "" s} is gjin data oankom fan e server # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :hânmjittich +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spulskript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} der is ien bykommen(Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} is in neie taskôger STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat syn/har namme oanpast nei {STRING} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tsjinner hat de ferbining sluten # Content downloading window +STR_CONTENT_TITLE :{WHITE}Ynhâld delheljen STR_CONTENT_TYPE_CAPTION :{BLACK}Type STR_CONTENT_NAME_CAPTION :{BLACK}Namme +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Alles selektearje +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Alles deselektearje +STR_CONTENT_OPEN_URL :{BLACK}Webside besykje +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Webside foar dizze ynhâld besykje STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Delhelje STR_CONTENT_DETAIL_NAME :{SILVER}Namme: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Ferzje: {WHITE}{STRING} @@ -1593,14 +2036,17 @@ STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskriu STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Type: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Bestângrutte: {WHITE}{BYTES} +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... delheljen fan dizze ynhâld is net mooglik # Order of these is important! STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_SCENARIO :Lânskip STR_CONTENT_TYPE_HEIGHTMAP :Hichtemap +STR_CONTENT_TYPE_GAME_SCRIPT :Spulskript # Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Ynhâld delheljen... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Freechet bestânen an... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Besich met delheljen fan {STRING} ({NUM} fan {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Delheljen dien @@ -1612,12 +2058,23 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... ferb STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... bestân koe net opslein wurde STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kin it delhelle bestân net útpakke +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Missende ôfbyldings +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, ôfbyldings delheljen +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nee, OpenTTD ôfslute # Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}Trochsichtigenopsjes # Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Frachtstreamleginda +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Gjin +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selektearje bedriuwen om sjen te litten # Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}net brûkt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}fersêde +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}oerbeladen # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ut @@ -1626,12 +2083,15 @@ STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Akseptea STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Levert: {GOLD}{CARGO_LIST} # Join station window +STR_JOIN_STATION_CAPTION :{WHITE}Stasjon gearfoegje +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}In apart stasjon bouwe STR_JOIN_WAYPOINT_CAPTION :{WHITE}Kontrôlepost gearfoegje STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}In apart kontrôlepost bouwe # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoarwei Konstruksje +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrifisearre Spoarwei Bouwe STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorail Konstruksje STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev Konstruksje @@ -1644,6 +2104,10 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bou in s STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bou in spoartunnel STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Set bouen/fuortheljen foar spoaren en stopljochten oan/út +STR_RAIL_NAME_RAILROAD :Spoarwei +STR_RAIL_NAME_ELRAIL :Elektrifisearre spoarwei +STR_RAIL_NAME_MONORAIL :Monorail +STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Treindepot Rjochting @@ -1656,15 +2120,20 @@ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selectea # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Treinstasjon Seleksje STR_STATION_BUILD_ORIENTATION :{BLACK}Rjochting +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Selektearje oriïntaasje fan treinstasjon STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Oantal banen STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selektear oantal banen foar treinstasjon STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Stasjon lengte STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selektear lengte fan treinstasjon +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selektearje type stasjon om te bouwe +STR_STATION_CLASS_DFLT :Standert stasjon STR_STATION_CLASS_WAYP :Kontrôleposten # Signal window +STR_BUILD_SIGNAL_CAPTION :{WHITE}Seinseleksje +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Bloksein (semafoar){}Dit is it ienfâldigste type sein wat mar ien trein in in blok tasteat # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selektear Spoarbrêge @@ -1683,6 +2152,7 @@ STR_BRIDGE_NAME_TUBULAR_STEEL :Buis, Stiel # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Wegenbou +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramwei Konstruksje STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bou wei STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bou autodepot (om auto's te bouen en te únderhâlden) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bou busstasjon @@ -1694,10 +2164,20 @@ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Wikselje # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Autodepot rjochting STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies rjochting foar autodepot +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Tramdepot Rjochting +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies rjochting foar tramdepot # Road vehicle station construction window +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Busstation Rjochting +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Selektearje rjochting fan busstasjon +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Frachtstasjon Rjochting +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Rjochting fan Tramstasjon +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Kies rjochting fan frachttramstasjon # Waterways toolbar (last two for SE only) +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Wetterwei Konstruksje +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Wetterwei +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Bou akwadukt. Shift skeakelt tusken bouwe/taksearje fan de kosten STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Tsjut wettergebied oan.{}Meitsje in kanaal, of ast' Ctrl op seenivo yndrukst, dan oerstreamt it gebied deromhinne STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Rivier pleatse. @@ -1707,9 +2187,11 @@ STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Rivier p STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Haven # Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Fleanfjilden # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Fleanfjild Seleksje +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Kies grutte/type fleanfjild STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Patroan {NUM} STR_AIRPORT_SMALL :Lyts @@ -1746,7 +2228,7 @@ STR_OBJECT_CLASS_TRNS :Stjoerders STR_PLANT_TREE_CAPTION :{WHITE}Beammen STR_PLANT_TREE_TOOLTIP :{BLACK}Selektear soart beam. As it fakje al in beam hat, sil dit mear beamen tafoege fan it mixed soart ûnôfhinklike fan it selekteare soart STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Samar wat beammen -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantsje samar wat beammen yn it lânskip +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantsje beammen samar troch it lânskip # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Lân Generaasje @@ -1755,6 +2237,7 @@ STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definiea STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Fergrutsje gebiet om te ferheegjen/ferleegjen STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Ferlyts gebiet om te ferheegjen/ferleegjen STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Meitsje samar wat lân +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Nij senario meitsje STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Set it lânskip werom STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Alle spilerbesittings fan'e kaart fuortsmite @@ -1794,6 +2277,8 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Samar # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Betelje nije yndustry STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostet: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bouwe +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansierje # Industry cargoes window STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Yndustry aksepteare @@ -1801,6 +2286,10 @@ STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hûzen STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Lit produksjeketting sjen STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Lit it oanbod en akseptaasje fan yndustrie sjen STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link ny de lytse map +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Fracht selektearje +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selektearje de fracht om sjen te litte +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Selektearje yndustry +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selektearje de yndustry om sjen te litte # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Lân Gebiet Ynformaasje @@ -1814,11 +2303,15 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramdyke STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Treinsporteigener: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemiente: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neat +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Boud: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Fleanfjild klasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Fleanfjild namme: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Fleanfjild tile namme: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akseptearre fracht: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Faasjelimyt spoar: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Faasjelimyt dyk: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotsen @@ -1829,12 +2322,36 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Fjilden STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snie STR_LAI_CLEAR_DESCRIPTION_DESERT :Woastine +STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spoarbaan +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spoarbaan mei blokseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spoarbaan mei foar-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spoarbaan mei útgong-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spoarbaan mei kombi-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spoarbaan mei paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spoarbaan mei ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spoarbaan mei blok- en foar-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spoarbaan mei blok- en útgong-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spoarbaan mei blok- en kombi-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spoarbaan mei blok- en paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spoarbaan mei blok- en ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spoarbaan mei foar- en útgong-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spoarbaan mei foar- en kombi-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spoarbaan mei foar- en paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spoarbaan mei foar en ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spoarbaan mei útgong- en kombi-seinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spoarbaan mei útgong- en paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spoarbaan mei útgong en ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spoarbaan mei kombi- en paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spoarbaan mei kombi- en ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spoarbaan mei paad- en ienrjochtings paadseinen +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} treindepot STR_LAI_ROAD_DESCRIPTION_ROAD :Wei STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Wei mei strjitteljochten STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Wei mei beammen oan 'e siden STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Autodepot STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Dyk/spoar krusing +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Trambaan # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (yn oanbou) @@ -1844,13 +2361,20 @@ STR_LAI_TREE_NAME_RAINFOREST :Reinwâld STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktussen STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Treinstasjon +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Fleantúchhangaar STR_LAI_STATION_DESCRIPTION_AIRPORT :Fleanfjild +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Frachtweinlaadgebiet STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushalte STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Haven STR_LAI_STATION_DESCRIPTION_BUOY :Boei STR_LAI_STATION_DESCRIPTION_WAYPOINT :Kontrôlepost STR_LAI_WATER_DESCRIPTION_WATER :Wetter +STR_LAI_WATER_DESCRIPTION_CANAL :Kanaal +STR_LAI_WATER_DESCRIPTION_LOCK :Slûs +STR_LAI_WATER_DESCRIPTION_RIVER :Rivier +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Kust of igge +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Dok # Industries come directly from their industry names @@ -1873,6 +2397,7 @@ STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Houten brêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonnen brêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Buis Brêge +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akwadukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sendmast STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Fjoertoer @@ -1883,7 +2408,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-2013 It OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 It OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan @@ -1893,100 +2418,236 @@ STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laad Sce STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laad Hichtemap STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Hichtekaart bewarje STR_SAVELOAD_HOME_BUTTON :{BLACK}Hjir klikke om nei standert opslach- en laadtriemtafel te gean +STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} frij STR_SAVELOAD_LIST_TOOLTIP :{BLACK}List fan skiven, mappen en bestânen +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Op dit stuit selektearre namme foar opslein spul STR_SAVELOAD_DELETE_BUTTON :{BLACK}Fuortsmite +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}It no selektearre opsleine spul fuortsmite STR_SAVELOAD_SAVE_BUTTON :{BLACK}Opslaan +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}It hjoeddeisk spul opslaan ûnder de selektearre namme STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laad -STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laad selektjeare spul +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laad selektearre spul +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Laad de selektearre hichtekaart STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spul Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Gjin ynformaasje beskikber STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} +STR_SAVELOAD_OSKTITLE :{BLACK}Fier in namme yn foar it opsleine spul # World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Wrâldgeneraasje STR_MAPGEN_MAPSIZE :{BLACK}Lângrutte: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selektearje de grutte fan de kaart yn tegels. It tal beskikbere tegels sil leger lizze. STR_MAPGEN_BY :{BLACK}* +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Oantal stêden: +STR_MAPGEN_DATE :{BLACK}Datum: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Oantal yndustrien: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimale kaarthichte: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Ferheegje de maksimale hichte fan bergen op de kaart mei 1 +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Ferleegje de maksimale hichte fan bergen op de kaart mei 1 +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hichte sniegrins: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Sniegrins ien omheech ferpleatsje: +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Sniegrins ien nei beneden ferpleatsje: +STR_MAPGEN_LAND_GENERATOR :{BLACK}Lângenerator: +STR_MAPGEN_TREE_PLACER :{BLACK}Boskalgoritme: +STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terreintype: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Seenivo: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rivieren: +STR_MAPGEN_SMOOTHNESS :{BLACK}Sljochtens: +STR_MAPGEN_VARIETY :{BLACK}Lânskipsfariaasje: +STR_MAPGEN_GENERATE :{WHITE}Generearje # Strings for map borders at game generation - +STR_MAPGEN_BORDER_TYPE :{BLACK}Kaartrânen: +STR_MAPGEN_NORTHWEST :{BLACK}Noardwest +STR_MAPGEN_NORTHEAST :{BLACK}Noardeast +STR_MAPGEN_SOUTHEAST :{BLACK}Súdeast +STR_MAPGEN_SOUTHWEST :{BLACK}Súdwest +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Frij foarmje +STR_MAPGEN_BORDER_WATER :{BLACK}Wetter +STR_MAPGEN_BORDER_RANDOM :{BLACK}Samar wat +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Samar wat +STR_MAPGEN_BORDER_MANUAL :{BLACK}Hânmjittich + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotaasje hichtekaart: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Namme hichtekaart: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grutte: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maksimale kaarthichte oanpasse +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{BLACK}Sniehichte oanpasse +STR_MAPGEN_START_DATE_QUERY_CAPT :{BLACK}Startjier oanpasse # SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}Type Senario +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Sljocht lân +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}In sljocht lânskip generearje +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Samar in lânskip +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hichte sljocht lânskip: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}De hichte fan it sljochte lânskip oanpasse +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Hichte sljocht lânskip ien omheech ferpleatse +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Hichte sljocht lânskip oanpasse # Map generation progress +STR_GENERATION_WORLD :{WHITE}Generearret Wrâld... +STR_GENERATION_ABORT :{BLACK}Ofbrekke +STR_GENERATION_ABORT_CAPTION :{WHITE}Wrâldgeneraasje ôfbrekke +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Witte jo seker dat jo de generaasje ôfbrekke wolle? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% kompleet STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}Wrâldgeneraasje +STR_GENERATION_RIVER_GENERATION :{BLACK}Riviergeneraasje +STR_GENERATION_TREE_GENERATION :{BLACK}Bostgeneraasje STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekt meitsje +STR_GENERATION_CLEARING_TILES :{BLACK}Rûchtes en rotsen generearje +STR_GENERATION_SETTINGUP_GAME :{BLACK}Set spul klear +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Trochrint tegellus +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Fiert skript út +STR_GENERATION_PREPARING_GAME :{BLACK}Riedt spul ta # NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF-ynstellings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}útgebreide NewGRF ynformaasje STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}NewGRF bestânen diet brûkt wurde STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}NewGRF bestânen diet net brûkt binne STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selektearje ynstellings: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter namme: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Selektearre ynstellings lade STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Sla ynstellings op +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Sla dizze list op as foarynstelling STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Jou dizze ynstellings in namme -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Verwiderje ynstellings -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Verwiderje de selektjere ynstellings +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Ferwiderje ynstellings +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Ferwiderje de selektearre ynstellings STR_NEWGRF_SETTINGS_ADD :{BLACK}Tafoeging STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Foeg de selektjere NewGRF ta oan dyn ynstellings STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Lit sykje ny nije bestanden STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Fernij list my beskikbere NewGRF bestanden -STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fourthelje +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fuorthelje +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Smyt de selektearre NewGRF út de list STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Pleats heger STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Set selektjere NewGRF boppe oan de list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Pleats leger STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Set selektjere NewGRF ûnderoan de list +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Upwurdearje +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}In list fan ynstalearre NewGRF bestânen +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parameters ynstelle +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Parameters sjen litte +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Skeakel palet +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Skeakel it palet fan de selektearre NewGRF.{}Dit kinst dwaan at de ôfbyldings út de NewGRF der rôze útsjoche +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Feroarings tapasse STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Sykje ynhâld op ynternet +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Gean nei oft de missende ynhâld online fûn wurde kin +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Bestânsnamme: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Ferzje: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Leechte noch wurkjende ferzje: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palet: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameters: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}gjin ynformaasje beskikber +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Keppelt bestând koe net fûn wurde STR_NEWGRF_SETTINGS_DISABLED :{RED}Útskeakele STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Dat strykt net mei dizze ferzje fan OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Sla ynstellings op +STR_SAVE_PRESET_TITLE :{BLACK}Jou dizze ynstellings in namme +STR_SAVE_PRESET_CANCEL :{BLACK}Annulearje +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ynstellings net feroarje +STR_SAVE_PRESET_SAVE :{BLACK}Opslaan + # NewGRF parameters window +STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Feroarje NewGRF-parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Slút STR_NEWGRF_PARAMETERS_RESET :{BLACK}Set werom STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Set alle ynstellings op normale wearde +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Tal parameters: {ORANGE}{NUM} # NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Ynspektearje - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Haad +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ynspektearje it objekt fan it haadmêd +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} op {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :spoar soart +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF fariabele 60+x parameter (heksadesimaal) # Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Rjochted ôfbylding {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Folgend flak +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gean fierder nei de folgjende ôfbylding, sla pseudo/werkleure/lettertype ôfbyldings oer en begjin wer oernei at it ein berikke is +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gean nei ôfbylding +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gean nei de ôfbylding yn kwestje. Sla net 'normale' ofbyldings oer STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Foarig flak +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gean tebek nei de foarige ôfbylding, sla pseudo/werkleure/lettertype ôfbyldings oer en begjin wer oernei at it begjin berikke is +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Represintaasje fan de no selektearre ôfbylding. Dizze wurdt net rjochte by it tekenjen +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Ferweech de ôfbylding, feroarje de X en Y útslach +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X útslach: {NUM}, Y útslach: {NUM} (Absolút) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X útslach: {NUM}, Y útslach: {NUM} (Relatyf) +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies ôfbylding +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pak in ôfbylding fan alle lokaasjes op it skerm ôf STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Gea ny flak # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warskôging: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Flater: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatale flater: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Der hat in fatale NewGRF-flater plakfûn: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} sil net wurkje kinne mei de TTDPatch-ferzje dy't troch OpenTTD meldt wurdt +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} is makke foar de {STRING}-ferzje fan TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} makke om te brûken tegeare my{STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Unjildige parameter foar {1:STRING}: parameter {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} moat earder laden wurde as {STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} moat letter laden wurde as {STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} is een OpenTTD-ferzje nedich dy't better is as {STRING} +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :it GRF-bestând dat er besyket oer te setten STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tevolle NewGRF's binne laden +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :It laden fan {1:STRING} as in statyske NewGRF mei {STRING} soe liede kinne ta desyngronisaasje +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Unferwachte ôfbylding (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unbekinde aksje 0 eigenskip {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Hat besocht in ûnjildich ID te brûken (sprite {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} befettet in korrupte ôfbylding. Alle korrupte ôfbyldings sille mei in read fraachteken markearre wurde (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Befet meardere Aksje-8 fermeldings (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Ein fan pseudo-ôfbylding lêze (sprite {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}It hjoeddeiske basisôfbyldingspakket misset in oantal ôfbylding.{}Besykje dit ôfbyldingspakket te fernijen +STR_NEWGRF_ERROR_GRM_FAILED :Oanfrege GRF-bron is net beskikber (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wie útskeakele troch {STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Unjildich/ûnbekind ôfbyldingsútlisformaat (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Warskôging! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jo stean op it punt oanpassings te meitsjen yn in aktyf spul. Dit kin OpenTTD in flater oprinne litte of de it spul brekke. Fier gjin flatermeldings yn oer dizze probelem.{}Witte jo wierlik seker dat dat jo dit wolle? +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kin bestând net tafoege: duplikaat GRF ID +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Keppele bestân koe net fûn wurde (kompatibel GRF ynladen) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kin bestând net tafoege: NewGRF bestânslimyt berikke +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibile GRF(s) ynladen foar de missende bestânen +STR_NEWGRF_DISABLED_WARNING :{WHITE}Missende GRF bestânen binne útskeakele +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Missende GRF-bestânen +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Ferfetsje fan it spul kin in flater yn OpenTTD feroarsaaksje. Fier gjin flatermeldings yn at dit bart.{}Witte jo seker dat jo it spul ferfetjse wolle? # NewGRF status STR_NEWGRF_LIST_NONE :gjin STR_NEWGRF_LIST_ALL_FOUND :Alle bestânnen oanwêzig +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Kompatibile bestânen fûn STR_NEWGRF_LIST_MISSING :{RED}Dêr misse bestânen # NewGRF 'it's broken' warnings +STR_NEWGRF_BROKEN :{WHITE}It gedrach fan NewGRF '{0:STRING}' sil wierskynlik desyngronisaasjes en/of flater feroarsaakje +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Hy hat de kapasiteit foar fiertúch '{1:ENGINE}' oanpasse wylst dizze net yn in depot wie of werútrêste waard # 'User removed essential NewGRFs'-placeholders for stuff without specs @@ -1995,24 +2656,46 @@ STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :<ûnjildich fiertúch> + # NewGRF scanning window # Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}Boerdenlist - {COMMA} Boerd{P "" en} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Haadletters meinimme +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Wol as net op haadletters lette by it filterjen fan de boerden # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Feroarje tekst fan buordsje +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gean nei it folgjende boerd +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gean ne it foarige boerd +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Fier in namme yn foar it boerd # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Stêden +STR_TOWN_DIRECTORY_NONE :{ORANGE}- Gjin - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Stêdsnammen - klik op de namme om it byld op dy stêd te sintrearen. Ctrl+klick iepent in nij sichtber diel op de stêd lokaasje +STR_TOWN_POPULATION :{BLACK}Wrâldpopulaasje: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Ynwenners: {ORANGE}{COMMA}{BLACK} Hûzen: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passazjiers lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Guod nedich foar stêdsgroei: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ferplichte +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ferplichte yn de winter +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} ôflevere +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (noch nedich) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (ôflevere) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Stêd groeit eltse {ORANGE}{COMMA}{BLACK}{NBSP}{P dei dagen} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stêd groeit eltse {ORANGE}{COMMA}{BLACK}{NBSP}{P dei dagen} (subsidearre) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Stêd groeit{RED}net{BLACK} +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Lûdslimyt yn dizze stêd: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze stêd STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Gemeente STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Lit ynformaasje sjen oer de gemeente @@ -2040,18 +2723,49 @@ STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Grutte promoasj STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Subsidiearje lokale weiferbouwing STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bou stânbyld fan bedrieuwseigner STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Betelje bouw fan nije gebouwen +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Keapje eksklusive ferfiersrjochten +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Keapje it lokale bestjoer om STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Begjin in lytse advertinsjecampanje, om mear passazjiers en fracht nei dyn transporttsjinsten te lûken.{}Kostet: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begjin in middelgrutte advertinsjecampanje, om mear passazjiers en fracht nei dyn transporttsjinsten te lûken.{}Kostet: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Begjin in grutte advertinsjecampanje, om mear passazjiers en fracht nei dyn transport tsjinsten te lûken.{}Kostet: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Subsidearje de fernijing fan it dikenstelsel yn dizze stêd. Jout tsjin de seis moannen grutte oerlêst foar it ferkear {}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bou in stânbyld ter eare fan jo bedriuw.{}Kostet: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Subsidearje de bou fan nije kommersjele gebouwen yn dizze stêd.{}Kosten: {CURRENCY_LONG} # Goal window +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalde doelen STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Gjin - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Net fan tapassing - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} # Goal question window - -### Start of Goal Question button list +STR_GOAL_QUESTION_CAPTION_QUESTION :Fraach +STR_GOAL_QUESTION_CAPTION_INFORMATION :Ynformaasje +STR_GOAL_QUESTION_CAPTION_WARNING :Warskôging +STR_GOAL_QUESTION_CAPTION_ERROR :Flater + +############ Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Annulearje +STR_GOAL_QUESTION_BUTTON_OK :Okee +STR_GOAL_QUESTION_BUTTON_NO :Nee +STR_GOAL_QUESTION_BUTTON_YES :Ja +STR_GOAL_QUESTION_BUTTON_DECLINE :Ofwize +STR_GOAL_QUESTION_BUTTON_ACCEPT :Akseptearje +STR_GOAL_QUESTION_BUTTON_IGNORE :Negearje +STR_GOAL_QUESTION_BUTTON_RETRY :Opnij +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Foarrige +STR_GOAL_QUESTION_BUTTON_NEXT :Folgjende +STR_GOAL_QUESTION_BUTTON_STOP :Stopje +STR_GOAL_QUESTION_BUTTON_START :Start +STR_GOAL_QUESTION_BUTTON_GO :Gean +STR_GOAL_QUESTION_BUTTON_CONTINUE :Trjochgean +STR_GOAL_QUESTION_BUTTON_POSTPONE :Utstelle +STR_GOAL_QUESTION_BUTTON_SURRENDER :Oerjaan +STR_GOAL_QUESTION_BUTTON_CLOSE :Slute +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsydzjes @@ -2063,38 +2777,79 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik om te sentrearen op yndusty/stêd. Ctrl+klick iepent in nij sichtber diel op yndustry/stêd lokaasje # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Ferhalenboek +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globaal ferhalenboek +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Ljep nei in spesifike pagina troch him út dizze list te selektearjen. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Foarige +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gean nei de foarige pagina +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Folgjende +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gean nei de folgjende pagina # Station list window +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hâld CTRL yndrukt om meardere objekten te selektearje +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stasjon{P "" s} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Gjin - # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Wachtsjend: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ûnderweis fan {STATION} ôf) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservearre foar laden) 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_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stasjonwurdearing sjen litte +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Groepearje by +STR_STATION_VIEW_WAITING_STATION :Stasjon: Wachtsjend +STR_STATION_VIEW_WAITING_AMOUNT :Tal: Wachtsjend +STR_STATION_VIEW_PLANNED_STATION :Stasjon: Pland +STR_STATION_VIEW_PLANNED_AMOUNT :Tal: Pland +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} fanôf {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} fia {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} nei {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} fan in ûnbekind stasjon +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} nei elts stasjon +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} fia elts stasjon +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} fanôf dit stasjon +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopjet by dit stasjon +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} foar dit stasjon +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Boarne-Fia-Bestimming +STR_STATION_VIEW_GROUP_S_D_V :Boarne-Bestimming-Fia +STR_STATION_VIEW_GROUP_V_S_D :Fia-Boarne-Bestimming +STR_STATION_VIEW_GROUP_V_D_S :Fia-Bestimming-Boarne +STR_STATION_VIEW_GROUP_D_S_V :Bestimming-Boarne-Fia +STR_STATION_VIEW_GROUP_D_V_S :Bestimming-Fia-Boarne ############ range for rating starts STR_CARGO_RATING_APPALLING :Ferskriklik STR_CARGO_RATING_VERY_POOR :Hiel Min STR_CARGO_RATING_POOR :Min +STR_CARGO_RATING_MEDIOCRE :Midsmjittich STR_CARGO_RATING_GOOD :Goed STR_CARGO_RATING_VERY_GOOD :Hiel Goed +STR_CARGO_RATING_EXCELLENT :Geweldich +STR_CARGO_RATING_OUTSTANDING :Poerbêst ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dit stasjon +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Feroarje stasjonsnamme STR_STATION_VIEW_RENAME_STATION_CAPTION :Jow stasjon in nije namme +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Fleanfjild slute # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2127,11 +2882,13 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Totaal: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Jild STR_FINANCES_LOAN_TITLE :{WHITE}Liening +STR_FINANCES_MAX_LOAN :{WHITE}Maksimale Liening: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lien {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Lien mear jild. Ctrl+Klik om it maksimale te lienen STR_FINANCES_REPAY_BUTTON :{BLACK}Betelje {CURRENCY_LONG} werom STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betelje in diel fan de liening werom. Ctrl+Klik om it maksimale werom te beteljen +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Ynfrastruktuer # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2140,12 +2897,22 @@ STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDE STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Oprjochte: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Kleurenskema: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Fiertúchen: +STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} trein{P "" en} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} Wein{P "" en} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} fleantugen STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Gjin STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Bedriuwswearde: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% besit fan {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Ynfrastruktuer: +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} fleanfjild{P "" en} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Gjin STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bou haadkantoar +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Haadkantoar bouwe STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Sjoch haadkantoar +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Haadkantoar besjen +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Haadkantoar ferpleatse +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nei Gesicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selektear nei gesicht foar de bedriuwslieder @@ -2167,8 +2934,19 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namme fan Direk STR_BUY_COMPANY_MESSAGE :{WHITE}Wy sykje in transportbedriuw om ús bedriuw oer te nimmen.{}{}Wolsto {COMPANY} foar {CURRENCY_LONG} keapje? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Ynfrastruktuer fan {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Seinen +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Dyk +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramwei +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjons: +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Fleanfjilden +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/jr # Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Yndustryen +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Gjin - +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportearre) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportearre) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # Industry view @@ -2177,6 +2955,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksj STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportearre) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze yndustry STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksje nivo: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Yndustry kundicht drigend sluten oan! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING} @@ -2193,11 +2972,24 @@ STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produsea STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Feroaring produksje nivo (percentage, up to 800%) # Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Trein{P "" en} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Wein{P "" en} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} {P Skip Skepen} +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Fleantúch +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treinen - klik op trein foar ynformaasje +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Weinen - klik op wein foar ynformaasje +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skepen - klik op skip foar ynformaasje +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fleantúgen - klik op fleantúch foar ynformaasje STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Fertsjinste dit jier: {CURRENCY_LONG} (ferline jier: {CURRENCY_LONG}) +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Beskikbere Treinen +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Beskikbere Weinen +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Beskikbere Skepen +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Beskikbere Fleantúgen +STR_VEHICLE_LIST_REPLACE_VEHICLES :Fiertugen ferfange STR_VEHICLE_LIST_SEND_FOR_SERVICING :Stjoer foar ûnderhâldsbeurt STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Stjoer nei depot @@ -2208,14 +3000,40 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Stjoer nei hang # Group window +STR_GROUP_ALL_TRAINS :Alle treinen +STR_GROUP_ALL_ROAD_VEHICLES :Alle weinen +STR_GROUP_ALL_SHIPS :Alle skepen +STR_GROUP_ALL_AIRCRAFTS :Alle fleantugen +STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik om in groep oan te meitsje +STR_GROUP_DELETE_TOOLTIP :{BLACK}Smit de selektearre groep fuort +STR_GROUP_RENAME_TOOLTIP :{BLACK}Feroarje de namme fan de selektearre groep +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Ferwiderje groep +STR_GROUP_REMOVE_ALL_VEHICLES :Alle fiertugen weihelje -# Build vehicle window +# Build vehicle window +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nije Weinen +STR_BUY_VEHICLE_SHIP_CAPTION :Nije Skepen +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nije fleantugen + +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Snelheid: {GOLD}{VELOCITY}{BLACK} Kracht: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}Snelheid: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Underhâldskosten: {GOLD}{CURRENCY_LONG}/jr +STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasiteit: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(kin omboud wurde) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Ûntwurpen: {GOLD}{NUM}{BLACK} Libbensdoer: {GOLD}{COMMA} jier +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. Betrouberens: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}Kosten: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Gewicht: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} Snelheid: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapasiteit: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kin omboud wurde nei: {GOLD}{STRING} +STR_PURCHASE_INFO_ALL_TYPES :Alle frachttypen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Keapje auto @@ -2238,6 +3056,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Jow auto STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Jow boat type in nije namme STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Jow fleantúg type in nije namme +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ferbergje +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ferbergje +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ferbergje +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ferbergje + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Sjen litte +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Sjen litte +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Sjen litte +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Sjen litte + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart trein +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart wein +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart skip +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart fleanmasine + # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -2254,7 +3087,14 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nije fiertugen +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nije Weinen +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nije Skepen +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nije Fleantugen +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Nije wein keapje +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Nij skip keapje +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Nij fleantúch keapje @@ -2264,7 +3104,16 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} # Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Berjocht fan fiertúgenfabrikant +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Wy hawwe sakrekt in nije {STRING} ûntwurpen - bisto ynteressearre yn in jier lang eksklusyf gebrûk fan dit fiertúch, sadat wy kinne sjen oft it goed wurket foardat wy it wrâldwiid beskikber meitsjen? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotyf +STR_ENGINE_PREVIEW_ROAD_VEHICLE :wein +STR_ENGINE_PREVIEW_AIRCRAFT :fleantúch +STR_ENGINE_PREVIEW_SHIP :skip +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail lokomotyf +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} # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :Trein @@ -2272,6 +3121,9 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Auto STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Fleanmasine +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Fiertúgen dy't yn gebrûk binne +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Beskikbere fiertugen + @@ -2280,6 +3132,7 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Fleanmasine # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dit fleantúch @@ -2290,14 +3143,24 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE # Messages in the start stop button in the vehicle view - +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laden / Losse +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Stikken +STR_VEHICLE_STATUS_STOPPED :{RED}Stoppe +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stoppet, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Gjin enerzjy +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Te fier nei folgjende bestimming + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ûnderweis nei {STATION}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ûnderweis nei {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Ûnderweis nei{DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}ûnderhâld yn {DEPOT}, {VELOCITY} # Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stoppe +STR_VEHICLE_COMMAND_STOPPED :{RED}Stoppe # Vehicle details +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Details) STR_VEHICLE_NAME_BUTTON :{BLACK}Namme @@ -2305,12 +3168,28 @@ STR_VEHICLE_NAME_BUTTON :{BLACK}Namme STR_VEHICLE_INFO_AGE :{COMMA} jier{P "" ren} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} jier{P "" ren} ({COMMA}) +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. snelheid: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}Gjin{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Underhâldsinterval: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} Lêste underhâld: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Underhâldsinterval: {LTBLUE}{COMMA}%{BLACK} Lêste underhâld: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Underhâldsinterval ferheegje mei 10. Ctrl+Klik ferheegt underhâldsinterval mei 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Tiid tusken ûnderhâldsbeurten ferleegje mei 10. Ctrl+Klik ferleegt de tiid tusken ûnderhâldsbeurten mei 5. +STR_VEHICLE_DETAILS_DEFAULT :Standert +STR_VEHICLE_DETAILS_DAYS :Dagen +STR_VEHICLE_DETAILS_PERCENT :Persintaazje +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Treinnamme feroarje +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Namme fan wein feroarje +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Namme fan skip feroarje +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Namme fan fleantúch feroarje # Extra buttons for train details windows @@ -2318,18 +3197,26 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Totale k STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) +STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Leech +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} fan {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} fan {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Fracht STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Ynformaasje STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasiteit STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totale Fracht +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasiteit: {LTBLUE} # Vehicle refit STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nije kapasiteit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}kosten fan werfolje: {RED}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selektearje in ferfiermiddel foar reparaasje. sleep mei de mûs om meardere ferfiermiddels te selekttearjen. Ctrl+klick sil in ferfiermiddel selektearje en de neikommende rige +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Trein ombouwe +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Wein ombouwe +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Skip ombouwe +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Fleantúch ombouwe # Order view @@ -2339,21 +3226,42 @@ STR_ORDER_TEXT :{STRING} {STRIN # Order bottom buttons +STR_ORDER_GO_TO :Gean nei +STR_ORDER_GO_NON_STOP_TO :Gean non-stop nei +STR_ORDER_GO_VIA :Gean via +STR_ORDER_GO_NON_STOP_VIA :Gean non-stop fia +STR_ORDER_DROP_NO_LOADING :Net laden +STR_ORDER_TOGGLE_UNLOAD :{BLACK}Alles losse +STR_ORDER_DROP_UNLOAD :Alles losse +STR_ORDER_DROP_TRANSFER :Oerlade +STR_ORDER_DROP_NO_UNLOADING :Net losse +STR_ORDER_REFIT :{BLACK}Ombouwe +STR_ORDER_DROP_REFIT_AUTO_ANY :Beskikbere fracht +STR_ORDER_SERVICE :{BLACK}Tsjinst +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Gean altyd +STR_ORDER_DROP_HALT_DEPOT :Stop # Conditional order variables, must follow order of OrderConditionVariable enum +STR_ORDER_CONDITIONAL_RELIABILITY :Betrouberens +STR_ORDER_CONDITIONAL_MAX_SPEED :Maksimale snelheid +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Altyd +STR_ORDERS_SKIP_BUTTON :{BLACK}Oerslaan -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Verwiderje alle bestimmingen +STR_ORDERS_DELETE_BUTTON :{BLACK}Fuortsmite +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Selektearre oarder fuortsmite +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Ferwiderje alle bestimmingen STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stop dielde bestimmingen STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stopje mei dielde bestimmingen +STR_ORDERS_GO_TO_BUTTON :{BLACK}Gean Nei STR_ORDER_SHARE :Dielde Bestimmingen @@ -2365,6 +3273,7 @@ STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Oanienwei lâns STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} +STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -2377,24 +3286,39 @@ STR_ORDER_UNLOAD :(Afladen en nim STR_ORDER_UNLOAD_FULL_LOAD :(Afladen en wacht foar folle fracht) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Afladen en wacht foar elke folle fracht) STR_ORDER_UNLOAD_NO_LOAD :(Oflade en lit leech) +STR_ORDER_TRANSFER :(Oerladen en fracht meinimme) +STR_ORDER_TRANSFER_NO_LOAD :(Oerladen en lit leech) +STR_ORDER_NO_UNLOAD :(Net losse en fracht meinimme) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Net losse en wacht foar folle fracht) STR_ORDER_NO_UNLOAD_NO_LOAD :(net lade of losse) +STR_ORDER_AUTO_REFIT :(Ombouwe nei {STRING}) +STR_ORDER_AUTO_REFIT_ANY :beskikbere fracht # Time table window +STR_TIMETABLE_ORDER_VIEW :{BLACK}Opdrachten STR_TIMETABLE_NOT_TIMETABLEABLE :Reizgje (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis {STRING} mei maksimum {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reizgje (foar {STRING}, sûnder tsjinstregeling) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reizgje (foar {STRING}, sûnder tjinstregeling) mei maksimaal {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(bliuw foar {STRING}, sûnder tjinstregeling) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reizgje foar {STRING}, sûnder tjinstregeling) +STR_TIMETABLE_DAYS :{COMMA}{NBSP}{P dei dagen} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ken} +STR_TIMETABLE_CHANGE_TIME :{BLACK}Tiid Feroarje +STR_TIMETABLE_CLEAR_TIME :{BLACK}Tiid Weihelje STR_TIMETABLE_CHANGE_SPEED :{BLACK}Feroarje maksimumfaasje STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Feroarje de maksimum reissnelheid fan de opljochte oarder @@ -2404,44 +3328,71 @@ STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Helje de +STR_TIMETABLE_EXPECTED :{BLACK}Ferwachte +STR_TIMETABLE_SCHEDULED :{BLACK}Pland +STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) +STR_DATE_CAPTION :{WHITE}Datum ynstelle +STR_DATE_SET_DATE :{BLACK}Datum ynstelle +STR_DATE_DAY_TOOLTIP :{BLACK}Dag selektearje +STR_DATE_MONTH_TOOLTIP :{BLACK}Moanne selektearje +STR_DATE_YEAR_TOOLTIP :{BLACK}Jier selektearje # AI debug window STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Skriptnamme STR_AI_DEBUG_SETTINGS :{BLACK}Ynstellings +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Ynstellings fan it skript feroarje STR_AI_DEBUG_CONTINUE :{BLACK}Trjochgean STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Lit debug output fan dizze AI sjen +STR_AI_GAME_SCRIPT :{BLACK}Spulskript STR_ERROR_AI_NO_AI_FOUND :Gjin geskikte compjûterspiler fûn.{}Disse compjûterspiler is in dummy en docht neat.{}Jo kinne compjûterspilers delhelje fan 'Online Inhâld' ôf. +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spulskript debugskerm is allinich beskikber foar de tsjinner # AI configuration window +STR_AI_CONFIG_CAPTION :{WHITE}AI/Spulskript konfiguraasje +STR_AI_CONFIG_HUMAN_PLAYER :Minslike spiler +STR_AI_CONFIG_RANDOM_AI :Samar in AI +STR_AI_CONFIG_NONE :(gjin) +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spulskript STR_AI_CONFIG_AI :{SILVER}AIs STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spulskript # Available AIs window +STR_AI_LIST_CAPTION :{WHITE}Beskikber {STRING} STR_AI_LIST_CAPTION_AI :AIs +STR_AI_LIST_CAPTION_GAMESCRIPT :Spulskripten STR_AI_LIST_VERSION :{LTBLUE}Ferzje: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Akseptearje STR_AI_LIST_CANCEL :{BLACK}Annulearje +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Skript net feroare # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameters STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spulskript STR_AI_SETTINGS_CLOSE :{BLACK}Slúte +STR_AI_SETTINGS_RESET :{BLACK}Weromsette STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisinsje fan {STRING} +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisinsje # Vehicle loading indicators @@ -2451,6 +3402,8 @@ STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHI STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% +STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostet: {CURRENCY_LONG} @@ -2461,14 +3414,17 @@ STR_MESSAGE_ESTIMATED_COST :{WHITE}Dit gjit STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Dit gjit {CURRENCY_LONG} opbringen. # Saveload messages +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatysk opslaan net slagge STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Koe net fan 'e skiif lêze STR_ERROR_GAME_SAVE_FAILED :{WHITE}Opslaan Mislearre{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kin bestân net fuortsmite STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden Mislearre{}{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne flater: {STRING} STR_GAME_SAVELOAD_NOT_AVAILABLE : # Map generation messages +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... bestând koe net fûn wurde @@ -2499,6 +3455,7 @@ STR_ERROR_OWNED_BY :{WHITE}... is f STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... gebiet is fan in oar bedriuw STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... lânskip kreëar limyt berikt STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... tegel oprom limyt berikt +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Namme moat unyk wêze STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} yn it paad STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Net tastean. Pausearre @@ -2542,20 +3499,28 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... Gjin STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... te folle yndustryen STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kin hjir gjin {STRING} boue... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kin dit type yndustry hjir net boue... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... te ticht by in oare yndustry STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... stêd moat earst bout wurde STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}.. mei mar ien per stêd wêze STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kin allinnich bout wurde yn stêden mei 1200 ynwenners of mear STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kin allinnich yn in reinwâld bout wurde STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kin allinnich yn in woastine bout wurde -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kin allinnich yn in stêd bout wurde +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kin allinnich yn in stêd bout wurde (ferfangt besteande hûzen) STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kin allinnich yn lege plakken bout wurde STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kin allinich pleatse wurde by de rân fan'e kaart STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... bosk kin allinich boppe snieline boud wurde +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kin allinich boppe snieline boud wurde +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kin allinich ûnder snieline boud wurde + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kin hjir gjin treinstasjon boue... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kin hjir gjin busstasjon boue... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kin hjir gjin frachtweinstasjon boue... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kin gjin passazjiertramstasjon boue... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kin hjir gjin frachttramstasjon boue... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :(WHITE}Kin hjir gjin haven boue... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kin hjir gjin fleanfjild boue... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Ferbynt mear dan ien stasjon STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stasjon is te grut @@ -2568,12 +3533,18 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Te ticht STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kin namme fan stasjon net feroarje # Station destruction related errors +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Treinstasjon moat earst fuorthelle wurde +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kin busstasjon net fuorthelje... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kin frachtstasjon net fuorthelje... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kin passazjiertramstasjon net fuorthelje... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kin frachttramstasjon net fuorthelje... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Weistop moat earst fuorthelle wurde STR_ERROR_THERE_IS_NO_STATION :{WHITE}... Dêr is gjin statsjon STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Treinspoar moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Bushalte moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Frachtstasjon moat earst fuorthelle wurde +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Passazjiertramstasjon moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Frachttramstasjon moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Haven moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Fleanfjild moat earst fuorthelle wurde @@ -2594,21 +3565,32 @@ STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boei # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kin hjir gjin trein depot boue... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kin hjir gjin auto depot boue... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kin hjir gjin tramdepot boue... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kin hjir gjin skipdepot boue... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}kin depot gjin nije namme jaan... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... Trein moat stopt wêze yn depot +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... moat stopt wêze yn in depot STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... moat stopt wêze yn depot STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... moat stopt wêze yn hangar +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Treinen kinne allinich oanpast wurde wannear't ze yn in depot stean STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trein te lang +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kin rydrjochting fan de trein net omkeare... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... bestiet út meardere weinen +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Net te ferienigjen spoartypes +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kin fiertúch net ferpleatse... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}De efterste lokomotyf sil altyd syn foargonger folgje STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kin gjin route fine nei lokaal depot STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kin lokaal depot net fine +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Ferkeard depottype # Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is te lang nei ferfanging +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Gjin autoferfang- of fernijregels tapast STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(jild limiet) # Rail construction errors @@ -2616,6 +3598,7 @@ STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Spoar ko STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Stopljocht moat earst fuorthelle wurde STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Spoar is net geskikt STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Spoar moat der earst wei +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Dyk is in ienrjochtingsdyk of blokearre STR_ERROR_CROSSING_DISALLOWED :{WHITE}In oergong is net tastien foar dit type spoar STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kin hjir gjin stopljochten boue... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kin hjir gjin spoarwei boue @@ -2625,9 +3608,11 @@ STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kin stop STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... dêr is gjin spoar STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... Dêr binne gjin stopljochten +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kin hjir railype net omsette... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Wei moat earst fuorthelle wurde +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... ienrjochtingsdiken kinne gjin krusings hawwe STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kin hjir gjin wei boue... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kin hjir gjin tramspoar boue... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kin hjir gjin wei fuorthelje... @@ -2641,6 +3626,9 @@ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kin hjir STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kin hjir gjin rivier pleatse STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... moat bout wurde op it wetter STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Kin net op it wetter bouwe +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kin net op de iepen see bouwe +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kin net op in kanaal bouwe +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kin net op in rivier bouwe STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Kanaal moat earst fuorthelle wurde STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kin hjir gjin akwadukt boue... @@ -2654,6 +3642,8 @@ STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kin hjir STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Brêge moat earst fuorthelle wurde STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Begjin en ein kin net op itselde plak wêze STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Útein fan de brêge is net op deselde hichte +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brêge is te leech foar it terrein +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Brêge is te heech foar dit terrein STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Begjin en ein moatte op ien lijn wêze STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... beide úteinden fan'e brêge moatte op lân lizze STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brêge te lang @@ -2664,6 +3654,7 @@ STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kin hjir STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plak net geskikt foar tunnelyngong STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Tunnel mat earst fuorthelle wurde STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Oare tunnel yn't plak +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnel soe bûten de kaart eindigje STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kin net grûn foar it oare ein fan'e tunnel ôfgraavje STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunnel te lang @@ -2676,7 +3667,12 @@ STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kin dit STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... it is al fan dy! # Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kin gjin groep oanmeitsje... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kin dizze groep net fuortsmite STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kin de namme net feroarje... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kin haadgroep net ynstelle... +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kin net alle fiertugen út dizze groep fuortsmite... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kin dit fiertúch net oan dizze groep taheakje... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kin dielde auto's oan groep ta foege... # Generic vehicle errors @@ -2685,6 +3681,7 @@ STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Auto yn STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip yn it paad STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Fleantúg yn it paad +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kin trein net werútrisse STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kin auto net ombouwe STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kin skip net oanpasse STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}kin fleantúg net veroarje @@ -2729,8 +3726,13 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kin tiid STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... wein verneatige +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Hielendal gjin fiertugen talitten +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Feroarje jo NewGRF-konfiguraasje +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Der binne noch gjin fiertugen beskikber +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Begjin in nij spul nei {DATE_SHORT} of brûk in NewGRF dy't earder fiertugen beskikber stelt # Specific vehicle errors +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kin trein gjin sein foarby ride litte at dizze gefaar oanjout... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kin rydrjochting fan de trein net oanpasse STR_ERROR_TRAIN_START_NO_POWER :Trein hat gjin stream @@ -2755,6 +3757,7 @@ STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kin best STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kin net stopje my dielde bestimmingen STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kin bestimming net oernimme STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... te fier fan lêste bestimming +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... fleantúch hat in te lege aksjeradius # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kin gjin tsjinst meitsje @@ -2771,6 +3774,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kin stop STR_DESKTOP_SHORTCUT_COMMENT :Spul basjeare op Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Orizjinele ôfbyldings fan de Transport Tycoon Deluxe Windows-edysje +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Orizjinele ôfbyldings fan de Transport Tycoon Deluxe (dútse) DOS-edysje +STR_BASEGRAPHICS_WIN_DESCRIPTION :Orizjinele ôfbyldings fan de Transport Tycoon Deluxe Windows-edysje. +STR_BASESOUNDS_DOS_DESCRIPTION :Orizjinele musyk fan de Transport Tycoon Deluxe DOS-edysje. +STR_BASESOUNDS_WIN_DESCRIPTION :Orizjinele lûden fan de Transport Tycoon Deluxe Windows-edysje. +STR_BASESOUNDS_NONE_DESCRIPTION :In lûdspakket sûnder lûden. +STR_BASEMUSIC_WIN_DESCRIPTION :Orizjinele musyk fan de Transport Tycoon Deluxe Windows-edysje. +STR_BASEMUSIC_NONE_DESCRIPTION :In musykpakket sûnder wiere musyk. ##id 0x2000 # Town building names @@ -2894,7 +3905,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) @@ -3101,10 +4112,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passazjiers STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Sweefmobiel STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passazjier Fearboat STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passazjier Fearboat -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Guod boat -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Guod boat -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Guod boat -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Guod boat +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Frachtskip +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Frachtskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Guod boat +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Guodskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -3197,6 +4208,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ferburgen) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -3220,6 +4232,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -3231,8 +4244,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -3243,9 +4254,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt index 8a7fe6fdd9..3ec243f079 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -224,6 +224,9 @@ STR_BUTTON_RENAME :{BLACK}Rinomiza STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Klozas fenestro STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Baskulas granda/mikra fenestro grandeso +# Show engines button + + # Query window STR_BUTTON_CANCEL :{BLACK}Anular STR_BUTTON_OK :{BLACK}OK @@ -337,7 +340,10 @@ STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo ############ range for about menu starts ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window +############ range for ordinal numbers ends + +############ range for days starts ############ range for days ends ############ range for months starts @@ -441,9 +447,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Sendajo -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system +# Order review system / warnings @@ -460,15 +464,13 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Sel ############ end of currency region -############ start of measuring units region -############ end of measuring units region - - ############ start of townname region ############ end of townname region +############ start of autosave dropdown +############ end of autosave dropdown @@ -479,6 +481,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra + # Custom currency window @@ -515,7 +518,7 @@ STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Kustumigita ({N -# Advanced settings window +# Settings tree window @@ -773,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-2013 La kruo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 La kruo OpenTTD # Save/load game/scenario STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali @@ -800,6 +803,8 @@ STR_MAPGEN_BY :{BLACK}* STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versiono: {SILVER}{NUM} +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Klozas STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} @@ -833,6 +838,8 @@ STR_NEWGRF_LIST_NONE :Nulo # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO_ABBREV :?? +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -858,7 +865,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window @@ -870,7 +878,6 @@ STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOI # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Vartabas: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceptas: {WHITE}{CARGO_LIST} @@ -958,6 +965,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aer + # Build vehicle window @@ -968,6 +976,9 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aer + + + # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -1006,6 +1017,7 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Aeronavo + # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -1177,6 +1189,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... tro # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... tro multa industrii + # Station construction related errors @@ -1340,8 +1353,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -1352,9 +1363,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt index 23741f7797..7df355626d 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -238,6 +238,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Поме STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Лизгач - свитоци листата лево / десно STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Уривање згради итн. на квадратна област +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Зададено STR_BUTTON_CANCEL :{BLACK}Откажи @@ -347,7 +350,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :Напушти ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :игра опции -STR_SETTINGS_MENU_CONFIG_SETTINGS :напредни поставувања STR_SETTINGS_MENU_SCRIPT_SETTINGS :АИ / игри поставувања STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF подесувања STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :транспарентност опции @@ -451,7 +453,7 @@ STR_ABOUT_MENU_SPRITE_ALIGNER :самовил STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вклучи одблеснува кутии ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1-в STR_ORDINAL_NUMBER_2ND :2-ор STR_ORDINAL_NUMBER_3RD :3-ет @@ -467,22 +469,40 @@ STR_ORDINAL_NUMBER_12TH :12-ти STR_ORDINAL_NUMBER_13TH :13-ти STR_ORDINAL_NUMBER_14TH :14-ти STR_ORDINAL_NUMBER_15TH :15-ти -STR_ORDINAL_NUMBER_16TH :16-ти -STR_ORDINAL_NUMBER_17TH :17-ти -STR_ORDINAL_NUMBER_18TH :18-ти -STR_ORDINAL_NUMBER_19TH :19-ти -STR_ORDINAL_NUMBER_20TH :20-ти -STR_ORDINAL_NUMBER_21ST :21-ви -STR_ORDINAL_NUMBER_22ND :22-ри -STR_ORDINAL_NUMBER_23RD :23-ти -STR_ORDINAL_NUMBER_24TH :24-ти -STR_ORDINAL_NUMBER_25TH :25-ти -STR_ORDINAL_NUMBER_26TH :26-ти -STR_ORDINAL_NUMBER_27TH :27-ми -STR_ORDINAL_NUMBER_28TH :28-ми -STR_ORDINAL_NUMBER_29TH :29-ти -STR_ORDINAL_NUMBER_30TH :30-ти -STR_ORDINAL_NUMBER_31ST :31-ви +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1-в +STR_DAY_NUMBER_2ND :2-ор +STR_DAY_NUMBER_3RD :3-ет +STR_DAY_NUMBER_4TH :4-рт +STR_DAY_NUMBER_5TH :5-ти +STR_DAY_NUMBER_6TH :6-ти +STR_DAY_NUMBER_7TH :7-ми +STR_DAY_NUMBER_8TH :8-ми +STR_DAY_NUMBER_9TH :9-ти +STR_DAY_NUMBER_10TH :10-ти +STR_DAY_NUMBER_11TH :11-ти +STR_DAY_NUMBER_12TH :12-ти +STR_DAY_NUMBER_13TH :13-ти +STR_DAY_NUMBER_14TH :14-ти +STR_DAY_NUMBER_15TH :15-ти +STR_DAY_NUMBER_16TH :16-ти +STR_DAY_NUMBER_17TH :17-ти +STR_DAY_NUMBER_18TH :18-ти +STR_DAY_NUMBER_19TH :19-ти +STR_DAY_NUMBER_20TH :20-ти +STR_DAY_NUMBER_21ST :21-ви +STR_DAY_NUMBER_22ND :22-ри +STR_DAY_NUMBER_23RD :23-ти +STR_DAY_NUMBER_24TH :24-ти +STR_DAY_NUMBER_25TH :25-ти +STR_DAY_NUMBER_26TH :26-ти +STR_DAY_NUMBER_27TH :27-ми +STR_DAY_NUMBER_28TH :28-ми +STR_DAY_NUMBER_29TH :29-ти +STR_DAY_NUMBER_30TH :30-ти +STR_DAY_NUMBER_31ST :31-ви ############ range for days ends ############ range for months starts @@ -752,9 +772,7 @@ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLAC -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system +# Order review system / warnings STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} не може да се стигне до следната дестинација, бидејќи тоа е надвор од опсегот @@ -772,16 +790,15 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци ############ end of currency region -############ start of measuring units region -############ end of measuring units region - - ############ start of townname region ############ end of townname region +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Секој месец +############ end of autosave dropdown + @@ -812,7 +829,7 @@ STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Прилаго -# Advanced settings window +# Settings tree window STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Сите подесувања @@ -1185,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-2013 OpenTTD тимот +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 OpenTTD тимот # Save/load game/scenario STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување @@ -1232,6 +1249,8 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верз STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Мин. компатибилна верзија: {SILVER}{NUM} +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Промена НовGRF параметри STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Затвори @@ -1276,6 +1295,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} на < STR_NEWGRF_INVALID_ENGINE :<валиден возило модел> STR_NEWGRF_INVALID_INDUSTRYTYPE :<валиден индустрија> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -1309,7 +1330,8 @@ STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клик # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни на сервис за да се центрира погледот на индустријата/градот @@ -1325,7 +1347,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Не ч # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чекање: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} пренасочено од {STATION}) @@ -1426,6 +1447,7 @@ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Испрати + # Build vehicle window STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Шински возила @@ -1443,6 +1465,9 @@ STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Преи STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Преименувај го типот на авиони + + + STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Преименувај го типот на авиони # Depot window @@ -1490,6 +1515,7 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Летало + # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -1711,6 +1737,7 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... не # Industry related errors + # Station construction related errors STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Не може да се изгради аеродром на оваа локација... @@ -1900,8 +1927,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -1912,9 +1937,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/maltese.txt b/src/lang/unfinished/maltese.txt index d0407f964d..8796505385 100644 --- a/src/lang/unfinished/maltese.txt +++ b/src/lang/unfinished/maltese.txt @@ -191,6 +191,9 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Faxxa bi STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Faxxa biex tiskrolja - iskrolja l-lista lejn ix-xellug jew lemin STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Waqqa bini, etc.., Ctrl tagħzel zona dijagonali. Shift taqleb bejn bini/turija ta' stima ta' l-ispiza +# Show engines button + + # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Ikkanċella @@ -306,7 +309,10 @@ STR_FILE_MENU_SEPARATOR : ############ range for about menu starts ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window +############ range for ordinal numbers ends + +############ range for days starts ############ range for days ends ############ range for months starts @@ -374,9 +380,7 @@ STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {C -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system +# Order review system / warnings STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} mitluf @@ -393,15 +397,13 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE ############ end of currency region -############ start of measuring units region -############ end of measuring units region - - ############ start of townname region ############ end of townname region +############ start of autosave dropdown +############ end of autosave dropdown @@ -412,6 +414,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + # Custom currency window @@ -430,7 +433,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn -# Advanced settings window +# Settings tree window @@ -708,6 +711,8 @@ STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Aġġorn STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ma jaqblux ma din il-verzjoni ta' OpenTTD +# NewGRF save preset window + # NewGRF parameters window # NewGRF inspect window @@ -733,6 +738,8 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -758,7 +765,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window @@ -829,6 +837,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN + # Build vehicle window @@ -839,6 +848,9 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN + + + # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -873,6 +885,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} + # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -1037,6 +1050,7 @@ STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}L-istam # Industry related errors + # Station construction related errors @@ -1210,7 +1224,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Fwar) @@ -1267,7 +1281,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Vapur tal-passi STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Vapur tal-passiġġieri Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Vapur tal-merkanzija Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Vapur tal-merkanzija Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Vapur tal-merkanzija Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Vapur tal-merkanzija MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Vapur tal-merkanzija Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -1381,8 +1395,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -1393,9 +1405,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/marathi.txt b/src/lang/unfinished/marathi.txt index c410fef266..3125899304 100644 --- a/src/lang/unfinished/marathi.txt +++ b/src/lang/unfinished/marathi.txt @@ -192,31 +192,57 @@ STR_COLOUR_WHITE :पांढर # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph +STR_UNITS_VELOCITY_METRIC :{COMMA} किमी / तास +STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_POWER_IMPERIAL :{COMMA}hp +STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_WEIGHT_SHORT_SI :{COMMA} किग्रॅ +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}ट +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}ट +STR_UNITS_WEIGHT_SHORT_SI :{COMMA} किलो STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} टन STR_UNITS_WEIGHT_LONG_SI :{COMMA} किलो +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}गॅलन +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}लि +STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} लिटर +STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ # Common window strings - +STR_LIST_FILTER_TITLE :{BLACK}शब्द गाळा: +STR_LIST_FILTER_OSKTITLE :{BLACK}गाळेला शब्द प्रविष्ट करा +STR_LIST_FILTER_TOOLTIP :{BLACK}सूची फिल्टर करण्यासाठी एक शब्द प्रविष्ट करा + +STR_TOOLTIP_GROUP_ORDER :{BLACK}वर्गीकरण क्रम निवडा +STR_TOOLTIP_SORT_ORDER :{BLACK}वर्गीकरण आदेश निवडा (उतरत्या / चढत्या) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}वर्गीकरण निकष निवडा +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}फिल्टरिंग निकष निवडा +STR_BUTTON_SORT_BY :{BLACK}यानुसार क्रमवारी लावा STR_BUTTON_LOCATION :{BLACK}जागा STR_BUTTON_RENAME :{BLACK}नाव बदला STR_TOOLTIP_CLOSE_WINDOW :{BLACK}खिडकी बंद करा STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}खिडकीचं नाव - खिडकी हलवण्यासाठी हे पकडून ओढा. STR_TOOLTIP_SHADE :{BLACK}गवाक्ष - फक्त नावाची पट्टी दाखवा +STR_TOOLTIP_DEFSIZE :{BLACK} डीफॉल्ट आकारात विंडो आकार बदला.Ctrl+Click डीफॉल्ट म्हणून वर्तमान आकार साठवण्यासाठी +STR_TOOLTIP_STICKY :{BLACK} ही विंडो म्हणून चिन्हांकित समाप्त नाही 'बंद करा सर्व विंडोज'.Ctrl+Click डीफॉल्ट म्हणून राज्य जतन STR_TOOLTIP_RESIZE :{BLACK}खिडकीचा आकार बदलण्यासाठी पकडून ओढा STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}खिडकीचा आकार लहान/मोठा करा +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}स्क्रोल पट्टी - स्क्रोल यादी वर/खाली +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}स्क्रोल पट्टी - स्क्रोल यादी डाव्या/उजव्या STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}जमिनीच्या एका चौकोनावरील इमारत नष्ट करणे इ. Ctrl ने तिरका प्रदेश निवडता येतो. Shift नं इमारती किंवा किंमतीचा अंदाज दिसणं चालू/बंद होतं. +# Show engines button + + # Query window +STR_BUTTON_DEFAULT :{BLACK}स्थिर STR_BUTTON_CANCEL :{BLACK}रद्द करा STR_BUTTON_OK :{BLACK}ठीक आहे @@ -238,6 +264,7 @@ STR_SORT_BY_CAPTION_DATE :{BLACK}दि STR_SORT_BY_NAME :नाव STR_SORT_BY_PRODUCTION :निर्मिती STR_SORT_BY_TYPE :प्रकार +STR_SORT_BY_TRANSPORTED :रवाना STR_SORT_BY_NUMBER :क्रमांक STR_SORT_BY_PROFIT_LAST_YEAR :गेल्या वर्षीचा नफा STR_SORT_BY_PROFIT_THIS_YEAR :चालू वर्षीचा नफा @@ -248,24 +275,44 @@ STR_SORT_BY_MAX_SPEED :सर्वो STR_SORT_BY_MODEL :मोडल STR_SORT_BY_VALUE :किंमत STR_SORT_BY_LENGTH :लांबी -STR_SORT_BY_LIFE_TIME :उर्वरित आयुर्मान +STR_SORT_BY_LIFE_TIME :उर्वरित कार्यकाळात STR_SORT_BY_TIMETABLE_DELAY :वेळापत्रकीय अंतर STR_SORT_BY_FACILITY :स्थानक प्रकार +STR_SORT_BY_WAITING_TOTAL :एकूण प्रतीक्षा मालवाहू +STR_SORT_BY_WAITING_AVAILABLE :उपलब्ध प्रतीक्षा मालवाहू +STR_SORT_BY_RATING_MAX :सर्वोच्च मालवाहू धारा +STR_SORT_BY_RATING_MIN :सर्वात कमी मालवाहू धारा +STR_SORT_BY_ENGINE_ID :यंत्र क्रमांक (जुन्या क्रमवारी) STR_SORT_BY_COST :किंमत STR_SORT_BY_POWER :ताकद +STR_SORT_BY_INTRO_DATE :परिचय तारीख STR_SORT_BY_RUNNING_COST :चालवण्याचा खर्च STR_SORT_BY_POWER_VS_RUNNING_COST :ताकद/चालवण्याचा खर्च STR_SORT_BY_CARGO_CAPACITY :मालवाहन क्षमता +STR_SORT_BY_RANGE :प्रकार STR_SORT_BY_POPULATION :लोकसंख्या +STR_SORT_BY_RATING :धारा # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK} खेळ स्थगित करा +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}जलद खेळ अग्रेषित STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}पर्याय +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}खेळ जतन, खेळ त्याग, बाहेर जाणे +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}प्रदर्शन नकाशा, अतिरिक्त व्ह्यूपोर्ट किंवा चिन्हे यादी STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}शहरांची यादी दाखवा +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}प्रदर्शन अनुदान STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}कंपनीच्या स्थानकांची यादी दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}कंपनीची आर्थिक माहिती दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}कंपनीची सर्वसाधारण माहिती दाखवा +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}प्रदर्शन पुस्तक +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}प्रदर्शन ध्येय सूची STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}आलेख दाखवा +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}दाखवा कंपनी लीग तक्ता +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}नवीन उद्योगाचे फंड बांधकाम +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}कंपनीच्या गाड्या प्रदर्शन यादी.Ctrl+Click गट / वाहन सूची उघडणे +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}कंपनीच्या रस्त्याच्या वाहने प्रदर्शन यादी.Ctrl+Click गट / वाहन सूची उघडणे +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}कंपनीच्या जहाजे प्रदर्शन यादी.Ctrl+Click गट / वाहन सूची उघडणे +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK} कंपनीच्या विमानाची प्रदर्शन यादी.Ctrl+Click गट / वाहन सूची उघडणे STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}द्श्य मोठे करा STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}द्श्य छोटे करा STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK} लोहमार्ग बांधा @@ -273,6 +320,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}रस STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}बोटींचा धक्का बांधा STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}विमानतळ बांधा STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}आवाज/संगीत खिडकी दाखवा +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}शेवटचा संदेश अहवाल दर्शवा, संदेश पर्याय दर्शवा +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}साधनपट्टी बदला # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}ओपेन टीटीडी @@ -280,27 +329,38 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}सु STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}सुरुवातीची तारीख एक वर्ष पुढे न्या STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}सुरुवातीचं वर्ष पुरवण्यासाठी क्लिक करा STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}नकाशा, शहरांची यादी दाखवा +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}प्रदेश उत्पन्न करणे +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}गावे उत्पन्न करणे +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}इंडस्ट्री उत्पन्न करणे STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}रस्तेबांधणी STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}चिन्ह लावा ############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :उद्देश जतन +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :उद्देश उघडा STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :बंद करा ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :खेळाचे पर्याय +STR_SETTINGS_MENU_SCRIPT_SETTINGS :ए.आय. / गेम स्क्रिप्ट सेटिंग्ज STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF पर्याय STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :पारदर्शकता पर्याय STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :शहरांची नावे दाखवा STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :स्थानकांची नावे दाखवा +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :दिशा नावे दर्शविली STR_SETTINGS_MENU_SIGNS_DISPLAYED :चिन्ह दाखवा +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :स्पर्धक चिन्हे आणि दर्शविले नावे +STR_SETTINGS_MENU_FULL_ANIMATION :पूर्ण अॅनिमेशन STR_SETTINGS_MENU_FULL_DETAIL :पूर्ण तपशील STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :इमारती पारदर्शक STR_SETTINGS_MENU_TRANSPARENT_SIGNS :स्थानकांची नावे पारदर्शक ############ range ends here ############ range for file menu starts +STR_FILE_MENU_SAVE_GAME :खेळ वाचवणे +STR_FILE_MENU_LOAD_GAME :खेळ उघडा STR_FILE_MENU_QUIT_GAME :खेळ सोडून द्या STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :बाहेर पडा @@ -316,16 +376,28 @@ STR_TOWN_MENU_FOUND_TOWN :सापडल ############ range ends here ############ range for subsidies menu starts +STR_SUBSIDIES_MENU_SUBSIDIES :अनुदान ############ range ends here ############ range for graph menu starts +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :चालू असले नफा आलेख STR_GRAPH_MENU_INCOME_GRAPH :आवक आलेख +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :वितरित मालवाहू आलेख +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :कामगिरी इतिहास आलेख +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :कंपनी मूल्य आलेख +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :मालवाहू देयक दर ############ range ends here ############ range for company league menu starts +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :कंपनी लीग तक्ता +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :तपशीलावर कामगिरी रेटिंग +STR_GRAPH_MENU_HIGHSCORE :उच्च स्कोअर तक्ता ############ range ends here ############ range for industry menu starts +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :उद्योग निर्देशिका +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :इंडस्ट्री बंदिवासात +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :नवीन उद्योग फंड ############ range ends here ############ range for railway construction menu starts @@ -358,23 +430,85 @@ STR_TOOLBAR_SOUND_MUSIC :ध्वनी ############ range ends here ############ range for message menu starts +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :शेवटचा संदेश/बातम्या अहवाल STR_NEWS_MENU_MESSAGE_HISTORY_MENU :निरोपांचा इतिहास ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :जागाची माहिती STR_ABOUT_MENU_SEPARATOR : +STR_ABOUT_MENU_SCREENSHOT :द्श्य +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :द्श्य मोठे करा +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :स्थिर द्श्य +STR_ABOUT_MENU_GIANT_SCREENSHOT :संपूर्ण नकाशा स्क्रीनशॉट STR_ABOUT_MENU_ABOUT_OPENTTD :ओपेन टीटीडी बद्दल ############ range ends here -############ range for days starts (also used for the place in the highscore window) -STR_ORDINAL_NUMBER_1ST :प्रथम -STR_ORDINAL_NUMBER_2ND :द्वितीय -STR_ORDINAL_NUMBER_3RD :तृतीय -STR_ORDINAL_NUMBER_4TH :चौथे +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :१ +STR_ORDINAL_NUMBER_2ND :२ +STR_ORDINAL_NUMBER_3RD :३ +STR_ORDINAL_NUMBER_4TH :४ +STR_ORDINAL_NUMBER_5TH :५ +STR_ORDINAL_NUMBER_6TH :६ +STR_ORDINAL_NUMBER_7TH :७ +STR_ORDINAL_NUMBER_8TH :८ +STR_ORDINAL_NUMBER_9TH :९ +STR_ORDINAL_NUMBER_10TH :१० +STR_ORDINAL_NUMBER_11TH :११ +STR_ORDINAL_NUMBER_12TH :१२ +STR_ORDINAL_NUMBER_13TH :१३ +STR_ORDINAL_NUMBER_14TH :१४ +STR_ORDINAL_NUMBER_15TH :१५ +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :१ +STR_DAY_NUMBER_2ND :२ +STR_DAY_NUMBER_3RD :३ +STR_DAY_NUMBER_4TH :४ +STR_DAY_NUMBER_5TH :५ +STR_DAY_NUMBER_6TH :६ +STR_DAY_NUMBER_7TH :७ +STR_DAY_NUMBER_8TH :८ +STR_DAY_NUMBER_9TH :९ +STR_DAY_NUMBER_10TH :१० +STR_DAY_NUMBER_11TH :११ +STR_DAY_NUMBER_12TH :१२ +STR_DAY_NUMBER_13TH :१३ +STR_DAY_NUMBER_14TH :१४ +STR_DAY_NUMBER_15TH :१५ +STR_DAY_NUMBER_16TH :१६ +STR_DAY_NUMBER_17TH :१७ +STR_DAY_NUMBER_18TH :१८ +STR_DAY_NUMBER_19TH :१९ +STR_DAY_NUMBER_20TH :२० +STR_DAY_NUMBER_21ST :२१ +STR_DAY_NUMBER_22ND :२२ +STR_DAY_NUMBER_23RD :२३ +STR_DAY_NUMBER_24TH :२४ +STR_DAY_NUMBER_25TH :२५ +STR_DAY_NUMBER_26TH :२६ +STR_DAY_NUMBER_27TH :२७ +STR_DAY_NUMBER_28TH :२८ +STR_DAY_NUMBER_29TH :२९ +STR_DAY_NUMBER_30TH :३० +STR_DAY_NUMBER_31ST :३१ ############ range for days ends ############ range for months starts +STR_MONTH_ABBREV_JAN :जाने +STR_MONTH_ABBREV_FEB :फेब्रु +STR_MONTH_ABBREV_MAR :मार्च +STR_MONTH_ABBREV_APR :एप्रिल +STR_MONTH_ABBREV_MAY :मे +STR_MONTH_ABBREV_JUN :जून +STR_MONTH_ABBREV_JUL :जुलै +STR_MONTH_ABBREV_AUG :ऑग +STR_MONTH_ABBREV_SEP :सप्टें +STR_MONTH_ABBREV_OCT :ऑक्टो +STR_MONTH_ABBREV_NOV :नोव्हें +STR_MONTH_ABBREV_DEC :डिसें STR_MONTH_JAN :जानेवारी STR_MONTH_FEB :फेब्रूवारी @@ -391,39 +525,120 @@ STR_MONTH_DEC :डिसें ############ range for months ends # Graph window +STR_GRAPH_KEY_BUTTON :{BLACK}किल्ली +STR_GRAPH_KEY_TOOLTIP :{BLACK}आलेख दर्शवा की STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} - +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}चालू असले नफा आलेख +STR_GRAPH_INCOME_CAPTION :{WHITE}उत्पन्न आलेख +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}वितरित कार्गो एकके +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}कंपनी कामगिरी रेटिंग (कमाल रेटिंग = 1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}कंपनी मूल्ये + +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}मालवाहू भरणा दर +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}संक्रमणादरम्यान दिवस +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}मालवाहू 10 युनिट (किंवा 10,000 लिटर) 20 चौरस अंतरावर वितरण भरणा +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}सर्व सक्षम +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}सर्व अक्षम +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}देयक दर आलेखावरील सर्व मालवाहू प्रदर्शित +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}देयक दर आलेखावरील नाही मालवाहू प्रदर्शित +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}मालवाहू प्रकारासाठी टॉगल आलेख - वर / बंद STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}सविस्तर कामगिरी रेटिंग दाखवा # Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}कंपनी आलेख किल्ली # Company league window +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}कंपनी लीग सारणी STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :अभियंता +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :वाहतूक व्यवस्थापक +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :वाहतूक समन्वयक +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :रूट पर्यवेक्षक +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :संचालक +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :मुख्य कार्यकारी +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :अध्यक्ष +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :राष्ट्राध्यक्ष # Performance detail window +STR_PERFORMANCE_DETAIL :{WHITE}तपशीलवार कामगिरी रेटिंग +STR_PERFORMANCE_DETAIL_KEY :{BLACK}तपशील STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}या कंपनी बद्दल तपशील पहा ############ Those following lines need to be in this order!! +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}वाहने: +STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}स्टेशन: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}किमान नफा: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}किमान उत्पन्न: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}कमाल उत्पन्न: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}वितरीत: +STR_PERFORMANCE_DETAIL_CARGO :{BLACK}मालवाहू: +STR_PERFORMANCE_DETAIL_MONEY :{BLACK}पैसा: +STR_PERFORMANCE_DETAIL_LOAN :{BLACK}कर्ज: +STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}एकूण: ############ End of order list +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}गेल्या वर्षी नफा दिल्या वाहनांची संख्या. या वाहने, गाड्या, जहाजे, विमानाची समावेश आहे. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}सर्वात कमी उत्पन्न वाहनाच्या नफा (दोन वर्षे पेक्षा फक्त वाहने जुन्या मानले जातात) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}गेल्या 12 मात्रेत सर्वात कमी नफा तिमाहीत केली रोख +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}गेल्या 12 मात्रेत सर्वाधिक नफा तिमाहीत केली रोख +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}गेल्या चार मात्रेत वितरित कार्गो एकके +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}गेल्या तिमाहीत वितरित माल प्रकारच्या संख्या +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}पैसा या कंपनीच्या बँकेत आहे. +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}पैसा हा कंपनी कर्ज घेतले आहे. +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}शक्य बिंदू बाहेर एकूण गुण. # Music window +STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}सर्व +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}जुन्या शैली +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}नवीन शैली +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy रस्त्यावर +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}सानुकूल १ +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}सानुकूल २ +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}संगीत आवाज +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}प्रभाव आवाज +STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}कमी +STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}अधिक STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" - +STR_MUSIC_TRACK :{TINY_FONT}{BLACK}लोहमार्ग +STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}शीर्षक +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}चुळबूळ +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}कार्यक्रम +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}मागील संगीत जा +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}पुढील संगीत जा +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}संगीत थांबवा +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}संगीत प्रारंभ +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}संगीत आणि खंड सेट करण्यासाठी स्लाइडर पकडू +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}निवडा 'सर्व संगीत' कार्यक्रम +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}निवडा 'जुन्या प्रकारच्या संगीत' कार्यक्रम +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}निवडा 'नवीन संगीत' कार्यक्रम +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}निवडा 'स्ट्रीट संगीत' कार्यक्रम +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}'कस्टम 1' (वापरकर्ता परिभाषित) कार्यक्रम निवडा +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'कस्टम 2' (वापरकर्ता परिभाषित) कार्यक्रम निवडा +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}कार्यक्रम चुळबूळ - प्रारंभ / बंद +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}संगीत ट्रॅक निवड दाखवा + +STR_ERROR_NO_SONGS :{WHITE}संगीत न संगीत संच निवडले गेले आहे. एकही गाणी खेळला जाईल. # Playlist window +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}संगीत कार्यक्रम निवड. STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}गाणे क्रमांक +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}कार्यक्रम - '{STRING}' +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}स्पष्ट # Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}{NUM} स्थान अव्वल कंपन्या STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) @@ -463,9 +678,7 @@ STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDE -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system +# Order review system / warnings STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} जुनी होत आहे STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} खूप जुनी होत आहे @@ -510,10 +723,6 @@ STR_GAME_OPTIONS_CURRENCY_SKK :स्लोव ############ end of currency region -############ start of measuring units region -############ end of measuring units region - - ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_FRENCH :फ्रेंच @@ -535,10 +744,12 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :ईटेलि ############ end of townname region +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :दर महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :दर ३ महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :दर ६ महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :दर १२ महिने +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}भाषा @@ -550,6 +761,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + # Custom currency window @@ -572,7 +784,7 @@ STR_SUBSIDY_X4 :x४ -# Advanced settings window +# Settings tree window @@ -926,6 +1138,8 @@ STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} @@ -952,6 +1166,8 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO_ABBREV :?? +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -980,7 +1196,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Goal question window -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window @@ -1089,6 +1306,7 @@ STR_GROUP_ALL_AIRCRAFTS :सर्व + STR_GROUP_REMOVE_ALL_VEHICLES :सगळे वाहने काढा @@ -1111,6 +1329,9 @@ STR_PURCHASE_INFO_COST_SPEED :{BLACK}कि + + + # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -1147,6 +1368,7 @@ STR_REPLACE_VEHICLE_AIRCRAFT :विमान + # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} @@ -1312,6 +1534,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE} स् # Industry related errors + # Station construction related errors @@ -1594,8 +1817,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -1606,9 +1827,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index 9be290e2bc..b8f10533e3 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -65,8 +65,8 @@ STR_CARGO_SINGULAR_PASSENGER :مسافر STR_CARGO_SINGULAR_COAL :ذغال STR_CARGO_SINGULAR_MAIL :نامه STR_CARGO_SINGULAR_OIL :نفت -STR_CARGO_SINGULAR_LIVESTOCK :چارپایان -STR_CARGO_SINGULAR_GOODS :محصولات مصرفی +STR_CARGO_SINGULAR_LIVESTOCK :دام +STR_CARGO_SINGULAR_GOODS :کالا STR_CARGO_SINGULAR_GRAIN :غله STR_CARGO_SINGULAR_WOOD :چوب STR_CARGO_SINGULAR_IRON_ORE :سنگ آهن @@ -97,28 +97,28 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :نوشابه گ STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} مسافر{P "" ان} STR_QUANTITY_COAL :{WEIGHT_LONG} از زغال سنگ -STR_QUANTITY_MAIL :{COMMA}بسته نامه +STR_QUANTITY_MAIL :{COMMA}بسته پستی STR_QUANTITY_OIL :{VOLUME_LONG} نفت -STR_QUANTITY_LIVESTOCK :{COMMA} فقره از جارپایان -STR_QUANTITY_GOODS :{COMMA} جعبه{P ی های} محموله تجاری -STR_QUANTITY_GRAIN :{WEIGHT_LONG}حبوبات +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}راس دام +STR_QUANTITY_GOODS :{COMMA}{NBSP}صندوق کالا +STR_QUANTITY_GRAIN :{WEIGHT_LONG} غله STR_QUANTITY_WOOD :{WEIGHT_LONG} چوب STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} سنگ آهن STR_QUANTITY_STEEL :{WEIGHT_LONG} فولاد -STR_QUANTITY_VALUABLES :{COMMA} بسته{P "" های} اشیای قیمتی +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}کیسه ارقام گرانبها STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} سنگ مس STR_QUANTITY_MAIZE :{WEIGHT_LONG} ذرت STR_QUANTITY_FRUIT :{WEIGHT_LONG} میوه -STR_QUANTITY_DIAMONDS :{COMMA} بسته{P "" های} الماس +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}کیسه الماس STR_QUANTITY_FOOD :{WEIGHT_LONG} غذا -STR_QUANTITY_PAPER :{WEIGHT_LONG}از کاغذ -STR_QUANTITY_GOLD :{COMMA} بسته‌ی طلا +STR_QUANTITY_PAPER :{WEIGHT_LONG} کاغذ +STR_QUANTITY_GOLD :{COMMA}{NBSP}کیسه طلا STR_QUANTITY_WATER :{VOLUME_LONG}از آب STR_QUANTITY_WHEAT :{WEIGHT_LONG} گندم STR_QUANTITY_RUBBER :{VOLUME_LONG} کائوچو STR_QUANTITY_SUGAR :{WEIGHT_LONG} شکر -STR_QUANTITY_TOYS :{COMMA} اسباب بازی -STR_QUANTITY_SWEETS :{COMMA} {P "" s}بسته شیرینی +STR_QUANTITY_TOYS :{COMMA}{NBSP}اسباب بازی +STR_QUANTITY_SWEETS :{COMMA}{NBSP}کیسه شیرینی STR_QUANTITY_COLA :{VOLUME_LONG} نوشابه STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} پشمک STR_QUANTITY_BUBBLES :{COMMA} حباب @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}همه # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} مسافر -STR_BAGS :{COMMA} کیف -STR_TONS :{COMMA} تن -STR_LITERS :{COMMA} لیتر -STR_ITEMS :{COMMA} فقره -STR_CRATES :{COMMA} جعبه +STR_PASSENGERS :{COMMA}{NBSP}مسافر{P "" s} +STR_BAGS :{COMMA}{NBSP}کیسه +STR_TONS :{COMMA}{NBSP}تن +STR_LITERS :{COMMA}{NBSP}لیتر +STR_ITEMS :{COMMA}{NBSP}عدد{P "" s} +STR_CRATES :{COMMA}{NBSP}صندوق} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :آبی تیره @@ -191,30 +191,30 @@ STR_COLOUR_GREY :خاکستری STR_COLOUR_WHITE :سفید # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} مایل در ساعت -STR_UNITS_VELOCITY_METRIC :{COMMA} کیلومتر/ساعت -STR_UNITS_VELOCITY_SI :{COMMA} متر/ثانیه +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}مایل بر ساعت +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}کیلومتر بر ساعت +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}متر بر ثانیه -STR_UNITS_POWER_IMPERIAL :{COMMA}اسب بخار -STR_UNITS_POWER_METRIC :{COMMA}اسب بخار -STR_UNITS_POWER_SI :{COMMA}کیلو وات +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}اسب بخار +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}اسب بخار +STR_UNITS_POWER_SI :{COMMA}{NBSP}کیلووات -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}تن -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}کیلوگرم +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}تن +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}کیلوگرم -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} تن -STR_UNITS_WEIGHT_LONG_SI :{COMMA} کیلو گرم +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}تن +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}کیلوگرم -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}لیتر -STR_UNITS_VOLUME_SHORT_SI :{COMMA}متر مکعب +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}لیتر +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}متر مکعب -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} لیتر -STR_UNITS_VOLUME_LONG_SI :{COMMA} متر مکعب +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}لیتر{P "" s} +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}متر مکعب -STR_UNITS_FORCE_SI :{COMMA} کیلو نیوتن +STR_UNITS_FORCE_SI :{COMMA}{NBSP}کیلو نیوتن -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} پا -STR_UNITS_HEIGHT_SI :{COMMA} متر +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}پا +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}متر # Common window strings STR_LIST_FILTER_TITLE :{BLACK}متن فیلتر: @@ -240,6 +240,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}نوار STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}نوار اسکرول - لیست را چپ و راست می کند STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}تخریب ساختمان و ... در بخشی از زمین.با فشردن همزمان دکمه Ctrl به طور مورب می توانید تخریب کنید.فشردن همزمان دکمه Shift برآورد هزینه را نمایش می دهد. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK} نمایش مخفی ها +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK} نمایش مخفی ها +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK} نمایش مخفی ها +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK} نمایش مخفی ها + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}با فعال کردن این دکمه قطارهای مخفی نیز نمایش داده می شوند +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}با فعال کردن این دکمه خودروهای مخفی نیز نمایش داده می شوند +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}با فعال کردن این دکمه کشتی های مخفی نیز نمایش داده می شوند +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}با فعال کردن این دکمه هواپیماهای مخفی نیز نمایش داده می شوند + # Query window STR_BUTTON_DEFAULT :{BLACK}حالت قراردادی STR_BUTTON_CANCEL :{BLACK}لغو @@ -285,14 +296,14 @@ STR_SORT_BY_POWER :توان STR_SORT_BY_TRACTIVE_EFFORT :تلاش کششی STR_SORT_BY_INTRO_DATE :تاریخ احداث STR_SORT_BY_RUNNING_COST :هزینه کارکرد -STR_SORT_BY_POWER_VS_RUNNING_COST :توان/هزینه کارکرد +STR_SORT_BY_POWER_VS_RUNNING_COST :هزینه توان/کارکرد STR_SORT_BY_CARGO_CAPACITY :ظرفیت محموله STR_SORT_BY_RANGE :بازه STR_SORT_BY_POPULATION :جمعیت STR_SORT_BY_RATING :نرخ # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}متوقف کردن بازی +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}وقفه موقت بازی STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}بالا بردن سرعت بازی STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}تنضیمات STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}ذخیره بازی، ترک بازی، خروج از بازی @@ -304,7 +315,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}اطلا STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}توضیحات کلی راجع به شرکت را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}نمایش کتابچه راهنما STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}نمایش لیست اهداف -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}نمودار ها را نشان می دهد +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}نمایش نمودارها STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}جدول رده بندی شرکت ها را نشان می دهد STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ساخت صنایع جدید یا لیست همه صنایع موجود STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}نمایش لیست قطار های شرکت، Ctrl+Click نمابش را بین گروه ها و قطار ها تغییر می دهد @@ -351,7 +362,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :خروج ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :تنظیمات بازی -STR_SETTINGS_MENU_CONFIG_SETTINGS :تنظیمات پیشرفته STR_SETTINGS_MENU_SCRIPT_SETTINGS :هوش مصنوعی / تنظیمات بازی STR_SETTINGS_MENU_NEWGRF_SETTINGS :تنظیمات NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :گزینه های شفافیت @@ -460,7 +470,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :باز/بسته STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :نمایش/حذف بلوکهای کثیف ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -476,22 +486,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -524,7 +552,7 @@ STR_MONTH_DEC :دسامبر # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}کلید -STR_GRAPH_KEY_TOOLTIP :{BLACK}نمایش کلید نمودار +STR_GRAPH_KEY_TOOLTIP :{BLACK}نمایش راهنمای نمودار STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} @@ -800,13 +828,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} در گاراژ منتظر است STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE}در آشیانه در حال انتظار است -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :تعداد دستورهای نسبت داده ی {WHITE}{VEHICLE} کم تر از حد می باشد STR_NEWS_VEHICLE_HAS_VOID_ORDER :برنامه حرکت {WHITE}{VEHICLE} باطل شده است STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :برنامه جابجایی {WHITE}{VEHICLE} دستور تکراری دارد STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} یک ایستگاه نا معتبر در برنامه جابجایی خود دارد -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} در دستور کارش فرودگاهی با طول باند کوتاه تر از حد لازم دارد. STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} قدیمی شده است STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} بسیار قدیمی شده است @@ -889,10 +916,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :لیره گرج STR_GAME_OPTIONS_CURRENCY_IRR :ریال ایران (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK} خودروی جاده ای STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}انتخاب جهت فرمان ماشین ها STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :چپ فرمان @@ -928,11 +951,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :کاتالان STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK} ذخیره اتوماتیک STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK} انتخاب فاصله زمانی بین ذخیره کردن های اتوماتیک +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :خاموش STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :هر ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :هر ۳ ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :هر ۶ ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :هر ۱۲ ماه +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}زبان واسط کاربری را برای استفاده انتخاب کنید @@ -944,8 +969,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}وضوح STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}وضوح تصویر دلخواه را انتخاب کنید STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}قالب ذخیره تصویر بازی -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}قالب ذخیره تصویر بازی را انتخاب نمایید + STR_GAME_OPTIONS_BASE_GRF :{BLACK}بسته گرافیک پایه STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بسته گرافیک پایه را انتخاب کنید @@ -961,6 +985,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}بسته STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} فایل خراب است STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}اطلاعات اضافه درباره بسته ی موسیقی پایه +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}ناتوان در گرفتن تنظیمات نمایش STR_ERROR_FULLSCREEN_FAILED :{WHITE}حالت تمام صفحه با شکست مواجه شد # Custom currency window @@ -1046,8 +1071,7 @@ STR_CITY_APPROVAL_HOSTILE :دشمنانه STR_WARNING_NO_SUITABLE_AI :{WHITE}هیچ بسته هوش مصنوعی موجود نیست...{}شما می توانید چندین بسته هوش مصنوعی(AI) را از قسمت محتویات برخط بارگیری کنید -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}تنظیمات پیشرفته +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}متن فیلتر: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}نمایش همه STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}جمع کردن همه @@ -1059,14 +1083,19 @@ STR_CONFIG_SETTING_TYPE_GAME_MENU :تنظیمات STR_CONFIG_SETTING_TYPE_GAME_INGAME :تنظیمات بازی ( در ذخیره سازی اعمال میشود و فقط در بازی فعلی تاثیر دارد) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :تنظیمات شرکت ( در ذخیره سازی ها اعمال میشود و در بازی فعلی موثر است) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}نمایش: +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}دسته بندی: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}نوع: STR_CONFIG_SETTING_RESTRICT_BASIC :تنظیمات پایه STR_CONFIG_SETTING_RESTRICT_ADVANCED :تنظیمات پیشرفته STR_CONFIG_SETTING_RESTRICT_ALL :تنظیمات حرفه ای/ همه تنظیمات STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :تنظیمات با مقادیر متفاوت با پیشفرض STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :تنظیمات با مقادیر متفاوت با تنظیمات بازی جدید شما -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :تمام تنظیمات +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :تمام انواع تنظیمات +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}نمایش تمام نتایج با تنظیم{}{SILVER}دسته بندی {BLACK}به {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}نمایش تمام نتایج با تنظیم{}{SILVER}نوع{BLACK}به {WHITE}تمام انواع تنظیم +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}نمایش تمام نتایج با تنظیم{}{SILVER}دسته بندی {BLACK}به {WHITE}{STRING} {BLACK}و {SILVER}نوع {BLACK}به {WHITE}تمام انواع +STR_CONFIG_SETTINGS_NONE :{WHITE}- هیچ - STR_CONFIG_SETTING_OFF :خاموش STR_CONFIG_SETTING_ON :روشن @@ -1092,7 +1121,6 @@ STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :خرابی وس STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :ضریب سوبسید: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS :هزینه های ساخت و ساز: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :اجازه ساخت در دامنه ها و سواحل: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :اجازه محوطه سازی در زیر ساختمان ، ریلها، و غیره (شیب خودکار): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :اجازه محوطه سازی در زیر ساختمان ، ریلها، و غیره بدون نیاز به تخریب STR_CONFIG_SETTING_CATCHMENT :واقع بینانه تر شدن اندازه حوضه آبریز: {STRING} @@ -1105,10 +1133,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :روش سرعت STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :غیر قابل پیچیدن سر پیچ های ۹۰° برای قطار و کشتی ها: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :قابلیت اتصال ایستگاه هایی که مستقیما به هم وصل نیستند: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :استفاده از الگوریتم بهبود یافته برای بارگذاری : {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :بارگیری وسایل نقلیه به تدریج: {STRING} STR_CONFIG_SETTING_INFLATION :تورم: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :بار را فقط زمانی به ایستگاه تحویل بده که درخواستی برای آن باشد: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :حداکثر طول پل: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :حداکثر طول تونل: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :روش ساخت و ساز اولیه صنعت توسط کاربر: {STRING} @@ -1127,7 +1152,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :توقف قطا STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ابتدا STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :میانه STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :انتها -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :جاده صف‌بندی خودروی جاده‌ای (با اثرات کوانتومی): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :جابجا‌شدن نمایش هنگام نزدیک شدن نشانگر موس به لبه ها: {STRING} STR_CONFIG_SETTING_BRIBE :قابلیت رشوه دادن به مقامات محلی: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :قابلیت انحصاری کردن حقوق حمل و نقل: {STRING} @@ -1142,8 +1166,6 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :کاهش STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :عادی STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :اجازه رانندگی در خیابان‌های شهر{STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :اجازه استفاده از جاده یک بازیکن توسط دیگر رقیبان: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :قابلیت ساخت ایستگاه‌های متصل به هم: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :قابلیت استفاده از چندین بسته NewGRF: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغییر دادن این تنظیم هنگامی که خودرو وجود دارد ممکن نیست STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :تعمیر و نگهداری زیرساخت ها: {STRING} @@ -1161,26 +1183,40 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY :کمترین ا STR_CONFIG_SETTING_POPULATION_IN_LABEL :نمایش جمعیت شهر در عنوان شهر: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :صخامت خط ها در گراف: {STRING} +STR_CONFIG_SETTING_LANDSCAPE :چشم انداز: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :چشم اندازها سناریوهای پایه بازی را تعریف میکنند که شامل انواع مختلف محموله و نیز ضروریات رشد شهر میباشند.اما NewGRF و اسکریپت ها اجازه کنترل بر جزئیات بیشتری را میدهند. STR_CONFIG_SETTING_LAND_GENERATOR :طراح زمین: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :نقشه ساز اوریجینال وابسته به ست پایه گرافیک بازی است و شامل اشکال ثابت چشم انداز میباشد. تراجنسیس نقشه سازی برپایه نویز پرلین است که امکانات کنترل جزئیات بیشتری در اختیار میگذارد. STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :اصلی STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :پیدایش زمین +STR_CONFIG_SETTING_TERRAIN_TYPE :نوع زمین: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(فقط تراجنسیس) تپه دار بودن چشم انداز +STR_CONFIG_SETTING_INDUSTRY_DENSITY :تراکم مراکز تولید: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :چند کارخانه باید ایجاد شود و در چه درجه ای باید در بازی نگهداری شود STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :تمام پالایشگاه ها در لبه های تقشه ساخته می شوند که ساحل جزیره است STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط برف: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :پستی و بلندی های شدید (فقط در حالت «پیدایش زمین») : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :ارتفاع خط برف را در مناطق نیمه قطبی کنترل کنید. وجود برف بر ایجاد صنایع و اقلام ضروری رشد شهر تاثیر میگذارد. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :پستی و بلندی های زمین: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(فقط ترا جنسیس) چگونگی تکرار تپه ها را انتخاب کنید: چشم انداز آرام تعداد کمتری تپه با پراکندگی بیشتر دارد. چشم انداز خشن تپه های فراوانی دارد که ممکن است تکرار شده باشند. STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :بسیار هموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :هموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :ناهموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :بسیار ناهموار +STR_CONFIG_SETTING_VARIETY :توضیع انواع : {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(فقط TerraGenesis) کنترل آب و هوای نقشه شامل کوه و مناطق هموار می باشد. این فقط نقشه را هموارتر می سازد.تغییرات دیگر مربوط به کوه ها است +STR_CONFIG_SETTING_RIVER_AMOUNT :تعداد رودخانه ها: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :تعداد رودخانه ها برای ساخت را مشخص نمایید STR_CONFIG_SETTING_TREE_PLACER :الگوریتم قرار دهنده مکان درخت‌ها: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :نحوه توزیع درختان در نقشه را انتخاب کنید: "اوریجینال" درختان را به صورت یکسان پخش میکند. "بهبود یافته" درختان را به صورت گروهی میکارد STR_CONFIG_SETTING_TREE_PLACER_NONE :هیچکدام STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :اصلی STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :بهبودیافته +STR_CONFIG_SETTING_ROAD_SIDE :خودروهای جاده ای: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :انتخاب جهت رانندگی STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :جهت چرخش نقشه بلندی: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :پادساعت‌گرد STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :ساعت‌گرد STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :سطح ارتفاعی که نقشه‌ی سناریو می‌تواند داشته باشد: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :فعال کردن محوطه سازی با قطعه‌ها در مرزهای نقشه: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :در صورت غیر فعال شدن، تمامی لبه های نقشه دریا خواهد بود STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}یک یا چند قطعه در لبه شمالی که خالی نیست STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}یک یا چند قطعه در لبه شمالی که آب نیست @@ -1193,11 +1229,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفش STR_CONFIG_SETTING_REVERSE_SCROLLING :برعکس کردن جهت حرکت کردن صفحه: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :تصویر صاف در نمای اضافه: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :نمایش متن کمکی وقتی از چندین ابزار استفاده می شود: {STRING} -STR_CONFIG_SETTING_LIVERIES :نمایش دخل و خرج شرکت: {STRING} +STR_CONFIG_SETTING_LIVERIES :نمایش طراحی مخصوص وسیله نقلیه : {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :کنترل موارد قابل استفاده برای طراحی مخصوص ماشین‌های جاده‌ای (در مقابل طراحی شرکت) STR_CONFIG_SETTING_LIVERIES_NONE :هیچکدام STR_CONFIG_SETTING_LIVERIES_OWN :شرکت خود STR_CONFIG_SETTING_LIVERIES_ALL :همه شرکت‌ها -STR_CONFIG_SETTING_PREFER_TEAMCHAT :چت با تیم با دکمه «Enter»: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :ترجیح برای چت با تیمِ «Enter»: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :عمل غلطک ماوس: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :بزرگنمایی نقشه STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :جابجا کردن نقشه @@ -1211,22 +1248,22 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :خاموش STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :حرکت در نقشه با کلیک چپ:: {STRING} +STR_CONFIG_SETTING_AUTOSAVE :ذخیره خودکار: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :انتخاب فاصله زمانی بین ذخیره کردن های خودکار + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :از این {STRING} برای نام فایل‌های ذخیره استفاده کن STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طولانی (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :کوتاه(31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :پالت پیش فرض برای NewGRF هایی که پالتی برایشان مشخص نگردیده: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :پالت سیستم عامل داس -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :پالت ویندوز - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :توقف خودکار هنگام آغاز بازی جدید: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :قابلیت ها در زمان متوقف بودن بازی: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :انتخاب کارکرد مورد نظر در هنگام متوقف کردن بازی STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :هیچ کار STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :همه کارها غیر از ساخت و ساز STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :همه کارها به جز تغییر پستی/بلندی زمین STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :همه کارها -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :اسنفاده از لیست پیشرفته خودرو: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :اسنفاده گروهی از لیست خودرو: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :استفاده از نشانه‌های بارگیری/بارگذاری: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :استفاده از تیک(هزارم ثانیه) به جای روز در برنامه ساعتی: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :نشان دادن ورود و خروج در جدول زمانی: {STRING} @@ -1332,33 +1369,51 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :عادی STR_CONFIG_SETTING_TOWN_GROWTH_FAST :تند STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :بسیار تند STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضرب ابتدایی اندازه شهرستان: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :حذف عناصر پوچ جاده در طول ساخت و ساز جاده: {STRING} - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}واسط کاربری -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}ساخت و ساز +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :واحدهای سرعت: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :هر زمان که سرعت در محیط بازی نمایش داده شود، آن را با واحد انتخاب شده نمایش بده +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :امپریال (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :متریک (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :واحدهای توان وسیله نقلیه: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :هر زمان که توان وسیله در محیط بازی نمایش داده شود، آن را با واحد انتخاب شده نمایش بده +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :امپریال (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :متریک (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :واحدهای حجمی: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :هر زمان که وزن ها در محیط بازی نمایش داده شود، آن را با واحد انتخاب شده نمایش بده +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :امپریال (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :متریک (t/tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :واحدهای تعداد: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :متریک(l) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :امپریال (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :متریک (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :واحدهای ارتفاع: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :امپریال (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :متریک (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :متر (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}بومی سازی +STR_CONFIG_SETTING_INTERFACE :{ORANGE}واسط کاربری +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}ساخت و ساز STR_CONFIG_SETTING_VEHICLES :{ORANGE}وسایل نقلیه -STR_CONFIG_SETTING_STATIONS :{ORANGE}ایستگاه ها -STR_CONFIG_SETTING_ECONOMY :{ORANGE}اقتصاد -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}توزیع محموله +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}مسیریابی +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}محیط زیست +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}مقامات +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}شهرها +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}صنایع +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}توزیع محموله STR_CONFIG_SETTING_AI :{ORANGE}رقیبان -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}نمایش گزینه ها -STR_CONFIG_SETTING_INTERACTION :{ORANGE}اثرمتقابل -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}نشانگرها -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}مدیریت محموله STR_CONFIG_SETTING_AI_NPC :{ORANGE}بازیگران رایانه -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}نوسازی خودکار -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}تعمیر و بازبینی -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}مسیریابی -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}قطارها -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}شهرها -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}صنایع STR_CONFIG_SETTING_PATHFINDER_OPF :اصلی STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1390,14 +1445,13 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... قا STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}بازی جدید -STR_INTRO_LOAD_GAME :{BLACK}ادامه بازی های قبلی +STR_INTRO_LOAD_GAME :{BLACK}بارگذاری بازی های ذخیره شده STR_INTRO_PLAY_SCENARIO :{BLACK}بازی سناریو STR_INTRO_PLAY_HEIGHTMAP :{BLACK}بازی نقشه پستی/بلندی STR_INTRO_SCENARIO_EDITOR :{BLACK}ساخت سناریو STR_INTRO_MULTIPLAYER :{BLACK}بازی چند نفره STR_INTRO_GAME_OPTIONS :{BLACK}تنضیمات بازی -STR_INTRO_ADVANCED_SETTINGS :{BLACK}تنظیمات پیشرفته STR_INTRO_NEWGRF_SETTINGS :{BLACK}تنظیمات NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}چک کردن محتوی آنلاین STR_INTRO_SCRIPT_SETTINGS :{BLACK} تنظیمات هوش مصنوعی / اسکریپت @@ -1416,7 +1470,6 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}انتخ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}انتخاب «سرزمین اسباب بازی‌ها» برای سبک بازی STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}نشان دادن تنظیمات بازی -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}نمایش تنظیمات پیشرفته STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}نمایش تنظیمات NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}بررسی وجود مجموعه ها و به روز رسانی های جدید در اینترنت STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}نمایش تنظیمات هوش مصنوعی و اسکریپت های بازی @@ -1598,7 +1651,7 @@ STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}سرو STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}عدم مطابقت ویرایش STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}عدم مطابقت NewGRF -STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}ورود به بازی +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}الحاق به بازی STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}تازه سازی سرویس دهنده STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}تازه سازی اطلاعات سرویس دهنده @@ -1742,6 +1795,7 @@ STR_NETWORK_CLIENT :سرویس گی STR_NETWORK_SPECTATORS :تماشاگران STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}مقدار پولی که می خواهید دریافت نمایید را وارد کنید +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}تماشگر # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}رمز وارد شده را به خاطر نسپار @@ -1945,8 +1999,8 @@ STR_STATION_BUILD_COVERAGE_OFF :{BLACK}خامو STR_STATION_BUILD_COVERAGE_ON :{BLACK}روشن STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}منطقه تحت پوشش از سایت پیشنهادی را نشان نده STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}منطقه تحت پوشش از سایت پیشنهادی را نشان بده -STR_STATION_BUILD_ACCEPTS_CARGO :{GOLD}{CARGO_LIST}{BLACK}قبول می کند: -STR_STATION_BUILD_SUPPLIES_CARGO :{GOLD}{CARGO_LIST}{BLACK}تدارکات: +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}قبول میکند: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}تدارکات: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}پیوستن ایستگاه @@ -2237,6 +2291,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}محموله های دریافتی : {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حد سرعت ریل: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}حداکثر سرعت جاده ای: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :صخره @@ -2333,7 +2388,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-2013 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی @@ -2360,7 +2415,7 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_OSKTITLE :{BLACK}نام فایل ذخیره بازی را وارد کنید # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}سازنده دنیا +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}ساخت دنیا STR_MAPGEN_MAPSIZE :{BLACK}اندازه نقشه: STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}تعداد شهرها: @@ -2369,10 +2424,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}تعدا STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}ارتفاع خط برف: STR_MAPGEN_SNOW_LINE_UP :{BLACK}اضافه کردن یک واحد به ارتفاع خط برف STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}کم کردن یک واحد از ارتفاع خط برف -STR_MAPGEN_RANDOM_SEED :{BLACK}شماره ساخت تصادفی: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}برای وارد کردن شماره تصادفی کلیک کنید -STR_MAPGEN_RANDOM :{BLACK}انتخاب تصادفی -STR_MAPGEN_RANDOM_HELP :{BLACK}شماره ساخت تصادفی برای ساخت زمین و پستی و بلندی ها به کار می رود STR_MAPGEN_LAND_GENERATOR :{BLACK}سازنده زمین: STR_MAPGEN_TREE_PLACER :{BLACK}الگوریتم درخت ها: STR_MAPGEN_TERRAIN_TYPE :{BLACK}نوع پستی/بلندی: @@ -2399,7 +2450,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}نام STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}اندازه: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}یک عدد تصادفی وارد کنید STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}تغییر ارتفاع خط برف STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}تغییر سال آغاز @@ -2421,7 +2471,7 @@ STR_GENERATION_ABORT_CAPTION :{WHITE}لغو STR_GENERATION_ABORT_MESSAGE :{YELLOW}آیا مطمئنید که می خواهید روند ساخت را متوقف کنید؟ STR_GENERATION_PROGRESS :{WHITE}{NUM}% کامل شده STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}ساختن دنیا +STR_GENERATION_WORLD_GENERATION :{BLACK}ساخت دنیا STR_GENERATION_RIVER_GENERATION :{BLACK}ساخت رودخانه STR_GENERATION_TREE_GENERATION :{BLACK}ساختن درخت STR_GENERATION_OBJECT_GENERATION :{BLACK}ساختن اشیاء @@ -2454,6 +2504,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}حرکت STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}NewGRF انتخاب شده را به بالا می فرستد STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}حرکت به پایین STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}NewGRF انتخاب شده را به پایین می فرستد +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}بروزرسانی +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}NewGRF هایی که ویرایش جدیدترشان را دارید به روزرسانی کنید STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}یک لیست از فایلهای NewGRF که نصب شده است STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}ثبت پارامترها @@ -2478,6 +2530,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}فایل STR_NEWGRF_SETTINGS_DISABLED :{RED}غیرفعال STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}با این ورژن از OpenTTD همخوانی ندارد +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}ذخیره لیست +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}لیست های موجود،برای کپی یکی را انتخاب کنید +STR_SAVE_PRESET_TITLE :{BLACK}یک نام برای لیست وارد کنید +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}لیست انتخاب شده برای ذخیره +STR_SAVE_PRESET_CANCEL :{BLACK}لغو +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}تغییر ندادن لیست +STR_SAVE_PRESET_SAVE :{BLACK}ذخیره +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}ذخیره لیست در نام انتخاب شده + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}تغییر پارامترهای NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}بسته @@ -2505,10 +2567,9 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نمای STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}رفتن به تصویر STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}رفتن به تصویر بعد. اگر تصویر معمولی نیست به تصویر معمولی بعدی می رود STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}تصویر قبلی -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نمایش تصویر عادی قبلی، بدون انجام دادن هر گونه تغییرات بر آخر +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نمایش تصویر عادی قبلی، بدون انجام دادن هر گونه تغییرات STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}نمایش تصویر انتخاب شده. تغییر مکان تصویر در زمان بارگزاری اعمال نمی شود STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}تغییر مکان تصویر، تغییر مقدار اضافه شونده به X و Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}مقدار اضافه شونده به X: {NUM}, مقدار اضافه شونده به Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}برداشتن تصویر STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}برداشتن یک تصویر از یک نقطه از صفحه نمایش @@ -2570,6 +2631,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} از « STR_NEWGRF_INVALID_ENGINE :«مدل وسیله نقلیه نامعتبر» STR_NEWGRF_INVALID_INDUSTRYTYPE :«صنایع نامعتبر» +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE :وسیله نقلیه نامعتبر + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}چک کردن برای فایل های NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}چک کردن فایل های NewGRF. زمان انجام، به تعداد فایلها بسته است... @@ -2608,7 +2672,7 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (هنوز نیاز است) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (دریافت گردیده) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}رشد شهر هر {ORANGE}{COMMA}{BLACK} روز -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}رشد شهر هر {ORANGE}{COMMA}{BLACK} روز (ساخته شده) +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}رشد شهر هر {ORANGE}{COMMA}{BLACK} روز (بنیان شده) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}شهر رشد {RED}نمی {BLACK} کند STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}حد سروصدا در شهر: {ORANGE}{COMMA}{BLACK} بیشینه: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}نمایش شهر در وسط صفحه نمایش. کنترل+کلیک یک نمای اضافه از شهر باز می کند @@ -2665,7 +2729,7 @@ STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :سوال -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :لغو STR_GOAL_QUESTION_BUTTON_OK :باشد STR_GOAL_QUESTION_BUTTON_NO :خیر @@ -2684,6 +2748,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :راه‌اند STR_GOAL_QUESTION_BUTTON_POSTPONE :به تاخیر انداختن STR_GOAL_QUESTION_BUTTON_SURRENDER :تسلیم STR_GOAL_QUESTION_BUTTON_CLOSE :بستن +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}یارانه ها @@ -2696,6 +2761,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی # Story book window STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}کتابچه راهنمای عمومی +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}رجوع به هدف نامعتبر # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}نام ایستگاه ها- بر روی نام کلیک کنید تا مرکز صفحه را بر روی ایستگاه قرار دهد. Ctrl+Click برای گشودن یک پنجره نمای جدا از ایستگاه @@ -2710,7 +2776,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}هیچ # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}در انتظار: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} منشعب شده از {STATION}) @@ -2882,6 +2947,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :فرستادن + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :قطار جدید STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :قطار جدید مونوریل @@ -2896,8 +2962,8 @@ STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}سرعت STR_PURCHASE_INFO_REFITTABLE :(قابل تعمیر) STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}برد: {GOLD}{COMMA} قطعه -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}لیست انتخاب قطار - برای اطلاعات بیشتر روی وسیله کلیک کنید -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}لیست انتخاب کشتی - برای اطلاعات بیشتر روی کشتی کلیک کنید +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}لیست انتخاب قطار - برای اطلاعات بیشتر روی وسیله کلیک کنید. برای مخفی یا پدیدار کردن انواع قطار کنترل+کلیک کنید +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}لیست انتخاب کشتی - برای اطلاعات بیشتر روی کشتی کلیک کنید. برای مخفی یا دوباره پدیدار کردن نوع کشتی ها، کنترل+کلیک کنید STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}لیست انتخاب هواپیما - برای اطلاعات بیشتر روی هواپیما کلیک کنید STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}ساخت وسیله نقلیه @@ -2918,6 +2984,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}تغیی STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}نام گذاری مجدد نوع کشتی STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}نامگذاری مجدد نوع هواپیما +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}مخفی +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}مخفی +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}مخفی +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}مخفی + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}نمایش +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}نمایش +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}نمایش +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}نمایش + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}میخ مخفی کردن/ نمایش دادن مدل قطار ها +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}میخ مخفی کردن/ نمایش دادن مدل خودرو ها +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}میخ مخفی کردن/ نمایش دادن مدل کشتی ها +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :میخ مخفی کردن/نمایش دادن مدل های هواپیما + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}تغییر نام انواع قطار ها STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}تغییر نام انواع ماشین ها STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}نام گذاری مجدد نوع کشتی @@ -2979,6 +3060,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :ماشین STR_REPLACE_VEHICLE_SHIP :کشتی STR_REPLACE_VEHICLE_AIRCRAFT :هواپیما +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}وسیله در حال استفاده است +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}ستون وسیله های شما +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}وسیله های موجود +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK} ستون با وسیله نقلیه آماده جایگزینی می باشد + @@ -3043,7 +3129,7 @@ STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}بیشی STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}ظرفیت: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}فاصله ی زمانی بین تعمیرات دوره ای: {LTBLUE}{COMMA}روز {BLACK} آخیرین تعمسرات: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}فاصله ی زمانی بین تعمیرات دوره ای: {LTBLUE}{COMMA}روز {BLACK} آخیرین تعمیرات: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}افزایش مدت سرویس به مقدار 10. برای افزایش به مقدار 5 باید Ctrl+Click کنید STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}کاهش مدت سرویس به مقدار 10، برای کاهش به مقدار 5 باید Ctrl+Click کنید @@ -3141,6 +3227,10 @@ STR_ORDER_OUT_OF_RANGE :{RED} (مقصد # Time table window +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :حرکت ({STRING}, برنامه ریزی نشده است) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :حرکت ({STRING}, برنامه ریزی نشده است) با حداکثر {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(توقف برای {STRING}, برنامه ریزی نشده است) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(دستور کار {STRING}, برنامه ریزی نشده است) @@ -3215,6 +3305,8 @@ STR_AI_SETTINGS_START_DELAY :تعداد رو STR_TEXTFILE_README_CAPTION :{WHITE}راهنمای {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} گزارش تغییرات {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} گواهی {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}شکستن متن +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}متن درون پنجره را میشکند بطوری که تمام متن بدون اسکرول کردن قابل مشاهده می باشد STR_TEXTFILE_VIEW_README :{BLACK}مشاهده راهنما STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}گزارش تغییر STR_TEXTFILE_VIEW_LICENCE :{BLACK}گواهی @@ -3303,6 +3395,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... جن STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... فقط روی خط برف می توان ساخت STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... فقط زیر خط برف می توان ساخت +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}این منطقه مکان خوبی برای ایجاد '{STRING}' نمی باشد +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}تنظیمات نقشه را برای بهتر کردن آن تغییر دهید + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}اینجا نمی شود ایستگاه راه آهن ساخت STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}اینجا ایستگاه اتوبوس نمی شود ساخت @@ -3339,30 +3434,43 @@ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}متشک STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}... این وسیله را نمی توان حرکت داد STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}مسیری به ایستگاه راه آهن پیدا نمیشود +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :نوع تعمیرگاه اشتباه # Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} بعد از تغییر بسیار طولانی شده است +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}هیچ قانون تعویض خودکار/بروزرسانی اعمال نشده است +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(محدودیت مالی) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}ترکیب ریل غیر ممکن است +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}اول باید نشانگرها را برداشت STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}قطعه مناسب راه آهن انتخاب نشده STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}اول باید ریل راه آهن حذف شود +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}جاده یکطرفه یا مسدود است STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}اینجا نمی شود علامت ساخت STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}اینجا نمی شود ریل ساخت STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}از اینجا نمی شود ریل را حذف کرد STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}از اینجا نمی شود چراغ ها ی راهنمایی را حذف کرد +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... اینجا نشانگری نیست +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}نمی شود نوع ریل اینجا را عوض کرد... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}اول باید جاده حذف شود STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}اینجا نمی توان جاده ساخت STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}جاده را نمی شود از اینجا حذف کرد +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... اینجا جاده ای نیست +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... اینجا تراموایی نیست # Waterway construction errors +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}نمی توان در اینجا کانالی ساخت... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}نم شود در اینجا رودخانه ای ساخت... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}باید بر روی آب ساخته شود STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}نمی شود بر روی آب ساخت STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... نمی توان بر روی دریای آزاد ساخت STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... نمی توان برروی کانال ساخت STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... نمی توان بر روی رودخانه ساخت +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}باید ابتدا کانال را منهدم کرد # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}قبلا اینجا درخت کشته شده است @@ -3372,22 +3480,36 @@ STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}اینج STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}اینجا نمی شود پل ساخت STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}اول باید پل خراب شود STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}محل شروع و پایاننمی توانند در یک نقطه باشند +STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}دو انتهای پل در یک سطح نیستند +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}ارتفاع پل برای قطار بیش از حد کم است STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}محل شروع پایان باید در یک خط باشند STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}هر دو سر پل باید در خشکی قرار بگیرد +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... پل بیش از حد طولانیست +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}انتهای پل ممکن است خارج از نقشه بیافتد # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}اینجا نمی شود تونل ساخت STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}محل برای شروع تونل نا مناسب است STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}اول باید تونل خراب شود +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}با یک تونل دیگر تقاطع می کند +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}انتهای تونل ممکن است خارج از نقشه بیافتد STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... تونل خیلی طولانی است # Object related errors +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... موجودیتهای بیش از حد +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}نمی شود یک موجودیت ایجاد کرد... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}چیزی در مسیر قرار گرفته STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}ساختمان اصلی شرکت در مسیر قرار گرفته است STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}نمی توان این ناحیه را خرید STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}قبلا توسط شرکت خریداری شده # Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}نمی شود یک گروه اضافه کرد... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}نمی توان این گروه را حذف کرد... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}نمی توان نام گروه را تغییر داد... +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}نمی توان تمام خودروها را از این گروه حذف کرد... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}نمی توان به این گروه وسیله ای افزود... +STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}نمی توان وسیله های دارای سفارش اشتراکی را به گروه افزود... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}قطار در راه است @@ -3395,17 +3517,24 @@ STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}ماشی STR_ERROR_SHIP_IN_THE_WAY :{WHITE}قطار در راه است STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}هواپیما در راه است +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}نمی توان کاربری قطار را تغییر داد... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}نمی توان کاربری وسیله نقلیه را تغییر داد... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}نمی توان این کشتی را تعمیر کرد. . . STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}نمی توان هواپیما را تعمیر کرد. . . STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}نمیتوان برای قطار نام انتخاب کرد... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}نمی توان نام وسیله نقلیه را عوض کرد... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}نمیتوان برای این کشتی نام انتخاب کرد STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}. . . نمیتوان نام هواپیما را انتخاب کرد STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}قطار را نمی شود حرکت داد / متوقف کرد... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}نمی توان وسیله نقلیه را مجبور به توقف/حرکت کرد... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}نمی شود کشتی را حرکت داد / متوقف کرد ... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}نمیتوان هواپاما را متوقف/آغاز به کار کرد +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}نمی توان قطار را به تعمریگاه فرستاد... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}نمی توان وسیله نقلیه را به تعمیرگاه فرستاد... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}نمی توان کشتی را به لنگرگاه فرستاد... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}نمیتوان هواپیما را به آشیانه فرستاد. . . STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}نمیشود قطار خرید ... @@ -3423,18 +3552,26 @@ STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}نمیش STR_ERROR_CAN_T_SELL_SHIP :{WHITE}کشتی فروخته نمی شود... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}نمیتوان هواپیما را فروخت +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}وسیله نقلیه در دسترس نیست +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}وسیله نقلیه در دسترس نیست +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}کشتی در دسترس نیست STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}هواپیما در دسترس نیست STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}ماشین‌های زیادی در بازی هستند STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}امکان تغییر فواصل زمانی سرویس وجود ندارد... +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... وسیله نقلیه منهدم شد +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}بطور کلی هیچ خودرویی در دسترس نخواهد بود +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}تنظیمات مربوط به NewGRF را تغییر دهید +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}هنوز خودرویی در دسترس نیست # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}در هنگام خطر نمی توان علامت عبور قطار را داد STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}جهت قطار را نمی شود تغییر داد... STR_ERROR_TRAIN_START_NO_POWER :قطار انرژی(برق)ندارد. +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}نمی توان وسیله نقلیه را مجبور به تغییر جهت کرد... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}هواپاما در حال پرواز است @@ -3444,12 +3581,21 @@ STR_ERROR_TOO_MANY_ORDERS :{WHITE}دستو STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}نمی شود دستور جدید قرار داد ... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}نمی شود دستور را حذف کرد STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}این دستور تغییر نمی کند... - +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}نمی شود این سفارش را جابجا کرد... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}نمی شود سفارش فعلی را نادیده گرفت... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}نمی توان به سفارش بعدی جهش کرد... +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... وسیله نمی تواند به تمام ایستگاه ها برود +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... وسیله نمیتواند به آن ایستگاه برود +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... وسیله ای که این سفارش را به اشتراک گذاشته نمی تواند به ایستگاه مورد نظر برود + +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}نمی شود لیست سفارشات را به اشتراک گذاشت... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}نمی شود لیست سفارشات را از اشتراک خارج کرد... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}نمی توان برنامه حرکت را کپی کرد... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}از هدف قبلی بسیار دور است... STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... هواپیما برد کافی ندارد # Timetable related errors +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}نمی شود مدیریت زمانی وسیله را تغییر داد... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}وسایل نقلیه فقط در ایستگاه می توانند منتظر بمانند STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}این وسیله نقلیه در این ایستگاه توقف نمی کند @@ -3594,7 +3740,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut دیزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (بخار) @@ -3621,8 +3767,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :واگن مسا STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :واگن نامه STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :واگن ذغال STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :تانکر نفت -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :واگن فرآورده های حیوانی -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :واگن محصولات +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :کامیون حمل دام +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :کامیون حمل کالا STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :واگن حمل حبوبات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :واگن چوب بری STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :واگن سنگ آهن @@ -3725,7 +3871,7 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :کامیون ح STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :تانکر نفت Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :تانکر نفت Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :تانکر نفت Perry -STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Talbott +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :واگن حمل دام تالبوت STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :کامیون محصولات Balogh @@ -3803,7 +3949,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :اتوبوس Ch STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :اتوبوس Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :کشتی حمل بار Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :کشتی حمل بار Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :کشتی حمل بار Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :کشتی حمل بار MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :کشتی حمل بار Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -3897,6 +4043,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (مخفی) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -3920,6 +4067,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -3931,8 +4079,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -3943,9 +4089,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt index 9212380716..6c06797e66 100644 --- a/src/lang/unfinished/urdu.txt +++ b/src/lang/unfinished/urdu.txt @@ -206,16 +206,16 @@ STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} من STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_METRIC :I{NBSP}{COMMA} +STR_UNITS_VOLUME_SHORT_SI :{NBSP}{COMMA}کیوبک میٹر -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} لیٹر -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_METRIC :{NBSP}{COMMA} لیٹر +STR_UNITS_VOLUME_LONG_SI :{NBSP}{COMMA}کیوبک میٹر -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_SI :{NBSP}{COMMA}کلو نیوٹن -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} فٹ -STR_UNITS_HEIGHT_SI :{COMMA} میٹر +STR_UNITS_HEIGHT_IMPERIAL :{NBSP}{COMMA} فٹ +STR_UNITS_HEIGHT_SI :{NBSP}{COMMA} میٹر # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK} چھان کے الفاظ درج کیجیئے @@ -239,6 +239,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK} فھر STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK} فھرستی پٹی - فھرست کو دایئں بایئں کرنے کے لیے STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}زمین کے ایک مربے پر عمارتیں وغیرہ گرائیں. Ctrl ترچھے انداز میں علاقے کا انتخاب کرتا ہے. عمارتیں یا انکی لاگت تخمینہ دیکھنے کے لئے Shift کا استعمال کیجیے. +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}پوشیدہ دکهایں +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}پوشیدہ دکهایں +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}پوشیدہ دکهایں +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}پوشیدہ دکهایں + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}اس بٹن سے پوشیدہ ٹرینیں نظر آیں گی +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}اس بٹن سے پوشیدہ گاڑیاں نظر آیں گی +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}اس بٹن سے پوشیدہ بہری جہاز نظر آیں گے +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}اس بٹن سے پوشیدہ طیارے نظر آیں گے + # Query window STR_BUTTON_DEFAULT :{BLACK}طے شدہ STR_BUTTON_CANCEL :{BLACK} ترک کیجیئے @@ -311,9 +322,9 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}بڑا STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}چھوٹا کر کے دکھاو STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ریل کی پٹری بچھاو STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}سڑکیں بناو -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}بندرگاہیں بناو -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}ہوای اڈے بناو -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK} منظر کشی ٹول بآر کھولیئے اور زمین اوپر نیچے، درخت لگایئے، وغیرھ +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}بندرگاہیں بنایں +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}ہوای اڈے بنایں +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}منظر کشی ٹول بآر کھولیئے اور زمین اوپر نیچےکریں، درخت لگایئے، وغیره STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK} آواز/موسیقی ونڈو دکھایئے STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK} آخری پیغام/ خبر دکھایئے، پیغام کے اختیارات کھولیئے STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}زمینی رقبہ کی معلومات، کانسول،AI debug ،اسکرین شاٹس، Open TTD کے بارے میں @@ -347,7 +358,6 @@ STR_SCENEDIT_FILE_MENU_QUIT :باہر نکل ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :کھیل کے اختیارات -STR_SETTINGS_MENU_CONFIG_SETTINGS :اعلی اختیارات STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / کھیل کے اختیارات STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF اختیارات STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency کے اختیارات @@ -453,7 +463,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :احاطہ کر STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :گندے بلاکوں کا رنگ تبدیل کرو ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :پھل STR_ORDINAL_NUMBER_2ND :دوسر STR_ORDINAL_NUMBER_3RD :تیسر @@ -469,22 +479,40 @@ STR_ORDINAL_NUMBER_12TH :بارھو STR_ORDINAL_NUMBER_13TH :تیرھو STR_ORDINAL_NUMBER_14TH :چودھو STR_ORDINAL_NUMBER_15TH :پندھرو -STR_ORDINAL_NUMBER_16TH :سولھو -STR_ORDINAL_NUMBER_17TH :سترھو -STR_ORDINAL_NUMBER_18TH :اٹھارو -STR_ORDINAL_NUMBER_19TH :انیسو -STR_ORDINAL_NUMBER_20TH :بیسو -STR_ORDINAL_NUMBER_21ST :اکیسو -STR_ORDINAL_NUMBER_22ND :بایئسو -STR_ORDINAL_NUMBER_23RD :تیئسو -STR_ORDINAL_NUMBER_24TH :چوبیسو -STR_ORDINAL_NUMBER_25TH :پچیسو -STR_ORDINAL_NUMBER_26TH :چھبیسو -STR_ORDINAL_NUMBER_27TH :ستایئسو -STR_ORDINAL_NUMBER_28TH :اٹھایئسو -STR_ORDINAL_NUMBER_29TH :انتیسو -STR_ORDINAL_NUMBER_30TH :تیسو -STR_ORDINAL_NUMBER_31ST :اکتیسو +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :پھل +STR_DAY_NUMBER_2ND :دوسر +STR_DAY_NUMBER_3RD :تیسر +STR_DAY_NUMBER_4TH :چوتھ +STR_DAY_NUMBER_5TH :پانچھو +STR_DAY_NUMBER_6TH :چھٹ +STR_DAY_NUMBER_7TH :ساتو +STR_DAY_NUMBER_8TH :آٹھو +STR_DAY_NUMBER_9TH :نو +STR_DAY_NUMBER_10TH :دسو +STR_DAY_NUMBER_11TH :گیارھو +STR_DAY_NUMBER_12TH :بارھو +STR_DAY_NUMBER_13TH :تیرھو +STR_DAY_NUMBER_14TH :چودھو +STR_DAY_NUMBER_15TH :پندھرو +STR_DAY_NUMBER_16TH :سولھو +STR_DAY_NUMBER_17TH :سترھو +STR_DAY_NUMBER_18TH :اٹھارو +STR_DAY_NUMBER_19TH :انیسو +STR_DAY_NUMBER_20TH :بیسو +STR_DAY_NUMBER_21ST :اکیسو +STR_DAY_NUMBER_22ND :بایئسو +STR_DAY_NUMBER_23RD :تیئسو +STR_DAY_NUMBER_24TH :چوبیسو +STR_DAY_NUMBER_25TH :پچیسو +STR_DAY_NUMBER_26TH :چھبیسو +STR_DAY_NUMBER_27TH :ستایئسو +STR_DAY_NUMBER_28TH :اٹھایئسو +STR_DAY_NUMBER_29TH :انتیسو +STR_DAY_NUMBER_30TH :تیسو +STR_DAY_NUMBER_31ST :اکتیسو ############ range for days ends ############ range for months starts @@ -783,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} اڈے میں انتظار کر رہا یے STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ہوائی یینگر میں انتظار کر رہا یے -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} کے پاس اوقات کے جدول کے مطابق احکامات بہت کم ہیں STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} کے پاس غلط (بے کار) حکم ہے STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} کے پاس ایسا ہی حکم پہلے سے ہے STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} کے پاس احکامات میں ایک ختم شدہ اسٹیشن ہے -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} پرانا ہو رہا ہے STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} بہت پرانا ہو رہا ہے @@ -868,10 +894,6 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :جنوبی اف STR_GAME_OPTIONS_CURRENCY_CUSTOM :اپنی مرضی کی ۔۔۔ ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}گاڑیاں STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}اختیار کریں کہ گاڑی سڑک کی کس طرف چلے STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :بائیں طرف چلے @@ -907,11 +929,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :کاٹالن STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}خود مختار بچاو STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}خودمختار کھیل بچانے کے درمیان وقفہ اختیار کریں +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بند STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ہر مہینے STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ہر سہ ماہی STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ہر شش ماہی STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ہر سال +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}استعمال کرنے کےلئے زبان اختیار کئیجیے @@ -923,8 +947,7 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}اسکر STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اسکرین کی resolution اختیار کریں STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}اسکرین کی تصویر کا فارمیٹ -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}اسکرین کی تصویر کے استعال کے لئے فارمیٹ اختیار کریں + STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں @@ -1024,8 +1047,7 @@ STR_CITY_APPROVAL_TOLERANT :برداشت ک STR_CITY_APPROVAL_HOSTILE :مخالفانہ -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}ایڈوانسڈ سیٹنگ +# Settings tree window STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(کوئی وضاحت موجود نہیں) @@ -1047,7 +1069,6 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :درمیان STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :دائیں -STR_CONFIG_SETTING_BUILDONSLOPES :ڈھلان اور ساحل پر تعمیر کی اجازت: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :تعمیرات کے نیچے منظر کشی کی اجازت: {STRING} STR_CONFIG_SETTING_CATCHMENT :کوریج کے علاقے کے حقیقت پسندانہ سائز کی اجازت: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :شہروں کی ملکیت زیادہ سڑکوں، پلوں اور سرنگوں کو توڑنے کی اجازت: {STRING} @@ -1060,10 +1081,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :گاڑی کو STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :ریل گاڑیوں اور بحری جہازوں کو 90° مڑنے سے روکیں: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :اسٹیشنوں کو جوڑنے کی اجازت: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :سامان لوڈ کرنے کا بہتر طریقہ استعمال کریں: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :گاڑیوں کو آہستہ آہستہ بھریں: {STRING} STR_CONFIG_SETTING_INFLATION :افراط زر: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :سامان صرف اُسی صورت میں کسی اسٹیشن تک پہنچایا جب وہ اُسے قبول کرتا ہو: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :پل کی زیادہ سے زیادہ لمبائی: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :پل بنانے کی زیادہ سے زیادہ لمبائی STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :سرنگ کی زیادہ سے زیادہ لمبائی: {STRING} @@ -1081,7 +1099,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :نئے احکا STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :شروع میں STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :درمیان میں STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :آخر میں -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :گاڑیوں کی قطار: {STRING} STR_CONFIG_SETTING_AUTOSCROLL :ونڈو کو پین کرو جب ماؤس کنارے پر ہو: {STRING} STR_CONFIG_SETTING_BRIBE :مقامی اتھارٹی کی رشوت کی اجازت دیں: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :خصوصی نقل و حمل کے حقوق کو خریدنے کی اجازت: {STRING} @@ -1095,8 +1112,6 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :کم STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :نارمل STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :شہر کی ملکیت سڑکوں پر ڈرائیو تھرو اڈے بنانے کی اجازت: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :مد مقابلوں کی ملکیت سڑکوں پر ڈرائیو تھرو اڈے بنانے کی اجازت: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :اسٹیشن کے ساتھ اسٹیشں بنانے کی اجازت: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :ایک سے زیادہ NewGRF انجن سیٹوں کو فعال کریں: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}جب گاڑیاں موجود ہوں تو یہ سیٹنگ بدلنا ممکن نہیں STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :انفراسٹرکچر کی بحالی: {STRING} @@ -1132,8 +1147,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :اونچائی STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :الٹی گھڑی وار STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :گھڑی وار STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :ایک سیدھے scenario والا نقشہ کتنا اونچا ہو گا: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :نقشے کے کناروں پر منظر کشی فعال کریں: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :اگر منع کر دیا، تو نقسے کی حدود ہمیشہ سمندر ہوں گی STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}جنوبی کنارے پر ایک یا ایک سے زیادہ ٹائلیں خالی نہیں ہیں STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}کسی کنارے پر ایک یا ایک سے زیادہ ٹائلیں پانی کی نہیں ہیں @@ -1160,14 +1173,14 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :آف +STR_CONFIG_SETTING_AUTOSAVE :Autosave: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :گیم بچانے کا وقفا چنیں + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :کھیل کو محفوظ کرنے کے لئے تاریخ کا {STRING} طریقہ استعمال کریں STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :نیا کھیل شروع کرنے پر خودکار توقف: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :توقف کے دوران اجازت دیں: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :کوئی فعل نہیں @@ -1279,7 +1292,6 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :نارمل STR_CONFIG_SETTING_TOWN_GROWTH_FAST :تیز STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :بہت تیز STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :شہر کا شروعاتی ضارب: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :سڑک کی تعمیر کے دوران غلط تعمیر شدہ حصوں کو ہٹا دے: {STRING} @@ -1288,23 +1300,14 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :سڑک کی ت -STR_CONFIG_SETTING_GUI :{ORANGE}انٹرفیس -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}تعمیرات +STR_CONFIG_SETTING_INTERFACE :{ORANGE}انٹرفیس +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}تعمیرات STR_CONFIG_SETTING_VEHICLES :{ORANGE}گاڑیاں -STR_CONFIG_SETTING_STATIONS :{ORANGE} اسٹیشن -STR_CONFIG_SETTING_ECONOMY :{ORANGE}معیشت +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}روٹنگ +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}شہر +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}صنعتیں STR_CONFIG_SETTING_AI :{ORANGE}مد مقابل -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}ڈسپلے کے اختیارات -STR_CONFIG_SETTING_INTERACTION :{ORANGE}چوراہا -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}اشعارے -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}سامان کو سنبھالنا STR_CONFIG_SETTING_AI_NPC :{ORANGE}کمپیوٹر کے کھلاڑی -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}خودکار تبدیلی -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}مرمت -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}روٹنگ -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}ریل گاڑیاں -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}شہر -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}صنعتیں STR_CONFIG_SETTING_PATHFINDER_OPF :اصلی STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1343,7 +1346,6 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}منظر STR_INTRO_MULTIPLAYER :{BLACK}زیادہ کھلاڑی STR_INTRO_GAME_OPTIONS :{BLACK}کھیل کے اختیارات -STR_INTRO_ADVANCED_SETTINGS :{BLACK}ایڈوانسڈ سیٹنگ STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF چنئے STR_INTRO_ONLINE_CONTENT :{BLACK}آن لائن مواد دیکھیں STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / کھیل کے اختیارات @@ -1362,7 +1364,6 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}منظر STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}منظر کشی کا 'toyland' طریقہ چُنئیے STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}کھیل کے اختیارات دکھائیں -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}ایڈوانسڈ سیتنگز دیکھیئے STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF سیٹنگز دیکھیئے STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}نئے اور ترمیم شدہ مواد کو ڈاون لوڈ کرنے کے لئے چیک کریں STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} AI اور کھیل کے اختیارات دکھائیں @@ -2147,11 +2148,17 @@ STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE} غیر STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK} منتخب NewGRF فائل اپنے configuration میں شامل کیجئے STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK} فائلوں کو دوبارھ اسکین کیجئے STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK} نئی دستیاب NewGRF فائلوں کی فھرست حاصل کیجئے +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}اپگریڈ +# NewGRF save preset window +STR_SAVE_PRESET_CANCEL :{BLACK}منسوخ +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}پریسیٹ تبدیل نہ کریں +STR_SAVE_PRESET_SAVE :{BLACK}بچایں + # NewGRF parameters window # NewGRF inspect window @@ -2192,6 +2199,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :<غلط سام STR_NEWGRF_INVALID_ENGINE :<غلط انجن ماڈل> STR_NEWGRF_INVALID_INDUSTRYTYPE :<غلط صنعت> +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). + # NewGRF scanning window # Sign list window @@ -2229,7 +2238,8 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :معلومات STR_GOAL_QUESTION_CAPTION_WARNING :انتباہ STR_GOAL_QUESTION_CAPTION_ERROR :خرابی -### Start of Goal Question button list +############ Start of Goal Question button list +############ End of Goal Question button list # Subsidies window @@ -2244,7 +2254,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}کسی # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}منتظر: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} سے براستہ ہے {STATION}) @@ -2272,9 +2281,9 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN # Company view -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ریل کے ٹکڑے -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} سڑک کے ٹکڑے -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} پانی کی ٹائلیں +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA}پٹڑی { "کا" "کے" P} { "ٹکڑا" "ٹکڑے" P} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} سڑک { "کا" "کے" P} { "ٹکڑا" "ٹکڑے" P} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} پانی { "کا" "کے" P} { "ٹکڑا" "ٹکڑے" P} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} اسٹیشن کی ٹائلیں STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{COMMA}{WHITE} ہوائی اڈے STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}کوئی نہیں @@ -2330,6 +2339,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}فہرس + # Build vehicle window @@ -2340,6 +2350,24 @@ STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}پہنچ +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}چهپایں +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}چهپایں +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}چهپایں +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}چهپایں + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}دکهایں +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}دکهایں +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}دکهایں +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}دکهایں + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}ٹرین کا قسم دکهایں یه نا +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}گاڑی کا قسم دکهایں یه نا +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}سمندری جہاز کا قسم دکهایں یه نا +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}ہوائی جہاز کا قسم دکهایں یه نا + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}ٹرین کےقسم کا نام تبدیل کریں +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}گاڑی کےقسم کا نام تبدیل کریں +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}بہری جہاز کےقسم کا نام تبدیل کریں # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -2372,6 +2400,9 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}قیمت # Autoreplace window +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}استعمالکردہ گاڑیاں +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}میسر گاڑیاں + @@ -2564,6 +2595,7 @@ STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} # Industry related errors STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{G=m}{WHITE}... صرف ان شہروں میں بن سکتا ہے جن کی آبادی ۱۲۰۰ سے زیادہ ہے + # Station construction related errors @@ -2700,20 +2732,60 @@ STR_SV_STNAME_WAYPOINT :{STRING} # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh کوئلے کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl کوئلے کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW کوئلے کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow ڈاک کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe تیل کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster تیل کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry تیل کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott مویشی وین +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl مویشی وین +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster مویشی وین +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh عام اشیاء کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead عام اشیاء کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss عام اشیاء کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford اناج کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas اناج کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss اناج کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe لکڑی کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster لکڑی کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland لکڑی کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS لوہے کی دھات کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl لوہے کی دھات کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy لوہے کی دھات کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh فولاد کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl فولاد کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling فولاد کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh بکتربند ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl بکتربند ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster بکتربند ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl کاغذ کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh کاغذ کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS کاغذ کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS تانبے کی دهات کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl تانبے کی دهات کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss تانبے کی دهات کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl پانی کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh پانی کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS پانی کا ٹینکر +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh پھلوں کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl پھلوں کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling پھلوں کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh کہریا(ربر) کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl کہریا(ربر) کا ٹرک +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT کہریا(ربر) کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover چینی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught چینی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow چینی کا ٹرک @@ -2753,7 +2825,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug م STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake مسافر کشتی STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate مال بردار کشتی STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell مال بردار کشتی -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover مال بردار کشتی +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover مال بردار کشتی STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut مال بردار کشتی STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman گنتی @@ -2845,6 +2917,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE}(پوشیدہ) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -2879,8 +2952,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -2891,9 +2962,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} @@ -2916,4 +2985,4 @@ STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} -STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) +STR_TOOLBAR_RAILTYPE_VELOCITY :({STRING} ({VELOCITY} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 167d1290f9..534f9accd5 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -28,9 +28,9 @@ STR_JUST_NOTHING :Rỗng # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Hành khách -STR_CARGO_PLURAL_COAL :Than +STR_CARGO_PLURAL_COAL :Than đá STR_CARGO_PLURAL_MAIL :Bưu kiện -STR_CARGO_PLURAL_OIL :Dầu +STR_CARGO_PLURAL_OIL :Dầu thô STR_CARGO_PLURAL_LIVESTOCK :Gia súc STR_CARGO_PLURAL_GOODS :Hàng tiêu dùng STR_CARGO_PLURAL_GRAIN :Ngũ cốc @@ -62,9 +62,9 @@ STR_CARGO_PLURAL_FIZZY_DRINKS :Đồ uống c # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Hành khách -STR_CARGO_SINGULAR_COAL :Than +STR_CARGO_SINGULAR_COAL :Than đá STR_CARGO_SINGULAR_MAIL :Bưu kiện -STR_CARGO_SINGULAR_OIL :Dầu +STR_CARGO_SINGULAR_OIL :Dầu thô STR_CARGO_SINGULAR_LIVESTOCK :Gia súc STR_CARGO_SINGULAR_GOODS :Hàng tiêu dùng STR_CARGO_SINGULAR_GRAIN :Ngũ cốc @@ -95,35 +95,35 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Đồ uống c # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} hành khách -STR_QUANTITY_COAL :{WEIGHT_LONG} than -STR_QUANTITY_MAIL :{COMMA} túi bưu kiện -STR_QUANTITY_OIL :{VOLUME_LONG} dầu -STR_QUANTITY_LIVESTOCK :{COMMA} đầu gia súc -STR_QUANTITY_GOODS :{COMMA} thùng hàng tiêu dùng +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}hành khách +STR_QUANTITY_COAL :{WEIGHT_LONG} than đá +STR_QUANTITY_MAIL :{COMMA}{NBSP}túi bưu kiện +STR_QUANTITY_OIL :{VOLUME_LONG} dầu thô +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}đầu gia súc +STR_QUANTITY_GOODS :{COMMA}{NBSP}thùng hàng tiêu dùng STR_QUANTITY_GRAIN :{WEIGHT_LONG} ngũ cốc STR_QUANTITY_WOOD :{WEIGHT_LONG} gỗ STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} quặng sắt STR_QUANTITY_STEEL :{WEIGHT_LONG} thép -STR_QUANTITY_VALUABLES :{COMMA} túi đồ quý giá +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}túi đồ quý giá STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} quặng đồng STR_QUANTITY_MAIZE :{WEIGHT_LONG} ngô STR_QUANTITY_FRUIT :{WEIGHT_LONG} hoa quả -STR_QUANTITY_DIAMONDS :{COMMA} túi kim cương +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}túi kim cương STR_QUANTITY_FOOD :{WEIGHT_LONG} thực phẩm STR_QUANTITY_PAPER :{WEIGHT_LONG} giấy -STR_QUANTITY_GOLD :{COMMA} túi vàng +STR_QUANTITY_GOLD :{COMMA}{NBSP}túi vàng STR_QUANTITY_WATER :{VOLUME_LONG} nước STR_QUANTITY_WHEAT :{WEIGHT_LONG} bột mì STR_QUANTITY_RUBBER :{VOLUME_LONG} cao su STR_QUANTITY_SUGAR :{WEIGHT_LONG} đường -STR_QUANTITY_TOYS :{COMMA} đồ chơi -STR_QUANTITY_SWEETS :{COMMA} túi kẹo +STR_QUANTITY_TOYS :{COMMA}{NBSP}đồ chơi +STR_QUANTITY_SWEETS :{COMMA}{NBSP}túi kẹo STR_QUANTITY_COLA :{VOLUME_LONG} nước cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} kẹo bông STR_QUANTITY_BUBBLES :{COMMA} bong bóng STR_QUANTITY_TOFFEE :{WEIGHT_LONG} kẹo bơ cứng -STR_QUANTITY_BATTERIES :{COMMA} cái pin +STR_QUANTITY_BATTERIES :{COMMA} viên pin STR_QUANTITY_PLASTIC :{VOLUME_LONG} chất dẻo STR_QUANTITY_FIZZY_DRINKS :{COMMA} chai đồ uống có ga STR_QUANTITY_N_A :N/A @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}K0 STR_ABBREV_ALL :{TINY_FONT}Tất # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} hành khách -STR_BAGS :{COMMA} túi -STR_TONS :{COMMA} tấn -STR_LITERS :{COMMA} lít -STR_ITEMS :{COMMA} cái -STR_CRATES :{COMMA} thùng +STR_PASSENGERS :{COMMA}{NBSP}hành khách +STR_BAGS :{COMMA}{NBSP}túi +STR_TONS :{COMMA}{NBSP}tấn +STR_LITERS :{COMMA}{NBSP}lít +STR_ITEMS :{COMMA}{NBSP}cái +STR_CRATES :{COMMA}{NBSP}thùng # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Xanh da trời đậm @@ -191,37 +191,37 @@ STR_COLOUR_GREY :Xám STR_COLOUR_WHITE :Trắng # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tấn -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}ton +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tấn +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lít -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}lít +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf -STR_UNITS_FORCE_METRIC :{COMMA} kgf -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_METRIC :{COMMA} m -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Lọc chuỗi: @@ -248,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Thanh cu STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Thanh cuộn sang trái/phải STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Phá hủy các tòa nhà v.v... trên 1 lô đất. Ctrl để chọn vùng theo đường chéo. Shift để chọn hiển thị chi phí xây dựng/phá hủy +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Hiện ẩn +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Hiện ẩn +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Hiện ẩn +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Hiện ẩn + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Khi bật nút này, những tàu hỏa bị ẩn cũng được hiển thị +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Khi bật nút này, những xe bị ẩn cũng được hiển thị +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Khi bật nút này, những tàu thủy bị ẩn cũng được hiển thị +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Khi bật nút này, những máy bay bị ẩn cũng được hiển thị + # Query window STR_BUTTON_DEFAULT :{BLACK}Mặc định STR_BUTTON_CANCEL :{BLACK}Thôi @@ -293,10 +304,10 @@ STR_SORT_BY_ENGINE_ID :ID Máy (sắp STR_SORT_BY_COST :Chi phí STR_SORT_BY_POWER :Lực STR_SORT_BY_TRACTIVE_EFFORT :Lực kéo -STR_SORT_BY_INTRO_DATE :Ngày giới thiệu -STR_SORT_BY_RUNNING_COST :Chi phí chạy -STR_SORT_BY_POWER_VS_RUNNING_COST :Chi phí Năng lượng/Chạy -STR_SORT_BY_CARGO_CAPACITY :Khả năng chở hàng +STR_SORT_BY_INTRO_DATE :Ngày ra mắt +STR_SORT_BY_RUNNING_COST :Phí hoạt động +STR_SORT_BY_POWER_VS_RUNNING_COST :Năng lượng/Phí hoạt động +STR_SORT_BY_CARGO_CAPACITY :Tải trọng STR_SORT_BY_RANGE :Tầm xa STR_SORT_BY_POPULATION :Dân số STR_SORT_BY_RATING :Đánh giá @@ -304,7 +315,7 @@ STR_SORT_BY_RATING :Đánh giá # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Tạm dừng trò chơi STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Tua nhanh trò chơi -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Tuỳ chọn +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Tùy chọn STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lưu, bỏ ván chơi, thoát chương trình STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Hiển thị bản đồ STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Hiển thị danh sách đô thị @@ -317,10 +328,10 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Hiển t STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Hiển thị biểu đồ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Hiện bảng tầm cỡ các công ty STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Bỏ vốn cho những ngành mới hoặc hiện tất cả các ngành -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Hiện danh sách tàu hoả của công ty.Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Hiện danh sách xe cộ của công ty.Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hiện danh sách tàu thủy của công ty.Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Hiện danh sách máy bay của công ty.Ctrl+Click vào chốt néo để mở dạnh sách nhóm/phương tiện +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Hiện danh sách tàu hỏa của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Hiện danh sách xe cộ của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hiện danh sách tàu thủy của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Hiện danh sách máy bay của công ty. Ctrl+Click vào chốt néo để mở dạnh sách nhóm/phương tiện STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Thu nhỏ tầm nhìn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Nới rộng tầm nhìn STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Lắp đường ray @@ -361,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Thoát ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Cấu hình trò chơi -STR_SETTINGS_MENU_CONFIG_SETTINGS :Thiết lập nâng cao +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Thiết lập STR_SETTINGS_MENU_SCRIPT_SETTINGS :Thiết lập AI / Game script STR_SETTINGS_MENU_NEWGRF_SETTINGS :Thông số NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Thiết lập hiệu ứng trong suốt @@ -464,13 +475,13 @@ STR_ABOUT_MENU_SCREENSHOT :Ảnh chụp m STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Phóng to đầy đủ ảnh chụp màn hình STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Phóng to mặc định ảnh chụp màn hình STR_ABOUT_MENU_GIANT_SCREENSHOT :Ảnh màn hình toàn bản đồ -STR_ABOUT_MENU_ABOUT_OPENTTD :Về 'OpenTTD' +STR_ABOUT_MENU_ABOUT_OPENTTD :Giới thiệu 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Trình điều chỉnh sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Bật/tắt hiển thị khối nhà STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Bật/tắt màu sắc trên các ô 'bẩn' ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 @@ -486,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 -STR_ORDINAL_NUMBER_16TH :16 -STR_ORDINAL_NUMBER_17TH :17 -STR_ORDINAL_NUMBER_18TH :18 -STR_ORDINAL_NUMBER_19TH :19 -STR_ORDINAL_NUMBER_20TH :20 -STR_ORDINAL_NUMBER_21ST :21 -STR_ORDINAL_NUMBER_22ND :22 -STR_ORDINAL_NUMBER_23RD :23 -STR_ORDINAL_NUMBER_24TH :24 -STR_ORDINAL_NUMBER_25TH :25 -STR_ORDINAL_NUMBER_26TH :26 -STR_ORDINAL_NUMBER_27TH :27 -STR_ORDINAL_NUMBER_28TH :28 -STR_ORDINAL_NUMBER_29TH :29 -STR_ORDINAL_NUMBER_30TH :30 -STR_ORDINAL_NUMBER_31ST :31 +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1 +STR_DAY_NUMBER_2ND :2 +STR_DAY_NUMBER_3RD :3 +STR_DAY_NUMBER_4TH :4 +STR_DAY_NUMBER_5TH :5 +STR_DAY_NUMBER_6TH :6 +STR_DAY_NUMBER_7TH :7 +STR_DAY_NUMBER_8TH :8 +STR_DAY_NUMBER_9TH :9 +STR_DAY_NUMBER_10TH :10 +STR_DAY_NUMBER_11TH :11 +STR_DAY_NUMBER_12TH :12 +STR_DAY_NUMBER_13TH :13 +STR_DAY_NUMBER_14TH :14 +STR_DAY_NUMBER_15TH :15 +STR_DAY_NUMBER_16TH :16 +STR_DAY_NUMBER_17TH :17 +STR_DAY_NUMBER_18TH :18 +STR_DAY_NUMBER_19TH :19 +STR_DAY_NUMBER_20TH :20 +STR_DAY_NUMBER_21ST :21 +STR_DAY_NUMBER_22ND :22 +STR_DAY_NUMBER_23RD :23 +STR_DAY_NUMBER_24TH :24 +STR_DAY_NUMBER_25TH :25 +STR_DAY_NUMBER_26TH :26 +STR_DAY_NUMBER_27TH :27 +STR_DAY_NUMBER_28TH :28 +STR_DAY_NUMBER_29TH :29 +STR_DAY_NUMBER_30TH :30 +STR_DAY_NUMBER_31ST :31 ############ range for days ends ############ range for months starts @@ -758,7 +787,7 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Tàu thủy đầu tiên đến {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Máy bay đầu tiên đến {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tàu hoả bị đụng nhau!{}{COMMA} người chết sau tai nạn đáng tiếc này +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tàu hỏa bị đụng nhau!{}{COMMA} người chết sau tai nạn đáng tiếc này STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Ôtô bị tàu hoả đụng!{}Người lái xe đã tử nạn sau tai nạn này. STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Ôtô bị tàu hoả đụng!{}{COMMA} người đã tử nạn sau tai nạn đáng tiếc này STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Tai Nạn Máy Bay!{}{COMMA} người chết tại {STATION} @@ -810,13 +839,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} đang chờ tại xưởng STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} đang chờ tại sân bay -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} có quá ít lệnh trong lộ trình STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} chưa có lệnh STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} có các lệnh trùng lặp STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} có trạm bất hợp lệ trong lệnh -# end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} đang cũ đi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} đang xuống cấp @@ -899,10 +926,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (G STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Xe cộ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Chọn phía đường lái xe STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lái bên trái @@ -938,11 +961,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Lưu tự động STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn khoảng thời gian tự động lưu +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Tắt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hàng tháng STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hàng quý STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hàng nửa năm STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hàng năm +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Ngôn ngữ STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Lựa chọn sử dụng ngôn ngữ giao diện @@ -954,8 +979,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Độ ph STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Chọn độ phân giải màn hình để sử dụng STR_GAME_OPTIONS_RESOLUTION_OTHER :khác -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Định dạng ảnh màn hình -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Chọn định dạng ảnh màn hình để sử dụng +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Kích thước giao diện +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Chọn kích thước của các đối tượng trên giao diện + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Bình thường +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Gấp 2 lần +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Gấp 4 lần STR_GAME_OPTIONS_BASE_GRF :{BLACK}Gói đồ họa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Chọn gói đồ họa để sử dụng @@ -971,6 +1000,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Chọn g STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} file bị hỏng STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Thông tin thêm về gói nhạc chuẩn +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Không thể lấy danh sách độ phân giải được hỗ trợ STR_ERROR_FULLSCREEN_FAILED :{WHITE}Thất bại khi bật chế độ fullscreen # Custom currency window @@ -1049,6 +1079,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Rất Phẳng STR_TERRAIN_TYPE_FLAT :Phẳng STR_TERRAIN_TYPE_HILLY :Núi STR_TERRAIN_TYPE_MOUNTAINOUS :Núi Cao +STR_TERRAIN_TYPE_ALPINIST :Đồi núi STR_CITY_APPROVAL_PERMISSIVE :Dễ dãi STR_CITY_APPROVAL_TOLERANT :Vừa phải @@ -1056,8 +1087,8 @@ STR_CITY_APPROVAL_HOSTILE :Khó khăn STR_WARNING_NO_SUITABLE_AI :{WHITE}Không có AI nào phù hợp...{}Bạn có thể tải các AI từ mục 'Online Content' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Thiết Lập Nâng Cao +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Thiết lập STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Lọc chuỗi: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Mở xuống tất cả STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Đóng lại tất cả @@ -1070,8 +1101,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Thiết lập t STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Thiết lập công ty (chứa trong save; chỉ tác động tới các ván chơi mới) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Thiết lập công ty (chứa trong save; chỉ tác động tới công ty hiện tại) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Hiển thị: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Chỉ hiển thị danh sách các thiết lập đã bị thay đổi +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Phân loại: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Kiểu: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Giới hạn danh sách bên dưới bằng những bộ lọc định sẵn STR_CONFIG_SETTING_RESTRICT_BASIC :Tùy chọn cơ bản STR_CONFIG_SETTING_RESTRICT_ADVANCED :Tùy chọn nâng cao STR_CONFIG_SETTING_RESTRICT_ALL :Thiết lập chuyên gia/tất cả thiết lập @@ -1079,12 +1111,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Thiết lập k STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :THiết lập giá trị mới khác với giá trị cho ván chơi mới STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Hạn chế danh mục sau đối với mỗi kiểu thiết lập -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tất cả thiết lập +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tất cả loại thiết lập STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Thiết lập máy trạm (không lưu trong save; tác động tới mọi ván chơi) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Thiết lập trò chơi (chứa trong save; chỉ có tác dụng với ván chơi mới) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Thiết lập trò chơi (chứa trong save; chỉ có tác dụng với ván chơi hiện tại) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Thiết lập công ty (chứa trong save; chỉ tác động với ván chơi mới) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Thiết lập công ty (lưu trong save; chỉ tác động tới công ty hiện tại) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Hiện tất cả kết quả tìm kiếm theo {}{SILVER}Phân loại {BLACK}cho {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Hiện tất cả kết quả tìm kiếm theo {}{SILVER}Kiểu {BLACK}cho {WHITE}tất cả kiểu thiết lập +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Hiện tất cả kết quả tìm kiếm theo {}{SILVER}Phân loại {BLACK}cho {WHITE}{STRING} {BLACK}và {SILVER}Kiểu {BLACK}cho {WHITE}tất cả kiểu thiết lập +STR_CONFIG_SETTINGS_NONE :{WHITE}- Không - STR_CONFIG_SETTING_OFF :Tắt STR_CONFIG_SETTING_ON :Bật @@ -1125,8 +1161,9 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Thay đổi tù STR_CONFIG_SETTING_CITY_APPROVAL :Thái độ của hội đồng thành phố với việc xây dựng lại địa phương: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Lựa chọn mức độ ảnh hưởng môi trường và tiếng ồn gây ra bởi các công ty sẽ ảnh hưởng uy tín của công ty đối với chính quyền địa phương và các hoạt động xây dựng của họ trong địa bàn -STR_CONFIG_SETTING_BUILDONSLOPES :Cho phép xây dựng trên dốc và bờ biển: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Nếu bật, đường đi và trạm có thể được xây trên hầu hết các loại dốc. Nếu tắt, chúng chỉ có thể được xây trên đoạn dốc có cùng chiều với đường đi +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Chiều cao tối đa của bản đồ: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Thay đổi chiều cao tối đa cho phép cho các núi đồi trên bản đồ +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Bạn không thể đặt giá trị chiều cao tối đa này cho bản đổ. Phải có ít nhất 1 ngọn núi cao hơn bản đồ STR_CONFIG_SETTING_AUTOSLOPE :Cho phép thay đổi nền đất dưới công trình, đường.. (tự làm dốc): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Cho phép thay đổi nền đất dưới công trình và đường mà không cần phá hủy chúng STR_CONFIG_SETTING_CATCHMENT :Mô phỏng thực tế diện tích khu vực đón hàng: {STRING} @@ -1151,16 +1188,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Ngăn tàu hỏ STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :quay 90 độ chỉ xảy ra khi một ray ngang nối với một ray dọc ở 2 ô liền kề, khiến cho tàu hỏa cua 90 khi đến ô rẽ thay vì 45 độ như bình thường. Việc này cũng áp dụng với tàu thủy. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Cho phép gộp ga, bến, cảng không sát nhau: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Cho phép thêm đoạn vào ga mà không phải sửa cái hiện có. Phải bấm Ctrl+Click để thêm đoạn vào ga -STR_CONFIG_SETTING_IMPROVEDLOAD :Sử dụng thuật toán bốc/dỡ hàng cải tiến: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Nếu mở, các toa xe ở ga được bốc xếp tuần tự. Toa xe tiếp theo chỉ được bốc hàng khi tòa đầu tiên đã đầy hàng hóa -STR_CONFIG_SETTING_GRADUAL_LOADING :Bốc/dỡ hàng lên phương tiện dần dần: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Bốc xết tuần tự lên toa xe với thời gian được chỉ ra, thay vì bốc xếp tất cả mọi thứ một lúc thì thời gian bốc xếp định sẵn theo khối lượng hàng hóa mang theo STR_CONFIG_SETTING_INFLATION :Lạm phát: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Cho phép lạm phát đối với kinh tế, khi mà chi phí tăng nhanh hơn một chút so với khoản thu -STR_CONFIG_SETTING_SELECTGOODS :Dỡ hàng hóa tại ga, bến, cảng chỉ khi nơi đó có nhu cầu: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Chỉ có hàng hóa chỉ định cho ga/bến mới được bốc xếp. Tùy chọn này ngăn việc đặt tỉ lệ xấu cho hàng hóa không phục vụ tại ga/bến đó STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Độ dài tối đa của cầu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Độ dài tối đa khi xây cầu +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Chiều cao tối đa của cầu: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Chiều cao tối đa khi xây cầu STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Độ dài tối đa của hầm: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Độ dài tối đa khi xây hầm STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Tuỳ chỉnh phương thức xây dựng nhà máy: {STRING} @@ -1171,7 +1204,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :hứa hẹn STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Vùng đất phẳng xung quanh nhà máy: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Khoảng không gian bằng phẳng quanh nhà máy. Điều này đảm bảo rằng không gian trống quanh nhà máy để xây đường ray và công trình STR_CONFIG_SETTING_MULTIPINDTOWN :Cho phép nhiều nhà máy tương tự nhau trong mỗi đô thị: {STRING} -STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Bình thường mỗi đo thị không có quá một nhà máy mỗi loại. Tùy chọn này cho phép nhiều nhà máy cùng một loại trong phạm vi mỗi đô thị +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Bình thường mỗi đô thị không có quá một nhà máy mỗi loại. Tùy chọn này cho phép nhiều nhà máy cùng một loại trong phạm vi mỗi đô thị STR_CONFIG_SETTING_SIGNALSIDE :Hiện đèn báo: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Chọn bên của đường ray để đặt đèn tín hiệu STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Phía bên trái @@ -1186,8 +1219,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Vị trí mà t STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :đầu gần STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :giữa STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :đầu xa -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Xe ôtô xếp hàng (với hiệu ứng quantum): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Tùy chọn sẽ khiến ôtô đứng đợi ở trước điểm dừng cho tới khi có chỗ vào STR_CONFIG_SETTING_AUTOSCROLL :Cuộn cửa sổ chính khi con trỏ gần mép: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Khi bật, vùng nhìn sẽ cuộn khi con trỏ đến cạnh cửa sổ STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Tắt @@ -1210,7 +1241,7 @@ STR_CONFIG_SETTING_PLANE_SPEED :Tỉ lệ tốc STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Thiết lập tốc độ tương đối của máy bay với phương tiện khác, nhằm giảm thu nhập của việc vận chuyển đường hàng không STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Số vụ tai nạn máy bay: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Tỉ lệ xác suất xảy ra tai nạn máy bay +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Tỉ lệ / xác suất xảy ra tai nạn máy bay STR_CONFIG_SETTING_PLANE_CRASHES_NONE :không STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :giảm bớt STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :bình thường @@ -1218,10 +1249,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Cho phép xây STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe bus trên đường sở hữu bởi địa phương STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Cho phép xây điểm dừng xe buýt trên đường của đối thủ: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe bus trên đường sở hữu bởi công ty khác -STR_CONFIG_SETTING_ADJACENT_STATIONS :Cho phép xây ga, bến, cảng sát nhau: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Cho phép các ga bến khác nhau có thể chạm vào nhau -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Bật chạy nhiều gói NewGRF cho phương tiện: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Tùy chọn tương thích với NewGRFs cũ. Không nên tắt tùy chọn này trừ khi bạn hiểu vấn đề là gì! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Không thể đổi thiết đặt này khi vẫn còn các phương tiện giao thông. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Phí bảo trì cơ sở hạ tầng: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Khi mở, thì hạ tầng công ty sẽ sinh ra chi phí bảo trì. Chi phí sẽ tăng theo mạng lưới giao thông bạn xây dựng, và sẽ tiêu tốn của công ty lớn nhiều hơn công ty nhỏ @@ -1240,7 +1267,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Cảnh báo n STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Nếu bật, sẽ có một thông báo nếu một phương tiện nào đó không có lãi trong một năm STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Phương tiện không bao giờ thành đồ cổ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Nếu bật, tất cả các model phương tiện sẽ không bị lỗi thời -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Tự thay mới phương tiện nếu nó hết tuổi: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Tự thay mới phương tiện nếu hết hạn sử dụng: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Nếu bật, phương tiện gần hết hạn sẽ được tự động thay mới và điều kiện thay mới được thỏa mãn STR_CONFIG_SETTING_AUTORENEW_MONTHS :Tự động thay mới nếu phương tiện đạt {STRING} tuổi STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Tuổi tương đối để coi như phương tiện hết hạn sử dụng và được thay mới @@ -1252,8 +1279,8 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Khoảng thời STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Khoảng thời gian hiện thị thông báo trong cửa sổ màu đỏ. Lưu ý rằng cửa sổ thông báo sẽ tự đóng khi sau khoảng thời gian này, hoặc là được đóng bằng tay STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} giây STR_CONFIG_SETTING_HOVER_DELAY :Hiện thông báo: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Khoảng thời gian trễ mà hướng dẫn hiện lên khi di chuột tới đối tượng, có thể hiện hướng dẫn bằng bấm nút phải chuột -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Thời gian để con trỏ lên đối tượng {COMMA} giây +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Khoảng thời gian trễ mà hướng dẫn hiện lên khi di chuột tới đối tượng, có thể hiện hướng dẫn bằng bấm nút phải chuột khi giá trị này bằng 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Thời gian để con trỏ lên đối tượng {COMMA} mili giây STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Bấm phải chuột STR_CONFIG_SETTING_POPULATION_IN_LABEL :Hiện dân số đô thị trong nhãn tên của đô thị: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Hiển thị dân số của đô thị trên nhãn của nó trên bản đồ @@ -1266,21 +1293,24 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Khoảng cách tối đa từ lề bản đồ tới nhà máy lọc dầu: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Nhà máy hóa dầu chỉ có thể xây gần rìa bản đồ, tương ứng là ven biển với những bản đồ dạng đảo STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Độ cao tuyết phủ: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Độ gồ ghề của địa chất (cho TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Độ gồ ghề của địa chất: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Rất Phẳng STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Phẳng STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Gồ Ghề STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Rất Gồ Ghề +STR_CONFIG_SETTING_RIVER_AMOUNT :Số lượng sông ngòi: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Chọn số lượng sông ngòi được khởi tạo STR_CONFIG_SETTING_TREE_PLACER :Thuật toán đặt cây: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Chọn cách phân bổ cây cối trên bản đồ: chế độ 'Nguyên bản' trồng một cách rải rác đồng đều, chế độ 'Cải tiến' trồng theo nhóm STR_CONFIG_SETTING_TREE_PLACER_NONE :Không STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Nguyên bản STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Tối Ưu Hóa +STR_CONFIG_SETTING_ROAD_SIDE :Xe cộ: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Chọn phía xe chạy STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Xoay bản đồ địa hình: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Ngược chiều đồng hồ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Xuôi chiều đồng hồ STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Độ cao của một màn chơi đồng bằng là: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Có thể tôn hạ nền đất ở mép bản đồ: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Nếu tắt, rìa bản đồ sẽ luôn là biển STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Một hoặc nhiều ô đất ở mép bản đồ phía bắc không được trống STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Một hoặc nhiều ô đất ở mép bản không phải là biển @@ -1288,7 +1318,7 @@ STR_CONFIG_SETTING_STATION_SPREAD :Độ trải r STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Khoảng diện tích tối đa mà mỗi ga/bến đơn có thể trả rộng. Giá trị cao quá sẽ làm chậm trò chơi STR_CONFIG_SETTING_SERVICEATHELIPAD :Bảo trì trực thăng ở sân bay trực thăng một cách tự động: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Bảo trì máy bay trực thăng mỗi khi hạ cánh, thậm chí là không có nhà sửc máy bay ở sân bay đó -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Neo c.cụ tôn tạo nền đất vào c.cụ tàu hoả/xe/tàu thủy/máy bay: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Neo công cụ tôn tạo nền đất vào công cụ tàu hoả/xe/tàu thủy/máy bay: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Khi mở thanh công cụ xây dựng một loại đường nào đó, thì mở luôn thanh công cụ nâng hạ đất nền STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Màu đất hiển thị tại bản đồ nhỏ: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Màu sắc của các dạng đất trên bản đồ nhỏ @@ -1296,7 +1326,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Lục STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Lục tối STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Tím STR_CONFIG_SETTING_REVERSE_SCROLLING :Đảo ngược hướng cuộn: {STRING} -STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Phản ứng khi cuộc bản đồ bằng nút chuột phải. Nếu tắt, thì chuột di chuyển theo vùng nhìn. Nếu bật thì chuột di chuyển theo bản đồ +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Phản ứng khi cuộn bản đồ bằng nút chuột phải. Nếu tắt, thì chuột di chuyển theo vùng nhìn. Nếu bật thì chuột di chuyển theo bản đồ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Cuộn uyển chuyển cửa sổ: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Điều khiển cách màn hình chính cuộn tới vị trí cụ thể khi nháy chuột vào bản đồ nhỏ hoặc khi gõ lệnh cuộn tới đối tượng trên bản đồ. Nếu bật, thì sẽ cuộn trượt, nếu tắt thì nhảy thẳng tới vị trí đó. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Hiện bảng chú giải đo lường khi dùng các công cụ xây dựng: {STRING} @@ -1307,7 +1337,7 @@ STR_CONFIG_SETTING_LIVERIES_NONE :Không STR_CONFIG_SETTING_LIVERIES_OWN :Công ty đang giữ STR_CONFIG_SETTING_LIVERIES_ALL :Tất cả công ty STR_CONFIG_SETTING_PREFER_TEAMCHAT :Bắt đầu tán gẫu nội nhóm với phím : {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Chuyển đổi chế đố chát nội bộ trong công ty (nhiều người chơi) thay vì công cộng bằng nút +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Chuyển đổi chế độ 'tám' nội bộ trong công ty (nhiều người chơi) thay vì công cộng bằng nút STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Chức năng nút cuộn trên chuột: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Cho phép cuộc bằng chuột có bánh xe cuộn hai chiều STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Phóng to bản đồ @@ -1331,17 +1361,15 @@ 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_AUTOSAVE :Tự động save: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Chọn chu kỳ giữa mỗi lần tự động save + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Sử dụng định dạng ngày {STRING} cho tên file lưu ván chơi. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Định dạng ngày trong tên file lưu STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :đầy đủ (31 T12 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :ngắn (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Bảng màu mặc định cho những NewGRF chưa đặt sẵn bảng màu: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Bảng palette mặc định cho NewGRF với NewGRF không chỉ rõ palette -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Bảng màu DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Bảng màu Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Tự động tạm dừng khi bắt đầu game mới: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Khi bật, ván chơi sẽ tự động tạm dừng khi bắt đầu ván chơi, cho phép xem xét trước bản đồ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Khi tạm dừng thì cho phép: {STRING} @@ -1350,7 +1378,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :không có thao STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :tất cả những thao tác phi xây dựng STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :tất cả ngoại trừ chỉnh sửa địa hình STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :tất cả thao tác -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Danh sách phương tiện nâng cao: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gom nhóm trong danh sách phương tiện: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Cho phép sử dụng danh mục nâng cao các loại phương tiện để nhóm chúng lại STR_CONFIG_SETTING_LOADING_INDICATORS :Hiển thị quá trình nạp hàng: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Lựa chọn liệu có chỉ thị tỉ lệ bốc xếp hiển thị khi bốc xếp hàng @@ -1391,13 +1419,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Phát các âm STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Tắt việc xây dựng hạ tầng nếu không có phương tiện thích hợp nào sẵn có: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Khi bật, thì cơ sở hạ tầng chỉ sẵn có nếu loại phương tiện tương ứng cũng sẵn có, giúp cho việc tránh xây nhầm hạ tầng không thích hợp -STR_CONFIG_SETTING_MAX_TRAINS :Số tàu hỏa tối đa mỗi người chơi: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Số tàu hỏa tối đa mỗi công ty: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Số lượng tối đa tàu hỏa mà mỗi công ty có thể có -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Số xe ôtô tối đa mỗi người chơi: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Số xe ôtô tối đa mỗi công ty: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Số lượng ôtô tối đa mà một công ty có thể có -STR_CONFIG_SETTING_MAX_AIRCRAFT :Số máy bay tối đa mỗi người chơi: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Số máy bay tối đa mỗi công ty: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Số lượng máy bay tối đa mà một công ty có thể có -STR_CONFIG_SETTING_MAX_SHIPS :Số tàu thủy tối đa mỗi người chơi: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Số tàu thủy tối đa mỗi công ty: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Số lượng tàu thủy tối đa mà một công ty có thể có STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Nhân vật máy không được mua tàu hoả: {STRING} @@ -1424,7 +1452,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tần suất b STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Lựa chọn liệu rằng việc bảo trì phương tiện sẽ được tiến hành sau một khoảng thời gian nhất định hay là độ tin cậy bị giảm xuống bao nhiều phần trăm so với mức tối đa STR_CONFIG_SETTING_SERVINT_TRAINS :Tần suất bảo trì mặc định đối với tàu hỏa: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu hỏa, nếu phương tiện không có riêng thời gian bảo trì này -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} ngày/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ngày/% STR_CONFIG_SETTING_SERVINT_DISABLED :tắt STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Tần suất bảo trì mặc định đối với ôtô: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các ôtô, nếu phương tiện không có riêng thời gian bảo trì này @@ -1482,17 +1510,17 @@ STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Nếu bật, s STR_CONFIG_SETTING_ALLOW_SHARES :Cho phép mua cổ phần của các công ty khác: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Nếu bật, cho phép mua và bán cổ phần công ty. Cổ phần chỉ có thể mua bán nếu công ty đã tồn tại một thời gian nhất định nào đó STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Tỉ lệ lợi tức cổ phiếu chi trả cho môi giới: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Tỉ lệ phân trăm thu nhập cho mỗi trung gian trên hệ thống vận tải, cho phép điều chỉnh thu nhập +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Tỉ lệ thu nhập cho mỗi trung gian trên hệ thống vận tải, cho phép điều chỉnh thu nhập STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Khi kéo, đặt đèn tín hiệu mỗi: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Đặt khoảng cách để xây liên tiếp các đèn tín hiệu khi được kéo +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Đặt khoảng cách giữa các đèn tín hiệu khi được kéo STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ô STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Khi kéo-thả, giữ khoảng cách cố định giữa các đèn tín hiệu: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Lựa chọn cách đặt đèn hiệu khi bấm Ctrl+kéo thả đèn hiệu, nếu tắt, đèn hiệu đặt ngay trước và sau cầu, hầm để tránh bị quãng kéo dài không có đèn. Nếu bật, đèn hiệu sẽ được đặt sau mỗi n ô, tạo ra việc căn đèn đối với các ray song song dễ dàng hơn STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Xây cờ hiệu thay vì đèn trước năm: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Thiết lập năm mà đèn hiệu điện sẽ được sử dụng. Trước năm này chỉ có cờ hiệu được sử dụng (chúng cùng chức năng, chỉ khác hình thức) +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Thiết lập thời điểm đèn hiệu điện sẽ được sử dụng. Trước thời điểm này chỉ có cờ hiệu được sử dụng (chúng cùng chức năng, chỉ khác hình thức) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Bật GUI đèn tín hiệu : {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Hiện một cửa sổ chọn kiểu đèn hiệu khi xây dựng, thay vì phải đổi kiểu bằng cách bấm Ctrl+click trên công cụ xây dựng đèn hiệu -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Kiểu đèn tín hiệu đc xây mặc định: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Kiểu đèn tín hiệu mặc định: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Kiểu đèn tín hiệu mặc định để sử dụng STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Đèn hiệu khóa STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Đèn dẫn đường @@ -1558,17 +1586,15 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Bình thường STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Nhanh STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Cực nhanh STR_CONFIG_SETTING_LARGER_TOWNS :Tỷ lệ đô thị sẽ trở nên thành phố: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Số lượng đô thị sẽ trở nên thành phố, đô thị đó sẽ rộng hơn và phát triển nhanh hơn +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Số lượng đô thị sẽ trở thành thành phố, đô thị đó sẽ rộng hơn và phát triển nhanh hơn STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 trong {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Không STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Hệ số quy mô đô thị coi là thành phố: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Kích thước trung bình của thành phố tỉ lệ với đô thị lúc bắt đầu trò chơi -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Bỏ đi những khúc đường ngớ ngẩn khi xây dựng đường: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Xóa bỏ những khúc đường cụt trong khi đầu tư cải tạo lại đường -STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Cập nhật đồ thị phân phối mỗi {STRING} ngày +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Cập nhật đồ thị phân phối mỗi {STRING}{NBSP}ngày STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Thời gian giữa các lần tính toán đồ thị. Mỗi lần tính sẽ tính một phần của đồ thị. Nhưng không có nghĩa là giá trị X này sẽ khiến việc tính toán toàn bộ xảy ra sau X ngày, chỉ có một phần thôi. Nếu nhỏ thì CPU cần để tính sẽ nhiều hơn, lớn thì việc tính toán lại phân phối hàng hóa mỗi khi có đường mới sẽ chậm hơn. -STR_CONFIG_SETTING_LINKGRAPH_TIME :Dùng {STRING} ngày để tính toán lại đồ thị phân phối +STR_CONFIG_SETTING_LINKGRAPH_TIME :Dùng {STRING}{NBSP}ngày để tính toán lại đồ thị phân phối STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Thời gian cần thiết cho mỗi bước tính toán đồ thị liên kết. Mỗi khi bắt đầu, chương trình tính toán sẽ được phép chạy trong một số ngày nào đó tùy theo giá trị này. Nếu quá ít có thể không đủ để tính toán, mà nếu quá nhiều thì nó sẽ kéo dài việc tính toán lại phân phối mỗi khi đường đi thay đổi. STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :bằng tay STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :bất đối xứng @@ -1580,14 +1606,14 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Thư tín có t STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Chế độ phân phối đối với hàng hóa đóng két: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Hàng hóa được đóng két là gói hàng có giá trong địa hình nhiệt đới, kim cương trong hoang mạc, vàng trong địa hình vùng cực lạnh. NewGRF có thể khác. Bạn nên đặt là bất đối xứng hoặc bằng tay nếu ở địa hình cực lạnh, vì ngân hàng sẽ không gửi vàng trở lại mỏ vàng. Với địa hình nhiệt đới hoặc hoang mạc thì có thể chọn đối xứng bởi các ngân hàng có thể gửi hai chiều với nhau. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Chế độ phân phối đối với các loại hàng hóa mặc định: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"đối xứng" là sẽ có lượng hàng từ A đến B sẽ giống lượng từ B đến A. "bất đối xứng" là tùy ý hàng hóa có thể gửi theo chiều bất kỳ. "bằng tay" là sẽ không phân phối tự động mà bạn sẽ phải chỉ ra. Bạn nên đặt là "bất đối xứng" hoặc "bằng tay". +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"bất đối xứng" là khối lượng hàng hóa tùy ý có thể gửi theo chiều bất kỳ. "bằng tay" là sẽ không phân phối tự động mà bạn sẽ phải chỉ ra. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Độ chính xác phân phối: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mức chính xác tính toán đồ thị, nếu giá trị càng cao càng tốn CPU và trò chơi có thể chậm phản ứng, tuy nhiên giá trị thấp sẽ khiến việc phân phối sẽ giảm sự chính xác và bạn sẽ thấy sự khác biệt là hàng hóa không gửi đến chỗ cần đến. STR_CONFIG_SETTING_DEMAND_DISTANCE :Ảnh hưởng bởi khoảng cách đến nhu cầu gửi: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Nếu bạn đặt giá trị này lớn hơn 0, thì khoảng chênh lượng hàng hóa gửi từ ga A đến B sẽ ảnh hưởng bởi khoảng cách, giá trị càng cao thì càng ít hàng gửi đến ga xa và nhiều hàng gửi đến ga gần và ngược lại. STR_CONFIG_SETTING_DEMAND_SIZE :Khối lượng hàng hóa trả về đối với chế độ đối xứng: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Thiết lập giá trị này ít hơn 100% sẽ khiến vận tải hai chiều đối xứng sẽ giống như bất đối xứng. Sẽ có ít hàng hóa hơn chuyển ngược lại nếu như số lượng hàng chuyển tới vượt ngưỡng nào đó. Nếu đặt là 0% thì là bất đối xứng hoàn toàn. -STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tỉ lệ bão hòa (hết tải) trước khi chuyển sang đường khác: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tỉ lệ bảo hòa (hết tải) của đường tắt trước khi chuyển sang đường khác dài hơn: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Thường sẽ có nhiều con đường giữa 2 ga/bến. Việc vận tải hàng hóa sẽ chọn con đường ngắn nhất trước cho đến khi hết tải. Sau đó chọn con đường ngắn thứ 2, 3... cho đến khi hết tải. Việc hết tải được tính toán bằng khối lượng vận chuyển thực tế so với dự tính. Khi hết tải tất cả các con đường, nếu vẫn còn hàng hóa cần chuyển, thì nó có thể gây quá tải. Dầu vậy thuật toán này không phải lúc nào cũng chính xác trong việc tính toán năng lực vận tải. Thiết lập này cho phép bạn tinh chỉnh tỉ lệ mà một con đường sẽ hết tải trước khi chọn con đường kế tiếp. Nhỏ hơn 100% sẽ giúp tránh việc một ga bến quá đông đúc và bù trừ việc tính toán sai lệch này. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Đơn vị tốc độ: {STRING} @@ -1603,50 +1629,42 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Đơn vị khối lượng: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Khi hiển thị khối lượng trên giao diện, thể hiện nó bằng đơn vị đã chọn. +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Khi hiển thị khối lượng trên giao diện, thể hiện nó bằng đơn vị đã chọn STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonne) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Đơn vị dung tích: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Khi dung tích thể hiện, hiển thị nó trong đơn vị đã chọn. +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Khi dung tích thể hiện, hiển thị nó trong đơn vị đã chọn STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Đơn vị gia tốc: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Mỗi đơn vị lực, cũng là gia tốc, hiển thị trên giao diện như là đơn vị đã chọn. +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Mỗi đơn vị lực, cũng là gia tốc, hiển thị trên giao diện như là đơn vị đã chọn STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Đơn vị độ cao: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Khi độ cao thể hiện trên giao diện, thì hiển thị nó trên đơn vị đã chọn. +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Khi độ cao thể hiện trên giao diện, thì hiển thị nó trên đơn vị đã chọn STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Hoàng Gia (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_GUI :{ORANGE}Giao Diện STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Tiêu Chuẩn Đo Lường -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Xây Dựng +STR_CONFIG_SETTING_SOUND :{ORANGE}Âm thanh +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Giao Diện +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Xây Dựng STR_CONFIG_SETTING_VEHICLES :{ORANGE}Phương Tiện -STR_CONFIG_SETTING_STATIONS :{ORANGE}Ga, Bến, Cảng -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Kinh Tế -STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Phân Bổ Hàng Hóa +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Tìm đường +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Môi trường +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Chính quyền +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Đô thị +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Nhà máy +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Phân bổ hàng hóa STR_CONFIG_SETTING_AI :{ORANGE}Đối Thủ -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Tùy chỉnh hiển thị -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Tương tác -STR_CONFIG_SETTING_SOUND :{ORANGE}Hiệu ứng âm thanh -STR_CONFIG_SETTING_NEWS :{ORANGE}Tin tức -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Đèn báo -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Bốc/dỡ hàng STR_CONFIG_SETTING_AI_NPC :{ORANGE}Nhân vật máy -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Tự thay mới -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Bảo trì -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Tìm đường -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tàu hoả -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Đô thị -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Nhà máy STR_CONFIG_SETTING_PATHFINDER_OPF :Nguyên bản STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1672,7 +1690,7 @@ STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... bỏ STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... bỏ qua NewGRF '{STRING}' không hợp lệ: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :không tìm thấy STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :không an toàn để dùng tĩnh -STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF hệ thống +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :Hệ thống NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :không tương thích phiên bản với OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :không rõ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... mức độ nén '{STRING}' không hợp lệ @@ -1695,7 +1713,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Chơi Tr STR_INTRO_GAME_OPTIONS :{BLACK}Cấu Hình Trò Chơi STR_INTRO_HIGHSCORE :{BLACK}Bảng điểm chơi cao nhất -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Thiết Lập Nâng Cao +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập STR_INTRO_NEWGRF_SETTINGS :{BLACK}Thiết Lập NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Các Nội Dung Trên Mạng STR_INTRO_SCRIPT_SETTINGS :{BLACK}Thiết Lập AI / Game Script @@ -1715,7 +1733,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Chọn k STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Hiển thị cấu hình của trò chơi STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hiện bảng điểm chơi cao nhất -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Hiển thị tùy chỉnh nâng cao +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Thiết lập hiển thị STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Hiển thị tùy chỉnh NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kiểm tra những nội dung mới & cập nhật để tải về STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Hiển thị thiết lập AI và Game script @@ -1755,12 +1773,14 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Điều STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Xe ủi thần kỳ (xóa bỏ nhà máy, vật không thể di chuyển): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Đường ngầm có thể vượt lẫn nhau : {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Máy bay phản lực sẽ không tai nạn (thường xuyên) ở các sân bay nhỏ: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Thay đổi chiều cao tối đa của bản đồ {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Thay đổi chiều cao tối đa của núi đồi trên bản đồ STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Địa hình vừa phải STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Địa hình giá lạnh STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Địa hình cận nhiệt đới STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Địa hình đồ chơi STR_CHEAT_CHANGE_DATE :{LTBLUE}Sửa thời gian: {ORANGE}{DATE_SHORT} -STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Thay đổi năm hiện tại +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Thay đổi thời gian hiện tại STR_CHEAT_SETUP_PROD :{LTBLUE}Cho phép khả năng sửa giá trị sản xuất: {ORANGE}{STRING} # Livery window @@ -1800,14 +1820,15 @@ STR_LIVERY_PASSENGER_TRAM :Xe khách đi STR_LIVERY_FREIGHT_TRAM :Tàu Hàng Điện # Face selection window -STR_FACE_CAPTION :{WHITE}Chọn Vẻ Mặt +STR_FACE_CAPTION :{WHITE}Chọn Khuôn Mặt STR_FACE_CANCEL_TOOLTIP :{BLACK}Bỏ qua lựa chọn vẻ mặt STR_FACE_OK_TOOLTIP :{BLACK}Lựa chọn vẻ mặt mới +STR_FACE_RANDOM :{BLACK}Sinh Ngẫu Nhiên STR_FACE_MALE_BUTTON :{BLACK}Nam -STR_FACE_MALE_TOOLTIP :{BLACK}Chọn vẻ mặt nam +STR_FACE_MALE_TOOLTIP :{BLACK}Chọn khuôn mặt nam STR_FACE_FEMALE_BUTTON :{BLACK}Nữ -STR_FACE_FEMALE_TOOLTIP :{BLACK}Chọn vẻ mặt nữ +STR_FACE_FEMALE_TOOLTIP :{BLACK}Chọn khuôn mặt nữ STR_FACE_NEW_FACE_BUTTON :{BLACK}Vẻ Mặt Mới STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Chọn ngẫu nhiên vẻ mặt mới STR_FACE_ADVANCED :{BLACK}Nâng cao @@ -1817,7 +1838,7 @@ STR_FACE_SIMPLE_TOOLTIP :{BLACK}Trình c STR_FACE_LOAD :{BLACK}Nạp STR_FACE_LOAD_TOOLTIP :{BLACK}Chọn vẻ mặt ưa thích STR_FACE_LOAD_DONE :{WHITE}Vẻ mặt ưa thích đã được nạp từ file thiết lập của OpenTTD. -STR_FACE_FACECODE :{BLACK}Vẻ mặt thứ. +STR_FACE_FACECODE :{BLACK}Khuôn mặt thứ. STR_FACE_FACECODE_TOOLTIP :{BLACK}Xem và/hoặc sửa số vẻ mặt của chủ tịch công ty STR_FACE_FACECODE_CAPTION :{WHITE}Xem và/hoặc chọn số bộ mặt người chơi STR_FACE_FACECODE_SET :{WHITE}Mã số gương mặt mới được thiết lập. @@ -1826,9 +1847,9 @@ STR_FACE_SAVE :{BLACK}Lưu STR_FACE_SAVE_TOOLTIP :{BLACK}Lưu gương mặt yêu thích STR_FACE_SAVE_DONE :{WHITE}Gương mặt yêu thích này sẽ được lưu lại trong tập tin cấu hình OpenTTD . STR_FACE_EUROPEAN :{BLACK}Châu Âu -STR_FACE_SELECT_EUROPEAN :{BLACK}Chọn gương mặt Châu Âu +STR_FACE_SELECT_EUROPEAN :{BLACK}Chọn khuôn mặt Châu Âu STR_FACE_AFRICAN :{BLACK}Châu Phi -STR_FACE_SELECT_AFRICAN :{BLACK}Chọn gương mặt Châu Phi +STR_FACE_SELECT_AFRICAN :{BLACK}Chọn khuôn mặt Châu Phi STR_FACE_YES :Đồng ý STR_FACE_NO :Không STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Chọn ria mép hoặc bông tai @@ -2042,6 +2063,7 @@ STR_NETWORK_CLIENT :Máy trạm STR_NETWORK_SPECTATORS :Người xem STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Nhập số tiền muốn cho đi +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Người xem # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Không được ghi mật khẩu đã nhập @@ -2271,7 +2293,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Xây d STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Xây xưởng tàu hoả (để chế tạo và bảo dưỡng tàu). Shift để xem chi phí dự tính STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Chuyển từ ray sang điểm mốc. Ctrl để nối các điểm mốc. Shift để xem chi phí dự tính STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Xây nhà ga tàu hoả. Ctrl để nối các nhà ga. Shift để xem chi phí dự tính -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Xây đèn tín hiệu đường sắt. Ctrl đổi dùng đèn/cờ tín hiệu.{}Ctrl + kéo chuột theo đường ray khi xây sẽ xây loạt đèn tín hiệu cho tới điểm ngã ba, tư kế tiếp {}Ctrl+Click để mở cửa sổ chọn loại đèn tin hiệu. Shift để xem chi phí dự tính +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Xây đèn tín hiệu đường sắt. Ctrl đổi dùng đèn/cờ tín hiệu{}Kéo thả để xây đèn tín hiệu theo đoạn kéo thả. Ctrl + kéo chuột theo đường ray khi xây sẽ xây loạt đèn tín hiệu cho tới điểm ngã ba, tư kế tiếp {}Ctrl+Click để mở cửa sổ chọn loại đèn tin hiệu. Shift để xem chi phí dự tính STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Xây cầu tàu hoả. Shift để xem chi phí dự tính STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Xây hầm tàu hoả. Shift để xem chi phí dự tính STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Chuyển chế độ xây/phá cho đường ray, đèn tín hiệu, điểm mốc và nhà ga. Giữ Ctrl để phá bỏ đường ray tính từ điểm mốc hay nhà ga @@ -2546,6 +2568,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Hàng hoá chấp nhận: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Giới hạn tốc độ đường ray: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hạn chế tốc độ đường bộ: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Đá @@ -2639,10 +2662,10 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Trụ sở côn STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Đất công ty sở hữu # About OpenTTD window -STR_ABOUT_OPENTTD :{WHITE}OpenTTD +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-2013 Nhóm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2015 Nhóm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi @@ -2676,13 +2699,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Số lượng đô thị: STR_MAPGEN_DATE :{BLACK}Thời điểm: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Số lượng nhà máy: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Chiều cao tối đa của bản đồ +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Tăng chiều cao tối đa của núi đồi trên bản đồ 1 đơn vị +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Giảm chiều cao tối đa của núi đồi trên bản đồ 1 đơn vị STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Độ cao tuyết phủ: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Di chuyển độ cao tuyết phủ lên cao STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Di chuyển độ cao tuyết phủ xuống thấp -STR_MAPGEN_RANDOM_SEED :{BLACK}Số ngẫu nhiên: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Chọn để nhập con số ngẫu nhiên khi tạo bản đồ -STR_MAPGEN_RANDOM :{BLACK}Sinh Ngẫu Nhiên -STR_MAPGEN_RANDOM_HELP :{BLACK}Thay đổi con số ngẫu nhiên để khởi tạo địa hình ngẫu nhiên STR_MAPGEN_LAND_GENERATOR :{BLACK}Tạo nền đất: STR_MAPGEN_TREE_PLACER :{BLACK}Cơ chế trồng cây: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Kiểu nền đất: @@ -2709,9 +2731,9 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Tên b STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Cỡ: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Nhập một số ngẫu nhiên +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Thay đổi chiều cao tối đa của bản đồ STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Thay đổi độ cao tuyết phủ -STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Thay đổi năm khởi đầu +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Thay đổi thời điểm bắt đầu # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Kiểu Màn Chơi @@ -2727,8 +2749,8 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Thay đ # Map generation progress STR_GENERATION_WORLD :{WHITE}Đang tạo màn... STR_GENERATION_ABORT :{BLACK}Huỷ bỏ -STR_GENERATION_ABORT_CAPTION :{WHITE}Huỷ Việc Tạo Màn -STR_GENERATION_ABORT_MESSAGE :{YELLOW}Bạn có chắc là huỷ việc tạo màn chơi? +STR_GENERATION_ABORT_CAPTION :{WHITE}Ngưng Tạo Màn +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Bạn có chắc ngưng tạo màn chơi? STR_GENERATION_PROGRESS :{WHITE}{NUM}% hoàn thành STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tạo màn @@ -2764,6 +2786,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Dịch l STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Dịch NewGRF file lên phía trên STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Chuyển xuống STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Chuyển NewGRF file xuống dưới +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Nâng cấp +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Nâng cấp những file NewGRF nếu bạn đã cài phiên bản mới STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Danh sách file NewGRF đã cài đặt. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Đặt tham số @@ -2788,6 +2812,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}File hợp STR_NEWGRF_SETTINGS_DISABLED :{RED}Tắt STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Không tương thích với phiên bản OpenTTD này. +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Lưu thiết lập +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Danh sách những thiết lập có sẵn, chọn một để sao chép tên thiết lập +STR_SAVE_PRESET_TITLE :{BLACK}Nhập tên cho thiết lập +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Tên hiện tại cho thiết lập được lưu +STR_SAVE_PRESET_CANCEL :{BLACK}Hủy bỏ +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Không thay đổi thiết lập +STR_SAVE_PRESET_SAVE :{BLACK}Lưu +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Lưu thiết lập bằng tên được chọn + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Thay Đổi Tham Số NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Đóng @@ -2815,10 +2849,9 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Chuyển STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Đi tới sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Nhảy tới sprite đã cho. Nếu sprite không bình thường, thì chuyển tới cái bình thường kế tiếp STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite trước -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Xử lý sprite bình thường ở trước, bỏ qua các loại sprite căn theo điểm bắt đầu +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Xử lý sprite bình thường ở trước, bỏ qua các loại pseudo/recolour/font sprite căn theo điểm bắt đầu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Theo những thông tin của sprite đã chọn. Thì việc căn chỉnh khi vẽ đối với sprite này sẽ bị bỏ qua STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Di chuyển sprite xung quanh, thay đổi X và Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Chọn sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Chọn sprite ở bất cứ đâu trên màn hình @@ -2875,6 +2908,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Thiếu fi STR_NEWGRF_BROKEN :{WHITE}Hoạt động của NewGRF '{0:STRING}' có thể gây mất đồng bộ hoặc bị treo. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Trạng thái đầu kéo '{1:ENGINE}' được thay đổi khi không ở trong xưởng sửa chữa. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nó cắt ngắn độ dài của đoàn tàu '{1:ENGINE}' nếu không ở trong xưởng. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sức chứa của phương tiện bị thay đổi '{1:ENGINE}' khi không ở trong xưởng hoặc vì cải biến STR_BROKEN_VEHICLE_LENGTH :{WHITE}Đoàn tàu '{VEHICLE}' của '{COMPANY}' có độ dài không hợp lệ. Có thể gây sự cố với NewGRFs. Ván chơi có thể mất đồng bộ hoặc bị treo STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' không hợp lệ. @@ -2885,10 +2919,13 @@ STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Hàm cal # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} hàng hoá bất hợp lệ +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Đang Quét NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Đang quét các NewGRF. Thời gian hoàn tất phụ thuộc vào số lượng hiện có... @@ -2926,8 +2963,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{GREEN}Đã chuyển được {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (vẫn còn yêu cầu) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (đã được vận chuyển) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Thị trấn phát triển mỗi {ORANGE}{COMMA}{BLACK} ngày -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Thị trấn phát triển mỗi {ORANGE}{COMMA}{BLACK} ngày (đã được góp vốn) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Thị trấn phát triển mỗi {ORANGE}{COMMA}{BLACK}{NBSP}ngày +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Thị trấn phát triển mỗi {ORANGE}{COMMA}{BLACK}{NBSP}ngày (đã được góp vốn) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Thị trấn {RED}không còn{BLACK} phát triển STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Độ ồn giới hạn trong đô thị: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Xem trung tâm đô thị. Ctrl+Click mở cửa sổ mới về vị trí đô thị @@ -2955,7 +2992,7 @@ STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Chiến dịch STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Chiến dịch quảng cáo trung bình STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Chiến dịch quảng cáo lớn STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Tài trợ cải tạo đường phố nội thị -STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Xây tượng đài ông chủ công ty +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Xây tượng đài công ty STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Tài trợ xây nhà cửa STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Mua độc quyền kinh doanh vận tải STR_LOCAL_AUTHORITY_ACTION_BRIBE :Hối lộ quan chức địa phương @@ -2963,7 +3000,7 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Hối lộ quan STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Thực hiện chiến dịch quảng cáo nhỏ để thu hút khách và hàng hoá vận chuyển.{}Chi phí: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Thực hiện chiến dịch quảng cáo trung bình để thu hút khách và hàng hoá vận chuyển.{}Chi phí: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Thực hiện chiến dịch quảng cáo lớn để thu hút khách và hàng hoá vận chuyển.{}Chi phí: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Tài trợ xây dựng lại đường xá của đô thị. Sẽ gây ách tắc giao thông đường bộ trong 6 tháng.{}Chi phí: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Tài trợ xây dựng lại đường sá của đô thị. Sẽ gây ách tắc giao thông đường bộ trong 6 tháng.{}Chi phí: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Dựng tượng đài tôn vinh ông chủ công ty để quảng bá hình ảnh công ty.{}Chi phí: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Tài trợ xây dựng các toà nhà thương mại để thúc đẩy phát triển đô thị.{}Chi phí: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Mua độc quyền kinh doanh vận tải của đô thị. Chính quyền địa phương sẽ ra luật chỉ cho phép hành khách và hàng hoá vào nhà ga, bến, cảng của công ty.{}Chi phí: {CURRENCY_LONG} @@ -2987,7 +3024,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Thông Tin STR_GOAL_QUESTION_CAPTION_WARNING :Cảnh Báo STR_GOAL_QUESTION_CAPTION_ERROR :Lỗi -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Hủy bỏ STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Không @@ -3006,6 +3043,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Làm lại STR_GOAL_QUESTION_BUTTON_POSTPONE :Hoãn lại STR_GOAL_QUESTION_BUTTON_SURRENDER :Từ bỏ STR_GOAL_QUESTION_BUTTON_CLOSE :Đóng +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Trợ Cấp @@ -3026,6 +3064,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Trước STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Chuyển về trang trước STR_STORY_BOOK_NEXT_PAGE :{BLACK}Sau STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Chuyển tới trang sau +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Tham chiếu mục tiêu không hợp lệ # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Các nhà ga, bến, cảng - nháy vào tên để xem vị trí nhà ga,bến, cảng. Ctrl+Click mở cửa sổ mới để xem @@ -3040,7 +3079,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Không c # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Đang chờ: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} trung chuyển từ {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} đã được trống để dỡ hàng) @@ -3119,10 +3157,10 @@ STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Thu nh STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Xây dựng STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Mua phương tiện -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Chi phí h.động của tàu hoả +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Chi phí hoạt động của tàu hoả STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Chi phí hoạt động của ôtô -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Chi phí h.động của máy bay -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Chi phí h.động của tàu thuỷ +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Chi phí hoạt động của máy bay +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Chi phí hoạt động của tàu thuỷ STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Phí bảo trì tài sản STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Thu từ tàu hoả STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Thu từ ôtô @@ -3160,7 +3198,7 @@ STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Hạ tầng: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ô đường ray STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} ô đường bộ -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} ô nước +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} ô đường thủy STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} ô ga, bến STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} sân bay STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Không @@ -3174,8 +3212,8 @@ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Chuyển STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Chi tiết STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Xem chi tiết thống kê hạ tầng -STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Vẻ mặt mới -STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Chọn vẻ mặt của giám đốc +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Chọn khuôn mặt khác +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Chọn khuôn mặt của người điều hành STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Phối màu sắc STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Thay đổi màu sắc của phương tiện STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Tên công ty @@ -3284,12 +3322,13 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Xe ôtô chưa STR_GROUP_DEFAULT_SHIPS :Tày thuỷ chưa lập nhóm STR_GROUP_DEFAULT_AIRCRAFTS :Máy bay chưa lập nhóm -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Nhóm - chọn nhóm để hiển thị các phương tiện thuộc nhóm +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Nhóm - chọn nhóm để hiển thị các phương tiện thuộc nhóm. Kéo thả nhóm để sắp xếp lại danh sách. STR_GROUP_CREATE_TOOLTIP :{BLACK}Ấn vào để tạo nhóm STR_GROUP_DELETE_TOOLTIP :{BLACK}Xoá nhóm đã chọn STR_GROUP_RENAME_TOOLTIP :{BLACK}Đổi tên nhóm STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Không để nhóm này tự thay thế (thiết lập chung) khi hết hạn + STR_GROUP_ADD_SHARED_VEHICLE :Thêm phương tiện được chia sẻ STR_GROUP_REMOVE_ALL_VEHICLES :Xoá tất cả phương tiện @@ -3327,10 +3366,10 @@ STR_PURCHASE_INFO_ALL_BUT :Tất cả tr 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_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Danh sách tàu hỏa - click vào tàu hỏa để xem thông tin -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Danh sách xe - click vào xe để xem thông tin -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Danh sách tàu - click vào tàu để xem thông tin -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Danh sách máy bay - click vào máy bay để xem thông tin +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 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Danh sách tàu có thể chọn. Click vào tàu để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Danh sách máy bay có thể chọn. Click vào máy bay để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Mua P.Tiện STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Mua P.Tiện @@ -3352,6 +3391,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Thay tê STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Thay tên loại tàu STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Thay tên loại máy bay +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ẩn +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ẩn +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ẩn +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ẩn + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Hiển thị +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Hiển thị +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Hiển thị +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Hiển thị + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bật/tắt hiển thị loại tàu hỏa +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bật/tắt hiển thị loại xe +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bật/tắt hiển thị loại tàu +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bật/tắt hiển thị loại máy bay + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Đổi tên kiểu của đầu/toa tàu STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Đổi tên kiểu của ôtô STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Đổi tên kiểu của tàu thuỷ @@ -3405,7 +3459,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Tạo ô STR_DEPOT_CLONE_SHIP :{BLACK}Tạo tàu thuỷ giống hệt STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Tạo máy bay giống hệt -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Thao tác này mua một đoàn tàu giống hệt tàu cũ, gồm cả đầu máy và toa xe. Ctrl+Click để tạo tàu mới chia sẻ lộ trình. Shift+Click để xem giá mua dự tính +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Thao tác này mua một đoàn tàu giống hệt tàu cũ, gồm cả đầu máy và toa xe. Click vào nút này, sau đó click vào một đoàn tàu ngoài hoặc trong ga. Ctrl+Click để tạo tàu mới chia sẻ lộ trình. Shift+Click để xem giá mua dự tính STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Thao tác này mua ôtô giống hệt ôtô cũ.Click vào nút này để thực hiện thao tác đối với xe trong xưởng hoặc ngoài xưởng. Ctrl+Click để tạo ôtô chia sẻ lộ trình. Shift+Click để xem giá mua ước tính STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Thao tác này mua tàu thuỷ giống hệt tàu thuỷ cũ, gồm cả loại hàng chuyên chở. Ctrl+Click để tạo tàu thuỷ chia sẻ lộ trình. Shift+Click để xem giá mua dự tính STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Thao tác này mua máy bay giống hệt máy bay cũ, gồm cả loại hàng chuyên chở. Ctrl+Click để tạo máy bay chia sẻ lộ trình. Shift+Click để xem giá mua dự tính @@ -3456,6 +3510,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Xe cộ STR_REPLACE_VEHICLE_SHIP :Tàu thủy STR_REPLACE_VEHICLE_AIRCRAFT :Máy bay +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Phương tiện đang sử dụng +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Cột hiển thị những phương tiện đang sở hữu +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Phương tiện có sẵn +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Cột hiển thị những phương tiện có thể thay thế + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Lựa chọn đầu máy để thay thế STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Lựa chọn đầu máy mới để thay thế đầu máy đã chọn @@ -3580,7 +3639,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Sức ch STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Cước trung chuyển: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tần suất bảo trì: {LTBLUE}{COMMA}ngày{BLACK} Lần bảo trì cuối: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tần suất bảo trì: {LTBLUE}{COMMA}{NBSP}ngày{BLACK} Lần bảo trì cuối: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tần suất bảo trì: {LTBLUE}{COMMA}%{BLACK} Lần bảo trì cuối: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Tăng tần suất bảo trì lên 10. Ctrl+Click để tăng 5 thôi STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Giảm tần suất bảo trì lên 10. Ctrl+Click để giảm 5 thôi @@ -3812,8 +3871,8 @@ STR_TIMETABLE_TRAVEL_FOR :Di chuyển tro STR_TIMETABLE_TRAVEL_FOR_SPEED :Lộ trình {STRING} với tốc độ tối đa {VELOCITY} STR_TIMETABLE_STAY_FOR :và ở lại trong {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :và di chuyển trong {STRING} -STR_TIMETABLE_DAYS :{COMMA} ngày -STR_TIMETABLE_TICKS :{COMMA} nhịp +STR_TIMETABLE_DAYS :{COMMA}{NBSP}ngày +STR_TIMETABLE_TICKS :{COMMA}{NBSP}nhịp STR_TIMETABLE_TOTAL_TIME :{BLACK}Lịch trình này sẽ mất {STRING} để hoàn thành STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Lịch trình này sẽ mất ít nhất {STRING} để hoàn thành (không phải tất cả điểm được lập lịch trình) @@ -3939,6 +3998,8 @@ STR_AI_SETTINGS_START_DELAY :Số ngày cầ STR_TEXTFILE_README_CAPTION :{WHITE}Readme của {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Lịch sử thay đổi của {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Giấy phép của {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Ép văn bản +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ép chữ cái vừa khung cửa sổ để khỏi phải cuộn chuột STR_TEXTFILE_VIEW_README :{BLACK}Xem readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Lịch sử thay đổi STR_TEXTFILE_VIEW_LICENCE :{BLACK}Giấy phép @@ -4049,6 +4110,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Đào h STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ở mức nước biển rồi STR_ERROR_TOO_HIGH :{WHITE}... quá cao STR_ERROR_ALREADY_LEVELLED :{WHITE}... đã bình địa rồi +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Cây cầu phía trên nền đất sau khi san lấp sẽ quá cao. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Không thể đổi tên công ty... @@ -4075,7 +4137,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... quá STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... quá gần đô thị khác STR_ERROR_TOO_MANY_TOWNS :{WHITE}... quá nhiều đô thị STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... không còn khoảng trống nào trên bản đồ -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Độ thị sẽ không xây dựng đường phố. Bạn có thể bật tính năng này ở menu Thiết lập mở rộng ->Kinh tế->Đô thị +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Đô thị sẽ không xây dựng đường phố. Bạn có thể bật tính năng này ở menu Thiết lập mở rộng->Môi trường->Đô thị STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Xây dựng cầu đường đang tiến hành STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Không thể xoá đo thị này...{}Có một ga, bến hoặc xưởng thuộc đô thị hoặc là 1 ô đất của đô thị không thể xoá được. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... không có nơi nào hợp lý để dựng tượng đài ở trung tâm đô thị này @@ -4099,6 +4161,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... rừ STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... chỉ có thể xây phía trên núi cao có tuyết STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... chỉ có thể xây phía dưới núi cao có tuyết +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Không có vùng đất nào phù hợp với nhà máy '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Thay đổi thông số khởi tạo bản đồ để có được bản đồ tốt hơn + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Không thể xây ga tàu hoả ở đây... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Không thể xây bến xe buýt... @@ -4235,6 +4300,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Phải p STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Không thể bắt đầu và kết thúc ở cùng một điểm STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Hai đầu cầu không ở cùng độ cao STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Cầu thấp quá so với mặt đất +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Cầu quá cao đối với địa hình này. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Điểu đầu và cuối phải trên 1 đường thẳng STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... hai đầu cầu phải được gá vào đất STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... cầu quá dài @@ -4411,7 +4477,7 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Nhà băng heo ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :Mỏ than +STR_INDUSTRY_NAME_COAL_MINE :Mỏ than đá STR_INDUSTRY_NAME_POWER_STATION :Nhà máy nhiệt điện STR_INDUSTRY_NAME_SAWMILL :Nhà máy chế biến gỗ STR_INDUSTRY_NAME_FOREST :Rừng @@ -4495,7 +4561,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Hơi nước) @@ -4518,9 +4584,9 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Điệ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Điện) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Điện) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Điện) -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Toa xe hành khách +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Toa chở khách STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Toa bưu kiện -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Toa chở than +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Toa chở than đá STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Toa chở dầu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Toa chở gia súc STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Toa hàng tiêu dùng @@ -4528,7 +4594,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Toa ngũ cốc STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Toa chở gỗ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Toa chở quặng sắt STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Toa chở thép -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Toa thiết giáp +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Toa bọc thép STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Toa chở thực phẩm STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Toa chở giấy STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Toa chở quặng đồng @@ -4550,7 +4616,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Toa hành khách STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Toa bưu kiện -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Toa than +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Toa than đá STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Toa chở dầu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Toa chở gia súc STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Toa hàng tiêu dùng @@ -4558,7 +4624,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Toa ngũ cốc STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Toa chở gỗ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Toa chở quặng sắt STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Toa chở thép -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Toa thiết giáp +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Toa bọc thép STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Toa thực phẩm STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Toa chở giấy STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Toa chở quặng đồng @@ -4590,7 +4656,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Toa chở ngũ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Toa chở gỗ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Toa chở quặng sắt STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Toa chở thép -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Toa thiết giáp +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Toa bọc thép STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Toa thực phẩm STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Toa chở giấy STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Toa chở quặng đồng @@ -4624,8 +4690,8 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Xe bưu kiện STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Xe bưu kiện Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Xe bưu kiện Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Xe bồn dầu Witcombe -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Xe bồn dầu Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Xe bồn dầu Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Xe dầu Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Xe dầu Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Xe gia súc Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Xe gia súc Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Xe gia súc Foster @@ -4644,9 +4710,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Xe quặng sắ STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Xe tải thép Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Xe tải thép Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Xe tải thép Kelling -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Xe thiết giáp Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Xe thiết giáp Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Xe thiết giáp Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Xe bọc thép Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Xe bọc thép Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Xe bọc thép Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Xe thực phẩm Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Xe thực phẩm Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Xe thực phẩm Chippy @@ -4656,9 +4722,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Xe tải giấy STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Xe quặng đồng MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Xe quặng đồng Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Xe quặng đồng Goss -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Xe bồn nước Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Xe bồn nước Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Xe bồn nước MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Xe nước Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Xe nước Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Xe nước MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Xe hoa quả Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Xe hoa quả Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Xe hoa quả Kelling @@ -4704,7 +4770,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Phà khách Chu STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Phà khách Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Tàu hàng Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Tàu hàng Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Tàu hàng Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Tàu hàng MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Tàu hàng Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4798,6 +4864,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (ẩn) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4833,8 +4900,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4845,9 +4910,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 6dc363ecd8..9d3f3ec617 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -95,30 +95,30 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Diod Perfiol # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} teithiwr +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}teithiwr STR_QUANTITY_COAL :{WEIGHT_LONG} o lo -STR_QUANTITY_MAIL :{COMMA} bag o bost +STR_QUANTITY_MAIL :{COMMA}{NBSP}bag o bost STR_QUANTITY_OIL :{VOLUME_LONG} o olew -STR_QUANTITY_LIVESTOCK :{COMMA} eitem o dda byw -STR_QUANTITY_GOODS :{COMMA} crât o nwyddau +STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}eitem o dda byw +STR_QUANTITY_GOODS :{COMMA}{NBSP}crât o nwyddau STR_QUANTITY_GRAIN :{WEIGHT_LONG} o rawn STR_QUANTITY_WOOD :{WEIGHT_LONG} o goed STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} o fwyn haearn STR_QUANTITY_STEEL :{WEIGHT_LONG} o ddur -STR_QUANTITY_VALUABLES :{COMMA} bag o drysorau +STR_QUANTITY_VALUABLES :{COMMA}{NBSP}bag o drysorau STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} o fwyn copr STR_QUANTITY_MAIZE :{WEIGHT_LONG} o india corn STR_QUANTITY_FRUIT :{WEIGHT_LONG} o ffrwyth -STR_QUANTITY_DIAMONDS :{COMMA} bag o ddiemwntau +STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}bag o ddiemwntau STR_QUANTITY_FOOD :{WEIGHT_LONG} o fwyd STR_QUANTITY_PAPER :{WEIGHT_LONG} o bapur -STR_QUANTITY_GOLD :{COMMA} bag o aur +STR_QUANTITY_GOLD :{COMMA}{NBSP}bag o aur STR_QUANTITY_WATER :{VOLUME_LONG} o ddŵr STR_QUANTITY_WHEAT :{WEIGHT_LONG} o wenith STR_QUANTITY_RUBBER :{VOLUME_LONG} o rwber STR_QUANTITY_SUGAR :{WEIGHT_LONG} o siwgr -STR_QUANTITY_TOYS :{COMMA} tegan -STR_QUANTITY_SWEETS :{COMMA} bag o felysion +STR_QUANTITY_TOYS :{COMMA}{NBSP}tegan +STR_QUANTITY_SWEETS :{COMMA}{NBSP}bag o felysion STR_QUANTITY_COLA :{VOLUME_LONG} o gola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} o gandifflos STR_QUANTITY_BUBBLES :{COMMA} swigen @@ -165,12 +165,12 @@ STR_ABBREV_NONE :{TINY_FONT}DIM STR_ABBREV_ALL :{TINY_FONT}OLL # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} teithiwr -STR_BAGS :{COMMA} bag -STR_TONS :{COMMA} tunnell -STR_LITERS :{COMMA} litr -STR_ITEMS :{COMMA} eitem -STR_CRATES :{COMMA} crât +STR_PASSENGERS :{COMMA}{NBSP}teithiwr +STR_BAGS :{COMMA}{NBSP}bag +STR_TONS :{COMMA}{NBSP}tunnell +STR_LITERS :{COMMA}{NBSP}litr +STR_ITEMS :{COMMA}{NBSP}eitem +STR_CRATES :{COMMA}{NBSP}crât # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Glas Tywyll @@ -186,41 +186,49 @@ STR_COLOUR_CREAM :Hufen STR_COLOUR_MAUVE :Porffor Golau STR_COLOUR_PURPLE :Porffor STR_COLOUR_ORANGE :Oren -STR_COLOUR_BROWN :Frown +STR_COLOUR_BROWN :Brown STR_COLOUR_GREY :Llwyd STR_COLOUR_WHITE :Gwyn # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/h -STR_UNITS_VELOCITY_SI :{COMMA} m/s +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tunnell -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tunell +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tunnell +STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}galwyn +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litr +STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ -STR_UNITS_FORCE_SI :{COMMA} kN +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} tr -STR_UNITS_HEIGHT_SI :{COMMA} m +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}tr +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Llinyn hidlo: STR_LIST_FILTER_OSKTITLE :{BLACK}Rhowch linyn hidlo STR_LIST_FILTER_TOOLTIP :{BLACK}Rhowch allweddair er mwyn ei ddefnyddio i hidlo'r rhestr +STR_TOOLTIP_GROUP_ORDER :{BLACK}Dewis trefn grwpio STR_TOOLTIP_SORT_ORDER :{BLACK}Dewiswch drefn trefnu (disgynnol/esgynnol) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Dewiswch drefn trefnu STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Dewis criteria hidlydd @@ -240,6 +248,17 @@ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar sgro STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar sgrolio - sgrolio'r rhestr i'r chwith neu i'r dde STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Dymchwel adeiladau ayb. ar sgwâr o dir. Mae Ctrl yn dewis ardal deiagonal. Mae Shift yn toglo adeiladu/dangos amcangyfrif cost +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Dangos rhai cudd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Dangos rhai cudd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Dangos rhai cudd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Dangos rhai cudd + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Drwy alluogi'r botwm yma, fe ddangosir y cerbydau rheilffordd cudd hefyd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Drwy alluogi'r botwm yma, fe ddangosir y cerbydau ffordd cudd hefyd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Drwy alluogi'r botwm yma, fe ddangosir y llongau cudd hefyd +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Drwy alluogi'r botwm yma, fe ddangosir yr awyrennau cudd hefyd + # Query window STR_BUTTON_DEFAULT :{BLACK}Rhagosodiad STR_BUTTON_CANCEL :{BLACK}Diddymu @@ -277,16 +296,18 @@ STR_SORT_BY_LENGTH :Hyd STR_SORT_BY_LIFE_TIME :Oes yn weddill STR_SORT_BY_TIMETABLE_DELAY :Oediad amserlen STR_SORT_BY_FACILITY :Math Gorsaf +STR_SORT_BY_WAITING_TOTAL :Cyfanswm llwythi sy'n aros +STR_SORT_BY_WAITING_AVAILABLE :Llwythi sy'n aros ar gael STR_SORT_BY_RATING_MAX :Safon cludiant uchaf STR_SORT_BY_RATING_MIN :Safon cludiant isaf STR_SORT_BY_ENGINE_ID :ID Injan (math clasurol) STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Pŵer -STR_SORT_BY_TRACTIVE_EFFORT :Grym tyniadol -STR_SORT_BY_INTRO_DATE :Dyddiad Cyflwyno -STR_SORT_BY_RUNNING_COST :Cost Rhedeg -STR_SORT_BY_POWER_VS_RUNNING_COST :Pŵer/Cost Rhedeg -STR_SORT_BY_CARGO_CAPACITY :Gallu cludo Llwyth +STR_SORT_BY_TRACTIVE_EFFORT :Grym tynnu +STR_SORT_BY_INTRO_DATE :Dyddiad cyflwyno +STR_SORT_BY_RUNNING_COST :Cost rhedeg +STR_SORT_BY_POWER_VS_RUNNING_COST :Pŵer/Cost rhedeg +STR_SORT_BY_CARGO_CAPACITY :Gallu cludo llwyth STR_SORT_BY_RANGE :Maes teithio STR_SORT_BY_POPULATION :Poblogaeth STR_SORT_BY_RATING :Gradd @@ -302,6 +323,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Dangos C STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Dangos rhestr o orsafoedd y cwmni STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Dangos gwybodaeth cyllid y cwmni STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Dangos gwybodaeth gyffredinol y cwmni +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Dangos llyfr hanes +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Dangos rhestr amcanion STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Dangos graffiau STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Dangos tabl cynghrair cwmnïau STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ariannu adeiladu diwydiant newydd @@ -349,7 +372,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Gadael ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Dewisiadau Gêm -STR_SETTINGS_MENU_CONFIG_SETTINGS :Gosodiadau uwch +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Gosodiadau STR_SETTINGS_MENU_SCRIPT_SETTINGS :Gosodiadau AI / sgript Gêm STR_SETTINGS_MENU_NEWGRF_SETTINGS :Gosodiadau NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Dewisiadau tryloywder @@ -410,7 +433,7 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Ariannu diwydia ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Adeiladu rheilffordd -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Adeiladu Rheilffordd Drydan +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Adeiladu rheilffordd drydan STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Adeiladu monoreilffordd STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Adeiladu maglef ############ range ends here @@ -458,7 +481,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toglo bocsys ff STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toglo llwio blociau budr ############ range ends here -############ range for days starts (also used for the place in the highscore window) +############ range for ordinal numbers used for the place in the highscore window STR_ORDINAL_NUMBER_1ST :1af STR_ORDINAL_NUMBER_2ND :2il STR_ORDINAL_NUMBER_3RD :3ydd @@ -474,22 +497,40 @@ STR_ORDINAL_NUMBER_12TH :12fed STR_ORDINAL_NUMBER_13TH :13eg STR_ORDINAL_NUMBER_14TH :14eg STR_ORDINAL_NUMBER_15TH :15fed -STR_ORDINAL_NUMBER_16TH :16eg -STR_ORDINAL_NUMBER_17TH :17eg -STR_ORDINAL_NUMBER_18TH :18fed -STR_ORDINAL_NUMBER_19TH :19fed -STR_ORDINAL_NUMBER_20TH :20fed -STR_ORDINAL_NUMBER_21ST :21ain -STR_ORDINAL_NUMBER_22ND :22ain -STR_ORDINAL_NUMBER_23RD :23ain -STR_ORDINAL_NUMBER_24TH :24ain -STR_ORDINAL_NUMBER_25TH :25ain -STR_ORDINAL_NUMBER_26TH :26ain -STR_ORDINAL_NUMBER_27TH :27ain -STR_ORDINAL_NUMBER_28TH :28ain -STR_ORDINAL_NUMBER_29TH :29ain -STR_ORDINAL_NUMBER_30TH :30ain -STR_ORDINAL_NUMBER_31ST :31ain +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :1af +STR_DAY_NUMBER_2ND :2il +STR_DAY_NUMBER_3RD :3ydd +STR_DAY_NUMBER_4TH :4ydd +STR_DAY_NUMBER_5TH :5ed +STR_DAY_NUMBER_6TH :6ed +STR_DAY_NUMBER_7TH :7ed +STR_DAY_NUMBER_8TH :8ed +STR_DAY_NUMBER_9TH :9ed +STR_DAY_NUMBER_10TH :10ed +STR_DAY_NUMBER_11TH :11eg +STR_DAY_NUMBER_12TH :12ed +STR_DAY_NUMBER_13TH :13eg +STR_DAY_NUMBER_14TH :14eg +STR_DAY_NUMBER_15TH :15ed +STR_DAY_NUMBER_16TH :16eg +STR_DAY_NUMBER_17TH :17eg +STR_DAY_NUMBER_18TH :18ed +STR_DAY_NUMBER_19TH :19eg +STR_DAY_NUMBER_20TH :20ed +STR_DAY_NUMBER_21ST :21ain +STR_DAY_NUMBER_22ND :22ain +STR_DAY_NUMBER_23RD :23ain +STR_DAY_NUMBER_24TH :24ain +STR_DAY_NUMBER_25TH :25ain +STR_DAY_NUMBER_26TH :26ain +STR_DAY_NUMBER_27TH :27ain +STR_DAY_NUMBER_28TH :28ain +STR_DAY_NUMBER_29TH :29ain +STR_DAY_NUMBER_30TH :30ain +STR_DAY_NUMBER_31ST :31ain ############ range for days ends ############ range for months starts @@ -798,13 +839,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Mae {VEH STR_NEWS_SHIP_IS_WAITING :{WHITE}Mae {VEHICLE} yn aros yn y depo STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Mae {VEHICLE} yn aros yn yr awrendy -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Mae gan {VEHICLE} rhy ddiffyg gorchmynion yn ei amserlen +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Nid oes gan {VEHICLE} ddigon o orchmynion yn ei amserlen STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Mae gan {VEHICLE} orchymyn gwallus STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Mae gan {VEHICLE} orchmynion dyblyg STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Mae gan {VEHICLE} orsaf annilys yn ei orchmynion -# end of order system +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}Mae gan {VEHICLE}o fewn ei orchmynion faes awyr sydd â llwybr glanio sy'n rhy fyr STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Mae {VEHICLE} yn heneiddio STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Mae {VEHICLE} yn hynod o hen @@ -817,9 +857,9 @@ STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Stopiodd achos methiant hefo trefnu ailffitio {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Methwyd ag adnewyddu {VEHICLE}{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}{STRING} newydd yn awr ar gael! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Mae {STRING} newydd yn awr ar gael! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}New {STRING} ar gael yn awr! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Mae {STRING} newydd yn awr ar gael! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Nid yw {STATION} bellach yn derbyn {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Nid yw {STATION} bellach yn derbyn {STRING} na {STRING} @@ -887,10 +927,6 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (G STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region - -############ start of measuring units region -############ end of measuring units region - STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cerbydau Ffordd STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Dewiswch ar ba ochr i'r ffordd y dylai cerbydau yrru STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Gyrru ar y chwith @@ -926,11 +962,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalanaidd STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Awtogadw STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Dewiswch pa mor aml y dylid awtogadw gemau +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Diffodd Awtogadw STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Bob mis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Bob 3 mis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Bob 6 mis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Bob 12 mis +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Iaith STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Dewiswch yr iaith rhyngwyneb i'w defnyddio @@ -942,8 +980,12 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Cydrania STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Dewiswch y cydraniad sgrin i'w defnyddio STR_GAME_OPTIONS_RESOLUTION_OTHER :arall -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Fformat Ciplun -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Dewiswch y fformat ciplun i'w ddefnyddio +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Maint rhyngwyneb +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Dewis maint yr elfennau rhyngwyneb i'w defnyddio + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Arferol +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dyblyg +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Pedwarplyg STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set raffeg sylfaenol STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Dewiswch y set raffeg sylfaenol i'w defnyddio @@ -959,6 +1001,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Dewisiwc STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ffeil llygredig STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth bellach am y set gerddoriaeth sylfaenol +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Methu nôl rhestr o cydraniadau cydnaws STR_ERROR_FULLSCREEN_FAILED :{WHITE}Methodd y modd sgrin llawn # Custom currency window @@ -966,7 +1009,7 @@ STR_ERROR_FULLSCREEN_FAILED :{WHITE}Methodd STR_CURRENCY_WINDOW :{WHITE}Arian cyfaddas STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Cyfradd gyfnewid: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Llehad yr swm o eich arian cyfred am un Punt (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}amlhau yr swm o eich arian cyfred am un Punt (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Amlhau yr swm o eich arian cyfred am un Punt (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}newid y raddfa gyfnewid o eich arian cyfred i un Punt (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Gwahanydd: {ORANGE}{STRING} @@ -1037,6 +1080,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Gwastad Iawn STR_TERRAIN_TYPE_FLAT :Gwastad STR_TERRAIN_TYPE_HILLY :Bryniog STR_TERRAIN_TYPE_MOUNTAINOUS :Mynyddig +STR_TERRAIN_TYPE_ALPINIST :Mynyddwr STR_CITY_APPROVAL_PERMISSIVE :Bodlon STR_CITY_APPROVAL_TOLERANT :Hapus @@ -1044,8 +1088,8 @@ STR_CITY_APPROVAL_HOSTILE :Gwrthwynebus STR_WARNING_NO_SUITABLE_AI :{WHITE}Dim AI addas ar gael...{}Gallwch llawrlwytho sawl AI drwy'r system 'Cynnwys Ar-lein' -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}Ffurfweddu Addasiadau +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Gosodiadau STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Llinyn hidlo: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ehangu oll STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Cywasgu oll @@ -1058,21 +1102,26 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Gosodiad gêm ( STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Gosodiad cwmni (cedwir yn y ffeiliau cadw; yn effeithio ar gemau newydd yn unig) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Gosodiad cwmni (cedwir yn y ffeil gadw; yn effeithio ar y cwmni presennol yn unig) -STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Dangos: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Yn cyfyngu'r rhestr isod gan ddangos gosodiadau sydd wedi newid yn unig -STR_CONFIG_SETTING_RESTRICT_BASIC :Gosodiadau sylfaenol -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gosodiadau uwch -STR_CONFIG_SETTING_RESTRICT_ALL :Gosodiadau arbenigwyr / pob gosodiad +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categori: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Math: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Yn cyfyngu'r rhestr isod drwy hidlau rhagosodedig +STR_CONFIG_SETTING_RESTRICT_BASIC :Sylfaenol (gosodiadau pwysig yn unig) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Uwch (y rhan helaeth o'r gosodiadau) +STR_CONFIG_SETTING_RESTRICT_ALL :Arbennigwyr (gosodiadau arbennigol, gan gynnwys rhai rhyfedd) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Gosodiadau sy'n wahanol i'r rhagosodiad STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Gosodiadau gyda gwerth gwahanol i'ch gosodiadau gêm newydd chi STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Yn cyfyngu'r rhestr isod at mathau gosodiad penodol -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Pob gosodiad +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Pob math o osodiad STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Gosodiadau gwestai (cedwir yn y ffeiliau cadw; yn effeithio ar pob gêm) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Gosodiadau gêm (cedwir yn y ffeiliau cadw, gan effeithio ar gemau newydd yn unig) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Gosodiadau gêm (cedwir yn y ffeil cadw, gan effeithio ar y gêm bresennol yn unig) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Gosodiadau cwmni (cedwir yn y ffeiliau cadw, gan effeithio ar y gemau newydd yn unig) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Gosodiadau cwmni (cedwir yn y ffeiliau cadw, gan effeithio ar gemau newydd yn unig) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Gosodiadau cwmni (cedwir yn y ffeil cadw, gan effeithio ar y cwmni presennol yn unig) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Dangosir holl ganlyniadau chwilio drwy osod{}{SILVER}Categori {BLACK}i {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Dangosir holl ganlyniadau chwilio drwy osod{}{SILVER}Math {BLACK}i {WHITE}Pob math o osodiad +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Dangosir holl ganlyniadau chwilio drwy osod{}{SILVER}Categori {BLACK}at {WHITE}{STRING} {BLACK}a {SILVER}Math {BLACK}i {WHITE}Pob math o osodiad +STR_CONFIG_SETTINGS_NONE :{WHITE}- Dim - STR_CONFIG_SETTING_OFF :I Ffwrdd STR_CONFIG_SETTING_ON :Ymlaen @@ -1110,12 +1159,13 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Rhwystro trenau STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Os y galluogir, ni fydd trenau yn gwrthdroi mewn gorsafoedd nad ydynt yn derfynfeydd, hyd yn oed os oes llwybr byrach i'w cyrchfan drwy wrthdroi STR_CONFIG_SETTING_DISASTERS :Trychinebau: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toglo trychinebau a all rhwystro neu ddinistrio cerbydau neu tanadeiledd -STR_CONFIG_SETTING_CITY_APPROVAL :Agwedd cyngor dinas at ailstrwythuro'r ardal: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Dewis faint y mae sŵn a niewd amgycheddol gan gwmnïau yn effeithio ar eu graddio trefol a gweithredoedd adeiladu pellach yn eu hardal +STR_CONFIG_SETTING_CITY_APPROVAL :Agwedd y cyngor tref at ailstrwythuro'r ardal: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Dewis faint y mae sŵn a niwed amgycheddol gan gwmnïau yn effeithio ar eu graddio trefol a gweithredoedd adeiladu pellach yn eu hardal -STR_CONFIG_SETTING_BUILDONSLOPES :Caniatáu adeiladu a'r lethrau ac arfordiroedd {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Os y galluogir, gellir adeiladu traciau a gorsafoedd ar y rhan helaeth o lethrau. Os yr analluogir, feu caniateir ar lethrau sy'n gweddu at lwybr y trac yn unig (h.y. heb angen eu tanseilio) -STR_CONFIG_SETTING_AUTOSLOPE :Caniatáu tirffurfio o dan adeiladau, traciau, etc. (awtolethru): {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Uchder map uchafsymol: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Gosod yr uchder uchafsymol a ganiateir ar gyfer mynyddoedd ar y map +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Ni allwch osod uchder uchafsymol y map i'r gwerth yma. Mae o leiaf un mynydd ar y map yn uwch +STR_CONFIG_SETTING_AUTOSLOPE :Caniatáu tirffurfio o dan adeiladau, traciau, ayyb.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Caniatáu tirffurfio o dan adeiladau a thraciau heb eu chwalu STR_CONFIG_SETTING_CATCHMENT :Caniatáu ardaloedd dalgylch mwy realistig eu maint: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Defnyddio dalgylchoedd o feintiau gwahanol ar gyfer gwahanol fathau o orsafoedd a meysydd awyr @@ -1139,16 +1189,12 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Rhwystro trenau STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tro 90 gradd yw pan fo trac llorweddol yn cael ei ddilyn yn syth gan drac fertigol at y teil cyfagos, gan wneud i'r trên droi 90 gradd wrth groesi ochr y teil yn hytrach na'r 45 gradd sydd i'w gael gyda chyfuniadau trac eraill. Mae hyn hefyd yn effeithio ar gylch troi llongau STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Caniatáu cyfuno gorsafoedd nad ydynt yn union gyfochrog: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Caniatáu ychwanegu rhannau at orsaf heb gyffwrdd yn uniongyrchol a'r rhai sydd eisioes yn bodoli. -STR_CONFIG_SETTING_IMPROVEDLOAD :Defnyddio'r algorithm llwytho gwell: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Os y galluogir, caiff amryw gerbydau sy'n aros mewn gorsaf eu llwytho fesul un. Ni ddechreuir llwytho'r ail gerbyd nes y bydd digon o nwyddau i lenwi'r cerbyd gyntaf yn llwyr -STR_CONFIG_SETTING_GRADUAL_LOADING :Llwytho cerbydau'n raddol: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Llwytho cerbydau'n raddol gan ddefnyddio ystodau cerbyd-benodol, yn hytrach na llwytho pob dim ar unwaith gydag amser penodedig yn dibynnu ar faint y llwyth yn unig STR_CONFIG_SETTING_INFLATION :Chwyddiant: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Galluogi chwyddiant yn yr economi, lle y bydd costau'n codi ychydig yn gyflymach na thaliadau -STR_CONFIG_SETTING_SELECTGOODS :Danfon llwyth i orsaf dim ond pan fo galw amdano: {STRING} -STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dim ond danfon llwyth i orsaf lle y bu cais gan cerbyd i'w lwytho. Mae hyn yn osgoi creu graddfa cludiant gwael ar gyfer llwythi nas gwasanaethir mewn gorsaf STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Hyd pont uchafsymol: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Hyd uchafsymol ar gyfer adeiladu pontydd +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Uchder pontydd uchafsymol: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Uchder uchafsymol ar gyfer adeiladu pontydd STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Hyd twnel uchafsymol: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Hyd uchafsymol ar gyfer adeiladu twneli STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Prif ddull adeiladu diwydiannau cynradd: {STRING} @@ -1167,15 +1213,13 @@ STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Ar yr ochr gyrr STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Ar y dde STR_CONFIG_SETTING_SHOWFINANCES :Dangos y ffenestr gyllid ar ddechrau'r flwyddyn: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Os y galluogir, bydd y ffenestr gyllid yn agor ar ddiwedd y flwyddyn i hwyluso archwilio sefyllfa ariannol y cwmni -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Gosodir gorchmynion newydd yn 'ddi-stop' fel rhagosodiad: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Gorchmynion newydd yn 'ddi-stop' fel rhagosodiad: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Fel rheol, bydd cerbyd yn aros wrth pob gorsaf yr aiff drwyddo. Bydd y gosodiad yma yn peri i'r cerbyd yrru'n syth drwy pob gorsaf ar ei ffordd at ei gyrchfan olaf heb aros. Sylwer fod y gosodiad yma'n diffinio rhagosodiad ar gyfer gorchmynion newydd. Gellir newid gorchmynion penodol at unrhyw ddull a fynnir STR_CONFIG_SETTING_STOP_LOCATION :Gorchmynion trenau newydd yn nodi aros ar y {STRING} o'r platfform fel rhagosodiad STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Y man lle y daw trên at aros wrth blatfform fel rheol. Mae'r 'ochr agos' yn cyfeirio at y pen lle mae'r trên yn myned, 'canol' at ganol y platfform, ac 'ochr bell' yn bell o'r mynedfa. Sylwer fod y gosodiad yma'n diffinio rhagosodiad ar gyfer gorchmynion newydd. Gellir newid gorchmynion penodol at unrhyw ddull a fynnir STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ochr agos STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :canol STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ochr bell -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ciwio cerbydau ffordd (gyda effeithiau cwantwm): {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Gorfodi i gerbydau ffordd aros o flaen arosfannau llawn nes eu bod yn glir STR_CONFIG_SETTING_AUTOSCROLL :Tremio'r ffenestr pan fydd y llygoden ar ymyl y sgrin: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Pan y galluogir, bydd ffenestri golwg yn dechrau sgrolio pan fo'r llygoden yn agos at ochr y ffenest STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Analluogwyd @@ -1206,10 +1250,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Caniatáu arosf STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Caniatáu adeiladu arosfannau gyrru-trwodd ar ffyrdd sy'n eiddo i drefi STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Caniatáu arosfannau gyrru-trwodd ar ffyrdd sy'n eiddo i gystadleuwyr: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Caniatáu adeiladu arosfannau gyrru-trwodd ar ffyrth sy'n eiddo i gwmnïau eraill -STR_CONFIG_SETTING_ADJACENT_STATIONS :Caniatáu adeiladu gorsafoedd cyfochrog: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Caniatáu i orsafoedd gwahanol gyffwrdd eu gilydd -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Galluogi defnyddio mwy nag un o setiau injian NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Dewis cydweddu ar gyfer hen NewGRFau. Peidiwch ac analluogi, oni bai eich bod yn gwybod yn union yr hyn yr ydych yn ei wneud! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Nid yw'n bosib newid y gosodiad yma pan fo cerbydau'n bodoli STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cynnal a chadw tanadeiledd: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Pan fo wedi'i alluogi, mae tanadeiledd yn creu costau cynnal a chadw. Mae'r cost yn codi'n gyflymach na'i gyfradd gyda thŵf y rhwydwaith, gan effeithio'n fwy ar gwmniau mawr na rhai bychan @@ -1230,7 +1270,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nid yw cerbydau STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pan fo wedi'i alluogi, bydd bob math o gerbyd yn aros ar gael am byth wedi eu cyflwyniad gyntaf STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Awtoadnewyddu cerbyd pan aiff yn hen: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Pan fo wedi'i alluogi, bydd cerbyd sy'n agos at ddiwedd ei oes yn cael ei ddisodli'n ddiofyn pan y caiff yr amodau adnewyddu eu cyflawni -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Awtoadnewyddu pan fo'r cerbyd {STRING} ei oed uchafsymol +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Awtoadnewyddu pan fo cerbyd {STRING} ei oed uchafsymol STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Oed cymharol pan y dylid ystyried awtoadnewyddu cerbyd STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mis cyn STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mis wedi @@ -1240,35 +1280,49 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Ystod neges gwa STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Amser i ddangos negeseuon gwall mewn ffenestr coch. Sylwer ni gaiff rhai negeseuon gwall (difrifol) eu cau'n ddiofyn STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} eiliad STR_CONFIG_SETTING_HOVER_DELAY :Dangos cynghorion: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oediad cyn y dangosir cynghorion wrth ddal y cyrchydd dros rhyw elfen rhyngwyneb. Fel arall gellir rhwymo cynghorion at botwm dde'r llygoden -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Oedi am {COMMA} eiliad +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oediad cyn y dangosir cynghorion wrth ddal y cyrchydd dros rhyw elfen rhyngwyneb. Fel arall rhwymir cynghorion at botwm dde'r llygoden pan fo'r gwerth yma'n 0. +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Oedi am {COMMA} milfed o eiliad STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :De glicio STR_CONFIG_SETTING_POPULATION_IN_LABEL :Dangos poblogaeth tref yn label y dref: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Dangos poblogaeth trefi yn eu label ar y map STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Trwch llinellau graff: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Lled y linell mewn graffiau. Bydd llinell fain yn fwy manwl, tra y bydd llinell trwchus yn haws i'w weld gyda lliwiau'n fwy amlwg +STR_CONFIG_SETTING_LANDSCAPE :Tirwedd: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Mae tirweddau'n diffinio senario sylfaenol gydag amryw fathau o gargo ac anghenion twf trefi. Mae NewGRF a Sgriptiau Gêm yn cynnig rheolaeth mannach, fodd bynnag STR_CONFIG_SETTING_LAND_GENERATOR :Cynhyrchydd Tir: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Mae'r crewr gwreiddiol yn ddibynol ar y set graffeg sylfaenol, ac yn creu siapiau tirwedd gosodedig. Mae TerraGenesis yn seiliedig ar generadur said Perlin, gyda gosodiadau manylach STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Gwreiddiol STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Pellter uchafsymol o'r ochr ar gyfer Purfeydd Olew: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :Math tirwedd: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis yn unig) Llyfnder y tirwedd +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Dwysedd diwydiant: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Gosod faint o ddiwydiannau y dylid eu creu a pha lefel caiff eu cynnal drwy'r gêm +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Pellter uchafsymol o'r ochr ar gyfer Purfeydd olew: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Codir purfeydd olew ger ymylon y map yn unig, h.y. ar yr arfordir mewn mapiau ynys STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Uchder Llinell Eira: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garwder y tirwedd (TerraGenesis yn unig) : {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Rheoli'r uchder y mae eira'n ymddangos mewn tirwedd is-arctig. Mae eira hefyd yn effeitiho ar gynhyrchu diwydiannau a gofynion twf trefi +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garwder y tirwedd: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis yn unig) Dewis amlder bryniau: Mae gan tirwedd llyfn nifer isel o fryniau bylchedig. Mae gan dirwedd garw llawer o fryniau, a all edrych yn undonog STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Llyfn Iawn STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Llyfn STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garw STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Garw Iawn +STR_CONFIG_SETTING_VARIETY :Dosraniad amrywiaeth: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis yn unig) Rheoli a yw'r map yn cynnwys ardaloedd mynyddig a gwastad. Gan fod hyn yn gwneud y map yn fwy gwastad, dylid addasu gosodiadau eraill at mynyddig +STR_CONFIG_SETTING_RIVER_AMOUNT :Nifer afonydd: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Dewis sawl afon i'w creu STR_CONFIG_SETTING_TREE_PLACER :Algorithm gosod coed: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Dewis dosraniad coed ar y map: mae 'Gwreiddiol' yn plannu coed mewn dosraniad unffurf, a 'Gwell' yn eu plannu mewn grwpiau STR_CONFIG_SETTING_TREE_PLACER_NONE :Dim STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Gwreiddiol STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Gwell +STR_CONFIG_SETTING_ROAD_SIDE :Cerbydau ffordd: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Dewis yr ochr gyrru STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Tro Map Uchder: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Gwrthglocwedd STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clocwedd STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Y lefel map uchder mae map senario fflat yn ei dderbyn: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Galluogi tirffurfio'r teiliau ar ymylon y map: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Os analluogir, cefnfor fydd ar ymylon y map bob tro STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Nid yw un neu fwy o'r teiliau ar ymyl gogleddol y map yn wag STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Nid yw un neu fwy o'r teiliau ar un o'r ymylon yn ddŵr @@ -1283,13 +1337,13 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Lliw y tirwedd STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Gwyrdd STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Gwyrdd tywyll STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fioled -STR_CONFIG_SETTING_REVERSE_SCROLLING :gwrthdroi'r cyfeiriad sgrolio: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING :Gwrthdroi'r cyfeiriad sgrolio: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ymddygiad pan yn sgrolio gyda botwm dde y llygoden. Pan yr analluogir, bydd y llygoden yn symyd y camera. Pan y galluogir, bydd y llygoden yn symyd y map STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgrolio prif ffenestr llyfn: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Rheoli syt y mae'r prif olygfa'n sgrolio at leoliad penodol pan yn clicio ar y map bychan neu yn rhoi gorchymyn i sgrolio at wrthrych penodol STR_CONFIG_SETTING_MEASURE_TOOLTIP :Dangos cymorth mesur wrth ddefnyddio'r offer adeiladu amrywiol: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Dangos pellterau teil a gwahaniaethau uchder wrth lusgo tra'n adeiladu -STR_CONFIG_SETTING_LIVERIES :Dangos lifrau cwmnïau: {STRING} +STR_CONFIG_SETTING_LIVERIES :Defnyddio lifrau cerbyd-benodol: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Rheoli defnydd o lifrau cerbyd-benodol ar gyfer cerbydau (yn hytrach na lliwiau'r cwmni) STR_CONFIG_SETTING_LIVERIES_NONE :Dim STR_CONFIG_SETTING_LIVERIES_OWN :Eich Cwmni @@ -1319,17 +1373,15 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :I ffwrdd STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sgrolio Clic-chwith: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Galluogi sgrolio ar y map drwy ei lusgo gyda botwm chwith y llygoden. Mae hyn yn arbennig o ddefnyddiol pan yn defnyddio sgrin-gyffwrdd ar gyfer sgrolio +STR_CONFIG_SETTING_AUTOSAVE :Awtogadw: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Dewis pa mor aml y dylid awtogadw gemau + STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Defnyddio'r fformat dyddiad {STRING} ar gyfer enwau gemau wedi'u cadw STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Fformat y dyddiad mewn enwau ffeiliau cadw STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :hir (31ain Rhag 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :byr(31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Palet rhagosodedig ar gyfer NewGRFau nad yw'n dynodi un: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Palet rhagosodedig i'w ddefnyddio ar gyfer NewGRFau nad ydynt yn dynodi'r un y maent eu hangen -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Palet DOS -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Palet Windows - STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Oedi'n awtomatig wrth gychwyn gêm newydd: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Pan y galluogir, bydd yn gêm yn oedi ar ddechrau gêm newydd, er mwyn astudio'r map STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Tra fo wedi'i oedi, caniatáu: {STRING} @@ -1338,7 +1390,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Dim gweithredoe STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Pob gweithred ac eithro adeiladu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Pob gweithred ac eithro addasu tirwedd STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Pob gweithred -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Defnyddio'r rhestr cerbydau uwch {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Defnyddio grwpiau yn y rhestr cerbydau: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Galluogi defnydd o'r rhestrau cerbyd uwch ar gyfer grwpio cerbydau STR_CONFIG_SETTING_LOADING_INDICATORS :Dangos llwytho: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Dewis a fydd dangosyddion llwytho'n cael eu dangos uwch cerbydau sy'n llwytho neu dadlwytho @@ -1353,7 +1405,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Math o gledrau STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Y cyntaf sydd ar gael STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Yr olaf sydd ar gael STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Defnydd mwyaf -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Dangos traciau wedi'u cadw: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Dangos llwybrau traciau wedi'u cadw: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Rhoi lliw gwahanol ar gledrau lliw gwahanol i gynorthwyo datrys problemau gyda threnau sy'n gwrthod myned blociau llwybro STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Cadw'r offer adeiladu yn weithredol wedi ei ddefnydd: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Cadw'r offer adeiladu pontydd, twneli, a.y.y.b. ar agor wedi eu defnydd @@ -1379,13 +1431,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Chwarae synau c STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Analluogi adeiladu tanadeiledd pan nad oes cerbydau addas ar gael: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Pan y galluogir, nid yw tanadeiledd ar gael nes fod cerbydau ar gael iddo, gan osgoi gwastraff arian ac amser ar danadeiledd na ellir ei ddefnyddio -STR_CONFIG_SETTING_MAX_TRAINS :Uchafswm nifer trenau cwmni: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Uchafswm nifer y trenau i bob cwmni: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Nifer uchafsymol y trenau y gall cwmni fod yn berchen arnynt -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Uchafswm cerbydau ffordd cwmni: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Uchafswm nifer y cerbydau ffordd i bob cwmni: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Nifer uchafsymol y cerbydau ffordd y gall cwmni fod yn berchen arnynt -STR_CONFIG_SETTING_MAX_AIRCRAFT :Uchafswm awyrennau cwmni: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT :Uchafswm nifer yr awyrennau i bob cwmni: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Nifer uchafsymol yr awyrennau y gall cwmni fod yn berchen arnynt -STR_CONFIG_SETTING_MAX_SHIPS :Uchafswm llongau cwmni: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS :Uchafswm nifer y llongau i bob cwmni: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Nifer uchafsymol y llongau y gall cwmni fod yn berchen arnynt STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Analluogi trenau ar gyfer y cyfrifiadur: {STRING} @@ -1412,7 +1464,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Dangos y cyfnod STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Dewis os y bydd gwasanaethu cerbydau'n digwydd yn ôl yr amser ers y gwasanaeth olaf, neu wrth i'w dibynadwyedd ddisgyn islaw ganran penodol o'r dibynadwyedd uchafsymol STR_CONFIG_SETTING_SERVINT_TRAINS :Ystod gwasanaethu rhagosodedig ar gyfer trenau: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer cerbydau rheilffordd newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} diwrnod/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}diwrnod/% STR_CONFIG_SETTING_SERVINT_DISABLED :Analluogwyd STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Ystod gwasanethu rhagosodedig ar gyfer cerbydau ffordd: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer cerbydau ffordd newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd @@ -1451,7 +1503,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE :Cyngor / gwybod STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Dangos negeseuon am gerbydau sydd angen sylw STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Cerbydau Newydd: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Dangos papur newydd pan fo math newydd o gerbyd ar gael -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Newidiadau i'r llwythi sy'n cael eu derbyn: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Newidiadau i'r llwythi a dderbynir: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Dangos negeseuon am orsafoedd yn newid y nwyddau y maent yn derbyn STR_CONFIG_SETTING_NEWS_SUBSIDIES :Cymorthdaliadau: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Dangos papur newydd am ddigwyddiadau ynghylch cymorthdaliadau @@ -1479,7 +1531,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Gosod ymddygiad STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Adeiladu semafforau cyn: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Gosod y flwyddyn pan y defnyddir signalau trydan ar draciau. Cyn y flwyddyn hon, fe ddefnyddir signalau semaffor (sydd â gweithred unfath, ond edrychiad gwahanol) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Galluogi'r GUI signalau: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Dangos ffenestr ar gyfer dewis y math o signalau i ddewis, yn hytrach na chylchu drwy mathau signal wrth Ctrl+clicio heb ffenest pan yn adeiladu signalau +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Dangos ffenestr ar gyfer dewis y math o signalau i ddewis, yn hytrach na chylchu drwy mathau signal heb ffenest wrth Ctrl+clicio ar signalau eisoes wedi'u hadeiladu STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Y math o signal i'w adeiladu fel rhagosodiad: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Signal rhagosodedig i'w ddefnyddio STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Signalau Bloc @@ -1503,7 +1555,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Caniatáu i dre STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Caniatáu i drefi adeiladau croesfannau rheilffordd: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Galluogwch y gosodiad yma i ganiatáu i drefi adeiladu croesfannau rheilffordd STR_CONFIG_SETTING_NOISE_LEVEL :Caniatáu i drefi reoli lefel swn meysydd awyrenau: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Os analluogir y gosodiad yma, gellir cael dwy faes awyr ymhob tref. Os y galluogir, fe gyfyngir y nifer o feysydd awyr gan dderbyniath sŵn y dref, sydd yn dibynnu ar y boblogaeth, ynghŷd â maint a phellter maes awyr +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Os analluogir y gosodiad yma, gellir cael dau faes awyr ymhob tref. Os y galluogir, fe gyfyngir y nifer o feysydd awyr gan y lefel sŵn mae'r dref am dderbyn, sydd yn dibynnu ar y boblogaeth a maint a phellter y maes awyr STR_CONFIG_SETTING_TOWN_FOUNDING :Sefydlu trefi mewn gêm: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Mae galluogi'r gosodiad yma'n caniatáu i chwaraewyr sefydlu trefi newydd yn y gêm STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Gwahardd @@ -1551,35 +1603,90 @@ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 mewn {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Dim STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Lluosydd cychwynol maint dinas: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Maint cymhedrol dinasoedd o gymharu â threfi arferol ar ddechrau'r gêm -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Dileu ffyrdd disynnwyr wrth adeiladu ffyrdd: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Tynnu pytiau ffyrdd diddefnydd yn ystod ailadeiladu ffyrdd noddedig - - - - - - - -STR_CONFIG_SETTING_GUI :{ORANGE}Rhyngwyneb -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Adeiladu +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Diweddaru'r graff dosraniad bob {STRING}{NBSP}diwrnod +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Amser rhwng pob ailgifrifiad o'r graff cyswllt. Bydd pob ailgyfrifiad yn cyfrifio'r cynllun ar gyfer un cydran o'r graff. O ganlyn ni fydd dwis gwerth o X yn golygu y bydd y graff cyfan yn cael ei ddiweddaru bob X diwrnod, ond y bydd rhai cydrannau. Bydd ystod byr yn defnyddio mwy o amser y prosesydd yn ailgyfrio graffiau. Bydd ystor hir yn cynyddu'r amser cyn y daw'r dosraniad i ryn ar lwybrau newydd. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Cymryd {STRING}{NBSP}diwrnod ar gyfer ar gyfer ailgyfrifo graff dosraniad +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Yr amser ar gyfer ailgyfrifo pob cydran o raff cyswllt. Pan y dechreuir ailgyfrifo, fe grëir llinyn gwaith a gaiff redeg am nifer penodol o ddiwrnodau. Bydd gosodiad byr yn ei gwneud yn fwy tebygol na fydd y llinyn wedi gorffen mewn pryd. Yna bydd y gêm yn oedi new y bydd yn barod. Bydd gosodiad hir yn cynyddu'r amser y cymerir i'r dosranaid gael ei ddiweddaru pan fo llwybrau'n newid. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :â llaw +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :anghymesur +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :cymesur +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Dull dosrannu ar gyfer teithwyr: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o deithwyr yn mynd o orsaf A i orsaf B ac yr aiff o B i A. Mae "anghymesur" yn golygu y gall niferoedd mympwyol fynd yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer teithwyr. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Dull dosrannu ar gyfer post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o bost yn cael ei yrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer post. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Dull dosrannu ar gyfer llwythi ARFOG: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Mae llwythi ARFOG yn cynnwys trysorau mewn ardaloedd tymherus, diemwntau yn y trofannau, ac aur yn yr is-arctig. Gall NewGRFau newid hyn, Mae "cymesur" yn golygu y bydd tua'r un faint o lwythi'n cael eu gyrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi yma. Fe argymhellir eich bod yn dewis anghymesur neu â llaw pan yn chwarae mewn ardal is-arctig, gan na fydd banciau'n gyrru aur yn ôl i gloddfeydd aur. Ar gyfer ardaloedd tymherus neu trofannol gallwch hefyd ddewis cymesur gan y bydd banciau'n gyrru trysorau'n ôl i rai banciau tardd. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Dull dosrannu ar gyfer llwythi eraill: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi hyn. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Manylder dosrannu: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mae'r gosodiad yma'n pennu faint o amser prosesydd y bydd cyfrifo'r graff cyswllt yn ei gymeryd. Os yw'n cymryd gormod o amser efallai bydd peth oedi ar y gêm. Os ydych yn gosod gwerth isel, fodd bynnag, ni fyddy dosraniad yn fanwl gywir, a gallwch nodi nad yw llwythi'n cael ei yrru i'r mannau y bydddech y disgwyl. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Effaith pellter ar y galw am lwythi: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Os ydych yn gosod at werth yn uwch na 0, bydd y pellter rhwng gorsaf tardd rhyw gargo a cyrchfan posibl B yn dylanwadu ar faint o llwythi a yrrir o A i B. Y pellaf y mae B o A, y lleiaf o gargo a yrrir. Gyda gosodiad uwch, bydd llai o gargo yn cael ei yrru i orsafoedd pell a mwy'n cael ei yrru at orsafoedd agos. +STR_CONFIG_SETTING_DEMAND_SIZE :Cyfanswm y llwythi'n dychwelyd ar gyfer modd cymesur: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Bydd gosod hwn at llai na 100% yn gwneud y dosraniad cymesur yn fwy fel yr un anghymesur. Caiff llai o llwythi eu gyrru'n ôl yn orfodol os y bydd peth penodol yn cael ei yrru i orsaf. Gyda gosodiad o 0% bydd y dosraniad cymesur yn ymddwyn fel yr un anghymesur. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Llenwi llwybrau byr cyn troi at rhai uwch eu cynhwysedd: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Yn aml mae mwy nag un llwybr rhwng dwy orsaf. Bydd Cargodist yn llenwi'r llwybr byrraf yn gyntaf, yna'n symyd at yr ail fyrraf nes ei fod yn llawn, ayyb. Fe ystyrir llwybr yn llawn yn ôl amcangyfrif o gynhwysedd y llwybr a'r defnydd a gynllunwyd. Gyda fod pob llwybr wedi ei lenwi, os oes galw o hyd, bydd yn gorlwytho pob llwybr, gan ffafrio'r rhai gyda chynhwysedd uchel. Ni fydd yr algorithm yn amcangyfrif y cynhwysedd yn fanwl gywir. Mae'r gosodiad yma'n eich galluogi i nodi pa mor llawn y dylai llwybr byrrach fod (fel canran) cyn dewis y llwybr nesaf. Gosodwch at llai na 100% i osgoi tagfeydd mewn gorsafoedd oherwydd goramcangyfrif cynhwysedd. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unedau cyflymder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Pan y dangosir cyflymder yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrig (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unedau pŵer cerbyd: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Pan y dangosir pŵer yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrig (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unedau pwysau: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Pan y dangosir pwysau yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t/tunnell byr) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrig (t/tunell) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unedau cyfaint: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Pan y dangosir cyfaint yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrig (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unedau grym tynnu: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Pan y dangosir grym tynnu yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrig (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unedau uchder: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Pan y dangosir uchder yn y rhyngwyneb defnyddiwr, ei ddangos yn yr unedau a ddewiswyd +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrig (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Unedau Lleol +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graffeg +STR_CONFIG_SETTING_SOUND :{ORANGE}Sain +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Rhyngwyneb +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Cyffredinol +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Ffenestri Golygfa +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Adeiladu +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Newyddion a Chyngor +STR_CONFIG_SETTING_COMPANY :{ORANGE}Cwmni +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cyfrifo STR_CONFIG_SETTING_VEHICLES :{ORANGE}Cerbydau -STR_CONFIG_SETTING_STATIONS :{ORANGE}Gorsafoedd -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economi +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Ffiseg +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Llwybro +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Cyfyngiadau +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Trychinebau a Damweiniau +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Cread byd +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Amgylchedd +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Awdurdodau +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Trefi +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Diwydiannau +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dosraniad cargo STR_CONFIG_SETTING_AI :{ORANGE}Cystadleuwyr -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Dewisiadau dangos -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Rhyngweithio -STR_CONFIG_SETTING_SOUND :{ORANGE}Effeithiau sŵn -STR_CONFIG_SETTING_NEWS :{ORANGE}Newyddion a negeseuon -STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signalau -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Trin llwyth STR_CONFIG_SETTING_AI_NPC :{ORANGE}Chwaraewyr Cyfrifiadurol -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Awtoadnewyddu -STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Wrthi'n gwasanaethu -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Llwybro -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenau -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Trefi -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Diwydiannau STR_CONFIG_SETTING_PATHFINDER_OPF :Gwreiddiol STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1628,7 +1735,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Amlchwar STR_INTRO_GAME_OPTIONS :{BLACK}Dewisiadau Gêm STR_INTRO_HIGHSCORE :{BLACK}Tabl Sgôr Uchaf -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ffurfweddu Addasiadau +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Gosodiadau STR_INTRO_NEWGRF_SETTINGS :{BLACK}Gosodiadau NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Gwirio Cynnwys Ar-lein STR_INTRO_SCRIPT_SETTINGS :{BLACK}Gosodiadau AI / Sgript Gêm @@ -1648,7 +1755,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Dewis ti STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Dangos dewisiadau'r gêm STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Dangos y tabl sgôr uchaf -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Ffurfweddu'r Addasiadau +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Gosodiadau arddangos STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Dangos gosodiadau NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Gwirio am gynnwys newydd neu wedi'i ddiweddaru i'w lwytho i lawr STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Dangos gosodiadau AI a sgript Gêm @@ -1688,9 +1795,11 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Chwarae STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tarw Dur Hud (chwalu diwydiannau, gwrthrychau nad oes modd eu chwalu): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Caiff twneli groesi eu gilydd: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Ni fydd awyrennau jet yn crashio (yn aml) ar feysydd awyr bychain: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Golygu uchder uchafsymol y map: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Golygu uchder uchafsymol mynyddoedd ar y map STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Tirwedd Tymherus STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Tirwedd Is-arctig -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tirwedd Is-drofannol +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tirwedd trofannol STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Tirwedd Teganau STR_CHEAT_CHANGE_DATE :{LTBLUE}Newid dyddiad: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Newid y flwyddyn bresennol @@ -1736,6 +1845,7 @@ STR_LIVERY_FREIGHT_TRAM :Tram Nwyddau STR_FACE_CAPTION :{WHITE}Dewiswch Wyneb STR_FACE_CANCEL_TOOLTIP :{BLACK}Diddymu dewis wyneb STR_FACE_OK_TOOLTIP :{BLACK}Derbyn y dewis newydd o wyneb +STR_FACE_RANDOM :{BLACK}Ar hap STR_FACE_MALE_BUTTON :{BLACK}Gwrywaidd STR_FACE_MALE_TOOLTIP :{BLACK}Dewis gwyneb gwrywaidd @@ -1762,7 +1872,7 @@ STR_FACE_EUROPEAN :{BLACK}Ewropeia STR_FACE_SELECT_EUROPEAN :{BLACK}Dewis gwyneb Ewropeaidd STR_FACE_AFRICAN :{BLACK}Affricanaidd STR_FACE_SELECT_AFRICAN :{BLACK}Dewis gwyneb Affricanaidd -STR_FACE_YES :Iawn +STR_FACE_YES :Ie STR_FACE_NO :Na STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Galluogi mwstásh neu glustdlws STR_FACE_HAIR :Gwallt: @@ -1856,13 +1966,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Diogelwc STR_NETWORK_START_SERVER_UNADVERTISED :Na STR_NETWORK_START_SERVER_ADVERTISED :Ia STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} gwestai -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Uchafswm gwesteion: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Uchafswm nifer gwesteion: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Dewiswch uchafswm y gwesteion. Does dim rhaid llanw pob slot STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} cwmni -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Uchafswm cwmnïau: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Uchafswm nifer cwmnïau: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}rhoi cyfyngiad penodol ar sawl cwmni mae'r gweinydd yn ei ganiatáu STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} gwyliwr -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Uchafswm gwylwyr: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Uchafswm nifer gwylwyr: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}rhoi cyfyngiad penodol ar sawl gwyliwr mae'r gweinydd yn ei ganiatáu STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Iaith i'w siarad: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Rhoi gwybod i'r chwaraewyr pa iaith y dylid ei siarad ar y gweinydd @@ -1975,6 +2085,7 @@ STR_NETWORK_CLIENT :Gwestai STR_NETWORK_SPECTATORS :Gwylwyr STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Nodwch faint o arian yr hoffech chi ei roi +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Gwyliwr # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Peidio cadw'r cyfrinair a roddwyd @@ -2210,7 +2321,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Adeiladu STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toglu adeiladu/tynnu ar gyfer traciau, signalau, a pwyntiau llwybro. Wrth ddal Ctrl, caiff cledrau pwyntiau llwybro a gorsafoedd eu tynnu hefyd STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Trosi/Diweddaru math y rheilffordd. Mae Shift yn toglo adeiladu/amcangyfrif y gost -STR_RAIL_NAME_RAILROAD :rheilffordd +STR_RAIL_NAME_RAILROAD :Rheilffordd STR_RAIL_NAME_ELRAIL :rheilffordd drydan STR_RAIL_NAME_MONORAIL :monoreilffordd STR_RAIL_NAME_MAGLEV :maglef @@ -2476,9 +2587,10 @@ STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Dosbarth STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Enw'r maes awyr: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Enw teil maes awyr: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Llwythi sy'n cael eu derbyn: {LTBLUE} +STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Llwythi a dderbynir: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Terfyn cyflymder rheilffordd: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Terfyn cyflymder ffordd: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Creigiau @@ -2515,7 +2627,7 @@ STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depo trên {STR STR_LAI_ROAD_DESCRIPTION_ROAD :Ffordd STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Ffordd gyda goleuadau stryd -STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Ffordd gyda coed wedi'i plannu +STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Ffordd gyda coed wedi'u plannu STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Depo cerbyd ffordd STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Croesfan wastad ffordd/rheilffordd STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramffordd @@ -2569,13 +2681,13 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Traphont STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Darlledydd STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Goleudy STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Pencadlys Cwmni -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir mae cwmni berchen +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir cwmni # About OpenTTD window 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-2013 Y tîm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2015 Y tîm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm @@ -2594,6 +2706,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Cadw STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Cadw'r gêm hwn gan ddefnyddio'r enw sydd wedi'i dewis STR_SAVELOAD_LOAD_BUTTON :{BLACK}Llwytho STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Llwytho'r gêm a ddewiswyd +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Llwytho'r map uchder a ddewiswyd STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Manylion Gêm STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Dim gwybodaeth ar gael STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2609,13 +2722,12 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nifer trefi: STR_MAPGEN_DATE :{BLACK}Dyddiad: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nifer diwydiannau: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Uchder map uchafsymol: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Cynyddu uchder uchafsymol mynyddoedd ar y map un uned +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Lleihau uchder uchafsymol mynyddoedd ar y map un uned STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Uchder Llinell Eira: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Symud y llinell eira un yn uwch STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Symud y llinell eira un yn is -STR_MAPGEN_RANDOM_SEED :{BLACK}Hedyn Hap -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Cliciwch i fewnbynnu hedyn hap -STR_MAPGEN_RANDOM :{BLACK}Ar hap -STR_MAPGEN_RANDOM_HELP :{BLACK}Newid yr hedyn hap syn cael ei ddefnyddio ar gyfer Cynhyrchu Tirwedd STR_MAPGEN_LAND_GENERATOR :{BLACK}Cynhyrchydd Tir: STR_MAPGEN_TREE_PLACER :{BLACK}Algorithm Coed: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Math Tirwedd: @@ -2642,7 +2754,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Enw'r Ma STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Maint: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Rhowch hedyn hap +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Newid uchder uchafsymol y map STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Newid uchder Llinell Eira STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Newid y flwyddyn gychwyn @@ -2697,6 +2809,8 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Symud i STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Symud y ffeil NewGRF sydd wedi'i ddewis i fyny'r rhestr STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Symud i Lawr STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Symud y ffeil NewGRF sydd wedi'i ddewis i lawr y rhestr +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Uwchraddio +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Uwchraddio ffeiliau NewGRF lle fo gennych fersiwn diweddarach wedi ei lwytho STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Rhestr o bob ffeil NewGRF sydd wedi'u gosod STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Gosod paramedrau @@ -2721,6 +2835,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ni ddargan STR_NEWGRF_SETTINGS_DISABLED :{RED}Analluogwyd STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Anghydnaws gyda'r fersiwn yma o OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Cadw rhagosodiad +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Rhestr o ragosodiadau ar gael, Dewiswch un i'w gopïo i'r enw cadw isod +STR_SAVE_PRESET_TITLE :{BLACK}Rhowch enw ar gyfer y rhagosodiad +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Enw a ddewiswyd ar gyfer cadw'r rhagosodiad +STR_SAVE_PRESET_CANCEL :{BLACK}Canslo +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Peidio newid y rhagosodiad +STR_SAVE_PRESET_SAVE :{BLACK}Cadw +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Cadw'r rhagosodiad i'r enw a ddewiswyd + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Newid paramedrau NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Cau @@ -2744,14 +2868,13 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramedr # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinio corlun {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Corlun nesaf -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin nesaf, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio ar y diwedd +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin nesaf, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun olaf i'r gyntaf STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mynd i gorlun STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Mynd i'r corlun a ddynodir. Os nad yw'r corlun yn gorlun cyffredin, mynd i'r corlun gyffredin nesaf STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Corlun blaenorol -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin blaenorol, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio ar y diwedd +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin blaenorol, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun cyntaf i'r olaf STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Cynrychioliad o'r corlun a ddewiswyd. Fe anwybyddir yr aliniad wrth lunio'r corlun STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Symud y corlun, gan newid yr atredau X ac Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Atred X: {NUM}, Atred Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Dewis corlun STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Dewis corlun o ynrhyw fan ar y sgrïn @@ -2808,6 +2931,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Ffeiliau c STR_NEWGRF_BROKEN :{WHITE}Mae ymddygiad NewGRF '{0:STRING}' yn debygol o beri dadsyncroneiddio a/neu chwalfa STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Fe newidiodd stâd wagen-bŵer '{1:ENGINE}' pan nad oedd mewn depo STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Wedi newid hyd cerbyd i '{1:ENGINE}' pan na fyddai mewn depo. +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Fe newidiodd cynhwysedd cerbyd '{1:ENGINE}' pan nad oedd mewn depo neu'n ail-ffitio STR_BROKEN_VEHICLE_LENGTH :{WHITE}Mae gan y trên' {VEHICLE}' sy'n eiddo i '{COMPANY}' hyd annilys. Mwy na thebyg fe'u hachoswyd gan NewGRFau. Gall y gêm ddadsyncroneiddio neu chwalu. STR_NEWGRF_BUGGY :{WHITE}Mae NewGRF '{0:STRING}' yn darparu gwybodaeth anghywir @@ -2822,6 +2946,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} o STR_NEWGRF_INVALID_INDUSTRYTYPE : +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Yn sganio NewGRFau STR_NEWGRF_SCAN_MESSAGE :{BLACK}Yn sganio NewGRFau. Gall gymeryd peth amser yn ddibynnol ar eu nifer... @@ -2859,8 +2986,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} wedi ei dderbyn STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (angen o hyd) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (wedi ei dderbyn) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Tref yn tyfu bob {ORANGE}{COMMA}{BLACK} diwrnod -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Tref yn tyfu bob {ORANGE}{COMMA}{BLACK} diwrnod (wedi ei ariannu) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Tref yn tyfu bob {ORANGE}{COMMA}{BLACK}{NBSP}diwrnod +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Tref yn tyfu bob {ORANGE}{COMMA}{BLACK}{NBSP}diwrnod (wedi ei ariannu) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}{RED}Nid{BLACK} yw'r tref yn tyfu STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Uchafswm swn mewn trefi: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r prif olygfa ar y dref. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y dref @@ -2897,19 +3024,22 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Dechrau STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Dechrau ymgyrch hysbyseb gymhedrol yn yr ardal, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd.{} Côst: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Dechrau ymgyrch hysbyseb fawr yn yr adral, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd .{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW} Ariannu gwaith ffordd ar y rhwydwaith ffyrdd trefol. Bydd yn amharu'n fawr ar drafnidiaeth y dref am hyd at 6 mis .{} Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} Adeiladu a statue in honour o your company.{} Côst: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} Adeiladu cerflun er clod eich cwmni.{} Côst: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW} Ariannu adeiladu adeiladau masnachol newydd yn y dref.{} Côst: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Prynu'r hawl i fod yr unig gyflenwr cludiant yn y dref am flwyddyn. Bydd awdurdod y dref ond yn caniatáy i deithwyr a chargo ddefnyddio eich gorsafoedd chi {} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Llwgrwobrwyo'r awdurdod lleol i wella'ch gradd, ond byddwch mewn perygl o dderbyn côsb sylweddol os cewch chi'ch dal.{} Côst: {CURRENCY_LONG} # Goal window -STR_GOALS_GLOBAL_TITLE :{BLACK}Nodau bydol: +STR_GOALS_CAPTION :{WHITE}Amcanion {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Amcanion Bydol +STR_GOALS_GLOBAL_TITLE :{BLACK}Amcanion bydol: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Dim - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Amherthnasol - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_COMPANY_TITLE :{BLACK}Nodau cwmni: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliciwch ar nod i ganoli'r brif olygfa ar y diwydiant/tref/teil Mae Ctrl+Clic yn agor ffenestr golwg newydd ar leoliad y diwydiant/tref/teil +STR_GOALS_COMPANY_TITLE :{BLACK}Amcanion cwmni: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliciwch ar amcan i ganoli'r brif olygfa ar y diwydiant/tref/teil Mae Ctrl+Clic yn agor ffenestr golwg newydd ar leoliad y diwydiant/tref/teil # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Cwestiwn @@ -2917,7 +3047,7 @@ STR_GOAL_QUESTION_CAPTION_INFORMATION :Gwybodaeth STR_GOAL_QUESTION_CAPTION_WARNING :Rhybudd STR_GOAL_QUESTION_CAPTION_ERROR :Gwall -### Start of Goal Question button list +############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Canslo STR_GOAL_QUESTION_BUTTON_OK :Iawn STR_GOAL_QUESTION_BUTTON_NO :Na @@ -2936,6 +3066,7 @@ STR_GOAL_QUESTION_BUTTON_RESTART :Ailddechrau STR_GOAL_QUESTION_BUTTON_POSTPONE :Gohirio STR_GOAL_QUESTION_BUTTON_SURRENDER :Ildio STR_GOAL_QUESTION_BUTTON_CLOSE :Cau +############ End of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Cymorthdaliadau @@ -2947,6 +3078,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliciwch ar y gwasanaeth i ganoli'r olygfa ar y diwydiant/tref. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y diwydiant/tref # Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Llyfr Hanes +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llyfr Hanes Bydol +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Tudalen {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Neidio i dudalen benodol dwy ei ddewis o'r cwymplen yma. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Blaenorol +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Mynd i'r dudalen blaenorol +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nesaf +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Mynd i'r dudalen nesaf +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Cyfeiriad amcan annilys # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Enwau gorsafoedd - cliciwch ar enw i ganoli'r brif olygfa ar yr orsaf. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad yr orsaf @@ -2961,7 +3102,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nid oes # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_TITLE :{BLACK}Disgwyl: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} o {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} wedi ei gadw ar gyfer llwytho) @@ -2978,7 +3118,28 @@ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Dangos g STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Graddio lleol a cyflenwi misol: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) - +STR_STATION_VIEW_GROUP :{BLACK}Grwpio yn ôl +STR_STATION_VIEW_WAITING_STATION :Gorsaf: Yn aros +STR_STATION_VIEW_WAITING_AMOUNT :Cyfanswn: Yn aros +STR_STATION_VIEW_PLANNED_STATION :Gorsaf: Cynllunwyd +STR_STATION_VIEW_PLANNED_AMOUNT :Cyfanswm: Cynllunwyd +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} o {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} drwy {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} i {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} o orsaf anhysbys +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} i unrhyw orsaf +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} drwy unrhyw orsaf +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} o'r orsaf yma +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} yn galw yn yr orsaf yma +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} i'r orsaf yma +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} heb stop + +STR_STATION_VIEW_GROUP_S_V_D :Tardd-Trwy-Cyrchfan +STR_STATION_VIEW_GROUP_S_D_V :Tardd-Cyrchfan-Trwy +STR_STATION_VIEW_GROUP_V_S_D :Trwy-Tardd-Cyrchfan +STR_STATION_VIEW_GROUP_V_D_S :Trwy-Cyrchfan-Tardd +STR_STATION_VIEW_GROUP_D_S_V :Cyrchfan-Tardd-Trwy +STR_STATION_VIEW_GROUP_D_V_S :Cyrchfan-Trwy-Tardd ############ range for rating starts STR_CARGO_RATING_APPALLING :Erchyll @@ -3184,12 +3345,15 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Cerbydau ffordd STR_GROUP_DEFAULT_SHIPS :Llongau heb eu grwpio STR_GROUP_DEFAULT_AIRCRAFTS :Awyrenau heb eu grwpio -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grŵp - cliciwch ar rŵp i restru pob cerbyd yn y grŵp hwn +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grŵp - cliciwch ar grŵp i restru pob cerbyd yn y grŵp hwn. Gallwch glico a llusgo grwpiau i drefnu'r hierarchaeth. STR_GROUP_CREATE_TOOLTIP :{BLACK}Cliciwch i greu grŵp STR_GROUP_DELETE_TOOLTIP :{BLACK}Dileu'r grŵp a ddewiswyd STR_GROUP_RENAME_TOOLTIP :{BLACK}Ailenwi'r grŵp a ddewiswyd STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Cliciwch i amddiffyn y grŵp rhag awtoddisodli gêm-eang +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Dileu Grŵp +STR_GROUP_DELETE_QUERY_TEXT :{WHITE} Ydych chi'n siwer eich bod am ddileu'r grŵp yma ac unrhyw ddisgynyddion? + STR_GROUP_ADD_SHARED_VEHICLE :Ychwanegu cerbyd a rennir STR_GROUP_REMOVE_ALL_VEHICLES :Dileu pob cerbyd @@ -3224,13 +3388,13 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Wageni P STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Modd ei ailffitio i: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Pob math o lwyth STR_PURCHASE_INFO_ALL_BUT :Popeth ond{CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Grym Tynnol Uchaf: {GOLD}{FORCE} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Grym Tynnu Uchaf: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Pellter cyrhaeddiad: {GOLD}{COMMA} teil -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Rhestr dewis trenau - cliciwch ar cerbyd am wybodaeth -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Rhestr dewis cerbydau ffordd - cliciwch ar gerbyd am wybodaeth -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Rhestr ddewis llongau - cliciwch ar long am wybodaeth -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Rhestr ddewis awyrennau - cliciwch ar awyren am wybodaeth +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Rhestr dewis trenau. Cliciwch ar gerbyd am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math cerbyd +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Rhestr dewis cerbydau ffordd. Cliciwch ar gerbyd am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math cerbyd +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Rhestr ddewis llongau. Cliciwch ar long am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math llong +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Rhestr ddewis awyrennau. Cliciwch ar awyren am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math awyren STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Prynu Cerbyd STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Prynu Cerbyd @@ -3252,6 +3416,21 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Ailenwi' STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Ailenwi'r math llong STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Ailenwi'r math awyren +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Cuddio +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Cuddio +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Cuddio +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Cuddio + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Dangos +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Dangos +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Dangos +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Dangos + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglu cuddio/arddangos math y cerbyd rheilffordd +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglu cuddio/arddangos math y cerbyd ffordd +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglu cuddio/arddangos math y llong +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Toglu cuddio/arddangos math yr awyren + STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Ailenwi math y cerbyd trên STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Ailenwi'r math cerbyd ffordd STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Ailenwi'r math llong @@ -3305,7 +3484,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Dyblygu STR_DEPOT_CLONE_SHIP :{BLACK}Dyblygu Llong STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Dyblygu Awyren -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Bydd hyn yn prynu copi o'r trên gan gynnwys pob cerbyd. Cliciwch ar y botwm hwn ac yna ar drên sydd tu fewn neu tu allan i'r depo. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Bydd hyn yn prynu copi o'r trên gan gynnwys pob cerbyd. Cliciwch ar y botwm hwn ac yna ar drên sydd tu fewn neu tu allan i'r depo. Bydd Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Bydd hyn yn adeiladu copi o gerbyd ffordd. Cliciwch ar y botwm hwn ac yna ar gerbyd sydd tu fewn neu tu allan i'r depo. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost heb brynnu STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Bydd hyn yn adeiladu copi o long. Cliciwch ar y botwm hwn ac yna ar long sydd tu fewn neu tu allan i'r depo. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Bydd hyn yn adeiladu copi o awyren. Cliciwch ar y botwm hwn ac yna ar awyren sydd tu fewn neu tu allan i'r awyrendy. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost @@ -3356,6 +3535,11 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Mae Cerbyd Ffor STR_REPLACE_VEHICLE_SHIP :Mae Llong STR_REPLACE_VEHICLE_AIRCRAFT :Mae Awyren +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Cerbydau mewn defnydd +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Colofn gyda cherbydau rydych yn berchen +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Cerbydau ar gael +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Colofn gyda cherbydau ar gael ar gyfer disodli + STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Dewiswch y math injan i'w ddisodli STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Dewiswch y math injan newydd yr hoffech chi ei ddefnyddio yn lle'r math injan ar y chwith @@ -3370,7 +3554,7 @@ STR_REPLACE_VEHICLES_STOP :{BLACK}Gorffen STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Gwasgwch i atal disodli'r math injan sydd wedi'i ddewis ar y chwith STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Disodli: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Newid rhwng y sgrin ddisodli wagenni a'r un injans. +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Newid rhwng y ffenest disodli wagenni a'r un injanau STR_REPLACE_ENGINES :Injanau STR_REPLACE_WAGONS :Wagenni @@ -3409,7 +3593,7 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Ailffiti STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Ailffitio llong i gario llwyth o fath gwahanol STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Ailffitio awyren i gario llwyth o fath gwahanol -STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}gwrthdroi cyfeiriad trên +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Gwrthdroi cyfeiriad trên STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Gorfodi cerbyd i droi rownd STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Dangos gorchmynion trên. Mae Ctrl+Clic yn ddangos amserlen y trên @@ -3478,9 +3662,9 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Cynhwyse STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Cynhwysedd: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Credydau Trosi: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Credydau Trosglwyddo: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Bwlch rhwng gwasanaeth: {LTBLUE}{COMMA}days{BLACK} Gwasanaeth diwethaf: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Bwlch rhwng gwasanaeth: {LTBLUE}{COMMA}{NBSP}diwrnod{BLACK} Gwasanaeth diwethaf: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Bwlch rhwng gwasanaethu: {LTBLUE}{COMMA}%{BLACK} Gwasanaeth diwethaf: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Cynyddu'r bwlch rhwng gwasanaethau fesul 10. Mae Ctrl+Clic yn gostwng y bwlch rhwng gwasanaethau fesul 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Gostwng y bwlch rhwng gwasanaethau fesul 10. Mae Ctrl+Clic yn gostwng y bwlch rhwng gwasanaethau fesul 5. @@ -3558,8 +3742,8 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Diwedd y Go STR_ORDER_NON_STOP :{BLACK}Heb stop STR_ORDER_GO_TO :Mynd i STR_ORDER_GO_NON_STOP_TO :Mynd heb stop i -STR_ORDER_GO_VIA :Galw heibio -STR_ORDER_GO_NON_STOP_VIA :Myn heb stop gan alw heibio +STR_ORDER_GO_VIA :Mynd trwy +STR_ORDER_GO_NON_STOP_VIA :Mynd heb stop trwy STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Newid ymddygiad stopio o'r gorchymyn a amlygwyd STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llwyth llawn, unrhyw gargo @@ -3578,8 +3762,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Newid ym STR_ORDER_REFIT :{BLACK}Ailffitio STR_ORDER_REFIT_TOOLTIP :{BLACK}Dewiswch y math o lwyth yr hoffech chi ailffitio gyda'r gorchymyn hwn. Cliciwch Ctrl-clic er mwyn diddymu'r cyfarwyddyd hwn. -STR_ORDER_REFIT_AUTO :{BLACK}Awto-ailffitio -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Dewis y math o lwyth i awto-ailffitio ar ei gyfer yn y gorchymyn yma. Mae Ctrl+Clic yn tynnu'r gorchymyn. Bydd awto-ailffitio ond yn digwydd os yw'r cerbyd yn caniatáu hynny +STR_ORDER_REFIT_AUTO :{BLACK}Ailffitio mewn gorsaf +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Dewis y math o lwyth i ailffitio ar ei gyfer yn y gorchymyn yma. Mae Ctrl+Clic yn tynnu'r gorchymyn. Bydd ailffitio ond yn digwydd os yw'r cerbyd yn caniatáu hynny STR_ORDER_DROP_REFIT_AUTO :Llwyth gosodedig STR_ORDER_DROP_REFIT_AUTO_ANY :Llwythi ar gael @@ -3633,7 +3817,7 @@ STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Dangos p # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Mynd trwy {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Mynd heb stopio drwy {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Mynd heb stop trwy {WAYPOINT} STR_ORDER_SERVICE_AT :Gwasanaethu yn STR_ORDER_SERVICE_NON_STOP_AT :Gwasanaethu heb stopio yn @@ -3670,18 +3854,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Dim dadlwytho, STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Dim dadlwytho, aros am unrhyw lwyth llawn) STR_ORDER_NO_UNLOAD_NO_LOAD :(Dim llwytho na dadlwytho) -STR_ORDER_AUTO_REFIT :(Awto-ailffitio i {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Llwyth llawn gan awto-ailffitio i {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Llwyth llawn o unrhyw gargo gan awto-ailffitio i {STRING}) -STR_ORDER_UNLOAD_REFIT :(Dadlwytho a llwytho gan awto-ailffitio i {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dadlwytho ac aros am lwyth llawn o gargo gan awto-ailffitio i {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dadlwytho ac aros am unrhyw lwyth llawn gan awto-ailffitio o {STRING}) -STR_ORDER_TRANSFER_REFIT :(Trosglwyddo a llwytho gan awto-ailffitio i {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Trosglwyddo ac aros am lwyth llawn gan awto-ailffitio i {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Trosglwyddo ac aros am unrhyw lwyth llawn gan awto-ailffitio i {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Dim dadlwytho ond llwytho gan awto-ailffitio i {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Dim dadlwytho ac aros am lwyth llawn gan awto-ailffitio i {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Dim dadlwytho ac aros am unrhyw lwyth llawn gan awto-ailffitio i {STRING}) +STR_ORDER_AUTO_REFIT :(Ailffitio i {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Llwyth llawn gan ailffitio i {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Llwyth llawn o unrhyw gargo gan ailffitio i {STRING}) +STR_ORDER_UNLOAD_REFIT :(Dadlwytho a llwytho gan ailffitio i {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dadlwytho ac aros am lwyth llawn o gargo gan ailffitio i {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dadlwytho ac aros am unrhyw lwyth llawn gan ailffitio o {STRING}) +STR_ORDER_TRANSFER_REFIT :(Trosglwyddo a llwytho gan ailffitio i {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Trosglwyddo ac aros am lwyth llawn gan ailffitio i {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Trosglwyddo ac aros am unrhyw lwyth llawn gan ailffitio i {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Dim dadlwytho ond llwytho gan ailffitio i {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Dim dadlwytho ac aros am lwyth llawn gan ailffitio i {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Dim dadlwytho ac aros am unrhyw lwyth llawn gan ailffitio i {STRING}) STR_ORDER_AUTO_REFIT_ANY :llwythi ar gael @@ -3710,10 +3894,14 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Teithio (heb ei STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Teithio heb oresgyn {2:VELOCITY} (heb ei amserlenu) STR_TIMETABLE_TRAVEL_FOR :Teithio am{STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Teithio am {STRING} heb oresgyn {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Teithio (am {STRING}, heb ei amserlennu) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Teitho (am {STRING}, heb ei amserlennu) dim cyflymach na {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(aros am {STRING}, heb ei amserlennu) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(teitiho am {STRING}, heb ei amserlennu) STR_TIMETABLE_STAY_FOR :aros am {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :a theithio am {STRING} -STR_TIMETABLE_DAYS :{COMMA} diwrnod -STR_TIMETABLE_TICKS :{COMMA} tic +STR_TIMETABLE_DAYS :{COMMA}{NBSP}diwrnod +STR_TIMETABLE_TICKS :{COMMA}{NBSP}tic STR_TIMETABLE_TOTAL_TIME :{BLACK}Bydd yr amserlen hon yn cymryd {STRING} i'w chwblhau STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Bydd yr amserlen hon yn cymryd o leiaf {STRING} i'w chwblhau (heb ei hamserlennu'n llwyr) @@ -3725,6 +3913,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Nid yw'r STR_TIMETABLE_STATUS_START_AT :{BLACK}Bydd yr amserlen yma'n dechrau ar {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Dyddiad dechrau +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Dewis dyddiad fel pwynt dechrau ar gyfer yr amserlen yma. Mae Ctrl+Clic yn gosod pwynt dechrau yr amselen yma ac yn dosbarthu'r holl gerbydau sy'n rhannu'r gorchymyn yma yn gyson yn ôl eu trefn cymharol, os yw'r gorchymyn wedi ei amserlennu'n llwyr STR_TIMETABLE_CHANGE_TIME :{BLACK}Newid Amser STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Newid faint o amser y dylai'r gorchymyn a amlygwyd ei gymryd @@ -3838,6 +4027,8 @@ STR_AI_SETTINGS_START_DELAY :Nifer o ddiwrno STR_TEXTFILE_README_CAPTION :{WHITE}Dogfenyddiaeth {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Log newidiadau {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Trwydded {STRING} {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Amlapio testun +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Amlapio testun y ffenestr fel ei fod i'w weld heb sgrolio STR_TEXTFILE_VIEW_README :{BLACK}Gweld dogfenyddiaeth STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log Newidiadau STR_TEXTFILE_VIEW_LICENCE :{BLACK}Trwydded @@ -3948,6 +4139,7 @@ STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Byddai c STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... eisoes ar lefel y môr STR_ERROR_TOO_HIGH :{WHITE}Rhy uchel STR_ERROR_ALREADY_LEVELLED :{WHITE}... mae eisoes yn fflat +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Byddai'r bont wedyn yn rhy uchel. # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Does dim modd newid enw'r cwmni... @@ -3974,7 +4166,7 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... rhy STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... rhy agos i dref arall STR_ERROR_TOO_MANY_TOWNS :{WHITE}... gormod o drefi STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nid oes mwy o le ar y map -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Ni fydd y dref yn adeiladu ffyrdd. Gallwch alluogi adeiladu ffyrdd yn Gosodiadau Uwch->Economi->Trefi +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Ni fydd y dref yn adeiladu ffyrdd. Gallwch alluogi adeiladu ffyrdd yn Gosodiadau->Amgylchedd->Trefi STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Mae gwaith yn cael ei wneud ar y ffordd STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Methu dileu'r dref...{}Mae gorsaf neu depo sy'n cyfeirio i'r dref neu deil ym mherchnogaeth y dref na ellir ei ddileu STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nid oes man addas i'r cerflun yn nghanol y ddinas yma @@ -3998,6 +4190,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... dim STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... gellir ei adeiladu uwchben yr eirlin yn unig STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... gellir ei adeiladu islaw i'r eirlin yn unig +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nid oedd manau addas ar gyfer diwydiannau '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Newidwch y paramedrau cynhyrchu map er mwyn cael map gwell + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Methu adeiladu gorsaf reilffordd yma... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Methu adeiladu gorsaf fysiau... @@ -4061,10 +4256,10 @@ STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Methu ad STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Methu ailenwi depo... -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... wedi'i stopio mewn depo -STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... rhaid iddo stopio mewn depo -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... fod wedi'i stopio mewn depo -STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... fod wedi'i stopio mewn awyrendâi +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... nid yw wedi'i stopio mewn depo +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... nid yw wedi'i stopio mewn depo +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... nid yw wedi'i stopio mewn depo +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... nid yw wedi'i stopio mewn awyrendy STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Gellir newid trenau yn unig pan fyddan nhw wedi stopio tu mewn i ddepo STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trên yn rhy hir @@ -4134,6 +4329,7 @@ STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Rhaid dy STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Does dim modd cychwyn a gorffen yn yr un man STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Nid yw dau ben y bont ar yr un lefel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Mae'r bont yn rhy isel ar gyfer y tirwedd +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Pont rhy uchel ar gyfer y tirwedd yma. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Rhaid i'r cychwyn a'r diwedd fod mewn llinell STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... rhaid i ddau ben y bont orffwys ar y tir STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... pont rhy hir @@ -4160,6 +4356,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... rydy STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Methu creu grŵp STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Methu dileu'r grŵp hwn... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Methu ailenwi'r grŵp... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Methu gosod grŵp rhiant... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Methu dileu pob cerbyd o'r grŵp hwn... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Methu ychawnegu'r cerbyd i'r grŵp hwn... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Methu ychwanegu cerbyd a rennir i'r grŵp... @@ -4215,6 +4412,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Methu ne STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... cerbyd wedi ei ddinistrio +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ni fydd cerbydau ar gael o gwbl +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Newid eich ffurfweddiad NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Dim cerbydau ar gael eto +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Dechreuwch gêm newydd wedi {DATE_SHORT} neu defnyddiwch NewGRF sy'n darparu cerbydau cynnar # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Does dim modd gwneud i drên basio signal pan fo perygl... @@ -4390,7 +4591,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Injan Danc Kirb STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Stêm) @@ -4599,7 +4800,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Fferi Teithwyr STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Fferi Teithwyr Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Llong Gargo Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Llong Gargo Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Llong Gargo Mightymover +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Llong Gargo MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Llong Gargo Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count @@ -4693,6 +4894,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY}{COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (cudd) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -4716,6 +4918,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4727,8 +4930,6 @@ STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} -STR_BLACK_CROSS :{BLACK}{CROSS} -STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} @@ -4739,9 +4940,7 @@ STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} -STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} -STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} diff --git a/src/linkgraph/demands.cpp b/src/linkgraph/demands.cpp index 87426326a3..767bec2c9f 100644 --- a/src/linkgraph/demands.cpp +++ b/src/linkgraph/demands.cpp @@ -4,6 +4,8 @@ #include "demands.h" #include +#include "../safeguards.h" + typedef std::list NodeList; /** @@ -11,15 +13,7 @@ typedef std::list NodeList; */ class Scaler { public: - /** - * Constructor. - */ - Scaler() : demand_per_node(0) {} - void SetDemands(LinkGraphJob &job, NodeID from, NodeID to, uint demand_forw); - -protected: - uint demand_per_node; ///< Mean demand associated with each node. }; /** @@ -32,7 +26,8 @@ public: * @param mod_size Size modifier to be used. Determines how much demands * increase with the supply of the remote station. */ - inline SymmetricScaler(uint mod_size) : mod_size(mod_size), supply_sum(0) + inline SymmetricScaler(uint mod_size) : mod_size(mod_size), supply_sum(0), + demand_per_node(0) {} /** @@ -80,8 +75,9 @@ public: void SetDemands(LinkGraphJob &job, NodeID from, NodeID to, uint demand_forw); private: - uint mod_size; ///< Size modifier. Determines how much demands increase with the supply of the remote station. - uint supply_sum; ///< Sum of all supplies in the component. + uint mod_size; ///< Size modifier. Determines how much demands increase with the supply of the remote station. + uint supply_sum; ///< Sum of all supplies in the component. + uint demand_per_node; ///< Mean demand associated with each node. }; /** @@ -90,37 +86,29 @@ private: class AsymmetricScaler : public Scaler { public: /** - * Constructor. + * Nothing to do here. + * @param unused. */ - inline AsymmetricScaler() : demand_sum(0) {} - - /** - * Count a node's demand into the sum of demands. - * @param node The node to be counted. - */ - inline void AddNode(const Node &node) + inline void AddNode(const Node &) { - this->demand_sum += node.Demand(); } /** - * Calculate the mean demand per node using the sum of demands. - * @param num_demands Number of accepting nodes. + * Nothing to do here. + * @param unused. */ - inline void SetDemandPerNode(uint num_demands) + inline void SetDemandPerNode(uint) { - this->demand_per_node = max(this->demand_sum / num_demands, (uint)1); } /** - * Get the effective supply of one node towards another one. In asymmetric - * distribution the demand of the other node is weighed in. + * Get the effective supply of one node towards another one. * @param from The supplying node. - * @param to The receiving node. + * @param unused. */ - inline uint EffectiveSupply(const Node &from, const Node &to) + inline uint EffectiveSupply(const Node &from, const Node &) { - return max(from.Supply() * to.Demand() / this->demand_per_node, (uint)1); + return from.Supply(); } /** @@ -130,9 +118,6 @@ public: * @param to_anno Unused. */ inline bool HasDemandLeft(const Node &to) { return to.Demand() > 0; } - -private: - uint demand_sum; ///< Sum of all demands in the component. }; /** @@ -140,7 +125,7 @@ private: * this sets demands in both directions. * @param job The link graph job. * @param from_id The supplying node. - * @þaram to_id The receiving node. + * @param to_id The receiving node. * @param demand_forw Demand calculated for the "forward" direction. */ void SymmetricScaler::SetDemands(LinkGraphJob &job, NodeID from_id, NodeID to_id, uint demand_forw) @@ -163,7 +148,7 @@ void SymmetricScaler::SetDemands(LinkGraphJob &job, NodeID from_id, NodeID to_id * this only sets demand in the "forward" direction. * @param job The link graph job. * @param from_id The supplying node. - * @þaram to_id The receiving node. + * @param to_id The receiving node. * @param demand_forw Demand calculated for the "forward" direction. */ inline void Scaler::SetDemands(LinkGraphJob &job, NodeID from_id, NodeID to_id, uint demand_forw) @@ -225,7 +210,8 @@ void DemandCalculator::CalcDemand(LinkGraphJob &job, Tscaler scaler) /* Scale the distance by mod_dist around max_distance */ int32 distance = this->max_distance - (this->max_distance - - (int32)job[from_id][to_id].Distance()) * this->mod_dist / 100; + (int32)DistanceMaxPlusManhattan(job[from_id].XY(), job[to_id].XY())) * + this->mod_dist / 100; /* Scale the accuracy by distance around accuracy / 2 */ int32 divisor = this->accuracy * (this->mod_dist - 50) / 100 + @@ -271,7 +257,7 @@ void DemandCalculator::CalcDemand(LinkGraphJob &job, Tscaler scaler) * @param job Job to calculate the demands for. */ DemandCalculator::DemandCalculator(LinkGraphJob &job) : - max_distance(MapSizeX() + MapSizeY() - 2) + max_distance(DistanceMaxPlusManhattan(TileXY(0,0), TileXY(MapMaxX(), MapMaxY()))) { const LinkGraphSettings &settings = job.Settings(); CargoID cargo = job.Cargo(); diff --git a/src/linkgraph/flowmapper.cpp b/src/linkgraph/flowmapper.cpp index 70779e8ecc..4b974a809e 100644 --- a/src/linkgraph/flowmapper.cpp +++ b/src/linkgraph/flowmapper.cpp @@ -12,15 +12,14 @@ #include "../stdafx.h" #include "flowmapper.h" +#include "../safeguards.h" + /** * Map the paths generated by the MCF solver into flows associated with nodes. * @param component the link graph component to be used. */ void FlowMapper::Run(LinkGraphJob &job) const { - /* Time the graph has been running without being compressed. */ - uint runtime = job.JoinDate() - job.Settings().recalc_time - job.LastCompression(); - for (NodeID node_id = 0; node_id < job.Size(); ++node_id) { Node prev_node = job[node_id]; StationID prev = prev_node.Station(); @@ -28,9 +27,7 @@ void FlowMapper::Run(LinkGraphJob &job) const for (PathList::iterator i = paths.begin(); i != paths.end(); ++i) { Path *path = *i; uint flow = path->GetFlow(); - if (flow == 0) continue; - /* compress to monthly value */ - flow = max(1U, flow * 30 / runtime); + if (flow == 0) break; Node node = job[path->GetNode()]; StationID via = node.Station(); StationID origin = job[path->GetOrigin()].Station(); @@ -51,7 +48,17 @@ void FlowMapper::Run(LinkGraphJob &job) const for (NodeID node_id = 0; node_id < job.Size(); ++node_id) { /* Remove local consumption shares marked as invalid. */ Node node = job[node_id]; - node.Flows().FinalizeLocalConsumption(node.Station()); + FlowStatMap &flows = node.Flows(); + flows.FinalizeLocalConsumption(node.Station()); + if (this->scale) { + /* Scale by time the graph has been running without being compressed. Add 1 to avoid + * division by 0 if spawn date == last compression date. This matches + * LinkGraph::Monthly(). */ + uint runtime = job.JoinDate() - job.Settings().recalc_time - job.LastCompression() + 1; + for (FlowStatMap::iterator i = flows.begin(); i != flows.end(); ++i) { + i->second.ScaleToMonthly(runtime); + } + } /* Clear paths. */ PathList &paths = node.Paths(); for (PathList::iterator i = paths.begin(); i != paths.end(); ++i) { diff --git a/src/linkgraph/flowmapper.h b/src/linkgraph/flowmapper.h index 6dc84ffea5..6f874e5b30 100644 --- a/src/linkgraph/flowmapper.h +++ b/src/linkgraph/flowmapper.h @@ -23,12 +23,25 @@ */ class FlowMapper : public ComponentHandler { public: + + /** + * Create a flow mapper. + * @param scale Whether the flow mapper should scale all flows to monthly + * values. Only do that on the very last flow mapping. + */ + FlowMapper(bool scale) : scale(scale) {} virtual void Run(LinkGraphJob &job) const; /** * Virtual destructor has to be defined because of virtual Run(). */ virtual ~FlowMapper() {} +private: + + /** + * Whether the flow mapper should scale all flows to monthly values. + */ + const bool scale; }; #endif /* FLOWMAPPER_H_ */ diff --git a/src/linkgraph/linkgraph.cpp b/src/linkgraph/linkgraph.cpp index 87a95ad182..50945d361f 100644 --- a/src/linkgraph/linkgraph.cpp +++ b/src/linkgraph/linkgraph.cpp @@ -13,17 +13,21 @@ #include "../core/pool_func.hpp" #include "linkgraph.h" +#include "../safeguards.h" + /* Initialize the link-graph-pool */ LinkGraphPool _link_graph_pool("LinkGraph"); INSTANTIATE_POOL_METHODS(LinkGraph) /** * Create a node or clear it. + * @param xy Location of the associated station. * @param st ID of the associated station. * @param demand Demand for cargo at the station. */ -inline void LinkGraph::BaseNode::Init(StationID st, uint demand) +inline void LinkGraph::BaseNode::Init(TileIndex xy, StationID st, uint demand) { + this->xy = xy; this->supply = 0; this->demand = demand; this->station = st; @@ -32,14 +36,13 @@ inline void LinkGraph::BaseNode::Init(StationID st, uint demand) /** * Create an edge. - * @param distance Length of the link as manhattan distance. */ -inline void LinkGraph::BaseEdge::Init(uint distance) +inline void LinkGraph::BaseEdge::Init() { - this->distance = distance; this->capacity = 0; this->usage = 0; - this->last_update = INVALID_DATE; + this->last_unrestricted_update = INVALID_DATE; + this->last_restricted_update = INVALID_DATE; this->next_edge = INVALID_NODE; } @@ -56,7 +59,8 @@ void LinkGraph::ShiftDates(int interval) if (source.last_update != INVALID_DATE) source.last_update += interval; for (NodeID node2 = 0; node2 < this->Size(); ++node2) { BaseEdge &edge = this->edges[node1][node2]; - if (edge.last_update != INVALID_DATE) edge.last_update += interval; + if (edge.last_unrestricted_update != INVALID_DATE) edge.last_unrestricted_update += interval; + if (edge.last_restricted_update != INVALID_DATE) edge.last_restricted_update += interval; } } } @@ -161,8 +165,8 @@ NodeID LinkGraph::AddNode(const Station *st) this->edges.Resize(new_node + 1U, max(new_node + 1U, this->edges.Height())); - this->nodes[new_node].Init(st->index, - HasBit(good.acceptance_pickup, GoodsEntry::GES_ACCEPTANCE)); + this->nodes[new_node].Init(st->xy, st->index, + HasBit(good.status, GoodsEntry::GES_ACCEPTANCE)); BaseEdge *new_edges = this->edges[new_node]; @@ -170,38 +174,48 @@ NodeID LinkGraph::AddNode(const Station *st) new_edges[new_node].next_edge = INVALID_NODE; for (NodeID i = 0; i <= new_node; ++i) { - uint distance = DistanceManhattan(st->xy, Station::Get(this->nodes[i].station)->xy); - new_edges[i].Init(distance); - this->edges[i][new_node].Init(distance); + new_edges[i].Init(); + this->edges[i][new_node].Init(); } return new_node; } /** - * Fill an edge with values from a link. + * Fill an edge with values from a link. Set the restricted or unrestricted + * update timestamp according to the given update mode. * @param to Destination node of the link. * @param capacity Capacity of the link. + * @param usage Usage to be added. + * @param mode Update mode to be used. */ -void LinkGraph::Node::AddEdge(NodeID to, uint capacity, uint usage) +void LinkGraph::Node::AddEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode) { assert(this->index != to); BaseEdge &edge = this->edges[to]; BaseEdge &first = this->edges[this->index]; edge.capacity = capacity; - edge.usage = usage == UINT_MAX ? 0 : usage; + edge.usage = usage; edge.next_edge = first.next_edge; first.next_edge = to; - edge.last_update = _date; + if (mode & EUM_UNRESTRICTED) edge.last_unrestricted_update = _date; + if (mode & EUM_RESTRICTED) edge.last_restricted_update = _date; } -void LinkGraph::Node::UpdateEdge(NodeID to, uint capacity, uint usage) +/** + * Creates an edge if none exists yet or updates an existing edge. + * @param to Target node. + * @param capacity Capacity of the link. + * @param usage Usage to be added. + * @param mode Update mode to be used. + */ +void LinkGraph::Node::UpdateEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode) { assert(capacity > 0); - assert(usage <= capacity || usage == UINT_MAX); - if (this->edges[to].last_update == INVALID_DATE) { - this->AddEdge(to, capacity, usage); + assert(usage <= capacity); + if (this->edges[to].capacity == 0) { + this->AddEdge(to, capacity, usage, mode); } else { - (*this)[to].Update(capacity, usage); + (*this)[to].Update(capacity, usage, mode); } } @@ -214,7 +228,8 @@ void LinkGraph::Node::RemoveEdge(NodeID to) if (this->index == to) return; BaseEdge &edge = this->edges[to]; edge.capacity = 0; - edge.last_update = INVALID_DATE; + edge.last_unrestricted_update = INVALID_DATE; + edge.last_restricted_update = INVALID_DATE; edge.usage = 0; NodeID prev = this->index; @@ -233,24 +248,30 @@ void LinkGraph::Node::RemoveEdge(NodeID to) } /** - * Create a new edge or update an existing one. If usage is UINT_MAX refresh - * the edge to have at least the given capacity, otherwise add the capacity. + * Update an edge. If mode contains UM_REFRESH refresh the edge to have at + * least the given capacity and usage, otherwise add the capacity and usage. + * In any case set the respective update timestamp(s), according to the given + * mode. * @param from Start node of the edge. * @param to End node of the edge. * @param capacity Capacity to be added/updated. - * @param usage Usage to be added or UINT_MAX. + * @param usage Usage to be added. + * @param mode Update mode to be applied. */ -void LinkGraph::Edge::Update(uint capacity, uint usage) +void LinkGraph::Edge::Update(uint capacity, uint usage, EdgeUpdateMode mode) { assert(this->edge.capacity > 0); - if (usage == UINT_MAX) { - this->edge.capacity = max(this->edge.capacity, capacity); - } else { - assert(capacity >= usage); + assert(capacity >= usage); + + if (mode & EUM_INCREASE) { this->edge.capacity += capacity; this->edge.usage += usage; + } else if (mode & EUM_REFRESH) { + this->edge.capacity = max(this->edge.capacity, capacity); + this->edge.usage = max(this->edge.usage, usage); } - this->edge.last_update = _date; + if (mode & EUM_UNRESTRICTED) this->edge.last_unrestricted_update = _date; + if (mode & EUM_RESTRICTED) this->edge.last_restricted_update = _date; } /** diff --git a/src/linkgraph/linkgraph.h b/src/linkgraph/linkgraph.h index 07a6bed95b..799f22c780 100644 --- a/src/linkgraph/linkgraph.h +++ b/src/linkgraph/linkgraph.h @@ -27,7 +27,7 @@ class LinkGraph; * Type of the pool for link graph components. Each station can be in at up to * 32 link graphs. So we allow for plenty of them to be created. */ -typedef Pool LinkGraphPool; +typedef Pool LinkGraphPool; /** The actual pool with link graphs. */ extern LinkGraphPool _link_graph_pool; @@ -49,8 +49,9 @@ public: uint supply; ///< Supply at the station. uint demand; ///< Acceptance at the station. StationID station; ///< Station ID. + TileIndex xy; ///< Location of the station referred to by the node. Date last_update; ///< When the supply was last updated. - void Init(StationID st = INVALID_STATION, uint demand = 0); + void Init(TileIndex xy = INVALID_TILE, StationID st = INVALID_STATION, uint demand = 0); }; /** @@ -60,12 +61,12 @@ public: * the column as next_edge. */ struct BaseEdge { - uint distance; ///< Length of the link. - uint capacity; ///< Capacity of the link. - uint usage; ///< Usage of the link. - Date last_update; ///< When the link was last updated. - NodeID next_edge; ///< Destination of next valid edge starting at the same source node. - void Init(uint distance = 0); + uint capacity; ///< Capacity of the link. + uint usage; ///< Usage of the link. + Date last_unrestricted_update; ///< When the unrestricted part of the link was last updated. + Date last_restricted_update; ///< When the restricted part of the link was last updated. + NodeID next_edge; ///< Destination of next valid edge starting at the same source node. + void Init(); }; /** @@ -98,16 +99,22 @@ public: uint Usage() const { return this->edge.usage; } /** - * Get edge's distance. - * @return Distance. + * Get the date of the last update to the edge's unrestricted capacity. + * @return Last update. */ - uint Distance() const { return this->edge.distance; } + Date LastUnrestrictedUpdate() const { return this->edge.last_unrestricted_update; } /** - * Get edge's last update. + * Get the date of the last update to the edge's restricted capacity. * @return Last update. */ - Date LastUpdate() const { return this->edge.last_update; } + Date LastRestrictedUpdate() const { return this->edge.last_restricted_update; } + + /** + * Get the date of the last update to any part of the edge's capacity. + * @return Last update. + */ + Date LastUpdate() const { return max(this->edge.last_unrestricted_update, this->edge.last_restricted_update); } }; /** @@ -156,6 +163,12 @@ public: * @return Last update. */ Date LastUpdate() const { return this->node.last_update; } + + /** + * Get the location of the station associated with the node. + * @return Location of the station. + */ + TileIndex XY() const { return this->node.xy; } }; /** @@ -284,7 +297,9 @@ public: * @param edge Edge to be wrapped. */ Edge(BaseEdge &edge) : EdgeWrapper(edge) {} - void Update(uint capacity, uint usage); + void Update(uint capacity, uint usage, EdgeUpdateMode mode); + void Restrict() { this->edge.last_unrestricted_update = INVALID_DATE; } + void Release() { this->edge.last_restricted_update = INVALID_DATE; } }; /** @@ -397,6 +412,15 @@ public: this->node.last_update = _date; } + /** + * Update the node's location on the map. + * @param xy New location. + */ + void UpdateLocation(TileIndex xy) + { + this->node.xy = xy; + } + /** * Set the node's demand. * @param demand New demand for the node. @@ -406,8 +430,8 @@ public: this->node.demand = demand; } - void AddEdge(NodeID to, uint capacity, uint usage = 0); - void UpdateEdge(NodeID to, uint capacity, uint usage = 0); + void AddEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode); + void UpdateEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode); void RemoveEdge(NodeID to); }; @@ -415,7 +439,7 @@ public: typedef SmallMatrix EdgeMatrix; /** Minimum effective distance for timeout calculation. */ - static const uint MIN_TIMEOUT_DISTANCE = 48; + static const uint MIN_TIMEOUT_DISTANCE = 32; /** Minimum number of days between subsequent compressions of a LG. */ static const uint COMPRESSION_INTERVAL = 256; diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index a0b4f893c0..1fe34fe79c 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -17,10 +17,13 @@ #include "../date_func.h" #include "../viewport_func.h" #include "../smallmap_gui.h" +#include "../core/geometry_func.hpp" #include "../widgets/link_graph_legend_widget.h" #include "table/strings.h" +#include "../safeguards.h" + /** * Colours for the various "load" states of links. Ordered from "unused" to * "overloaded". @@ -57,8 +60,6 @@ void LinkGraphOverlay::RebuildCache() const Station *sta; FOR_ALL_STATIONS(sta) { - /* Show links between stations of selected companies or "neutral" ones like oilrigs. */ - if (sta->owner != OWNER_NONE && !HasBit(this->company_mask, sta->owner)) continue; if (sta->rect.IsEmpty()) continue; Point pta = this->GetStationMiddle(sta); @@ -83,7 +84,9 @@ void LinkGraphOverlay::RebuildCache() } const Station *stb = Station::Get(to); assert(sta != stb); - if (stb->owner != OWNER_NONE && !HasBit(this->company_mask, stb->owner)) continue; + + /* Show links between stations of selected companies or "neutral" ones like oilrigs. */ + if (stb->owner != OWNER_NONE && sta->owner != OWNER_NONE && !HasBit(this->company_mask, stb->owner)) continue; if (stb->rect.IsEmpty()) continue; if (!this->IsLinkVisible(pta, this->GetStationMiddle(stb), &dpi)) continue; @@ -149,18 +152,23 @@ void LinkGraphOverlay::AddLinks(const Station *from, const Station *to) ConstEdge edge = lg[ge.node][to->goods[c].node]; if (edge.Capacity() > 0) { this->AddStats(lg.Monthly(edge.Capacity()), lg.Monthly(edge.Usage()), - ge.GetSumFlowVia(to->index), this->cached_links[from->index][to->index]); + ge.flows.GetFlowVia(to->index), from->owner == OWNER_NONE || to->owner == OWNER_NONE, + this->cached_links[from->index][to->index]); } } } /** - * Add information from a given pair of link stat and flow stat to the given link properties. - * @param orig_link Link stat to read the information from. - * @param new_plan Planned flow for the link. + * Add information from a given pair of link stat and flow stat to the given + * link properties. The shown usage or plan is always the maximum of all link + * stats involved. + * @param new_cap Capacity of the new link. + * @param new_usg Usage of the new link. + * @param new_plan Planned flow for the new link. + * @param new_shared If the new link is shared. * @param cargo LinkProperties to write the information to. */ -/* static */ void LinkGraphOverlay::AddStats(uint new_cap, uint new_usg, uint new_plan, LinkProperties &cargo) +/* static */ void LinkGraphOverlay::AddStats(uint new_cap, uint new_usg, uint new_plan, bool new_shared, LinkProperties &cargo) { /* multiply the numbers by 32 in order to avoid comparing to 0 too often. */ if (cargo.capacity == 0 || @@ -169,6 +177,7 @@ void LinkGraphOverlay::AddLinks(const Station *from, const Station *to) cargo.usage = new_usg; cargo.planned = new_plan; } + if (new_shared) cargo.shared = true; } /** @@ -207,14 +216,20 @@ void LinkGraphOverlay::DrawLinks(const DrawPixelInfo *dpi) const */ void LinkGraphOverlay::DrawContent(Point pta, Point ptb, const LinkProperties &cargo) const { - int offset_y = (pta.x < ptb.x ? 1 : -1) * this->scale; - int offset_x = (pta.y > ptb.y ? 1 : -1) * this->scale; - uint usage_or_plan = min(cargo.capacity * 2 + 1, max(cargo.usage, cargo.planned)); int colour = LinkGraphOverlay::LINK_COLOURS[usage_or_plan * lengthof(LinkGraphOverlay::LINK_COLOURS) / (cargo.capacity * 2 + 2)]; - - GfxDrawLine(pta.x + offset_x, pta.y, ptb.x + offset_x, ptb.y, colour, scale); - GfxDrawLine(pta.x, pta.y + offset_y, ptb.x, ptb.y + offset_y, colour, scale); + int dash = cargo.shared ? this->scale * 4 : 0; + + /* Move line a bit 90° against its dominant direction to prevent it from + * being hidden below the grey line. */ + int side = _settings_game.vehicle.road_side ? 1 : -1; + if (abs(pta.x - ptb.x) < abs(pta.y - ptb.y)) { + int offset_x = (pta.y > ptb.y ? 1 : -1) * side * this->scale; + GfxDrawLine(pta.x + offset_x, pta.y, ptb.x + offset_x, ptb.y, colour, this->scale, dash); + } else { + int offset_y = (pta.x < ptb.x ? 1 : -1) * side * this->scale; + GfxDrawLine(pta.x, pta.y + offset_y, ptb.x, ptb.y + offset_y, colour, this->scale, dash); + } GfxDrawLine(pta.x, pta.y, ptb.x, ptb.y, _colour_gradient[COLOUR_GREY][1], this->scale); } @@ -309,12 +324,12 @@ NWidgetBase *MakeCompanyButtonRowsLinkGraphGUI(int *biggest_index) NWidgetBase *MakeSaturationLegendLinkGraphGUI(int *biggest_index) { - NWidgetVertical *panel = new NWidgetVertical(); + NWidgetVertical *panel = new NWidgetVertical(NC_EQUALSIZE); for (uint i = 0; i < lengthof(LinkGraphOverlay::LINK_COLOURS); ++i) { NWidgetBackground * wid = new NWidgetBackground(WWT_PANEL, COLOUR_DARK_GREEN, i + WID_LGL_SATURATION_FIRST); wid->SetMinimalSize(50, FONT_HEIGHT_SMALL); - wid->SetFill(0, 1); - wid->SetResize(0, 1); + wid->SetFill(1, 1); + wid->SetResize(0, 0); panel->Add(wid); } *biggest_index = WID_LGL_SATURATION_LAST; @@ -324,19 +339,26 @@ NWidgetBase *MakeSaturationLegendLinkGraphGUI(int *biggest_index) NWidgetBase *MakeCargoesLegendLinkGraphGUI(int *biggest_index) { static const uint ENTRIES_PER_ROW = CeilDiv(NUM_CARGO, 5); - NWidgetVertical *panel = new NWidgetVertical(); + NWidgetVertical *panel = new NWidgetVertical(NC_EQUALSIZE); NWidgetHorizontal *row = NULL; for (uint i = 0; i < NUM_CARGO; ++i) { if (i % ENTRIES_PER_ROW == 0) { if (row) panel->Add(row); - row = new NWidgetHorizontal(); + row = new NWidgetHorizontal(NC_EQUALSIZE); } NWidgetBackground * wid = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, i + WID_LGL_CARGO_FIRST); wid->SetMinimalSize(25, FONT_HEIGHT_SMALL); - wid->SetFill(0, 1); - wid->SetResize(0, 1); + wid->SetFill(1, 1); + wid->SetResize(0, 0); row->Add(wid); } + /* Fill up last row */ + for (uint i = 0; i < 4 - (NUM_CARGO - 1) % 5; ++i) { + NWidgetSpacer *spc = new NWidgetSpacer(25, FONT_HEIGHT_SMALL); + spc->SetFill(1, 1); + spc->SetResize(0, 0); + row->Add(spc); + } panel->Add(row); *biggest_index = WID_LGL_CARGO_LAST; return panel; @@ -354,13 +376,11 @@ static const NWidgetPart _nested_linkgraph_legend_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_LGL_SATURATION), SetPadding(WD_FRAMERECT_TOP, 0, WD_FRAMERECT_BOTTOM, WD_CAPTIONTEXT_LEFT), - SetMinimalSize(50, 100), NWidgetFunction(MakeSaturationLegendLinkGraphGUI), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_LGL_COMPANIES), SetPadding(WD_FRAMERECT_TOP, 0, WD_FRAMERECT_BOTTOM, WD_CAPTIONTEXT_LEFT), NWidget(NWID_VERTICAL, NC_EQUALSIZE), - SetMinimalSize(100, 100), NWidgetFunction(MakeCompanyButtonRowsLinkGraphGUI), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_LGL_COMPANIES_ALL), SetDataTip(STR_LINKGRAPH_LEGEND_ALL, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_LGL_COMPANIES_NONE), SetDataTip(STR_LINKGRAPH_LEGEND_NONE, STR_NULL), @@ -369,7 +389,6 @@ static const NWidgetPart _nested_linkgraph_legend_widgets[] = { NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_LGL_CARGOES), SetPadding(WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM, WD_CAPTIONTEXT_LEFT), NWidget(NWID_VERTICAL, NC_EQUALSIZE), - SetMinimalSize(150, 100), NWidgetFunction(MakeCargoesLegendLinkGraphGUI), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_LGL_CARGOES_ALL), SetDataTip(STR_LINKGRAPH_LEGEND_ALL, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_LGL_CARGOES_NONE), SetDataTip(STR_LINKGRAPH_LEGEND_NONE, STR_NULL), @@ -424,31 +443,60 @@ void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay) { } } +void LinkGraphLegendWindow::UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) +{ + if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) { + StringID str = STR_NULL; + if (widget == WID_LGL_SATURATION_FIRST) { + str = STR_LINKGRAPH_LEGEND_UNUSED; + } else if (widget == WID_LGL_SATURATION_LAST) { + str = STR_LINKGRAPH_LEGEND_OVERLOADED; + } else if (widget == (WID_LGL_SATURATION_LAST + WID_LGL_SATURATION_FIRST) / 2) { + str = STR_LINKGRAPH_LEGEND_SATURATED; + } + if (str != STR_NULL) { + Dimension dim = GetStringBoundingBox(str); + dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; + dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; + *size = maxdim(*size, dim); + } + } + if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) { + CargoSpec *cargo = CargoSpec::Get(widget - WID_LGL_CARGO_FIRST); + if (cargo->IsValid()) { + Dimension dim = GetStringBoundingBox(cargo->abbrev); + dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; + dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; + *size = maxdim(*size, dim); + } + } +} + void LinkGraphLegendWindow::DrawWidget(const Rect &r, int widget) const { - const NWidgetBase *wid = this->GetWidget(widget); if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) { if (this->IsWidgetDisabled(widget)) return; CompanyID cid = (CompanyID)(widget - WID_LGL_COMPANY_FIRST); Dimension sprite_size = GetSpriteSize(SPR_COMPANY_ICON); - DrawCompanyIcon(cid, (r.left + r.right + 1 - sprite_size.width) / 2, (r.top + r.bottom - sprite_size.height) / 2); - return; + DrawCompanyIcon(cid, (r.left + r.right + 1 - sprite_size.width) / 2, (r.top + r.bottom + 1 - sprite_size.height) / 2); } if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) { GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, LinkGraphOverlay::LINK_COLOURS[widget - WID_LGL_SATURATION_FIRST]); + StringID str = STR_NULL; if (widget == WID_LGL_SATURATION_FIRST) { - DrawString(wid->pos_x, wid->current_x + wid->pos_x, wid->pos_y, STR_LINKGRAPH_LEGEND_UNUSED, TC_FROMSTRING, SA_HOR_CENTER); + str = STR_LINKGRAPH_LEGEND_UNUSED; } else if (widget == WID_LGL_SATURATION_LAST) { - DrawString(wid->pos_x, wid->current_x + wid->pos_x, wid->pos_y, STR_LINKGRAPH_LEGEND_OVERLOADED, TC_FROMSTRING, SA_HOR_CENTER); + str = STR_LINKGRAPH_LEGEND_OVERLOADED; } else if (widget == (WID_LGL_SATURATION_LAST + WID_LGL_SATURATION_FIRST) / 2) { - DrawString(wid->pos_x, wid->current_x + wid->pos_x, wid->pos_y, STR_LINKGRAPH_LEGEND_SATURATED, TC_FROMSTRING, SA_HOR_CENTER); + str = STR_LINKGRAPH_LEGEND_SATURATED; } + if (str != STR_NULL) DrawString(r.left, r.right, (r.top + r.bottom + 1 - FONT_HEIGHT_SMALL) / 2, str, TC_FROMSTRING, SA_HOR_CENTER); } if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) { if (this->IsWidgetDisabled(widget)) return; CargoSpec *cargo = CargoSpec::Get(widget - WID_LGL_CARGO_FIRST); GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, cargo->legend_colour); - DrawString(wid->pos_x, wid->current_x + wid->pos_x, wid->pos_y + 2, cargo->abbrev, TC_BLACK, SA_HOR_CENTER); + DrawString(r.left, r.right, (r.top + r.bottom + 1 - FONT_HEIGHT_SMALL) / 2, cargo->abbrev, TC_BLACK, SA_HOR_CENTER); } } diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h index 6edcb38a45..fcf81817f7 100644 --- a/src/linkgraph/linkgraph_gui.h +++ b/src/linkgraph/linkgraph_gui.h @@ -23,11 +23,12 @@ * Properties of a link between two stations. */ struct LinkProperties { - LinkProperties() : capacity(0), usage(0), planned(0) {} + LinkProperties() : capacity(0), usage(0), planned(0), shared(false) {} uint capacity; ///< Capacity of the link. uint usage; ///< Actual usage of the link. uint planned; ///< Planned usage of the link. + bool shared; ///< If this is a shared link to be drawn dashed. }; /** @@ -50,8 +51,7 @@ public: * @param company_mask Bitmask of companies to be shown. * @param scale Desired thickness of lines and size of station dots. */ - LinkGraphOverlay(const Window *w, uint wid, uint32 cargo_mask = 0xFFFFFFFF, - uint32 company_mask = 1 << _local_company, uint scale = 1) : + LinkGraphOverlay(const Window *w, uint wid, uint32 cargo_mask, uint32 company_mask, uint scale) : window(w), widget_id(wid), cargo_mask(cargo_mask), company_mask(company_mask), scale(scale) {} @@ -86,7 +86,7 @@ protected: bool IsPointVisible(Point pt, const DrawPixelInfo *dpi, int padding = 0) const; void GetWidgetDpi(DrawPixelInfo *dpi) const; - static void AddStats(uint new_cap, uint new_usg, uint new_flow, LinkProperties &cargo); + static void AddStats(uint new_cap, uint new_usg, uint new_flow, bool new_shared, LinkProperties &cargo); static void DrawVertex(int x, int y, int size, int colour, int border_colour); }; @@ -100,6 +100,7 @@ public: LinkGraphLegendWindow(WindowDesc *desc, int window_number); void SetOverlay(LinkGraphOverlay *overlay); + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize); virtual void DrawWidget(const Rect &r, int widget) const; virtual void OnClick(Point pt, int widget, int click_count); virtual void OnInvalidateData(int data = 0, bool gui_scope = true); diff --git a/src/linkgraph/linkgraph_type.h b/src/linkgraph/linkgraph_type.h index 277e56c731..6a3239b089 100644 --- a/src/linkgraph/linkgraph_type.h +++ b/src/linkgraph/linkgraph_type.h @@ -16,7 +16,7 @@ typedef uint16 LinkGraphID; static const LinkGraphID INVALID_LINK_GRAPH = UINT16_MAX; typedef uint16 LinkGraphJobID; -static const LinkGraphID INVALID_LIN_KGRAPH_JOB = UINT16_MAX; +static const LinkGraphID INVALID_LINK_GRAPH_JOB = UINT16_MAX; typedef uint16 NodeID; static const NodeID INVALID_NODE = UINT16_MAX; @@ -39,4 +39,26 @@ enum DistributionType { template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT DistributionTypeByte; // typedefing-enumification of DistributionType +/** + * Special modes for updating links. 'Restricted' means that vehicles with + * 'no loading' orders are serving the link. If a link is only served by + * such vehicles it's 'fully restricted'. This means the link can be used + * by cargo arriving in such vehicles, but not by cargo generated or + * transferring at the source station of the link. In order to find out + * about this condition we keep two update timestamps in each link, one for + * the restricted and one for the unrestricted part of it. If either one + * times out while the other is still valid the link becomes fully + * restricted or fully unrestricted, respectively. + * Refreshing a link makes just sure a minimum capacity is kept. Increasing + * actually adds the given capacity. + */ +enum EdgeUpdateMode { + EUM_INCREASE = 1, ///< Increase capacity. + EUM_REFRESH = 1 << 1, ///< Refresh capacity. + EUM_RESTRICTED = 1 << 2, ///< Use restricted link. + EUM_UNRESTRICTED = 1 << 3, ///< Use unrestricted link. +}; + +DECLARE_ENUM_AS_BIT_SET(EdgeUpdateMode) + #endif /* LINKGRAPH_TYPE_H */ diff --git a/src/linkgraph/linkgraphjob.cpp b/src/linkgraph/linkgraphjob.cpp index dcdc7ba364..20cbf3f64d 100644 --- a/src/linkgraph/linkgraphjob.cpp +++ b/src/linkgraph/linkgraphjob.cpp @@ -13,11 +13,21 @@ #include "../core/pool_func.hpp" #include "../window_func.h" #include "linkgraphjob.h" +#include "linkgraphschedule.h" + +#include "../safeguards.h" /* Initialize the link-graph-job-pool */ LinkGraphJobPool _link_graph_job_pool("LinkGraphJob"); INSTANTIATE_POOL_METHODS(LinkGraphJob) +/** + * Static instance of an invalid path. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. + */ +/* static */ Path *Path::invalid_path = new Path(INVALID_NODE, true); + /** * Create a link graph job from a link graph. The link graph will be copied so * that the calculations don't interfer with the normal operations on the @@ -34,12 +44,58 @@ LinkGraphJob::LinkGraphJob(const LinkGraph &orig) : { } +/** + * Erase all flows originating at a specific node. + * @param from Node to erase flows for. + */ +void LinkGraphJob::EraseFlows(NodeID from) +{ + for (NodeID node_id = 0; node_id < this->Size(); ++node_id) { + (*this)[node_id].Flows().erase(from); + } +} + +/** + * Spawn a thread if possible and run the link graph job in the thread. If + * that's not possible run the job right now in the current thread. + */ +void LinkGraphJob::SpawnThread() +{ + if (!ThreadObject::New(&(LinkGraphSchedule::Run), this, &this->thread)) { + this->thread = NULL; + /* Of course this will hang a bit. + * On the other hand, if you want to play games which make this hang noticably + * on a platform without threads then you'll probably get other problems first. + * OK: + * If someone comes and tells me that this hangs for him/her, I'll implement a + * smaller grained "Step" method for all handlers and add some more ticks where + * "Step" is called. No problem in principle. */ + LinkGraphSchedule::Run(this); + } +} + +/** + * Join the calling thread with this job's thread if threading is enabled. + */ +void LinkGraphJob::JoinThread() +{ + if (this->thread != NULL) { + this->thread->Join(); + delete this->thread; + this->thread = NULL; + } +} + /** * Join the link graph job and destroy it. */ LinkGraphJob::~LinkGraphJob() { - assert(this->thread == NULL); + this->JoinThread(); + + /* Don't update stuff from other pools, when everything is being removed. + * Accessing other pools may be invalid. */ + if (CleaningPool()) return; /* Link graph has been merged into another one. */ if (!LinkGraph::IsValidID(this->link_graph.index)) return; @@ -48,14 +104,20 @@ LinkGraphJob::~LinkGraphJob() for (NodeID node_id = 0; node_id < size; ++node_id) { Node from = (*this)[node_id]; - /* The station can have been deleted. */ + /* The station can have been deleted. Remove all flows originating from it then. */ Station *st = Station::GetIfValid(from.Station()); - if (st == NULL) continue; + if (st == NULL) { + this->EraseFlows(node_id); + continue; + } /* Link graph merging and station deletion may change around IDs. Make * sure that everything is still consistent or ignore it otherwise. */ GoodsEntry &ge = st->goods[this->Cargo()]; - if (ge.link_graph != this->link_graph.index || ge.node != node_id) continue; + if (ge.link_graph != this->link_graph.index || ge.node != node_id) { + this->EraseFlows(node_id); + continue; + } LinkGraph *lg = LinkGraph::Get(ge.link_graph); FlowStatMap &flows = from.Flows(); @@ -68,14 +130,21 @@ LinkGraphJob::~LinkGraphJob() st2->goods[this->Cargo()].node != it->first || (*lg)[node_id][it->first].LastUpdate() == INVALID_DATE) { /* Edge has been removed. Delete flows. */ - flows.DeleteFlows(to); + StationIDStack erased = flows.DeleteFlows(to); + /* Delete old flows for source stations which have been deleted + * from the new flows. This avoids flow cycles between old and + * new flows. */ + while (!erased.IsEmpty()) ge.flows.erase(erased.Pop()); + } else if ((*lg)[node_id][it->first].LastUnrestrictedUpdate() == INVALID_DATE) { + /* Edge is fully restricted. */ + flows.RestrictFlows(to); } } /* Swap shares and invalidate ones that are completely deleted. Don't * really delete them as we could then end up with unroutable cargo - * somewhere. Do delete them if automatic distribution has been turned - * off for that cargo, though. */ + * somewhere. Do delete them and also reroute relevant cargo if + * automatic distribution has been turned off for that cargo. */ for (FlowStatMap::iterator it(ge.flows.begin()); it != ge.flows.end();) { FlowStatMap::iterator new_it = flows.find(it->first); if (new_it == flows.end()) { @@ -83,7 +152,13 @@ LinkGraphJob::~LinkGraphJob() it->second.Invalidate(); ++it; } else { + FlowStat shares(INVALID_STATION, 1); + it->second.SwapShares(shares); ge.flows.erase(it++); + for (FlowStat::SharesMap::const_iterator shares_it(shares.GetShares()->begin()); + shares_it != shares.GetShares()->end(); ++shares_it) { + RerouteCargo(st, this->Cargo(), shares_it->second, st->index); + } } } else { it->second.SwapShares(new_it->second); @@ -181,7 +256,7 @@ uint Path::AddFlow(uint new_flow, LinkGraphJob &job, uint max_saturation) } new_flow = this->parent->AddFlow(new_flow, job, max_saturation); if (this->flow == 0 && new_flow > 0) { - job[this->parent->node].Paths().push_back(this); + job[this->parent->node].Paths().push_front(this); } edge.AddFlow(new_flow); } diff --git a/src/linkgraph/linkgraphjob.h b/src/linkgraph/linkgraphjob.h index e4df614a8a..b4587a7842 100644 --- a/src/linkgraph/linkgraphjob.h +++ b/src/linkgraph/linkgraphjob.h @@ -21,7 +21,7 @@ class Path; typedef std::list PathList; /** Type of the pool for link graph jobs. */ -typedef Pool LinkGraphJobPool; +typedef Pool LinkGraphJobPool; /** The actual pool with link graph jobs. */ extern LinkGraphJobPool _link_graph_job_pool; @@ -45,7 +45,7 @@ private: */ struct NodeAnnotation { uint undelivered_supply; ///< Amount of supply that hasn't been distributed yet. - PathList paths; ///< Paths through this node. + PathList paths; ///< Paths through this node, sorted so that those with flow == 0 are in the back. FlowStatMap flows; ///< Planned flows to other nodes. void Init(uint supply); }; @@ -60,10 +60,14 @@ protected: const LinkGraph link_graph; ///< Link graph to by analyzed. Is copied when job is started and mustn't be modified later. const LinkGraphSettings settings; ///< Copy of _settings_game.linkgraph at spawn time. ThreadObject *thread; ///< Thread the job is running in or NULL if it's running in the main thread. - const Date join_date; ///< Date when the job is to be joined. + Date join_date; ///< Date when the job is to be joined. NodeAnnotationVector nodes; ///< Extra node data necessary for link graph calculation. EdgeAnnotationMatrix edges; ///< Extra edge data necessary for link graph calculation. + void EraseFlows(NodeID from); + void JoinThread(); + void SpawnThread(); + public: /** @@ -234,7 +238,8 @@ public: const FlowStatMap &Flows() const { return this->node_anno.flows; } /** - * Get the paths this node is part of. + * Get the paths this node is part of. Paths are always expected to be + * sorted so that those with flow == 0 are in the back of the list. * @return Paths. */ PathList &Paths() { return this->node_anno.paths; } @@ -281,6 +286,12 @@ public: */ inline Date JoinDate() const { return join_date; } + /** + * Change the join date on date cheating. + * @param interval Number of days to add. + */ + inline void ShiftJoinDate(int interval) { this->join_date += interval; } + /** * Get the link graph settings for this component. * @return Settings. @@ -332,6 +343,8 @@ public: */ class Path { public: + static Path *invalid_path; + Path(NodeID n, bool source = false); /** Get the node this leg passes. */ diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp index 7e2c66f8fe..a65783a5e7 100644 --- a/src/linkgraph/linkgraphschedule.cpp +++ b/src/linkgraph/linkgraphschedule.cpp @@ -16,39 +16,14 @@ #include "mcf.h" #include "flowmapper.h" -/** - * Spawn a thread if possible and run the link graph job in the thread. If - * that's not possible run the job right now in the current thread. - * @param job Job to be executed. - */ -void LinkGraphSchedule::SpawnThread(LinkGraphJob *job) -{ - if (!ThreadObject::New(&(LinkGraphSchedule::Run), job, &job->thread)) { - job->thread = NULL; - /* Of course this will hang a bit. - * On the other hand, if you want to play games which make this hang noticably - * on a platform without threads then you'll probably get other problems first. - * OK: - * If someone comes and tells me that this hangs for him/her, I'll implement a - * smaller grained "Step" method for all handlers and add some more ticks where - * "Step" is called. No problem in principle. - */ - LinkGraphSchedule::Run(job); - } -} +#include "../safeguards.h" /** - * Join the calling thread with the given job's thread if threading is enabled. - * @param job Job whose execution thread is to be joined. + * Static instance of LinkGraphSchedule. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. */ -void LinkGraphSchedule::JoinThread(LinkGraphJob *job) -{ - if (job->thread != NULL) { - job->thread->Join(); - delete job->thread; - job->thread = NULL; - } -} +/* static */ LinkGraphSchedule LinkGraphSchedule::instance; /** * Start the next job in the schedule. @@ -57,11 +32,17 @@ void LinkGraphSchedule::SpawnNext() { if (this->schedule.empty()) return; LinkGraph *next = this->schedule.front(); + LinkGraph *first = next; + while (next->Size() < 2) { + this->schedule.splice(this->schedule.end(), this->schedule, this->schedule.begin()); + next = this->schedule.front(); + if (next == first) return; + } assert(next == LinkGraph::Get(next->index)); this->schedule.pop_front(); if (LinkGraphJob::CanAllocateItem()) { LinkGraphJob *job = new LinkGraphJob(*next); - this->SpawnThread(job); + job->SpawnThread(); this->running.push_back(job); } else { NOT_REACHED(); @@ -78,8 +59,7 @@ void LinkGraphSchedule::JoinNext() if (!next->IsFinished()) return; this->running.pop_front(); LinkGraphID id = next->LinkGraphIndex(); - this->JoinThread(next); - delete next; + delete next; // implicitly joins the thread if (LinkGraph::IsValidID(id)) { LinkGraph *lg = LinkGraph::Get(id); this->Unqueue(lg); // Unqueue to avoid double-queueing recycled IDs. @@ -95,9 +75,8 @@ void LinkGraphSchedule::JoinNext() /* static */ void LinkGraphSchedule::Run(void *j) { LinkGraphJob *job = (LinkGraphJob *)j; - LinkGraphSchedule *schedule = LinkGraphSchedule::Instance(); - for (uint i = 0; i < lengthof(schedule->handlers); ++i) { - schedule->handlers[i]->Run(*job); + for (uint i = 0; i < lengthof(instance.handlers); ++i) { + instance.handlers[i]->Run(*job); } } @@ -108,7 +87,7 @@ void LinkGraphSchedule::JoinNext() void LinkGraphSchedule::SpawnAll() { for (JobList::iterator i = this->running.begin(); i != this->running.end(); ++i) { - this->SpawnThread(*i); + (*i)->SpawnThread(); } } @@ -117,12 +96,24 @@ void LinkGraphSchedule::SpawnAll() */ /* static */ void LinkGraphSchedule::Clear() { - LinkGraphSchedule *inst = LinkGraphSchedule::Instance(); - for (JobList::iterator i(inst->running.begin()); i != inst->running.end(); ++i) { - inst->JoinThread(*i); + for (JobList::iterator i(instance.running.begin()); i != instance.running.end(); ++i) { + (*i)->JoinThread(); } - inst->running.clear(); - inst->schedule.clear(); + instance.running.clear(); + instance.schedule.clear(); +} + +/** + * Shift all dates (join dates and edge annotations) of link graphs and link + * graph jobs by the number of days given. + * @param interval Number of days to be added or subtracted. + */ +void LinkGraphSchedule::ShiftDates(int interval) +{ + LinkGraph *lg; + FOR_ALL_LINK_GRAPHS(lg) lg->ShiftDates(interval); + LinkGraphJob *lgj; + FOR_ALL_LINK_GRAPH_JOBS(lgj) lgj->ShiftJoinDate(interval); } /** @@ -133,9 +124,9 @@ LinkGraphSchedule::LinkGraphSchedule() this->handlers[0] = new InitHandler; this->handlers[1] = new DemandHandler; this->handlers[2] = new MCFHandler; - this->handlers[3] = new FlowMapper; + this->handlers[3] = new FlowMapper(false); this->handlers[4] = new MCFHandler; - this->handlers[5] = new FlowMapper; + this->handlers[5] = new FlowMapper(true); } /** @@ -149,15 +140,6 @@ LinkGraphSchedule::~LinkGraphSchedule() } } -/** - * Retrieve the link graph schedule or create it if necessary. - */ -/* static */ LinkGraphSchedule *LinkGraphSchedule::Instance() -{ - static LinkGraphSchedule inst; - return &inst; -} - /** * Spawn or join a link graph job or compress a link graph if any link graph is * due to do so. @@ -167,9 +149,9 @@ void OnTick_LinkGraph() if (_date_fract != LinkGraphSchedule::SPAWN_JOIN_TICK) return; Date offset = _date % _settings_game.linkgraph.recalc_interval; if (offset == 0) { - LinkGraphSchedule::Instance()->SpawnNext(); + LinkGraphSchedule::instance.SpawnNext(); } else if (offset == _settings_game.linkgraph.recalc_interval / 2) { - LinkGraphSchedule::Instance()->JoinNext(); + LinkGraphSchedule::instance.JoinNext(); } } diff --git a/src/linkgraph/linkgraphschedule.h b/src/linkgraph/linkgraphschedule.h index 911fa389a1..ec22be3161 100644 --- a/src/linkgraph/linkgraphschedule.h +++ b/src/linkgraph/linkgraphschedule.h @@ -48,20 +48,18 @@ protected: GraphList schedule; ///< Queue for new jobs. JobList running; ///< Currently running jobs. - void SpawnThread(LinkGraphJob *job); - void JoinThread(LinkGraphJob *job); - public: /* This is a tick where not much else is happening, so a small lag might go unnoticed. */ static const uint SPAWN_JOIN_TICK = 21; ///< Tick when jobs are spawned or joined every day. + static LinkGraphSchedule instance; - static LinkGraphSchedule *Instance(); static void Run(void *j); static void Clear(); void SpawnNext(); void JoinNext(); void SpawnAll(); + void ShiftDates(int interval); /** * Queue a link graph for execution. diff --git a/src/linkgraph/mcf.cpp b/src/linkgraph/mcf.cpp index d07f147b2a..6fed7adead 100644 --- a/src/linkgraph/mcf.cpp +++ b/src/linkgraph/mcf.cpp @@ -5,6 +5,8 @@ #include "mcf.h" #include +#include "../safeguards.h" + typedef std::map PathViaMap; /** @@ -146,15 +148,14 @@ public: */ void SetNode(NodeID source, NodeID node) { - static const FlowStat::SharesMap empty; const FlowStatMap &flows = this->job[node].Flows(); FlowStatMap::const_iterator it = flows.find(this->job[source].Station()); if (it != flows.end()) { this->it = it->second.GetShares()->begin(); this->end = it->second.GetShares()->end(); } else { - this->it = empty.begin(); - this->end = empty.end(); + this->it = FlowStat::empty_sharesmap.begin(); + this->end = FlowStat::empty_sharesmap.end(); } } @@ -257,7 +258,6 @@ void MultiCommodityFlow::Dijkstra(NodeID source_node, PathVector &paths) for (NodeID to = iter.Next(); to != INVALID_NODE; to = iter.Next()) { if (to == from) continue; // Not a real edge but a consumption sign. Edge edge = this->job[from][to]; - assert(edge.Distance() < UINT_MAX); uint capacity = edge.Capacity(); if (this->max_saturation != UINT_MAX) { capacity *= this->max_saturation; @@ -265,7 +265,7 @@ void MultiCommodityFlow::Dijkstra(NodeID source_node, PathVector &paths) if (capacity == 0) capacity = 1; } /* punish in-between stops a little */ - uint distance = edge.Distance() + 1; + uint distance = DistanceMaxPlusManhattan(this->job[from].XY(), this->job[to].XY()) + 1; Tannotation *dest = static_cast(paths[to]); if (dest->IsBetter(source, capacity, capacity - edge.Flow(), distance)) { annos.erase(dest); @@ -310,7 +310,7 @@ void MultiCommodityFlow::CleanupPaths(NodeID source_id, PathVector &paths) * @param path End of the path the flow should be pushed on. * @param accuracy Accuracy of the calculation. * @param max_saturation If < UINT_MAX only push flow up to the given - * saturation, otherwise the path can be "overloaded". + * saturation, otherwise the path can be "overloaded". */ uint MultiCommodityFlow::PushFlow(Edge &edge, Path *path, uint accuracy, uint max_saturation) @@ -351,7 +351,17 @@ void MCF1stPass::EliminateCycle(PathVector &path, Path *cycle_begin, uint flow) do { NodeID prev = cycle_begin->GetNode(); cycle_begin->ReduceFlow(flow); - cycle_begin = path[cycle_begin->GetNode()]; + if (cycle_begin->GetFlow() == 0) { + PathList &node_paths = this->job[cycle_begin->GetParent()->GetNode()].Paths(); + for (PathList::iterator i = node_paths.begin(); i != node_paths.end(); ++i) { + if (*i == cycle_begin) { + node_paths.erase(i); + node_paths.push_back(cycle_begin); + break; + } + } + } + cycle_begin = path[prev]; Edge edge = this->job[prev][cycle_begin->GetNode()]; edge.RemoveFlow(flow); } while (cycle_begin != cycle_end); @@ -368,29 +378,38 @@ void MCF1stPass::EliminateCycle(PathVector &path, Path *cycle_begin, uint flow) */ bool MCF1stPass::EliminateCycles(PathVector &path, NodeID origin_id, NodeID next_id) { - static Path *invalid_path = new Path(INVALID_NODE, true); Path *at_next_pos = path[next_id]; /* this node has already been searched */ - if (at_next_pos == invalid_path) return false; + if (at_next_pos == Path::invalid_path) return false; if (at_next_pos == NULL) { /* Summarize paths; add up the paths with the same source and next hop * in one path each. */ PathList &paths = this->job[next_id].Paths(); PathViaMap next_hops; - for (PathList::iterator i = paths.begin(); i != paths.end(); ++i) { + for (PathList::iterator i = paths.begin(); i != paths.end();) { Path *new_child = *i; + uint new_flow = new_child->GetFlow(); + if (new_flow == 0) break; if (new_child->GetOrigin() == origin_id) { PathViaMap::iterator via_it = next_hops.find(new_child->GetNode()); if (via_it == next_hops.end()) { next_hops[new_child->GetNode()] = new_child; + ++i; } else { Path *child = via_it->second; - uint new_flow = new_child->GetFlow(); child->AddFlow(new_flow); new_child->ReduceFlow(new_flow); + + /* We might hit end() with with the ++ here and skip the + * newly push_back'ed path. That's good as the flow of that + * path is 0 anyway. */ + paths.erase(i++); + paths.push_back(new_child); } + } else { + ++i; } } bool found = false; @@ -410,7 +429,7 @@ bool MCF1stPass::EliminateCycles(PathVector &path, NodeID origin_id, NodeID next * could be found in this branch, thus it has to be searched again next * time we spot it. */ - path[next_id] = found ? NULL : invalid_path; + path[next_id] = found ? NULL : Path::invalid_path; return found; } diff --git a/src/linkgraph/refresh.cpp b/src/linkgraph/refresh.cpp new file mode 100644 index 0000000000..02f27f40c1 --- /dev/null +++ b/src/linkgraph/refresh.cpp @@ -0,0 +1,319 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file refresh.h Definition of link refreshing utility. */ + +#include "../stdafx.h" +#include "../core/bitmath_func.hpp" +#include "../station_func.h" +#include "../engine_base.h" +#include "../vehicle_func.h" +#include "refresh.h" +#include "linkgraph.h" + +#include "../safeguards.h" + +/** + * Refresh all links the given vehicle will visit. + * @param v Vehicle to refresh links for. + * @param allow_merge If the refresher is allowed to merge or extend link graphs. + * @param is_full_loading If the vehicle is full loading. + */ +/* static */ void LinkRefresher::Run(Vehicle *v, bool allow_merge, bool is_full_loading) +{ + /* If there are no orders we can't predict anything.*/ + if (v->orders.list == NULL) return; + + /* Make sure the first order is a useful order. */ + const Order *first = v->orders.list->GetNextDecisionNode(v->GetOrder(v->cur_implicit_order_index), 0); + if (first == NULL) return; + + HopSet seen_hops; + LinkRefresher refresher(v, &seen_hops, allow_merge, is_full_loading); + + refresher.RefreshLinks(first, first, v->last_loading_station != INVALID_STATION ? 1 << HAS_CARGO : 0); +} + +/** + * Comparison operator to allow hops to be used in a std::set. + * @param other Other hop to be compared with. + * @return If this hop is "smaller" than the other (defined by from, to and cargo in this order). + */ +bool LinkRefresher::Hop::operator<(const Hop &other) const +{ + if (this->from < other.from) { + return true; + } else if (this->from > other.from) { + return false; + } + if (this->to < other.to) { + return true; + } else if (this->to > other.to) { + return false; + } + return this->cargo < other.cargo; +} + +/** + * Constructor for link refreshing algorithm. + * @param vehicle Vehicle to refresh links for. + * @param seen_hops Set of hops already seen. This is shared between this + * refresher and all its children. + * @param allow_merge If the refresher is allowed to merge or extend link graphs. + * @param is_full_loading If the vehicle is full loading. + */ +LinkRefresher::LinkRefresher(Vehicle *vehicle, HopSet *seen_hops, bool allow_merge, bool is_full_loading) : + vehicle(vehicle), seen_hops(seen_hops), cargo(CT_INVALID), allow_merge(allow_merge), + is_full_loading(is_full_loading) +{ + /* Assemble list of capacities and set last loading stations to 0. */ + for (Vehicle *v = this->vehicle; v != NULL; v = v->Next()) { + this->refit_capacities.push_back(RefitDesc(v->cargo_type, v->cargo_cap, v->refit_cap)); + if (v->refit_cap > 0) this->capacities[v->cargo_type] += v->refit_cap; + } +} + +/** + * Handle refit orders by updating capacities and refit_capacities. + * @param refit_cargo Cargo to refit to. + * @return True if any vehicle was refit; false if none was. + */ +bool LinkRefresher::HandleRefit(CargoID refit_cargo) +{ + this->cargo = refit_cargo; + RefitList::iterator refit_it = this->refit_capacities.begin(); + bool any_refit = false; + for (Vehicle *v = this->vehicle; v != NULL; v = v->Next()) { + const Engine *e = Engine::Get(v->engine_type); + if (!HasBit(e->info.refit_mask, this->cargo)) { + ++refit_it; + continue; + } + any_refit = true; + + /* Back up the vehicle's cargo type */ + CargoID temp_cid = v->cargo_type; + byte temp_subtype = v->cargo_subtype; + v->cargo_type = this->cargo; + v->cargo_subtype = GetBestFittingSubType(v, v, this->cargo); + + uint16 mail_capacity = 0; + uint amount = e->DetermineCapacity(v, &mail_capacity); + + /* Restore the original cargo type */ + v->cargo_type = temp_cid; + v->cargo_subtype = temp_subtype; + + /* Skip on next refit. */ + if (this->cargo != refit_it->cargo && refit_it->remaining > 0) { + this->capacities[refit_it->cargo] -= refit_it->remaining; + refit_it->remaining = 0; + } else if (amount < refit_it->remaining) { + this->capacities[refit_it->cargo] -= refit_it->remaining - amount; + refit_it->remaining = amount; + } + refit_it->capacity = amount; + refit_it->cargo = this->cargo; + + ++refit_it; + + /* Special case for aircraft with mail. */ + if (v->type == VEH_AIRCRAFT) { + if (mail_capacity < refit_it->remaining) { + this->capacities[refit_it->cargo] -= refit_it->remaining - mail_capacity; + refit_it->remaining = mail_capacity; + } + refit_it->capacity = mail_capacity; + break; // aircraft have only one vehicle + } + } + return any_refit; +} + +/** + * Restore capacities and refit_capacities as vehicle might have been able to load now. + */ +void LinkRefresher::ResetRefit() +{ + for (RefitList::iterator it(this->refit_capacities.begin()); it != this->refit_capacities.end(); ++it) { + if (it->remaining == it->capacity) continue; + this->capacities[it->cargo] += it->capacity - it->remaining; + it->remaining = it->capacity; + } +} + +/** + * Predict the next order the vehicle will execute and resolve conditionals by + * recursion and return next non-conditional order in list. + * @param cur Current order being evaluated. + * @param next Next order to be evaluated. + * @param flags RefreshFlags to give hints about the previous link and state carried over from that. + * @param num_hops Number of hops already taken by recursive calls to this method. + * @return new next Order. + */ +const Order *LinkRefresher::PredictNextOrder(const Order *cur, const Order *next, uint8 flags, uint num_hops) +{ + /* next is good if it's either NULL (then the caller will stop the + * evaluation) or if it's not conditional and the caller allows it to be + * chosen (by setting USE_NEXT). */ + while (next != NULL && (!HasBit(flags, USE_NEXT) || next->IsType(OT_CONDITIONAL))) { + + /* After the first step any further non-conditional order is good, + * regardless of previous USE_NEXT settings. The case of cur and next or + * their respective stations being equal is handled elsewhere. */ + SetBit(flags, USE_NEXT); + + if (next->IsType(OT_CONDITIONAL)) { + const Order *skip_to = this->vehicle->orders.list->GetNextDecisionNode( + this->vehicle->orders.list->GetOrderAt(next->GetConditionSkipToOrder()), num_hops); + if (skip_to != NULL && num_hops < this->vehicle->orders.list->GetNumOrders()) { + /* Make copies of capacity tracking lists. There is potential + * for optimization here: If the vehicle never refits we don't + * need to copy anything. Also, if we've seen the branched link + * before we don't need to branch at all. */ + LinkRefresher branch(*this); + branch.RefreshLinks(cur, skip_to, flags, num_hops + 1); + } + } + + /* Reassign next with the following stop. This can be a station or a + * depot.*/ + next = this->vehicle->orders.list->GetNextDecisionNode( + this->vehicle->orders.list->GetNext(next), num_hops++); + } + return next; +} + +/** + * Refresh link stats for the given pair of orders. + * @param cur Last stop where the consist could interact with cargo. + * @param next Next order to be processed. + */ +void LinkRefresher::RefreshStats(const Order *cur, const Order *next) +{ + StationID next_station = next->GetDestination(); + Station *st = Station::GetIfValid(cur->GetDestination()); + if (st != NULL && next_station != INVALID_STATION && next_station != st->index) { + for (CapacitiesMap::const_iterator i = this->capacities.begin(); i != this->capacities.end(); ++i) { + /* Refresh the link and give it a minimum capacity. */ + + if (i->second == 0) continue; + CargoID c = i->first; + + /* If not allowed to merge link graphs, make sure the stations are + * already in the same link graph. */ + if (!this->allow_merge && st->goods[c].link_graph != Station::Get(next_station)->goods[c].link_graph) { + continue; + } + + /* A link is at least partly restricted if a vehicle can't load at its source. */ + EdgeUpdateMode restricted_mode = (cur->GetLoadType() & OLFB_NO_LOAD) == 0 ? + EUM_UNRESTRICTED : EUM_RESTRICTED; + + /* If the vehicle is currently full loading, increase the capacities at the station + * where it is loading by an estimate of what it would have transported if it wasn't + * loading. Don't do that if the vehicle has been waiting for longer than the entire + * order list is supposed to take, though. If that is the case the total duration is + * probably far off and we'd greatly overestimate the capacity by increasing.*/ + if (this->is_full_loading && this->vehicle->orders.list != NULL && + st->index == vehicle->last_station_visited && + this->vehicle->orders.list->GetTotalDuration() > + (Ticks)this->vehicle->current_order_time) { + uint effective_capacity = i->second * this->vehicle->load_unload_ticks; + if (effective_capacity > (uint)this->vehicle->orders.list->GetTotalDuration()) { + IncreaseStats(st, c, next_station, effective_capacity / + this->vehicle->orders.list->GetTotalDuration(), 0, + EUM_INCREASE | restricted_mode); + } else if (RandomRange(this->vehicle->orders.list->GetTotalDuration()) < effective_capacity) { + IncreaseStats(st, c, next_station, 1, 0, EUM_INCREASE | restricted_mode); + } else { + IncreaseStats(st, c, next_station, i->second, 0, EUM_REFRESH | restricted_mode); + } + } else { + IncreaseStats(st, c, next_station, i->second, 0, EUM_REFRESH | restricted_mode); + } + } + } +} + +/** + * Iterate over orders starting at \a cur and \a next and refresh links + * associated with them. \a cur and \a next can be equal. If they're not they + * must be "neigbours" in their order list, which means \a next must be directly + * reachable from \a cur without passing any further OT_GOTO_STATION or + * OT_IMPLICIT orders in between. + * @param cur Current order being evaluated. + * @param next Next order to be checked. + * @param flags RefreshFlags to give hints about the previous link and state carried over from that. + * @param num_hops Number of hops already taken by recursive calls to this method. + */ +void LinkRefresher::RefreshLinks(const Order *cur, const Order *next, uint8 flags, uint num_hops) +{ + while (next != NULL) { + + if ((next->IsType(OT_GOTO_DEPOT) || next->IsType(OT_GOTO_STATION)) && next->IsRefit()) { + SetBit(flags, WAS_REFIT); + if (!next->IsAutoRefit()) { + this->HandleRefit(next->GetRefitCargo()); + } else if (!HasBit(flags, IN_AUTOREFIT)) { + SetBit(flags, IN_AUTOREFIT); + LinkRefresher backup(*this); + for (CargoID c = 0; c != NUM_CARGO; ++c) { + if (CargoSpec::Get(c)->IsValid() && this->HandleRefit(c)) { + this->RefreshLinks(cur, next, flags, num_hops); + *this = backup; + } + } + } + } + + /* Only reset the refit capacities if the "previous" next is a station, + * meaning that either the vehicle was refit at the previous station or + * it wasn't at all refit during the current hop. */ + if (HasBit(flags, WAS_REFIT) && (next->IsType(OT_GOTO_STATION) || next->IsType(OT_IMPLICIT))) { + SetBit(flags, RESET_REFIT); + } else { + ClrBit(flags, RESET_REFIT); + } + + next = this->PredictNextOrder(cur, next, flags, num_hops); + if (next == NULL) break; + Hop hop(cur->index, next->index, this->cargo); + if (this->seen_hops->find(hop) != this->seen_hops->end()) { + break; + } else { + this->seen_hops->insert(hop); + } + + /* Don't use the same order again, but choose a new one in the next round. */ + ClrBit(flags, USE_NEXT); + + /* Skip resetting and link refreshing if next order won't do anything with cargo. */ + if (!next->IsType(OT_GOTO_STATION) && !next->IsType(OT_IMPLICIT)) continue; + + if (HasBit(flags, RESET_REFIT)) { + this->ResetRefit(); + ClrBit(flags, RESET_REFIT); + ClrBit(flags, WAS_REFIT); + } + + if (cur->IsType(OT_GOTO_STATION) || cur->IsType(OT_IMPLICIT)) { + if (cur->CanLeaveWithCargo(HasBit(flags, HAS_CARGO))) { + SetBit(flags, HAS_CARGO); + this->RefreshStats(cur, next); + } else { + ClrBit(flags, HAS_CARGO); + } + } + + /* "cur" is only assigned here if the stop is a station so that + * whenever stats are to be increased two stations can be found. */ + cur = next; + } +} diff --git a/src/linkgraph/refresh.h b/src/linkgraph/refresh.h new file mode 100644 index 0000000000..496729df7f --- /dev/null +++ b/src/linkgraph/refresh.h @@ -0,0 +1,104 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file refresh.h Declaration of link refreshing utility. */ + +#ifndef REFRESH_H +#define REFRESH_H + +#include "../cargo_type.h" +#include "../vehicle_base.h" +#include +#include +#include + +/** + * Utility to refresh links a consist will visit. + */ +class LinkRefresher { +public: + static void Run(Vehicle *v, bool allow_merge = true, bool is_full_loading = false); + +protected: + /** + * Various flags about properties of the last examined link that might have + * an influence on the next one. + */ + enum RefreshFlags { + USE_NEXT, ///< There was a conditional jump. Try to use the given next order when looking for a new one. + HAS_CARGO, ///< Consist could leave the last stop where it could interact with cargo carrying cargo (i.e. not an "unload all" + "no loading" order). + WAS_REFIT, ///< Consist was refit since the last stop where it could interact with cargo. + RESET_REFIT, ///< Consist had a chance to load since the last refit and the refit capacities can be reset. + IN_AUTOREFIT, ///< Currently doing an autorefit loop. Ignore the first autorefit order. + }; + + /** + * Simulated cargo type and capacity for prediction of future links. + */ + struct RefitDesc { + CargoID cargo; ///< Cargo type the vehicle will be carrying. + uint16 capacity; ///< Capacity the vehicle will have. + uint16 remaining; ///< Capacity remaining from before the previous refit. + RefitDesc(CargoID cargo, uint16 capacity, uint16 remaining) : + cargo(cargo), capacity(capacity), remaining(remaining) {} + }; + + /** + * A hop the refresh algorithm might evaluate. If the same hop is seen again + * the evaluation is stopped. This of course is a fairly simple heuristic. + * Sequences of refit orders can produce vehicles with all kinds of + * different cargoes and remembering only one can lead to early termination + * of the algorithm. However, as the order language is Turing complete, we + * are facing the halting problem here. At some point we have to draw the + * line. + */ + struct Hop { + OrderID from; ///< Last order where vehicle could interact with cargo or absolute first order. + OrderID to; ///< Next order to be processed. + CargoID cargo; ///< Cargo the consist is probably carrying or CT_INVALID if unknown. + + /** + * Default constructor should not be called but has to be visible for + * usage in std::set. + */ + Hop() {NOT_REACHED();} + + /** + * Real constructor, only use this one. + * @param from First order of the hop. + * @param to Second order of the hop. + * @param cargo Cargo the consist is probably carrying when passing the hop. + */ + Hop(OrderID from, OrderID to, CargoID cargo) : from(from), to(to), cargo(cargo) {} + bool operator<(const Hop &other) const; + }; + + typedef std::list RefitList; + typedef std::map CapacitiesMap; + typedef std::set HopSet; + + Vehicle *vehicle; ///< Vehicle for which the links should be refreshed. + CapacitiesMap capacities; ///< Current added capacities per cargo ID in the consist. + RefitList refit_capacities; ///< Current state of capacity remaining from previous refits versus overall capacity per vehicle in the consist. + HopSet *seen_hops; ///< Hops already seen. If the same hop is seen twice we stop the algorithm. This is shared between all Refreshers of the same run. + CargoID cargo; ///< Cargo given in last refit order. + bool allow_merge; ///< If the refresher is allowed to merge or extend link graphs. + bool is_full_loading; ///< If the vehicle is full loading. + + LinkRefresher(Vehicle *v, HopSet *seen_hops, bool allow_merge, bool is_full_loading); + + bool HandleRefit(CargoID refit_cargo); + void ResetRefit(); + void RefreshStats(const Order *cur, const Order *next); + const Order *PredictNextOrder(const Order *cur, const Order *next, uint8 flags, uint num_hops = 0); + + void RefreshLinks(const Order *cur, const Order *next, uint8 flags, uint num_hops = 0); +}; + +#endif /* REFRESH_H */ diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 350439ce15..cdef1e6a6e 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -45,6 +45,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + static int _rename_id = 1; static int _rename_what = -1; @@ -253,11 +255,17 @@ struct MainWindow : Window virtual void OnTick() { - if (--refresh == 0) { - this->viewport->overlay->RebuildCache(); - this->GetWidget(WID_M_VIEWPORT)->SetDirty(this); - this->refresh = LINKGRAPH_REFRESH_PERIOD; + if (--this->refresh > 0) return; + + this->refresh = LINKGRAPH_REFRESH_PERIOD; + + if (this->viewport->overlay->GetCargoMask() == 0 || + this->viewport->overlay->GetCompanyMask() == 0) { + return; } + + this->viewport->overlay->RebuildCache(); + this->GetWidget(WID_M_VIEWPORT)->SetDirty(this); } virtual void OnPaint() diff --git a/src/map.cpp b/src/map.cpp index 1ee0ba247c..252f20b607 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -13,6 +13,9 @@ #include "debug.h" #include "core/alloc_func.hpp" #include "water_map.h" +#include "string_func.h" + +#include "safeguards.h" #if defined(_MSC_VER) /* Why the hell is that not in all MSVC headers?? */ @@ -82,7 +85,7 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add, if (x >= MapSizeX() || y >= MapSizeY()) { char buf[512]; - snprintf(buf, lengthof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", + seprintf(buf, lastof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", exp, tile, add); #if !defined(_MSC_VER) || defined(WINCE) fprintf(stderr, "%s:%d %s\n", file, line, buf); diff --git a/src/map_type.h b/src/map_type.h index c55f77c801..620885e5da 100644 --- a/src/map_type.h +++ b/src/map_type.h @@ -17,20 +17,23 @@ * Look at docs/landscape.html for the exact meaning of the members. */ struct Tile { - byte type_height; ///< The type (bits 4..7) and height of the northern corner - byte m1; ///< Primarily used for ownership information + byte type; ///< The type (bits 4..7), bridges (2..3), rainforest/desert (0..1) + byte height; ///< The height of the northern corner. uint16 m2; ///< Primarily used for indices to towns, industries and stations + byte m1; ///< Primarily used for ownership information byte m3; ///< General purpose byte m4; ///< General purpose byte m5; ///< General purpose - byte m6; ///< Primarily used for bridges and rainforest/desert }; +assert_compile(sizeof(Tile) == 8); + /** * Data that is stored per tile. Also used Tile for this. * Look at docs/landscape.html for the exact meaning of the members. */ struct TileExtended { + byte m6; ///< General purpose byte m7; ///< Primarily used for newgrf support }; @@ -59,9 +62,9 @@ struct TileIndexDiffC { /** Minimal and maximal map width and height */ static const uint MIN_MAP_SIZE_BITS = 6; ///< Minimal size of map is equal to 2 ^ MIN_MAP_SIZE_BITS -static const uint MAX_MAP_SIZE_BITS = 11; ///< Maximal size of map is equal to 2 ^ MAX_MAP_SIZE_BITS +static const uint MAX_MAP_SIZE_BITS = 12; ///< Maximal size of map is equal to 2 ^ MAX_MAP_SIZE_BITS static const uint MIN_MAP_SIZE = 1 << MIN_MAP_SIZE_BITS; ///< Minimal map size = 64 -static const uint MAX_MAP_SIZE = 1 << MAX_MAP_SIZE_BITS; ///< Maximal map size = 2048 +static const uint MAX_MAP_SIZE = 1 << MAX_MAP_SIZE_BITS; ///< Maximal map size = 4096 /** * Approximation of the length of a straight track, relative to a diagonal diff --git a/src/misc.cpp b/src/misc.cpp index 11607a5f1d..d9d506993f 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -29,6 +29,8 @@ #include "game/game.hpp" #include "linkgraph/linkgraphschedule.h" +#include "safeguards.h" + extern TileIndex _cur_tileloop_tile; extern void MakeNewgameSettingsLive(); diff --git a/src/misc/countedobj.cpp b/src/misc/countedobj.cpp index 228b35e82a..28f614afab 100644 --- a/src/misc/countedobj.cpp +++ b/src/misc/countedobj.cpp @@ -13,6 +13,8 @@ #include "countedptr.hpp" +#include "../safeguards.h" + int32 SimpleCountedObject::AddRef() { return ++m_ref_cnt; diff --git a/src/misc/dbg_helpers.cpp b/src/misc/dbg_helpers.cpp index f87070fa0d..a80230de1c 100644 --- a/src/misc/dbg_helpers.cpp +++ b/src/misc/dbg_helpers.cpp @@ -13,6 +13,8 @@ #include "../rail_map.h" #include "dbg_helpers.h" +#include "../safeguards.h" + /** Trackdir & TrackdirBits short names. */ static const char * const trackdir_names[] = { "NE", "SE", "UE", "LE", "LS", "RS", "rne", "rse", diff --git a/src/misc/getoptdata.cpp b/src/misc/getoptdata.cpp index 6ca9a1bfc6..7859594dd9 100644 --- a/src/misc/getoptdata.cpp +++ b/src/misc/getoptdata.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "getoptdata.h" +#include "../safeguards.h" + /** * Find the next option. * @return Function returns one diff --git a/src/misc/str.hpp b/src/misc/str.hpp index b109b4e82f..b982913fc2 100644 --- a/src/misc/str.hpp +++ b/src/misc/str.hpp @@ -100,7 +100,7 @@ struct CStrA : public CBlobT int err = 0; for (;;) { char *buf = MakeFreeSpace(addSize); - ret = vsnprintf(buf, base::GetReserve(), format, args); + ret = vseprintf(buf, buf + base::GetReserve() - 1, format, args); if (ret >= (int)base::GetReserve()) { /* Greater return than given count means needed buffer size. */ addSize = ret + 1; diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index 9c01eef5d7..e7da13c7aa 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -12,6 +12,7 @@ #include "stdafx.h" #include "command_func.h" #include "economy_func.h" +#include "cmd_helper.h" #include "window_func.h" #include "textbuf_gui.h" #include "network/network.h" @@ -24,6 +25,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Increase the loan of your company. * @param tile unused @@ -194,7 +197,7 @@ CommandCost CmdPause(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, * Change the financial flow of your company. * @param tile unused * @param flags operation to perform - * @param p1 the amount of money to receive (if negative), or spend (if positive) + * @param p1 the amount of money to receive (if positive), or spend (if negative) * @param p2 unused * @param text unused * @return the cost of this operation or an error @@ -204,6 +207,38 @@ CommandCost CmdMoneyCheat(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 return CommandCost(EXPENSES_OTHER, -(int32)p1); } +/** + * Change the bank bank balance of a company by inserting or removing money without affecting the loan. + * @param tile unused + * @param flags operation to perform + * @param p1 the amount of money to receive (if positive), or spend (if negative) + * @param p2 (bit 0-7) - the company ID. + * (bit 8-15) - the expenses type which should register the cost/income @see ExpensesType. + * @param text unused + * @return zero cost or an error + */ +CommandCost CmdChangeBankBalance(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + int32 delta = (int32)p1; + CompanyID company = (CompanyID) GB(p2, 0, 8); + ExpensesType expenses_type = Extract(p2); + + if (!Company::IsValidID(company)) return CMD_ERROR; + if (expenses_type >= EXPENSES_END) return CMD_ERROR; + if (_current_company != OWNER_DEITY) return CMD_ERROR; + + if (flags & DC_EXEC) { + /* Change company bank balance of company. */ + Backup cur_company(_current_company, company, FILE_LINE); + SubtractMoneyFromCompany(CommandCost(expenses_type, -delta)); + cur_company.Restore(); + } + + /* This command doesn't cost anyting for deity. */ + CommandCost zero_cost(expenses_type, 0); + return zero_cost; +} + /** * Transfer funds (money) from one company to another. * To prevent abuse in multiplayer games you can only send money to other diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index d771f92eeb..62da50b966 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -25,11 +25,14 @@ #include "querystring_gui.h" #include "core/geometry_func.hpp" #include "newgrf_debug.h" +#include "zoom_func.h" #include "widgets/misc_widget.h" #include "table/strings.h" +#include "safeguards.h" + /** Method to open the OSK. */ enum OskActivation { OSKA_DISABLED, ///< The OSK shall not be activated at all. @@ -57,7 +60,7 @@ static WindowDesc _land_info_desc( class LandInfoWindow : public Window { enum LandInfoLines { - LAND_INFO_CENTERED_LINES = 12, ///< Up to 12 centered lines + LAND_INFO_CENTERED_LINES = 32, ///< Up to 32 centered lines (arbitrary limit) LAND_INFO_MULTICENTER_LINE = LAND_INFO_CENTERED_LINES, ///< One multicenter line LAND_INFO_LINE_END, }; @@ -120,14 +123,15 @@ public: # define LANDINFOD_LEVEL 1 #endif DEBUG(misc, LANDINFOD_LEVEL, "TILE: %#x (%i,%i)", tile, TileX(tile), TileY(tile)); - DEBUG(misc, LANDINFOD_LEVEL, "type_height = %#x", _m[tile].type_height); - DEBUG(misc, LANDINFOD_LEVEL, "m1 = %#x", _m[tile].m1); - DEBUG(misc, LANDINFOD_LEVEL, "m2 = %#x", _m[tile].m2); - DEBUG(misc, LANDINFOD_LEVEL, "m3 = %#x", _m[tile].m3); - DEBUG(misc, LANDINFOD_LEVEL, "m4 = %#x", _m[tile].m4); - DEBUG(misc, LANDINFOD_LEVEL, "m5 = %#x", _m[tile].m5); - DEBUG(misc, LANDINFOD_LEVEL, "m6 = %#x", _m[tile].m6); - DEBUG(misc, LANDINFOD_LEVEL, "m7 = %#x", _me[tile].m7); + DEBUG(misc, LANDINFOD_LEVEL, "type = %#x", _m[tile].type); + DEBUG(misc, LANDINFOD_LEVEL, "height = %#x", _m[tile].height); + DEBUG(misc, LANDINFOD_LEVEL, "m1 = %#x", _m[tile].m1); + DEBUG(misc, LANDINFOD_LEVEL, "m2 = %#x", _m[tile].m2); + DEBUG(misc, LANDINFOD_LEVEL, "m3 = %#x", _m[tile].m3); + DEBUG(misc, LANDINFOD_LEVEL, "m4 = %#x", _m[tile].m4); + DEBUG(misc, LANDINFOD_LEVEL, "m5 = %#x", _m[tile].m5); + DEBUG(misc, LANDINFOD_LEVEL, "m6 = %#x", _me[tile].m6); + DEBUG(misc, LANDINFOD_LEVEL, "m7 = %#x", _me[tile].m7); #undef LANDINFOD_LEVEL } @@ -159,6 +163,7 @@ public: td.airport_name = STR_NULL; td.airport_tile_name = STR_NULL; td.rail_speed = 0; + td.road_speed = 0; td.grf = NULL; @@ -208,7 +213,7 @@ public: /* Location */ char tmp[16]; - snprintf(tmp, lengthof(tmp), "0x%.4X", tile); + seprintf(tmp, lastof(tmp), "0x%.4X", tile); SetDParam(0, TileX(tile)); SetDParam(1, TileY(tile)); SetDParam(2, GetTileZ(tile)); @@ -274,6 +279,13 @@ public: line_nr++; } + /* Road speed limit */ + if (td.road_speed != 0) { + SetDParam(0, td.road_speed); + GetString(this->landinfo_data[line_nr], STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT, lastof(this->landinfo_data[line_nr])); + line_nr++; + } + /* NewGRF name */ if (td.grf != NULL) { SetDParamStr(0, td.grf); @@ -377,46 +389,47 @@ static const char * const _credits[] = { "Original graphics by Simon Foster", "", "The OpenTTD team (in alphabetical order):", - " Albert Hofkamp (Alberth) - GUI expert", - " Jean-Fran\xC3\xA7ois Claeys (Belugas) - GUI, newindustries and more", - " Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework", - " Christoph Elsenhans (frosch) - General coding", - " Ulf Hermann (fonsinchen) - Cargo Distribution", - " Lo\xC3\xAF""c Guilloux (glx) - Windows Expert", - " Michael Lutz (michi_cc) - Path based signals", - " Owen Rudge (orudge) - Forum host, OS/2 port", - " Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods", - " Ingo von Borstel (planetmaker) - Support", - " Remko Bijker (Rubidium) - Lead coder and way more", - " Zden\xC4\x9Bk Sojka (SmatZ) - Bug finder and fixer", - " Jos\xC3\xA9 Soler (Terkhen) - General coding", - " Thijs Marinussen (Yexo) - AI Framework", - " Leif Linse (Zuu) - AI/Game Script", + " 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)", + " Christoph Elsenhans (frosch) - General coding (since 0.6)", + " Lo\xC3\xAF""c Guilloux (glx) - General / Windows Expert (since 0.4.5)", + " Michael Lutz (michi_cc) - Path based signals (since 0.7)", + " Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)", + " Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods (since 0.4.5)", + " Ingo von Borstel (planetmaker) - General, Support (since 1.1)", + " Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)", + " Jos\xC3\xA9 Soler (Terkhen) - General coding (since 1.0)", + " Leif Linse (Zuu) - AI/Game Script (since 1.2)", "", "Inactive Developers:", - " Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles", - " Victor Fischer (Celestar) - Programming everywhere you need him to", - " Tam\xC3\xA1s Farag\xC3\xB3 (Darkvater) - Ex-Lead coder", - " Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)", - " Jonathan Coome (Maedhros) - High priest of the NewGRF Temple", - " Attila B\xC3\xA1n (MiHaMiX) - Developer WebTranslator 1 and 2", - " Christoph Mallon (Tron) - Programmer, code correctness police", + " Jean-Fran\xC3\xA7ois Claeys (Belugas) - GUI, NewGRF and more (0.4.5 - 1.0)", + " Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7)", + " Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)", + " Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)", + " Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)", + " Attila B\xC3\xA1n (MiHaMiX) - Developer WebTranslator 1 and 2 (0.3 - 0.5)", + " Zden\xC4\x9Bk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)", + " Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)", + " Patric Stout (TrueBrain) - NoAI, NoGo, Network (0.3 - 1.2), sys op (active)", + " Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)", "", "Retired Developers:", - " Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)", - " Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)", - " Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)", - " Benedikt Br\xC3\xBCggemeier (skidd13) - Bug fixer and code reworker", - " Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)", + " Tam\xC3\xA1s Farag\xC3\xB3 (Darkvater) - Ex-Lead coder (0.3 - 0.5)", + " Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)", + " Emil Djupfeld (egladil) - MacOSX (0.4.5 - 0.6)", + " Simon Sasburg (HackyKid) - Many bugfixes (0.4 - 0.4.5)", + " Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)", + " Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)", + " Petr Baudi\xC5\xA1 (pasky) - Many patches, NewGRF support (0.3 - 0.3)", + " Benedikt Br\xC3\xBCggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)", + " Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)", "", "Special thanks go out to:", " Josef Drexler - For his great work on TTDPatch", " Marcin Grzegorczyk - Track foundations and for describing TTD internals", - " Petr Baudi\xC5\xA1 (pasky) - Many patches, newGRF support", - " Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with", " Stefan Mei\xC3\x9Fner (sign_de) - For his work on the console", " Mike Ragsdale - OpenTTD installer", - " Cian Duffy (MYOB) - BeOS port / manual writing", " Christian Rosentreter (tokai) - MorphOS / AmigaOS port", " Richard Kempton (richK) - additional airports, initial TGP implementation", "", @@ -619,7 +632,7 @@ static const NWidgetPart _nested_tooltips_widgets[] = { static WindowDesc _tool_tips_desc( WDP_MANUAL, NULL, 0, 0, // Coordinates and sizes are not used, WC_TOOLTIPS, WC_NONE, - 0, + WDF_NO_FOCUS, _nested_tooltips_widgets, lengthof(_nested_tooltips_widgets) ); @@ -671,7 +684,7 @@ struct TooltipsWindow : public Window /* There is only one widget. */ for (uint i = 0; i != this->paramcount; i++) SetDParam(i, this->params[i]); - size->width = min(GetStringBoundingBox(this->string_id).width, 194); + size->width = min(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194)); size->height = GetStringHeight(this->string_id, size->width); /* Increase slightly to have some space around the box. */ @@ -936,7 +949,7 @@ struct QueryStringWindow : public Window this->editbox.text.UpdateSize(); - if ((flags & QSF_ACCEPT_UNCHANGED) == 0) this->editbox.orig = strdup(this->editbox.text.buf); + if ((flags & QSF_ACCEPT_UNCHANGED) == 0) this->editbox.orig = stredup(this->editbox.text.buf); this->querystrings[WID_QS_TEXT] = &this->editbox; this->editbox.caption = caption; @@ -1156,8 +1169,8 @@ static const NWidgetPart _nested_query_widgets[] = { NWidget(WWT_PANEL, COLOUR_RED), SetPIP(8, 15, 8), NWidget(WWT_TEXT, COLOUR_RED, WID_Q_TEXT), SetMinimalSize(200, 12), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(20, 29, 20), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_NO), SetMinimalSize(71, 12), SetDataTip(STR_QUIT_NO, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_YES), SetMinimalSize(71, 12), SetDataTip(STR_QUIT_YES, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_NO), SetMinimalSize(71, 12), SetFill(1, 1), SetDataTip(STR_QUIT_NO, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_YES), SetMinimalSize(71, 12), SetFill(1, 1), SetDataTip(STR_QUIT_YES, STR_NULL), EndContainer(), EndContainer(), }; diff --git a/src/mixer.cpp b/src/mixer.cpp index 401a9c0ba2..5945bd235a 100644 --- a/src/mixer.cpp +++ b/src/mixer.cpp @@ -13,6 +13,8 @@ #include #include "core/math_func.hpp" +#include "safeguards.h" + struct MixerChannel { bool active; diff --git a/src/music.cpp b/src/music.cpp index 55599a947b..4001e621e1 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -15,6 +15,8 @@ #define SET_TYPE "music" #include "base_media_func.h" +#include "safeguards.h" + INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, MusicSet) /** Names corresponding to the music set's files */ diff --git a/src/music/allegro_m.cpp b/src/music/allegro_m.cpp index 9551825905..77b488186a 100644 --- a/src/music/allegro_m.cpp +++ b/src/music/allegro_m.cpp @@ -16,6 +16,8 @@ #include "allegro_m.h" #include +#include "../safeguards.h" + static FMusicDriver_Allegro iFMusicDriver_Allegro; static MIDI *_midi = NULL; diff --git a/src/music/allegro_m.h b/src/music/allegro_m.h index 2160c396e5..69cf59569a 100644 --- a/src/music/allegro_m.h +++ b/src/music/allegro_m.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** Allegro's music player. */ -class MusicDriver_Allegro: public MusicDriver { +class MusicDriver_Allegro : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -32,20 +32,18 @@ public: }; /** Factory for allegro's music player. */ -class FMusicDriver_Allegro: public MusicDriverFactory { +class FMusicDriver_Allegro : public DriverFactoryBase { public: #if !defined(WITH_SDL) && defined(WITH_ALLEGRO) /* If SDL is not compiled in but Allegro is, chances are quite big * that Allegro is going to be used. Then favour this sound driver * over extmidi because with extmidi we get crashes. */ - static const int priority = 9; + static const int PRIORITY = 9; #else - static const int priority = 2; + static const int PRIORITY = 2; #endif - - /* virtual */ const char *GetName() { return "allegro"; } - /* virtual */ const char *GetDescription() { return "Allegro MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_Allegro(); } + FMusicDriver_Allegro() : DriverFactoryBase(Driver::DT_MUSIC, PRIORITY, "allegro", "Allegro MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_Allegro(); } }; #endif /* MUSIC_ALLEGRO_H */ diff --git a/src/music/bemidi.cpp b/src/music/bemidi.cpp index 5ee62dfe51..2bc2074763 100644 --- a/src/music/bemidi.cpp +++ b/src/music/bemidi.cpp @@ -16,6 +16,8 @@ /* BeOS System Includes */ #include +#include "../safeguards.h" + /** The file we're playing. */ static BMidiSynthFile midiSynthFile; diff --git a/src/music/bemidi.h b/src/music/bemidi.h index 1b280e667d..23c6249d59 100644 --- a/src/music/bemidi.h +++ b/src/music/bemidi.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** The midi player for BeOS. */ -class MusicDriver_BeMidi: public MusicDriver { +class MusicDriver_BeMidi : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -32,12 +32,10 @@ public: }; /** Factory for the BeOS midi player. */ -class FMusicDriver_BeMidi: public MusicDriverFactory { +class FMusicDriver_BeMidi : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "bemidi"; } - /* virtual */ const char *GetDescription() { return "BeOS MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_BeMidi(); } + FMusicDriver_BeMidi() : DriverFactoryBase(Driver::DT_MUSIC, 10, "bemidi", "BeOS MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_BeMidi(); } }; #endif /* MUSIC_BEMIDI_H */ diff --git a/src/music/cocoa_m.cpp b/src/music/cocoa_m.cpp index e7c7d6b752..a201984ae1 100644 --- a/src/music/cocoa_m.cpp +++ b/src/music/cocoa_m.cpp @@ -28,6 +28,8 @@ #undef Rect #undef Point +#include "../safeguards.h" + static FMusicDriver_Cocoa iFMusicDriver_Cocoa; diff --git a/src/music/cocoa_m.h b/src/music/cocoa_m.h index f3cff9db88..1963bef5b7 100644 --- a/src/music/cocoa_m.h +++ b/src/music/cocoa_m.h @@ -14,7 +14,7 @@ #include "music_driver.hpp" -class MusicDriver_Cocoa: public MusicDriver { +class MusicDriver_Cocoa : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -30,12 +30,10 @@ public: /* virtual */ const char *GetName() const { return "cocoa"; } }; -class FMusicDriver_Cocoa: public MusicDriverFactory { +class FMusicDriver_Cocoa : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "cocoa"; } - /* virtual */ const char *GetDescription() { return "Cocoa MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_Cocoa(); } + FMusicDriver_Cocoa() : DriverFactoryBase(Driver::DT_MUSIC, 10, "cocoa", "Cocoa MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_Cocoa(); } }; #endif /* MUSIC_MACOSX_COCOA_H */ diff --git a/src/music/dmusic.cpp b/src/music/dmusic.cpp index 185d66a769..40ce69d1a0 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -27,6 +27,8 @@ #include #include +#include "../safeguards.h" + static FMusicDriver_DMusic iFMusicDriver_DMusic; /** the direct music object manages buffers and ports */ diff --git a/src/music/dmusic.h b/src/music/dmusic.h index 29eee8ed0c..7287623e48 100644 --- a/src/music/dmusic.h +++ b/src/music/dmusic.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** Music player making use of DirectX. */ -class MusicDriver_DMusic: public MusicDriver { +class MusicDriver_DMusic : public MusicDriver { public: virtual ~MusicDriver_DMusic(); @@ -34,12 +34,10 @@ public: }; /** Factory for the DirectX music player. */ -class FMusicDriver_DMusic: public MusicDriverFactory { +class FMusicDriver_DMusic : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "dmusic"; } - /* virtual */ const char *GetDescription() { return "DirectMusic MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_DMusic(); } + FMusicDriver_DMusic() : DriverFactoryBase(Driver::DT_MUSIC, 10, "dmusic", "DirectMusic MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_DMusic(); } }; #endif /* MUSIC_DMUSIC_H */ diff --git a/src/music/extmidi.cpp b/src/music/extmidi.cpp index 93492aa996..f4a35360c0 100644 --- a/src/music/extmidi.cpp +++ b/src/music/extmidi.cpp @@ -9,7 +9,6 @@ /** @file extmidi.cpp Playing music via an external player. */ -#ifndef __MORPHOS__ #include "../stdafx.h" #include "../debug.h" #include "../string_func.h" @@ -25,6 +24,8 @@ #include #include +#include "../safeguards.h" + #ifndef EXTERNAL_PLAYER /** The default external midi player. */ #define EXTERNAL_PLAYER "timidity" @@ -35,15 +36,15 @@ static FMusicDriver_ExtMidi iFMusicDriver_ExtMidi; const char *MusicDriver_ExtMidi::Start(const char * const * parm) { - if (strcmp(_video_driver->GetName(), "allegro") == 0 || - strcmp(_sound_driver->GetName(), "allegro") == 0) { + if (strcmp(VideoDriver::GetInstance()->GetName(), "allegro") == 0 || + strcmp(SoundDriver::GetInstance()->GetName(), "allegro") == 0) { return "the extmidi driver does not work when Allegro is loaded."; } const char *command = GetDriverParam(parm, "cmd"); if (StrEmpty(command)) command = EXTERNAL_PLAYER; - this->command = strdup(command); + this->command = stredup(command); this->song[0] = '\0'; this->pid = -1; return NULL; @@ -133,5 +134,3 @@ void MusicDriver_ExtMidi::DoStop() waitpid(this->pid, NULL, 0); this->pid = -1; } - -#endif /* __MORPHOS__ */ diff --git a/src/music/extmidi.h b/src/music/extmidi.h index 1638c78f5d..c6a9e08f8d 100644 --- a/src/music/extmidi.h +++ b/src/music/extmidi.h @@ -14,7 +14,7 @@ #include "music_driver.hpp" -class MusicDriver_ExtMidi: public MusicDriver { +class MusicDriver_ExtMidi : public MusicDriver { private: char *command; char song[MAX_PATH]; @@ -38,12 +38,10 @@ public: /* virtual */ const char *GetName() const { return "extmidi"; } }; -class FMusicDriver_ExtMidi: public MusicDriverFactory { +class FMusicDriver_ExtMidi : public DriverFactoryBase { public: - static const int priority = 3; - /* virtual */ const char *GetName() { return "extmidi"; } - /* virtual */ const char *GetDescription() { return "External MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_ExtMidi(); } + FMusicDriver_ExtMidi() : DriverFactoryBase(Driver::DT_MUSIC, 3, "extmidi", "External MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_ExtMidi(); } }; #endif /* MUSIC_EXTERNAL_H */ diff --git a/src/music/libtimidity.cpp b/src/music/libtimidity.cpp index 92f17212c3..1cb2adc0f9 100644 --- a/src/music/libtimidity.cpp +++ b/src/music/libtimidity.cpp @@ -26,6 +26,8 @@ #include #endif /* PSP */ +#include "../safeguards.h" + /** The state of playing. */ enum MidiState { MIDI_STOPPED = 0, diff --git a/src/music/libtimidity.h b/src/music/libtimidity.h index 4f93436192..abe17e7703 100644 --- a/src/music/libtimidity.h +++ b/src/music/libtimidity.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** Music driver making use of libtimidity. */ -class MusicDriver_LibTimidity: public MusicDriver { +class MusicDriver_LibTimidity : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -32,12 +32,10 @@ public: }; /** Factory for the libtimidity driver. */ -class FMusicDriver_LibTimidity: public MusicDriverFactory { +class FMusicDriver_LibTimidity : public DriverFactoryBase { public: - static const int priority = 5; - /* virtual */ const char *GetName() { return "libtimidity"; } - /* virtual */ const char *GetDescription() { return "LibTimidity MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_LibTimidity(); } + FMusicDriver_LibTimidity() : DriverFactoryBase(Driver::DT_MUSIC, 5, "libtimidity", "LibTimidity MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_LibTimidity(); } }; #endif /* MUSIC_LIBTIMIDITY_H */ diff --git a/src/music/music_driver.hpp b/src/music/music_driver.hpp index 70a1e37a5a..be09d3ea2b 100644 --- a/src/music/music_driver.hpp +++ b/src/music/music_driver.hpp @@ -15,7 +15,7 @@ #include "../driver.h" /** Driver for all music playback. */ -class MusicDriver: public Driver { +class MusicDriver : public Driver { public: /** * Play a particular song. @@ -39,28 +39,15 @@ public: * @param vol The new volume. */ virtual void SetVolume(byte vol) = 0; -}; - -/** Base of the factory for the music drivers. */ -class MusicDriverFactoryBase: public DriverFactoryBase { -}; - -/** - * Factory for the music drivers. - * @tparam T The type of the music factory to register. - */ -template -class MusicDriverFactory: public MusicDriverFactoryBase { -public: - MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC, ((T *)this)->priority); } /** - * Get the long, human readable, name for the Driver-class. + * Get the currently active instance of the music driver. */ - const char *GetName(); + static MusicDriver *GetInstance() { + return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_MUSIC)); + } }; -extern MusicDriver *_music_driver; extern char *_ini_musicdriver; #endif /* MUSIC_MUSIC_DRIVER_HPP */ diff --git a/src/music/null_m.cpp b/src/music/null_m.cpp index cb42a906a5..90d08d04a1 100644 --- a/src/music/null_m.cpp +++ b/src/music/null_m.cpp @@ -12,5 +12,7 @@ #include "../stdafx.h" #include "null_m.h" +#include "../safeguards.h" + /** The factory for the music player that does nothing. */ static FMusicDriver_Null iFMusicDriver_Null; diff --git a/src/music/null_m.h b/src/music/null_m.h index babfd37755..df9f7d80d5 100644 --- a/src/music/null_m.h +++ b/src/music/null_m.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** The music player that does nothing. */ -class MusicDriver_Null: public MusicDriver { +class MusicDriver_Null : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param) { return NULL; } @@ -32,12 +32,10 @@ public: }; /** Factory for the null music player. */ -class FMusicDriver_Null: public MusicDriverFactory { +class FMusicDriver_Null : public DriverFactoryBase { public: - static const int priority = 1; - /* virtual */ const char *GetName() { return "null"; } - /* virtual */ const char *GetDescription() { return "Null Music Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_Null(); } + FMusicDriver_Null() : DriverFactoryBase(Driver::DT_MUSIC, 1, "null", "Null Music Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_Null(); } }; #endif /* MUSIC_NULL_H */ diff --git a/src/music/os2_m.cpp b/src/music/os2_m.cpp index ec1fca2645..d7fb97d2d3 100644 --- a/src/music/os2_m.cpp +++ b/src/music/os2_m.cpp @@ -21,6 +21,8 @@ #include #include +#include "../safeguards.h" + /********************** * OS/2 MIDI PLAYER **********************/ diff --git a/src/music/os2_m.h b/src/music/os2_m.h index 054526e59e..f35e2fdcf6 100644 --- a/src/music/os2_m.h +++ b/src/music/os2_m.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** OS/2's music player. */ -class MusicDriver_OS2: public MusicDriver { +class MusicDriver_OS2 : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -32,12 +32,10 @@ public: }; /** Factory for OS/2's music player. */ -class FMusicDriver_OS2: public MusicDriverFactory { +class FMusicDriver_OS2 : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "os2"; } - /* virtual */ const char *GetDescription() { return "OS/2 Music Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_OS2(); } + FMusicDriver_OS2() : DriverFactoryBase(Driver::DT_MUSIC, 10, "os2", "OS/2 Music Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_OS2(); } }; #endif /* MUSIC_OS2_H */ diff --git a/src/music/qtmidi.cpp b/src/music/qtmidi.cpp index 0cfe318e7b..dfd6f16eb3 100644 --- a/src/music/qtmidi.cpp +++ b/src/music/qtmidi.cpp @@ -38,6 +38,8 @@ #undef Rect #undef Point +#include "../safeguards.h" + static FMusicDriver_QtMidi iFMusicDriver_QtMidi; diff --git a/src/music/qtmidi.h b/src/music/qtmidi.h index 806a3c1968..f0e17086e4 100644 --- a/src/music/qtmidi.h +++ b/src/music/qtmidi.h @@ -14,7 +14,7 @@ #include "music_driver.hpp" -class MusicDriver_QtMidi: public MusicDriver { +class MusicDriver_QtMidi : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -30,12 +30,10 @@ public: /* virtual */ const char *GetName() const { return "qt"; } }; -class FMusicDriver_QtMidi: public MusicDriverFactory { +class FMusicDriver_QtMidi : public DriverFactoryBase { public: - static const int priority = 5; - /* virtual */ const char *GetName() { return "qt"; } - /* virtual */ const char *GetDescription() { return "QuickTime MIDI Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_QtMidi(); } + FMusicDriver_QtMidi() : DriverFactoryBase(Driver::DT_MUSIC, 5, "qt", "QuickTime MIDI Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_QtMidi(); } }; #endif /* MUSIC_MACOSX_QUICKTIME_H */ diff --git a/src/music/win32_m.cpp b/src/music/win32_m.cpp index 65ffbbc6b3..d3a7019a0f 100644 --- a/src/music/win32_m.cpp +++ b/src/music/win32_m.cpp @@ -15,6 +15,8 @@ #include #include +#include "../safeguards.h" + static struct { bool stop_song; bool terminate; diff --git a/src/music/win32_m.h b/src/music/win32_m.h index cf46fbc152..3efee3243a 100644 --- a/src/music/win32_m.h +++ b/src/music/win32_m.h @@ -15,7 +15,7 @@ #include "music_driver.hpp" /** The Windows music player. */ -class MusicDriver_Win32: public MusicDriver { +class MusicDriver_Win32 : public MusicDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -32,12 +32,10 @@ public: }; /** Factory for Windows' music player. */ -class FMusicDriver_Win32: public MusicDriverFactory { +class FMusicDriver_Win32 : public DriverFactoryBase { public: - static const int priority = 5; - /* virtual */ const char *GetName() { return "win32"; } - /* virtual */ const char *GetDescription() { return "Win32 Music Driver"; } - /* virtual */ Driver *CreateInstance() { return new MusicDriver_Win32(); } + FMusicDriver_Win32() : DriverFactoryBase(Driver::DT_MUSIC, 5, "win32", "Win32 Music Driver") {} + /* virtual */ Driver *CreateInstance() const { return new MusicDriver_Win32(); } }; #endif /* MUSIC_WIN32_H */ diff --git a/src/music_gui.cpp b/src/music_gui.cpp index aabf230820..279f376525 100644 --- a/src/music_gui.cpp +++ b/src/music_gui.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + /** * Get the name of the song. * @param index of the song. @@ -174,22 +176,22 @@ static void SkipToNextSong() static void MusicVolumeChanged(byte new_vol) { - _music_driver->SetVolume(new_vol); + MusicDriver::GetInstance()->SetVolume(new_vol); } static void DoPlaySong() { char filename[MAX_PATH]; - if (FioFindFullPath(filename, lengthof(filename), BASESET_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename) == NULL) { - FioFindFullPath(filename, lengthof(filename), OLD_GM_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename); + if (FioFindFullPath(filename, lastof(filename), BASESET_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename) == NULL) { + FioFindFullPath(filename, lastof(filename), OLD_GM_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename); } - _music_driver->PlaySong(filename); + MusicDriver::GetInstance()->PlaySong(filename); SetWindowDirty(WC_MUSIC_WINDOW, 0); } static void DoStopMusic() { - _music_driver->StopSong(); + MusicDriver::GetInstance()->StopSong(); SetWindowDirty(WC_MUSIC_WINDOW, 0); } @@ -200,12 +202,17 @@ static void SelectSongToPlay() memset(_cur_playlist, 0, sizeof(_cur_playlist)); do { - const char *filename = BaseMusic::GetUsedSet()->files[_playlists[_settings_client.music.playlist][i] - 1].filename; - /* We are now checking for the existence of that file prior - * to add it to the list of available songs */ - if (!StrEmpty(filename) && FioCheckFileExists(filename, BASESET_DIR)) { - _cur_playlist[j] = _playlists[_settings_client.music.playlist][i]; - j++; + /* File is the index into the file table of the music set. The play list uses 0 as 'no entry', + * so we need to subtract 1. In case of 'no entry' (file = -1), just skip adding it outright. */ + int file = _playlists[_settings_client.music.playlist][i] - 1; + if (file >= 0) { + const char *filename = BaseMusic::GetUsedSet()->files[file].filename; + /* We are now checking for the existence of that file prior + * to add it to the list of available songs */ + if (!StrEmpty(filename) && FioCheckFileExists(filename, BASESET_DIR)) { + _cur_playlist[j] = _playlists[_settings_client.music.playlist][i]; + j++; + } } } while (_playlists[_settings_client.music.playlist][++i] != 0 && j < lengthof(_cur_playlist) - 1); @@ -271,7 +278,7 @@ void MusicLoop() if (!_song_is_active) return; - if (!_music_driver->IsSongPlaying()) { + if (!MusicDriver::GetInstance()->IsSongPlaying()) { if (_game_mode != GM_MENU) { StopMusic(); SkipToNextSong(); @@ -682,6 +689,8 @@ static const NWidgetPart _nested_music_window_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_MUSIC_JAZZ_JUKEBOX_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index d8c990e240..62af3a40bf 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -16,6 +16,8 @@ #include "address.h" #include "../../debug.h" +#include "../../safeguards.h" + /** * Get the hostname; in case it wasn't given the * IPv4 dotted representation is given. @@ -354,10 +356,12 @@ static SOCKET ListenLoopProc(addrinfo *runp) DEBUG(net, 3, "[%s] could not set reusable %s sockets for port %s: %s", type, family, address, strerror(errno)); } +#ifndef __OS2__ if (runp->ai_family == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&on, sizeof(on)) == -1) { DEBUG(net, 3, "[%s] could not disable IPv4 over IPv6 on port %s: %s", type, address, strerror(errno)); } +#endif if (bind(sock, runp->ai_addr, (int)runp->ai_addrlen) != 0) { DEBUG(net, 1, "[%s] could not bind on %s port %s: %s", type, family, address, strerror(errno)); diff --git a/src/network/core/core.cpp b/src/network/core/core.cpp index 867bb4bb98..7a2ad92a29 100644 --- a/src/network/core/core.cpp +++ b/src/network/core/core.cpp @@ -18,6 +18,8 @@ #include "os_abstraction.h" #include "packet.h" +#include "../../safeguards.h" + #ifdef __MORPHOS__ /* the library base is required here */ diff --git a/src/network/core/host.cpp b/src/network/core/host.cpp index 0af0f7992c..cf98239f86 100644 --- a/src/network/core/host.cpp +++ b/src/network/core/host.cpp @@ -15,6 +15,8 @@ #include "../../debug.h" #include "address.h" +#include "../../safeguards.h" + /** * Internal implementation for finding the broadcast IPs. * This function is implemented multiple times for multiple targets. diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index 980c6f7f6d..9608f08fa7 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -239,11 +239,38 @@ static inline void OTTDfreeaddrinfo(struct addrinfo *ai) # include # include # define INADDR_NONE 0xffffffff +# include "../../3rdparty/os2/getaddrinfo.h" +# include "../../3rdparty/os2/getnameinfo.h" + +#define IPV6_V6ONLY 27 + +/* + * IPv6 address + */ +struct in6_addr { + union { + uint8_t __u6_addr8[16]; + uint16_t __u6_addr16[8]; + uint32_t __u6_addr32[4]; + } __u6_addr; /* 128-bit IP6 address */ +}; + +#define s6_addr __u6_addr.__u6_addr8 + +struct sockaddr_in6 { + uint8_t sin6_len; /* length of this struct */ + sa_family_t sin6_family; /* AF_INET6 */ + in_port_t sin6_port; /* Transport layer port # */ + uint32_t sin6_flowinfo; /* IP6 flow information */ + struct in6_addr sin6_addr; /* IP6 address */ + uint32_t sin6_scope_id; /* scope zone index */ +}; typedef int socklen_t; #if !defined(__INNOTEK_LIBC__) typedef unsigned long in_addr_t; #endif /* __INNOTEK_LIBC__ */ + #endif /* OS/2 */ /* MorphOS and Amiga stuff */ diff --git a/src/network/core/packet.cpp b/src/network/core/packet.cpp index 4d9345e824..7548132e0b 100644 --- a/src/network/core/packet.cpp +++ b/src/network/core/packet.cpp @@ -18,6 +18,8 @@ #include "packet.h" +#include "../../safeguards.h" + /** * Create a packet that is used to read from a network socket * @param cs the socket handler associated with the socket we are reading from diff --git a/src/network/core/tcp.cpp b/src/network/core/tcp.cpp index 8cfa2d60e5..790941fc01 100644 --- a/src/network/core/tcp.cpp +++ b/src/network/core/tcp.cpp @@ -18,6 +18,8 @@ #include "tcp.h" +#include "../../safeguards.h" + /** * Construct a socket handler for a TCP connection. * @param s The just opened TCP connection. @@ -237,9 +239,9 @@ bool NetworkTCPSocketHandler::CanSendReceive() tv.tv_sec = tv.tv_usec = 0; // don't block at all. #if !defined(__MORPHOS__) && !defined(__AMIGA__) - select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv); + if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) return false; #else - WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL); + if (WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL) < 0) return false; #endif this->writable = !!FD_ISSET(this->sock, &write_fd); diff --git a/src/network/core/tcp_admin.cpp b/src/network/core/tcp_admin.cpp index 0a3153319b..284ceda9b1 100644 --- a/src/network/core/tcp_admin.cpp +++ b/src/network/core/tcp_admin.cpp @@ -19,6 +19,8 @@ #include "tcp_admin.h" #include "../../debug.h" +#include "../../safeguards.h" + /* Make sure that these enums match. */ assert_compile((int)CRR_MANUAL == (int)ADMIN_CRR_MANUAL); assert_compile((int)CRR_AUTOCLEAN == (int)ADMIN_CRR_AUTOCLEAN); @@ -29,9 +31,11 @@ assert_compile((int)CRR_END == (int)ADMIN_CRR_END); * Create the admin handler for the given socket. * @param s The socket to communicate over. */ -NetworkAdminSocketHandler::NetworkAdminSocketHandler(SOCKET s) +NetworkAdminSocketHandler::NetworkAdminSocketHandler(SOCKET s) : status(ADMIN_STATUS_INACTIVE) { this->sock = s; + this->admin_name[0] = '\0'; + this->admin_version[0] = '\0'; } NetworkAdminSocketHandler::~NetworkAdminSocketHandler() diff --git a/src/network/core/tcp_connect.cpp b/src/network/core/tcp_connect.cpp index ed2885b0ed..ccbf93f3c3 100644 --- a/src/network/core/tcp_connect.cpp +++ b/src/network/core/tcp_connect.cpp @@ -18,6 +18,8 @@ #include "tcp.h" +#include "../../safeguards.h" + /** List of connections that are currently being created */ static SmallVector _tcp_connecters; diff --git a/src/network/core/tcp_content.cpp b/src/network/core/tcp_content.cpp index 8a4604feb0..fc22c4491f 100644 --- a/src/network/core/tcp_content.cpp +++ b/src/network/core/tcp_content.cpp @@ -24,6 +24,8 @@ #endif /* OPENTTD_MSU */ #include "tcp_content.h" +#include "../../safeguards.h" + /** Clear everything in the struct */ ContentInfo::ContentInfo() { diff --git a/src/network/core/tcp_game.cpp b/src/network/core/tcp_game.cpp index 711d6a2b7f..9b3f7b5ef3 100644 --- a/src/network/core/tcp_game.cpp +++ b/src/network/core/tcp_game.cpp @@ -22,16 +22,16 @@ #include "table/strings.h" +#include "../../safeguards.h" + /** * Create a new socket for the game connection. * @param s The socket to connect with. */ -NetworkGameSocketHandler::NetworkGameSocketHandler(SOCKET s) +NetworkGameSocketHandler::NetworkGameSocketHandler(SOCKET s) : info(NULL), client_id(INVALID_CLIENT_ID), + last_frame(_frame_counter), last_frame_server(_frame_counter), last_packet(_realtime_tick) { - this->sock = s; - this->last_frame = _frame_counter; - this->last_frame_server = _frame_counter; - this->last_packet = _realtime_tick; + this->sock = s; } /** diff --git a/src/network/core/tcp_game.h b/src/network/core/tcp_game.h index 761399639f..5c6cb5c34d 100644 --- a/src/network/core/tcp_game.h +++ b/src/network/core/tcp_game.h @@ -137,7 +137,7 @@ class CommandQueue { public: /** Initialise the command queue. */ - CommandQueue() : first(NULL), last(NULL) {} + CommandQueue() : first(NULL), last(NULL), count(0) {} /** Clear the command queue. */ ~CommandQueue() { this->Free(); } void Append(CommandPacket *p); diff --git a/src/network/core/tcp_http.cpp b/src/network/core/tcp_http.cpp index a9829d5604..a8bb64080a 100644 --- a/src/network/core/tcp_http.cpp +++ b/src/network/core/tcp_http.cpp @@ -20,6 +20,8 @@ #include "tcp_http.h" +#include "../../safeguards.h" + /** List of open HTTP connections. */ static SmallVector _http_connections; diff --git a/src/network/core/tcp_http.h b/src/network/core/tcp_http.h index 6222c76951..36520f1364 100644 --- a/src/network/core/tcp_http.h +++ b/src/network/core/tcp_http.h @@ -96,7 +96,7 @@ public: const char *data = NULL, int depth = 0) : TCPConnecter(address), callback(callback), - url(strdup(url)), + url(stredup(url)), data(data), depth(depth) { diff --git a/src/network/core/tcp_listen.h b/src/network/core/tcp_listen.h index 9fdf339c31..e6b5893324 100644 --- a/src/network/core/tcp_listen.h +++ b/src/network/core/tcp_listen.h @@ -64,7 +64,9 @@ public: DEBUG(net, 1, "[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), *iter); - send(s, (const char*)p.buffer, p.size, 0); + if (send(s, (const char*)p.buffer, p.size, 0) < 0) { + DEBUG(net, 0, "send failed with error %d", GET_LAST_ERROR()); + } closesocket(s); break; } @@ -79,7 +81,9 @@ public: Packet p(Tfull_packet); p.PrepareToSend(); - send(s, (const char*)p.buffer, p.size, 0); + if (send(s, (const char*)p.buffer, p.size, 0) < 0) { + DEBUG(net, 0, "send failed with error %d", GET_LAST_ERROR()); + } closesocket(s); continue; @@ -115,9 +119,9 @@ public: tv.tv_sec = tv.tv_usec = 0; // don't block at all. #if !defined(__MORPHOS__) && !defined(__AMIGA__) - select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv); + if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) return false; #else - WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL); + if (WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL) < 0) return false; #endif /* accept clients.. */ diff --git a/src/network/core/udp.cpp b/src/network/core/udp.cpp index ff6ecc6d17..ce5f06b1f2 100644 --- a/src/network/core/udp.cpp +++ b/src/network/core/udp.cpp @@ -18,6 +18,8 @@ #include "../../debug.h" #include "udp.h" +#include "../../safeguards.h" + /** * Create an UDP socket but don't listen yet. * @param bind the addresses to bind to. @@ -96,7 +98,9 @@ void NetworkUDPSocketHandler::SendPacket(Packet *p, NetworkAddress *recv, bool a if (broadcast) { /* Enable broadcast */ unsigned long val = 1; - setsockopt(s->second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)); + if (setsockopt(s->second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)) < 0) { + DEBUG(net, 1, "[udp] setting broadcast failed with: %i", GET_LAST_ERROR()); + } } #endif diff --git a/src/network/network.cpp b/src/network/network.cpp index 9601df50f6..ce37aaa3fa 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -38,6 +38,8 @@ #include "../gfx_func.h" #include "../error.h" +#include "../safeguards.h" + #ifdef DEBUG_DUMP_COMMANDS #include "../fileio_func.h" /** When running the server till the wait point, run as fast as we can! */ @@ -96,6 +98,18 @@ byte _network_clients_connected = 0; /* Some externs / forwards */ extern void StateGameLoop(); +/** + * Return whether there is any client connected or trying to connect at all. + * @return whether we have any client activity + */ +bool HasClients() +{ + NetworkClientSocket *cs; + FOR_ALL_CLIENT_SOCKETS(cs) return true; + + return false; +} + /** * Basically a client is leaving us right now. */ @@ -185,7 +199,7 @@ const char *GenerateCompanyPasswordHash(const char *password, const char *passwo char salted_password[NETWORK_SERVER_ID_LENGTH]; memset(salted_password, 0, sizeof(salted_password)); - snprintf(salted_password, sizeof(salted_password), "%s", password); + seprintf(salted_password, lastof(salted_password), "%s", password); /* Add the game seed and the server's ID as the salt. */ for (uint i = 0; i < NETWORK_SERVER_ID_LENGTH - 1; i++) { salted_password[i] ^= password_server_id[i] ^ (password_game_seed >> (i % 32)); @@ -199,8 +213,7 @@ const char *GenerateCompanyPasswordHash(const char *password, const char *passwo checksum.Append(salted_password, sizeof(salted_password) - 1); checksum.Finish(digest); - for (int di = 0; di < 16; di++) sprintf(hashed_password + di * 2, "%02x", digest[di]); - hashed_password[lengthof(hashed_password) - 1] = '\0'; + for (int di = 0; di < 16; di++) seprintf(hashed_password + di * 2, lastof(hashed_password), "%02x", digest[di]); return hashed_password; } @@ -640,7 +653,7 @@ void NetworkRebuildHostList() _network_host_list.Clear(); for (NetworkGameList *item = _network_game_list; item != NULL; item = item->next) { - if (item->manually) *_network_host_list.Append() = strdup(item->address.GetAddressAsString(false)); + if (item->manually) *_network_host_list.Append() = stredup(item->address.GetAddressAsString(false)); } } @@ -689,7 +702,7 @@ void NetworkClientConnectGame(NetworkAddress address, CompanyID join_as, const c static void NetworkInitGameInfo() { if (StrEmpty(_settings_client.network.server_name)) { - snprintf(_settings_client.network.server_name, sizeof(_settings_client.network.server_name), "Unnamed Server"); + seprintf(_settings_client.network.server_name, lastof(_settings_client.network.server_name), "Unnamed Server"); } /* The server is a client too */ @@ -698,7 +711,7 @@ static void NetworkInitGameInfo() /* There should be always space for the server. */ assert(NetworkClientInfo::CanAllocateItem()); NetworkClientInfo *ci = new NetworkClientInfo(CLIENT_ID_SERVER); - ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : _local_company; + ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : COMPANY_FIRST; strecpy(ci->client_name, _settings_client.network.client_name, lastof(ci->client_name)); } @@ -713,12 +726,17 @@ bool NetworkServerStart() NetworkDisconnect(false, false); NetworkInitialize(false); + DEBUG(net, 1, "starting listeners for clients"); if (!ServerNetworkGameSocketHandler::Listen(_settings_client.network.server_port)) return false; /* Only listen for admins when the password isn't empty. */ - if (!StrEmpty(_settings_client.network.admin_password) && !ServerNetworkAdminSocketHandler::Listen(_settings_client.network.server_admin_port)) return false; + if (!StrEmpty(_settings_client.network.admin_password)) { + DEBUG(net, 1, "starting listeners for admins"); + if (!ServerNetworkAdminSocketHandler::Listen(_settings_client.network.server_admin_port)) return false; + } /* Try to start UDP-server */ + DEBUG(net, 1, "starting listeners for incoming server queries"); _network_udp_server = _udp_server_socket->Listen(); _network_company_states = CallocT(MAX_COMPANIES); @@ -911,10 +929,16 @@ void NetworkGameLoop() p += 2; } - if (strncmp(p, "cmd: ", 5) == 0) { + if (strncmp(p, "cmd: ", 5) == 0 +#ifdef DEBUG_FAILED_DUMP_COMMANDS + || strncmp(p, "cmdf: ", 6) == 0 +#endif + ) { + p += 5; + if (*p == ' ') p++; cp = CallocT(1); int company; - int ret = sscanf(p + 5, "%x; %x; %x; %x; %x; %x; %x; \"%[^\"]\"", &next_date, &next_date_fract, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text); + int ret = sscanf(p, "%x; %x; %x; %x; %x; %x; %x; \"%[^\"]\"", &next_date, &next_date_fract, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text); /* There are 8 pieces of data to read, however the last is a * string that might or might not exist. Ignore it if that * string misses because in 99% of the time it's not used. */ @@ -938,6 +962,10 @@ void NetworkGameLoop() } else if (strncmp(p, "msg: ", 5) == 0 || strncmp(p, "client: ", 8) == 0 || strncmp(p, "load: ", 6) == 0 || strncmp(p, "save: ", 6) == 0) { /* A message that is not very important to the log playback, but part of the log. */ +#ifndef DEBUG_FAILED_DUMP_COMMANDS + } else if (strncmp(p, "cmdf: ", 6) == 0) { + DEBUG(net, 0, "Skipping replay of failed command: %s", p + 6); +#endif } else { /* Can't parse a line; what's wrong here? */ DEBUG(net, 0, "trying to parse: %s", p); @@ -1009,18 +1037,18 @@ static void NetworkGenerateServerId() char coding_string[NETWORK_NAME_LENGTH]; int di; - snprintf(coding_string, sizeof(coding_string), "%d%s", (uint)Random(), "OpenTTD Server ID"); + seprintf(coding_string, lastof(coding_string), "%d%s", (uint)Random(), "OpenTTD Server ID"); /* Generate the MD5 hash */ checksum.Append((const uint8*)coding_string, strlen(coding_string)); checksum.Finish(digest); for (di = 0; di < 16; ++di) { - sprintf(hex_output + di * 2, "%02x", digest[di]); + seprintf(hex_output + di * 2, lastof(hex_output), "%02x", digest[di]); } /* _settings_client.network.network_id is our id */ - snprintf(_settings_client.network.network_id, sizeof(_settings_client.network.network_id), "%s", hex_output); + seprintf(_settings_client.network.network_id, lastof(_settings_client.network.network_id), "%s", hex_output); } void NetworkStartDebugLog(NetworkAddress address) diff --git a/src/network/network.h b/src/network/network.h index 3dd63d03cb..26f94482ec 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -18,6 +18,7 @@ void NetworkStartUp(); void NetworkShutDown(); void NetworkDrawChatMessage(); +bool HasClients(); extern bool _networking; ///< are we in networking mode? extern bool _network_server; ///< network-server is active @@ -31,6 +32,7 @@ extern bool _is_network_server; ///< Does this client wants to be a network-ser static inline void NetworkStartUp() {} static inline void NetworkShutDown() {} static inline void NetworkDrawChatMessage() {} +static inline bool HasClients() { return false; } #define _networking 0 #define _network_server 0 diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index 0c060b7556..c1ca3d3bb2 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -25,6 +25,8 @@ #include "../rev.h" #include "../game/game.hpp" +#include "../safeguards.h" + /* This file handles all the admin network commands. */ @@ -336,6 +338,11 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyInfo(const Company p->Send_bool (NetworkCompanyIsPassworded(c->index)); p->Send_uint32(c->inaugurated_year); p->Send_bool (c->is_ai); + p->Send_uint8 (CeilDiv(c->months_of_bankruptcy, 3)); // send as quarters_of_bankruptcy + + for (size_t i = 0; i < lengthof(c->share_owners); i++) { + p->Send_uint8(c->share_owners[i]); + } this->SendPacket(p); diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index 5fa311ba1e..3416762d02 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -21,6 +21,7 @@ #include "../querystring_gui.h" #include "../town.h" #include "../window_func.h" +#include "../toolbar_gui.h" #include "../core/geometry_func.hpp" #include "network.h" #include "network_client.h" @@ -30,6 +31,8 @@ #include "table/strings.h" +#include "../safeguards.h" + /** The draw buffer must be able to contain the chat message, client name and the "[All]" message, * some spaces and possible translations of [All] to other languages. */ assert_compile((int)DRAW_STRING_BUFFER >= (int)NETWORK_CHAT_LENGTH + NETWORK_NAME_LENGTH + 40); @@ -84,7 +87,7 @@ void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *m va_list va; va_start(va, message); - vsnprintf(buf, lengthof(buf), message, va); + vseprintf(buf, lastof(buf), message, va); va_end(va); Utf8TrimString(buf, DRAW_STRING_BUFFER); @@ -108,7 +111,7 @@ void NetworkReInitChatBoxSize() { _chatmsg_box.y = 3 * FONT_HEIGHT_NORMAL; _chatmsg_box.height = MAX_CHAT_MESSAGES * (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING) + 2; - _chatmessage_backup = ReallocT(_chatmessage_backup, _chatmsg_box.width * _chatmsg_box.height * BlitterFactoryBase::GetCurrentBlitter()->GetBytesPerPixel()); + _chatmessage_backup = ReallocT(_chatmessage_backup, _chatmsg_box.width * _chatmsg_box.height * BlitterFactory::GetCurrentBlitter()->GetBytesPerPixel()); } /** Initialize all buffers of the chat visualisation. */ @@ -118,7 +121,7 @@ void NetworkInitChatMessage() _chatmsg_list = ReallocT(_chatmsg_list, _settings_client.gui.network_chat_box_height); _chatmsg_box.x = 10; - _chatmsg_box.width = _settings_client.gui.network_chat_box_width; + _chatmsg_box.width = _settings_client.gui.network_chat_box_width_pct * _screen.width / 100; NetworkReInitChatBoxSize(); _chatmessage_visible = false; @@ -149,7 +152,7 @@ void NetworkUndrawChatMessage() } if (_chatmessage_visible) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); int x = _chatmsg_box.x; int y = _screen.height - _chatmsg_box.y - _chatmsg_box.height; int width = _chatmsg_box.width; @@ -167,7 +170,7 @@ void NetworkUndrawChatMessage() /* Put our 'shot' back to the screen */ blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height); /* And make sure it is updated next time */ - _video_driver->MakeDirty(x, y, width, height); + VideoDriver::GetInstance()->MakeDirty(x, y, width, height); _chatmessage_dirty = true; } @@ -198,7 +201,7 @@ void NetworkChatMessageLoop() /** Draw the chat message-box */ void NetworkDrawChatMessage() { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); if (!_chatmessage_dirty) return; /* First undraw if needed */ @@ -254,7 +257,7 @@ void NetworkDrawChatMessage() } /* Make sure the data is updated next flush */ - _video_driver->MakeDirty(x, y, width, height); + VideoDriver::GetInstance()->MakeDirty(x, y, width, height); _chatmessage_visible = true; _chatmessage_dirty = false; @@ -319,6 +322,11 @@ struct NetworkChatWindow : public Window { InvalidateWindowData(WC_NEWS_WINDOW, 0, 0); } + virtual void FindWindowPlacementAndResize(int def_width, int def_height) + { + Window::FindWindowPlacementAndResize(_toolbar_width, def_height); + } + /** * Find the next item of the list of things that can be auto-completed. * @param item The current indexed item to return. This function can, and most @@ -389,7 +397,7 @@ struct NetworkChatWindow : public Window { item = 0; /* Copy the buffer so we can modify it without damaging the real data */ - pre_buf = (_chat_tab_completion_active) ? strdup(_chat_tab_completion_buf) : strdup(tb->buf); + pre_buf = (_chat_tab_completion_active) ? stredup(_chat_tab_completion_buf) : stredup(tb->buf); tb_buf = ChatTabCompletionFindText(pre_buf); tb_len = strlen(tb_buf); @@ -426,7 +434,7 @@ struct NetworkChatWindow : public Window { len = strlen(cur_name); if (tb_len < len && strncasecmp(cur_name, tb_buf, tb_len) == 0) { /* Save the data it was before completion */ - if (!second_scan) snprintf(_chat_tab_completion_buf, lengthof(_chat_tab_completion_buf), "%s", tb->buf); + if (!second_scan) seprintf(_chat_tab_completion_buf, lastof(_chat_tab_completion_buf), "%s", tb->buf); _chat_tab_completion_active = true; /* Change to the found name. Add ': ' if we are at the start of the line (pretty) */ @@ -534,7 +542,7 @@ static const NWidgetPart _nested_chat_window_widgets[] = { /** The description of the chat window. */ static WindowDesc _chat_window_desc( - WDP_MANUAL, NULL, 640, 14, // x, y, width, height + WDP_MANUAL, NULL, 0, 0, WC_SEND_NETWORK_MSG, WC_NONE, 0, _nested_chat_window_widgets, lengthof(_nested_chat_window_widgets) diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 44c13fbc8b..d4d294146e 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -34,6 +34,8 @@ #include "table/strings.h" +#include "../safeguards.h" + /* This file handles all the client-commands */ @@ -208,7 +210,7 @@ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res) * when that's the case handle it appropriately. * @return true when everything went okay. */ -/*static */ bool ClientNetworkGameSocketHandler::Receive() +/* static */ bool ClientNetworkGameSocketHandler::Receive() { if (my_client->CanSendReceive()) { NetworkRecvStatus res = my_client->ReceivePackets(); @@ -223,7 +225,7 @@ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res) } /** Send the packets of this socket handler. */ -/*static */ void ClientNetworkGameSocketHandler::Send() +/* static */ void ClientNetworkGameSocketHandler::Send() { my_client->SendPackets(); my_client->CheckConnection(); @@ -956,7 +958,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) switch (action) { case NETWORK_ACTION_CHAT_CLIENT: /* For speaking to client we need the client-name */ - snprintf(name, sizeof(name), "%s", ci_to->client_name); + seprintf(name, lastof(name), "%s", ci_to->client_name); ci = NetworkClientInfo::GetByClientID(_network_own_client_id); break; @@ -977,7 +979,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) } } else { /* Display message from somebody else */ - snprintf(name, sizeof(name), "%s", ci_to->client_name); + seprintf(name, lastof(name), "%s", ci_to->client_name); ci = ci_to; } @@ -1229,7 +1231,7 @@ void NetworkUpdateClientName() if (!_network_server) { MyClient::SendSetName(_settings_client.network.client_name); } else { - if (NetworkFindName(_settings_client.network.client_name)) { + if (NetworkFindName(_settings_client.network.client_name, lastof(_settings_client.network.client_name))) { NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, _settings_client.network.client_name); strecpy(ci->client_name, _settings_client.network.client_name, lastof(ci->client_name)); NetworkUpdateClientInfo(CLIENT_ID_SERVER); diff --git a/src/network/network_command.cpp b/src/network/network_command.cpp index 6cf96c9f58..6e5458fd86 100644 --- a/src/network/network_command.cpp +++ b/src/network/network_command.cpp @@ -19,6 +19,8 @@ #include "../company_func.h" #include "../settings_type.h" +#include "../safeguards.h" + /** Table with all the callbacks we'll use for conversion*/ static CommandCallback * const _callback_table[] = { /* 0x00 */ NULL, @@ -235,7 +237,7 @@ void NetworkFreeLocalCommandQueue() * @param cp The command that has to be distributed. * @param owner The client that owns the command, */ -static void DistributeCommandPacket(CommandPacket cp, const NetworkClientSocket *owner) +static void DistributeCommandPacket(CommandPacket &cp, const NetworkClientSocket *owner) { CommandCallback *callback = cp.callback; cp.frame = _frame_counter_max + 1; diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index e6e91897c3..174dbdafe6 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -27,6 +27,8 @@ #include #endif +#include "../safeguards.h" + extern bool HasScenario(const ContentInfo *ci, bool md5sum); /** The client we use to connect to the server. */ @@ -388,7 +390,7 @@ static char *GetFullFilename(const ContentInfo *ci, bool compressed) if (dir == NO_DIRECTORY) return NULL; static char buf[MAX_PATH]; - FioGetFullPath(buf, lengthof(buf), SP_AUTODOWNLOAD_DIR, dir, ci->filename); + FioGetFullPath(buf, lastof(buf), SP_AUTODOWNLOAD_DIR, dir, ci->filename); strecat(buf, compressed ? ".tar.gz" : ".tar", lastof(buf)); return buf; @@ -404,6 +406,8 @@ static bool GunzipFile(const ContentInfo *ci) #if defined(WITH_ZLIB) bool ret = true; FILE *ftmp = fopen(GetFullFilename(ci, true), "rb"); + if (ftmp == NULL) return false; + gzFile fin = gzdopen(fileno(ftmp), "rb"); FILE *fout = fopen(GetFullFilename(ci, false), "wb"); @@ -703,7 +707,8 @@ ClientNetworkContentSocketHandler::ClientNetworkContentSocketHandler() : http_response_index(-2), curFile(NULL), curInfo(NULL), - isConnecting(false) + isConnecting(false), + lastActivity(_realtime_tick) { } diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 3297b00718..7ee1dbd99f 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -29,6 +29,8 @@ #include "table/strings.h" #include "../table/sprites.h" +#include "../safeguards.h" + /** Whether the user accepted to enter external websites during this session. */ static bool _accepted_external_search = false; @@ -295,12 +297,15 @@ class NetworkContentListWindow : public Window, ContentCallback { bool auto_select; ///< Automatically select all content when the meta-data becomes available StringFilter string_filter; ///< Filter for content list QueryString filter_editbox; ///< Filter editbox; + Dimension checkbox_size; ///< Size of checkbox/"blot" sprite const ContentInfo *selected; ///< The selected content info int list_pos; ///< Our position in the list uint filesize_sum; ///< The sum of all selected file sizes Scrollbar *vscroll; ///< Cache of the vertical scrollbar + static char content_type_strs[CONTENT_TYPE_END][64]; ///< Cached strings for all content types. + /** Search external websites for content */ void OpenExternalSearch() { @@ -398,11 +403,7 @@ class NetworkContentListWindow : public Window, ContentCallback { { int r = 0; if ((*a)->type != (*b)->type) { - char a_str[64]; - char b_str[64]; - GetString(a_str, STR_CONTENT_TYPE_BASE_GRAPHICS + (*a)->type - CONTENT_TYPE_BASE_GRAPHICS, lastof(a_str)); - GetString(b_str, STR_CONTENT_TYPE_BASE_GRAPHICS + (*b)->type - CONTENT_TYPE_BASE_GRAPHICS, lastof(b_str)); - r = strnatcmp(a_str, b_str); + r = strnatcmp(content_type_strs[(*a)->type], content_type_strs[(*b)->type]); } if (r == 0) r = NameSorter(a, b); return r; @@ -466,6 +467,7 @@ class NetworkContentListWindow : public Window, ContentCallback { this->vscroll->ScrollTowards(this->list_pos); } + friend void BuildContentTypeStringList(); public: /** * Create the content list window. @@ -479,6 +481,8 @@ public: selected(NULL), list_pos(0) { + this->checkbox_size = maxdim(maxdim(GetSpriteSize(SPR_BOX_EMPTY), GetSpriteSize(SPR_BOX_CHECKED)), GetSpriteSize(SPR_BLOT)); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NCL_SCROLLBAR); this->FinishInitNested(WN_NETWORK_WINDOW_CONTENT_LIST); @@ -514,6 +518,10 @@ public: *size = maxdim(*size, GetStringBoundingBox(STR_CONTENT_FILTER_TITLE)); break; + case WID_NCL_CHECKBOX: + size->width = this->checkbox_size.width + WD_MATRIX_RIGHT + WD_MATRIX_LEFT; + break; + case WID_NCL_TYPE: { Dimension d = *size; for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) { @@ -524,7 +532,7 @@ public: } case WID_NCL_MATRIX: - resize->height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; + resize->height = max(this->checkbox_size.height, (uint)FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; size->height = 10 * resize->height; break; } @@ -575,9 +583,11 @@ public: const NWidgetBase *nwi_name = this->GetWidget(WID_NCL_NAME); const NWidgetBase *nwi_type = this->GetWidget(WID_NCL_TYPE); + int line_height = max(this->checkbox_size.height, (uint)FONT_HEIGHT_NORMAL); /* Fill the matrix with the information */ - int sprite_y_offset = WD_MATRIX_TOP + (FONT_HEIGHT_NORMAL - 10) / 2; + int sprite_y_offset = WD_MATRIX_TOP + (line_height - this->checkbox_size.height) / 2 - 1; + int text_y_offset = WD_MATRIX_TOP + (line_height - FONT_HEIGHT_NORMAL) / 2; uint y = r.top; int cnt = 0; for (ConstContentIterator iter = this->content.Get(this->vscroll->GetPosition()); iter != this->content.End() && cnt < this->vscroll->GetCapacity(); iter++, cnt++) { @@ -598,9 +608,9 @@ public: DrawSprite(sprite, pal, nwi_checkbox->pos_x + (pal == PAL_NONE ? 2 : 3), y + sprite_y_offset + (pal == PAL_NONE ? 1 : 0)); StringID str = STR_CONTENT_TYPE_BASE_GRAPHICS + ci->type - CONTENT_TYPE_BASE_GRAPHICS; - DrawString(nwi_type->pos_x, nwi_type->pos_x + nwi_type->current_x - 1, y + WD_MATRIX_TOP, str, TC_BLACK, SA_HOR_CENTER); + DrawString(nwi_type->pos_x, nwi_type->pos_x + nwi_type->current_x - 1, y + text_y_offset, str, TC_BLACK, SA_HOR_CENTER); - DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y + WD_MATRIX_TOP, ci->name, TC_BLACK); + DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y + text_y_offset, ci->name, TC_BLACK); y += this->resize.step_height; } } @@ -750,7 +760,7 @@ public: case WID_NCL_NAME: if (this->content.SortType() == widget - WID_NCL_CHECKBOX) { this->content.ToggleSortOrder(); - this->list_pos = this->content.Length() - this->list_pos - 1; + if (this->content.Length() > 0) this->list_pos = this->content.Length() - this->list_pos - 1; } else { this->content.SetSortType(widget - WID_NCL_CHECKBOX); this->content.ForceResort(); @@ -844,7 +854,10 @@ public: return ES_NOT_HANDLED; } - if (_network_content_client.Length() == 0) return ES_HANDLED; + if (this->content.Length() == 0) { + this->list_pos = 0; // above stuff may result in "-1". + return ES_HANDLED; + } this->selected = *this->content.Get(this->list_pos); @@ -954,6 +967,18 @@ NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentL &TagNameFilter, }; +char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64]; + +/** + * Build array of all strings corresponding to the content types. + */ +void BuildContentTypeStringList() +{ + for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) { + GetString(NetworkContentListWindow::content_type_strs[i], STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS, lastof(NetworkContentListWindow::content_type_strs[i])); + } +} + /** The widgets for the content list. */ static const NWidgetPart _nested_network_content_list_widgets[] = { NWidget(NWID_HORIZONTAL), diff --git a/src/network/network_content_gui.h b/src/network/network_content_gui.h index 212fcec04d..1397010019 100644 --- a/src/network/network_content_gui.h +++ b/src/network/network_content_gui.h @@ -43,4 +43,6 @@ public: virtual void OnDownloadProgress(const ContentInfo *ci, int bytes); }; +void BuildContentTypeStringList(); + #endif /* NETWORK_CONTENT_GUI_H */ diff --git a/src/network/network_func.h b/src/network/network_func.h index 7ce8414f97..375cc3da56 100644 --- a/src/network/network_func.h +++ b/src/network/network_func.h @@ -12,6 +12,13 @@ #ifndef NETWORK_FUNC_H #define NETWORK_FUNC_H +/** + * Uncomment the following define to enable command replaying. + * See docs/desync.txt for details. + */ +// #define DEBUG_DUMP_COMMANDS +// #define DEBUG_FAILED_DUMP_COMMANDS + #include "core/address.h" #include "network_type.h" #include "../console_type.h" @@ -65,7 +72,7 @@ void NetworkServerYearlyLoop(); void NetworkServerSendConfigUpdate(); void NetworkServerShowStatusToConsole(); bool NetworkServerStart(); -void NetworkServerUpdateCompanyPassworded(CompanyID company_id, bool passworded); +void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci); bool NetworkServerChangeClientName(ClientID client_id, const char *new_name); diff --git a/src/network/network_gamelist.cpp b/src/network/network_gamelist.cpp index 9496362137..e5d80630e1 100644 --- a/src/network/network_gamelist.cpp +++ b/src/network/network_gamelist.cpp @@ -22,6 +22,8 @@ #include "network_udp.h" #include "network_gamelist.h" +#include "../safeguards.h" + NetworkGameList *_network_game_list = NULL; /** Mutex for handling delayed insertion/querying of servers. */ diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 7d2e47dbc0..013b375bda 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -39,6 +39,8 @@ #include "../stringfilter_type.h" +#include "../safeguards.h" + static void ShowNetworkStartServerWindow(); static void ShowNetworkLobbyWindow(NetworkGameList *ngl); @@ -106,7 +108,7 @@ public: this->Add(new NWidgetLeaf(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_YEARS, STR_NETWORK_SERVER_LIST_YEARS_CAPTION, STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP)); leaf = new NWidgetLeaf(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_INFO, STR_EMPTY, STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP); - leaf->SetMinimalSize(40, 12); + leaf->SetMinimalSize(14 + GetSpriteSize(SPR_LOCK).width + GetSpriteSize(SPR_BLOT).width + GetSpriteSize(SPR_FLAGS_BASE).width, 12); leaf->SetFill(0, 1); this->Add(leaf); @@ -233,6 +235,10 @@ protected: QueryString name_editbox; ///< Client name editbox. QueryString filter_editbox; ///< Editbox for filter on servers + int lock_offset; ///< Left offset for lock icon. + int blot_offset; ///< Left offset for green/yellow/red compatibility icon. + int flag_offset; ///< Left offset for langauge flag icon. + /** * (Re)build the GUI network game list (a.k.a. this->servers) as some * major change has occurred. It ensures appropriate filtering and @@ -377,9 +383,13 @@ protected: const NWidgetBase *nwi_info = this->GetWidget(WID_NG_INFO); /* show highlighted item with a different colour */ - if (highlight) GfxFillRect(nwi_name->pos_x + 1, y - 2, nwi_info->pos_x + nwi_info->current_x - 2, y + FONT_HEIGHT_NORMAL - 1, PC_GREY); + if (highlight) GfxFillRect(nwi_name->pos_x + 1, y + 1, nwi_info->pos_x + nwi_info->current_x - 2, y + this->resize.step_height - 2, PC_GREY); - DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y, cur_item->info.server_name, TC_BLACK); + /* offsets to vertically centre text and icons */ + int text_y_offset = (this->resize.step_height - FONT_HEIGHT_NORMAL) / 2 + 1; + int icon_y_offset = (this->resize.step_height - GetSpriteSize(SPR_BLOT).height) / 2; + + DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y + text_y_offset, cur_item->info.server_name, TC_BLACK); /* only draw details if the server is online */ if (cur_item->online) { @@ -391,7 +401,7 @@ protected: SetDParam(1, cur_item->info.clients_max); SetDParam(2, cur_item->info.companies_on); SetDParam(3, cur_item->info.companies_max); - DrawString(nwi_clients->pos_x, nwi_clients->pos_x + nwi_clients->current_x - 1, y, STR_NETWORK_SERVER_LIST_GENERAL_ONLINE, TC_FROMSTRING, SA_HOR_CENTER); + DrawString(nwi_clients->pos_x, nwi_clients->pos_x + nwi_clients->current_x - 1, y + text_y_offset, STR_NETWORK_SERVER_LIST_GENERAL_ONLINE, TC_FROMSTRING, SA_HOR_CENTER); } if (nwi_header->IsWidgetVisible(WID_NG_MAPSIZE)) { @@ -399,7 +409,7 @@ protected: const NWidgetBase *nwi_mapsize = this->GetWidget(WID_NG_MAPSIZE); SetDParam(0, cur_item->info.map_width); SetDParam(1, cur_item->info.map_height); - DrawString(nwi_mapsize->pos_x, nwi_mapsize->pos_x + nwi_mapsize->current_x - 1, y, STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT, TC_FROMSTRING, SA_HOR_CENTER); + DrawString(nwi_mapsize->pos_x, nwi_mapsize->pos_x + nwi_mapsize->current_x - 1, y + text_y_offset, STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT, TC_FROMSTRING, SA_HOR_CENTER); } if (nwi_header->IsWidgetVisible(WID_NG_DATE)) { @@ -408,7 +418,7 @@ protected: YearMonthDay ymd; ConvertDateToYMD(cur_item->info.game_date, &ymd); SetDParam(0, ymd.year); - DrawString(nwi_date->pos_x, nwi_date->pos_x + nwi_date->current_x - 1, y, STR_JUST_INT, TC_BLACK, SA_HOR_CENTER); + DrawString(nwi_date->pos_x, nwi_date->pos_x + nwi_date->current_x - 1, y + text_y_offset, STR_JUST_INT, TC_BLACK, SA_HOR_CENTER); } if (nwi_header->IsWidgetVisible(WID_NG_YEARS)) { @@ -418,20 +428,17 @@ protected: ConvertDateToYMD(cur_item->info.game_date, &ymd_cur); ConvertDateToYMD(cur_item->info.start_date, &ymd_start); SetDParam(0, ymd_cur.year - ymd_start.year); - DrawString(nwi_years->pos_x, nwi_years->pos_x + nwi_years->current_x - 1, y, STR_JUST_INT, TC_BLACK, SA_HOR_CENTER); + DrawString(nwi_years->pos_x, nwi_years->pos_x + nwi_years->current_x - 1, y + text_y_offset, STR_JUST_INT, TC_BLACK, SA_HOR_CENTER); } - /* Align the sprites */ - y += (FONT_HEIGHT_NORMAL - 10) / 2; - /* draw a lock if the server is password protected */ - if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + 5, y - 1); + if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + this->lock_offset, y + icon_y_offset - 1); /* draw red or green icon, depending on compatibility with server */ - DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + 15, y); + DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + this->blot_offset, y + icon_y_offset); /* draw flag according to server language */ - DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + 25, y); + DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + this->flag_offset, y + icon_y_offset); } } @@ -454,6 +461,10 @@ public: this->list_pos = SLP_INVALID; this->server = NULL; + this->lock_offset = 5; + this->blot_offset = this->lock_offset + 3 + GetSpriteSize(SPR_LOCK).width; + this->flag_offset = this->blot_offset + 2 + GetSpriteSize(SPR_BLOT).width; + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NG_SCROLLBAR); this->FinishInitNested(WN_NETWORK_WINDOW_GAME); @@ -493,18 +504,18 @@ public: { switch (widget) { case WID_NG_CONN_BTN: - *size = maxdim(GetStringBoundingBox(_lan_internet_types_dropdown[0]), GetStringBoundingBox(_lan_internet_types_dropdown[1])); + *size = maxdim(*size, maxdim(GetStringBoundingBox(_lan_internet_types_dropdown[0]), GetStringBoundingBox(_lan_internet_types_dropdown[1]))); size->width += padding.width; size->height += padding.height; break; case WID_NG_MATRIX: - resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; + resize->height = WD_MATRIX_TOP + max(GetSpriteSize(SPR_BLOT).height, (uint)FONT_HEIGHT_NORMAL) + WD_MATRIX_BOTTOM; size->height = 10 * resize->height; break; case WID_NG_LASTJOINED: - size->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; + size->height = WD_MATRIX_TOP + max(GetSpriteSize(SPR_BLOT).height, (uint)FONT_HEIGHT_NORMAL) + WD_MATRIX_BOTTOM; break; case WID_NG_LASTJOINED_SPACER: @@ -512,11 +523,11 @@ public: break; case WID_NG_NAME: - size->width += 2 * WD_SORTBUTTON_ARROW_WIDTH; // Make space for the arrow + size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow break; case WID_NG_CLIENTS: - size->width += 2 * WD_SORTBUTTON_ARROW_WIDTH; // Make space for the arrow + size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, MAX_CLIENTS); SetDParamMaxValue(1, MAX_CLIENTS); SetDParamMaxValue(2, MAX_COMPANIES); @@ -525,7 +536,7 @@ public: break; case WID_NG_MAPSIZE: - size->width += 2 * WD_SORTBUTTON_ARROW_WIDTH; // Make space for the arrow + size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, MAX_MAP_SIZE); SetDParamMaxValue(1, MAX_MAP_SIZE); *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT)); @@ -533,7 +544,7 @@ public: case WID_NG_DATE: case WID_NG_YEARS: - size->width += 2 * WD_SORTBUTTON_ARROW_WIDTH; // Make space for the arrow + size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, 5); *size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT)); break; @@ -548,7 +559,7 @@ public: { switch (widget) { case WID_NG_MATRIX: { - uint16 y = r.top + WD_MATRIX_TOP; + uint16 y = r.top; const int max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), (int)this->servers.Length()); @@ -562,7 +573,7 @@ public: case WID_NG_LASTJOINED: /* Draw the last joined server, if any */ - if (this->last_joined != NULL) this->DrawServerLine(this->last_joined, r.top + WD_MATRIX_TOP, this->last_joined == this->server); + if (this->last_joined != NULL) this->DrawServerLine(this->last_joined, r.top, this->last_joined == this->server); break; case WID_NG_DETAILS: @@ -754,7 +765,7 @@ public: case WID_NG_JOIN: // Join Game if (this->server != NULL) { - snprintf(_settings_client.network.last_host, sizeof(_settings_client.network.last_host), "%s", this->server->address.GetHostname()); + seprintf(_settings_client.network.last_host, lastof(_settings_client.network.last_host), "%s", this->server->address.GetHostname()); _settings_client.network.last_port = this->server->address.GetPort(); ShowNetworkLobbyWindow(this->server); } @@ -835,7 +846,7 @@ public: /* jump to end */ this->list_pos = this->servers.Length() - 1; break; - default: break; + default: NOT_REACHED(); } this->server = this->servers[this->list_pos]; @@ -2189,7 +2200,7 @@ static const NWidgetPart _nested_network_company_password_window_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(5, 5, 5), NWidget(NWID_HORIZONTAL), SetPIP(5, 5, 5), NWidget(WWT_TEXT, COLOUR_GREY, WID_NCP_LABEL), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NCP_PASSWORD), SetMinimalSize(194, 12), SetDataTip(STR_COMPANY_VIEW_SET_PASSWORD, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NCP_PASSWORD), SetFill(1, 0), SetMinimalSize(194, 12), SetDataTip(STR_COMPANY_VIEW_SET_PASSWORD, STR_NULL), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(5, 0, 5), NWidget(NWID_SPACER), SetFill(1, 0), diff --git a/src/network/network_internal.h b/src/network/network_internal.h index 938682981e..ed9a8de6f6 100644 --- a/src/network/network_internal.h +++ b/src/network/network_internal.h @@ -43,10 +43,7 @@ * Used to load the desync debug logs, i.e. for reproducing a desync. * There's basically no need to ever enable this, unless you really know what * you are doing, i.e. debugging a desync. - * - * NOTE: Define DEBUG_DUMP_COMMANDS in network_func.h or globally, else it does not - * have enough effects. For example CmdCompanyCtrl needs it to be able - * to create companies when there are not clients on this server. + * See docs/desync.txt for details. */ #ifdef DEBUG_DUMP_COMMANDS extern bool _ddc_fastforward; @@ -154,8 +151,10 @@ bool IsNetworkCompatibleVersion(const char *version); * Everything we need to know about a command to be able to execute it. */ struct CommandPacket : CommandContainer { + /** Make sure the pointer is NULL. */ + CommandPacket() : next(NULL), company(INVALID_COMPANY), frame(0), my_cmd(false) {} CommandPacket *next; ///< the next command packet (if in queue) - CompanyByte company; ///< company that is executing the command + CompanyID company; ///< company that is executing the command uint32 frame; ///< the frame in which this packet is executed bool my_cmd; ///< did the command originate from "me" }; @@ -169,7 +168,7 @@ void NetworkError(StringID error_string); void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send, const char *name, const char *str = "", int64 data = 0); uint NetworkCalculateLag(const NetworkClientSocket *cs); StringID GetNetworkErrorMsg(NetworkErrorCode err); -bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH]); +bool NetworkFindName(char *new_name, const char *last); const char *GenerateCompanyPasswordHash(const char *password, const char *password_server_id, uint32 password_game_seed); #endif /* ENABLE_NETWORK */ diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index bab9f4ae3d..6a33c73d89 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -33,6 +33,8 @@ #include "../core/random_func.hpp" #include "../rev.h" +#include "../safeguards.h" + /* This file handles all the server-commands */ @@ -57,30 +59,96 @@ struct PacketWriter : SaveFilter { ServerNetworkGameSocketHandler *cs; ///< Socket we are associated with. Packet *current; ///< The packet we're currently writing to. size_t total_size; ///< Total size of the compressed savegame. + Packet *packets; ///< Packet queue of the savegame; send these "slowly" to the client. + ThreadMutex *mutex; ///< Mutex for making threaded saving safe. /** * Create the packet writer. * @param cs The socket handler we're making the packets for. */ - PacketWriter(ServerNetworkGameSocketHandler *cs) : SaveFilter(NULL), cs(cs), current(NULL), total_size(0) + PacketWriter(ServerNetworkGameSocketHandler *cs) : SaveFilter(NULL), cs(cs), current(NULL), total_size(0), packets(NULL) { - this->cs->savegame_mutex = ThreadMutex::New(); + this->mutex = ThreadMutex::New(); } /** Make sure everything is cleaned up. */ ~PacketWriter() { - /* Prevent double frees. */ - if (this->cs != NULL) { - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->BeginCritical(); - this->cs->savegame = NULL; - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->EndCritical(); - - delete this->cs->savegame_mutex; - this->cs->savegame_mutex = NULL; + if (this->mutex != NULL) this->mutex->BeginCritical(); + + if (this->cs != NULL && this->mutex != NULL) { + this->mutex->WaitForSignal(); + } + + /* This must all wait until the Destroy function is called. */ + + while (this->packets != NULL) { + Packet *p = this->packets->next; + delete this->packets; + this->packets = p; } delete this->current; + + if (this->mutex != NULL) this->mutex->EndCritical(); + + delete this->mutex; + this->mutex = NULL; + } + + /** + * Begin the destruction of this packet writer. It can happen in two ways: + * in the first case the client disconnected while saving the map. In this + * case the saving has not finished and killed this PacketWriter. In that + * case we simply set cs to NULL, triggering the appending to fail due to + * the connection problem and eventually triggering the destructor. In the + * second case the destructor is already called, and it is waiting for our + * signal which we will send. Only then the packets will be removed by the + * destructor. + */ + void Destroy() + { + if (this->mutex != NULL) this->mutex->BeginCritical(); + + this->cs = NULL; + + if (this->mutex != NULL) this->mutex->SendSignal(); + + if (this->mutex != NULL) this->mutex->EndCritical(); + + /* Make sure the saving is completely cancelled. Yes, + * we need to handle the save finish as well as the + * next connection might just be requesting a map. */ + WaitTillSaved(); + ProcessAsyncSaveFinish(); + } + + /** + * Checks whether there are packets. + * It's not 100% threading safe, but this is only asked for when checking + * whether there still is something to send. Then another call will be made + * to actually get the Packet, which will be the only one popping packets + * and thus eventually setting this on false. + */ + bool HasPackets() + { + return this->packets != NULL; + } + + /** + * Pop a single created packet from the queue with packets. + */ + Packet *PopPacket() + { + if (this->mutex != NULL) this->mutex->BeginCritical(); + + Packet *p = this->packets; + this->packets = p->next; + p->next = NULL; + + if (this->mutex != NULL) this->mutex->EndCritical(); + + return p; } /** Append the current packet to the queue. */ @@ -88,7 +156,7 @@ struct PacketWriter : SaveFilter { { if (this->current == NULL) return; - Packet **p = &this->cs->savegame_packets; + Packet **p = &this->packets; while (*p != NULL) { p = &(*p)->next; } @@ -104,7 +172,7 @@ struct PacketWriter : SaveFilter { if (this->current == NULL) this->current = new Packet(PACKET_SERVER_MAP_DATA); - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->BeginCritical(); + if (this->mutex != NULL) this->mutex->BeginCritical(); byte *bufe = buf + size; while (buf != bufe) { @@ -119,7 +187,7 @@ struct PacketWriter : SaveFilter { } } - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->EndCritical(); + if (this->mutex != NULL) this->mutex->EndCritical(); this->total_size += size; } @@ -129,7 +197,7 @@ struct PacketWriter : SaveFilter { /* We want to abort the saving when the socket is closed. */ if (this->cs == NULL) SlError(STR_NETWORK_ERROR_LOSTCONNECTION); - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->BeginCritical(); + if (this->mutex != NULL) this->mutex->BeginCritical(); /* Make sure the last packet is flushed. */ this->AppendQueue(); @@ -143,7 +211,7 @@ struct PacketWriter : SaveFilter { p->Send_uint32((uint32)this->total_size); this->cs->NetworkTCPSocketHandler::SendPacket(p); - if (this->cs->savegame_mutex != NULL) this->cs->savegame_mutex->EndCritical(); + if (this->mutex != NULL) this->mutex->EndCritical(); } }; @@ -172,24 +240,10 @@ ServerNetworkGameSocketHandler::~ServerNetworkGameSocketHandler() if (_redirect_console_to_client == this->client_id) _redirect_console_to_client = INVALID_CLIENT_ID; OrderBackup::ResetUser(this->client_id); - if (this->savegame_mutex != NULL) this->savegame_mutex->BeginCritical(); - if (this->savegame != NULL) this->savegame->cs = NULL; - if (this->savegame_mutex != NULL) this->savegame_mutex->EndCritical(); - - /* Make sure the saving is completely cancelled. - * Yes, we need to handle the save finish as well - * as the next connection in this "loop" might - * just be requesting the map and such. */ - WaitTillSaved(); - ProcessAsyncSaveFinish(); - - while (this->savegame_packets != NULL) { - Packet *p = this->savegame_packets->next; - delete this->savegame_packets; - this->savegame_packets = p; + if (this->savegame != NULL) { + this->savegame->Destroy(); + this->savegame = NULL; } - - delete this->savegame_mutex; } Packet *ServerNetworkGameSocketHandler::ReceivePacket() @@ -205,13 +259,6 @@ Packet *ServerNetworkGameSocketHandler::ReceivePacket() return p; } -void ServerNetworkGameSocketHandler::SendPacket(Packet *packet) -{ - if (this->savegame_mutex != NULL) this->savegame_mutex->BeginCritical(); - this->NetworkTCPSocketHandler::SendPacket(packet); - if (this->savegame_mutex != NULL) this->savegame_mutex->EndCritical(); -} - NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvStatus status) { assert(status != NETWORK_RECV_STATUS_OKAY); @@ -229,7 +276,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta char client_name[NETWORK_CLIENT_NAME_LENGTH]; NetworkClientSocket *new_cs; - this->GetClientName(client_name, sizeof(client_name)); + this->GetClientName(client_name, lastof(client_name)); NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, client_name, NULL, STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST); @@ -335,7 +382,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendCompanyInfo() FOR_ALL_CLIENT_SOCKETS(csi) { char client_name[NETWORK_CLIENT_NAME_LENGTH]; - ((ServerNetworkGameSocketHandler*)csi)->GetClientName(client_name, sizeof(client_name)); + ((ServerNetworkGameSocketHandler*)csi)->GetClientName(client_name, lastof(client_name)); ci = csi->GetInfo(); if (ci != NULL && Company::IsValidID(ci->client_playas)) { @@ -397,7 +444,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendError(NetworkErrorCode err NetworkClientSocket *new_cs; char client_name[NETWORK_CLIENT_NAME_LENGTH]; - this->GetClientName(client_name, sizeof(client_name)); + this->GetClientName(client_name, lastof(client_name)); DEBUG(net, 1, "'%s' made an error and has been disconnected. Reason: '%s'", client_name, str); @@ -556,18 +603,14 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() } if (this->status == STATUS_MAP) { - if (this->savegame_mutex != NULL) this->savegame_mutex->BeginCritical(); - bool last_packet = false; + bool has_packets = false; - for (uint i = 0; i < sent_packets && this->savegame_packets != NULL; i++) { - Packet *p = this->savegame_packets; + for (uint i = 0; (has_packets = this->savegame->HasPackets()) && i < sent_packets; i++) { + Packet *p = this->savegame->PopPacket(); last_packet = p->buffer[2] == PACKET_SERVER_MAP_DONE; - /* Remove the packet from the savegame queue and put it in the real queue. */ - this->savegame_packets = p->next; - p->next = NULL; - this->NetworkTCPSocketHandler::SendPacket(p); + this->SendPacket(p); if (last_packet) { /* There is no more data, so break the for */ @@ -575,11 +618,10 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() } } - if (this->savegame_mutex != NULL) this->savegame_mutex->EndCritical(); - if (last_packet) { /* Done reading, make sure saving is done as well */ - WaitTillSaved(); + this->savegame->Destroy(); + this->savegame = NULL; /* Set the status to DONE_MAP, no we will wait for the client * to send it is ready (maybe that happens like never ;)) */ @@ -615,7 +657,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() case SPS_ALL_SENT: /* All are sent, increase the sent_packets */ - if (this->savegame_packets != NULL) sent_packets *= 2; + if (has_packets) sent_packets *= 2; break; case SPS_PARTLY_SENT: @@ -899,7 +941,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p) /* We need a valid name.. make it Player */ if (StrEmpty(name)) strecpy(name, "Player", lastof(name)); - if (!NetworkFindName(name)) { // Change name if duplicate + if (!NetworkFindName(name, lastof(name))) { // Change name if duplicate /* We could not create a name for this client */ return this->SendError(NETWORK_ERROR_NAME_IN_USE); } @@ -911,7 +953,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p) strecpy(ci->client_name, name, lastof(ci->client_name)); ci->client_playas = playas; ci->client_lang = client_lang; - DEBUG(desync, 1, "client: %08x; %02x; %02x; %04x", _date, _date_fract, (int)ci->client_playas, ci->index); + DEBUG(desync, 1, "client: %08x; %02x; %02x; %02x", _date, _date_fract, (int)ci->client_playas, (int)ci->index); /* Make sure companies to which people try to join are not autocleaned */ if (Company::IsValidID(playas)) _network_company_states[playas].months_empty = 0; @@ -1002,7 +1044,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_MAP_OK(Packet * char client_name[NETWORK_CLIENT_NAME_LENGTH]; NetworkClientSocket *new_cs; - this->GetClientName(client_name, sizeof(client_name)); + this->GetClientName(client_name, lastof(client_name)); NetworkTextMessage(NETWORK_ACTION_JOIN, CC_DEFAULT, false, client_name, NULL, this->client_id); @@ -1120,7 +1162,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(Packet *p return this->CloseConnection(NETWORK_RECV_STATUS_CONN_LOST); } - this->GetClientName(client_name, sizeof(client_name)); + this->GetClientName(client_name, lastof(client_name)); StringID strid = GetNetworkErrorMsg(errorno); GetString(str, strid, lastof(str)); @@ -1152,7 +1194,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_QUIT(Packet *p) return this->CloseConnection(NETWORK_RECV_STATUS_CONN_LOST); } - this->GetClientName(client_name, sizeof(client_name)); + this->GetClientName(client_name, lastof(client_name)); NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, client_name, NULL, STR_NETWORK_MESSAGE_CLIENT_LEAVING); @@ -1401,7 +1443,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet if (ci != NULL) { /* Display change */ - if (NetworkFindName(client_name)) { + if (NetworkFindName(client_name, lastof(client_name))) { NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, client_name); strecpy(ci->client_name, client_name, lastof(ci->client_name)); NetworkUpdateClientInfo(ci->client_id); @@ -1659,16 +1701,16 @@ static void NetworkAutoCleanCompanies() /** * Check whether a name is unique, and otherwise try to make it unique. * @param new_name The name to check/modify. + * @param last The last writeable element of the buffer. * @return True if an unique name was achieved. */ -bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH]) +bool NetworkFindName(char *new_name, const char *last) { bool found_name = false; uint number = 0; char original_name[NETWORK_CLIENT_NAME_LENGTH]; - /* We use NETWORK_CLIENT_NAME_LENGTH in here, because new_name is really a pointer */ - ttd_strlcpy(original_name, new_name, NETWORK_CLIENT_NAME_LENGTH); + strecpy(original_name, new_name, lastof(original_name)); while (!found_name) { const NetworkClientInfo *ci; @@ -1692,7 +1734,7 @@ bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH]) /* Something's really wrong when there're more names than clients */ if (number++ > MAX_CLIENTS) break; - snprintf(new_name, NETWORK_CLIENT_NAME_LENGTH, "%s #%d", original_name, number); + seprintf(new_name, last, "%s #%d", original_name, number); } } @@ -2060,7 +2102,7 @@ uint NetworkServerKickOrBanIP(const char *ip, bool ban) break; } } - if (!contains) *_network_ban_list.Append() = strdup(ip); + if (!contains) *_network_ban_list.Append() = stredup(ip); } uint n = 0; @@ -2096,16 +2138,16 @@ bool NetworkCompanyHasClients(CompanyID company) /** * Get the name of the client, if the user did not send it yet, Client # is used. * @param client_name The variable to write the name to. - * @param size The amount of bytes we can write. + * @param last The pointer to the last element of the destination buffer */ -void ServerNetworkGameSocketHandler::GetClientName(char *client_name, size_t size) const +void ServerNetworkGameSocketHandler::GetClientName(char *client_name, const char *last) const { const NetworkClientInfo *ci = this->GetInfo(); if (ci == NULL || StrEmpty(ci->client_name)) { - snprintf(client_name, size, "Client #%4d", this->client_id); + seprintf(client_name, last, "Client #%4d", this->client_id); } else { - ttd_strlcpy(client_name, ci->client_name, size); + strecpy(client_name, ci->client_name, last); } } @@ -2131,4 +2173,37 @@ void NetworkPrintClients() } } +/** + * Perform all the server specific administration of a new company. + * @param c The newly created company; can't be NULL. + * @param ci The client information of the client that made the company; can be NULL. + */ +void NetworkServerNewCompany(const Company *c, NetworkClientInfo *ci) +{ + assert(c != NULL); + + if (!_network_server) return; + + _network_company_states[c->index].months_empty = 0; + _network_company_states[c->index].password[0] = '\0'; + NetworkServerUpdateCompanyPassworded(c->index, false); + + if (ci != NULL) { + /* ci is NULL when replaying, or for AIs. In neither case there is a client. */ + ci->client_playas = c->index; + NetworkUpdateClientInfo(ci->client_id); + NetworkSendCommand(0, 0, 0, CMD_RENAME_PRESIDENT, NULL, ci->client_name, c->index); + } + + /* Announce new company on network. */ + NetworkAdminCompanyInfo(c, true); + + if (ci != NULL) { + /* ci is NULL when replaying, or for AIs. In neither case there is a client. + We need to send Admin port update here so that they first know about the new company + and then learn about a possibly joining client (see FS#6025) */ + NetworkServerSendChat(NETWORK_ACTION_COMPANY_NEW, DESTTYPE_BROADCAST, 0, "", ci->client_id, c->index + 1); + } +} + #endif /* ENABLE_NETWORK */ diff --git a/src/network/network_server.h b/src/network/network_server.h index 0fc52adf38..a52b2c9366 100644 --- a/src/network/network_server.h +++ b/src/network/network_server.h @@ -75,18 +75,15 @@ public: CommandQueue outgoing_queue; ///< The command-queue awaiting delivery int receive_limit; ///< Amount of bytes that we can receive at this moment - Packet *savegame_packets; ///< Packet queue of the savegame; send these "slowly" to the client. struct PacketWriter *savegame; ///< Writer used to write the savegame. - ThreadMutex *savegame_mutex; ///< Mutex for making threaded saving safe. NetworkAddress client_address; ///< IP-address of the client (so he can be banned) ServerNetworkGameSocketHandler(SOCKET s); ~ServerNetworkGameSocketHandler(); virtual Packet *ReceivePacket(); - virtual void SendPacket(Packet *packet); NetworkRecvStatus CloseConnection(NetworkRecvStatus status); - void GetClientName(char *client_name, size_t size) const; + void GetClientName(char *client_name, const char *last) const; NetworkRecvStatus SendMap(); NetworkRecvStatus SendErrorQuit(ClientID client_id, NetworkErrorCode errorno); @@ -126,6 +123,7 @@ public: void NetworkServer_Tick(bool send_frame); void NetworkServerSetCompanyPassword(CompanyID company_id, const char *password, bool already_hashed = true); +void NetworkServerUpdateCompanyPassworded(CompanyID company_id, bool passworded); /** * Iterate over all the sockets from a given starting point. diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp index cde2994f70..731d51ca05 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -34,6 +34,8 @@ #include "core/udp.h" +#include "../safeguards.h" + /** Mutex for all out threaded udp resolution and such. */ static ThreadMutex *_network_udp_mutex = ThreadMutex::New(); @@ -382,7 +384,7 @@ void ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(Packet *p, NetworkAd } if (item->info.hostname[0] == '\0') { - snprintf(item->info.hostname, sizeof(item->info.hostname), "%s", client_addr->GetHostname()); + seprintf(item->info.hostname, lastof(item->info.hostname), "%s", client_addr->GetHostname()); } if (client_addr->GetAddress()->ss_family == AF_INET6) { diff --git a/src/newgrf.cpp b/src/newgrf.cpp index e32ba1a15f..c9a78deb90 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -52,6 +52,8 @@ #include "table/strings.h" #include "table/build_industry.h" +#include "safeguards.h" + /* TTDPatch extended GRF format codec * (c) Petr Baudis 2004 (GPL'd) * Changes by Florian octo Forster are (c) by the OpenTTD development team. @@ -189,6 +191,18 @@ public: static GrfProcessingState _cur; +/** + * Helper to check whether an image index is valid for a particular NewGRF vehicle. + * @param The type of vehicle. + * @param image_index The image index to check. + * @return True iff the image index is valid, or 0xFD (use new graphics). + */ +template +static inline bool IsValidNewGRFImageIndex(uint8 image_index) +{ + return image_index == 0xFD || IsValidImageIndex(image_index); +} + class OTTDByteReaderSignal { }; /** Class to read from a NewGRF file */ @@ -280,7 +294,7 @@ public: typedef void (*SpecialSpriteHandler)(ByteReader *buf); -static const uint MAX_STATIONS = 256; +static const uint NUM_STATIONS_PER_GRF = 255; ///< Number of StationSpecs per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. /** Temporary engine data used when loading only */ struct GRFTempEngineData { @@ -363,7 +377,7 @@ void CDECL grfmsg(int severity, const char *str, ...) va_list va; va_start(va, str); - vsnprintf(buf, sizeof(buf), str, va); + vseprintf(buf, lastof(buf), str, va); va_end(va); DEBUG(grf, severity, "[%s:%d] %s", _cur.grfconfig->filename, _cur.nfo_line, buf); @@ -438,9 +452,94 @@ static GRFError *DisableGrf(StringID message = STR_NULL, GRFConfig *config = NUL return config->error; } +/** + * Information for mapping static StringIDs. + */ +struct StringIDMapping { + uint32 grfid; ///< Source NewGRF. + StringID source; ///< Source StringID (GRF local). + StringID *target; ///< Destination for mapping result. +}; +typedef SmallVector StringIDMappingVector; +static StringIDMappingVector _string_to_grf_mapping; + +/** + * Record a static StringID for getting translated later. + * @param source Source StringID (GRF local). + * @param target Destination for the mapping result. + */ +static void AddStringForMapping(StringID source, StringID *target) +{ + *target = STR_UNDEFINED; + StringIDMapping *item = _string_to_grf_mapping.Append(); + item->grfid = _cur.grffile->grfid; + item->source = source; + item->target = target; +} + +/** + * Perform a mapping from TTDPatch's string IDs to OpenTTD's + * string IDs, but only for the ones we are aware off; the rest + * like likely unused and will show a warning. + * @param str the string ID to convert + * @return the converted string ID + */ +static StringID TTDPStringIDToOTTDStringIDMapping(StringID str) +{ + /* StringID table for TextIDs 0x4E->0x6D */ + static const StringID units_volume[] = { + STR_ITEMS, STR_PASSENGERS, STR_TONS, STR_BAGS, + STR_LITERS, STR_ITEMS, STR_CRATES, STR_TONS, + STR_TONS, STR_TONS, STR_TONS, STR_BAGS, + STR_TONS, STR_TONS, STR_TONS, STR_BAGS, + STR_TONS, STR_TONS, STR_BAGS, STR_LITERS, + STR_TONS, STR_LITERS, STR_TONS, STR_ITEMS, + STR_BAGS, STR_LITERS, STR_TONS, STR_ITEMS, + STR_TONS, STR_ITEMS, STR_LITERS, STR_ITEMS + }; + + /* A string straight from a NewGRF; this was already translated by MapGRFStringID(). */ + assert(!IsInsideMM(str, 0xD000, 0xD7FF)); + +#define TEXTID_TO_STRINGID(begin, end, stringid, stringend) \ + assert_compile(stringend - stringid == end - begin); \ + if (str >= begin && str <= end) return str + (stringid - begin) + + /* We have some changes in our cargo strings, resulting in some missing. */ + TEXTID_TO_STRINGID(0x000E, 0x002D, STR_CARGO_PLURAL_NOTHING, STR_CARGO_PLURAL_FIZZY_DRINKS); + TEXTID_TO_STRINGID(0x002E, 0x004D, STR_CARGO_SINGULAR_NOTHING, STR_CARGO_SINGULAR_FIZZY_DRINK); + if (str >= 0x004E && str <= 0x006D) return units_volume[str - 0x004E]; + TEXTID_TO_STRINGID(0x006E, 0x008D, STR_QUANTITY_NOTHING, STR_QUANTITY_FIZZY_DRINKS); + TEXTID_TO_STRINGID(0x008E, 0x00AD, STR_ABBREV_NOTHING, STR_ABBREV_FIZZY_DRINKS); + TEXTID_TO_STRINGID(0x00D1, 0x00E0, STR_COLOUR_DARK_BLUE, STR_COLOUR_WHITE); + + /* Map building names according to our lang file changes. There are several + * ranges of house ids, all of which need to be remapped to allow newgrfs + * to use original house names. */ + TEXTID_TO_STRINGID(0x200F, 0x201F, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, STR_TOWN_BUILDING_NAME_OLD_HOUSES_1); + TEXTID_TO_STRINGID(0x2036, 0x2041, STR_TOWN_BUILDING_NAME_COTTAGES_1, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1); + TEXTID_TO_STRINGID(0x2059, 0x205C, STR_TOWN_BUILDING_NAME_IGLOO_1, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1); + + /* Same thing for industries */ + TEXTID_TO_STRINGID(0x4802, 0x4826, STR_INDUSTRY_NAME_COAL_MINE, STR_INDUSTRY_NAME_SUGAR_MINE); + TEXTID_TO_STRINGID(0x482D, 0x482E, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_PLANTED); + TEXTID_TO_STRINGID(0x4832, 0x4834, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES); + TEXTID_TO_STRINGID(0x4835, 0x4838, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM); + TEXTID_TO_STRINGID(0x4839, 0x483A, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM); -typedef std::map StringIDToGRFIDMapping; -static StringIDToGRFIDMapping _string_to_grf_mapping; + switch (str) { + case 0x4830: return STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY; + case 0x4831: return STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED; + case 0x483B: return STR_ERROR_CAN_ONLY_BE_POSITIONED; + } +#undef TEXTID_TO_STRINGID + + if (str == STR_NULL) return STR_EMPTY; + + DEBUG(grf, 0, "Unknown StringID 0x%04X remapped to STR_EMPTY. Please open a Feature Request if you need it", str); + + return STR_EMPTY; +} /** * Used when setting an object's property to map to the GRF's strings @@ -1006,12 +1105,18 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop case 0x12: { // Sprite ID uint8 spriteid = buf->ReadByte(); + uint8 orig_spriteid = spriteid; /* TTD sprite IDs point to a location in a 16bit array, but we use it * as an array index, so we need it to be half the original value. */ if (spriteid < 0xFD) spriteid >>= 1; - rvi->image_index = spriteid; + if (IsValidNewGRFImageIndex(spriteid)) { + rvi->image_index = spriteid; + } else { + grfmsg(1, "RailVehicleChangeInfo: Invalid Sprite %d specified, ignoring", orig_spriteid); + rvi->image_index = 0; + } break; } @@ -1252,13 +1357,19 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop case 0x0E: { // Sprite ID uint8 spriteid = buf->ReadByte(); + uint8 orig_spriteid = spriteid; /* cars have different custom id in the GRF file */ if (spriteid == 0xFF) spriteid = 0xFD; if (spriteid < 0xFD) spriteid >>= 1; - rvi->image_index = spriteid; + if (IsValidNewGRFImageIndex(spriteid)) { + rvi->image_index = spriteid; + } else { + grfmsg(1, "RoadVehicleChangeInfo: Invalid Sprite %d specified, ignoring", orig_spriteid); + rvi->image_index = 0; + } break; } @@ -1422,13 +1533,19 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop switch (prop) { case 0x08: { // Sprite ID uint8 spriteid = buf->ReadByte(); + uint8 orig_spriteid = spriteid; /* ships have different custom id in the GRF file */ if (spriteid == 0xFF) spriteid = 0xFD; if (spriteid < 0xFD) spriteid >>= 1; - svi->image_index = spriteid; + if (IsValidNewGRFImageIndex(spriteid)) { + svi->image_index = spriteid; + } else { + grfmsg(1, "ShipVehicleChangeInfo: Invalid Sprite %d specified, ignoring", orig_spriteid); + svi->image_index = 0; + } break; } @@ -1588,13 +1705,19 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int switch (prop) { case 0x08: { // Sprite ID uint8 spriteid = buf->ReadByte(); + uint8 orig_spriteid = spriteid; /* aircraft have different custom id in the GRF file */ if (spriteid == 0xFF) spriteid = 0xFD; if (spriteid < 0xFD) spriteid >>= 1; - avi->image_index = spriteid; + if (IsValidNewGRFImageIndex(spriteid)) { + avi->image_index = spriteid; + } else { + grfmsg(1, "AircraftVehicleChangeInfo: Invalid Sprite %d specified, ignoring", orig_spriteid); + avi->image_index = 0; + } break; } @@ -1726,13 +1849,13 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte { ChangeInfoResult ret = CIR_SUCCESS; - if (stid + numinfo > MAX_STATIONS) { - grfmsg(1, "StationChangeInfo: Station %u is invalid, max %u, ignoring", stid + numinfo, MAX_STATIONS); + if (stid + numinfo > NUM_STATIONS_PER_GRF) { + grfmsg(1, "StationChangeInfo: Station %u is invalid, max %u, ignoring", stid + numinfo, NUM_STATIONS_PER_GRF); return CIR_INVALID_ID; } /* Allocate station specs if necessary */ - if (_cur.grffile->stations == NULL) _cur.grffile->stations = CallocT(MAX_STATIONS); + if (_cur.grffile->stations == NULL) _cur.grffile->stations = CallocT(NUM_STATIONS_PER_GRF); for (int i = 0; i < numinfo; i++) { StationSpec *statspec = _cur.grffile->stations[stid + i]; @@ -2183,14 +2306,14 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt { ChangeInfoResult ret = CIR_SUCCESS; - if (hid + numinfo > HOUSE_MAX) { - grfmsg(1, "TownHouseChangeInfo: Too many houses loaded (%u), max (%u). Ignoring.", hid + numinfo, HOUSE_MAX); + if (hid + numinfo > NUM_HOUSES_PER_GRF) { + grfmsg(1, "TownHouseChangeInfo: Too many houses loaded (%u), max (%u). Ignoring.", hid + numinfo, NUM_HOUSES_PER_GRF); return CIR_INVALID_ID; } /* Allocate house specs if they haven't been allocated already. */ if (_cur.grffile->housespec == NULL) { - _cur.grffile->housespec = CallocT(HOUSE_MAX); + _cur.grffile->housespec = CallocT(NUM_HOUSES_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -2296,8 +2419,7 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt break; case 0x12: // Building name ID - housespec->building_name = buf->ReadWord(); - _string_to_grf_mapping[&housespec->building_name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &housespec->building_name); break; case 0x13: // Building availability mask @@ -2574,13 +2696,13 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By for (uint j = 0; j < SNOW_LINE_DAYS; j++) { table[i][j] = buf->ReadByte(); if (_cur.grffile->grf_version >= 8) { - if (table[i][j] != 0xFF) table[i][j] = table[i][j] * (1 + MAX_TILE_HEIGHT) / 256; + if (table[i][j] != 0xFF) table[i][j] = table[i][j] * (1 + _settings_game.construction.max_heightlevel) / 256; } else { if (table[i][j] >= 128) { /* no snow */ table[i][j] = 0xFF; } else { - table[i][j] = table[i][j] * (1 + MAX_TILE_HEIGHT) / 128; + table[i][j] = table[i][j] * (1 + _settings_game.construction.max_heightlevel) / 128; } } } @@ -2763,13 +2885,11 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea break; case 0x09: // String ID for cargo type name - cs->name = buf->ReadWord(); - _string_to_grf_mapping[&cs->name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &cs->name); break; case 0x0A: // String for 1 unit of cargo - cs->name_single = buf->ReadWord(); - _string_to_grf_mapping[&cs->name_single] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &cs->name_single); break; case 0x0B: // String for singular quantity of cargo (e.g. 1 tonne of coal) @@ -2777,8 +2897,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea /* String for units of cargo. This is different in OpenTTD * (e.g. tonnes) to TTDPatch (e.g. {COMMA} tonne of coal). * Property 1B is used to set OpenTTD's behaviour. */ - cs->units_volume = buf->ReadWord(); - _string_to_grf_mapping[&cs->units_volume] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &cs->units_volume); break; case 0x0C: // String for plural quantity of cargo (e.g. 10 tonnes of coal) @@ -2786,13 +2905,11 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea /* Strings for an amount of cargo. This is different in OpenTTD * (e.g. {WEIGHT} of coal) to TTDPatch (e.g. {COMMA} tonnes of coal). * Property 1C is used to set OpenTTD's behaviour. */ - cs->quantifier = buf->ReadWord(); - _string_to_grf_mapping[&cs->quantifier] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &cs->quantifier); break; case 0x0D: // String for two letter cargo abbreviation - cs->abbrev = buf->ReadWord(); - _string_to_grf_mapping[&cs->abbrev] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &cs->abbrev); break; case 0x0E: // Sprite ID for cargo icon @@ -2847,6 +2964,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 */ case 0xFF: cs->town_effect = TE_NONE; break; } break; @@ -2977,14 +3095,14 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr { ChangeInfoResult ret = CIR_SUCCESS; - if (indtid + numinfo > NUM_INDUSTRYTILES) { - grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES); + if (indtid + numinfo > NUM_INDUSTRYTILES_PER_GRF) { + grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES_PER_GRF); return CIR_INVALID_ID; } /* Allocate industry tile specs if they haven't been allocated already. */ if (_cur.grffile->indtspec == NULL) { - _cur.grffile->indtspec = CallocT(NUM_INDUSTRYTILES); + _cur.grffile->indtspec = CallocT(NUM_INDUSTRYTILES_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -3215,14 +3333,14 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, { ChangeInfoResult ret = CIR_SUCCESS; - if (indid + numinfo > NUM_INDUSTRYTYPES) { - grfmsg(1, "IndustriesChangeInfo: Too many industries loaded (%u), max (%u). Ignoring.", indid + numinfo, NUM_INDUSTRYTYPES); + if (indid + numinfo > NUM_INDUSTRYTYPES_PER_GRF) { + grfmsg(1, "IndustriesChangeInfo: Too many industries loaded (%u), max (%u). Ignoring.", indid + numinfo, NUM_INDUSTRYTYPES_PER_GRF); return CIR_INVALID_ID; } /* Allocate industry specs if they haven't been allocated already. */ if (_cur.grffile->industryspec == NULL) { - _cur.grffile->industryspec = CallocT(NUM_INDUSTRYTYPES); + _cur.grffile->industryspec = CallocT(NUM_INDUSTRYTYPES_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -3353,6 +3471,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } else if (itt[k].gfx == 0xFF) { itt[k].ti.x = (int8)GB(itt[k].ti.x, 0, 8); itt[k].ti.y = (int8)GB(itt[k].ti.y, 0, 8); + + /* When there were only 256x256 maps, TileIndex was a uint16 and + * itt[k].ti was just a TileIndexDiff that was added to it. + * As such negative "x" values were shifted into the "y" position. + * x = -1, y = 1 -> x = 255, y = 0 + * Since GRF version 8 the position is interpreted as pair of independent int8. + * For GRF version < 8 we need to emulate the old shifting behaviour. + */ + if (_cur.grffile->grf_version < 8 && itt[k].ti.x < 0) itt[k].ti.y += 1; } } @@ -3390,18 +3517,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, break; case 0x0C: // Industry closure message - indsp->closure_text = buf->ReadWord(); - _string_to_grf_mapping[&indsp->closure_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &indsp->closure_text); break; case 0x0D: // Production increase message - indsp->production_up_text = buf->ReadWord(); - _string_to_grf_mapping[&indsp->production_up_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &indsp->production_up_text); break; case 0x0E: // Production decrease message - indsp->production_down_text = buf->ReadWord(); - _string_to_grf_mapping[&indsp->production_down_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &indsp->production_down_text); break; case 0x0F: // Fund cost multiplier @@ -3472,8 +3596,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, break; case 0x1B: // New industry text ID - indsp->new_industry_text = buf->ReadWord(); - _string_to_grf_mapping[&indsp->new_industry_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &indsp->new_industry_text); break; case 0x1C: // Input cargo multipliers for the three input cargo types @@ -3486,8 +3609,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x1F: // Industry name - indsp->name = buf->ReadWord(); - _string_to_grf_mapping[&indsp->name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &indsp->name); break; case 0x20: // Prospecting success chance @@ -3505,10 +3627,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, indsp->removal_cost_multiplier = buf->ReadDWord(); break; - case 0x24: // name for nearby station - indsp->station_name = buf->ReadWord(); - if (indsp->station_name != STR_NULL) _string_to_grf_mapping[&indsp->station_name] = _cur.grffile->grfid; + case 0x24: { // name for nearby station + uint16 str = buf->ReadWord(); + if (str == 0) { + indsp->station_name = STR_NULL; + } else { + AddStringForMapping(str, &indsp->station_name); + } break; + } default: ret = CIR_UNKNOWN; @@ -3554,14 +3681,14 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B { ChangeInfoResult ret = CIR_SUCCESS; - if (airport + numinfo > NUM_AIRPORTS) { - grfmsg(1, "AirportChangeInfo: Too many airports, trying id (%u), max (%u). Ignoring.", airport + numinfo, NUM_AIRPORTS); + if (airport + numinfo > NUM_AIRPORTS_PER_GRF) { + grfmsg(1, "AirportChangeInfo: Too many airports, trying id (%u), max (%u). Ignoring.", airport + numinfo, NUM_AIRPORTS_PER_GRF); return CIR_INVALID_ID; } /* Allocate industry specs if they haven't been allocated already. */ if (_cur.grffile->airportspec == NULL) { - _cur.grffile->airportspec = CallocT(NUM_AIRPORTS); + _cur.grffile->airportspec = CallocT(NUM_AIRPORTS_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -3701,8 +3828,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B break; case 0x10: - as->name = buf->ReadWord(); - _string_to_grf_mapping[&as->name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &as->name); break; case 0x11: // Maintenance cost factor @@ -3737,6 +3863,7 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) case 0x16: case 0x17: buf->ReadByte(); + break; case 0x09: case 0x0A: @@ -3773,14 +3900,14 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea { ChangeInfoResult ret = CIR_SUCCESS; - if (id + numinfo > NUM_OBJECTS) { - grfmsg(1, "ObjectChangeInfo: Too many objects loaded (%u), max (%u). Ignoring.", id + numinfo, NUM_OBJECTS); + if (id + numinfo > NUM_OBJECTS_PER_GRF) { + grfmsg(1, "ObjectChangeInfo: Too many objects loaded (%u), max (%u). Ignoring.", id + numinfo, NUM_OBJECTS_PER_GRF); return CIR_INVALID_ID; } /* Allocate object specs if they haven't been allocated already. */ if (_cur.grffile->objectspec == NULL) { - _cur.grffile->objectspec = CallocT(NUM_OBJECTS); + _cur.grffile->objectspec = CallocT(NUM_OBJECTS_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -3811,16 +3938,13 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea } case 0x09: { // Class name - StringID class_name = buf->ReadWord(); ObjectClass *objclass = ObjectClass::Get(spec->cls_id); - objclass->name = class_name; - _string_to_grf_mapping[&objclass->name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &objclass->name); break; } case 0x0A: // Object name - spec->name = buf->ReadWord(); - _string_to_grf_mapping[&spec->name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &spec->name); break; case 0x0B: // Climate mask @@ -3882,6 +4006,10 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea } break; + case 0x18: // Amount placed on 256^2 map on map creation + spec->generate_amount = buf->ReadByte(); + break; + default: ret = CIR_UNKNOWN; break; @@ -3922,33 +4050,29 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR buf->ReadDWord(); break; - case 0x09: // Toolbar caption of railtype (sets name as well for backwards compatibility for grf ver < 8) - rti->strings.toolbar_caption = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.toolbar_caption] = _cur.grffile->grfid; + case 0x09: { // Toolbar caption of railtype (sets name as well for backwards compatibility for grf ver < 8) + uint16 str = buf->ReadWord(); + AddStringForMapping(str, &rti->strings.toolbar_caption); if (_cur.grffile->grf_version < 8) { - rti->strings.name = rti->strings.toolbar_caption; - _string_to_grf_mapping[&rti->strings.name] = _cur.grffile->grfid; + AddStringForMapping(str, &rti->strings.name); } break; + } case 0x0A: // Menu text of railtype - rti->strings.menu_text = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.menu_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &rti->strings.menu_text); break; case 0x0B: // Build window caption - rti->strings.build_caption = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.build_caption] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &rti->strings.build_caption); break; case 0x0C: // Autoreplace text - rti->strings.replace_text = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.replace_text] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &rti->strings.replace_text); break; case 0x0D: // New locomotive text - rti->strings.new_loco = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.new_loco] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &rti->strings.new_loco); break; case 0x0E: // Compatible railtype list @@ -3965,8 +4089,8 @@ 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 0x0E: SetBit(rti->compatible_railtypes, rt); break; - case 0x0F: SetBit(rti->powered_railtypes, rt); break; case 0x18: SetBit(rti->introduction_required_railtypes, rt); break; case 0x19: SetBit(rti->introduces_railtypes, rt); break; } @@ -4012,8 +4136,7 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR break; case 0x1B: // Name of railtype (overridden by prop 09 for grf ver < 8) - rti->strings.name = buf->ReadWord(); - _string_to_grf_mapping[&rti->strings.name] = _cur.grffile->grfid; + AddStringForMapping(buf->ReadWord(), &rti->strings.name); break; case 0x1C: // Maintenance cost factor @@ -4118,14 +4241,14 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro { ChangeInfoResult ret = CIR_SUCCESS; - if (airtid + numinfo > NUM_AIRPORTTILES) { - grfmsg(1, "AirportTileChangeInfo: Too many airport tiles loaded (%u), max (%u). Ignoring.", airtid + numinfo, NUM_AIRPORTTILES); + if (airtid + numinfo > NUM_AIRPORTTILES_PER_GRF) { + grfmsg(1, "AirportTileChangeInfo: Too many airport tiles loaded (%u), max (%u). Ignoring.", airtid + numinfo, NUM_AIRPORTTILES_PER_GRF); return CIR_INVALID_ID; } /* Allocate airport tile specs if they haven't been allocated already. */ if (_cur.grffile->airtspec == NULL) { - _cur.grffile->airtspec = CallocT(NUM_AIRPORTTILES); + _cur.grffile->airtspec = CallocT(NUM_AIRPORTTILES_PER_GRF); } for (int i = 0; i < numinfo; i++) { @@ -5480,6 +5603,7 @@ static const Action5Type _action5_types[] = { /* 0x15 */ { A5BLOCK_ALLOW_OFFSET, SPR_OPENTTD_BASE, 1, OPENTTD_SPRITE_COUNT, "OpenTTD GUI graphics" }, /* 0x16 */ { A5BLOCK_ALLOW_OFFSET, SPR_AIRPORT_PREVIEW_BASE, 1, SPR_AIRPORT_PREVIEW_COUNT, "Airport preview graphics" }, /* 0x17 */ { A5BLOCK_ALLOW_OFFSET, SPR_RAILTYPE_TUNNEL_BASE, 1, RAILTYPE_TUNNEL_BASE_COUNT, "Railtype tunnel base" }, + /* 0x18 */ { A5BLOCK_ALLOW_OFFSET, SPR_PALETTE_BASE, 1, PALETTE_SPRITE_COUNT, "Palette" }, }; /* Action 0x05 */ @@ -5712,7 +5836,7 @@ bool GetGlobalVariable(byte param, uint32 *value, const GRFFile *grffile) case 0x20: { // snow line height byte snowline = GetSnowLine(); - if (_settings_game.game_creation.landscape == LT_ARCTIC && snowline <= MAX_TILE_HEIGHT) { + if (_settings_game.game_creation.landscape == LT_ARCTIC && snowline <= _settings_game.construction.max_heightlevel) { *value = Clamp(snowline * (grffile->grf_version >= 8 ? 1 : TILE_HEIGHT), 0, 0xFE); } else { /* No snow */ @@ -5892,7 +6016,7 @@ static void CfgApply(ByteReader *buf) static void DisableStaticNewGRFInfluencingNonStaticNewGRFs(GRFConfig *c) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC, c); - error->data = strdup(_cur.grfconfig->GetName()); + error->data = stredup(_cur.grfconfig->GetName()); } /* Action 0x07 @@ -5980,7 +6104,7 @@ static void SkipIf(ByteReader *buf) case 0x0A: // GRFID is not nor will be active /* This is the only condtype that doesn't get ignored if the GRFID is not found */ - result = c == NULL || c->flags == GCS_DISABLED || c->status == GCS_NOT_FOUND; + result = c == NULL || c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND; break; default: grfmsg(1, "SkipIf: Unsupported GRF condition type %02X. Ignoring", condtype); return; @@ -6255,7 +6379,7 @@ static void GRFLoadError(ByteReader *buf) error->custom_message = TranslateTTDPatchCodes(_cur.grffile->grfid, lang, true, message, NULL, SCC_RAW_STRING_POINTER); } else { grfmsg(7, "GRFLoadError: No custom message supplied."); - error->custom_message = strdup(""); + error->custom_message = stredup(""); } } else { error->message = msgstr[message_id]; @@ -6267,7 +6391,7 @@ static void GRFLoadError(ByteReader *buf) error->data = TranslateTTDPatchCodes(_cur.grffile->grfid, lang, true, data); } else { grfmsg(7, "GRFLoadError: No message data supplied."); - error->data = strdup(""); + error->data = stredup(""); } /* Only two parameter numbers can be used in the string. */ @@ -6369,7 +6493,7 @@ static uint32 GetPatchVariable(uint8 param) /* The maximum height of the map. */ case 0x14: - return MAX_TILE_HEIGHT; + return _settings_game.construction.max_heightlevel; /* Extra foundations base sprite */ case 0x15: @@ -6574,7 +6698,7 @@ static void ParamSet(ByteReader *buf) /* Disable the read GRF if it is a static NewGRF. */ DisableStaticNewGRFInfluencingNonStaticNewGRFs(c); src1 = 0; - } else if (file == NULL || (c != NULL && c->status == GCS_DISABLED)) { + } else if (file == NULL || c == NULL || c->status == GCS_DISABLED) { src1 = 0; } else if (src1 == 0xFE) { src1 = c->version; @@ -6624,7 +6748,7 @@ static void ParamSet(ByteReader *buf) if ((int32)src2 < 0) { res = src1 >> -(int32)src2; } else { - res = src1 << src2; + res = src1 << (src2 & 0x1F); // Same behaviour as in EvalAdjustT, mask 'value' to 5 bits, which should behave the same on all architectures. } break; @@ -6632,7 +6756,7 @@ static void ParamSet(ByteReader *buf) if ((int32)src2 < 0) { res = (int32)src1 >> -(int32)src2; } else { - res = (int32)src1 << src2; + res = (int32)src1 << (src2 & 0x1F); // Same behaviour as in EvalAdjustT, mask 'value' to 5 bits, which should behave the same on all architectures. } break; @@ -6776,7 +6900,7 @@ static void GRFInhibit(ByteReader *buf) if (file != NULL && file != _cur.grfconfig) { grfmsg(2, "GRFInhibit: Deactivating file '%s'", file->filename); GRFError *error = DisableGrf(STR_NEWGRF_ERROR_FORCEFULLY_DISABLED, file); - error->data = strdup(_cur.grfconfig->GetName()); + error->data = stredup(_cur.grfconfig->GetName()); } } } @@ -7127,7 +7251,7 @@ static void TranslateGRFStrings(ByteReader *buf) char tmp[256]; GetString(tmp, STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE, lastof(tmp)); - error->data = strdup(tmp); + error->data = stredup(tmp); return; } @@ -7547,7 +7671,7 @@ AllowedSubtags _tags_root[] = { * Try to skip the current node and all subnodes (if it's a branch node). * @param buf Buffer. * @param type The node type to skip. - * @return True if we could skip the node, false if an error occured. + * @return True if we could skip the node, false if an error occurred. */ static bool SkipUnknownInfo(ByteReader *buf, byte type) { @@ -7754,7 +7878,7 @@ static void ResetCustomStations() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { StationSpec **&stations = (*file)->stations; if (stations == NULL) continue; - for (uint i = 0; i < MAX_STATIONS; i++) { + for (uint i = 0; i < NUM_STATIONS_PER_GRF; i++) { if (stations[i] == NULL) continue; StationSpec *statspec = stations[i]; @@ -7789,7 +7913,7 @@ static void ResetCustomHouses() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { HouseSpec **&housespec = (*file)->housespec; if (housespec == NULL) continue; - for (uint i = 0; i < HOUSE_MAX; i++) { + for (uint i = 0; i < NUM_HOUSES_PER_GRF; i++) { free(housespec[i]); } @@ -7805,7 +7929,7 @@ static void ResetCustomAirports() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { AirportSpec **aslist = (*file)->airportspec; if (aslist != NULL) { - for (uint i = 0; i < NUM_AIRPORTS; i++) { + for (uint i = 0; i < NUM_AIRPORTS_PER_GRF; i++) { AirportSpec *as = aslist[i]; if (as != NULL) { @@ -7826,7 +7950,7 @@ static void ResetCustomAirports() AirportTileSpec **&airporttilespec = (*file)->airtspec; if (airporttilespec != NULL) { - for (uint i = 0; i < NUM_AIRPORTTILES; i++) { + for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) { free(airporttilespec[i]); } free(airporttilespec); @@ -7846,7 +7970,7 @@ static void ResetCustomIndustries() /* We are verifiying both tiles and industries specs loaded from the grf file * First, let's deal with industryspec */ if (industryspec != NULL) { - for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTYPES_PER_GRF; i++) { IndustrySpec *ind = industryspec[i]; if (ind == NULL) continue; @@ -7866,7 +7990,7 @@ static void ResetCustomIndustries() } if (indtspec == NULL) continue; - for (uint i = 0; i < NUM_INDUSTRYTILES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) { free(indtspec[i]); } @@ -7882,7 +8006,7 @@ static void ResetCustomObjects() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { ObjectSpec **&objectspec = (*file)->objectspec; if (objectspec == NULL) continue; - for (uint i = 0; i < NUM_OBJECTS; i++) { + for (uint i = 0; i < NUM_OBJECTS_PER_GRF; i++) { free(objectspec[i]); } @@ -8068,7 +8192,7 @@ static void InitNewGRFFile(const GRFConfig *config) */ GRFFile::GRFFile(const GRFConfig *config) { - this->filename = strdup(config->filename); + this->filename = stredup(config->filename); this->grfid = config->ident.grfid; /* Initialise local settings to defaults */ @@ -8380,7 +8504,7 @@ static void EnsureEarlyHouse(HouseZones bitmask) { Year min_year = MAX_YEAR; - for (int i = 0; i < HOUSE_MAX; i++) { + for (int i = 0; i < NUM_HOUSES; i++) { HouseSpec *hs = HouseSpec::Get(i); if (hs == NULL || !hs->enabled) continue; if ((hs->building_availability & bitmask) != bitmask) continue; @@ -8389,7 +8513,7 @@ static void EnsureEarlyHouse(HouseZones bitmask) if (min_year == 0) return; - for (int i = 0; i < HOUSE_MAX; i++) { + for (int i = 0; i < NUM_HOUSES; i++) { HouseSpec *hs = HouseSpec::Get(i); if (hs == NULL || !hs->enabled) continue; if ((hs->building_availability & bitmask) != bitmask) continue; @@ -8419,14 +8543,14 @@ static void FinaliseHouseArray() HouseSpec **&housespec = (*file)->housespec; if (housespec == NULL) continue; - for (int i = 0; i < HOUSE_MAX; i++) { + for (int i = 0; i < NUM_HOUSES_PER_GRF; i++) { HouseSpec *hs = housespec[i]; if (hs == NULL) continue; - const HouseSpec *next1 = (i + 1 < HOUSE_MAX ? housespec[i + 1] : NULL); - const HouseSpec *next2 = (i + 2 < HOUSE_MAX ? housespec[i + 2] : NULL); - const HouseSpec *next3 = (i + 3 < HOUSE_MAX ? housespec[i + 3] : NULL); + const HouseSpec *next1 = (i + 1 < NUM_HOUSES_PER_GRF ? housespec[i + 1] : NULL); + const HouseSpec *next2 = (i + 2 < NUM_HOUSES_PER_GRF ? housespec[i + 2] : NULL); + const HouseSpec *next3 = (i + 3 < NUM_HOUSES_PER_GRF ? housespec[i + 3] : NULL); if (!IsHouseSpecValid(hs, next1, next2, next3, (*file)->filename)) continue; @@ -8434,11 +8558,11 @@ static void FinaliseHouseArray() } } - for (int i = 0; i < HOUSE_MAX; i++) { + for (int i = 0; i < NUM_HOUSES; i++) { HouseSpec *hs = HouseSpec::Get(i); - const HouseSpec *next1 = (i + 1 < HOUSE_MAX ? HouseSpec::Get(i + 1) : NULL); - const HouseSpec *next2 = (i + 2 < HOUSE_MAX ? HouseSpec::Get(i + 2) : NULL); - const HouseSpec *next3 = (i + 3 < HOUSE_MAX ? HouseSpec::Get(i + 3) : NULL); + const HouseSpec *next1 = (i + 1 < NUM_HOUSES ? HouseSpec::Get(i + 1) : NULL); + const HouseSpec *next2 = (i + 2 < NUM_HOUSES ? HouseSpec::Get(i + 2) : NULL); + const HouseSpec *next3 = (i + 3 < NUM_HOUSES ? HouseSpec::Get(i + 3) : NULL); /* We need to check all houses again to we are sure that multitile houses * did get consecutive IDs and none of the parts are missing. */ @@ -8482,7 +8606,7 @@ static void FinaliseIndustriesArray() IndustrySpec **&industryspec = (*file)->industryspec; IndustryTileSpec **&indtspec = (*file)->indtspec; if (industryspec != NULL) { - for (int i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (int i = 0; i < NUM_INDUSTRYTYPES_PER_GRF; i++) { IndustrySpec *indsp = industryspec[i]; if (indsp != NULL && indsp->enabled) { @@ -8519,7 +8643,7 @@ static void FinaliseIndustriesArray() } if (indtspec != NULL) { - for (int i = 0; i < NUM_INDUSTRYTILES; i++) { + for (int i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) { IndustryTileSpec *indtsp = indtspec[i]; if (indtsp != NULL) { _industile_mngr.SetEntitySpec(indtsp); @@ -8552,7 +8676,7 @@ static void FinaliseObjectsArray() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { ObjectSpec **&objectspec = (*file)->objectspec; if (objectspec != NULL) { - for (int i = 0; i < NUM_OBJECTS; i++) { + for (int i = 0; i < NUM_OBJECTS_PER_GRF; i++) { if (objectspec[i] != NULL && objectspec[i]->grf_prop.grffile != NULL && objectspec[i]->enabled) { _object_mngr.SetEntitySpec(objectspec[i]); } @@ -8572,7 +8696,7 @@ static void FinaliseAirportsArray() for (GRFFile **file = _grf_files.Begin(); file != end; file++) { AirportSpec **&airportspec = (*file)->airportspec; if (airportspec != NULL) { - for (int i = 0; i < NUM_AIRPORTS; i++) { + for (int i = 0; i < NUM_AIRPORTS_PER_GRF; i++) { if (airportspec[i] != NULL && airportspec[i]->enabled) { _airport_mngr.SetEntitySpec(airportspec[i]); } @@ -8581,7 +8705,7 @@ static void FinaliseAirportsArray() AirportTileSpec **&airporttilespec = (*file)->airtspec; if (airporttilespec != NULL) { - for (uint i = 0; i < NUM_AIRPORTTILES; i++) { + for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) { if (airporttilespec[i] != NULL && airporttilespec[i]->enabled) { _airporttile_mngr.SetEntitySpec(airporttilespec[i]); } @@ -8977,17 +9101,15 @@ static void FinalisePriceBaseMultipliers() } } -void InitDepotWindowBlockSizes(); - extern void InitGRFTownGeneratorNames(); /** Finish loading NewGRFs and execute needed post-processing */ static void AfterLoadGRFs() { - for (StringIDToGRFIDMapping::iterator it = _string_to_grf_mapping.begin(); it != _string_to_grf_mapping.end(); it++) { - *((*it).first) = MapGRFStringID((*it).second, *((*it).first)); + for (StringIDMapping *it = _string_to_grf_mapping.Begin(); it != _string_to_grf_mapping.End(); it++) { + *it->target = MapGRFStringID(it->grfid, it->source); } - _string_to_grf_mapping.clear(); + _string_to_grf_mapping.Clear(); /* Free the action 6 override sprites. */ for (GRFLineToSpriteOverride::iterator it = _grf_line_to_action6_sprite_override.begin(); it != _grf_line_to_action6_sprite_override.end(); it++) { @@ -9007,9 +9129,6 @@ static void AfterLoadGRFs() /* Set the actually used Canal properties */ FinaliseCanals(); - /* Set the block size in the depot windows based on vehicle sprite sizes */ - InitDepotWindowBlockSizes(); - /* Add all new houses to the house array. */ FinaliseHouseArray(); diff --git a/src/newgrf.h b/src/newgrf.h index 9058aea32a..752873a60e 100644 --- a/src/newgrf.h +++ b/src/newgrf.h @@ -61,6 +61,7 @@ enum GrfMiscBit { GMB_TRAIN_WIDTH_32_PIXELS = 3, ///< Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable; @see GRFFile::traininfo_vehicle_width GMB_AMBIENT_SOUND_CALLBACK = 4, GMB_CATENARY_ON_3RD_TRACK = 5, // Unsupported. + GMB_SECOND_ROCKY_TILE_SET = 6, }; enum GrfSpecFeature { @@ -126,7 +127,7 @@ struct GRFFile : ZeroedMemoryAllocator { uint8 cargo_map[NUM_CARGO]; ///< Inverse cargo translation table (CargoID -> local ID) SmallVector railtype_list; ///< Railtype translation table - RailType railtype_map[RAILTYPE_END]; + RailTypeByte railtype_map[RAILTYPE_END]; CanalProperties canal_local_properties[CF_END]; ///< Canal properties as set by this NewGRF diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp index 4b43af483e..6db12f7373 100644 --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -17,6 +17,8 @@ #include "station_base.h" #include "newgrf_class_func.h" +#include "safeguards.h" + /** Resolver for the airport scope. */ struct AirportScopeResolver : public ScopeResolver { struct Station *st; ///< Station of the airport for which the callback is run, or \c NULL for build gui. @@ -24,7 +26,7 @@ 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); + AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -216,9 +218,9 @@ void AirportOverrideManager::SetEntitySpec(AirportSpec *as) if (value == 0) return; /* Create storage on first modification. */ - uint32 grfid = (this->ro->grffile != NULL) ? this->ro->grffile->grfid : 0; + uint32 grfid = (this->ro.grffile != NULL) ? this->ro.grffile->grfid : 0; assert(PersistentStorage::CanAllocateItem()); - this->st->airport.psa = new PersistentStorage(grfid); + this->st->airport.psa = new PersistentStorage(grfid, GSF_AIRPORTS, this->st->airport.tile); } this->st->airport.psa->StoreValue(pos, value); } @@ -235,8 +237,9 @@ void AirportOverrideManager::SetEntitySpec(AirportSpec *as) */ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte airport_id, byte layout, CallbackID callback, uint32 param1, uint32 param2) - : ResolverObject(AirportSpec::Get(airport_id)->grf_prop.grffile, callback, param1, param2), airport_scope(this, tile, st, airport_id, layout) + : ResolverObject(AirportSpec::Get(airport_id)->grf_prop.grffile, callback, param1, param2), airport_scope(*this, tile, st, airport_id, layout) { + this->root_spritegroup = AirportSpec::Get(airport_id)->grf_prop.spritegroup[0]; } /** @@ -247,7 +250,7 @@ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte a * @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) +AirportScopeResolver::AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) : ScopeResolver(ro) { this->st = st; this->airport_id = airport_id; @@ -258,7 +261,7 @@ AirportScopeResolver::AirportScopeResolver(ResolverObject *ro, TileIndex tile, S SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout); - const SpriteGroup *group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return as->preview_sprite; return group->GetResult(); @@ -267,10 +270,7 @@ SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout) uint16 GetAirportCallback(CallbackID callback, uint32 param1, uint32 param2, Station *st, TileIndex tile) { AirportResolverObject object(tile, st, st->airport.type, st->airport.layout, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(st->airport.GetSpec()->grf_prop.spritegroup[0], &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } /** @@ -283,8 +283,7 @@ uint16 GetAirportCallback(CallbackID callback, uint32 param1, uint32 param2, Sta StringID GetAirportTextCallback(const AirportSpec *as, byte layout, uint16 callback) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout, (CallbackID)callback); - const SpriteGroup *group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object); - uint16 cb_res = (group != NULL) ? group->GetCallbackResult() : CALLBACK_FAILED; + uint16 cb_res = object.ResolveCallback(); if (cb_res == CALLBACK_FAILED || cb_res == 0x400) return STR_UNDEFINED; if (cb_res > 0x400) { ErrorUnknownCallbackResult(as->grf_prop.grffile->grfid, callback, cb_res); diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp index 78773608f7..5eb24f670f 100644 --- a/src/newgrf_airporttiles.cpp +++ b/src/newgrf_airporttiles.cpp @@ -23,6 +23,8 @@ #include "table/airporttiles.h" #include "newgrf_animation_base.h" +#include "safeguards.h" + AirportTileSpec AirportTileSpec::tiles[NUM_AIRPORTTILES]; @@ -178,7 +180,7 @@ static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 case 0x44: return GetAnimationFrame(this->tile); /* Land info of nearby tiles */ - case 0x60: return GetNearbyAirportTileInformation(parameter, this->tile, this->st->index, this->ro->grffile->grf_version >= 8); + case 0x60: return GetNearbyAirportTileInformation(parameter, this->tile, this->st->index, this->ro.grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x61: { @@ -190,7 +192,7 @@ static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 } /* Get airport tile ID at offset */ - case 0x62: return GetAirportTileIDAtOffset(GetNearbyTile(parameter, this->tile), this->st, this->ro->grffile->grfid); + case 0x62: return GetAirportTileIDAtOffset(GetNearbyTile(parameter, this->tile), this->st, this->ro.grffile->grfid); } DEBUG(grf, 1, "Unhandled airport tile variable 0x%X", variable); @@ -215,8 +217,9 @@ static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 */ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : ResolverObject(ats->grf_prop.grffile, callback, callback_param1, callback_param2), tiles_scope(this, ats, tile, st) + : ResolverObject(ats->grf_prop.grffile, callback, callback_param1, callback_param2), tiles_scope(*this, ats, tile, st) { + this->root_spritegroup = ats->grf_prop.spritegroup[0]; } /** @@ -225,7 +228,7 @@ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, * @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) +AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) : ScopeResolver(ro) { assert(st != NULL); @@ -237,10 +240,7 @@ AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject *ro, const Air 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); - const SpriteGroup *group = SpriteGroup::Resolve(ats->grf_prop.spritegroup[0], &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } static void AirportDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte colour, StationGfx gfx) @@ -275,7 +275,7 @@ bool DrawNewAirportTile(TileInfo *ti, Station *st, StationGfx gfx, const Airport } AirportTileResolverObject object(airts, ti->tile, st); - const SpriteGroup *group = SpriteGroup::Resolve(airts->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_TILELAYOUT) { return false; } diff --git a/src/newgrf_airporttiles.h b/src/newgrf_airporttiles.h index 6c68682d40..4d25aa9240 100644 --- a/src/newgrf_airporttiles.h +++ b/src/newgrf_airporttiles.h @@ -24,7 +24,7 @@ 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); + AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_callbacks.h b/src/newgrf_callbacks.h index e96d068037..2c30241f07 100644 --- a/src/newgrf_callbacks.h +++ b/src/newgrf_callbacks.h @@ -278,6 +278,9 @@ enum CallbackID { /** Called when industry is built to set initial production level. */ CBID_INDUSTRY_PROD_CHANGE_BUILD = 0x15F, // 15 bit callback + + /** Called to spawn visual effects for vehicles. */ + CBID_VEHICLE_SPAWN_VISUAL_EFFECT = 0x160, // 15 bit callback }; /** diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp index ef678a0ccc..cba19cbdba 100644 --- a/src/newgrf_canal.cpp +++ b/src/newgrf_canal.cpp @@ -16,6 +16,8 @@ #include "water.h" #include "water_map.h" +#include "safeguards.h" + /** Table of canal 'feature' sprite groups */ WaterFeature _water_feature[CF_END]; @@ -23,7 +25,7 @@ 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); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -33,7 +35,7 @@ struct CanalScopeResolver : public ScopeResolver { struct CanalResolverObject : public ResolverObject { CanalScopeResolver canal_scope; - CanalResolverObject(const GRFFile *grffile, TileIndex tile, + CanalResolverObject(CanalFeature feature, TileIndex tile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) @@ -108,23 +110,24 @@ struct CanalResolverObject : public ResolverObject { return group->loaded[0]; } -CanalScopeResolver::CanalScopeResolver(ResolverObject *ro, TileIndex tile) : ScopeResolver(ro) +CanalScopeResolver::CanalScopeResolver(ResolverObject &ro, TileIndex tile) : ScopeResolver(ro) { this->tile = tile; } /** * Canal resolver constructor. - * @param grffile Grf file. + * @param feature Which canal feature we want. * @param tile Tile index of canal. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ -CanalResolverObject::CanalResolverObject(const GRFFile *grffile, TileIndex tile, +CanalResolverObject::CanalResolverObject(CanalFeature feature, TileIndex tile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : ResolverObject(grffile, callback, callback_param1, callback_param2), canal_scope(this, tile) + : ResolverObject(_water_feature[feature].grffile, callback, callback_param1, callback_param2), canal_scope(*this, tile) { + this->root_spritegroup = _water_feature[feature].group; } /** @@ -135,8 +138,8 @@ CanalResolverObject::CanalResolverObject(const GRFFile *grffile, TileIndex tile, */ SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile) { - CanalResolverObject object(_water_feature[feature].grffile, tile); - const SpriteGroup *group = SpriteGroup::Resolve(_water_feature[feature].group, &object); + CanalResolverObject object(feature, tile); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return 0; return group->GetResult(); @@ -153,11 +156,8 @@ SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile) */ static uint16 GetCanalCallback(CallbackID callback, uint32 param1, uint32 param2, CanalFeature feature, TileIndex tile) { - CanalResolverObject object(_water_feature[feature].grffile, tile, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(_water_feature[feature].group, &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + CanalResolverObject object(feature, tile, callback, param1, param2); + return object.ResolveCallback(); } /** diff --git a/src/newgrf_cargo.cpp b/src/newgrf_cargo.cpp index d6227b8014..7d830c5730 100644 --- a/src/newgrf_cargo.cpp +++ b/src/newgrf_cargo.cpp @@ -13,6 +13,8 @@ #include "debug.h" #include "newgrf_spritegroup.h" +#include "safeguards.h" + /** Resolver of cargo. */ struct CargoResolverObject : public ResolverObject { CargoResolverObject(const CargoSpec *cs, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); @@ -40,6 +42,7 @@ struct CargoResolverObject : public ResolverObject { CargoResolverObject::CargoResolverObject(const CargoSpec *cs, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(cs->grffile, callback, callback_param1, callback_param2) { + this->root_spritegroup = cs->group; } /** @@ -50,7 +53,7 @@ CargoResolverObject::CargoResolverObject(const CargoSpec *cs, CallbackID callbac SpriteID GetCustomCargoSprite(const CargoSpec *cs) { CargoResolverObject object(cs); - const SpriteGroup *group = SpriteGroup::Resolve(cs->group, &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return 0; return group->GetResult(); @@ -60,10 +63,7 @@ SpriteID GetCustomCargoSprite(const CargoSpec *cs) uint16 GetCargoCallback(CallbackID callback, uint32 param1, uint32 param2, const CargoSpec *cs) { CargoResolverObject object(cs, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(cs->group, &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } /** diff --git a/src/newgrf_commons.cpp b/src/newgrf_commons.cpp index 679642ff42..4caf3a5d47 100644 --- a/src/newgrf_commons.cpp +++ b/src/newgrf_commons.cpp @@ -32,6 +32,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Constructor of generic class * @param offset end of original data for this entity. i.e: houses = 110 @@ -473,16 +475,16 @@ uint32 GetCompanyInfo(CompanyID owner, const Livery *l) /** * Get the error message from a shape/location/slope check callback result. * @param cb_res Callback result to translate. If bit 10 is set this is a standard error message, otherwise a NewGRF provided string. - * @param grfid grfID to use to resolve a custom error message. + * @param grffile NewGRF to use to resolve a custom error message. * @param default_error Error message to use for the generic error. * @return CommandCost indicating success or the error message. */ -CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfid, StringID default_error) +CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, const GRFFile *grffile, StringID default_error) { CommandCost res; if (cb_res < 0x400) { - res = CommandCost(GetGRFStringID(grfid, 0xD000 + cb_res)); + res = CommandCost(GetGRFStringID(grffile->grfid, 0xD000 + cb_res)); } else { switch (cb_res) { case 0x400: return res; // No error. @@ -501,7 +503,7 @@ CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfi } /* Copy some parameters from the registers to the error message text ref. stack */ - res.UseTextRefStack(4); + res.UseTextRefStack(grffile, 4); return res; } diff --git a/src/newgrf_commons.h b/src/newgrf_commons.h index de4d292d70..4202c18dbe 100644 --- a/src/newgrf_commons.h +++ b/src/newgrf_commons.h @@ -297,7 +297,7 @@ uint32 GetTerrainType(TileIndex tile, TileContext context = TCX_NORMAL); TileIndex GetNearbyTile(byte parameter, TileIndex tile, bool signed_offsets = true, Axis axis = INVALID_AXIS); uint32 GetNearbyTileInformation(TileIndex tile, bool grf_version8); uint32 GetCompanyInfo(CompanyID owner, const struct Livery *l = NULL); -CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfid, StringID default_error); +CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, const GRFFile *grffile, StringID default_error); void ErrorUnknownCallbackResult(uint32 grfid, uint16 cbid, uint16 cb_res); bool ConvertBooleanCallback(const struct GRFFile *grffile, uint16 cbid, uint16 cb_res); @@ -324,13 +324,11 @@ struct GRFFilePropsBase { /** Data related to the handling of grf files. */ struct GRFFileProps : GRFFilePropsBase<1> { /** Set all default data constructor for the props. */ - GRFFileProps(uint16 subst_id) : + GRFFileProps(uint16 subst_id = 0) : GRFFilePropsBase<1>(), subst_id(subst_id), override(subst_id) { } - /** Simple constructor for the props. */ - GRFFileProps() : GRFFilePropsBase<1>() {} uint16 subst_id; uint16 override; ///< id of the entity been replaced by }; diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp index d327da550f..bd95373d91 100644 --- a/src/newgrf_config.cpp +++ b/src/newgrf_config.cpp @@ -25,6 +25,8 @@ #include "fileio_func.h" #include "fios.h" +#include "safeguards.h" + /** Create a new GRFTextWrapper. */ GRFTextWrapper::GRFTextWrapper() : text(NULL) @@ -48,7 +50,7 @@ GRFConfig::GRFConfig(const char *filename) : url(new GRFTextWrapper()), num_valid_params(lengthof(param)) { - if (filename != NULL) this->filename = strdup(filename); + if (filename != NULL) this->filename = stredup(filename); this->name->AddRef(); this->info->AddRef(); this->url->AddRef(); @@ -76,11 +78,11 @@ GRFConfig::GRFConfig(const GRFConfig &config) : { MemCpyT(this->original_md5sum, config.original_md5sum, lengthof(this->original_md5sum)); MemCpyT(this->param, config.param, lengthof(this->param)); - if (config.filename != NULL) this->filename = strdup(config.filename); + if (config.filename != NULL) this->filename = stredup(config.filename); this->name->AddRef(); this->info->AddRef(); this->url->AddRef(); - if (config.error != NULL) this->error = new GRFError(*config.error); + if (config.error != NULL) this->error = new GRFError(*config.error); for (uint i = 0; i < config.param_info.Length(); i++) { if (config.param_info[i] == NULL) { *this->param_info.Append() = NULL; @@ -93,7 +95,7 @@ GRFConfig::GRFConfig(const GRFConfig &config) : /** Cleanup a GRFConfig object. */ GRFConfig::~GRFConfig() { - /* GCF_COPY as in NOT strdupped/alloced the filename */ + /* GCF_COPY as in NOT stredupped/alloced the filename */ if (!HasBit(this->flags, GCF_COPY)) { free(this->filename); delete this->error; @@ -105,6 +107,17 @@ GRFConfig::~GRFConfig() for (uint i = 0; i < this->param_info.Length(); i++) delete this->param_info[i]; } +/** + * Copy the parameter information from the \a src config. + * @param src Source config. + */ +void GRFConfig::CopyParams(const GRFConfig &src) +{ + this->num_params = src.num_params; + this->num_valid_params = src.num_valid_params; + MemCpyT(this->param, src.param, lengthof(this->param)); +} + /** * Get the name of this grf. In case the name isn't known * the filename is returned. @@ -202,8 +215,8 @@ GRFError::GRFError(const GRFError &error) : message(error.message), severity(error.severity) { - if (error.custom_message != NULL) this->custom_message = strdup(error.custom_message); - if (error.data != NULL) this->data = strdup(error.data); + if (error.custom_message != NULL) this->custom_message = stredup(error.custom_message); + if (error.data != NULL) this->data = stredup(error.data); memcpy(this->param_value, error.param_value, sizeof(this->param_value)); } @@ -226,7 +239,8 @@ GRFParameterInfo::GRFParameterInfo(uint nr) : def_value(0), param_nr(nr), first_bit(0), - num_bit(32) + num_bit(32), + complete_labels(false) {} /** @@ -334,7 +348,14 @@ size_t GRFGetSizeOfDataSection(FILE *f) if (fread(data, 1, header_len, f) == header_len) { if (data[0] == 0 && data[1] == 0 && MemCmpT(data + 2, _grf_cont_v2_sig, 8) == 0) { /* Valid container version 2, get data section size. */ - size_t offset = (data[13] << 24) | (data[12] << 16) | (data[11] << 8) | data[10]; + size_t offset = ((size_t)data[13] << 24) | ((size_t)data[12] << 16) | ((size_t)data[11] << 8) | (size_t)data[10]; + if (offset >= 1 * 1024 * 1024 * 1024) { + DEBUG(grf, 0, "Unexpectedly large offset for NewGRF"); + /* Having more than 1 GiB of data is very implausible. Mostly because then + * all pools in OpenTTD are flooded already. Or it's just Action C all over. + * In any case, the offsets to graphics will likely not work either. */ + return SIZE_MAX; + } return header_len + offset; } } @@ -359,9 +380,13 @@ static bool CalcGRFMD5Sum(GRFConfig *config, Subdirectory subdir) f = FioFOpenFile(config->filename, "rb", subdir, &size); if (f == NULL) return false; - size_t start = ftell(f); + long start = ftell(f); size = min(size, GRFGetSizeOfDataSection(f)); - fseek(f, start, SEEK_SET); + + if (start < 0 || fseek(f, start, SEEK_SET) < 0) { + FioFCloseFile(f); + return false; + } /* calculate md5sum */ while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) { @@ -570,7 +595,7 @@ compatible_grf: * already a local one, so there is no need to replace it. */ if (!HasBit(c->flags, GCF_COPY)) { free(c->filename); - c->filename = strdup(f->filename); + c->filename = stredup(f->filename); memcpy(c->ident.md5sum, f->ident.md5sum, sizeof(c->ident.md5sum)); c->name->Release(); c->name = f->name; @@ -690,7 +715,7 @@ static int CDECL GRFSorter(GRFConfig * const *p1, GRFConfig * const *p2) const GRFConfig *c1 = *p1; const GRFConfig *c2 = *p2; - return strcasecmp(c1->GetName(), c2->GetName()); + return strnatcmp(c1->GetName(), c2->GetName()); } /** @@ -710,8 +735,8 @@ void DoScanNewGRFFiles(void *callback) DEBUG(grf, 1, "Scan complete, found %d files", num); if (num != 0 && _all_grfs != NULL) { /* Sort the linked list using quicksort. - * For that we first have to make an array, then sort and - * then remake the linked list. */ + * For that we first have to make an array, then sort and + * then remake the linked list. */ GRFConfig **to_sort = MallocT(num); uint i = 0; @@ -761,7 +786,7 @@ void ScanNewGRFFiles(NewGRFScanCallback *callback) /* Only then can we really start, especially by marking the whole screen dirty. Get those other windows hidden!. */ MarkWholeScreenDirty(); - if (!_video_driver->HasGUI() || !ThreadObject::New(&DoScanNewGRFFiles, callback, NULL)) { + if (!VideoDriver::GetInstance()->HasGUI() || !ThreadObject::New(&DoScanNewGRFFiles, callback, NULL)) { _modal_progress_work_mutex->EndCritical(); _modal_progress_paint_mutex->EndCritical(); DoScanNewGRFFiles(callback); diff --git a/src/newgrf_config.h b/src/newgrf_config.h index ed35c144e3..e19d8d6085 100644 --- a/src/newgrf_config.h +++ b/src/newgrf_config.h @@ -46,6 +46,7 @@ enum GRFBugs { GBUG_VEH_REFIT, ///< Articulated vehicles carry different cargoes resp. are differently refittable than specified in purchase list GBUG_VEH_POWERED_WAGON, ///< Powered wagon changed poweredness state when not inside a depot GBUG_UNKNOWN_CB_RESULT, ///< A callback returned an unknown/invalid result + GBUG_VEH_CAPACITY, ///< Capacity of vehicle changes when not refitting or arranging }; /** Status of post-gameload GRF compatibility check */ @@ -176,6 +177,8 @@ struct GRFConfig : ZeroedMemoryAllocator { struct GRFConfig *next; ///< NOSAVE: Next item in the linked list + void CopyParams(const GRFConfig &src); + bool IsOpenTTDBaseGRF() const; const char *GetTextfile(TextfileType type) const; diff --git a/src/newgrf_debug.h b/src/newgrf_debug.h index 89ede74eb2..6e514c4ce1 100644 --- a/src/newgrf_debug.h +++ b/src/newgrf_debug.h @@ -36,6 +36,7 @@ extern NewGrfDebugSpritePicker _newgrf_debug_sprite_picker; bool IsNewGRFInspectable(GrfSpecFeature feature, uint index); void ShowNewGRFInspectWindow(GrfSpecFeature feature, uint index, const uint32 grfid = 0); +void InvalidateNewGRFInspectWindow(GrfSpecFeature feature, uint index); void DeleteNewGRFInspectWindow(GrfSpecFeature feature, uint index); GrfSpecFeature GetGrfSpecFeature(TileIndex tile); diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index b2c82e5b33..0074af2181 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -18,6 +18,8 @@ #include "string_func.h" #include "strings_func.h" #include "textbuf_gui.h" +#include "vehicle_gui.h" +#include "zoom_func.h" #include "engine_base.h" #include "industry.h" @@ -25,6 +27,8 @@ #include "station_base.h" #include "town.h" #include "vehicle_base.h" +#include "train.h" +#include "roadveh.h" #include "newgrf_airporttiles.h" #include "newgrf_debug.h" @@ -40,6 +44,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** The sprite picker. */ NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, NULL, 0, SmallVector() }; @@ -278,6 +284,9 @@ struct NewGRFInspectWindow : Window { /** GRFID of the caller of this window, 0 if it has no caller. */ uint32 caller_grfid; + /** For ground vehicles: Index in vehicle chain. */ + uint chain_index; + /** The currently edited parameter, to update the right one. */ byte current_edit_param; @@ -303,6 +312,45 @@ struct NewGRFInspectWindow : Window { this->SetDirty(); } + /** + * Check whether this feature has chain index, i.e. refers to ground vehicles. + */ + bool HasChainIndex() const + { + GrfSpecFeature f = GetFeatureNum(this->window_number); + return f == GSF_TRAINS || f == GSF_ROADVEHICLES; + } + + /** + * Get the feature index. + * @return the feature index + */ + uint GetFeatureIndex() const + { + uint index = ::GetFeatureIndex(this->window_number); + if (this->chain_index > 0) { + assert(this->HasChainIndex()); + const Vehicle *v = Vehicle::Get(index); + v = v->Move(this->chain_index); + if (v != NULL) index = v->index; + } + return index; + } + + /** + * Ensure that this->chain_index is in range. + */ + void ValidateChainIndex() + { + if (this->chain_index == 0) return; + + assert(this->HasChainIndex()); + + const Vehicle *v = Vehicle::Get(::GetFeatureIndex(this->window_number)); + v = v->Move(this->chain_index); + if (v == NULL) this->chain_index = 0; + } + NewGRFInspectWindow(WindowDesc *desc, WindowNumber wno) : Window(desc) { this->CreateNestedTree(); @@ -310,24 +358,35 @@ struct NewGRFInspectWindow : Window { this->FinishInitNested(wno); this->vscroll->SetCount(0); - this->SetWidgetDisabledState(WID_NGRFI_PARENT, GetFeatureHelper(this->window_number)->GetParent(GetFeatureIndex(this->window_number)) == UINT32_MAX); + this->SetWidgetDisabledState(WID_NGRFI_PARENT, GetFeatureHelper(this->window_number)->GetParent(this->GetFeatureIndex()) == UINT32_MAX); + + this->OnInvalidateData(0, true); } virtual void SetStringParameters(int widget) const { if (widget != WID_NGRFI_CAPTION) return; - GetFeatureHelper(this->window_number)->SetStringParameters(GetFeatureIndex(this->window_number)); + GetFeatureHelper(this->window_number)->SetStringParameters(this->GetFeatureIndex()); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { - if (widget != WID_NGRFI_MAINPANEL) return; + switch (widget) { + case WID_NGRFI_VEH_CHAIN: { + assert(this->HasChainIndex()); + GrfSpecFeature f = GetFeatureNum(this->window_number); + size->height = max(size->height, GetVehicleImageCellSize((VehicleType)(VEH_TRAIN + (f - GSF_TRAINS)), EIT_IN_DEPOT).height + 2 + WD_BEVEL_TOP + WD_BEVEL_BOTTOM); + break; + } - resize->height = max(11, FONT_HEIGHT_NORMAL + 1); - resize->width = 1; + case WID_NGRFI_MAINPANEL: + resize->height = max(11, FONT_HEIGHT_NORMAL + 1); + resize->width = 1; - size->height = 5 * resize->height + TOP_OFFSET + BOTTOM_OFFSET; + size->height = 5 * resize->height + TOP_OFFSET + BOTTOM_OFFSET; + break; + } } /** @@ -342,20 +401,58 @@ struct NewGRFInspectWindow : Window { va_list va; va_start(va, format); - vsnprintf(buf, lengthof(buf), format, va); + vseprintf(buf, lastof(buf), format, va); va_end(va); offset -= this->vscroll->GetPosition(); if (offset < 0 || offset >= this->vscroll->GetCapacity()) return; - ::DrawString(r.left + LEFT_OFFSET, r.right + RIGHT_OFFSET, r.top + TOP_OFFSET + (offset * this->resize.step_height), buf, TC_BLACK); + ::DrawString(r.left + LEFT_OFFSET, r.right - RIGHT_OFFSET, r.top + TOP_OFFSET + (offset * this->resize.step_height), buf, TC_BLACK); } virtual void DrawWidget(const Rect &r, int widget) const { + switch (widget) { + case WID_NGRFI_VEH_CHAIN: { + const Vehicle *v = Vehicle::Get(this->GetFeatureIndex()); + int total_width = 0; + int sel_start = 0; + int sel_end = 0; + for (const Vehicle *u = v->First(); u != NULL; u = u->Next()) { + if (u == v) sel_start = total_width; + switch (u->type) { + case VEH_TRAIN: total_width += Train ::From(u)->GetDisplayImageWidth(); break; + case VEH_ROAD: total_width += RoadVehicle::From(u)->GetDisplayImageWidth(); break; + default: NOT_REACHED(); + } + if (u == v) sel_end = total_width; + } + + int width = r.right + 1 - r.left - WD_BEVEL_LEFT - WD_BEVEL_RIGHT; + int skip = 0; + if (total_width > width) { + int sel_center = (sel_start + sel_end) / 2; + if (sel_center > width / 2) skip = min(total_width - width, sel_center - width / 2); + } + + GrfSpecFeature f = GetFeatureNum(this->window_number); + int h = GetVehicleImageCellSize((VehicleType)(VEH_TRAIN + (f - GSF_TRAINS)), EIT_IN_DEPOT).height; + int y = (r.top + r.bottom - h) / 2; + DrawVehicleImage(v->First(), r.left + WD_BEVEL_LEFT, r.right - WD_BEVEL_RIGHT, y + 1, INVALID_VEHICLE, EIT_IN_DETAILS, skip); + + /* Highlight the articulated part (this is different to the whole-vehicle highlighting of DrawVehicleImage */ + if (_current_text_dir == TD_RTL) { + DrawFrameRect(r.right - sel_end + skip, y, r.right - sel_start + skip, y + h, COLOUR_WHITE, FR_BORDERONLY); + } else { + DrawFrameRect(r.left + sel_start - skip, y, r.left + sel_end - skip, y + h, COLOUR_WHITE, FR_BORDERONLY); + } + break; + } + } + if (widget != WID_NGRFI_MAINPANEL) return; - uint index = GetFeatureIndex(this->window_number); + uint index = this->GetFeatureIndex(); const NIFeature *nif = GetFeature(this->window_number); const NIHelper *nih = nif->helper; const void *base = nih->GetInstance(index); @@ -458,11 +555,29 @@ struct NewGRFInspectWindow : Window { switch (widget) { case WID_NGRFI_PARENT: { const NIHelper *nih = GetFeatureHelper(this->window_number); - uint index = nih->GetParent(GetFeatureIndex(this->window_number)); - ::ShowNewGRFInspectWindow((GrfSpecFeature)GB(index, 24, 8), GetFeatureIndex(index), nih->GetGRFID(GetFeatureIndex(this->window_number))); + uint index = nih->GetParent(this->GetFeatureIndex()); + ::ShowNewGRFInspectWindow(GetFeatureNum(index), ::GetFeatureIndex(index), nih->GetGRFID(this->GetFeatureIndex())); break; } + case WID_NGRFI_VEH_PREV: + if (this->chain_index > 0) { + this->chain_index--; + this->InvalidateData(); + } + break; + + case WID_NGRFI_VEH_NEXT: + if (this->HasChainIndex()) { + uint index = this->GetFeatureIndex(); + Vehicle *v = Vehicle::Get(index); + if (v != NULL && v->Next() != NULL) { + this->chain_index++; + this->InvalidateData(); + } + } + break; + case WID_NGRFI_MAINPANEL: { /* Does this feature have variables? */ const NIFeature *nif = GetFeature(this->window_number); @@ -497,10 +612,50 @@ struct NewGRFInspectWindow : Window { { this->vscroll->SetCapacityFromWidget(this, WID_NGRFI_MAINPANEL, TOP_OFFSET + BOTTOM_OFFSET); } + + /** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. + */ + virtual void OnInvalidateData(int data = 0, bool gui_scope = true) + { + if (!gui_scope) return; + if (this->HasChainIndex()) { + this->ValidateChainIndex(); + this->SetWidgetDisabledState(WID_NGRFI_VEH_PREV, this->chain_index == 0); + Vehicle *v = Vehicle::Get(this->GetFeatureIndex()); + this->SetWidgetDisabledState(WID_NGRFI_VEH_NEXT, v == NULL || v->Next() == NULL); + } + } }; /* static */ uint32 NewGRFInspectWindow::var60params[GSF_FAKE_END][0x20] = { {0} }; // Use spec to have 0s in whole array +static const NWidgetPart _nested_newgrf_inspect_chain_widgets[] = { + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CLOSEBOX, COLOUR_GREY), + NWidget(WWT_CAPTION, COLOUR_GREY, WID_NGRFI_CAPTION), SetDataTip(STR_NEWGRF_INSPECT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), + NWidget(WWT_STICKYBOX, COLOUR_GREY), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_NGRFI_VEH_PREV), SetDataTip(AWV_DECREASE, STR_NULL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_NGRFI_VEH_NEXT), SetDataTip(AWV_INCREASE, STR_NULL), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_NGRFI_VEH_CHAIN), SetFill(1, 0), SetResize(1, 0), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_GREY, WID_NGRFI_MAINPANEL), SetMinimalSize(300, 0), SetScrollbar(WID_NGRFI_SCROLLBAR), EndContainer(), + NWidget(NWID_VERTICAL), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_NGRFI_SCROLLBAR), + NWidget(WWT_RESIZEBOX, COLOUR_GREY), + EndContainer(), + EndContainer(), +}; + static const NWidgetPart _nested_newgrf_inspect_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), @@ -519,6 +674,13 @@ static const NWidgetPart _nested_newgrf_inspect_widgets[] = { EndContainer(), }; +static WindowDesc _newgrf_inspect_chain_desc( + WDP_AUTO, "newgrf_inspect_chain", 400, 300, + WC_NEWGRF_INSPECT, WC_NONE, + 0, + _nested_newgrf_inspect_chain_widgets, lengthof(_nested_newgrf_inspect_chain_widgets) +); + static WindowDesc _newgrf_inspect_desc( WDP_AUTO, "newgrf_inspect", 400, 300, WC_NEWGRF_INSPECT, WC_NONE, @@ -540,11 +702,27 @@ void ShowNewGRFInspectWindow(GrfSpecFeature feature, uint index, const uint32 gr if (!IsNewGRFInspectable(feature, index)) return; WindowNumber wno = GetInspectWindowNumber(feature, index); - NewGRFInspectWindow *w = AllocateWindowDescFront(&_newgrf_inspect_desc, wno); - if (w == NULL) w = (NewGRFInspectWindow *)FindWindowById(WC_NEWGRF_INSPECT, wno); + WindowDesc *desc = (feature == GSF_TRAINS || feature == GSF_ROADVEHICLES) ? &_newgrf_inspect_chain_desc : &_newgrf_inspect_desc; + NewGRFInspectWindow *w = AllocateWindowDescFront(desc, wno, true); w->SetCallerGRFID(grfid); } +/** + * Invalidate the inspect window for a given feature and index. + * The index is normally an in-game location/identifier, such + * as a TileIndex or an IndustryID depending on the feature + * we want to inspect. + * @param feature The feature we want to invalidate the window for. + * @param index The index/identifier of the feature to invalidate. + */ +void InvalidateNewGRFInspectWindow(GrfSpecFeature feature, uint index) +{ + if (feature == GSF_INVALID) return; + + WindowNumber wno = GetInspectWindowNumber(feature, index); + InvalidateWindowData(WC_NEWGRF_INSPECT, wno); +} + /** * Delete inspect window for a given feature and index. * The index is normally an in-game location/identifier, such @@ -628,8 +806,11 @@ GrfSpecFeature GetGrfSpecFeature(VehicleType type) /** Window used for aligning sprites. */ struct SpriteAlignerWindow : Window { - SpriteID current_sprite; ///< The currently shown sprite + typedef SmallPair XyOffs; ///< Pair for x and y offsets of the sprite before alignment. First value contains the x offset, second value y offset. + + SpriteID current_sprite; ///< The currently shown sprite. Scrollbar *vscroll; + SmallMap offs_start_map; ///< Mapping of starting offsets for the sprites which have been aligned in the sprite aligner window. SpriteAlignerWindow(WindowDesc *desc, WindowNumber wno) : Window(desc) { @@ -643,16 +824,30 @@ struct SpriteAlignerWindow : Window { virtual void SetStringParameters(int widget) const { + const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); switch (widget) { case WID_SA_CAPTION: SetDParam(0, this->current_sprite); SetDParamStr(1, FioGetFilename(GetOriginFileSlot(this->current_sprite))); break; - case WID_SA_OFFSETS: { - const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); - SetDParam(0, spr->x_offs / ZOOM_LVL_BASE); - SetDParam(1, spr->y_offs / ZOOM_LVL_BASE); + case WID_SA_OFFSETS_ABS: + SetDParam(0, spr->x_offs); + SetDParam(1, spr->y_offs); + break; + + case WID_SA_OFFSETS_REL: { + /* Relative offset is new absolute offset - starting absolute offset. + * Show 0, 0 as the relative offsets if entry is not in the map (meaning they have not been changed yet). + */ + const SmallPair *key_offs_pair = this->offs_start_map.Find(this->current_sprite); + if (key_offs_pair != this->offs_start_map.End()) { + SetDParam(0, spr->x_offs - key_offs_pair->second.first); + SetDParam(1, spr->y_offs - key_offs_pair->second.second); + } else { + SetDParam(0, 0); + SetDParam(1, 0); + } break; } @@ -678,20 +873,20 @@ struct SpriteAlignerWindow : Window { case WID_SA_SPRITE: { /* Center the sprite ourselves */ const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); - int width = r.right - r.left + 1; - int height = r.bottom - r.top + 1; - int x = r.left - spr->x_offs / ZOOM_LVL_BASE + (width - spr->width / ZOOM_LVL_BASE) / 2; - int y = r.top - spr->y_offs / ZOOM_LVL_BASE + (height - spr->height / ZOOM_LVL_BASE) / 2; - - /* And draw only the part within the sprite area */ - SubSprite subspr = { - spr->x_offs + (spr->width - width * ZOOM_LVL_BASE) / 2 + 1, - spr->y_offs + (spr->height - height * ZOOM_LVL_BASE) / 2 + 1, - spr->x_offs + (spr->width + width * ZOOM_LVL_BASE) / 2 - 1, - spr->y_offs + (spr->height + height * ZOOM_LVL_BASE) / 2 - 1, - }; - - DrawSprite(this->current_sprite, PAL_NONE, x, y, &subspr, ZOOM_LVL_GUI); + int width = r.right - r.left + 1 - WD_BEVEL_LEFT - WD_BEVEL_RIGHT; + int height = r.bottom - r.top + 1 - WD_BEVEL_TOP - WD_BEVEL_BOTTOM; + int x = -UnScaleGUI(spr->x_offs) + (width - UnScaleGUI(spr->width) ) / 2; + int y = -UnScaleGUI(spr->y_offs) + (height - UnScaleGUI(spr->height)) / 2; + + DrawPixelInfo new_dpi; + if (!FillDrawPixelInfo(&new_dpi, r.left + WD_BEVEL_LEFT, r.top + WD_BEVEL_TOP, width, height)) break; + DrawPixelInfo *old_dpi = _cur_dpi; + _cur_dpi = &new_dpi; + + DrawSprite(this->current_sprite, PAL_NONE, x, y, NULL, ZOOM_LVL_GUI); + + _cur_dpi = old_dpi; + break; } @@ -771,17 +966,28 @@ struct SpriteAlignerWindow : Window { * particular NewGRF developer. */ Sprite *spr = const_cast(GetSprite(this->current_sprite, ST_NORMAL)); + + /* Remember the original offsets of the current sprite, if not already in mapping. */ + if (!(this->offs_start_map.Contains(this->current_sprite))) { + this->offs_start_map.Insert(this->current_sprite, XyOffs(spr->x_offs, spr->y_offs)); + } switch (widget) { - case WID_SA_UP: spr->y_offs -= ZOOM_LVL_BASE; break; - case WID_SA_DOWN: spr->y_offs += ZOOM_LVL_BASE; break; - case WID_SA_LEFT: spr->x_offs -= ZOOM_LVL_BASE; break; - case WID_SA_RIGHT: spr->x_offs += ZOOM_LVL_BASE; break; + case WID_SA_UP: spr->y_offs--; break; + case WID_SA_DOWN: spr->y_offs++; break; + case WID_SA_LEFT: spr->x_offs--; break; + case WID_SA_RIGHT: spr->x_offs++; break; } /* Of course, we need to redraw the sprite, but where is it used? * Everywhere is a safe bet. */ MarkWholeScreenDirty(); break; } + + case WID_SA_RESET_REL: + /* Reset the starting offsets for the current sprite. */ + this->offs_start_map.Erase(this->current_sprite); + this->SetDirty(); + break; } } @@ -857,8 +1063,12 @@ static const NWidgetPart _nested_sprite_aligner_widgets[] = { NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), + NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS_ABS), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS_ABS, STR_NULL), SetFill(1, 0), SetPadding(0, 10, 0, 10), + NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS_REL), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS_REL, STR_NULL), SetFill(1, 0), SetPadding(0, 10, 0, 10), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), - NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS, STR_NULL), SetFill(1, 0), + NWidget(NWID_SPACER), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SA_RESET_REL), SetDataTip(STR_SPRITE_ALIGNER_RESET_BUTTON, STR_SPRITE_ALIGNER_RESET_TOOLTIP), SetFill(0, 0), + NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(10, 5, 10), diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index c48aaad9b9..4aafa10f9f 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -25,6 +25,8 @@ #include "newgrf_railtype.h" #include "ship.h" +#include "safeguards.h" + struct WagonOverride { EngineID *train_id; uint trains; @@ -54,11 +56,6 @@ const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, Eng { const Engine *e = Engine::Get(engine); - /* XXX: This could turn out to be a timesink on profiles. We could - * always just dedicate 65535 bytes for an [engine][train] trampoline - * for O(1). Or O(logMlogN) and searching binary tree or smt. like - * that. --pasky */ - for (uint i = 0; i < e->overrides_count; i++) { const WagonOverride *wo = &e->overrides[i]; @@ -360,7 +357,7 @@ static byte MapAircraftMovementAction(const Aircraft *v) /* This function must only be called when processing triggers -- any * other time is an error. */ - assert(this->ro->trigger != 0); + assert(this->ro.trigger != 0); if (v != NULL) v->waiting_triggers = triggers; } @@ -543,10 +540,15 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, /* The cargo translation is specific to the accessing GRF, and thus cannot be cached. */ CargoID common_cargo_type = (v->grf_cache.consist_cargo_information >> 8) & 0xFF; - /* Unlike everywhere else the cargo translation table is only used since grf version 8, not 7. - * Note: The grffile == NULL case only happens if this function is called for default vehicles. - * And this is only done by CheckCaches(). */ - const GRFFile *grffile = object->ro->grffile; + /* Note: + * - Unlike everywhere else the cargo translation table is only used since grf version 8, not 7. + * - For translating the cargo type we need to use the GRF which is resolving the variable, which + * is object->ro.grffile. + * In case of CBID_TRAIN_ALLOW_WAGON_ATTACH this is not the same as v->GetGRF(). + * - The grffile == NULL case only happens if this function is called for default vehicles. + * And this is only done by CheckCaches(). + */ + const GRFFile *grffile = object->ro.grffile; uint8 common_bitnum = (common_cargo_type == CT_INVALID) ? 0xFF : (grffile == NULL || grffile->grf_version < 8) ? CargoSpec::Get(common_cargo_type)->bitnum : grffile->cargo_map[common_cargo_type]; @@ -565,7 +567,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, { const Vehicle *w = v->Next(); - uint16 altitude = v->z_pos - w->z_pos; // Aircraft height - shadow height + uint16 altitude = ClampToU16(v->z_pos - w->z_pos); // Aircraft height - shadow height byte airporttype = ATP_TTDP_LARGE; const Station *st = GetTargetAirportIfValid(Aircraft::From(v)); @@ -608,7 +610,12 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, */ const CargoSpec *cs = CargoSpec::Get(v->cargo_type); - return (cs->classes << 16) | (cs->weight << 8) | v->GetGRF()->cargo_map[v->cargo_type]; + /* Note: + * For translating the cargo type we need to use the GRF which is resolving the variable, which + * is object->ro.grffile. + * In case of CBID_TRAIN_ALLOW_WAGON_ATTACH this is not the same as v->GetGRF(). + */ + return (cs->classes << 16) | (cs->weight << 8) | object->ro.grffile->cargo_map[v->cargo_type]; } case 0x48: return v->GetEngine()->flags; // Vehicle Type Info @@ -617,7 +624,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, case 0x4A: { if (v->type != VEH_TRAIN) return 0; RailType rt = GetTileRailType(v->tile); - return (HasPowerOnRail(Train::From(v)->railtype, rt) ? 0x100 : 0) | GetReverseRailTypeTranslation(rt, object->ro->grffile); + return (HasPowerOnRail(Train::From(v)->railtype, rt) ? 0x100 : 0) | GetReverseRailTypeTranslation(rt, object->ro.grffile); } case 0x4B: // Long date of last service @@ -627,6 +634,17 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, if (!v->IsPrimaryVehicle()) return 0; return v->GetCurrentMaxSpeed(); + case 0x4D: // Position within articulated vehicle + if (!HasBit(v->grf_cache.cache_valid, NCVV_POSITION_IN_VEHICLE)) { + byte artic_before = 0; + for (const Vehicle *u = v; u->IsArticulatedPart(); u = u->Previous()) artic_before++; + byte artic_after = 0; + for (const Vehicle *u = v; u->HasArticulatedPart(); u = u->Next()) artic_after++; + v->grf_cache.position_in_vehicle = artic_before | artic_after << 8; + SetBit(v->grf_cache.cache_valid, NCVV_POSITION_IN_VEHICLE); + } + return v->grf_cache.position_in_vehicle; + /* Variables which use the parameter */ case 0x60: // Count consist's engine ID occurrence if (v->type != VEH_TRAIN) return v->GetEngine()->grf_prop.local_id == parameter ? 1 : 0; @@ -640,13 +658,17 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, } case 0x61: // Get variable of n-th vehicle in chain [signed number relative to vehicle] - if (!v->IsGroundVehicle() || parameter == 0x61) return 0; + if (!v->IsGroundVehicle() || parameter == 0x61) { + /* Not available */ + break; + } /* Only allow callbacks that don't change properties to avoid circular dependencies. */ - if (object->ro->callback == CBID_NO_CALLBACK || object->ro->callback == CBID_RANDOM_TRIGGER || object->ro->callback == CBID_TRAIN_ALLOW_WAGON_ATTACH || - object->ro->callback == CBID_VEHICLE_START_STOP_CHECK || object->ro->callback == CBID_VEHICLE_32DAY_CALLBACK || object->ro->callback == CBID_VEHICLE_COLOUR_MAPPING) { + if (object->ro.callback == CBID_NO_CALLBACK || object->ro.callback == CBID_RANDOM_TRIGGER || object->ro.callback == CBID_TRAIN_ALLOW_WAGON_ATTACH || + object->ro.callback == CBID_VEHICLE_START_STOP_CHECK || object->ro.callback == CBID_VEHICLE_32DAY_CALLBACK || object->ro.callback == CBID_VEHICLE_COLOUR_MAPPING || + object->ro.callback == CBID_VEHICLE_SPAWN_VISUAL_EFFECT) { Vehicle *u = v->Move((int32)GetRegister(0x10F)); - if (u == NULL) return 0; + if (u == NULL) return 0; // available, but zero if (parameter == 0x5F) { /* This seems to be the only variable that makes sense to access via var 61, but is not handled by VehicleGetVariable */ @@ -655,7 +677,8 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, return VehicleGetVariable(u, object, parameter, GetRegister(0x10E), available); } } - return 0; + /* Not available */ + break; case 0x62: { // Curvature/position difference for n-th vehicle in chain [signed number relative to vehicle] /* Format: zzyyxxFD @@ -701,6 +724,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, if (powered && !has_power) SetBit(modflags, 6); if (HasBit(t->flags, VRF_TOGGLE_REVERSE)) SetBit(modflags, 8); } + if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) SetBit(modflags, 1); if (HasBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE)) SetBit(modflags, 10); return variable == 0xFE ? modflags : GB(modflags, 8, 8); @@ -883,7 +907,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, CargoID cargo_type = e->GetDefaultCargoType(); if (cargo_type != CT_INVALID) { const CargoSpec *cs = CargoSpec::Get(cargo_type); - return (cs->classes << 16) | (cs->weight << 8) | e->GetGRF()->cargo_map[cargo_type]; + return (cs->classes << 16) | (cs->weight << 8) | this->ro.grffile->cargo_map[cargo_type]; } else { return 0x000000FF; } @@ -935,7 +959,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, * @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) +VehicleScopeResolver::VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view) : ScopeResolver(ro) { this->v = v; @@ -958,68 +982,51 @@ static const GRFFile *GetEngineGrfFile(EngineID engine_type) * Resolver of a vehicle (chain). * @param engine_type Engine type * @param v %Vehicle being resolved. + * @param wagon_override Application of wagon overrides. * @param info_view Indicates if the item is being drawn in an info window. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ -VehicleResolverObject::VehicleResolverObject(EngineID engine_type, const Vehicle *v, bool info_view, +VehicleResolverObject::VehicleResolverObject(EngineID engine_type, const Vehicle *v, WagonOverride wagon_override, bool info_view, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(GetEngineGrfFile(engine_type), callback, callback_param1, callback_param2), - self_scope(this, engine_type, v, info_view), - parent_scope(this, engine_type, ((v != NULL) ? v->First() : v), info_view), - relative_scope(this, engine_type, v, info_view), + self_scope(*this, engine_type, v, info_view), + parent_scope(*this, engine_type, ((v != NULL) ? v->First() : v), info_view), + relative_scope(*this, engine_type, v, info_view), cached_relative_count(0) { -} - -/** - * Retrieve the SpriteGroup for the specified vehicle. - * If the vehicle is not specified, the purchase list group for the engine is - * chosen. For trains, an additional engine override lookup is performed. - * @param engine Engine type of the vehicle. - * @param v The vehicle itself. - * @param use_cache Use cached override - * @returns The selected SpriteGroup for the vehicle. - */ -static const SpriteGroup *GetVehicleSpriteGroup(EngineID engine, const Vehicle *v, bool use_cache = true) -{ - const SpriteGroup *group; - CargoID cargo; - - if (v == NULL) { - cargo = CT_PURCHASE; + if (wagon_override == WO_SELF) { + this->root_spritegroup = GetWagonOverrideSpriteSet(engine_type, CT_DEFAULT, engine_type); } else { - cargo = v->cargo_type; + if (wagon_override != WO_NONE && v != NULL && v->IsGroundVehicle()) { + assert(v->engine_type == engine_type); // overrides make little sense with fake scopes - if (v->IsGroundVehicle()) { /* For trains we always use cached value, except for callbacks because the override spriteset * to use may be different than the one cached. It happens for callback 0x15 (refit engine), * as v->cargo_type is temporary changed to the new type */ - if (use_cache && v->type == VEH_TRAIN) { - group = Train::From(v)->tcache.cached_override; + if (wagon_override == WO_CACHED && v->type == VEH_TRAIN) { + this->root_spritegroup = Train::From(v)->tcache.cached_override; } else { - group = GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->GetGroundVehicleCache()->first_engine); + this->root_spritegroup = GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->GetGroundVehicleCache()->first_engine); } - if (group != NULL) return group; } - } - - const Engine *e = Engine::Get(engine); - - assert(cargo < lengthof(e->grf_prop.spritegroup)); - group = e->grf_prop.spritegroup[cargo]; - if (group != NULL) return group; - /* Fall back to the default set if the selected cargo type is not defined */ - return e->grf_prop.spritegroup[CT_DEFAULT]; + if (this->root_spritegroup == NULL) { + const Engine *e = Engine::Get(engine_type); + CargoID cargo = v != NULL ? v->cargo_type : CT_PURCHASE; + assert(cargo < lengthof(e->grf_prop.spritegroup)); + this->root_spritegroup = e->grf_prop.spritegroup[cargo] != NULL ? e->grf_prop.spritegroup[cargo] : e->grf_prop.spritegroup[CT_DEFAULT]; + } + } } + SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type) { - VehicleResolverObject object(engine, v, false, CBID_NO_CALLBACK, image_type); - const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v), &object); + VehicleResolverObject object(engine, v, VehicleResolverObject::WO_CACHED, false, CBID_NO_CALLBACK, image_type); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->GetNumResults() == 0) return 0; return group->GetResult() + (direction % group->GetNumResults()); @@ -1034,15 +1041,14 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Aircraft *v, bool info_vi assert(e->type == VEH_AIRCRAFT); assert(!(e->u.air.subtype & AIR_CTOL)); - VehicleResolverObject object(engine, v, info_view, CBID_NO_CALLBACK, image_type); - const SpriteGroup *group = GetWagonOverrideSpriteSet(engine, CT_DEFAULT, engine); - group = SpriteGroup::Resolve(group, &object); + VehicleResolverObject object(engine, v, VehicleResolverObject::WO_SELF, info_view, CBID_NO_CALLBACK, image_type); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->GetNumResults() == 0) return 0; - if (v == NULL) return group->GetResult(); + if (v == NULL || info_view) return group->GetResult(); - return group->GetResult() + (info_view ? 0 : (v->Next()->Next()->state % group->GetNumResults())); + return group->GetResult() + (v->Next()->Next()->state % group->GetNumResults()); } @@ -1068,11 +1074,8 @@ bool UsesWagonOverride(const Vehicle *v) */ uint16 GetVehicleCallback(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v) { - VehicleResolverObject object(engine, v, false, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v, false), &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + VehicleResolverObject object(engine, v, VehicleResolverObject::WO_UNCACHED, false, callback, param1, param2); + return object.ResolveCallback(); } /** @@ -1087,13 +1090,9 @@ uint16 GetVehicleCallback(CallbackID callback, uint32 param1, uint32 param2, Eng */ uint16 GetVehicleCallbackParent(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent) { - VehicleResolverObject object(engine, v, false, callback, param1, param2); + VehicleResolverObject object(engine, v, VehicleResolverObject::WO_NONE, false, callback, param1, param2); object.parent_scope.SetVehicle(parent); - - const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v, false), &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } @@ -1118,10 +1117,10 @@ static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_rando /* We can't trigger a non-existent vehicle... */ assert(v != NULL); - VehicleResolverObject object(v->engine_type, v, false, CBID_RANDOM_TRIGGER); + VehicleResolverObject object(v->engine_type, v, VehicleResolverObject::WO_CACHED, false, CBID_RANDOM_TRIGGER); object.trigger = trigger; - const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(v->engine_type, v), &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return; byte new_random_bits = Random(); @@ -1285,7 +1284,7 @@ void CommitVehicleListOrderChanges() */ void FillNewGRFVehicleCache(const Vehicle *v) { - VehicleResolverObject ro(v->engine_type, v); + VehicleResolverObject ro(v->engine_type, v, VehicleResolverObject::WO_NONE); /* These variables we have to check; these are the ones with a cache. */ static const int cache_entries[][2] = { @@ -1293,6 +1292,7 @@ void FillNewGRFVehicleCache(const Vehicle *v) { 0x41, NCVV_POSITION_SAME_ID_LENGTH }, { 0x42, NCVV_CONSIST_CARGO_INFORMATION }, { 0x43, NCVV_COMPANY_INFORMATION }, + { 0x4D, NCVV_POSITION_IN_VEHICLE }, }; assert_compile(NCVV_END == lengthof(cache_entries)); diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index 7eb65f134f..4a6f211c49 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -26,7 +26,7 @@ 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); + VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view); void SetVehicle(const Vehicle *v) { this->v = v; } @@ -38,13 +38,21 @@ struct VehicleScopeResolver : public ScopeResolver { /** Resolver for a vehicle (chain) */ struct VehicleResolverObject : public ResolverObject { + /** Application of 'wagon overrides'. */ + enum WagonOverride { + WO_NONE, //!< Resolve no wagon overrides. + WO_UNCACHED, //!< Resolve wagon overrides. + WO_CACHED, //!< Resolve wagon overrides using TrainCache::cached_override. + WO_SELF, //!< Resolve self-override (helicopter rotors and such). + }; + VehicleScopeResolver self_scope; ///< Scope resolver for the indicated vehicle. VehicleScopeResolver parent_scope; ///< Scope resolver for its parent vehicle. VehicleScopeResolver relative_scope; ///< Scope resolver for an other vehicle in the chain. byte cached_relative_count; ///< Relative position of the other vehicle. - VehicleResolverObject(EngineID engine_type, const Vehicle *v, bool info_view = false, + VehicleResolverObject(EngineID engine_type, const Vehicle *v, WagonOverride wagon_override, bool info_view = false, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0); diff --git a/src/newgrf_generic.cpp b/src/newgrf_generic.cpp index 75e25c3d40..9bd77239aa 100644 --- a/src/newgrf_generic.cpp +++ b/src/newgrf_generic.cpp @@ -18,6 +18,8 @@ #include "water_map.h" #include +#include "safeguards.h" + /** Scope resolver for generic objects and properties. */ struct GenericScopeResolver : public ScopeResolver { CargoID cargo_type; @@ -29,7 +31,7 @@ struct GenericScopeResolver : public ScopeResolver { uint8 count; uint8 station_size; - GenericScopeResolver(ResolverObject *ro, bool ai_callback); + GenericScopeResolver(ResolverObject &ro, bool ai_callback); /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -104,7 +106,7 @@ void AddGenericCallback(uint8 feature, const GRFFile *file, const SpriteGroup *g { if (this->ai_callback) { switch (variable) { - case 0x40: return this->ro->grffile->cargo_map[this->cargo_type]; + case 0x40: return this->ro.grffile->cargo_map[this->cargo_type]; case 0x80: return this->cargo_type; case 0x81: return CargoSpec::Get(this->cargo_type)->bitnum; @@ -139,7 +141,7 @@ void AddGenericCallback(uint8 feature, const GRFFile *file, const SpriteGroup *g * @param ai_callback Callback comes from the AI. * @param callback Callback ID. */ -GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callback) : ResolverObject(NULL, callback), generic_scope(this, ai_callback) +GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callback) : ResolverObject(NULL, callback), generic_scope(*this, ai_callback) { } @@ -148,7 +150,7 @@ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callba * @param ro Surrounding resolver. * @param ai_callback Callback comes from the AI. */ -GenericScopeResolver::GenericScopeResolver(ResolverObject *ro, bool ai_callback) : ScopeResolver(ro) +GenericScopeResolver::GenericScopeResolver(ResolverObject &ro, bool ai_callback) : ScopeResolver(ro) { this->cargo_type = 0; this->default_selection = 0; @@ -173,23 +175,23 @@ GenericScopeResolver::GenericScopeResolver(ResolverObject *ro, bool ai_callback) * May be NULL if not required. * @return callback value if successful or CALLBACK_FAILED */ -static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject *object, uint32 param1_grfv7, uint32 param1_grfv8, const GRFFile **file) +static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject &object, uint32 param1_grfv7, uint32 param1_grfv8, const GRFFile **file) { assert(feature < lengthof(_gcl)); /* Test each feature callback sprite group. */ for (GenericCallbackList::const_iterator it = _gcl[feature].begin(); it != _gcl[feature].end(); ++it) { - const SpriteGroup *group = it->group; - object->grffile = it->file; + object.grffile = it->file; + object.root_spritegroup = it->group; /* Set callback param based on GRF version. */ - object->callback_param1 = it->file->grf_version >= 8 ? param1_grfv8 : param1_grfv7; - group = SpriteGroup::Resolve(group, object); - if (group == NULL || group->GetCallbackResult() == CALLBACK_FAILED) continue; + object.callback_param1 = it->file->grf_version >= 8 ? param1_grfv8 : param1_grfv7; + uint16 result = object.ResolveCallback(); + if (result == CALLBACK_FAILED) continue; /* Return NewGRF file if necessary */ if (file != NULL) *file = it->file; - return group->GetCallbackResult(); + return result; } /* No callback returned a valid result, so we've failed. */ @@ -238,7 +240,7 @@ uint16 GetAiPurchaseCallbackResult(uint8 feature, CargoID cargo_type, uint8 defa object.generic_scope.count = count; object.generic_scope.station_size = station_size; - uint16 callback = GetGenericCallbackResult(feature, &object, 0, 0, file); + uint16 callback = GetGenericCallbackResult(feature, object, 0, 0, file); if (callback != CALLBACK_FAILED) callback = GB(callback, 0, 8); return callback; } @@ -264,7 +266,7 @@ void AmbientSoundEffectCallback(TileIndex tile) /* Run callback. */ const GRFFile *grf_file; - uint16 callback = GetGenericCallbackResult(GSF_SOUNDFX, &object, param1_v7, param1_v8, &grf_file); + uint16 callback = GetGenericCallbackResult(GSF_SOUNDFX, object, param1_v7, param1_v8, &grf_file); if (callback != CALLBACK_FAILED) PlayTileSound(grf_file, callback, tile); } diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 287ed0939f..2945f99455 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -36,6 +36,9 @@ #include "table/sprites.h" +#include +#include "safeguards.h" + /* Maximum number of NewGRFs that may be loaded. Six reserved slots are: * 0 - config, 1 - sound, 2 - base, 3 - logos, 4 - climate, 5 - extra */ static const int MAX_NEWGRFS = MAX_FILE_SLOTS - 6; @@ -88,7 +91,7 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint /* Prepare and draw GRF ID */ char buff[256]; - snprintf(buff, lengthof(buff), "%08X", BSWAP32(c->ident.grfid)); + seprintf(buff, lastof(buff), "%08X", BSWAP32(c->ident.grfid)); SetDParamStr(0, buff); y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_GRF_ID); @@ -119,9 +122,9 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint /* Draw the palette of the NewGRF */ if (c->palette & GRFP_BLT_32BPP) { - SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Windows / 32 bpp" : "DOS / 32 bpp"); + SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Legacy (W) / 32 bpp" : "Default (D) / 32 bpp"); } else { - SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Windows" : "DOS"); + SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Legacy (W)" : "Default (D)"); } y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_PALETTE); } @@ -134,9 +137,8 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint /* Draw GRF info if it exists */ if (!StrEmpty(c->GetDescription())) { - SetDParam(0, STR_JUST_RAW_STRING); - SetDParamStr(1, c->GetDescription()); - y = DrawStringMultiLine(x, right, y, bottom, STR_BLACK_STRING); + SetDParamStr(0, c->GetDescription()); + y = DrawStringMultiLine(x, right, y, bottom, STR_BLACK_RAW_STRING); } else { y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_NO_INFO); } @@ -197,7 +199,8 @@ struct NewGRFParametersWindow : public Window { switch (widget) { case WID_NP_NUMPAR_DEC: case WID_NP_NUMPAR_INC: { - size->width = size->height = FONT_HEIGHT_NORMAL; + size->width = max(SETTING_BUTTON_WIDTH / 2, FONT_HEIGHT_NORMAL); + size->height = max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL); break; } @@ -211,7 +214,7 @@ struct NewGRFParametersWindow : public Window { } case WID_NP_BACKGROUND: - this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; + this->line_height = max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->width = 1; resize->height = this->line_height; @@ -264,6 +267,7 @@ struct NewGRFParametersWindow : public Window { int y = r.top; int button_y_offset = (this->line_height - SETTING_BUTTON_HEIGHT) / 2; + int text_y_offset = (this->line_height - FONT_HEIGHT_NORMAL) / 2; for (uint i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < this->vscroll->GetCount(); i++) { GRFParameterInfo *par_info = (i < this->grf_config->param_info.Length()) ? this->grf_config->param_info[i] : NULL; if (par_info == NULL) par_info = GetDummyParameterInfo(i); @@ -299,7 +303,7 @@ struct NewGRFParametersWindow : public Window { SetDParam(1, i + 1); } - DrawString(text_left, text_right, y + WD_MATRIX_TOP, STR_NEWGRF_PARAMETERS_SETTING, selected ? TC_WHITE : TC_LIGHT_BLUE); + DrawString(text_left, text_right, y + text_y_offset, STR_NEWGRF_PARAMETERS_SETTING, selected ? TC_WHITE : TC_LIGHT_BLUE); y += this->line_height; } } @@ -378,7 +382,7 @@ struct NewGRFParametersWindow : public Window { DropDownList *list = new DropDownList(); for (uint32 i = par_info->min_value; i <= par_info->max_value; i++) { - list->push_back(new DropDownListCharStringItem(GetGRFStringFromGRFText(par_info->value_names.Find(i)->second), i, false)); + *list->Append() = new DropDownListCharStringItem(GetGRFStringFromGRFText(par_info->value_names.Find(i)->second), i, false); } ShowDropDownListAt(this, list, old_val, -1, wi_rect, COLOUR_ORANGE, true); @@ -565,7 +569,7 @@ void ShowNewGRFTextfileWindow(TextfileType file_type, const GRFConfig *c) new NewGRFTextfileWindow(file_type, c); } -static GRFPresetList _grf_preset_list; +static GRFPresetList _grf_preset_list; ///< List of known NewGRF presets. @see GetGRFPresetList class DropDownListPresetItem : public DropDownListItem { public: @@ -584,7 +588,25 @@ public: } }; + +typedef std::map GrfIdMap; ///< Map of grfid to the grf config. + +/** + * Add all grf configs from \a c into the map. + * @param c Grf list to add. + * @param grfid_map Map to add them to. + */ +static void FillGrfidMap(const GRFConfig *c, GrfIdMap *grfid_map) +{ + while (c != NULL) { + std::pair p(c->ident.grfid, c); + grfid_map->insert(p); + c = c->next; + } +} + static void NewGRFConfirmationCallback(Window *w, bool confirmed); +static void ShowSavePresetWindow(const char *initial_text); /** * Window for showing NewGRF files @@ -612,7 +634,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { bool editable; ///< Is the window editable? bool show_params; ///< Are the grf-parameters shown in the info-panel? bool execute; ///< On pressing 'apply changes' are grf changes applied immediately, or only list is updated. - int preset; ///< Selected preset. + int preset; ///< Selected preset or \c -1 if none selected. int active_over; ///< Active GRF item over which another one is dragged, \c -1 if none. Scrollbar *vscroll; @@ -663,6 +685,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { { DeleteWindowByClass(WC_GRF_PARAMETERS); DeleteWindowByClass(WC_TEXTFILE); + DeleteWindowByClass(WC_SAVE_PRESET); if (this->editable && !this->execute) { CopyGRFConfigList(this->orig_list, this->actives, true); @@ -675,6 +698,44 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { _grf_preset_list.Clear(); } + /** + * Test whether the currently active set of NewGRFs can be upgraded with the available NewGRFs. + * @return Whether an upgrade is possible. + */ + bool CanUpgradeCurrent() + { + GrfIdMap grfid_map; + FillGrfidMap(this->actives, &grfid_map); + + for (const GRFConfig *a = _all_grfs; a != NULL; a = a->next) { + GrfIdMap::const_iterator iter = grfid_map.find(a->ident.grfid); + if (iter != grfid_map.end() && a->version > iter->second->version) return true; + } + return false; + } + + /** Upgrade the currently active set of NewGRFs. */ + void UpgradeCurrent() + { + GrfIdMap grfid_map; + FillGrfidMap(this->actives, &grfid_map); + + for (const GRFConfig *a = _all_grfs; a != NULL; a = a->next) { + GrfIdMap::iterator iter = grfid_map.find(a->ident.grfid); + if (iter == grfid_map.end() || iter->second->version >= a->version) continue; + + GRFConfig **c = &this->actives; + while (*c != iter->second) c = &(*c)->next; + GRFConfig *d = new GRFConfig(*a); + d->next = (*c)->next; + d->CopyParams(**c); + if (this->active_sel == *c) this->active_sel = NULL; + delete *c; + *c = d; + iter->second = d; + } + } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { @@ -884,11 +945,11 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { DropDownList *list = new DropDownList(); /* Add 'None' option for clearing list */ - list->push_back(new DropDownListStringItem(STR_NONE, -1, false)); + *list->Append() = new DropDownListStringItem(STR_NONE, -1, false); for (uint i = 0; i < _grf_preset_list.Length(); i++) { if (_grf_preset_list[i] != NULL) { - list->push_back(new DropDownListPresetItem(i)); + *list->Append() = new DropDownListPresetItem(i); } } @@ -906,7 +967,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { } case WID_NS_PRESET_SAVE: - ShowQueryString(STR_EMPTY, STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY, 32, this, CS_ALPHANUMERAL, QSF_NONE); + ShowSavePresetWindow((this->preset == -1) ? NULL : _grf_preset_list[this->preset]); break; case WID_NS_PRESET_DELETE: @@ -991,6 +1052,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { if (newsel == NULL && c->next == this->active_sel) newsel = c; if (c == this->active_sel) { + if (newsel == c) newsel = NULL; + *pc = c->next; delete c; break; @@ -1006,6 +1069,13 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { break; } + case WID_NS_UPGRADE: { // Upgrade GRF. + if (!this->editable || this->actives == NULL) break; + UpgradeCurrent(); + this->InvalidateData(GOID_NEWGRF_LIST_EDITED); + break; + } + case WID_NS_AVAIL_LIST: { // Select a non-active GRF. ResetObjectToPlace(); @@ -1056,7 +1126,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { } case WID_NS_TOGGLE_PALETTE: - if (this->active_sel != NULL || !this->editable) { + if (this->active_sel != NULL && this->editable) { this->active_sel->palette ^= GRFP_USE_MASK; this->SetDirty(); } @@ -1184,6 +1254,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { WIDGET_LIST_END ); this->SetWidgetDisabledState(WID_NS_ADD, !this->editable || this->avail_sel == NULL || HasBit(this->avail_sel->flags, GCF_INVALID)); + this->SetWidgetDisabledState(WID_NS_UPGRADE, !this->editable || this->actives == NULL || !this->CanUpgradeCurrent()); bool disable_all = this->active_sel == NULL || !this->editable; this->SetWidgetsDisabledState(disable_all, @@ -1201,7 +1272,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { this->SetWidgetDisabledState(WID_NS_SET_PARAMETERS, !this->show_params || this->active_sel == NULL || this->active_sel->num_valid_params == 0); this->SetWidgetDisabledState(WID_NS_VIEW_PARAMETERS, !this->show_params || this->active_sel == NULL || this->active_sel->num_valid_params == 0); - this->SetWidgetDisabledState(WID_NS_TOGGLE_PALETTE, disable_all); + this->SetWidgetDisabledState(WID_NS_TOGGLE_PALETTE, disable_all || + (!(_settings_client.gui.newgrf_developer_tools || _settings_client.gui.scenario_developer) && ((c->palette & GRFP_GRF_MASK) != GRFP_GRF_UNSET))); if (!disable_all) { /* All widgets are now enabled, so disable widgets we can't use */ @@ -1490,7 +1562,7 @@ void ShowMissingContentWindow(const GRFConfig *list) ContentInfo *ci = new ContentInfo(); ci->type = CONTENT_TYPE_NEWGRF; ci->state = ContentInfo::DOES_NOT_EXIST; - ttd_strlcpy(ci->name, c->GetName(), lengthof(ci->name)); + strecpy(ci->name, c->GetName(), lastof(ci->name)); ci->unique_id = BSWAP32(c->ident.grfid); memcpy(ci->md5sum, HasBit(c->flags, GCF_COMPATIBLE) ? c->original_md5sum : c->ident.md5sum, sizeof(ci->md5sum)); *cv.Append() = ci; @@ -1765,6 +1837,8 @@ static const NWidgetPart _nested_newgrf_actives_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_DOWN), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_NEWGRF_SETTINGS_MOVEDOWN, STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP), EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_UPGRADE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_UPGRADE, STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), @@ -1935,6 +2009,162 @@ void ShowNewGRFSettings(bool editable, bool show_params, bool exec_changes, GRFC new NewGRFWindow(&_newgrf_desc, editable, show_params, exec_changes, config); } +/** Widget parts of the save preset window. */ +static const NWidgetPart _nested_save_preset_widgets[] = { + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CLOSEBOX, COLOUR_GREY), + NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_SAVE_PRESET_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_INSET, COLOUR_GREY, WID_SVP_PRESET_LIST), SetPadding(2, 1, 0, 2), + SetDataTip(0x0, STR_SAVE_PRESET_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SVP_SCROLLBAR), EndContainer(), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SVP_SCROLLBAR), + EndContainer(), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SVP_EDITBOX), SetPadding(3, 2, 2, 2), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_SAVE_PRESET_TITLE, STR_SAVE_PRESET_EDITBOX_TOOLTIP), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SVP_CANCEL), SetDataTip(STR_SAVE_PRESET_CANCEL, STR_SAVE_PRESET_CANCEL_TOOLTIP), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SVP_SAVE), SetDataTip(STR_SAVE_PRESET_SAVE, STR_SAVE_PRESET_SAVE_TOOLTIP), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_RESIZEBOX, COLOUR_GREY), + EndContainer(), +}; + +/** Window description of the preset save window. */ +static WindowDesc _save_preset_desc( + WDP_CENTER, "save_preset", 140, 110, + WC_SAVE_PRESET, WC_GAME_OPTIONS, + WDF_MODAL, + _nested_save_preset_widgets, lengthof(_nested_save_preset_widgets) +); + +/** Class for the save preset window. */ +struct SavePresetWindow : public Window { + QueryString presetname_editbox; ///< Edit box of the save preset. + GRFPresetList presets; ///< Available presets. + Scrollbar *vscroll; ///< Pointer to the scrollbar widget. + int selected; ///< Selected entry in the preset list, or \c -1 if none selected. + + /** + * Constructor of the save preset window. + * @param initial_text Initial text to display in the edit box, or \c NULL. + */ + SavePresetWindow(const char *initial_text) : Window(&_save_preset_desc), presetname_editbox(32) + { + GetGRFPresetList(&this->presets); + this->selected = -1; + if (initial_text != NULL) { + for (uint i = 0; i < this->presets.Length(); i++) { + if (!strcmp(initial_text, this->presets[i])) { + this->selected = i; + break; + } + } + } + + this->querystrings[WID_SVP_EDITBOX] = &this->presetname_editbox; + this->presetname_editbox.ok_button = WID_SVP_SAVE; + this->presetname_editbox.cancel_button = WID_SVP_CANCEL; + + this->CreateNestedTree(); + this->vscroll = this->GetScrollbar(WID_SVP_SCROLLBAR); + this->FinishInitNested(0); + + this->vscroll->SetCount(this->presets.Length()); + this->SetFocusedWidget(WID_SVP_EDITBOX); + if (initial_text != NULL) this->presetname_editbox.text.Assign(initial_text); + } + + ~SavePresetWindow() + { + } + + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + switch (widget) { + case WID_SVP_PRESET_LIST: { + resize->height = FONT_HEIGHT_NORMAL + 2U; + size->height = 0; + for (uint i = 0; i < this->presets.Length(); i++) { + Dimension d = GetStringBoundingBox(this->presets[i]); + size->width = max(size->width, d.width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT); + resize->height = max(resize->height, d.height); + } + size->height = ClampU(this->presets.Length(), 5, 20) * resize->height + 1; + break; + } + } + } + + virtual void DrawWidget(const Rect &r, int widget) const + { + switch (widget) { + case WID_SVP_PRESET_LIST: { + GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK); + + uint step_height = this->GetWidget(WID_SVP_PRESET_LIST)->resize_y; + int offset_y = (step_height - FONT_HEIGHT_NORMAL) / 2; + uint y = r.top + WD_FRAMERECT_TOP; + uint min_index = this->vscroll->GetPosition(); + uint max_index = min(min_index + this->vscroll->GetCapacity(), this->presets.Length()); + + for (uint i = min_index; i < max_index; i++) { + if ((int)i == this->selected) GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 2, PC_DARK_BLUE); + + const char *text = this->presets[i]; + DrawString(r.left + WD_FRAMERECT_LEFT, r.right, y + offset_y, text, ((int)i == this->selected) ? TC_WHITE : TC_SILVER); + y += step_height; + } + break; + } + } + } + + virtual void OnClick(Point pt, int widget, int click_count) + { + switch (widget) { + case WID_SVP_PRESET_LIST: { + uint row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SVP_PRESET_LIST); + if (row < this->presets.Length()) { + this->selected = row; + this->presetname_editbox.text.Assign(this->presets[row]); + this->SetWidgetDirty(WID_SVP_PRESET_LIST); + this->SetWidgetDirty(WID_SVP_EDITBOX); + } + break; + } + + case WID_SVP_CANCEL: + delete this; + break; + + case WID_SVP_SAVE: { + Window *w = FindWindowById(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE); + if (w != NULL && !StrEmpty(this->presetname_editbox.text.buf)) w->OnQueryTextFinished(this->presetname_editbox.text.buf); + delete this; + break; + } + } + } + + virtual void OnResize() + { + this->vscroll->SetCapacityFromWidget(this, WID_SVP_PRESET_LIST); + } +}; + +/** + * Open the window for saving a preset. + * @param initial_text Initial text to display in the edit box, or \c NULL. + */ +static void ShowSavePresetWindow(const char *initial_text) +{ + DeleteWindowByClass(WC_SAVE_PRESET); + new SavePresetWindow(initial_text); +} + /** Widgets for the progress window. */ static const NWidgetPart _nested_scan_progress_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_NEWGRF_SCAN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), @@ -2031,9 +2261,9 @@ struct ScanProgressWindow : public Window { if (name == NULL) { char buf[256]; GetString(buf, STR_NEWGRF_SCAN_ARCHIVES, lastof(buf)); - this->last_name = strdup(buf); + this->last_name = stredup(buf); } else { - this->last_name = strdup(name); + this->last_name = stredup(name); } this->scanned = num; if (num > _settings_client.gui.last_newgrf_count) _settings_client.gui.last_newgrf_count = num; diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 2f03060a6c..6c9c614af9 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -24,10 +24,12 @@ #include "newgrf_cargo.h" #include "station_base.h" +#include "safeguards.h" + static BuildingCounts _building_counts; static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX]; -HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, HOUSE_MAX, INVALID_HOUSE_ID); +HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID); /** * Constructor of a house scope resolver. @@ -39,7 +41,7 @@ HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, HOUSE_MAX, INVALID_HOUSE_ID); * @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, +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) { @@ -78,9 +80,10 @@ HouseResolverObject::HouseResolverObject(HouseID house_id, TileIndex tile, Town CallbackID callback, uint32 param1, uint32 param2, bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers) : ResolverObject(GetHouseSpecGrf(house_id), callback, param1, param2), - house_scope(this, house_id, tile, town, not_yet_constructed, initial_random_bits, watched_cargo_triggers), - town_scope(this, town, not_yet_constructed) // Don't access StorePSA if house is not yet constructed. + house_scope(*this, house_id, tile, town, not_yet_constructed, initial_random_bits, watched_cargo_triggers), + town_scope(*this, town, not_yet_constructed) // Don't access StorePSA if house is not yet constructed. { + this->root_spritegroup = HouseSpec::Get(house_id)->grf_prop.spritegroup[0]; } HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid) @@ -199,10 +202,10 @@ static uint32 GetNearbyTileInformation(byte parameter, TileIndex tile, bool grf_ } /** Structure with user-data for SearchNearbyHouseXXX - functions */ -typedef struct { +struct SearchNearbyHouseData { const HouseSpec *hs; ///< Specs of the house that started the search. TileIndex north_tile; ///< Northern tile of the house. -} SearchNearbyHouseData; +}; /** * Callback function to search a house by its HouseID @@ -352,7 +355,7 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI } /* Land info for nearby tiles. */ - case 0x62: return GetNearbyTileInformation(parameter, this->tile, this->ro->grffile->grf_version >= 8); + case 0x62: return GetNearbyTileInformation(parameter, this->tile, this->ro.grffile->grf_version >= 8); /* Current animation frame of nearby house tiles */ case 0x63: { @@ -362,7 +365,7 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI /* Cargo acceptance history of nearby stations */ case 0x64: { - CargoID cid = GetCargoTranslation(parameter, this->ro->grffile); + CargoID cid = GetCargoTranslation(parameter, this->ro.grffile); if (cid == CT_INVALID) return 0; /* Extract tile offset. */ @@ -377,10 +380,10 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI uint32 res = 0; for (Station * const * st_iter = sl->Begin(); st_iter != sl->End(); st_iter++) { const Station *st = *st_iter; - if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED)) SetBit(res, 0); - if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_LAST_MONTH)) SetBit(res, 1); - if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH)) SetBit(res, 2); - if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK)) SetBit(res, 3); + if (HasBit(st->goods[cid].status, GoodsEntry::GES_EVER_ACCEPTED)) SetBit(res, 0); + if (HasBit(st->goods[cid].status, GoodsEntry::GES_LAST_MONTH)) SetBit(res, 1); + if (HasBit(st->goods[cid].status, GoodsEntry::GES_CURRENT_MONTH)) SetBit(res, 2); + if (HasBit(st->goods[cid].status, GoodsEntry::GES_ACCEPTED_BIGTICK)) SetBit(res, 3); } /* Cargo triggered CB 148? */ @@ -400,7 +403,7 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI /* Information about the grf local classid if the house has a class */ uint houseclass = 0; if (hs->class_id != HOUSE_NO_CLASS) { - houseclass = (hs->grf_prop.grffile == this->ro->grffile ? 1 : 2) << 8; + houseclass = (hs->grf_prop.grffile == this->ro.grffile ? 1 : 2) << 8; houseclass |= _class_mapping[hs->class_id].class_id; } /* old house type or grf-local houseid */ @@ -408,7 +411,7 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI if (this->house_id < NEW_HOUSE_OFFSET) { local_houseid = this->house_id; } else { - local_houseid = (hs->grf_prop.grffile == this->ro->grffile ? 1 : 2) << 8; + local_houseid = (hs->grf_prop.grffile == this->ro.grffile ? 1 : 2) << 8; local_houseid |= hs->grf_prop.local_id; } return houseclass << 16 | local_houseid; @@ -439,11 +442,7 @@ uint16 GetHouseCallback(CallbackID callback, uint32 param1, uint32 param2, House HouseResolverObject object(house_id, tile, town, callback, param1, param2, not_yet_constructed, initial_random_bits, watched_cargo_triggers); - - const SpriteGroup *group = SpriteGroup::Resolve(HouseSpec::Get(house_id)->grf_prop.spritegroup[0], &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } static void DrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte stage, HouseID house_id) @@ -490,7 +489,7 @@ void DrawNewHouseTile(TileInfo *ti, HouseID house_id) HouseResolverObject object(house_id, ti->tile, Town::GetByTile(ti->tile)); - const SpriteGroup *group = SpriteGroup::Resolve(hs->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group != NULL && group->type == SGT_TILELAYOUT) { /* Limit the building stage to the number of stages supplied. */ const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; @@ -610,12 +609,12 @@ static void DoTriggerHouse(TileIndex tile, HouseTrigger trigger, byte base_rando HouseID hid = GetHouseType(tile); HouseSpec *hs = HouseSpec::Get(hid); - if (hs->grf_prop.spritegroup == NULL) return; + if (hs->grf_prop.spritegroup[0] == NULL) return; HouseResolverObject object(hid, tile, Town::GetByTile(tile), CBID_RANDOM_TRIGGER); object.trigger = trigger; - const SpriteGroup *group = SpriteGroup::Resolve(hs->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return; byte new_random_bits = Random(); diff --git a/src/newgrf_house.h b/src/newgrf_house.h index d6d4beb5dd..37c1679470 100644 --- a/src/newgrf_house.h +++ b/src/newgrf_house.h @@ -27,7 +27,7 @@ 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. - HouseScopeResolver(ResolverObject *ro, HouseID house_id, TileIndex tile, Town *town, + HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town, bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers); /* virtual */ uint32 GetRandomBits() const; diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp index 257e27df1f..ef8e9fa9b7 100644 --- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -24,6 +24,8 @@ #include "table/strings.h" +#include "safeguards.h" + /* Since the industry IDs defined by the GRF file don't necessarily correlate * to those used by the game, the IDs used for overriding old industries must be * translated when the idustry spec is set. */ @@ -39,9 +41,9 @@ IndustryTileOverrideManager _industile_mngr(NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRY IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id) { if (grf_type == IT_INVALID) return IT_INVALID; - if (!HasBit(grf_type, 7)) return GB(grf_type, 0, 6); + if (!HasBit(grf_type, 7)) return GB(grf_type, 0, 7); - return _industry_mngr.GetID(GB(grf_type, 0, 6), grf_id); + return _industry_mngr.GetID(GB(grf_type, 0, 7), grf_id); } /** @@ -54,7 +56,7 @@ IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id) */ uint32 GetIndustryIDAtOffset(TileIndex tile, const Industry *i, uint32 cur_grfid) { - if (!IsTileType(tile, MP_INDUSTRY) || GetIndustryIndex(tile) != i->index) { + if (!i->TileBelongsToIndustry(tile)) { /* No industry and/or the tile does not have the same industry as the one we match it with */ return 0xFFFF; } @@ -159,7 +161,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout /* virtual */ uint32 IndustriesScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { - if (this->ro->callback == CBID_INDUSTRY_LOCATION) { + if (this->ro.callback == CBID_INDUSTRY_LOCATION) { /* Variables available during construction check. */ switch (variable) { @@ -185,7 +187,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout case 0x89: return min(DistanceManhattan(this->industry->town->xy, this->tile), 255); /* Lowest height of the tile */ - case 0x8A: return Clamp(GetTileZ(this->tile) * (this->ro->grffile->grf_version >= 8 ? 1 : TILE_HEIGHT), 0, 0xFF); + case 0x8A: return Clamp(GetTileZ(this->tile) * (this->ro.grffile->grf_version >= 8 ? 1 : TILE_HEIGHT), 0, 0xFF); /* Distance to the nearest water/land tile */ case 0x8B: return GetClosestWaterDistance(this->tile, (GetIndustrySpec(this->industry->type)->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0); @@ -201,7 +203,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout const IndustrySpec *indspec = GetIndustrySpec(this->type); if (this->industry == NULL) { - DEBUG(grf, 1, "Unhandled variable 0x%X (no available industry) in callback 0x%x", variable, this->ro->callback); + DEBUG(grf, 1, "Unhandled variable 0x%X (no available industry) in callback 0x%x", variable, this->ro.callback); *available = false; return UINT_MAX; @@ -251,7 +253,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout case 0x46: return this->industry->construction_date; // Date when built - long format - (in days) /* Get industry ID at offset param */ - case 0x60: return GetIndustryIDAtOffset(GetNearbyTile(parameter, this->industry->location.tile, false), this->industry, this->ro->grffile->grfid); + case 0x60: return GetIndustryIDAtOffset(GetNearbyTile(parameter, this->industry->location.tile, false), this->industry, this->ro.grffile->grfid); /* Get random tile bits at offset param */ case 0x61: { @@ -263,7 +265,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout /* Land info of nearby tiles */ case 0x62: if (this->tile == INVALID_TILE) break; - return GetNearbyIndustryTileInformation(parameter, this->tile, INVALID_INDUSTRY, false, this->ro->grffile->grf_version >= 8); + return GetNearbyIndustryTileInformation(parameter, this->tile, INVALID_INDUSTRY, false, this->ro.grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x63: { @@ -352,7 +354,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout case 0xA4: return this->industry->last_month_transported[1]; case 0xA5: return GB(this->industry->last_month_transported[1], 8, 8); - case 0xA6: return this->industry->type; + case 0xA6: return indspec->grf_prop.local_id; case 0xA7: return this->industry->founder; case 0xA8: return this->industry->random_colour; case 0xA9: return Clamp(this->industry->last_prod_year - ORIGINAL_BASE_YEAR, 0, 255); @@ -399,7 +401,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout const IndustrySpec *indsp = GetIndustrySpec(this->industry->type); uint32 grfid = (indsp->grf_prop.grffile != NULL) ? indsp->grf_prop.grffile->grfid : 0; assert(PersistentStorage::CanAllocateItem()); - this->industry->psa = new PersistentStorage(grfid); + this->industry->psa = new PersistentStorage(grfid, GSF_INDUSTRIES, this->industry->location.tile); } this->industry->psa->StoreValue(pos, value); @@ -429,9 +431,10 @@ static const GRFFile *GetGrffile(IndustryType type) IndustriesResolverObject::IndustriesResolverObject(TileIndex tile, Industry *indus, IndustryType type, uint32 random_bits, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(GetGrffile(type), callback, callback_param1, callback_param2), - industries_scope(this, tile, indus, type, random_bits), + industries_scope(*this, tile, indus, type, random_bits), town_scope(NULL) { + this->root_spritegroup = GetIndustrySpec(type)->grf_prop.spritegroup[0]; } IndustriesResolverObject::~IndustriesResolverObject() @@ -447,13 +450,15 @@ TownScopeResolver *IndustriesResolverObject::GetTown() { if (this->town_scope == NULL) { Town *t = NULL; + bool readonly = true; if (this->industries_scope.industry != NULL) { t = this->industries_scope.industry->town; + readonly = this->industries_scope.industry->index == INVALID_INDUSTRY; } else if (this->industries_scope.tile != INVALID_TILE) { t = ClosestTownFromTile(this->industries_scope.tile, UINT_MAX); } if (t == NULL) return NULL; - this->town_scope = new TownScopeResolver(this, t, this->industries_scope.industry->index == INVALID_INDUSTRY); + this->town_scope = new TownScopeResolver(*this, t, readonly); } return this->town_scope; } @@ -466,7 +471,7 @@ TownScopeResolver *IndustriesResolverObject::GetTown() * @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) +IndustriesScopeResolver::IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits) : ScopeResolver(ro) { this->tile = tile; @@ -488,10 +493,7 @@ IndustriesScopeResolver::IndustriesScopeResolver(ResolverObject *ro, TileIndex t uint16 GetIndustryCallback(CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile) { IndustriesResolverObject object(tile, industry, type, 0, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(GetIndustrySpec(type)->grf_prop.spritegroup[0], &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } /** @@ -521,15 +523,13 @@ CommandCost CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uin ind.psa = NULL; IndustriesResolverObject object(tile, &ind, type, seed, CBID_INDUSTRY_LOCATION, 0, creation_type); - const SpriteGroup *group = SpriteGroup::Resolve(GetIndustrySpec(type)->grf_prop.spritegroup[0], &object); + uint16 result = object.ResolveCallback(); /* Unlike the "normal" cases, not having a valid result means we allow * the building of the industry, as that's how it's done in TTDP. */ - if (group == NULL) return CommandCost(); - uint16 result = group->GetCallbackResult(); if (result == CALLBACK_FAILED) return CommandCost(); - return GetErrorMessageFromLocationCallbackResult(result, indspec->grf_prop.grffile->grfid, STR_ERROR_SITE_UNSUITABLE); + return GetErrorMessageFromLocationCallbackResult(result, indspec->grf_prop.grffile, STR_ERROR_SITE_UNSUITABLE); } /** @@ -594,7 +594,7 @@ void IndustryProductionCallback(Industry *ind, int reason) } SB(object.callback_param2, 8, 16, loop); - const SpriteGroup *tgroup = SpriteGroup::Resolve(spec->grf_prop.spritegroup[0], &object); + const SpriteGroup *tgroup = object.Resolve(); if (tgroup == NULL || tgroup->type != SGT_INDUSTRY_PRODUCTION) break; const IndustryProductionSpriteGroup *group = (const IndustryProductionSpriteGroup *)tgroup; diff --git a/src/newgrf_industries.h b/src/newgrf_industries.h index 5c95fcdcb6..57e44e8c05 100644 --- a/src/newgrf_industries.h +++ b/src/newgrf_industries.h @@ -21,7 +21,7 @@ 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); + IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp index 65e3c530db..90a17550d0 100644 --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -22,6 +22,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Based on newhouses equivalent, but adapted for newindustries * @param parameter from callback. It's in fact a pair of coordinates @@ -78,7 +80,7 @@ uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile) /* Land info of nearby tiles */ case 0x60: return GetNearbyIndustryTileInformation(parameter, this->tile, - this->industry == NULL ? (IndustryID)INVALID_INDUSTRY : this->industry->index, true, this->ro->grffile->grf_version >= 8); + this->industry == NULL ? (IndustryID)INVALID_INDUSTRY : this->industry->index, true, this->ro.grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x61: { @@ -90,7 +92,7 @@ uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile) } /* Get industry tile ID at offset */ - case 0x62: return GetIndustryIDAtOffset(GetNearbyTile(parameter, this->tile), this->industry, this->ro->grffile->grfid); + case 0x62: return GetIndustryIDAtOffset(GetNearbyTile(parameter, this->tile), this->industry, this->ro.grffile->grfid); } DEBUG(grf, 1, "Unhandled industry tile variable 0x%X", variable); @@ -144,9 +146,10 @@ static const GRFFile *GetIndTileGrffile(IndustryGfx gfx) IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileIndex tile, Industry *indus, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(GetIndTileGrffile(gfx), callback, callback_param1, callback_param2), - indtile_scope(this, indus, tile), - ind_scope(this, tile, indus, indus->type) + indtile_scope(*this, indus, tile), + ind_scope(*this, tile, indus, indus->type) { + this->root_spritegroup = GetIndustryTileSpec(gfx)->grf_prop.spritegroup[0]; } /** @@ -155,7 +158,7 @@ IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileInde * @param industry %Industry owning the tile. * @param tile %Tile of the industry. */ -IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject *ro, Industry *industry, TileIndex tile) : ScopeResolver(ro) +IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) : ScopeResolver(ro) { this->industry = industry; this->tile = tile; @@ -190,10 +193,7 @@ uint16 GetIndustryTileCallback(CallbackID callback, uint32 param1, uint32 param2 assert(industry->index == INVALID_INDUSTRY || IsTileType(tile, MP_INDUSTRY)); IndustryTileResolverObject object(gfx_id, tile, industry, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(GetIndustryTileSpec(gfx_id)->grf_prop.spritegroup[0], &object); - if (group == NULL || group->type != SGT_CALLBACK) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds) @@ -211,7 +211,7 @@ bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const Indus IndustryTileResolverObject object(gfx, ti->tile, i); - const SpriteGroup *group = SpriteGroup::Resolve(inds->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_TILELAYOUT) return false; /* Limit the building stage to the number of stages supplied. */ @@ -256,7 +256,7 @@ CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } - return GetErrorMessageFromLocationCallbackResult(callback_res, its->grf_prop.grffile->grfid, STR_ERROR_SITE_UNSUITABLE); + return GetErrorMessageFromLocationCallbackResult(callback_res, its->grf_prop.grffile, STR_ERROR_SITE_UNSUITABLE); } /* Simple wrapper for GetHouseCallback to keep the animation unified. */ @@ -328,7 +328,7 @@ static void DoTriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger, I IndustryTileResolverObject object(gfx, tile, ind, CBID_RANDOM_TRIGGER); object.trigger = trigger; - const SpriteGroup *group = SpriteGroup::Resolve(itspec->grf_prop.spritegroup[0], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) return; byte new_random_bits = Random(); diff --git a/src/newgrf_industrytiles.h b/src/newgrf_industrytiles.h index f5b88db837..394f75e1c6 100644 --- a/src/newgrf_industrytiles.h +++ b/src/newgrf_industrytiles.h @@ -21,7 +21,7 @@ struct IndustryTileScopeResolver : public ScopeResolver { Industry *industry; ///< Industry owning the tiles. TileIndex tile; ///< %Tile being resolved. - IndustryTileScopeResolver(ResolverObject *ro, Industry *industry, TileIndex tile); + IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp index 1db4b02c62..3f48a819f5 100644 --- a/src/newgrf_object.cpp +++ b/src/newgrf_object.cpp @@ -13,6 +13,7 @@ #include "company_base.h" #include "company_func.h" #include "debug.h" +#include "genworld.h" #include "newgrf_class_func.h" #include "newgrf_object.h" #include "newgrf_sound.h" @@ -23,6 +24,8 @@ #include "water.h" #include "newgrf_animation_base.h" +#include "safeguards.h" + /** The override manager for our objects. */ ObjectOverrideManager _object_mngr(NEW_OBJECT_OFFSET, NUM_OBJECTS, INVALID_OBJECT_TYPE); @@ -58,7 +61,16 @@ ObjectSpec _object_specs[NUM_OBJECTS]; bool ObjectSpec::IsEverAvailable() const { return this->enabled && HasBit(this->climate, _settings_game.game_creation.landscape) && - (this->flags & (_game_mode != GM_EDITOR ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0; + (this->flags & ((_game_mode != GM_EDITOR && !_generating_world) ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0; +} + +/** + * Check whether the object was available at some point in the past or present in this game with the current game mode. + * @return true if it was ever or is available. + */ +bool ObjectSpec::WasEverAvailable() const +{ + return this->IsEverAvailable() && _date > this->introduction_date; } /** @@ -67,7 +79,7 @@ bool ObjectSpec::IsEverAvailable() const */ bool ObjectSpec::IsAvailable() const { - return this->IsEverAvailable() && _date > this->introduction_date && + return this->WasEverAvailable() && (_date < this->end_of_life_date || this->end_of_life_date < this->introduction_date + 365); } @@ -123,7 +135,7 @@ INSTANTIATE_NEWGRF_CLASS_METHODS(ObjectClass, ObjectSpec, ObjectClassID, OBJECT_ * @param tile %Tile of the object. * @param view View of the object. */ -ObjectScopeResolver::ObjectScopeResolver(ResolverObject *ro, Object *obj, TileIndex tile, uint8 view) +ObjectScopeResolver::ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view) : ScopeResolver(ro) { this->obj = obj; @@ -148,7 +160,8 @@ static uint32 GetObjectIDAtOffset(TileIndex tile, uint32 cur_grfid) return 0xFFFF; } - const ObjectSpec *spec = ObjectSpec::GetByTile(tile); + const Object *o = Object::GetByTile(tile); + const ObjectSpec *spec = ObjectSpec::Get(o->type); /* Default objects have no associated NewGRF file */ if (spec->grf_prop.grffile == NULL) { @@ -156,7 +169,7 @@ static uint32 GetObjectIDAtOffset(TileIndex tile, uint32 cur_grfid) } if (spec->grf_prop.grffile->grfid == cur_grfid) { // same object, same grf ? - return spec->grf_prop.local_id; + return spec->grf_prop.local_id | o->view << 16; } return 0xFFFE; // Defined in another grf file @@ -190,7 +203,7 @@ static uint32 GetClosestObject(TileIndex tile, ObjectType type, const Object *cu uint32 best_dist = UINT32_MAX; const Object *o; FOR_ALL_OBJECTS(o) { - if (GetObjectType(o->location.tile) != type || o == current) continue; + if (o->type != type || o == current) continue; best_dist = min(best_dist, DistanceManhattan(tile, o->location.tile)); } @@ -316,7 +329,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, case 0x48: return this->obj->view; /* Get object ID at offset param */ - case 0x60: return GetObjectIDAtOffset(GetNearbyTile(parameter, this->tile), this->ro->grffile->grfid); + case 0x60: return GetObjectIDAtOffset(GetNearbyTile(parameter, this->tile), this->ro.grffile->grfid); /* Get random tile bits at offset param */ case 0x61: { @@ -325,7 +338,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, } /* Land info of nearby tiles */ - case 0x62: return GetNearbyObjectTileInformation(parameter, this->tile, this->obj == NULL ? INVALID_OBJECT : this->obj->index, this->ro->grffile->grf_version >= 8); + case 0x62: return GetNearbyObjectTileInformation(parameter, this->tile, this->obj == NULL ? INVALID_OBJECT : this->obj->index, this->ro.grffile->grf_version >= 8); /* Animation counter of nearby tile */ case 0x63: { @@ -334,7 +347,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, } /* Count of object, distance of closest instance */ - case 0x64: return GetCountAndDistanceOfClosestInstance(parameter, this->ro->grffile->grfid, this->tile, this->obj); + case 0x64: return GetCountAndDistanceOfClosestInstance(parameter, this->ro.grffile->grfid, this->tile, this->obj); } unhandled: @@ -344,24 +357,6 @@ unhandled: return UINT_MAX; } -/** - * Get the object's sprite group. - * @param spec The specification to get the sprite group from. - * @param o The object to get he sprite group for. - * @return The resolved sprite group. - */ -static const SpriteGroup *GetObjectSpriteGroup(const ObjectSpec *spec, const Object *o) -{ - const SpriteGroup *group = NULL; - - if (o == NULL) group = spec->grf_prop.spritegroup[CT_PURCHASE_OBJECT]; - if (group != NULL) return group; - - /* Fall back to the default set if the selected cargo type is not defined */ - return spec->grf_prop.spritegroup[0]; - -} - /** * Constructor of the object resolver. * @param obj Object being resolved. @@ -373,9 +368,11 @@ static const SpriteGroup *GetObjectSpriteGroup(const ObjectSpec *spec, const Obj */ ObjectResolverObject::ObjectResolverObject(const ObjectSpec *spec, Object *obj, TileIndex tile, uint8 view, CallbackID callback, uint32 param1, uint32 param2) - : ResolverObject(spec->grf_prop.grffile, callback, param1, param2), object_scope(this, obj, tile, view) + : ResolverObject(spec->grf_prop.grffile, callback, param1, param2), object_scope(*this, obj, tile, view) { this->town_scope = NULL; + this->root_spritegroup = (obj == NULL && spec->grf_prop.spritegroup[CT_PURCHASE_OBJECT] != NULL) ? + spec->grf_prop.spritegroup[CT_PURCHASE_OBJECT] : spec->grf_prop.spritegroup[0]; } ObjectResolverObject::~ObjectResolverObject() @@ -398,7 +395,7 @@ TownScopeResolver *ObjectResolverObject::GetTown() t = ClosestTownFromTile(this->object_scope.tile, UINT_MAX); } if (t == NULL) return NULL; - this->town_scope = new TownScopeResolver(this, t, this->object_scope.obj == NULL); + this->town_scope = new TownScopeResolver(*this, t, this->object_scope.obj == NULL); } return this->town_scope; } @@ -417,10 +414,7 @@ TownScopeResolver *ObjectResolverObject::GetTown() uint16 GetObjectCallback(CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, Object *o, TileIndex tile, uint8 view) { ObjectResolverObject object(spec, o, tile, view, callback, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, o), &object); - if (group == NULL) return CALLBACK_FAILED; - - return group->GetCallbackResult(); + return object.ResolveCallback(); } /** @@ -460,7 +454,7 @@ void DrawNewObjectTile(TileInfo *ti, const ObjectSpec *spec) Object *o = Object::GetByTile(ti->tile); ObjectResolverObject object(spec, o, ti->tile); - const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, o), &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_TILELAYOUT) return; DrawTileLayout(ti, (const TileLayoutSpriteGroup *)group, spec); @@ -476,7 +470,7 @@ void DrawNewObjectTile(TileInfo *ti, const ObjectSpec *spec) void DrawNewObjectTileInGUI(int x, int y, const ObjectSpec *spec, uint8 view) { ObjectResolverObject object(spec, NULL, INVALID_TILE, view); - const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, NULL), &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_TILELAYOUT) return; const DrawTileSprites *dts = ((const TileLayoutSpriteGroup *)group)->ProcessRegisters(NULL); diff --git a/src/newgrf_object.h b/src/newgrf_object.h index 4ccca97b8d..4a3b770d29 100644 --- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -37,7 +37,8 @@ enum ObjectFlags { OBJECT_FLAG_NOT_ON_LAND = 1 << 9, ///< Object can not be on land, implicitly sets #OBJECT_FLAG_BUILT_ON_WATER. OBJECT_FLAG_DRAW_WATER = 1 << 10, ///< Object wants to be drawn on water. OBJECT_FLAG_ALLOW_UNDER_BRIDGE = 1 << 11, ///< Object can built under a bridge. - OBJECT_FLAG_ANIM_RANDOM_BITS = 1 << 12, ///< Object wants random bits in "next animation frame" callback + OBJECT_FLAG_ANIM_RANDOM_BITS = 1 << 12, ///< Object wants random bits in "next animation frame" callback. + OBJECT_FLAG_SCALE_BY_WATER = 1 << 13, ///< Object count is roughly scaled by water amount at edges. }; DECLARE_ENUM_AS_BIT_SET(ObjectFlags) @@ -46,13 +47,16 @@ void ResetObjects(); /** Class IDs for objects. */ enum ObjectClassID { OBJECT_CLASS_BEGIN = 0, ///< The lowest valid value - OBJECT_CLASS_MAX = 32, ///< Maximum number of classes. + OBJECT_CLASS_MAX = 0xFF, ///< Maximum number of classes. INVALID_OBJECT_CLASS = 0xFF, ///< Class for the less fortunate. }; /** Allow incrementing of ObjectClassID variables */ DECLARE_POSTFIX_INCREMENT(ObjectClassID) -/** An object that isn't use for transport, industries or houses. */ +/** An object that isn't use for transport, industries or houses. + * @note If you change this struct, adopt the initialization of + * default objects in table/object_land.h + */ struct ObjectSpec { /* 2 because of the "normal" and "buy" sprite stacks. */ GRFFilePropsBase<2> grf_prop; ///< Properties related the the grf file @@ -70,6 +74,7 @@ struct ObjectSpec { uint16 callback_mask; ///< Bitmask of requested/allowed callbacks. uint8 height; ///< The height of this structure, in heightlevels; max MAX_TILE_HEIGHT. uint8 views; ///< The number of views. + uint8 generate_amount; ///< Number of objects which are attempted to be generated per 256^2 map during world generation. bool enabled; ///< Is this spec enabled? /** @@ -85,6 +90,7 @@ struct ObjectSpec { Money GetClearCost() const { return GetPrice(PR_CLEAR_OBJECT, this->clear_cost_multiplier, this->grf_prop.grffile, 0); } bool IsEverAvailable() const; + bool WasEverAvailable() const; bool IsAvailable() const; uint Index() const; @@ -98,7 +104,7 @@ 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); + ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -133,7 +139,7 @@ private: TownScopeResolver *GetTown(); }; -/** Struct containing information relating to station classes. */ +/** Struct containing information relating to object classes. */ typedef NewGRFClass ObjectClass; /** Mapping of purchase for objects. */ diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp index 36ac7260aa..8a074db974 100644 --- a/src/newgrf_railtype.cpp +++ b/src/newgrf_railtype.cpp @@ -16,6 +16,8 @@ #include "depot_base.h" #include "town.h" +#include "safeguards.h" + /* virtual */ uint32 RailTypeScopeResolver::GetRandomBits() const { uint tmp = CountBits(this->tile + (TileX(this->tile) + TileY(this->tile)) * TILE_SIZE); @@ -71,7 +73,7 @@ * @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) +RailTypeScopeResolver::RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) : ScopeResolver(ro) { this->tile = tile; this->context = context; @@ -79,15 +81,17 @@ RailTypeScopeResolver::RailTypeScopeResolver(ResolverObject *ro, TileIndex tile, /** * Resolver object for rail types. + * @param rti Railtype. NULL in NewGRF Inspect window. * @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? - * @param grffile The GRF to do the lookup for. + * @param rtsg Railpart of interest * @param param1 Extra parameter (first parameter of the callback, except railtypes do not have callbacks). * @param param2 Extra parameter (second parameter of the callback, except railtypes do not have callbacks). */ -RailTypeResolverObject::RailTypeResolverObject(TileIndex tile, TileContext context, const GRFFile *grffile, uint32 param1, uint32 param2) - : ResolverObject(grffile, CBID_NO_CALLBACK, param1, param2), railtype_scope(this, tile, context) +RailTypeResolverObject::RailTypeResolverObject(const RailtypeInfo *rti, TileIndex tile, TileContext context, RailTypeSpriteGroup rtsg, uint32 param1, uint32 param2) + : ResolverObject(rti != NULL ? rti->grffile[rtsg] : NULL, CBID_NO_CALLBACK, param1, param2), railtype_scope(*this, tile, context) { + this->root_spritegroup = rti != NULL ? rti->group[rtsg] : NULL; } /** @@ -96,18 +100,21 @@ RailTypeResolverObject::RailTypeResolverObject(TileIndex tile, TileContext conte * @param tile The tile to get the sprite for. * @param rtsg The type of sprite to draw. * @param content Where are we drawing the tile? + * @param [out] num_results If not NULL, return the number of sprites in the spriteset. * @return The sprite to draw. */ -SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, TileContext context) +SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, TileContext context, uint *num_results) { assert(rtsg < RTSG_END); if (rti->group[rtsg] == NULL) return 0; - RailTypeResolverObject object(tile, context, rti->grffile[rtsg]); - const SpriteGroup *group = SpriteGroup::Resolve(rti->group[rtsg], &object); + RailTypeResolverObject object(rti, tile, context, rtsg); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->GetNumResults() == 0) return 0; + if (num_results) *num_results = group->GetNumResults(); + return group->GetResult(); } @@ -127,9 +134,9 @@ SpriteID GetCustomSignalSprite(const RailtypeInfo *rti, TileIndex tile, SignalTy uint32 param1 = gui ? 0x10 : 0x00; uint32 param2 = (type << 16) | (var << 8) | state; - RailTypeResolverObject object(tile, TCX_NORMAL, rti->grffile[RTSG_SIGNALS], param1, param2); + RailTypeResolverObject object(rti, tile, TCX_NORMAL, RTSG_SIGNALS, param1, param2); - const SpriteGroup *group = SpriteGroup::Resolve(rti->group[RTSG_SIGNALS], &object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->GetNumResults() == 0) return 0; return group->GetResult(); diff --git a/src/newgrf_railtype.h b/src/newgrf_railtype.h index c1977eaf87..4c68e7d1db 100644 --- a/src/newgrf_railtype.h +++ b/src/newgrf_railtype.h @@ -21,7 +21,7 @@ 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); + RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -31,7 +31,7 @@ struct RailTypeScopeResolver : public ScopeResolver { struct RailTypeResolverObject : public ResolverObject { RailTypeScopeResolver railtype_scope; ///< Resolver for the railtype scope. - RailTypeResolverObject(TileIndex tile, TileContext context, const GRFFile *grffile, uint32 param1 = 0, uint32 param2 = 0); + RailTypeResolverObject(const RailtypeInfo *rti, TileIndex tile, TileContext context, RailTypeSpriteGroup rtsg, uint32 param1 = 0, uint32 param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { @@ -44,7 +44,7 @@ struct RailTypeResolverObject : public ResolverObject { /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; }; -SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, TileContext context = TCX_NORMAL); +SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, TileContext context = TCX_NORMAL, uint *num_results = NULL); SpriteID GetCustomSignalSprite(const RailtypeInfo *rti, TileIndex tile, SignalType type, SignalVariant var, SignalState state, bool gui = false); uint8 GetReverseRailTypeTranslation(RailType railtype, const GRFFile *grffile); diff --git a/src/newgrf_sound.cpp b/src/newgrf_sound.cpp index c7739558fd..60ee609165 100644 --- a/src/newgrf_sound.cpp +++ b/src/newgrf_sound.cpp @@ -20,6 +20,8 @@ #include "debug.h" #include "settings_type.h" +#include "safeguards.h" + static SmallVector _sounds; diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 7e60e82b11..624b4d5474 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -14,9 +14,33 @@ #include "newgrf_spritegroup.h" #include "core/pool_func.hpp" +#include "safeguards.h" + SpriteGroupPool _spritegroup_pool("SpriteGroup"); INSTANTIATE_POOL_METHODS(SpriteGroup) +TemporaryStorageArray _temp_store; + + +/** + * ResolverObject (re)entry point. + * This cannot be made a call to a virtual function because virtual functions + * do not like NULL and checking for NULL *everywhere* is more cumbersome than + * this little helper function. + * @param group the group to resolve for + * @param object information needed to resolve the group + * @param top_level true if this is a top-level SpriteGroup, false if used nested in another SpriteGroup. + * @return the resolved group + */ +/* static */ const SpriteGroup *SpriteGroup::Resolve(const SpriteGroup *group, ResolverObject &object, bool top_level) +{ + if (group == NULL) return NULL; + if (top_level) { + _temp_store.ClearChanges(); + } + return group->Resolve(object); +} + RealSpriteGroup::~RealSpriteGroup() { free(this->loaded); @@ -34,38 +58,35 @@ RandomizedSpriteGroup::~RandomizedSpriteGroup() free(this->groups); } -TemporaryStorageArray _temp_store; - - -static inline uint32 GetVariable(const ResolverObject *object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available) +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; + if (GetGlobalVariable(variable, &value, object.grffile)) return value; /* Non-common variable */ switch (variable) { - case 0x0C: return object->callback; - case 0x10: return object->callback_param1; - case 0x18: return object->callback_param2; - case 0x1C: return object->last_value; + case 0x0C: return object.callback; + case 0x10: return object.callback_param1; + case 0x18: return object.callback_param2; + case 0x1C: return object.last_value; case 0x5F: return (scope->GetRandomBits() << 8) | scope->GetTriggers(); case 0x7D: return _temp_store.GetValue(parameter); case 0x7F: - if (object == NULL || object->grffile == NULL) return 0; - return object->grffile->GetParam(parameter); + 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); } } -ScopeResolver::ScopeResolver(ResolverObject *ro) +ScopeResolver::ScopeResolver(ResolverObject &ro) + : ro(ro) { - this->ro = ro; } ScopeResolver::~ScopeResolver() {} @@ -123,7 +144,7 @@ ScopeResolver::~ScopeResolver() {} * @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) + : default_scope(*this) { this->callback = callback; this->callback_param1 = callback_param1; @@ -131,6 +152,7 @@ ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint this->ResetState(); this->grffile = grffile; + this->root_spritegroup = NULL; } ResolverObject::~ResolverObject() {} @@ -208,21 +230,21 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver case DSGA_OP_ROR: return RotateRight(last_value, value); case DSGA_OP_SCMP: return ((S)last_value == (S)value) ? 1 : ((S)last_value < (S)value ? 0 : 2); case DSGA_OP_UCMP: return ((U)last_value == (U)value) ? 1 : ((U)last_value < (U)value ? 0 : 2); - case DSGA_OP_SHL: return (U)last_value << ((U)value & 0x1F); // mask 'value' to 5 bits, which should behave the same on all architectures. - case DSGA_OP_SHR: return (U)last_value >> ((U)value & 0x1F); - case DSGA_OP_SAR: return (S)last_value >> ((U)value & 0x1F); + case DSGA_OP_SHL: return (uint32)(U)last_value << ((U)value & 0x1F); // Same behaviour as in ParamSet, mask 'value' to 5 bits, which should behave the same on all architectures. + case DSGA_OP_SHR: return (uint32)(U)last_value >> ((U)value & 0x1F); + case DSGA_OP_SAR: return (int32)(S)last_value >> ((U)value & 0x1F); default: return value; } } -const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) const +const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) const { uint32 last_value = 0; uint32 value = 0; uint i; - ScopeResolver *scope = object->GetScope(this->var_scope); + ScopeResolver *scope = object.GetScope(this->var_scope); for (i = 0; i < this->num_adjusts; i++) { DeterministicSpriteGroupAdjust *adjust = &this->adjusts[i]; @@ -230,7 +252,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) con /* Try to get the variable. We shall assume it is available, unless told otherwise. */ bool available = true; if (adjust->variable == 0x7E) { - const SpriteGroup *subgroup = SpriteGroup::Resolve(adjust->subroutine, object); + const SpriteGroup *subgroup = SpriteGroup::Resolve(adjust->subroutine, object, false); if (subgroup == NULL) { value = CALLBACK_FAILED; } else { @@ -247,7 +269,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); + return SpriteGroup::Resolve(this->num_ranges > 0 ? this->ranges[0].group : this->default_group, object, false); } switch (this->size) { @@ -259,7 +281,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) con last_value = value; } - object->last_value = last_value; + object.last_value = last_value; if (this->num_ranges == 0) { /* nvar == 0 is a special case -- we turn our value into a callback result */ @@ -271,29 +293,29 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) con 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); + return SpriteGroup::Resolve(this->ranges[i].group, object, false); } } - return SpriteGroup::Resolve(this->default_group, object); + return SpriteGroup::Resolve(this->default_group, object, false); } -const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject *object) const +const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject &object) const { - ScopeResolver *scope = object->GetScope(this->var_scope, this->count); - if (object->trigger != 0) { + ScopeResolver *scope = object.GetScope(this->var_scope, this->count); + if (object.trigger != 0) { /* 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 & (waiting_triggers | object.trigger); bool res = (this->cmp_mode == RSG_CMP_ANY) ? (match != 0) : (match == this->triggers); if (res) { waiting_triggers &= ~match; - object->reseed[this->var_scope] |= (this->num_groups - 1) << this->lowest_randbit; + object.reseed[this->var_scope] |= (this->num_groups - 1) << this->lowest_randbit; } else { - waiting_triggers |= object->trigger; + waiting_triggers |= object.trigger; } scope->SetTriggers(waiting_triggers); @@ -302,13 +324,13 @@ const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject *object) const uint32 mask = (this->num_groups - 1) << this->lowest_randbit; byte index = (scope->GetRandomBits() & mask) >> this->lowest_randbit; - return SpriteGroup::Resolve(this->groups[index], object); + return SpriteGroup::Resolve(this->groups[index], object, false); } -const SpriteGroup *RealSpriteGroup::Resolve(ResolverObject *object) const +const SpriteGroup *RealSpriteGroup::Resolve(ResolverObject &object) const { - return object->ResolveReal(this); + return object.ResolveReal(this); } /** diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index dc05fe4f1f..0a7705d667 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -33,17 +33,6 @@ static inline uint32 GetRegister(uint i) return _temp_store.GetValue(i); } -/** - * Clears the value of a so-called newgrf "register". - * @param i index of the register - * @pre i < 0x110 - */ -static inline void ClearRegister(uint i) -{ - extern TemporaryStorageArray _temp_store; - _temp_store.StoreValue(i, 0); -} - /* List of different sprite group types */ enum SpriteGroupType { SGT_REAL, @@ -57,6 +46,7 @@ enum SpriteGroupType { struct SpriteGroup; typedef uint32 SpriteGroupID; +struct ResolverObject; /* SPRITE_WIDTH is 24. ECS has roughly 30 sprite groups per real sprite. * Adding an 'extra' margin would be assuming 64 sprite groups per real @@ -69,7 +59,7 @@ struct SpriteGroup : SpriteGroupPool::PoolItem<&_spritegroup_pool> { protected: SpriteGroup(SpriteGroupType type) : type(type) {} /** Base sprite group resolver */ - virtual const SpriteGroup *Resolve(struct ResolverObject *object) const { return this; }; + virtual const SpriteGroup *Resolve(ResolverObject &object) const { return this; }; public: virtual ~SpriteGroup() {} @@ -80,19 +70,7 @@ public: virtual byte GetNumResults() const { return 0; } virtual uint16 GetCallbackResult() const { return CALLBACK_FAILED; } - /** - * ResolverObject (re)entry point. - * This cannot be made a call to a virtual function because virtual functions - * do not like NULL and checking for NULL *everywhere* is more cumbersome than - * this little helper function. - * @param group the group to resolve for - * @param object information needed to resolve the group - * @return the resolved group - */ - static const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object) - { - return group == NULL ? NULL : group->Resolve(object); - } + static const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject &object, bool top_level = true); }; @@ -115,7 +93,7 @@ struct RealSpriteGroup : SpriteGroup { const SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results) protected: - const SpriteGroup *Resolve(ResolverObject *object) const; + const SpriteGroup *Resolve(ResolverObject &object) const; }; /* Shared by deterministic and random groups. */ @@ -204,7 +182,7 @@ struct DeterministicSpriteGroup : SpriteGroup { const SpriteGroup *default_group; protected: - const SpriteGroup *Resolve(ResolverObject *object) const; + const SpriteGroup *Resolve(ResolverObject &object) const; }; enum RandomizedSpriteGroupCompareMode { @@ -228,7 +206,7 @@ struct RandomizedSpriteGroup : SpriteGroup { const SpriteGroup **groups; ///< Take the group with appropriate index: protected: - const SpriteGroup *Resolve(ResolverObject *object) const; + const SpriteGroup *Resolve(ResolverObject &object) const; }; @@ -301,8 +279,6 @@ struct IndustryProductionSpriteGroup : SpriteGroup { uint8 again; }; -struct ResolverObject; - /** * Interface to query and set values specific to a single #VarSpriteGroupScope (action 2 scope). * @@ -310,9 +286,9 @@ struct ResolverObject; * to different game entities from a #SpriteGroup-chain (action 1-2-3 chain). */ struct ScopeResolver { - ResolverObject *ro; ///< Surrounding resolver object. + ResolverObject &ro; ///< Surrounding resolver object. - ScopeResolver(ResolverObject *ro); + ScopeResolver(ResolverObject &ro); virtual ~ScopeResolver(); virtual uint32 GetRandomBits() const; @@ -345,6 +321,26 @@ struct ResolverObject { uint32 reseed[VSG_END]; ///< Collects bits to rerandomise while triggering triggers. const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to + const SpriteGroup *root_spritegroup; ///< Root SpriteGroup to use for resolving + + /** + * Resolve SpriteGroup. + * @return Result spritegroup. + */ + const SpriteGroup *Resolve() + { + return SpriteGroup::Resolve(this->root_spritegroup, *this); + } + + /** + * Resolve callback. + * @return Callback result. + */ + uint16 ResolveCallback() + { + const SpriteGroup *result = Resolve(); + return result != NULL ? result->GetCallbackResult() : CALLBACK_FAILED; + } virtual const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 7139612399..cd5dad7b47 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -26,6 +26,8 @@ #include "newgrf_animation_base.h" #include "newgrf_class_func.h" +#include "safeguards.h" + template /* static */ void NewGRFClass::InsertDefaults() @@ -48,7 +50,7 @@ bool NewGRFClass::IsUIAvailable(uint index) const INSTANTIATE_NEWGRF_CLASS_METHODS(StationClass, StationSpec, StationClassID, STAT_CLASS_MAX) -static const uint MAX_SPECLIST = 255; +static const uint NUM_STATIONSSPECS_PER_STATION = 255; ///< Maximum number of parts per station. enum TriggerArea { TA_TILE, @@ -270,7 +272,7 @@ TownScopeResolver *StationResolverObject::GetTown() t = ClosestTownFromTile(this->station_scope.tile, UINT_MAX); } if (t == NULL) return NULL; - this->town_scope = new TownScopeResolver(this, t, this->station_scope.st == NULL); + this->town_scope = new TownScopeResolver(*this, t, this->station_scope.st == NULL); } return this->town_scope; } @@ -296,7 +298,7 @@ TownScopeResolver *StationResolverObject::GetTown() Slope tileh = GetTileSlope(tile); bool swap = (this->axis == AXIS_Y && HasBit(tileh, CORNER_W) != HasBit(tileh, CORNER_E)); - return GetNearbyTileInformation(tile, this->ro->grffile->grf_version >= 8) ^ (swap ? SLOPE_EW : 0); + return GetNearbyTileInformation(tile, this->ro.grffile->grf_version >= 8) ^ (swap ? SLOPE_EW : 0); } break; @@ -355,7 +357,7 @@ TownScopeResolver *StationResolverObject::GetTown() Slope tileh = GetTileSlope(tile); bool swap = (axis == AXIS_Y && HasBit(tileh, CORNER_W) != HasBit(tileh, CORNER_E)); - return GetNearbyTileInformation(tile, this->ro->grffile->grf_version >= 8) ^ (swap ? SLOPE_EW : 0); + return GetNearbyTileInformation(tile, this->ro.grffile->grf_version >= 8) ^ (swap ? SLOPE_EW : 0); } case 0x68: { // Station info of nearby tiles @@ -386,7 +388,7 @@ TownScopeResolver *StationResolverObject::GetTown() return this->st->GetNewGRFVariable(this->ro, variable, parameter, available); } -uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) const +uint32 Station::GetNewGRFVariable(const ResolverObject &object, byte variable, byte parameter, bool *available) const { switch (variable) { case 0x48: { // Accepted cargo types @@ -394,7 +396,7 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b uint32 value = 0; for (cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { - if (HasBit(this->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_ACCEPTANCE)) SetBit(value, cargo_type); + if (HasBit(this->goods[cargo_type].status, GoodsEntry::GES_ACCEPTANCE)) SetBit(value, cargo_type); } return value; } @@ -409,7 +411,7 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b /* Handle cargo variables with parameter, 0x60 to 0x65 and 0x69 */ if ((variable >= 0x60 && variable <= 0x65) || variable == 0x69) { - CargoID c = GetCargoTranslation(parameter, object->grffile); + CargoID c = GetCargoTranslation(parameter, object.grffile); if (c == CT_INVALID) { switch (variable) { @@ -426,12 +428,12 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b case 0x62: return ge->HasRating() ? ge->rating : 0xFFFFFFFF; case 0x63: return ge->cargo.DaysInTransit(); case 0x64: return ge->HasVehicleEverTriedLoading() ? ge->last_speed | (ge->last_age << 8) : 0xFF00; - case 0x65: return GB(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1) << 3; + case 0x65: return GB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1) << 3; case 0x69: { assert_compile((int)GoodsEntry::GES_EVER_ACCEPTED + 1 == (int)GoodsEntry::GES_LAST_MONTH); assert_compile((int)GoodsEntry::GES_EVER_ACCEPTED + 2 == (int)GoodsEntry::GES_CURRENT_MONTH); assert_compile((int)GoodsEntry::GES_EVER_ACCEPTED + 3 == (int)GoodsEntry::GES_ACCEPTED_BIGTICK); - return GB(ge->acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED, 4); + return GB(ge->status, GoodsEntry::GES_EVER_ACCEPTED, 4); } } } @@ -441,7 +443,7 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b const GoodsEntry *g = &this->goods[GB(variable - 0x8C, 3, 4)]; switch (GB(variable - 0x8C, 0, 3)) { case 0: return g->cargo.TotalCount(); - case 1: return GB(min(g->cargo.TotalCount(), 4095), 0, 4) | (GB(g->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1) << 7); + case 1: return GB(min(g->cargo.TotalCount(), 4095), 0, 4) | (GB(g->status, GoodsEntry::GES_ACCEPTANCE, 1) << 7); case 2: return g->time_since_pickup; case 3: return g->rating; case 4: return g->cargo.Source(); @@ -457,7 +459,7 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b return UINT_MAX; } -uint32 Waypoint::GetNewGRFVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) const +uint32 Waypoint::GetNewGRFVariable(const ResolverObject &object, byte variable, byte parameter, bool *available) const { switch (variable) { case 0x48: return 0; // Accepted cargo types @@ -545,11 +547,37 @@ uint32 Waypoint::GetNewGRFVariable(const ResolverObject *object, byte variable, */ StationResolverObject::StationResolverObject(const StationSpec *statspec, BaseStation *st, TileIndex tile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : ResolverObject((statspec != NULL ? statspec->grf_prop.grffile : NULL), callback, callback_param1, callback_param2), - station_scope(this, statspec, st, tile), town_scope(NULL) + : ResolverObject(statspec->grf_prop.grffile, callback, callback_param1, callback_param2), + station_scope(*this, statspec, st, tile), town_scope(NULL) { /* Invalidate all cached vars */ _svc.valid = 0; + + CargoID ctype = CT_DEFAULT_NA; + + if (this->station_scope.st == NULL) { + /* No station, so we are in a purchase list */ + ctype = CT_PURCHASE; + } else if (Station::IsExpected(this->station_scope.st)) { + const Station *st = Station::From(this->station_scope.st); + /* Pick the first cargo that we have waiting */ + const CargoSpec *cs; + FOR_ALL_CARGOSPECS(cs) { + if (this->station_scope.statspec->grf_prop.spritegroup[cs->Index()] != NULL && + st->goods[cs->Index()].cargo.TotalCount() > 0) { + ctype = cs->Index(); + break; + } + } + } + + if (this->station_scope.statspec->grf_prop.spritegroup[ctype] == NULL) { + ctype = CT_DEFAULT; + } + + /* Remember the cargo type we've picked */ + this->station_scope.cargo_type = ctype; + this->root_spritegroup = this->station_scope.statspec->grf_prop.spritegroup[this->station_scope.cargo_type]; } StationResolverObject::~StationResolverObject() @@ -564,7 +592,7 @@ StationResolverObject::~StationResolverObject() * @param st Instance of the station. * @param tile %Tile of the station. */ -StationScopeResolver::StationScopeResolver(ResolverObject *ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) +StationScopeResolver::StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) : ScopeResolver(ro) { this->tile = tile; @@ -574,39 +602,6 @@ StationScopeResolver::StationScopeResolver(ResolverObject *ro, const StationSpec this->axis = INVALID_AXIS; } -static const SpriteGroup *ResolveStation(StationResolverObject *object) -{ - CargoID ctype = CT_DEFAULT_NA; - - if (object->station_scope.st == NULL) { - /* No station, so we are in a purchase list */ - ctype = CT_PURCHASE; - } else if (Station::IsExpected(object->station_scope.st)) { - const Station *st = Station::From(object->station_scope.st); - /* Pick the first cargo that we have waiting */ - const CargoSpec *cs; - FOR_ALL_CARGOSPECS(cs) { - if (object->station_scope.statspec->grf_prop.spritegroup[cs->Index()] != NULL && - st->goods[cs->Index()].cargo.TotalCount() > 0) { - ctype = cs->Index(); - break; - } - } - } - - const SpriteGroup *group = object->station_scope.statspec->grf_prop.spritegroup[ctype]; - if (group == NULL) { - ctype = CT_DEFAULT; - group = object->station_scope.statspec->grf_prop.spritegroup[ctype]; - if (group == NULL) return NULL; - } - - /* Remember the cargo type we've picked */ - object->station_scope.cargo_type = ctype; - - return SpriteGroup::Resolve(group, object); -} - /** * Resolve sprites for drawing a station tile. * @param statspec Station spec @@ -618,7 +613,7 @@ static const SpriteGroup *ResolveStation(StationResolverObject *object) SpriteID GetCustomStationRelocation(const StationSpec *statspec, BaseStation *st, TileIndex tile, uint32 var10) { StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, var10); - const SpriteGroup *group = ResolveStation(&object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_RESULT) return 0; return group->GetResult() - 0x42D; } @@ -637,9 +632,10 @@ SpriteID GetCustomStationFoundationRelocation(const StationSpec *statspec, BaseS /* callback_param1 == 2 means we are resolving the foundation sprites. */ StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, 2, layout | (edge_info << 16)); - ClearRegister(0x100); - const SpriteGroup *group = ResolveStation(&object); + const SpriteGroup *group = object.Resolve(); if (group == NULL || group->type != SGT_RESULT) return 0; + + /* Note: SpriteGroup::Resolve zeroes all registers, so register 0x100 is initialised to 0. (compatibility) */ return group->GetResult() + GetRegister(0x100); } @@ -647,9 +643,7 @@ SpriteID GetCustomStationFoundationRelocation(const StationSpec *statspec, BaseS uint16 GetStationCallback(CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, BaseStation *st, TileIndex tile) { StationResolverObject object(statspec, st, tile, callback, param1, param2); - const SpriteGroup *group = ResolveStation(&object); - if (group == NULL) return CALLBACK_FAILED; - return group->GetCallbackResult(); + return object.ResolveCallback(); } /** @@ -672,15 +666,14 @@ CommandCost PerformStationTileSlopeCheck(TileIndex north_tile, TileIndex cur_til (numtracks << 24) | (plat_len << 16) | (axis == AXIS_Y ? TileX(diff) << 8 | TileY(diff) : TileY(diff) << 8 | TileX(diff))); object.station_scope.axis = axis; - const SpriteGroup *group = ResolveStation(&object); - uint16 cb_res = group != NULL ? group->GetCallbackResult() : CALLBACK_FAILED; + uint16 cb_res = object.ResolveCallback(); /* Failed callback means success. */ if (cb_res == CALLBACK_FAILED) return CommandCost(); /* The meaning of bit 10 is inverted for a grf version < 8. */ if (statspec->grf_prop.grffile->grf_version < 8) ToggleBit(cb_res, 10); - return GetErrorMessageFromLocationCallbackResult(cb_res, statspec->grf_prop.grffile->grfid, STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); + return GetErrorMessageFromLocationCallbackResult(cb_res, statspec->grf_prop.grffile, STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } @@ -697,17 +690,17 @@ int AllocateSpecToStation(const StationSpec *statspec, BaseStation *st, bool exe if (statspec == NULL || st == NULL) return 0; - for (i = 1; i < st->num_specs && i < MAX_SPECLIST; i++) { + for (i = 1; i < st->num_specs && i < NUM_STATIONSSPECS_PER_STATION; i++) { if (st->speclist[i].spec == NULL && st->speclist[i].grfid == 0) break; } - if (i == MAX_SPECLIST) { + if (i == NUM_STATIONSSPECS_PER_STATION) { /* As final effort when the spec list is already full... * try to find the same spec and return that one. This might * result in slightly "wrong" (as per specs) looking stations, * but it's fairly unlikely that one reaches the limit anyways. */ - for (i = 1; i < st->num_specs && i < MAX_SPECLIST; i++) { + for (i = 1; i < st->num_specs && i < NUM_STATIONSSPECS_PER_STATION; i++) { if (st->speclist[i].spec == statspec) return i; } @@ -847,7 +840,7 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID SpriteID image = sprites->ground.sprite; PaletteID pal = sprites->ground.pal; RailTrackOffset overlay_offset; - if (rti != NULL && rti->UsesOverlay() && SplitGroundSpriteForOverlay(NULL, &image, &overlay_offset)) { + if (rti->UsesOverlay() && SplitGroundSpriteForOverlay(NULL, &image, &overlay_offset)) { SpriteID ground = GetCustomRailSprite(rti, INVALID_TILE, RTSG_GROUND); DrawSprite(image, PAL_NONE, x, y); DrawSprite(ground + overlay_offset, PAL_NONE, x, y); @@ -1023,7 +1016,7 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg StationResolverObject object(ss, st, tile, CBID_RANDOM_TRIGGER, 0); object.trigger = trigger_bit; - const SpriteGroup *group = ResolveStation(&object); + const SpriteGroup *group = object.Resolve(); if (group == NULL) continue; uint32 reseed = object.GetReseedSum(); diff --git a/src/newgrf_station.h b/src/newgrf_station.h index 62bb940a4e..ffb827cb3b 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -30,7 +30,7 @@ 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); + StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetTriggers() const; diff --git a/src/newgrf_storage.cpp b/src/newgrf_storage.cpp index ac91a122f4..e91e1f90c8 100644 --- a/src/newgrf_storage.cpp +++ b/src/newgrf_storage.cpp @@ -12,18 +12,26 @@ #include "stdafx.h" #include "newgrf_storage.h" #include "core/pool_func.hpp" +#include "core/endian_func.hpp" +#include "debug.h" #include +#include "safeguards.h" + PersistentStoragePool _persistent_storage_pool("PersistentStorage"); INSTANTIATE_POOL_METHODS(PersistentStorage) /** The changed storage arrays */ -static std::set *_changed_storage_arrays = new std::set; +static std::set *_changed_storage_arrays = new std::set; + +bool BasePersistentStorageArray::gameloop; +bool BasePersistentStorageArray::command; +bool BasePersistentStorageArray::testmode; /** * Remove references to use. */ -BaseStorageArray::~BaseStorageArray() +BasePersistentStorageArray::~BasePersistentStorageArray() { _changed_storage_arrays->erase(this); } @@ -34,28 +42,60 @@ BaseStorageArray::~BaseStorageArray() * arrays, which saves quite a few clears, etc. after callbacks. * @param storage the array that has changed */ -void AddChangedStorage(BaseStorageArray *storage) +void AddChangedPersistentStorage(BasePersistentStorageArray *storage) { _changed_storage_arrays->insert(storage); } /** - * Clear the changes made since the last #ClearStorageChanges. - * This is done for *all* storages that have been registered to with - * #AddChangedStorage since the previous #ClearStorageChanges. + * Clear temporary changes made since the last call to SwitchMode, and + * set whether subsequent changes shall be persistent or temporary. * - * This can be done in two ways: - * - saving the changes permanently - * - reverting to the previous version - * @param keep_changes do we save or revert the changes since the last #ClearChanges? + * @param mode Mode switch affecting temporary/persistent changes. + * @param ignore_prev_mode Disable some sanity checks for exceptional call circumstances. */ -void ClearStorageChanges(bool keep_changes) +/* static */ void BasePersistentStorageArray::SwitchMode(PersistentStorageMode mode, bool ignore_prev_mode) { - /* Loop over all changes arrays */ - for (std::set::iterator it = _changed_storage_arrays->begin(); it != _changed_storage_arrays->end(); it++) { - (*it)->ClearChanges(keep_changes); + switch (mode) { + case PSM_ENTER_GAMELOOP: + assert(ignore_prev_mode || !gameloop); + assert(!command && !testmode); + gameloop = true; + break; + + case PSM_LEAVE_GAMELOOP: + assert(ignore_prev_mode || gameloop); + assert(!command && !testmode); + gameloop = false; + break; + + case PSM_ENTER_COMMAND: + assert((ignore_prev_mode || !command) && !testmode); + command = true; + break; + + case PSM_LEAVE_COMMAND: + assert(ignore_prev_mode || command); + command = false; + break; + + case PSM_ENTER_TESTMODE: + assert(!command && (ignore_prev_mode || !testmode)); + testmode = true; + break; + + case PSM_LEAVE_TESTMODE: + assert(ignore_prev_mode || testmode); + testmode = false; + break; + + default: NOT_REACHED(); } - /* And then clear that array */ + /* Discard all temporary changes */ + for (std::set::iterator it = _changed_storage_arrays->begin(); it != _changed_storage_arrays->end(); it++) { + DEBUG(desync, 1, "Discarding persistent storage changes: Feature %d, GrfID %08X, Tile %d", (*it)->feature, BSWAP32((*it)->grfid), (*it)->tile); + (*it)->ClearChanges(); + } _changed_storage_arrays->clear(); } diff --git a/src/newgrf_storage.h b/src/newgrf_storage.h index f5044b05de..ae9782d88c 100644 --- a/src/newgrf_storage.h +++ b/src/newgrf_storage.h @@ -13,29 +13,49 @@ #define NEWGRF_STORAGE_H #include "core/pool_type.hpp" +#include "tile_type.h" /** - * Base class for all NewGRF storage arrays. Nothing fancy, only here - * so we have a generalised class to use. + * Mode switches to the behaviour of persistent storage array. */ -struct BaseStorageArray { - virtual ~BaseStorageArray(); +enum PersistentStorageMode { + PSM_ENTER_GAMELOOP, ///< Enter the gameloop, changes will be permanent. + PSM_LEAVE_GAMELOOP, ///< Leave the gameloop, changes will be temporary. + PSM_ENTER_COMMAND, ///< Enter command scope, changes will be permanent. + PSM_LEAVE_COMMAND, ///< Leave command scope, revert to previous mode. + PSM_ENTER_TESTMODE, ///< Enter command test mode, changes will be tempoary. + PSM_LEAVE_TESTMODE, ///< Leave command test mode, revert to previous mode. +}; + +/** + * Base class for all persistent NewGRF storage arrays. Nothing fancy, only here + * so we have a generalised access to the virtual methods. + */ +struct BasePersistentStorageArray { + uint32 grfid; ///< GRFID associated to this persistent storage. A value of zero means "default". + byte feature; ///< NOSAVE: Used to identify in the owner of the array in debug output. + TileIndex tile; ///< NOSAVE: Used to identify in the owner of the array in debug output. + virtual ~BasePersistentStorageArray(); + + static void SwitchMode(PersistentStorageMode mode, bool ignore_prev_mode = false); + +protected: /** - * Clear the changes made since the last #ClearChanges. - * This can be done in two ways: - * - saving the changes permanently - * - reverting to the previous version - * @param keep_changes do we save or revert the changes since the last #ClearChanges? + * Discard temporary changes. */ - virtual void ClearChanges(bool keep_changes) = 0; + virtual void ClearChanges() = 0; /** - * Stores some value at a given position. - * @param pos the position to write at - * @param value the value to write + * Check whether currently changes to the storage shall be persistent or + * temporary till the next call to ClearChanges(). */ - virtual void StoreValue(uint pos, int32 value) = 0; + static bool AreChangesPersistent() { return (gameloop || command) && !testmode; } + +private: + static bool gameloop; + static bool command; + static bool testmode; }; /** @@ -45,7 +65,7 @@ struct BaseStorageArray { * @tparam SIZE the size of the array. */ template -struct PersistentStorageArray : BaseStorageArray { +struct PersistentStorageArray : BasePersistentStorageArray { TYPE storage[SIZE]; ///< Memory to for the storage array TYPE *prev_storage; ///< Memory to store "old" states so we can revert them on the performance of test cases for commands etc. @@ -84,13 +104,15 @@ struct PersistentStorageArray : BaseStorageArray { if (this->storage[pos] == value) return; /* We do not have made a backup; lets do so */ - if (this->prev_storage != NULL) { + if (AreChangesPersistent()) { + assert(this->prev_storage == NULL); + } else if (this->prev_storage == NULL) { this->prev_storage = MallocT(SIZE); memcpy(this->prev_storage, this->storage, sizeof(this->storage)); /* We only need to register ourselves when we made the backup * as that is the only time something will have changed */ - AddChangedStorage(this); + AddChangedPersistentStorage(this); } this->storage[pos] = value; @@ -109,18 +131,13 @@ struct PersistentStorageArray : BaseStorageArray { return this->storage[pos]; } - /** - * Clear the changes, or assign them permanently to the storage. - * @param keep_changes Whether to assign or ditch the changes. - */ - void ClearChanges(bool keep_changes) + void ClearChanges() { - assert(this->prev_storage != NULL); - - if (!keep_changes) { + if (this->prev_storage != NULL) { memcpy(this->storage, this->prev_storage, sizeof(this->storage)); + free(this->prev_storage); + this->prev_storage = NULL; } - free(this->prev_storage); } }; @@ -132,13 +149,17 @@ struct PersistentStorageArray : BaseStorageArray { * @tparam SIZE the size of the array. */ template -struct TemporaryStorageArray : BaseStorageArray { +struct TemporaryStorageArray { TYPE storage[SIZE]; ///< Memory to for the storage array + uint16 init[SIZE]; ///< Storage has been assigned, if this equals 'init_key'. + uint16 init_key; ///< Magic key to 'init'. /** Simply construct the array */ TemporaryStorageArray() { - memset(this->storage, 0, sizeof(this->storage)); + memset(this->storage, 0, sizeof(this->storage)); // not exactly needed, but makes code analysers happy + memset(this->init, 0, sizeof(this->init)); + this->init_key = 1; } /** @@ -152,7 +173,7 @@ struct TemporaryStorageArray : BaseStorageArray { if (pos >= SIZE) return; this->storage[pos] = value; - AddChangedStorage(this); + this->init[pos] = this->init_key; } /** @@ -165,18 +186,27 @@ struct TemporaryStorageArray : BaseStorageArray { /* Out of the scope of the array */ if (pos >= SIZE) return 0; + if (this->init[pos] != this->init_key) { + /* Unassigned since last call to ClearChanges */ + return 0; + } + return this->storage[pos]; } - void ClearChanges(bool keep_changes) + void ClearChanges() { - memset(this->storage, 0, sizeof(this->storage)); + /* Increment init_key to invalidate all storage */ + this->init_key++; + if (this->init_key == 0) { + /* When init_key wraps around, we need to reset everything */ + memset(this->init, 0, sizeof(this->init)); + this->init_key = 1; + } } }; -void AddChangedStorage(BaseStorageArray *storage); -void ClearStorageChanges(bool keep_changes); - +void AddChangedPersistentStorage(BasePersistentStorageArray *storage); typedef PersistentStorageArray OldPersistentStorage; @@ -189,22 +219,14 @@ extern PersistentStoragePool _persistent_storage_pool; /** * Class for pooled persistent storage of data. - * On #ClearChanges that data is always zero-ed. */ struct PersistentStorage : PersistentStorageArray, PersistentStoragePool::PoolItem<&_persistent_storage_pool> { - uint32 grfid; ///< GRFID associated to this persistent storage. A value of zero means "default". - /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ - PersistentStorage(const uint32 new_grfid) : grfid(new_grfid) + PersistentStorage(const uint32 new_grfid, byte feature, TileIndex tile) { - this->prev_storage = NULL; - memset(this->storage, 0, sizeof(this->storage)); - } - - /** Free the memory used by the persistent storage. */ - ~PersistentStorage() - { - free(this->prev_storage); + this->grfid = new_grfid; + this->feature = feature; + this->tile = tile; } }; diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index 9cb1c18988..daf9db4433 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -22,6 +22,7 @@ #include "strings_func.h" #include "newgrf_storage.h" #include "newgrf_text.h" +#include "newgrf_cargo.h" #include "string_func.h" #include "date_type.h" #include "debug.h" @@ -32,73 +33,11 @@ #include "table/strings.h" #include "table/control_codes.h" +#include "safeguards.h" + #define GRFTAB 28 #define TABSIZE 11 -/** - * Perform a mapping from TTDPatch's string IDs to OpenTTD's - * string IDs, but only for the ones we are aware off; the rest - * like likely unused and will show a warning. - * @param str the string ID to convert - * @return the converted string ID - */ -StringID TTDPStringIDToOTTDStringIDMapping(StringID str) -{ - /* StringID table for TextIDs 0x4E->0x6D */ - static const StringID units_volume[] = { - STR_ITEMS, STR_PASSENGERS, STR_TONS, STR_BAGS, - STR_LITERS, STR_ITEMS, STR_CRATES, STR_TONS, - STR_TONS, STR_TONS, STR_TONS, STR_BAGS, - STR_TONS, STR_TONS, STR_TONS, STR_BAGS, - STR_TONS, STR_TONS, STR_BAGS, STR_LITERS, - STR_TONS, STR_LITERS, STR_TONS, STR_ITEMS, - STR_BAGS, STR_LITERS, STR_TONS, STR_ITEMS, - STR_TONS, STR_ITEMS, STR_LITERS, STR_ITEMS - }; - - /* A string straight from a NewGRF; no need to remap this as it's already mapped. */ - if (IsInsideMM(str, 0xD000, 0xD7FF)) return str; - -#define TEXTID_TO_STRINGID(begin, end, stringid, stringend) \ - assert_compile(stringend - stringid == end - begin); \ - if (str >= begin && str <= end) return str + (stringid - begin) - - /* We have some changes in our cargo strings, resulting in some missing. */ - TEXTID_TO_STRINGID(0x000E, 0x002D, STR_CARGO_PLURAL_NOTHING, STR_CARGO_PLURAL_FIZZY_DRINKS); - TEXTID_TO_STRINGID(0x002E, 0x004D, STR_CARGO_SINGULAR_NOTHING, STR_CARGO_SINGULAR_FIZZY_DRINK); - if (str >= 0x004E && str <= 0x006D) return units_volume[str - 0x004E]; - TEXTID_TO_STRINGID(0x006E, 0x008D, STR_QUANTITY_NOTHING, STR_QUANTITY_FIZZY_DRINKS); - TEXTID_TO_STRINGID(0x008E, 0x00AD, STR_ABBREV_NOTHING, STR_ABBREV_FIZZY_DRINKS); - TEXTID_TO_STRINGID(0x00D1, 0x00E0, STR_COLOUR_DARK_BLUE, STR_COLOUR_WHITE); - - /* Map building names according to our lang file changes. There are several - * ranges of house ids, all of which need to be remapped to allow newgrfs - * to use original house names. */ - TEXTID_TO_STRINGID(0x200F, 0x201F, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, STR_TOWN_BUILDING_NAME_OLD_HOUSES_1); - TEXTID_TO_STRINGID(0x2036, 0x2041, STR_TOWN_BUILDING_NAME_COTTAGES_1, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1); - TEXTID_TO_STRINGID(0x2059, 0x205C, STR_TOWN_BUILDING_NAME_IGLOO_1, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1); - - /* Same thing for industries */ - TEXTID_TO_STRINGID(0x4802, 0x4826, STR_INDUSTRY_NAME_COAL_MINE, STR_INDUSTRY_NAME_SUGAR_MINE); - TEXTID_TO_STRINGID(0x482D, 0x482E, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_PLANTED); - TEXTID_TO_STRINGID(0x4832, 0x4834, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES); - TEXTID_TO_STRINGID(0x4835, 0x4838, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM); - TEXTID_TO_STRINGID(0x4839, 0x483A, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM); - - switch (str) { - case 0x4830: return STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY; - case 0x4831: return STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED; - case 0x483B: return STR_ERROR_CAN_ONLY_BE_POSITIONED; - } -#undef TEXTID_TO_STRINGID - - if (str == STR_NULL) return STR_EMPTY; - - DEBUG(grf, 0, "Unknown StringID 0x%04X remapped to STR_EMPTY. Please open a Feature Request if you need it", str); - - return STR_EMPTY; -} - /** * Explains the newgrf shift bit positioning. * the grf base will not be used in order to find the string, but rather for @@ -292,11 +231,11 @@ struct UnmappedChoiceList : ZeroedMemoryAllocator { /* In case of a (broken) NewGRF without a default, * assume an empty string. */ grfmsg(1, "choice list misses default value"); - this->strings[0] = strdup(""); + this->strings[0] = stredup(""); } char *d = old_d; - if (lm == NULL && this->type != SCC_PLURAL_LIST) { + if (lm == NULL) { /* In case there is no mapping, just ignore everything but the default. * A probable cause for this happening is when the language file has * been removed by the user and as such no mapping could be made. */ @@ -584,7 +523,12 @@ char *TranslateTTDPatchCodes(uint32 grfid, uint8 language_id, bool allow_newline case 0x17: case 0x18: case 0x19: - case 0x1A: d += Utf8Encode(d, SCC_NEWGRF_PRINT_DWORD_DATE_LONG + code - 0x16); break; + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + d += Utf8Encode(d, SCC_NEWGRF_PRINT_DWORD_DATE_LONG + code - 0x16); + break; default: grfmsg(1, "missing handler for extended format code"); @@ -754,20 +698,12 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne return (GRFTAB << TABSIZE) + id; } -/* Used to remember the grfid that the last retrieved string came from */ -static uint32 _last_grfid = 0; - /** * Returns the index for this stringid associated with its grfID */ StringID GetGRFStringID(uint32 grfid, uint16 stringid) { - uint id; - - /* grfid is zero when we're being called via an include */ - if (grfid == 0) grfid = _last_grfid; - - for (id = 0; id < _num_grf_texts; id++) { + for (uint id = 0; id < _num_grf_texts; id++) { if (_grf_text[id].grfid == grfid && _grf_text[id].stringid == stringid) { return (GRFTAB << TABSIZE) + id; } @@ -809,9 +745,6 @@ const char *GetGRFStringPtr(uint16 stringid) { assert(_grf_text[stringid].grfid != 0); - /* Remember this grfid in case the string has included text */ - _last_grfid = _grf_text[stringid].grfid; - const char *str = GetGRFStringFromGRFText(_grf_text[stringid].textholder); if (str != NULL) return str; @@ -880,12 +813,14 @@ void CleanUpStrings() struct TextRefStack { byte stack[0x30]; byte position; + const GRFFile *grffile; bool used; - TextRefStack() : used(false) {} + TextRefStack() : position(0), grffile(NULL), used(false) {} TextRefStack(const TextRefStack &stack) : position(stack.position), + grffile(stack.grffile), used(stack.used) { memcpy(this->stack, stack.stack, sizeof(this->stack)); @@ -937,7 +872,14 @@ struct TextRefStack { this->stack[this->position + 1] = GB(word, 8, 8); } - void ResetStack() { this->position = 0; this->used = true; } + void ResetStack(const GRFFile *grffile) + { + assert(grffile != NULL); + this->position = 0; + this->grffile = grffile; + this->used = true; + } + void RewindStack() { this->position = 0; } }; @@ -986,14 +928,15 @@ void RestoreTextRefStackBackup(struct TextRefStack *backup) * by calling #StopTextRefStackUsage(), so NewGRF string codes operate on the * normal string parameters again. * + * @param grffile the NewGRF providing the stack data * @param numEntries number of entries to copy from the registers * @param values values to copy onto the stack; if NULL the temporary NewGRF registers will be used instead */ -void StartTextRefStackUsage(byte numEntries, const uint32 *values) +void StartTextRefStackUsage(const GRFFile *grffile, byte numEntries, const uint32 *values) { extern TemporaryStorageArray _temp_store; - _newgrf_textrefstack.ResetStack(); + _newgrf_textrefstack.ResetStack(grffile); byte *p = _newgrf_textrefstack.stack; for (uint i = 0; i < numEntries; i++) { @@ -1022,11 +965,53 @@ void RewindTextRefStack() * @param buff the buffer we're writing to * @param str the string that we need to write * @param argv the OpenTTD stack of values + * @param argv_size space on the stack \a argv * @param modify_argv When true, modify the OpenTTD stack. * @return the string control code to "execute" now */ -uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv, bool modify_argv) +uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv, uint argv_size, bool modify_argv) { + switch (scc) { + default: break; + + case SCC_NEWGRF_PRINT_DWORD_SIGNED: + case SCC_NEWGRF_PRINT_WORD_SIGNED: + case SCC_NEWGRF_PRINT_BYTE_SIGNED: + case SCC_NEWGRF_PRINT_WORD_UNSIGNED: + case SCC_NEWGRF_PRINT_BYTE_HEX: + case SCC_NEWGRF_PRINT_WORD_HEX: + case SCC_NEWGRF_PRINT_DWORD_HEX: + case SCC_NEWGRF_PRINT_QWORD_HEX: + case SCC_NEWGRF_PRINT_DWORD_CURRENCY: + case SCC_NEWGRF_PRINT_QWORD_CURRENCY: + case SCC_NEWGRF_PRINT_WORD_STRING_ID: + case SCC_NEWGRF_PRINT_WORD_DATE_LONG: + case SCC_NEWGRF_PRINT_DWORD_DATE_LONG: + case SCC_NEWGRF_PRINT_WORD_DATE_SHORT: + case SCC_NEWGRF_PRINT_DWORD_DATE_SHORT: + case SCC_NEWGRF_PRINT_WORD_SPEED: + case SCC_NEWGRF_PRINT_WORD_VOLUME_LONG: + case SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT: + case SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG: + case SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT: + case SCC_NEWGRF_PRINT_WORD_POWER: + case SCC_NEWGRF_PRINT_WORD_STATION_NAME: + if (argv_size < 1) { + DEBUG(misc, 0, "Too many NewGRF string parameters."); + return 0; + } + break; + + case SCC_NEWGRF_PRINT_WORD_CARGO_LONG: + case SCC_NEWGRF_PRINT_WORD_CARGO_SHORT: + case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: + if (argv_size < 2) { + DEBUG(misc, 0, "Too many NewGRF string parameters."); + return 0; + } + break; + } + if (_newgrf_textrefstack.used && modify_argv) { switch (scc) { default: NOT_REACHED(); @@ -1064,8 +1049,25 @@ uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack.PushWord(Utf8Consume(str)); break; case SCC_NEWGRF_UNPRINT: *buff = max(*buff - Utf8Consume(str), buf_start); break; + case SCC_NEWGRF_PRINT_WORD_CARGO_LONG: + case SCC_NEWGRF_PRINT_WORD_CARGO_SHORT: + case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: + argv[0] = GetCargoTranslation(_newgrf_textrefstack.PopUnsignedWord(), _newgrf_textrefstack.grffile); + argv[1] = _newgrf_textrefstack.PopUnsignedWord(); + break; + case SCC_NEWGRF_PRINT_WORD_STRING_ID: - *argv = TTDPStringIDToOTTDStringIDMapping(_newgrf_textrefstack.PopUnsignedWord()); + *argv = MapGRFStringID(_newgrf_textrefstack.grffile->grfid, _newgrf_textrefstack.PopUnsignedWord()); + break; + } + } else { + /* Consume additional parameter characters */ + switch (scc) { + default: break; + + case SCC_NEWGRF_PUSH_WORD: + case SCC_NEWGRF_UNPRINT: + Utf8Consume(str); break; } } @@ -1117,6 +1119,15 @@ uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const case SCC_NEWGRF_PRINT_WORD_POWER: return SCC_POWER; + case SCC_NEWGRF_PRINT_WORD_CARGO_LONG: + return SCC_CARGO_LONG; + + case SCC_NEWGRF_PRINT_WORD_CARGO_SHORT: + return SCC_CARGO_SHORT; + + case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: + return SCC_CARGO_TINY; + case SCC_NEWGRF_PRINT_WORD_STATION_NAME: return SCC_STATION_NAME; diff --git a/src/newgrf_text.h b/src/newgrf_text.h index 081e7e36c2..6587fc1fed 100644 --- a/src/newgrf_text.h +++ b/src/newgrf_text.h @@ -35,15 +35,13 @@ void CleanUpGRFText(struct GRFText *grftext); bool CheckGrfLangID(byte lang_id, byte grf_version); -void StartTextRefStackUsage(byte numEntries, const uint32 *values = NULL); +void StartTextRefStackUsage(const GRFFile *grffile, byte numEntries, const uint32 *values = NULL); void StopTextRefStackUsage(); void RewindTextRefStack(); bool UsingNewGRFTextStack(); struct TextRefStack *CreateTextRefStackBackup(); void RestoreTextRefStackBackup(struct TextRefStack *backup); -uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv, bool modify_argv); - -StringID TTDPStringIDToOTTDStringIDMapping(StringID string); +uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv, uint argv_size, bool modify_argv); /** Mapping of language data between a NewGRF and OpenTTD. */ struct LanguageMap { diff --git a/src/newgrf_town.cpp b/src/newgrf_town.cpp index 95cab9643d..2f48eb757d 100644 --- a/src/newgrf_town.cpp +++ b/src/newgrf_town.cpp @@ -14,13 +14,15 @@ #include "town.h" #include "newgrf_town.h" +#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) +TownScopeResolver::TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) : ScopeResolver(ro) { this->t = t; this->readonly = readonly; @@ -43,8 +45,8 @@ TownScopeResolver::TownScopeResolver(ResolverObject *ro, Town *t, bool readonly) /* Check the persistent storage for the GrfID stored in register 100h. */ uint32 grfid = GetRegister(0x100); if (grfid == 0xFFFFFFFF) { - if (this->ro->grffile == NULL) return 0; - grfid = this->ro->grffile->grfid; + if (this->ro.grffile == NULL) return 0; + grfid = this->ro.grffile->grfid; } std::list::iterator iter; @@ -135,14 +137,14 @@ TownScopeResolver::TownScopeResolver(ResolverObject *ro, Town *t, bool readonly) assert(this->t != NULL); /* We can't store anything if the caller has no #GRFFile. */ - if (this->ro->grffile == NULL) return; + if (this->ro.grffile == NULL) return; /* Check the persistent storage for the GrfID stored in register 100h. */ uint32 grfid = GetRegister(0x100); /* A NewGRF can only write in the persistent storage associated to its own GRFID. */ - if (grfid == 0xFFFFFFFF) grfid = this->ro->grffile->grfid; - if (grfid != this->ro->grffile->grfid) return; + if (grfid == 0xFFFFFFFF) grfid = this->ro.grffile->grfid; + if (grfid != this->ro.grffile->grfid) return; /* Check if the storage exists. */ std::list::iterator iter; @@ -155,7 +157,7 @@ TownScopeResolver::TownScopeResolver(ResolverObject *ro, Town *t, bool readonly) /* Create a new storage. */ assert(PersistentStorage::CanAllocateItem()); - PersistentStorage *psa = new PersistentStorage(grfid); + PersistentStorage *psa = new PersistentStorage(grfid, GSF_FAKE_TOWNS, this->t->xy); psa->StoreValue(pos, value); t->psa_list.push_back(psa); } @@ -167,7 +169,7 @@ TownScopeResolver::TownScopeResolver(ResolverObject *ro, Town *t, bool readonly) * @param readonly Scope may change persistent storage of the town. */ TownResolverObject::TownResolverObject(const struct GRFFile *grffile, Town *t, bool readonly) - : ResolverObject(grffile), town_scope(this, t, readonly) + : ResolverObject(grffile), town_scope(*this, t, readonly) { } diff --git a/src/newgrf_town.h b/src/newgrf_town.h index 3f6094cdb6..145571e8ae 100644 --- a/src/newgrf_town.h +++ b/src/newgrf_town.h @@ -25,7 +25,7 @@ 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); + TownScopeResolver(ResolverObject &ro, Town *t, bool readonly); virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); diff --git a/src/newgrf_townname.cpp b/src/newgrf_townname.cpp index 29ca068172..42aae3f147 100644 --- a/src/newgrf_townname.cpp +++ b/src/newgrf_townname.cpp @@ -19,6 +19,8 @@ #include "core/alloc_func.hpp" #include "string_func.h" +#include "safeguards.h" + static GRFTownName *_grf_townnames = NULL; GRFTownName *GetGRFTownName(uint32 grfid) diff --git a/src/news_gui.cpp b/src/news_gui.cpp index 5639001b71..3800af8b57 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -38,6 +38,8 @@ #include "table/strings.h" +#include "safeguards.h" + const NewsItem *_statusbar_news_item = NULL; static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages @@ -78,7 +80,7 @@ static TileIndex GetReferenceTile(NewsReferenceType reftype, uint32 ref) static const NWidgetPart _nested_normal_news_widgets[] = { NWidget(WWT_PANEL, COLOUR_WHITE, WID_N_PANEL), NWidget(NWID_HORIZONTAL), SetPadding(1, 1, 0, 1), - NWidget(WWT_TEXT, COLOUR_WHITE, WID_N_CLOSEBOX), SetDataTip(STR_SILVER_CROSS, STR_NULL), SetPadding(0, 0, 0, 1), + NWidget(WWT_CLOSEBOX, COLOUR_WHITE, WID_N_CLOSEBOX), SetPadding(0, 0, 0, 1), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_WHITE, WID_N_DATE), SetDataTip(STR_DATE_LONG_SMALL, STR_NULL), @@ -101,7 +103,7 @@ static const NWidgetPart _nested_vehicle_news_widgets[] = { NWidget(WWT_PANEL, COLOUR_WHITE, WID_N_PANEL), NWidget(NWID_HORIZONTAL), SetPadding(1, 1, 0, 1), NWidget(NWID_VERTICAL), - NWidget(WWT_TEXT, COLOUR_WHITE, WID_N_CLOSEBOX), SetDataTip(STR_SILVER_CROSS, STR_NULL), SetPadding(0, 0, 0, 1), + NWidget(WWT_CLOSEBOX, COLOUR_WHITE, WID_N_CLOSEBOX), SetPadding(0, 0, 0, 1), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(WWT_LABEL, COLOUR_WHITE, WID_N_VEH_TITLE), SetFill(1, 1), SetMinimalSize(419, 55), SetDataTip(STR_EMPTY, STR_NULL), @@ -128,7 +130,7 @@ static const NWidgetPart _nested_company_news_widgets[] = { NWidget(WWT_PANEL, COLOUR_WHITE, WID_N_PANEL), NWidget(NWID_HORIZONTAL), SetPadding(1, 1, 0, 1), NWidget(NWID_VERTICAL), - NWidget(WWT_TEXT, COLOUR_WHITE, WID_N_CLOSEBOX), SetDataTip(STR_SILVER_CROSS, STR_NULL), SetPadding(0, 0, 0, 1), + NWidget(WWT_CLOSEBOX, COLOUR_WHITE, WID_N_CLOSEBOX), SetPadding(0, 0, 0, 1), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(WWT_LABEL, COLOUR_WHITE, WID_N_TITLE), SetFill(1, 1), SetMinimalSize(410, 20), SetDataTip(STR_EMPTY, STR_NULL), @@ -136,10 +138,7 @@ static const NWidgetPart _nested_company_news_widgets[] = { NWidget(NWID_HORIZONTAL), SetPadding(0, 1, 1, 1), NWidget(NWID_VERTICAL), NWidget(WWT_EMPTY, COLOUR_WHITE, WID_N_MGR_FACE), SetMinimalSize(93, 119), SetPadding(2, 6, 2, 1), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_EMPTY, COLOUR_WHITE, WID_N_MGR_NAME), SetMinimalSize(93, 24), SetPadding(0, 0, 0, 1), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), + NWidget(WWT_EMPTY, COLOUR_WHITE, WID_N_MGR_NAME), SetMinimalSize(93, 24), SetPadding(0, 0, 0, 1), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(WWT_EMPTY, COLOUR_WHITE, WID_N_COMPANY_MSG), SetFill(1, 1), SetMinimalSize(328, 150), @@ -158,7 +157,7 @@ static WindowDesc _company_news_desc( static const NWidgetPart _nested_thin_news_widgets[] = { NWidget(WWT_PANEL, COLOUR_WHITE, WID_N_PANEL), NWidget(NWID_HORIZONTAL), SetPadding(1, 1, 0, 1), - NWidget(WWT_TEXT, COLOUR_WHITE, WID_N_CLOSEBOX), SetDataTip(STR_SILVER_CROSS, STR_NULL), SetPadding(0, 0, 0, 1), + NWidget(WWT_CLOSEBOX, COLOUR_WHITE, WID_N_CLOSEBOX), SetPadding(0, 0, 0, 1), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_WHITE, WID_N_DATE), SetDataTip(STR_DATE_LONG_SMALL, STR_NULL), @@ -314,6 +313,10 @@ struct NewsWindow : Window { { StringID str = STR_NULL; switch (widget) { + case WID_N_MGR_FACE: + *size = maxdim(*size, GetSpriteSize(SPR_GRADIENT)); + break; + case WID_N_MESSAGE: CopyInDParam(0, this->ni->params, lengthof(this->ni->params)); str = this->ni->string_id; @@ -372,7 +375,7 @@ struct NewsWindow : Window { case WID_N_MGR_FACE: { const CompanyNewsInformation *cni = (const CompanyNewsInformation*)this->ni->free_data; DrawCompanyManagerFace(cni->face, cni->colour, r.left, r.top); - GfxFillRect(r.left + 1, r.top, r.left + 1 + 91, r.top + 118, PALETTE_NEWSPAPER, FILLRECT_RECOLOUR); + GfxFillRect(r.left, r.top, r.right, r.bottom, PALETTE_NEWSPAPER, FILLRECT_RECOLOUR); break; } case WID_N_MGR_NAME: { @@ -724,7 +727,7 @@ CommandCost CmdCustomNewsItem(TileIndex tile, DoCommandFlag flags, uint32 p1, ui if (company != INVALID_OWNER && company != _local_company) return CommandCost(); if (flags & DC_EXEC) { - char *news = strdup(text); + char *news = stredup(text); SetDParamStr(0, news); AddNewsItem(STR_NEWS_CUSTOM_ITEM, type, NF_NORMAL, reftype1, p2, NR_NONE, UINT32_MAX, news); } diff --git a/src/object.h b/src/object.h index e0b0c8eee4..0ab92d3769 100644 --- a/src/object.h +++ b/src/object.h @@ -20,7 +20,6 @@ void UpdateCompanyHQ(TileIndex tile, uint score); void BuildObject(ObjectType type, TileIndex tile, CompanyID owner = OWNER_NONE, struct Town *town = NULL, uint8 view = 0); -void PlaceProc_Object(TileIndex tile); -void ShowBuildObjectPicker(struct Window *w); +void ShowBuildObjectPicker(); #endif /* OBJECT_H */ diff --git a/src/object_base.h b/src/object_base.h index 8f3ddb1b41..47e5a7f94c 100644 --- a/src/object_base.h +++ b/src/object_base.h @@ -18,11 +18,12 @@ #include "town_type.h" #include "date_type.h" -typedef Pool ObjectPool; +typedef Pool ObjectPool; extern ObjectPool _object_pool; /** An object, such as transmitter, on the map. */ struct Object : ObjectPool::PoolItem<&_object_pool> { + ObjectType type; ///< Type of the object Town *town; ///< Town the object is built in TileArea location; ///< Location of the object Date build_date; ///< Date of construction diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index 9ba2ba83c7..b5b9921525 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -38,6 +38,8 @@ #include "table/strings.h" #include "table/object_land.h" +#include "safeguards.h" + ObjectPool _object_pool("Object"); INSTANTIATE_POOL_METHODS(Object) uint16 Object::counts[NUM_OBJECTS]; @@ -52,6 +54,18 @@ uint16 Object::counts[NUM_OBJECTS]; return Object::Get(GetObjectIndex(tile)); } +/** + * Gets the ObjectType of the given object tile + * @param t the tile to get the type from. + * @pre IsTileType(t, MP_OBJECT) + * @return the type. + */ +ObjectType GetObjectType(TileIndex t) +{ + assert(IsTileType(t, MP_OBJECT)); + return Object::GetByTile(t)->type; +} + /** Initialize/reset the objects. */ void InitializeObjects() { @@ -74,6 +88,7 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town, u TileArea ta(tile, GB(spec->size, HasBit(view, 0) ? 4 : 0, 4), GB(spec->size, HasBit(view, 0) ? 0 : 4, 4)); Object *o = new Object(); + o->type = type; o->location = ta; o->town = town == NULL ? CalcClosestTownFromTile(tile) : town; o->build_date = _date; @@ -108,7 +123,7 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town, u Company::Get(owner)->infrastructure.water++; DirtyCompanyInfrastructureWindows(owner); } - MakeObject(t, type, owner, o->index, wc, Random()); + MakeObject(t, owner, o->index, wc, Random()); MarkTileDirtyByTile(t); } @@ -192,13 +207,15 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 { CommandCost cost(EXPENSES_PROPERTY); - ObjectType type = (ObjectType)GB(p1, 0, 8); + ObjectType type = (ObjectType)GB(p1, 0, 16); + if (type >= NUM_OBJECTS) return CMD_ERROR; uint8 view = GB(p2, 0, 2); const ObjectSpec *spec = ObjectSpec::Get(type); - if (!spec->IsAvailable()) return CMD_ERROR; + if (_game_mode == GM_NORMAL && !spec->IsAvailable() && !_generating_world) return CMD_ERROR; + if ((_game_mode == GM_EDITOR || _generating_world) && !spec->WasEverAvailable()) return CMD_ERROR; - if (spec->flags & OBJECT_FLAG_ONLY_IN_SCENEDIT && (_game_mode != GM_EDITOR || _current_company != OWNER_NONE)) return CMD_ERROR; - if (spec->flags & OBJECT_FLAG_ONLY_IN_GAME && (_game_mode != GM_NORMAL || _current_company > MAX_COMPANIES)) return CMD_ERROR; + if ((spec->flags & OBJECT_FLAG_ONLY_IN_SCENEDIT) != 0 && ((!_generating_world && _game_mode != GM_EDITOR) || _current_company != OWNER_NONE)) return CMD_ERROR; + if ((spec->flags & OBJECT_FLAG_ONLY_IN_GAME) != 0 && (_generating_world || _game_mode != GM_NORMAL || _current_company > MAX_COMPANIES)) return CMD_ERROR; if (view >= spec->views) return CMD_ERROR; if (!Object::CanAllocateItem()) return_cmd_error(STR_ERROR_TOO_MANY_OBJECTS); @@ -255,7 +272,7 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 } else { /* The meaning of bit 10 is inverted for a grf version < 8. */ if (spec->grf_prop.grffile->grf_version < 8) ToggleBit(callback, 10); - CommandCost ret = GetErrorMessageFromLocationCallbackResult(callback, spec->grf_prop.grffile->grfid, STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); + CommandCost ret = GetErrorMessageFromLocationCallbackResult(callback, spec->grf_prop.grffile, STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); if (ret.Failed()) return ret; } } @@ -278,7 +295,7 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 /* Finally do a check for bridges. */ TILE_AREA_LOOP(t, ta) { - if (MayHaveBridgeAbove(t) && IsBridgeAbove(t) && ( + if (IsBridgeAbove(t) && ( !(spec->flags & OBJECT_FLAG_ALLOW_UNDER_BRIDGE) || (GetTileMaxZ(t) + spec->height >= GetBridgeHeight(GetSouthernBridgeEnd(t))))) { return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); @@ -289,13 +306,13 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 switch (type) { case OBJECT_TRANSMITTER: case OBJECT_LIGHTHOUSE: - if (GetTileSlope(tile) != SLOPE_FLAT) return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); + if (!IsTileFlat(tile)) return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); break; case OBJECT_OWNED_LAND: if (IsTileType(tile, MP_OBJECT) && IsTileOwner(tile, _current_company) && - IsOwnedLand(tile)) { + IsObjectType(tile, OBJECT_OWNED_LAND)) { return_cmd_error(STR_ERROR_YOU_ALREADY_OWN_IT); } break; @@ -391,12 +408,12 @@ static void DrawTile_Object(TileInfo *ti) DrawNewObjectTile(ti, spec); } - if (spec->flags & OBJECT_FLAG_ALLOW_UNDER_BRIDGE) DrawBridgeMiddle(ti); + DrawBridgeMiddle(ti); } static int GetSlopePixelZ_Object(TileIndex tile, uint x, uint y) { - if (IsOwnedLand(tile)) { + if (IsObjectType(tile, OBJECT_OWNED_LAND)) { int z; Slope tileh = GetTilePixelSlope(tile, &z); @@ -408,7 +425,7 @@ static int GetSlopePixelZ_Object(TileIndex tile, uint x, uint y) static Foundation GetFoundation_Object(TileIndex tile, Slope tileh) { - return IsOwnedLand(tile) ? FOUNDATION_NONE : FlatteningFoundation(tileh); + return IsObjectType(tile, OBJECT_OWNED_LAND) ? FOUNDATION_NONE : FlatteningFoundation(tileh); } /** @@ -417,7 +434,7 @@ static Foundation GetFoundation_Object(TileIndex tile, Slope tileh) */ static void ReallyClearObjectTile(Object *o) { - Object::DecTypeCount(GetObjectType(o->location.tile)); + Object::DecTypeCount(o->type); TILE_AREA_LOOP(tile_cur, o->location) { DeleteNewGRFInspectWindow(GSF_OBJECTS, tile_cur); @@ -447,13 +464,13 @@ ClearedObjectArea *FindClearedObject(TileIndex tile) static CommandCost ClearTile_Object(TileIndex tile, DoCommandFlag flags) { - ObjectType type = GetObjectType(tile); - const ObjectSpec *spec = ObjectSpec::Get(type); - /* Get to the northern most tile. */ Object *o = Object::GetByTile(tile); TileArea ta = o->location; + ObjectType type = o->type; + const ObjectSpec *spec = ObjectSpec::Get(type); + CommandCost cost(EXPENSES_CONSTRUCTION, spec->GetClearCost() * ta.w * ta.h / 5); if (spec->flags & OBJECT_FLAG_CLEAR_INCOME) cost.MultiplyCost(-1); // They get an income! @@ -471,8 +488,8 @@ static CommandCost ClearTile_Object(TileIndex tile, DoCommandFlag flags) } else if (_game_mode == GM_EDITOR) { /* No further limitations for the editor. */ } else if (GetTileOwner(tile) == OWNER_NONE) { - /* Owned by nobody, so we can only remove it with brute force! */ - if (!_cheats.magic_bulldozer.value) return CMD_ERROR; + /* Owned by nobody and unremovable, so we can only remove it with brute force! */ + if (!_cheats.magic_bulldozer.value && (spec->flags & OBJECT_FLAG_CANNOT_REMOVE) != 0) return CMD_ERROR; } else if (CheckTileOwnership(tile).Failed()) { /* We don't own it!. */ return_cmd_error(STR_ERROR_OWNED_BY); @@ -525,7 +542,7 @@ static CommandCost ClearTile_Object(TileIndex tile, DoCommandFlag flags) static void AddAcceptedCargo_Object(TileIndex tile, CargoArray &acceptance, uint32 *always_accepted) { - if (!IsCompanyHQ(tile)) return; + if (!IsObjectType(tile, OBJECT_HQ)) return; /* HQ accepts passenger and mail; but we have to divide the values * between 4 tiles it occupies! */ @@ -570,7 +587,7 @@ static void TileLoop_Object(TileIndex tile) if (IsTileOnWater(tile)) TileLoop_Water(tile); - if (!IsCompanyHQ(tile)) return; + if (!IsObjectType(tile, OBJECT_HQ)) return; /* HQ accepts passenger and mail; but we have to divide the values * between 4 tiles it occupies! */ @@ -607,7 +624,7 @@ static TrackStatus GetTileTrackStatus_Object(TileIndex tile, TransportType mode, static bool ClickTile_Object(TileIndex tile) { - if (!IsCompanyHQ(tile)) return false; + if (!IsObjectType(tile, OBJECT_HQ)) return false; ShowCompany(GetTileOwner(tile)); return true; @@ -626,20 +643,77 @@ static void AnimateTile_Object(TileIndex tile) */ static bool HasTransmitter(TileIndex tile, void *user) { - return IsTransmitterTile(tile); + return IsObjectTypeTile(tile, OBJECT_TRANSMITTER); } -void GenerateObjects() +/** + * Try to build a lighthouse. + * @return True iff building a lighthouse succeeded. + */ +static bool TryBuildLightHouse() +{ + uint maxx = MapMaxX(); + uint maxy = MapMaxY(); + uint r = Random(); + + /* Scatter the lighthouses more evenly around the perimeter */ + int perimeter = (GB(r, 16, 16) % (2 * (maxx + maxy))) - maxy; + DiagDirection dir; + for (dir = DIAGDIR_NE; perimeter > 0; dir++) { + perimeter -= (DiagDirToAxis(dir) == AXIS_X) ? maxx : maxy; + } + + TileIndex tile; + switch (dir) { + default: + case DIAGDIR_NE: tile = TileXY(maxx - 1, r % maxy); break; + case DIAGDIR_SE: tile = TileXY(r % maxx, 1); break; + case DIAGDIR_SW: tile = TileXY(1, r % maxy); break; + case DIAGDIR_NW: tile = TileXY(r % maxx, maxy - 1); break; + } + + /* Only build lighthouses at tiles where the border is sea. */ + if (!IsTileType(tile, MP_WATER)) return false; + + for (int j = 0; j < 19; j++) { + int h; + if (IsTileType(tile, MP_CLEAR) && IsTileFlat(tile, &h) && h <= 2 && !IsBridgeAbove(tile)) { + BuildObject(OBJECT_LIGHTHOUSE, tile); + assert(tile < MapSize()); + return true; + } + tile += TileOffsByDiagDir(dir); + if (!IsValidTile(tile)) return false; + } + return false; +} + +/** + * Try to build a transmitter. + * @return True iff a transmitter was built. + */ +static bool TryBuildTransmitter() { - if (_settings_game.game_creation.landscape == LT_TOYLAND) return; + TileIndex tile = RandomTile(); + int h; + if (IsTileType(tile, MP_CLEAR) && IsTileFlat(tile, &h) && h >= 4 && !IsBridgeAbove(tile)) { + TileIndex t = tile; + if (CircularTileSearch(&t, 9, HasTransmitter, NULL)) return false; + + BuildObject(OBJECT_TRANSMITTER, tile); + return true; + } + return false; +} - /* add radio tower */ - int radiotower_to_build = ScaleByMapSize(15); // maximum number of radio towers on the map - int lighthouses_to_build = _settings_game.game_creation.landscape == LT_TROPIC ? 0 : ScaleByMapSize1D((Random() & 3) + 7); +void GenerateObjects() +{ + /* Set a guestimate on how much we progress */ + SetGeneratingWorldProgress(GWP_OBJECT, NUM_OBJECTS); - /* Scale the amount of lighthouses with the amount of land at the borders. */ - if (_settings_game.construction.freeform_edges && lighthouses_to_build != 0) { - uint num_water_tiles = 0; + /* Determine number of water tiles at map border needed for freeform_edges */ + uint num_water_tiles = 0; + if (_settings_game.construction.freeform_edges) { for (uint x = 0; x < MapMaxX(); x++) { if (IsTileType(TileXY(x, 1), MP_WATER)) num_water_tiles++; if (IsTileType(TileXY(x, MapMaxY() - 1), MP_WATER)) num_water_tiles++; @@ -648,64 +722,47 @@ void GenerateObjects() if (IsTileType(TileXY(1, y), MP_WATER)) num_water_tiles++; if (IsTileType(TileXY(MapMaxX() - 1, y), MP_WATER)) num_water_tiles++; } - /* The -6 is because the top borders are MP_VOID (-2) and all corners - * are counted twice (-4). */ - lighthouses_to_build = lighthouses_to_build * num_water_tiles / (2 * MapMaxY() + 2 * MapMaxX() - 6); } - SetGeneratingWorldProgress(GWP_OBJECT, radiotower_to_build + lighthouses_to_build); - - for (uint i = ScaleByMapSize(1000); i != 0 && Object::CanAllocateItem(); i--) { - TileIndex tile = RandomTile(); + /* Iterate over all possible object types */ + for (uint i = 0; i < NUM_OBJECTS; i++) { + const ObjectSpec *spec = ObjectSpec::Get(i); - int h; - if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= 4 && !IsBridgeAbove(tile)) { - TileIndex t = tile; - if (CircularTileSearch(&t, 9, HasTransmitter, NULL)) continue; + /* Continue, if the object was never available till now or shall not be placed */ + if (!spec->WasEverAvailable() || spec->generate_amount == 0) continue; - BuildObject(OBJECT_TRANSMITTER, tile); - IncreaseGeneratingWorldProgress(GWP_OBJECT); - if (--radiotower_to_build == 0) break; - } - } + uint16 amount = spec->generate_amount; - /* add lighthouses */ - uint maxx = MapMaxX(); - uint maxy = MapMaxY(); - for (int loop_count = 0; loop_count < 1000 && lighthouses_to_build != 0 && Object::CanAllocateItem(); loop_count++) { - uint r = Random(); - - /* Scatter the lighthouses more evenly around the perimeter */ - int perimeter = (GB(r, 16, 16) % (2 * (maxx + maxy))) - maxy; - DiagDirection dir; - for (dir = DIAGDIR_NE; perimeter > 0; dir++) { - perimeter -= (DiagDirToAxis(dir) == AXIS_X) ? maxx : maxy; - } - - TileIndex tile; - switch (dir) { - default: - case DIAGDIR_NE: tile = TileXY(maxx - 1, r % maxy); break; - case DIAGDIR_SE: tile = TileXY(r % maxx, 1); break; - case DIAGDIR_SW: tile = TileXY(1, r % maxy); break; - case DIAGDIR_NW: tile = TileXY(r % maxx, maxy - 1); break; + /* Scale by map size */ + if ((spec->flags & OBJECT_FLAG_SCALE_BY_WATER) && _settings_game.construction.freeform_edges) { + /* Scale the amount of lighthouses with the amount of land at the borders. + * The -6 is because the top borders are MP_VOID (-2) and all corners + * are counted twice (-4). */ + amount = ScaleByMapSize1D(amount * num_water_tiles) / (2 * MapMaxY() + 2 * MapMaxX() - 6); + } else if (spec->flags & OBJECT_FLAG_SCALE_BY_WATER) { + amount = ScaleByMapSize1D(amount); + } else { + amount = ScaleByMapSize(amount); } - /* Only build lighthouses at tiles where the border is sea. */ - if (!IsTileType(tile, MP_WATER)) continue; - - for (int j = 0; j < 19; j++) { - int h; - if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= 2 && !IsBridgeAbove(tile)) { - BuildObject(OBJECT_LIGHTHOUSE, tile); - IncreaseGeneratingWorldProgress(GWP_OBJECT); - lighthouses_to_build--; - assert(tile < MapSize()); - break; + /* Now try to place the requested amount of this object */ + for (uint j = ScaleByMapSize(1000); j != 0 && amount != 0 && Object::CanAllocateItem(); j--) { + switch (i) { + case OBJECT_TRANSMITTER: + if (TryBuildTransmitter()) amount--; + break; + + case OBJECT_LIGHTHOUSE: + if (TryBuildLightHouse()) amount--; + break; + + default: + uint8 view = RandomRange(spec->views); + if (CmdBuildObject(RandomTile(), DC_EXEC | DC_AUTO | DC_NO_TEST_TOWN_RATING | DC_NO_MODIFY_TOWN_RATING, i, view, NULL).Succeeded()) amount--; + break; } - tile += TileOffsByDiagDir(dir); - if (!IsValidTile(tile)) break; } + IncreaseGeneratingWorldProgress(GWP_OBJECT); } } @@ -713,9 +770,9 @@ static void ChangeTileOwner_Object(TileIndex tile, Owner old_owner, Owner new_ow { if (!IsTileOwner(tile, old_owner)) return; - if (IsOwnedLand(tile) && new_owner != INVALID_OWNER) { + if (IsObjectType(tile, OBJECT_OWNED_LAND) && new_owner != INVALID_OWNER) { SetTileOwner(tile, new_owner); - } else if (IsStatueTile(tile)) { + } else if (IsObjectType(tile, OBJECT_STATUE)) { Town *t = Object::GetByTile(tile)->town; ClrBit(t->statues, old_owner); if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) { diff --git a/src/object_gui.cpp b/src/object_gui.cpp index e53ad6de19..220f4e3854 100644 --- a/src/object_gui.cpp +++ b/src/object_gui.cpp @@ -16,19 +16,23 @@ #include "newgrf_text.h" #include "strings_func.h" #include "viewport_func.h" +#include "tilehighlight_func.h" #include "window_gui.h" #include "window_func.h" +#include "zoom_func.h" #include "widgets/object_widget.h" #include "table/strings.h" +#include "safeguards.h" + static ObjectClassID _selected_object_class; ///< the currently visible object class static int _selected_object_index; ///< the index of the selected object in the current class or -1 static uint8 _selected_object_view; ///< the view of the selected object /** The window used for building objects. */ -class BuildObjectWindow : public PickerWindowBase { +class BuildObjectWindow : public Window { static const int OBJECT_MARGIN = 4; ///< The margin (in pixels) around an object. int line_height; ///< The height of a single line. int info_height; ///< The height of the info box. @@ -70,11 +74,13 @@ class BuildObjectWindow : public PickerWindowBase { } public: - BuildObjectWindow(WindowDesc *desc, Window *w) : PickerWindowBase(desc, w), info_height(1) + BuildObjectWindow(WindowDesc *desc, WindowNumber number) : Window(desc), info_height(1) { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_BO_SCROLLBAR); - this->FinishInitNested(0); + this->FinishInitNested(number); + + ResetObjectToPlace(); this->vscroll->SetPosition(0); this->vscroll->SetCount(ObjectClass::GetUIClassCount()); @@ -82,8 +88,8 @@ public: NWidgetMatrix *matrix = this->GetWidget(WID_BO_SELECT_MATRIX); matrix->SetScrollbar(this->GetScrollbar(WID_BO_SELECT_SCROLL)); + this->SelectOtherClass(_selected_object_class); if (this->CanRestoreSelectedObject()) { - this->SelectOtherClass(_selected_object_class), this->SelectOtherObject(_selected_object_index); } else { this->SelectFirstAvailableObject(true); @@ -162,8 +168,8 @@ public: /* Determine the pixel heights. */ for (size_t i = 0; i < lengthof(height); i++) { - height[i] *= TILE_HEIGHT; - height[i] += TILE_PIXELS + 2 * OBJECT_MARGIN; + height[i] *= ScaleGUITrad(TILE_HEIGHT); + height[i] += ScaleGUITrad(TILE_PIXELS) + 2 * OBJECT_MARGIN; } /* Now determine the size of the minimum widgets. When there are two columns, then @@ -172,9 +178,9 @@ public: * of widgets, or just the twice the widget height of the two row ones. */ size->height = max(height[0], height[1] * 2 + 2); if (two_wide) { - size->width = (3 * TILE_PIXELS + 2 * OBJECT_MARGIN) * 2 + 2; + size->width = (3 * ScaleGUITrad(TILE_PIXELS) + 2 * OBJECT_MARGIN) * 2 + 2; } else { - size->width = 4 * TILE_PIXELS + 2 * OBJECT_MARGIN; + size->width = 4 * ScaleGUITrad(TILE_PIXELS) + 2 * OBJECT_MARGIN; } /* Get the right size for the single widget based on the current spec. */ @@ -195,6 +201,11 @@ public: resize->height = 1; break; + case WID_BO_SELECT_IMAGE: + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(58) + 2; + break; + default: break; } } @@ -209,8 +220,7 @@ public: ObjectClass *objclass = ObjectClass::Get((ObjectClassID)i); if (objclass->GetUISpecCount() == 0) continue; if (!this->vscroll->IsVisible(pos++)) continue; - SetDParam(0, objclass->name); - DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, STR_JUST_STRING, + DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, objclass->name, ((int)i == _selected_object_class) ? TC_WHITE : TC_BLACK); y += this->line_height; } @@ -236,9 +246,9 @@ public: if (spec->grf_prop.grffile == NULL) { extern const DrawTileSprites _objects[]; const DrawTileSprites *dts = &_objects[spec->grf_prop.local_id]; - DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - TILE_PIXELS, dts, PAL_NONE); + DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - ScaleGUITrad(TILE_PIXELS), dts, PAL_NONE); } else { - DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - TILE_PIXELS, spec, GB(widget, 16, 16)); + DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - ScaleGUITrad(TILE_PIXELS), spec, GB(widget, 16, 16)); } _cur_dpi = old_dpi; } @@ -263,9 +273,9 @@ public: if (spec->grf_prop.grffile == NULL) { extern const DrawTileSprites _objects[]; const DrawTileSprites *dts = &_objects[spec->grf_prop.local_id]; - DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - TILE_PIXELS, dts, PAL_NONE); + DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - ScaleGUITrad(TILE_PIXELS), dts, PAL_NONE); } else { - DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - TILE_PIXELS, spec, + DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - ScaleGUITrad(TILE_PIXELS), spec, min(_selected_object_view, spec->views - 1)); } _cur_dpi = old_dpi; @@ -286,7 +296,7 @@ public: } else { StringID message = GetGRFStringID(spec->grf_prop.grffile->grfid, 0xD000 + callback_res); if (message != STR_NULL && message != STR_UNDEFINED) { - StartTextRefStackUsage(6); + StartTextRefStackUsage(spec->grf_prop.grffile, 6); /* Use all the available space left from where we stand up to the * end of the window. We ALSO enlarge the window if needed, so we * can 'go' wild with the bottom of the window. */ @@ -330,10 +340,11 @@ public: _selected_object_view = 0; } - this->GetWidget(WID_BO_OBJECT_MATRIX)->SetClicked(_selected_object_view); - this->GetWidget(WID_BO_SELECT_MATRIX)->SetClicked(_selected_object_index != -1 ? ObjectClass::Get(_selected_object_class)->GetUIFromIndex(_selected_object_index) : -1); - this->UpdateSelectSize(); - this->SetDirty(); + if (_selected_object_index != -1) { + SetObjectToPlaceWnd(SPR_CURSOR_TRANSMITTER, PAL_NONE, HT_RECT, this); + } + + this->UpdateButtons(_selected_object_class, _selected_object_index, _selected_object_view); } void UpdateSelectSize() @@ -348,6 +359,29 @@ public: } } + /** + * Update buttons to show the selection to the user. + * @param sel_class The class of the selected object. + * @param sel_index Index of the object to select, or \c -1 . + * @param sel_view View of the object to select. + */ + void UpdateButtons(ObjectClassID sel_class, int sel_index, uint sel_view) + { + int view_number, object_number; + if (sel_index == -1) { + view_number = -1; // If no object selected, also hide the selected view. + object_number = -1; + } else { + view_number = sel_view; + object_number = ObjectClass::Get(sel_class)->GetUIFromIndex(sel_index); + } + + this->GetWidget(WID_BO_OBJECT_MATRIX)->SetClicked(view_number); + this->GetWidget(WID_BO_SELECT_MATRIX)->SetClicked(object_number); + this->UpdateSelectSize(); + this->SetDirty(); + } + virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_BO_CLASS_LIST); @@ -375,14 +409,23 @@ public: case WID_BO_OBJECT_SPRITE: if (_selected_object_index != -1) { _selected_object_view = GB(widget, 16, 16); - this->GetWidget(WID_BO_OBJECT_MATRIX)->SetClicked(_selected_object_view); - this->UpdateSelectSize(); - this->SetDirty(); + this->SelectOtherObject(_selected_object_index); // Re-select the object for a different view. } break; } } + virtual void OnPlaceObject(Point pt, TileIndex tile) + { + DoCommandP(tile, ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index)->Index(), + _selected_object_view, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_OBJECT), CcTerraform); + } + + virtual void OnPlaceObjectAbort() + { + this->UpdateButtons(_selected_object_class, -1, _selected_object_view); + } + /** * Select the first available object. * @param change_class If true, change the class if no object in the current @@ -481,9 +524,9 @@ static WindowDesc _build_object_desc( * Show our object picker. * @param w The toolbar window we're associated with. */ -void ShowBuildObjectPicker(Window *w) +void ShowBuildObjectPicker() { - new BuildObjectWindow(&_build_object_desc, w); + AllocateWindowDescFront(&_build_object_desc, 0); } /** Reset all data of the object GUI. */ @@ -491,13 +534,3 @@ void InitializeObjectGui() { _selected_object_class = (ObjectClassID)0; } - -/** - * PlaceProc function, called when someone pressed the button if the - * object-tool is selected - * @param tile on which to place the object - */ -void PlaceProc_Object(TileIndex tile) -{ - DoCommandP(tile, ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index)->Index(), _selected_object_view, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_OBJECT), CcTerraform); -} diff --git a/src/object_map.h b/src/object_map.h index d50938942d..1aaf984345 100644 --- a/src/object_map.h +++ b/src/object_map.h @@ -15,94 +15,41 @@ #include "water_map.h" #include "object_type.h" -/** - * Gets the ObjectType of the given object tile - * @param t the tile to get the type from. - * @pre IsTileType(t, MP_OBJECT) - * @return the type. - */ -static inline ObjectType GetObjectType(TileIndex t) -{ - assert(IsTileType(t, MP_OBJECT)); - return (ObjectType)_m[t].m5; -} +ObjectType GetObjectType(TileIndex t); /** - * Get the index of which object this tile is attached to. - * @param t the tile + * Check whether the object on a tile is of a specific type. + * @param t Tile to test. + * @param type Type to test. * @pre IsTileType(t, MP_OBJECT) - * @return The ObjectID of the object. - */ -static inline ObjectID GetObjectIndex(TileIndex t) -{ - assert(IsTileType(t, MP_OBJECT)); - return _m[t].m2; -} - -/** - * Does the given tile have a transmitter? - * @param t the tile to inspect. - * @return true if and only if the tile has a transmitter. + * @return True if type matches. */ -static inline bool IsTransmitterTile(TileIndex t) +static inline bool IsObjectType(TileIndex t, ObjectType type) { - return IsTileType(t, MP_OBJECT) && GetObjectType(t) == OBJECT_TRANSMITTER; + return GetObjectType(t) == type; } /** - * Is this object tile an 'owned land' tile? - * @param t the tile to inspect. - * @pre IsTileType(t, MP_OBJECT) - * @return true if and only if the tile is an 'owned land' tile. + * Check whether a tile is a object tile of a specific type. + * @param t Tile to test. + * @param type Type to test. + * @return True if type matches. */ -static inline bool IsOwnedLand(TileIndex t) +static inline bool IsObjectTypeTile(TileIndex t, ObjectType type) { - assert(IsTileType(t, MP_OBJECT)); - return GetObjectType(t) == OBJECT_OWNED_LAND; + return IsTileType(t, MP_OBJECT) && GetObjectType(t) == type; } /** - * Is the given tile (pre-)owned by someone (the little flags)? - * @param t the tile to inspect. - * @return true if and only if the tile is an 'owned land' tile. - */ -static inline bool IsOwnedLandTile(TileIndex t) -{ - return IsTileType(t, MP_OBJECT) && IsOwnedLand(t); -} - -/** - * Is this object tile a HQ tile? - * @param t the tile to inspect. - * @pre IsTileType(t, MP_OBJECT) - * @return true if and only if the tile is a HQ tile. - */ -static inline bool IsCompanyHQ(TileIndex t) -{ - assert(IsTileType(t, MP_OBJECT)); - return _m[t].m5 == OBJECT_HQ; -} - -/** - * Is this object tile a statue? - * @param t the tile to inspect. + * Get the index of which object this tile is attached to. + * @param t the tile * @pre IsTileType(t, MP_OBJECT) - * @return true if and only if the tile is a statue. + * @return The ObjectID of the object. */ -static inline bool IsStatue(TileIndex t) +static inline ObjectID GetObjectIndex(TileIndex t) { assert(IsTileType(t, MP_OBJECT)); - return GetObjectType(t) == OBJECT_STATUE; -} - -/** - * Is the given tile a statue? - * @param t the tile to inspect. - * @return true if and only if the tile is a statue. - */ -static inline bool IsStatueTile(TileIndex t) -{ - return IsTileType(t, MP_OBJECT) && IsStatue(t); + return _m[t].m2 | _m[t].m5 << 16; } /** @@ -120,15 +67,13 @@ static inline byte GetObjectRandomBits(TileIndex t) /** * Make an Object tile. - * @note do not use this function directly. Use one of the other Make* functions. * @param t The tile to make and object tile. - * @param u The object type of the tile. * @param o The new owner of the tile. * @param index Index to the object. * @param wc Water class for this object. * @param random Random data to store on the tile */ -static inline void MakeObject(TileIndex t, ObjectType u, Owner o, ObjectID index, WaterClass wc, byte random) +static inline void MakeObject(TileIndex t, Owner o, ObjectID index, WaterClass wc, byte random) { SetTileType(t, MP_OBJECT); SetTileOwner(t, o); @@ -136,8 +81,8 @@ static inline void MakeObject(TileIndex t, ObjectType u, Owner o, ObjectID index _m[t].m2 = index; _m[t].m3 = random; _m[t].m4 = 0; - _m[t].m5 = u; - SB(_m[t].m6, 2, 4, 0); + _m[t].m5 = index >> 16; + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/object_type.h b/src/object_type.h index 7987c6481e..4ead576f38 100644 --- a/src/object_type.h +++ b/src/object_type.h @@ -21,16 +21,18 @@ static const ObjectType OBJECT_STATUE = 2; ///< Statue in towns static const ObjectType OBJECT_OWNED_LAND = 3; ///< Owned land 'flag' static const ObjectType OBJECT_HQ = 4; ///< HeadQuarter of a player +static const ObjectType NUM_OBJECTS_PER_GRF = 255; ///< Number of supported objects per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. + static const ObjectType NEW_OBJECT_OFFSET = 5; ///< Offset for new objects -static const ObjectType NUM_OBJECTS = 256; ///< Number of supported objects +static const ObjectType NUM_OBJECTS = 64000; ///< Number of supported objects overall static const ObjectType INVALID_OBJECT_TYPE = 0xFFFF; ///< An invalid object /** Unique identifier for an object. */ -typedef uint16 ObjectID; +typedef uint32 ObjectID; struct Object; struct ObjectSpec; -static const ObjectID INVALID_OBJECT = 0xFFFF; ///< An invalid object +static const ObjectID INVALID_OBJECT = 0xFFFFFFFF; ///< An invalid object #endif /* OBJECT_TYPE_H */ diff --git a/src/openttd.cpp b/src/openttd.cpp index 90c5d56dbe..c149ebbd4d 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -62,12 +62,13 @@ #include "town.h" #include "subsidy_func.h" #include "gfx_layout.h" - +#include "viewport_sprite_sorter.h" #include "linkgraph/linkgraphschedule.h" #include +#include "safeguards.h" void CallLandscapeTick(); void IncreaseDate(); @@ -92,11 +93,11 @@ void CDECL usererror(const char *s, ...) char buf[512]; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); ShowOSErrorBox(buf, false); - if (_video_driver != NULL) _video_driver->Stop(); + if (VideoDriver::GetInstance() != NULL) VideoDriver::GetInstance()->Stop(); exit(1); } @@ -112,7 +113,7 @@ void CDECL error(const char *s, ...) char buf[512]; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); ShowOSErrorBox(buf, true); @@ -131,7 +132,7 @@ void CDECL ShowInfoF(const char *str, ...) va_list va; char buf[1024]; va_start(va, str); - vsnprintf(buf, lengthof(buf), str, va); + vseprintf(buf, lastof(buf), str, va); va_end(va); ShowInfo(buf); } @@ -190,10 +191,10 @@ static void ShowHelp() p = BaseMusic::GetSetsList(p, lastof(buf)); /* List the drivers */ - p = VideoDriverFactoryBase::GetDriversInfo(p, lastof(buf)); + p = DriverFactoryBase::GetDriversInfo(p, lastof(buf)); /* List the blitters */ - p = BlitterFactoryBase::GetBlittersInfo(p, lastof(buf)); + p = BlitterFactory::GetBlittersInfo(p, lastof(buf)); /* List the debug facilities. */ p = DumpDebugFacilityNames(p, lastof(buf)); @@ -342,7 +343,7 @@ static void LoadIntroGame(bool load_newgrfs = true) CheckForMissingGlyphs(); /* Play main theme */ - if (_music_driver->IsSongPlaying()) ResetMusic(); + if (MusicDriver::GetInstance()->IsSongPlaying()) ResetMusic(); } void MakeNewgameSettingsLive() @@ -435,7 +436,7 @@ struct AfterNewGRFScan : NewGRFScanCallback { *save_config_ptr = save_config; /* restore saved music volume */ - _music_driver->SetVolume(_settings_client.music.music_vol); + MusicDriver::GetInstance()->SetVolume(_settings_client.music.music_vol); if (startyear != INVALID_YEAR) _settings_newgame.game_creation.starting_year = startyear; if (generation_seed != GENERATE_NEW_SEED) _settings_newgame.game_creation.generation_seed = generation_seed; @@ -443,7 +444,7 @@ struct AfterNewGRFScan : NewGRFScanCallback { #if defined(ENABLE_NETWORK) if (dedicated_host != NULL) { _network_bind_list.Clear(); - *_network_bind_list.Append() = strdup(dedicated_host); + *_network_bind_list.Append() = stredup(dedicated_host); } if (dedicated_port != 0) _settings_client.network.server_port = dedicated_port; #endif /* ENABLE_NETWORK */ @@ -557,27 +558,28 @@ int openttd_main(int argc, char *argv[]) _config_file = NULL; GetOptData mgo(argc - 1, argv + 1, _options); + int ret = 0; int i; while ((i = mgo.GetOpt()) != -1) { switch (i) { - case 'I': free(graphics_set); graphics_set = strdup(mgo.opt); break; - case 'S': free(sounds_set); sounds_set = strdup(mgo.opt); break; - case 'M': free(music_set); music_set = strdup(mgo.opt); break; - case 'm': free(musicdriver); musicdriver = strdup(mgo.opt); break; - case 's': free(sounddriver); sounddriver = strdup(mgo.opt); break; - case 'v': free(videodriver); videodriver = strdup(mgo.opt); break; - case 'b': free(blitter); blitter = strdup(mgo.opt); break; + case 'I': free(graphics_set); graphics_set = stredup(mgo.opt); break; + case 'S': free(sounds_set); sounds_set = stredup(mgo.opt); break; + case 'M': free(music_set); music_set = stredup(mgo.opt); break; + case 'm': free(musicdriver); musicdriver = stredup(mgo.opt); break; + case 's': free(sounddriver); sounddriver = stredup(mgo.opt); break; + case 'v': free(videodriver); videodriver = stredup(mgo.opt); break; + case 'b': free(blitter); blitter = stredup(mgo.opt); break; #if defined(ENABLE_NETWORK) case 'D': free(musicdriver); free(sounddriver); free(videodriver); free(blitter); - musicdriver = strdup("null"); - sounddriver = strdup("null"); - videodriver = strdup("dedicated"); - blitter = strdup("null"); + musicdriver = stredup("null"); + sounddriver = stredup("null"); + videodriver = stredup("dedicated"); + blitter = stredup("null"); dedicated = true; SetDebugString("net=6"); if (mgo.opt != NULL) { @@ -638,7 +640,11 @@ int openttd_main(int argc, char *argv[]) break; case 'q': { DeterminePaths(argv[0]); - if (StrEmpty(mgo.opt)) return 1; + if (StrEmpty(mgo.opt)) { + ret = 1; + goto exit_noshutdown; + } + char title[80]; title[0] = '\0'; FiosGetSavegameListCallback(SLD_LOAD_GAME, mgo.opt, strrchr(mgo.opt, '.'), title, lastof(title)); @@ -653,15 +659,15 @@ int openttd_main(int argc, char *argv[]) GetString(buf, _load_check_data.error, lastof(buf)); fprintf(stderr, "%s\n", buf); } - return 1; + goto exit_noshutdown; } WriteSavegameInfo(title); - return 0; + goto exit_noshutdown; } case 'G': scanner->generation_seed = atoi(mgo.opt); break; - case 'c': _config_file = strdup(mgo.opt); break; + case 'c': free(_config_file); _config_file = stredup(mgo.opt); break; case 'x': scanner->save_config = false; break; case 'h': i = -2; // Force printing of help. @@ -682,8 +688,8 @@ int openttd_main(int argc, char *argv[]) BaseSounds::FindSets(); BaseMusic::FindSets(); ShowHelp(); - delete scanner; - return 0; + + goto exit_noshutdown; } #if defined(WINCE) && defined(_DEBUG) @@ -733,7 +739,7 @@ int openttd_main(int argc, char *argv[]) InitWindowSystem(); BaseGraphics::FindSets(); - if (graphics_set == NULL && BaseGraphics::ini_set != NULL) graphics_set = strdup(BaseGraphics::ini_set); + if (graphics_set == NULL && BaseGraphics::ini_set != NULL) graphics_set = stredup(BaseGraphics::ini_set); if (!BaseGraphics::SetSet(graphics_set)) { if (!StrEmpty(graphics_set)) { BaseGraphics::SetSet(NULL); @@ -749,11 +755,18 @@ int openttd_main(int argc, char *argv[]) GfxInitPalettes(); DEBUG(misc, 1, "Loading blitter..."); - if (blitter == NULL && _ini_blitter != NULL) blitter = strdup(_ini_blitter); + if (blitter == NULL && _ini_blitter != NULL) blitter = stredup(_ini_blitter); _blitter_autodetected = StrEmpty(blitter); - /* If we have a 32 bpp base set, try to select the 32 bpp blitter first, but only if we autoprobe the blitter. */ - if (!_blitter_autodetected || BaseGraphics::GetUsedSet() == NULL || BaseGraphics::GetUsedSet()->blitter == BLT_8BPP || BlitterFactoryBase::SelectBlitter("32bpp-anim") == NULL) { - if (BlitterFactoryBase::SelectBlitter(blitter) == NULL) { + /* Activate the initial blitter. + * This is only some initial guess, after NewGRFs have been loaded SwitchNewGRFBlitter may switch to a different one. + * - Never guess anything, if the user specified a blitter. (_blitter_autodetected) + * - Use 32bpp blitter if baseset or 8bpp-support settings says so. + * - Use 8bpp blitter otherwise. + */ + if (!_blitter_autodetected || + (_support8bpp != S8BPP_NONE && (BaseGraphics::GetUsedSet() == NULL || BaseGraphics::GetUsedSet()->blitter == BLT_8BPP)) || + BlitterFactory::SelectBlitter("32bpp-anim") == NULL) { + if (BlitterFactory::SelectBlitter(blitter) == NULL) { StrEmpty(blitter) ? usererror("Failed to autoprobe blitter") : usererror("Failed to select requested blitter '%s'; does it exist?", blitter); @@ -761,15 +774,12 @@ int openttd_main(int argc, char *argv[]) } free(blitter); - if (videodriver == NULL && _ini_videodriver != NULL) videodriver = strdup(_ini_videodriver); - _video_driver = (VideoDriver*)VideoDriverFactoryBase::SelectDriver(videodriver, Driver::DT_VIDEO); - if (_video_driver == NULL) { - StrEmpty(videodriver) ? - usererror("Failed to autoprobe video driver") : - usererror("Failed to select requested video driver '%s'", videodriver); - } + if (videodriver == NULL && _ini_videodriver != NULL) videodriver = stredup(_ini_videodriver); + DriverFactoryBase::SelectDriver(videodriver, Driver::DT_VIDEO); free(videodriver); + InitializeSpriteSorter(); + /* Initialize the zoom level of the screen to normal */ _screen.zoom = ZOOM_LVL_NORMAL; @@ -790,15 +800,19 @@ int openttd_main(int argc, char *argv[]) } #endif /* ENABLE_NETWORK */ - if (!HandleBootstrap()) goto exit; + if (!HandleBootstrap()) { + ShutdownGame(); + + goto exit_bootstrap; + } - _video_driver->ClaimMousePointer(); + VideoDriver::GetInstance()->ClaimMousePointer(); /* initialize screenshot formats */ InitializeScreenshotFormats(); BaseSounds::FindSets(); - if (sounds_set == NULL && BaseSounds::ini_set != NULL) sounds_set = strdup(BaseSounds::ini_set); + if (sounds_set == NULL && BaseSounds::ini_set != NULL) sounds_set = stredup(BaseSounds::ini_set); if (!BaseSounds::SetSet(sounds_set)) { if (StrEmpty(sounds_set) || !BaseSounds::SetSet(NULL)) { usererror("Failed to find a sounds set. Please acquire a sounds set for OpenTTD. See section 4.1 of readme.txt."); @@ -811,7 +825,7 @@ int openttd_main(int argc, char *argv[]) free(sounds_set); BaseMusic::FindSets(); - if (music_set == NULL && BaseMusic::ini_set != NULL) music_set = strdup(BaseMusic::ini_set); + if (music_set == NULL && BaseMusic::ini_set != NULL) music_set = stredup(BaseMusic::ini_set); if (!BaseMusic::SetSet(music_set)) { if (StrEmpty(music_set) || !BaseMusic::SetSet(NULL)) { usererror("Failed to find a music set. Please acquire a music set for OpenTTD. See section 4.1 of readme.txt."); @@ -823,22 +837,12 @@ int openttd_main(int argc, char *argv[]) } free(music_set); - if (sounddriver == NULL && _ini_sounddriver != NULL) sounddriver = strdup(_ini_sounddriver); - _sound_driver = (SoundDriver*)SoundDriverFactoryBase::SelectDriver(sounddriver, Driver::DT_SOUND); - if (_sound_driver == NULL) { - StrEmpty(sounddriver) ? - usererror("Failed to autoprobe sound driver") : - usererror("Failed to select requested sound driver '%s'", sounddriver); - } + if (sounddriver == NULL && _ini_sounddriver != NULL) sounddriver = stredup(_ini_sounddriver); + DriverFactoryBase::SelectDriver(sounddriver, Driver::DT_SOUND); free(sounddriver); - if (musicdriver == NULL && _ini_musicdriver != NULL) musicdriver = strdup(_ini_musicdriver); - _music_driver = (MusicDriver*)MusicDriverFactoryBase::SelectDriver(musicdriver, Driver::DT_MUSIC); - if (_music_driver == NULL) { - StrEmpty(musicdriver) ? - usererror("Failed to autoprobe music driver") : - usererror("Failed to select requested music driver '%s'", musicdriver); - } + if (musicdriver == NULL && _ini_musicdriver != NULL) musicdriver = stredup(_ini_musicdriver); + DriverFactoryBase::SelectDriver(musicdriver, Driver::DT_MUSIC); free(musicdriver); /* Take our initial lock on whatever we might want to do! */ @@ -852,9 +856,11 @@ int openttd_main(int argc, char *argv[]) CheckForMissingGlyphs(); + /* ScanNewGRFFiles now has control over the scanner. */ ScanNewGRFFiles(scanner); + scanner = NULL; - _video_driver->MainLoop(); + VideoDriver::GetInstance()->MainLoop(); WaitTillSaved(); @@ -866,19 +872,43 @@ int openttd_main(int argc, char *argv[]) SaveToHighScore(); } -exit: /* Reset windowing system, stop drivers, free used memory, ... */ ShutdownGame(); + goto exit_normal; + +exit_noshutdown: + /* These three are normally freed before bootstrap. */ + free(graphics_set); + free(videodriver); + free(blitter); +exit_bootstrap: + /* These are normally freed before exit, but after bootstrap. */ + free(sounds_set); + free(music_set); + free(musicdriver); + free(sounddriver); + +exit_normal: free(BaseGraphics::ini_set); free(BaseSounds::ini_set); free(BaseMusic::ini_set); + free(_ini_musicdriver); free(_ini_sounddriver); free(_ini_videodriver); free(_ini_blitter); - return 0; + delete scanner; + +#ifdef ENABLE_NETWORK + extern FILE *_log_fd; + if (_log_fd != NULL) { + fclose(_log_fd); + } +#endif /* ENABLE_NETWORK */ + + return ret; } void HandleExitGameRequest() @@ -898,7 +928,7 @@ static void MakeNewGameDone() SettingsDisableElrail(_settings_game.vehicle.disable_elrails); /* In a dedicated server, the server does not play */ - if (!_video_driver->HasGUI()) { + if (!VideoDriver::GetInstance()->HasGUI()) { SetLocalCompany(COMPANY_SPECTATOR); if (_settings_client.gui.pause_on_newgame) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); IConsoleCmdExec("exec scripts/game_start.scr 0"); @@ -928,6 +958,7 @@ static void MakeNewGameDone() if (_settings_client.gui.pause_on_newgame) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); CheckEngines(); + CheckIndustries(); MarkWholeScreenDirty(); } @@ -1052,7 +1083,7 @@ void SwitchToMode(SwitchMode new_mode) case SM_NEWGAME: // New Game --> 'Random game' #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "Random Map"); + seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "Random Map"); } #endif /* ENABLE_NETWORK */ MakeNewGame(false, new_mode == SM_NEWGAME); @@ -1079,7 +1110,7 @@ void SwitchToMode(SwitchMode new_mode) DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE); #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title); + seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title); } #endif /* ENABLE_NETWORK */ } @@ -1089,7 +1120,7 @@ void SwitchToMode(SwitchMode new_mode) case SM_START_HEIGHTMAP: // Load a heightmap and start a new game from it #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title); + seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title); } #endif /* ENABLE_NETWORK */ MakeNewGame(true, true); @@ -1119,7 +1150,7 @@ void SwitchToMode(SwitchMode new_mode) LoadIntroGame(); if (BaseSounds::ini_set == NULL && BaseSounds::GetUsedSet()->fallback) { ShowErrorMessage(STR_WARNING_FALLBACK_SOUNDSET, INVALID_STRING_ID, WL_CRITICAL); - BaseSounds::ini_set = strdup(BaseSounds::GetUsedSet()->name); + BaseSounds::ini_set = stredup(BaseSounds::GetUsedSet()->name); } break; @@ -1240,7 +1271,7 @@ static void CheckCaches() } switch (v->type) { - case VEH_TRAIN: Train::From(v)->ConsistChanged(true); break; + case VEH_TRAIN: Train::From(v)->ConsistChanged(CCF_TRACK); break; case VEH_ROAD: RoadVehUpdateCache(RoadVehicle::From(v)); break; case VEH_AIRCRAFT: UpdateAircraftCache(Aircraft::From(v)); break; case VEH_SHIP: Ship::From(v)->UpdateCache(); break; @@ -1311,21 +1342,22 @@ void StateGameLoop() /* don't execute the state loop during pause */ if (_pause_mode != PM_UNPAUSED) { UpdateLandscapingLimits(); +#ifndef DEBUG_DUMP_COMMANDS Game::GameLoop(); +#endif CallWindowTickEvent(); return; } if (HasModalProgress()) return; - ClearStorageChanges(false); - Layouter::ReduceLineCache(); if (_game_mode == GM_EDITOR) { + BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP); RunTileLoop(); CallVehicleTicks(); CallLandscapeTick(); - ClearStorageChanges(true); + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP); UpdateLandscapingLimits(); CallWindowTickEvent(); @@ -1334,7 +1366,7 @@ void StateGameLoop() if (_debug_desync_level > 2 && _date_fract == 0 && (_date & 0x1F) == 0) { /* Save the desync savegame if needed. */ char name[MAX_PATH]; - snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); + seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false); } @@ -1344,15 +1376,18 @@ void StateGameLoop() * for multiplayer compatibility */ Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP); AnimateAnimatedTiles(); IncreaseDate(); RunTileLoop(); CallVehicleTicks(); CallLandscapeTick(); - ClearStorageChanges(true); + BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP); +#ifndef DEBUG_DUMP_COMMANDS AI::GameLoop(); Game::GameLoop(); +#endif UpdateLandscapingLimits(); CallWindowTickEvent(); @@ -1383,7 +1418,7 @@ static void DoAutosave() static int _autosave_ctr = 0; /* generate a savegame name and number according to _settings_client.gui.max_num_autosaves */ - snprintf(buf, sizeof(buf), "autosave%d.sav", _autosave_ctr); + seprintf(buf, lastof(buf), "autosave%d.sav", _autosave_ctr); if (++_autosave_ctr >= _settings_client.gui.max_num_autosaves) _autosave_ctr = 0; } @@ -1409,8 +1444,8 @@ void GameLoop() /* autosave game? */ if (_do_autosave) { - _do_autosave = false; DoAutosave(); + _do_autosave = false; SetWindowDirty(WC_STATUS_BAR, 0); } @@ -1460,6 +1495,6 @@ void GameLoop() InputLoop(); - _sound_driver->MainLoop(); + SoundDriver::GetInstance()->MainLoop(); MusicLoop(); } diff --git a/src/order_backup.cpp b/src/order_backup.cpp index 100348f8ab..597ad13bba 100644 --- a/src/order_backup.cpp +++ b/src/order_backup.cpp @@ -19,6 +19,8 @@ #include "window_func.h" #include "station_map.h" +#include "safeguards.h" + OrderBackupPool _order_backup_pool("BackupOrder"); INSTANTIATE_POOL_METHODS(OrderBackup) diff --git a/src/order_base.h b/src/order_base.h index 7f8ce41f57..a67cf69bb4 100644 --- a/src/order_base.h +++ b/src/order_base.h @@ -43,13 +43,13 @@ private: CargoID refit_cargo; ///< Refit CargoID -public: - Order *next; ///< Pointer to next order. If NULL, end of list - uint16 wait_time; ///< How long in ticks to wait at the destination. uint16 travel_time; ///< How long in ticks the journey to this destination should take. uint16 max_speed; ///< How fast the vehicle may go on the way to the destination. +public: + Order *next; ///< Pointer to next order. If NULL, end of list + Order() : refit_cargo(CT_NO_REFIT), max_speed(UINT16_MAX) {} ~Order(); @@ -126,17 +126,17 @@ public: void SetRefit(CargoID cargo); /** How must the consist be loaded? */ - inline OrderLoadFlags GetLoadType() const { return (OrderLoadFlags)GB(this->flags, 4, 4); } + inline OrderLoadFlags GetLoadType() const { return (OrderLoadFlags)GB(this->flags, 4, 3); } /** How must the consist be unloaded? */ - inline OrderUnloadFlags GetUnloadType() const { return (OrderUnloadFlags)GB(this->flags, 0, 4); } + inline OrderUnloadFlags GetUnloadType() const { return (OrderUnloadFlags)GB(this->flags, 0, 3); } /** At which stations must we stop? */ inline OrderNonStopFlags GetNonStopType() const { return (OrderNonStopFlags)GB(this->type, 6, 2); } /** Where must we stop at the platform? */ inline OrderStopLocation GetStopLocation() const { return (OrderStopLocation)GB(this->type, 4, 2); } /** What caused us going to the depot? */ - inline OrderDepotTypeFlags GetDepotOrderType() const { return (OrderDepotTypeFlags)GB(this->flags, 0, 4); } + inline OrderDepotTypeFlags GetDepotOrderType() const { return (OrderDepotTypeFlags)GB(this->flags, 0, 3); } /** What are we going to do when in the depot. */ - inline OrderDepotActionFlags GetDepotActionType() const { return (OrderDepotActionFlags)GB(this->flags, 4, 4); } + inline OrderDepotActionFlags GetDepotActionType() const { return (OrderDepotActionFlags)GB(this->flags, 4, 3); } /** What variable do we have to compare? */ inline OrderConditionVariable GetConditionVariable() const { return (OrderConditionVariable)GB(this->dest, 11, 5); } /** What is the comparator to use? */ @@ -147,17 +147,17 @@ public: inline uint16 GetConditionValue() const { return GB(this->dest, 0, 11); } /** Set how the consist must be loaded. */ - inline void SetLoadType(OrderLoadFlags load_type) { SB(this->flags, 4, 4, load_type); } + inline void SetLoadType(OrderLoadFlags load_type) { SB(this->flags, 4, 3, load_type); } /** Set how the consist must be unloaded. */ - inline void SetUnloadType(OrderUnloadFlags unload_type) { SB(this->flags, 0, 4, unload_type); } + inline void SetUnloadType(OrderUnloadFlags unload_type) { SB(this->flags, 0, 3, unload_type); } /** Set whether we must stop at stations or not. */ inline void SetNonStopType(OrderNonStopFlags non_stop_type) { SB(this->type, 6, 2, non_stop_type); } /** Set where we must stop at the platform. */ inline void SetStopLocation(OrderStopLocation stop_location) { SB(this->type, 4, 2, stop_location); } /** Set the cause to go to the depot. */ - inline void SetDepotOrderType(OrderDepotTypeFlags depot_order_type) { SB(this->flags, 0, 4, depot_order_type); } + inline void SetDepotOrderType(OrderDepotTypeFlags depot_order_type) { SB(this->flags, 0, 3, depot_order_type); } /** Set what we are going to do in the depot. */ - inline void SetDepotActionType(OrderDepotActionFlags depot_service_type) { SB(this->flags, 4, 4, depot_service_type); } + inline void SetDepotActionType(OrderDepotActionFlags depot_service_type) { SB(this->flags, 4, 3, depot_service_type); } /** Set variable we have to compare. */ inline void SetConditionVariable(OrderConditionVariable condition_variable) { SB(this->dest, 11, 5, condition_variable); } /** Set the comparator to use. */ @@ -167,17 +167,70 @@ public: /** Set the value to base the skip on. */ inline void SetConditionValue(uint16 value) { SB(this->dest, 0, 11, value); } + /* As conditional orders write their "skip to" order all over the flags, we cannot check the + * flags to find out if timetabling is enabled. However, as conditional orders are never + * autofilled we can be sure that any non-zero values for their wait_time and travel_time are + * explicitly set (but travel_time is actually unused for conditionals). */ + + /** Does this order have an explicit wait time set? */ + inline bool IsWaitTimetabled() const { return this->IsType(OT_CONDITIONAL) ? this->wait_time > 0 : HasBit(this->flags, 3); } + /** Does this order have an explicit travel time set? */ + inline bool IsTravelTimetabled() const { return this->IsType(OT_CONDITIONAL) ? this->travel_time > 0 : HasBit(this->flags, 7); } + + /** Get the time in ticks a vehicle should wait at the destination or 0 if it's not timetabled. */ + inline uint16 GetTimetabledWait() const { return this->IsWaitTimetabled() ? this->wait_time : 0; } + /** Get the time in ticks a vehicle should take to reach the destination or 0 if it's not timetabled. */ + inline uint16 GetTimetabledTravel() const { return this->IsTravelTimetabled() ? this->travel_time : 0; } + /** Get the time in ticks a vehicle will probably wait at the destination (timetabled or not). */ + inline uint16 GetWaitTime() const { return this->wait_time; } + /** Get the time in ticks a vehicle will probably take to reach the destination (timetabled or not). */ + inline uint16 GetTravelTime() const { return this->travel_time; } + + /** + * Get the maxmimum speed in km-ish/h a vehicle is allowed to reach on the way to the + * destination. + * @return maximum speed. + */ + inline uint16 GetMaxSpeed() const { return this->max_speed; } + + /** Set if the wait time is explicitly timetabled (unless the order is conditional). */ + inline void SetWaitTimetabled(bool timetabled) { if (!this->IsType(OT_CONDITIONAL)) SB(this->flags, 3, 1, timetabled ? 1 : 0); } + /** Set if the travel time is explicitly timetabled (unless the order is conditional). */ + inline void SetTravelTimetabled(bool timetabled) { if (!this->IsType(OT_CONDITIONAL)) SB(this->flags, 7, 1, timetabled ? 1 : 0); } + + /** + * Set the time in ticks to wait at the destination. + * @param time Time to set as wait time. + */ + inline void SetWaitTime(uint16 time) { this->wait_time = time; } + + /** + * Set the time in ticks to take for travelling to the destination. + * @param time Time to set as travel time. + */ + inline void SetTravelTime(uint16 time) { this->travel_time = time; } + + /** + * Set the maxmimum speed in km-ish/h a vehicle is allowed to reach on the way to the + * destination. + * @param speed Speed to be set. + */ + inline void SetMaxSpeed(uint16 speed) { this->max_speed = speed; } + bool ShouldStopAtStation(const Vehicle *v, StationID station) const; bool CanLoadOrUnload() const; bool CanLeaveWithCargo(bool has_cargo) const; TileIndex GetLocation(const Vehicle *v, bool airport = false) const; - /** Checks if this order has travel_time and if needed wait_time set. */ + /** Checks if travel_time and wait_time apply to this order and if they are timetabled. */ inline bool IsCompletelyTimetabled() const { - if (this->travel_time == 0 && !this->IsType(OT_CONDITIONAL)) return false; - if (this->wait_time == 0 && this->IsType(OT_GOTO_STATION) && !(this->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) return false; + if (!this->IsTravelTimetabled() && !this->IsType(OT_CONDITIONAL)) return false; + if (!this->IsWaitTimetabled() && this->IsType(OT_GOTO_STATION) && + !(this->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) { + return false; + } return true; } @@ -201,7 +254,7 @@ private: friend void AfterLoadVehicles(bool part_of_load); ///< For instantiating the shared vehicle chain friend const struct SaveLoad *GetOrderListDescription(); ///< Saving and loading of order lists. - const Order *GetBestLoadableNext(const Vehicle *v, const Order *o1, const Order *o2) const; + StationID GetBestLoadableNext(const Vehicle *v, const Order *o1, const Order *o2) const; Order *first; ///< First order of the order list. VehicleOrderID num_orders; ///< NOSAVE: How many orders there are in the list. @@ -209,13 +262,14 @@ private: uint num_vehicles; ///< NOSAVE: Number of vehicles that share this order list. Vehicle *first_shared; ///< NOSAVE: pointer to the first vehicle in the shared order chain. - Ticks timetable_duration; ///< NOSAVE: Total duration of the order list + Ticks timetable_duration; ///< NOSAVE: Total timetabled duration of the order list. + Ticks total_duration; ///< NOSAVE: Total (timetabled or not) duration of the order list. public: /** Default constructor producing an invalid order list. */ OrderList(VehicleOrderID num_orders = INVALID_VEH_ORDER_ID) : first(NULL), num_orders(num_orders), num_manual_orders(0), num_vehicles(0), first_shared(NULL), - timetable_duration(0) { } + timetable_duration(0), total_duration(0) { } /** * Create an order list with the given order chain for the given vehicle. @@ -263,8 +317,8 @@ public: */ inline VehicleOrderID GetNumManualOrders() const { return this->num_manual_orders; } - StationID GetNextStoppingStation(const Vehicle *v) const; - const Order *GetNextStoppingOrder(const Vehicle *v, const Order *next, uint hops, bool is_loading = false) const; + StationIDStack GetNextStoppingStation(const Vehicle *v, const Order *first = NULL, uint hops = 0) const; + const Order *GetNextDecisionNode(const Order *next, uint hops) const; void InsertOrderAt(Order *new_order, int index); void DeleteOrderAt(int index); @@ -315,11 +369,23 @@ public: */ inline Ticks GetTimetableDurationIncomplete() const { return this->timetable_duration; } + /** + * Gets the known duration of the vehicles orders, timetabled or not. + * @return known order duration. + */ + inline Ticks GetTotalDuration() const { return this->total_duration; } + /** * Must be called if an order's timetable is changed to update internal book keeping. * @param delta By how many ticks has the timetable duration changed */ - void UpdateOrderTimetable(Ticks delta) { this->timetable_duration += delta; } + void UpdateTimetableDuration(Ticks delta) { this->timetable_duration += delta; } + + /** + * Must be called if an order's timetable is changed to update internal book keeping. + * @param delta By how many ticks has the total duration changed + */ + void UpdateTotalDuration(Ticks delta) { this->total_duration += delta; } void FreeChain(bool keep_orderlist = false); diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index a9882dd29e..57b29f3f53 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -27,9 +27,12 @@ #include "waypoint_base.h" #include "company_base.h" #include "order_backup.h" +#include "cheat_type.h" #include "table/strings.h" +#include "safeguards.h" + /* DestinationID must be at least as large as every these below, because it can * be any of them */ @@ -295,11 +298,13 @@ void OrderList::Initialize(Order *chain, Vehicle *v) this->num_manual_orders = 0; this->num_vehicles = 1; this->timetable_duration = 0; + this->total_duration = 0; for (Order *o = this->first; o != NULL; o = o->next) { ++this->num_orders; if (!o->IsType(OT_IMPLICIT)) ++this->num_manual_orders; - this->timetable_duration += o->wait_time + o->travel_time; + this->timetable_duration += o->GetTimetabledWait() + o->GetTimetabledTravel(); + this->total_duration += o->GetWaitTime() + o->GetTravelTime(); } for (Vehicle *u = this->first_shared->PreviousShared(); u != NULL; u = u->PreviousShared()) { @@ -350,81 +355,29 @@ Order *OrderList::GetOrderAt(int index) const return order; } -/** - * Choose between the two possible next orders so that the given consist can - * load most cargo. - * @param v Head of the consist. - * @param o1 First order to choose from. - * @param o2 Second order to choose from. - * @return Either o1 or o2, depending on the amounts of cargo waiting at the - * vehicle's current station for each. - */ -const Order *OrderList::GetBestLoadableNext(const Vehicle *v, const Order *o2, const Order *o1) const -{ - SmallMap capacities; - v->GetConsistFreeCapacities(capacities); - uint loadable1 = 0; - uint loadable2 = 0; - StationID st1 = o1->GetDestination(); - StationID st2 = o2->GetDestination(); - const Station *cur_station = Station::Get(v->last_station_visited); - for (SmallPair *i = capacities.Begin(); i != capacities.End(); ++i) { - const StationCargoPacketMap *loadable_packets = cur_station->goods[i->first].cargo.Packets(); - uint loadable_cargo = 0; - std::pair p = - loadable_packets->equal_range(st1); - for (StationCargoPacketMap::const_iterator j = p.first; j != p.second; ++j) { - loadable_cargo = (*j)->Count(); - } - loadable1 += min(i->second, loadable_cargo); - - loadable_cargo = 0; - p = loadable_packets->equal_range(st2); - for (StationCargoPacketMap::const_iterator j = p.first; j != p.second; ++j) { - loadable_cargo = (*j)->Count(); - } - loadable2 += min(i->second, loadable_cargo); - } - if (loadable1 == loadable2) return RandomRange(2) == 0 ? o1 : o2; - return loadable1 > loadable2 ? o1 : o2; -} - /** * Get the next order which will make the given vehicle stop at a station - * or refit at a depot if its state doesn't change. - * @param v The vehicle in question. + * or refit at a depot or evaluate a non-trivial condition. * @param next The order to start looking at. * @param hops The number of orders we have already looked at. - * @param is_loading If the vehicle is loading. This triggers a different - * behaviour on conditional orders based on load percentage. - * @return Either an order or NULL if the vehicle won't stop anymore. - * @see OrderList::GetBestLoadableNext + * @return Either of + * \li a station order + * \li a refitting depot order + * \li a non-trivial conditional order + * \li NULL if the vehicle won't stop anymore. */ -const Order *OrderList::GetNextStoppingOrder(const Vehicle *v, const Order *next, uint hops, bool is_loading) const +const Order *OrderList::GetNextDecisionNode(const Order *next, uint hops) const { if (hops > this->GetNumOrders() || next == NULL) return NULL; if (next->IsType(OT_CONDITIONAL)) { - if (is_loading && next->GetConditionVariable() == OCV_LOAD_PERCENTAGE) { - /* If the condition is based on load percentage we can't - * tell what it will do. So we choose randomly. */ - const Order *skip_to = this->GetNextStoppingOrder(v, - this->GetOrderAt(next->GetConditionSkipToOrder()), - hops + 1); - const Order *advance = this->GetNextStoppingOrder(v, - this->GetNext(next), hops + 1); - if (advance == NULL) return skip_to; - if (skip_to == NULL) return advance; - return this->GetBestLoadableNext(v, skip_to, advance); - } - /* Otherwise we're optimistic and expect that the - * condition value won't change until it's evaluated. */ - VehicleOrderID skip_to = ProcessConditionalOrder(next, v); - if (skip_to != INVALID_VEH_ORDER_ID) { - return this->GetNextStoppingOrder(v, this->GetOrderAt(skip_to), - hops + 1); - } - return this->GetNextStoppingOrder(v, this->GetNext(next), hops + 1); + if (next->GetConditionVariable() != OCV_UNCONDITIONALLY) return next; + + /* We can evaluate trivial conditions right away. They're conceptually + * the same as regular order progression. */ + return this->GetNextDecisionNode( + this->GetOrderAt(next->GetConditionSkipToOrder()), + hops + 1); } if (next->IsType(OT_GOTO_DEPOT)) { @@ -433,7 +386,7 @@ const Order *OrderList::GetNextStoppingOrder(const Vehicle *v, const Order *next } if (!next->CanLoadOrUnload()) { - return this->GetNextStoppingOrder(v, this->GetNext(next), hops + 1); + return this->GetNextDecisionNode(this->GetNext(next), hops + 1); } return next; @@ -442,29 +395,53 @@ const Order *OrderList::GetNextStoppingOrder(const Vehicle *v, const Order *next /** * Recursively determine the next deterministic station to stop at. * @param v The vehicle we're looking at. + * @param first Order to start searching at or NULL to start at cur_implicit_order_index + 1. + * @param hops Number of orders we have already looked at. * @return Next stoppping station or INVALID_STATION. * @pre The vehicle is currently loading and v->last_station_visited is meaningful. * @note This function may draw a random number. Don't use it from the GUI. */ -StationID OrderList::GetNextStoppingStation(const Vehicle *v) const +StationIDStack OrderList::GetNextStoppingStation(const Vehicle *v, const Order *first, uint hops) const { - const Order *next = this->GetOrderAt(v->cur_implicit_order_index); - if (next == NULL) { - next = this->GetFirstOrder(); - if (next == NULL) return INVALID_STATION; - } else { - /* GetNext never returns NULL if there is a valid station in the list. - * As the given "next" is already valid and a station in the list, we - * don't have to check for NULL here. - */ - next = this->GetNext(next); - assert(next != NULL); + const Order *next = first; + if (first == NULL) { + next = this->GetOrderAt(v->cur_implicit_order_index); + if (next == NULL) { + next = this->GetFirstOrder(); + if (next == NULL) return INVALID_STATION; + } else { + /* GetNext never returns NULL if there is a valid station in the list. + * As the given "next" is already valid and a station in the list, we + * don't have to check for NULL here. */ + next = this->GetNext(next); + assert(next != NULL); + } } - uint hops = 0; do { - next = this->GetNextStoppingOrder(v, next, ++hops, true); + next = this->GetNextDecisionNode(next, ++hops); + + /* Resolve possibly nested conditionals by estimation. */ + while (next != NULL && next->IsType(OT_CONDITIONAL)) { + /* We return both options of conditional orders. */ + const Order *skip_to = this->GetNextDecisionNode( + this->GetOrderAt(next->GetConditionSkipToOrder()), hops); + const Order *advance = this->GetNextDecisionNode( + this->GetNext(next), hops); + if (advance == NULL || advance == first || skip_to == advance) { + next = (skip_to == first) ? NULL : skip_to; + } else if (skip_to == NULL || skip_to == first) { + next = (advance == first) ? NULL : advance; + } else { + StationIDStack st1 = this->GetNextStoppingStation(v, skip_to, hops); + StationIDStack st2 = this->GetNextStoppingStation(v, advance, hops); + while (!st2.IsEmpty()) st1.Push(st2.Pop()); + return st1; + } + ++hops; + } + /* Don't return a next stop if the vehicle has to unload everything. */ if (next == NULL || ((next->IsType(OT_GOTO_STATION) || next->IsType(OT_IMPLICIT)) && next->GetDestination() == v->last_station_visited && @@ -502,7 +479,8 @@ void OrderList::InsertOrderAt(Order *new_order, int index) } ++this->num_orders; if (!new_order->IsType(OT_IMPLICIT)) ++this->num_manual_orders; - this->timetable_duration += new_order->wait_time + new_order->travel_time; + this->timetable_duration += new_order->GetTimetabledWait() + new_order->GetTimetabledTravel(); + this->total_duration += new_order->GetWaitTime() + new_order->GetTravelTime(); /* We can visit oil rigs and buoys that are not our own. They will be shown in * the list of stations. So, we need to invalidate that window if needed. */ @@ -534,7 +512,8 @@ void OrderList::DeleteOrderAt(int index) } --this->num_orders; if (!to_remove->IsType(OT_IMPLICIT)) --this->num_manual_orders; - this->timetable_duration -= (to_remove->wait_time + to_remove->travel_time); + this->timetable_duration -= (to_remove->GetTimetabledWait() + to_remove->GetTimetabledTravel()); + this->total_duration -= (to_remove->GetWaitTime() + to_remove->GetTravelTime()); delete to_remove; } @@ -629,26 +608,29 @@ void OrderList::DebugCheckSanity() const VehicleOrderID check_num_manual_orders = 0; uint check_num_vehicles = 0; Ticks check_timetable_duration = 0; + Ticks check_total_duration = 0; DEBUG(misc, 6, "Checking OrderList %hu for sanity...", this->index); for (const Order *o = this->first; o != NULL; o = o->next) { ++check_num_orders; if (!o->IsType(OT_IMPLICIT)) ++check_num_manual_orders; - check_timetable_duration += o->wait_time + o->travel_time; + check_timetable_duration += o->GetTimetabledWait() + o->GetTimetabledTravel(); + check_total_duration += o->GetWaitTime() + o->GetTravelTime(); } assert(this->num_orders == check_num_orders); assert(this->num_manual_orders == check_num_manual_orders); assert(this->timetable_duration == check_timetable_duration); + assert(this->total_duration == check_total_duration); for (const Vehicle *v = this->first_shared; v != NULL; v = v->NextShared()) { ++check_num_vehicles; assert(v->orders.list == this); } assert(this->num_vehicles == check_num_vehicles); - DEBUG(misc, 6, "... detected %u orders (%u manual), %u vehicles, %i ticks", + DEBUG(misc, 6, "... detected %u orders (%u manual), %u vehicles, %i timetabled, %i total", (uint)this->num_orders, (uint)this->num_manual_orders, - this->num_vehicles, this->timetable_duration); + this->num_vehicles, this->timetable_duration, this->total_duration); } /** @@ -676,6 +658,7 @@ static void DeleteOrderWarnings(const Vehicle *v) DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_VOID_ORDER); DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY); DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_INVALID_ENTRY); + DeleteVehicleNews(v->index, STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY); } /** @@ -1324,7 +1307,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 Order *order = v->GetOrder(sel_ord); switch (order->GetType()) { case OT_GOTO_STATION: - if (mof == MOF_COND_VARIABLE || mof == MOF_COND_COMPARATOR || mof == MOF_DEPOT_ACTION || mof == MOF_COND_VALUE) return CMD_ERROR; + if (mof != MOF_NON_STOP && mof != MOF_STOP_LOCATION && mof != MOF_UNLOAD && mof != MOF_LOAD) return CMD_ERROR; break; case OT_GOTO_DEPOT: @@ -1358,6 +1341,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 break; case MOF_UNLOAD: + if (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) return CMD_ERROR; if ((data & ~(OUFB_UNLOAD | OUFB_TRANSFER | OUFB_NO_UNLOAD)) != 0) return CMD_ERROR; /* Unload and no-unload are mutual exclusive and so are transfer and no unload. */ if (data != 0 && ((data & (OUFB_UNLOAD | OUFB_TRANSFER)) != 0) == ((data & OUFB_NO_UNLOAD) != 0)) return CMD_ERROR; @@ -1365,6 +1349,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 break; case MOF_LOAD: + if (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) return CMD_ERROR; if (data > OLFB_NO_LOAD || data == 1) return CMD_ERROR; if (data == order->GetLoadType()) return CMD_ERROR; break; @@ -1394,7 +1379,9 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 case MOF_COND_VALUE: switch (order->GetConditionVariable()) { - case OCV_UNCONDITIONALLY: return CMD_ERROR; + case OCV_UNCONDITIONALLY: + case OCV_REQUIRES_SERVICE: + return CMD_ERROR; case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: @@ -1416,7 +1403,11 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 switch (mof) { case MOF_NON_STOP: order->SetNonStopType((OrderNonStopFlags)data); - if (data & ONSF_NO_STOP_AT_DESTINATION_STATION) order->SetRefit(CT_NO_REFIT); + if (data & ONSF_NO_STOP_AT_DESTINATION_STATION) { + order->SetRefit(CT_NO_REFIT); + order->SetLoadType(OLF_LOAD_IF_POSSIBLE); + order->SetUnloadType(OUF_UNLOAD_IF_POSSIBLE); + } break; case MOF_STOP_LOCATION: @@ -1469,6 +1460,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 case OCV_REQUIRES_SERVICE: if (occ != OCC_IS_TRUE && occ != OCC_IS_FALSE) order->SetConditionComparator(OCC_IS_TRUE); + order->SetConditionValue(0); break; case OCV_LOAD_PERCENTAGE: @@ -1780,17 +1772,16 @@ void CheckOrders(const Vehicle *v) /* Only check every 20 days, so that we don't flood the message log */ if (v->owner == _local_company && v->day_counter % 20 == 0) { - int n_st, problem_type = -1; const Order *order; - int message = 0; + StringID message = INVALID_STRING_ID; /* Check the order list */ - n_st = 0; + int n_st = 0; FOR_VEHICLE_ORDERS(v, order) { /* Dummy order? */ if (order->IsType(OT_DUMMY)) { - problem_type = 1; + message = STR_NEWS_VEHICLE_HAS_VOID_ORDER; break; } /* Does station have a load-bay for this vehicle? */ @@ -1798,7 +1789,16 @@ void CheckOrders(const Vehicle *v) const Station *st = Station::Get(order->GetDestination()); n_st++; - if (!CanVehicleUseStation(v, st)) problem_type = 3; + if (!CanVehicleUseStation(v, st)) { + message = STR_NEWS_VEHICLE_HAS_INVALID_ENTRY; + } else if (v->type == VEH_AIRCRAFT && + (AircraftVehInfo(v->engine_type)->subtype & AIR_FAST) && + (st->airport.GetFTA()->flags & AirportFTAClass::SHORT_STRIP) && + _settings_game.vehicle.plane_crashes != 0 && + !_cheats.no_jetcrash.value && + message == INVALID_STRING_ID) { + message = STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY; + } } } @@ -1807,22 +1807,19 @@ void CheckOrders(const Vehicle *v) const Order *last = v->GetLastOrder(); if (v->orders.list->GetFirstOrder()->Equals(*last)) { - problem_type = 2; + message = STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY; } } /* Do we only have 1 station in our order list? */ - if (n_st < 2 && problem_type == -1) problem_type = 0; + if (n_st < 2 && message == INVALID_STRING_ID) message = STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS; #ifndef NDEBUG if (v->orders.list != NULL) v->orders.list->DebugCheckSanity(); #endif /* We don't have a problem */ - if (problem_type < 0) return; - - message = STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS + problem_type; - //DEBUG(misc, 3, "Triggered News Item for vehicle %d", v->index); + if (message == INVALID_STRING_ID) return; SetDParam(0, v->index); AddVehicleAdviceNewsItem(message, v->index); @@ -1873,7 +1870,19 @@ restart: break; } + /* Clear wait time */ + v->orders.list->UpdateTotalDuration(-order->GetWaitTime()); + if (order->IsWaitTimetabled()) { + v->orders.list->UpdateTimetableDuration(-order->GetTimetabledWait()); + order->SetWaitTimetabled(false); + } + order->SetWaitTime(0); + + /* Clear order, preserving travel time */ + bool travel_timetabled = order->IsTravelTimetabled(); order->MakeDummy(); + order->SetTravelTimetabled(travel_timetabled); + for (const Vehicle *w = v->FirstShared(); w != NULL; w = w->NextShared()) { /* In GUI, simulate by removing the order and adding it back */ InvalidateVehicleOrder(w, id | (INVALID_VEH_ORDER_ID << 8)); @@ -2098,7 +2107,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool UpdateVehicleTimetable(v, false); v->cur_implicit_order_index = v->cur_real_order_index = next_order; v->UpdateRealOrderIndex(); - v->current_order_time += v->GetOrder(v->cur_real_order_index)->travel_time; + v->current_order_time += v->GetOrder(v->cur_real_order_index)->GetTimetabledTravel(); /* Disable creation of implicit orders. * When inserting them we do not know that we would have to make the conditional orders point to them. */ diff --git a/src/order_gui.cpp b/src/order_gui.cpp index 8f0ef7a2c3..d4feae35ca 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -32,6 +32,8 @@ #include "widgets/order_widget.h" +#include "safeguards.h" + /** Order load types that could be given to station orders. */ static const StringID _station_load_types[][5][5] = { @@ -264,9 +266,9 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int if (timetable) { SetDParam(3, STR_EMPTY); - if (order->wait_time > 0) { - SetDParam(5, STR_TIMETABLE_STAY_FOR); - SetTimetableParams(6, 7, order->wait_time); + if (order->GetWaitTime() > 0) { + SetDParam(5, order->IsWaitTimetabled() ? STR_TIMETABLE_STAY_FOR : STR_TIMETABLE_STAY_FOR_ESTIMATED); + SetTimetableParams(6, 7, order->GetWaitTime()); } } else { SetDParam(3, (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) ? STR_EMPTY : _station_load_types[order->IsRefit()][unload][load]); @@ -332,9 +334,9 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int SetDParam(4, value); } - if (timetable && order->wait_time > 0) { - SetDParam(5, STR_TIMETABLE_AND_TRAVEL_FOR); - SetTimetableParams(6, 7, order->wait_time); + if (timetable && order->GetWaitTime() > 0) { + SetDParam(5, order->IsWaitTimetabled() ? STR_TIMETABLE_AND_TRAVEL_FOR : STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED); + SetTimetableParams(6, 7, order->GetWaitTime()); } else { SetDParam(5, STR_EMPTY); } @@ -346,67 +348,42 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int DrawString(rtl ? left : middle, rtl ? middle : right, y, STR_ORDER_TEXT, colour); } - +/** + * Get the order command a vehicle can do in a given tile. + * @param v Vehicle involved. + * @param tile Tile being queried. + * @return The order associated to vehicle v in given tile (or empty order if vehicle can do nothing in the tile). + */ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) { - Order order; - order.next = NULL; + /* Hack-ish; unpack order 0, so everything gets initialised with either zero + * or a suitable default value for the variable. Then also override the index + * as it is not coming from a pool, so would be initialised. */ + Order order(0); order.index = 0; /* check depot first */ - switch (GetTileType(tile)) { - case MP_RAILWAY: - if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_company)) { - if (IsRailDepot(tile)) { - order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, - _settings_client.gui.new_nonstop ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); - if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - return order; - } - } - break; + if (IsDepotTypeTile(tile, (TransportType)(uint)v->type) && IsTileOwner(tile, _local_company)) { + order.MakeGoToDepot(v->type == VEH_AIRCRAFT ? GetStationIndex(tile) : GetDepotIndex(tile), + ODTFB_PART_OF_ORDERS, + (_settings_client.gui.new_nonstop && v->IsGroundVehicle()) ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); - case MP_ROAD: - if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_company)) { - order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, - _settings_client.gui.new_nonstop ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); - if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - return order; - } - break; + if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - case MP_STATION: - if (v->type != VEH_AIRCRAFT) break; - if (IsHangar(tile) && IsTileOwner(tile, _local_company)) { - order.MakeGoToDepot(GetStationIndex(tile), ODTFB_PART_OF_ORDERS, ONSF_STOP_EVERYWHERE); - if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - return order; - } - break; - - case MP_WATER: - if (v->type != VEH_SHIP) break; - if (IsShipDepot(tile) && IsTileOwner(tile, _local_company)) { - order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, ONSF_STOP_EVERYWHERE); - if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - return order; - } - break; - - default: - break; + return order; } - /* check waypoint */ + /* check rail waypoint */ if (IsRailWaypointTile(tile) && v->type == VEH_TRAIN && IsTileOwner(tile, _local_company)) { - order.MakeGoToWaypoint(Waypoint::GetByTile(tile)->index); + order.MakeGoToWaypoint(GetStationIndex(tile)); if (_settings_client.gui.new_nonstop != _ctrl_pressed) order.SetNonStopType(ONSF_NO_STOP_AT_ANY_STATION); return order; } - if ((IsBuoyTile(tile) && v->type == VEH_SHIP) || (IsRailWaypointTile(tile) && v->type == VEH_TRAIN)) { + /* check buoy (no ownership) */ + if (IsBuoyTile(tile) && v->type == VEH_SHIP) { order.MakeGoToWaypoint(GetStationIndex(tile)); return order; } @@ -496,9 +473,11 @@ struct OrdersWindow : public Window { private: /** Under what reason are we using the PlaceObject functionality? */ enum OrderPlaceObjectState { + OPOS_NONE, OPOS_GOTO, OPOS_CONDITIONAL, OPOS_SHARE, + OPOS_END, }; /** Displayed planes of the #NWID_SELECTION widgets. */ @@ -571,16 +550,18 @@ private: /** * Handle the click on the goto button. */ - void OrderClick_Goto() + void OrderClick_Goto(OrderPlaceObjectState type) { + assert(type > OPOS_NONE && type < OPOS_END); + + static const HighLightStyle goto_place_style[OPOS_END - 1] = { + HT_RECT | HT_VEHICLE, // OPOS_GOTO + HT_NONE, // OPOS_CONDITIONAL + HT_VEHICLE, // OPOS_SHARE + }; + SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, goto_place_style[type - 1], this); + this->goto_type = type; this->SetWidgetDirty(WID_O_GOTO); - this->ToggleWidgetLoweredState(WID_O_GOTO); - if (this->IsWidgetLowered(WID_O_GOTO)) { - SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_RECT | HT_VEHICLE, this); - this->goto_type = OPOS_GOTO; - } else { - ResetObjectToPlace(); - } } /** @@ -638,28 +619,6 @@ private: DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), order.Pack(), CMD_INSERT_ORDER | CMD_MSG(STR_ERROR_CAN_T_INSERT_NEW_ORDER)); } - /** - * Handle the click on the conditional order button. - */ - void OrderClick_Conditional() - { - this->LowerWidget(WID_O_GOTO); - this->SetWidgetDirty(WID_O_GOTO); - SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_NONE, this); - this->goto_type = OPOS_CONDITIONAL; - } - - /** - * Handle the click on the share button. - */ - void OrderClick_Share() - { - this->LowerWidget(WID_O_GOTO); - this->SetWidgetDirty(WID_O_GOTO); - SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_VEHICLE, this); - this->goto_type = OPOS_SHARE; - } - /** * Handle the click on the unload button. */ @@ -818,6 +777,7 @@ public: this->selected_order = -1; this->order_over = INVALID_VEH_ORDER_ID; + this->goto_type = OPOS_NONE; this->owner = v->owner; this->UpdateAutoRefitState(); @@ -830,7 +790,7 @@ public: if (order->IsType(OT_GOTO_STATION)) station_orders++; } - if (station_orders < 2) this->OrderClick_Goto(); + if (station_orders < 2) this->OrderClick_Goto(OPOS_GOTO); } this->OnInvalidateData(VIWD_MODIFY_ORDERS); } @@ -1077,8 +1037,8 @@ public: } OrderConditionVariable ocv = order->GetConditionVariable(); /* Set the strings for the dropdown boxes. */ - this->GetWidget(WID_O_COND_VARIABLE)->widget_data = STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + (order == NULL ? 0 : ocv); - this->GetWidget(WID_O_COND_COMPARATOR)->widget_data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()]; + this->GetWidget(WID_O_COND_VARIABLE)->widget_data = STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + ocv; + this->GetWidget(WID_O_COND_COMPARATOR)->widget_data = _order_conditional_condition[order->GetConditionComparator()]; this->SetWidgetDisabledState(WID_O_COND_COMPARATOR, ocv == OCV_UNCONDITIONALLY); this->SetWidgetDisabledState(WID_O_COND_VALUE, ocv == OCV_REQUIRES_SERVICE || ocv == OCV_UNCONDITIONALLY); break; @@ -1109,7 +1069,11 @@ public: virtual void OnPaint() { - if (this->vehicle->owner != _local_company) this->selected_order = -1; // Disable selection any selected row at a competitor order window. + if (this->vehicle->owner != _local_company) { + this->selected_order = -1; // Disable selection any selected row at a competitor order window. + } else { + this->SetWidgetLoweredState(WID_O_GOTO, this->goto_type != OPOS_NONE); + } this->DrawWidgets(); } @@ -1197,7 +1161,6 @@ public: switch (widget) { case WID_O_ORDER_LIST: { if (this->goto_type == OPOS_CONDITIONAL) { - this->goto_type = OPOS_GOTO; VehicleOrderID order_id = this->GetOrderFromPt(_cursor.pos.y - this->top); if (order_id != INVALID_VEH_ORDER_ID) { Order order; @@ -1270,9 +1233,21 @@ public: case WID_O_GOTO: if (this->GetWidget(widget)->ButtonHit(pt)) { - this->OrderClick_Goto(); + if (this->goto_type != OPOS_NONE) { + ResetObjectToPlace(); + } else { + this->OrderClick_Goto(OPOS_GOTO); + } } else { - ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, 0, WID_O_GOTO, 0, 0); + int sel; + switch (this->goto_type) { + case OPOS_NONE: sel = -1; break; + case OPOS_GOTO: sel = 0; break; + case OPOS_CONDITIONAL: sel = 2; break; + case OPOS_SHARE: sel = 3; break; + default: NOT_REACHED(); + } + ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, sel, WID_O_GOTO, 0, 0); } break; @@ -1319,7 +1294,7 @@ public: case WID_O_COND_VARIABLE: { DropDownList *list = new DropDownList(); for (uint i = 0; i < lengthof(_order_conditional_variable); i++) { - list->push_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + _order_conditional_variable[i], _order_conditional_variable[i], false)); + *list->Append() = new DropDownListStringItem(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + _order_conditional_variable[i], _order_conditional_variable[i], false); } ShowDropDownList(this, list, this->vehicle->GetOrder(this->OrderGetSel())->GetConditionVariable(), WID_O_COND_VARIABLE); break; @@ -1386,10 +1361,10 @@ public: case WID_O_GOTO: switch (index) { - case 0: this->OrderClick_Goto(); break; + case 0: this->OrderClick_Goto(OPOS_GOTO); break; case 1: this->OrderClick_NearestDepot(); break; - case 2: this->OrderClick_Conditional(); break; - case 3: this->OrderClick_Share(); break; + case 2: this->OrderClick_Goto(OPOS_CONDITIONAL); break; + case 3: this->OrderClick_Goto(OPOS_SHARE); break; default: NOT_REACHED(); } break; @@ -1450,17 +1425,17 @@ public: if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED; switch (hotkey) { - case OHK_SKIP: this->OrderClick_Skip(); break; - case OHK_DELETE: this->OrderClick_Delete(); break; - case OHK_GOTO: this->OrderClick_Goto(); break; - case OHK_NONSTOP: this->OrderClick_Nonstop(-1); break; - case OHK_FULLLOAD: this->OrderClick_FullLoad(-1); break; - case OHK_UNLOAD: this->OrderClick_Unload(-1); break; - case OHK_NEAREST_DEPOT: this->OrderClick_NearestDepot(); break; - case OHK_ALWAYS_SERVICE: this->OrderClick_Service(-1); break; - case OHK_TRANSFER: this->OrderHotkey_Transfer(); break; - case OHK_NO_UNLOAD: this->OrderHotkey_NoUnload(); break; - case OHK_NO_LOAD: this->OrderHotkey_NoLoad(); break; + case OHK_SKIP: this->OrderClick_Skip(); break; + case OHK_DELETE: this->OrderClick_Delete(); break; + case OHK_GOTO: this->OrderClick_Goto(OPOS_GOTO); break; + case OHK_NONSTOP: this->OrderClick_Nonstop(-1); break; + case OHK_FULLLOAD: this->OrderClick_FullLoad(-1); break; + case OHK_UNLOAD: this->OrderClick_Unload(-1); break; + case OHK_NEAREST_DEPOT: this->OrderClick_NearestDepot(); break; + case OHK_ALWAYS_SERVICE: this->OrderClick_Service(-1); break; + case OHK_TRANSFER: this->OrderHotkey_Transfer(); break; + case OHK_NO_UNLOAD: this->OrderHotkey_NoUnload(); break; + case OHK_NO_LOAD: this->OrderHotkey_NoLoad(); break; default: return ES_NOT_HANDLED; } return ES_HANDLED; @@ -1499,7 +1474,7 @@ public: virtual void OnPlaceObjectAbort() { - this->RaiseWidget(WID_O_GOTO); + this->goto_type = OPOS_NONE; this->SetWidgetDirty(WID_O_GOTO); /* Remove drag highlighting if it exists. */ diff --git a/src/order_type.h b/src/order_type.h index 947f00da86..d3a771ce8b 100644 --- a/src/order_type.h +++ b/src/order_type.h @@ -27,6 +27,12 @@ static const VehicleOrderID MAX_VEH_ORDER_ID = INVALID_VEH_ORDER_ID - 1; /** Invalid order (sentinel) */ static const OrderID INVALID_ORDER = 0xFFFF; +/** + * Maximum number of orders in implicit-only lists before we start searching + * harder for duplicates. + */ +static const uint IMPLICIT_ORDER_ONLY_CAP = 32; + /** Order types */ enum OrderType { OT_BEGIN = 0, diff --git a/src/os/macosx/crashlog_osx.cpp b/src/os/macosx/crashlog_osx.cpp index 109b3e5fe2..ad258bbc91 100644 --- a/src/os/macosx/crashlog_osx.cpp +++ b/src/os/macosx/crashlog_osx.cpp @@ -22,6 +22,8 @@ #include #include +#include "../../safeguards.h" + /* Macro testing a stack address for valid alignment. */ #if defined(__i386__) @@ -31,7 +33,7 @@ #endif /* printf format specification for 32/64-bit addresses. */ -#if __LP64__ +#ifdef __LP64__ #define PRINTF_PTR "0x%016lx" #else #define PRINTF_PTR "0x%08lx" diff --git a/src/os/macosx/macos.mm b/src/os/macosx/macos.mm index 1b1a1d5a7a..8d34cda58a 100644 --- a/src/os/macosx/macos.mm +++ b/src/os/macosx/macos.mm @@ -155,11 +155,11 @@ const char *GetCurrentLocale(const char *) /** * Return the contents of the clipboard (COCOA). * - * @param buffer Clipboard content.. - * @param buff_len Length of the clipboard content.. + * @param buffer Clipboard content. + * @param last The pointer to the last element of the destination buffer * @return Whether clipboard is empty or not. */ -bool GetClipboardContents(char *buffer, size_t buff_len) +bool GetClipboardContents(char *buffer, const char *last) { NSPasteboard *pb = [ NSPasteboard generalPasteboard ]; NSArray *types = [ NSArray arrayWithObject:NSStringPboardType ]; @@ -171,7 +171,7 @@ bool GetClipboardContents(char *buffer, size_t buff_len) NSString *string = [ pb stringForType:NSStringPboardType ]; if (string == nil || [ string length ] == 0) return false; - ttd_strlcpy(buffer, [ string UTF8String ], buff_len); + strecpy(buffer, [ string UTF8String ], last); return true; } diff --git a/src/os/macosx/osx_stdafx.h b/src/os/macosx/osx_stdafx.h index 3b3e3fbde8..35b3f434a1 100644 --- a/src/os/macosx/osx_stdafx.h +++ b/src/os/macosx/osx_stdafx.h @@ -46,24 +46,14 @@ #define __STDC_LIMIT_MACROS #include -/* We need to include this first as that "depends" on the compiler's setting - * of __LP64__. So before we define __LP64__ so it can be used. */ -#include -#include - /* Some gcc versions include assert.h via this header. As this would interfere * with our own assert redefinition, include this header first. */ -#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) +#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) # include #endif -/* __LP64__ only exists in 10.5 and higher */ -#if defined(__APPLE__) && !defined(__LP64__) -# define __LP64__ 0 -#endif - /* Check for mismatching 'architectures' */ -#if !defined(STRGEN) && !defined(SETTINGSGEN) && ((__LP64__ && !defined(_SQ64)) || (!__LP64__ && defined(_SQ64))) +#if !defined(STRGEN) && !defined(SETTINGSGEN) && ((defined(__LP64__) && !defined(_SQ64)) || (!defined(__LP64__) && defined(_SQ64))) # error "Compiling 64 bits without _SQ64 set! (or vice versa)" #endif @@ -99,7 +89,7 @@ /* NSInteger and NSUInteger are part of 10.5 and higher. */ #ifndef NSInteger -#if __LP64__ +#ifdef __LP64__ typedef long NSInteger; typedef unsigned long NSUInteger; #else @@ -109,7 +99,7 @@ typedef unsigned int NSUInteger; #endif /* NSInteger */ #ifndef CGFLOAT_DEFINED -#if __LP64__ +#ifdef __LP64__ typedef double CGFloat; #else typedef float CGFloat; diff --git a/src/os/macosx/splash.cpp b/src/os/macosx/splash.cpp index 79bb0a022b..eadb785101 100644 --- a/src/os/macosx/splash.cpp +++ b/src/os/macosx/splash.cpp @@ -23,6 +23,8 @@ #include +#include "../../safeguards.h" + /** * Handle pnglib error. * @@ -122,7 +124,7 @@ void DisplaySplashImage() uint xoff = (_screen.width - width) / 2; uint yoff = (_screen.height - height) / 2; - switch (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth()) { + switch (BlitterFactory::GetCurrentBlitter()->GetScreenDepth()) { case 8: { uint8 *dst_ptr = (uint8 *)_screen.dst_ptr; /* Initialize buffer */ diff --git a/src/os/os2/os2.cpp b/src/os/os2/os2.cpp index 82ba19924f..386cc4dbb7 100644 --- a/src/os/os2/os2.cpp +++ b/src/os/os2/os2.cpp @@ -30,6 +30,8 @@ #include #endif +#include "../../safeguards.h" + #define INCL_WIN #define INCL_WINCLIPBOARD @@ -172,10 +174,13 @@ int CDECL main(int argc, char *argv[]) { SetRandomSeed(time(NULL)); + /* Make sure our arguments contain only valid UTF-8 characters. */ + for (int i = 0; i < argc; i++) ValidateString(argv[i]); + return openttd_main(argc, argv); } -bool GetClipboardContents(char *buffer, size_t buff_len) +bool GetClipboardContents(char *buffer, const char *last) { /* XXX -- Currently no clipboard support implemented with GCC */ #ifndef __INNOTEK_LIBC__ @@ -187,7 +192,7 @@ bool GetClipboardContents(char *buffer, size_t buff_len) if (text != NULL) { - ttd_strlcpy(buffer, text, buff_len); + strecpy(buffer, text, last); WinCloseClipbrd(hab); return true; } @@ -215,3 +220,9 @@ uint GetCPUCoreCount() { return 1; } + +void OSOpenBrowser(const char *url) +{ + // stub only + DEBUG(misc, 0, "Failed to open url: %s", url); +} diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp index 0960720d1a..47de057f7e 100644 --- a/src/os/unix/crashlog_unix.cpp +++ b/src/os/unix/crashlog_unix.cpp @@ -31,6 +31,8 @@ #include #endif +#include "../../safeguards.h" + /** * Unix implementation for the crash logger. */ diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp index 09bf6c6e70..24dedb2ee1 100644 --- a/src/os/unix/unix.cpp +++ b/src/os/unix/unix.cpp @@ -15,6 +15,7 @@ #include "../../crashlog.h" #include "../../core/random_func.hpp" #include "../../debug.h" +#include "../../string_func.h" #include @@ -63,6 +64,8 @@ ULONG __stack = (1024*1024)*2; // maybe not that much is needed actually ;) #endif #endif +#include "../../safeguards.h" + bool FiosIsRoot(const char *path) { #if !defined(__MORPHOS__) && !defined(__AMIGAOS__) @@ -105,13 +108,13 @@ bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb #if defined(__MORPHOS__) || defined(__AMIGAOS__) /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ if (FiosIsRoot(path)) { - res = snprintf(filename, lengthof(filename), "%s:%s", path, ent->d_name); + res = seprintf(filename, lastof(filename), "%s:%s", path, ent->d_name); } else // XXX - only next line! #else assert(path[strlen(path) - 1] == PATHSEPCHAR); if (strlen(path) > 2) assert(path[strlen(path) - 2] != PATHSEPCHAR); #endif - res = snprintf(filename, lengthof(filename), "%s%s", path, ent->d_name); + res = seprintf(filename, lastof(filename), "%s%s", path, ent->d_name); /* Could we fully concatenate the path and filename? */ if (res >= (int)lengthof(filename) || res < 0) return false; @@ -256,7 +259,8 @@ void cocoaReleaseAutoreleasePool(); int CDECL main(int argc, char *argv[]) { - int ret; + /* Make sure our arguments contain only valid UTF-8 characters. */ + for (int i = 0; i < argc; i++) ValidateString(argv[i]); #ifdef WITH_COCOA cocoaSetupAutoreleasePool(); @@ -272,7 +276,7 @@ int CDECL main(int argc, char *argv[]) signal(SIGPIPE, SIG_IGN); - ret = openttd_main(argc, argv); + int ret = openttd_main(argc, argv); #ifdef WITH_COCOA cocoaReleaseAutoreleasePool(); @@ -282,7 +286,7 @@ int CDECL main(int argc, char *argv[]) } #ifndef WITH_COCOA -bool GetClipboardContents(char *buffer, size_t buff_len) +bool GetClipboardContents(char *buffer, const char *last) { return false; } @@ -337,9 +341,18 @@ uint GetCPUCoreCount() int ncpu = 0; size_t len = sizeof(ncpu); +#ifdef OPENBSD + int name[2]; + name[0] = CTL_HW; + name[1] = HW_NCPU; + if (sysctl(name, 2, &ncpu, &len, NULL, 0) < 0) { + ncpu = 0; + } +#else if (sysctlbyname("hw.availcpu", &ncpu, &len, NULL, 0) < 0) { sysctlbyname("hw.ncpu", &ncpu, &len, NULL, 0); } +#endif /* #ifdef OPENBSD */ if (ncpu > 0) count = ncpu; #elif defined(_SC_NPROCESSORS_ONLN) @@ -356,10 +369,10 @@ void OSOpenBrowser(const char *url) if (child_pid != 0) return; const char *args[3]; - args[0] = "/usr/bin/xdg-open"; + args[0] = "xdg-open"; args[1] = url; args[2] = NULL; - execv(args[0], const_cast(args)); + execvp(args[0], const_cast(args)); DEBUG(misc, 0, "Failed to open url: %s", url); exit(0); } diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp index 41f83b60ba..6e28cdba62 100644 --- a/src/os/windows/crashlog_win.cpp +++ b/src/os/windows/crashlog_win.cpp @@ -24,6 +24,8 @@ #include #include +#include "../../safeguards.h" + static const uint MAX_SYMBOL_LEN = 512; static const uint MAX_FRAMES = 64; @@ -521,7 +523,7 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep) /* Close any possible log files */ CloseConsoleLogIfActive(); - if ((_video_driver == NULL || _video_driver->HasGUI()) && _safe_esp != NULL) { + if ((VideoDriver::GetInstance() == NULL || VideoDriver::GetInstance()->HasGUI()) && _safe_esp != NULL) { #ifdef _M_AMD64 ep->ContextRecord->Rip = (DWORD64)ShowCrashlogWindow; ep->ContextRecord->Rsp = (DWORD64)_safe_esp; @@ -611,6 +613,10 @@ static void SetWndSize(HWND wnd, int mode) } } +/* When TCHAR is char, then _sntprintf becomes snprintf. When TCHAR is wchar it doesn't. Likewise for strcat. */ +#undef snprintf +#undef strcat + static INT_PTR CALLBACK CrashDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { diff --git a/src/os/windows/ottdres.rc.in b/src/os/windows/ottdres.rc.in index c8c2d970c9..8384b91e7c 100644 --- a/src/os/windows/ottdres.rc.in +++ b/src/os/windows/ottdres.rc.in @@ -79,8 +79,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,4,0,!!REVISION!! - PRODUCTVERSION 1,4,0,!!REVISION!! + FILEVERSION 1,6,0,!!REVISION!! + PRODUCTVERSION 1,6,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-2013. All Rights Reserved.\0" + VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2015. All Rights Reserved.\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "openttd.exe\0" VALUE "PrivateBuild", "\0" diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp index d7ea4ab356..f69f01f6cb 100644 --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -19,7 +19,7 @@ #include #include #include /* SHGetFolderPath */ -#include +#include #include "win32.h" #include "../../core/alloc_func.hpp" #include "../../openttd.h" @@ -29,6 +29,11 @@ #include #include +/* Due to TCHAR, strncat and strncpy have to remain (for a while). */ +#include "../../safeguards.h" +#undef strncat +#undef strncpy + static bool _has_console; static bool _cursor_disable = true; static bool _cursor_visible = true; @@ -210,7 +215,7 @@ void FiosGetDrives() FiosItem *fios = _fios_items.Append(); fios->type = FIOS_TYPE_DRIVE; fios->mtime = 0; - snprintf(fios->name, lengthof(fios->name), PATHSEP ""); + seprintf(fios->name, lastof(fios->name), PATHSEP ""); strecpy(fios->title, fios->name, lastof(fios->title)); #else TCHAR drives[256]; @@ -221,7 +226,7 @@ void FiosGetDrives() FiosItem *fios = _fios_items.Append(); fios->type = FIOS_TYPE_DRIVE; fios->mtime = 0; - snprintf(fios->name, lengthof(fios->name), "%c:", s[0] & 0xFF); + seprintf(fios->name, lastof(fios->name), "%c:", s[0] & 0xFF); strecpy(fios->title, fios->name, lastof(fios->title)); while (*s++ != '\0') { /* Nothing */ } } @@ -433,7 +438,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi /* Convert the command line to UTF-8. We need a dedicated buffer * for this because argv[] points into this buffer and this needs to * be available between subsequent calls to FS2OTTD(). */ - char *cmdline = strdup(FS2OTTD(GetCommandLine())); + char *cmdline = stredup(FS2OTTD(GetCommandLine())); #if defined(_DEBUG) CreateConsole(); @@ -448,6 +453,9 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi argc = ParseCommandLine(cmdline, argv, lengthof(argv)); + /* Make sure our arguments contain only valid UTF-8 characters. */ + for (int i = 0; i < argc; i++) ValidateString(argv[i]); + openttd_main(argc, argv); free(cmdline); return 0; @@ -493,20 +501,20 @@ void DetermineBasePaths(const char *exe) #ifdef WITH_PERSONAL_DIR if (SUCCEEDED(OTTDSHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, path))) { strecpy(tmp, FS2OTTD(path), lastof(tmp)); - AppendPathSeparator(tmp, MAX_PATH); - ttd_strlcat(tmp, PERSONAL_DIR, MAX_PATH); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_PERSONAL_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + strecat(tmp, PERSONAL_DIR, lastof(tmp)); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_PERSONAL_DIR] = stredup(tmp); } else { _searchpaths[SP_PERSONAL_DIR] = NULL; } if (SUCCEEDED(OTTDSHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, path))) { strecpy(tmp, FS2OTTD(path), lastof(tmp)); - AppendPathSeparator(tmp, MAX_PATH); - ttd_strlcat(tmp, PERSONAL_DIR, MAX_PATH); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_SHARED_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + strecat(tmp, PERSONAL_DIR, lastof(tmp)); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_SHARED_DIR] = stredup(tmp); } else { _searchpaths[SP_SHARED_DIR] = NULL; } @@ -517,8 +525,8 @@ void DetermineBasePaths(const char *exe) /* Get the path to working directory of OpenTTD */ getcwd(tmp, lengthof(tmp)); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_WORKING_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_WORKING_DIR] = stredup(tmp); if (!GetModuleFileName(NULL, path, lengthof(path))) { DEBUG(misc, 0, "GetModuleFileName failed (%lu)\n", GetLastError()); @@ -533,7 +541,7 @@ void DetermineBasePaths(const char *exe) strecpy(tmp, convert_from_fs(exec_dir, tmp, lengthof(tmp)), lastof(tmp)); char *s = strrchr(tmp, PATHSEPCHAR); *(s + 1) = '\0'; - _searchpaths[SP_BINARY_DIR] = strdup(tmp); + _searchpaths[SP_BINARY_DIR] = stredup(tmp); } } @@ -542,7 +550,7 @@ void DetermineBasePaths(const char *exe) } -bool GetClipboardContents(char *buffer, size_t buff_len) +bool GetClipboardContents(char *buffer, const char *last) { HGLOBAL cbuf; const char *ptr; @@ -552,7 +560,7 @@ bool GetClipboardContents(char *buffer, size_t buff_len) cbuf = GetClipboardData(CF_UNICODETEXT); ptr = (const char*)GlobalLock(cbuf); - int out_len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)ptr, -1, buffer, (int)buff_len, NULL, NULL); + int out_len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)ptr, -1, buffer, (last - buffer) + 1, NULL, NULL); GlobalUnlock(cbuf); CloseClipboard(); @@ -563,7 +571,7 @@ bool GetClipboardContents(char *buffer, size_t buff_len) cbuf = GetClipboardData(CF_TEXT); ptr = (const char*)GlobalLock(cbuf); - ttd_strlcpy(buffer, FS2OTTD(ptr), buff_len); + strecpy(buffer, FS2OTTD(ptr), last); GlobalUnlock(cbuf); CloseClipboard(); diff --git a/src/os/windows/win32.h b/src/os/windows/win32.h index 45bcff10ab..4e53879cf0 100644 --- a/src/os/windows/win32.h +++ b/src/os/windows/win32.h @@ -35,7 +35,7 @@ TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen, bool con HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR); -#if defined(__MINGW32__) +#if defined(__MINGW32__) && !defined(__MINGW64__) #define SHGFP_TYPE_CURRENT 0 #endif /* __MINGW32__ */ diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp index 2516c4dbf6..974e465f43 100644 --- a/src/osk_gui.cpp +++ b/src/osk_gui.cpp @@ -23,6 +23,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + char _keyboard_opt[2][OSK_KEYBOARD_ENTRIES * 4 + 1]; static WChar _keyboard[2][OSK_KEYBOARD_ENTRIES]; @@ -57,7 +59,7 @@ struct OskWindow : public Window { this->querystrings[WID_OSK_TEXT] = this->qs; /* make a copy in case we need to reset later */ - this->orig_str_buf = strdup(this->qs->text.buf); + this->orig_str_buf = stredup(this->qs->text.buf); this->InitNested(0); this->SetFocusedWidget(WID_OSK_TEXT); @@ -206,7 +208,7 @@ struct OskWindow : public Window { virtual void OnFocusLost() { - _video_driver->EditBoxLostFocus(); + VideoDriver::GetInstance()->EditBoxLostFocus(); delete this; } }; @@ -428,7 +430,7 @@ void UpdateOSKOriginalText(const Window *parent, int button) if (osk == NULL || osk->parent != parent || osk->text_btn != button) return; free(osk->orig_str_buf); - osk->orig_str_buf = strdup(osk->qs->text.buf); + osk->orig_str_buf = stredup(osk->qs->text.buf); osk->SetDirty(); } diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp index 3fdc3f1f83..a16512bc06 100644 --- a/src/pathfinder/follow_track.hpp +++ b/src/pathfinder/follow_track.hpp @@ -77,6 +77,8 @@ struct CFollowTrackT m_veh_owner = o; m_pPerf = pPerf; /* don't worry, all is inlined so compiler should remove unnecessary initializations */ + m_old_tile = INVALID_TILE; + m_old_td = INVALID_TRACKDIR; m_new_tile = INVALID_TILE; m_new_td_bits = TRACKDIR_BIT_NONE; m_exitdir = INVALID_DIAGDIR; @@ -121,16 +123,15 @@ struct CFollowTrackT m_old_tile = old_tile; m_old_td = old_td; m_err = EC_NONE; - assert(((TrackStatusToTrackdirBits(GetTileTrackStatus(m_old_tile, TT(), IsRoadTT() && m_veh != NULL ? RoadVehicle::From(m_veh)->compatible_roadtypes : 0)) & TrackdirToTrackdirBits(m_old_td)) != 0) || + assert(((TrackStatusToTrackdirBits(GetTileTrackStatus(m_old_tile, TT(), IsRoadTT() ? RoadVehicle::From(m_veh)->compatible_roadtypes : 0)) & TrackdirToTrackdirBits(m_old_td)) != 0) || (IsTram() && GetSingleTramBit(m_old_tile) != INVALID_DIAGDIR)); // Disable the assertion for single tram bits m_exitdir = TrackdirToExitdir(m_old_td); if (ForcedReverse()) return true; if (!CanExitOldTile()) return false; FollowTileExit(); if (!QueryNewTileTrackStatus()) return TryReverse(); - if (!CanEnterNewTile()) return false; m_new_td_bits &= DiagdirReachesTrackdirs(m_exitdir); - if (m_new_td_bits == TRACKDIR_BIT_NONE) { + if (m_new_td_bits == TRACKDIR_BIT_NONE || !CanEnterNewTile()) { /* In case we can't enter the next tile, but are * a normal road vehicle, then we can actually * try to reverse as this is the end of the road. @@ -233,7 +234,7 @@ protected: if (IsRailTT() && IsPlainRailTile(m_new_tile)) { m_new_td_bits = (TrackdirBits)(GetTrackBits(m_new_tile) * 0x101); } else { - m_new_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(m_new_tile, TT(), IsRoadTT() && m_veh != NULL ? RoadVehicle::From(m_veh)->compatible_roadtypes : 0)); + m_new_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(m_new_tile, TT(), IsRoadTT() ? RoadVehicle::From(m_veh)->compatible_roadtypes : 0)); if (IsTram() && m_new_td_bits == 0) { /* GetTileTrackStatus() returns 0 for single tram bits. diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp index 153ffa8c15..9ef2bca479 100644 --- a/src/pathfinder/npf/aystar.cpp +++ b/src/pathfinder/npf/aystar.cpp @@ -27,6 +27,8 @@ #include "../../core/alloc_func.hpp" #include "aystar.h" +#include "../../safeguards.h" + /** * This looks in the hash whether a node exists in the closed list. * @param node Node to search. diff --git a/src/pathfinder/npf/npf.cpp b/src/pathfinder/npf/npf.cpp index 5c4ccb3ccb..bb705e5f4a 100644 --- a/src/pathfinder/npf/npf.cpp +++ b/src/pathfinder/npf/npf.cpp @@ -19,6 +19,8 @@ #include "../follow_track.hpp" #include "aystar.h" +#include "../../safeguards.h" + static const uint NPF_HASH_BITS = 12; ///< The size of the hash used in pathfinding. Just changing this value should be sufficient to change the hash size. Should be an even value. /* Do no change below values */ static const uint NPF_HASH_SIZE = 1 << NPF_HASH_BITS; diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp index 45540c1b61..2afb413918 100644 --- a/src/pathfinder/npf/queue.cpp +++ b/src/pathfinder/npf/queue.cpp @@ -13,6 +13,8 @@ #include "../../core/alloc_func.hpp" #include "queue.h" +#include "../../safeguards.h" + /* * Binary Heap diff --git a/src/pathfinder/opf/opf_ship.cpp b/src/pathfinder/opf/opf_ship.cpp index 850577de14..023c6a4a09 100644 --- a/src/pathfinder/opf/opf_ship.cpp +++ b/src/pathfinder/opf/opf_ship.cpp @@ -15,6 +15,8 @@ #include "../../ship.h" #include "../../core/random_func.hpp" +#include "../../safeguards.h" + struct RememberData { uint16 cur_length; byte depth; diff --git a/src/pathfinder/yapf/yapf_node_rail.hpp b/src/pathfinder/yapf/yapf_node_rail.hpp index 4950b2d295..b615b82273 100644 --- a/src/pathfinder/yapf/yapf_node_rail.hpp +++ b/src/pathfinder/yapf/yapf_node_rail.hpp @@ -196,7 +196,7 @@ struct CYapfRailNodeT while (cur != GetLastTile() || cur_td != GetLastTrackdir()) { if (!((obj.*func)(cur, cur_td))) return false; - ft.Follow(cur, cur_td); + if (!ft.Follow(cur, cur_td)) break; cur = ft.m_new_tile; assert(KillFirstBit(ft.m_new_td_bits) == TRACKDIR_BIT_NONE); cur_td = FindFirstTrackdir(ft.m_new_td_bits); diff --git a/src/pathfinder/yapf/yapf_rail.cpp b/src/pathfinder/yapf/yapf_rail.cpp index f66140046a..081bfdc645 100644 --- a/src/pathfinder/yapf/yapf_rail.cpp +++ b/src/pathfinder/yapf/yapf_rail.cpp @@ -19,9 +19,8 @@ #include "../../viewport_func.h" #include "../../newgrf_station.h" -#define DEBUG_YAPF_CACHE 0 +#include "../../safeguards.h" -#if DEBUG_YAPF_CACHE template void DumpState(Tpf &pf1, Tpf &pf2) { DumpTarget dmp1, dmp2; @@ -34,7 +33,6 @@ template void DumpState(Tpf &pf1, Tpf &pf2) fclose(f1); fclose(f2); } -#endif int _total_pf_time_us = 0; @@ -240,17 +238,17 @@ public: if (max_penalty != 0) pf1.DisableCache(true); bool result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_penalty, reverse_penalty, depot_tile, reversed); -#if DEBUG_YAPF_CACHE - 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(yapf, 0, "CACHE ERROR: FindNearestDepotTwoWay() = [%s, %s]", result1 ? "T" : "F", result2 ? "T" : "F"); - DumpState(pf1, pf2); + 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"); + DumpState(pf1, pf2); + } } -#endif return result1; } @@ -325,19 +323,19 @@ public: { /* Create pathfinder instance */ Tpf pf1; -#if !DEBUG_YAPF_CACHE - bool result1 = pf1.FindNearestSafeTile(v, t1, td, override_railtype, false); - -#else - bool result2 = pf1.FindNearestSafeTile(v, t1, td, override_railtype, true); - Tpf pf2; - pf2.DisableCache(true); - bool result1 = pf2.FindNearestSafeTile(v, t1, td, override_railtype, false); - if (result1 != result2) { - DEBUG(yapf, 0, "CACHE ERROR: FindSafeTile() = [%s, %s]", result2 ? "T" : "F", result1 ? "T" : "F"); - DumpState(pf1, pf2); + bool result1; + if (_debug_desync_level < 2) { + result1 = pf1.FindNearestSafeTile(v, t1, td, override_railtype, false); + } else { + bool result2 = pf1.FindNearestSafeTile(v, t1, td, override_railtype, true); + Tpf pf2; + pf2.DisableCache(true); + result1 = pf2.FindNearestSafeTile(v, t1, td, override_railtype, false); + if (result1 != result2) { + DEBUG(desync, 2, "CACHE ERROR: FindSafeTile() = [%s, %s]", result2 ? "T" : "F", result1 ? "T" : "F"); + DumpState(pf1, pf2); + } } -#endif return result1; } @@ -408,19 +406,20 @@ public: { /* create pathfinder instance */ Tpf pf1; -#if !DEBUG_YAPF_CACHE - Trackdir result1 = pf1.ChooseRailTrack(v, tile, enterdir, tracks, path_found, reserve_track, target); - -#else - Trackdir result1 = pf1.ChooseRailTrack(v, tile, enterdir, tracks, path_found, false, NULL); - Tpf pf2; - pf2.DisableCache(true); - Trackdir result2 = pf2.ChooseRailTrack(v, tile, enterdir, tracks, path_found, reserve_track, target); - if (result1 != result2) { - DEBUG(yapf, 0, "CACHE ERROR: ChooseRailTrack() = [%d, %d]", result1, result2); - DumpState(pf1, pf2); + Trackdir result1; + + if (_debug_desync_level < 2) { + result1 = pf1.ChooseRailTrack(v, tile, enterdir, tracks, path_found, reserve_track, target); + } else { + result1 = pf1.ChooseRailTrack(v, tile, enterdir, tracks, path_found, false, NULL); + Tpf pf2; + pf2.DisableCache(true); + Trackdir result2 = pf2.ChooseRailTrack(v, tile, enterdir, tracks, path_found, reserve_track, target); + if (result1 != result2) { + DEBUG(desync, 2, "CACHE ERROR: ChooseRailTrack() = [%d, %d]", result1, result2); + DumpState(pf1, pf2); + } } -#endif return result1; } @@ -470,15 +469,15 @@ public: Tpf pf1; bool result1 = pf1.CheckReverseTrain(v, t1, td1, t2, td2, reverse_penalty); -#if DEBUG_YAPF_CACHE - Tpf pf2; - pf2.DisableCache(true); - bool result2 = pf2.CheckReverseTrain(v, t1, td1, t2, td2, reverse_penalty); - if (result1 != result2) { - DEBUG(yapf, 0, "CACHE ERROR: CheckReverseTrain() = [%s, %s]", result1 ? "T" : "F", result2 ? "T" : "F"); - DumpState(pf1, pf2); + if (_debug_desync_level >= 2) { + Tpf pf2; + pf2.DisableCache(true); + bool result2 = pf2.CheckReverseTrain(v, t1, td1, t2, td2, reverse_penalty); + if (result1 != result2) { + DEBUG(desync, 2, "CACHE ERROR: CheckReverseTrain() = [%s, %s]", result1 ? "T" : "F", result2 ? "T" : "F"); + DumpState(pf1, pf2); + } } -#endif return result1; } diff --git a/src/pathfinder/yapf/yapf_road.cpp b/src/pathfinder/yapf/yapf_road.cpp index 82493241f5..711889b569 100644 --- a/src/pathfinder/yapf/yapf_road.cpp +++ b/src/pathfinder/yapf/yapf_road.cpp @@ -14,6 +14,8 @@ #include "yapf_node_road.hpp" #include "../../roadstop_base.h" +#include "../../safeguards.h" + template class CYapfCostRoadT diff --git a/src/pathfinder/yapf/yapf_ship.cpp b/src/pathfinder/yapf/yapf_ship.cpp index 37edf27194..a01444a9ec 100644 --- a/src/pathfinder/yapf/yapf_ship.cpp +++ b/src/pathfinder/yapf/yapf_ship.cpp @@ -15,6 +15,8 @@ #include "yapf.hpp" #include "yapf_node_ship.hpp" +#include "../../safeguards.h" + /** Node Follower module of YAPF for ships */ template class CYapfFollowShipT @@ -167,7 +169,7 @@ public: /* base tile cost depending on distance */ int c = IsDiagonalTrackdir(n.GetTrackdir()) ? YAPF_TILE_LENGTH : YAPF_TILE_CORNER_LENGTH; /* additional penalty for curves */ - if (n.m_parent != NULL && n.GetTrackdir() != NextTrackdir(n.m_parent->GetTrackdir())) { + if (n.GetTrackdir() != NextTrackdir(n.m_parent->GetTrackdir())) { /* new trackdir does not match the next one when going straight */ c += YAPF_TILE_LENGTH; } diff --git a/src/pbs.cpp b/src/pbs.cpp index 55569c0596..133293909f 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -15,6 +15,8 @@ #include "newgrf_station.h" #include "pathfinder/follow_track.hpp" +#include "safeguards.h" + /** * Get the reserved trackbits for any tile, regardless of type. * @param t the tile @@ -83,7 +85,11 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations) if (_settings_client.gui.show_track_reservation) { /* show the reserved rail if needed */ - MarkTileDirtyByTile(tile); + if (IsBridgeTile(tile)) { + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(tile); + } } switch (GetTileType(tile)) { @@ -139,7 +145,11 @@ void UnreserveRailTrack(TileIndex tile, Track t) assert((GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & TrackToTrackBits(t)) != 0); if (_settings_client.gui.show_track_reservation) { - MarkTileDirtyByTile(tile); + if (IsBridgeTile(tile)) { + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(tile); + } } switch (GetTileType(tile)) { diff --git a/src/progress.cpp b/src/progress.cpp index 343893ceee..b498be109b 100644 --- a/src/progress.cpp +++ b/src/progress.cpp @@ -12,6 +12,8 @@ #include "stdafx.h" #include "thread/thread.h" +#include "safeguards.h" + /** Are we in a modal progress or not? */ bool _in_modal_progress = false; bool _first_in_modal_loop = false; diff --git a/src/rail.cpp b/src/rail.cpp index dd34cb6530..79598ec4a1 100644 --- a/src/rail.cpp +++ b/src/rail.cpp @@ -17,6 +17,8 @@ #include "company_base.h" #include "engine_base.h" +#include "safeguards.h" + /* XXX: Below 3 tables store duplicate data. Maybe remove some? */ /* Maps a trackdir to the bit that stores its status in the map arrays, in the * direction along with the trackdir */ diff --git a/src/rail.h b/src/rail.h index 249c1bea1c..539a162b8e 100644 --- a/src/rail.h +++ b/src/rail.h @@ -89,14 +89,22 @@ enum RailTrackBridgeOffset { * the sprites in the original data files. */ enum RailFenceOffset { - RFO_FLAT_X, - RFO_FLAT_Y, - RFO_FLAT_VERT, - RFO_FLAT_HORZ, - RFO_SLOPE_SW, - RFO_SLOPE_SE, - RFO_SLOPE_NE, - RFO_SLOPE_NW, + RFO_FLAT_X_NW, //!< Slope FLAT, Track X, Fence NW + RFO_FLAT_Y_NE, //!< Slope FLAT, Track Y, Fence NE + RFO_FLAT_LEFT, //!< Slope FLAT, Track LEFT, Fence E + RFO_FLAT_UPPER, //!< Slope FLAT, Track UPPER, Fence S + RFO_SLOPE_SW_NW, //!< Slope SW, Track X, Fence NW + RFO_SLOPE_SE_NE, //!< Slope SE, Track Y, Fence NE + RFO_SLOPE_NE_NW, //!< Slope NE, Track X, Fence NW + RFO_SLOPE_NW_NE, //!< Slope NW, Track Y, Fence NE + RFO_FLAT_X_SE, //!< Slope FLAT, Track X, Fence SE + RFO_FLAT_Y_SW, //!< Slope FLAT, Track Y, Fence SW + RFO_FLAT_RIGHT, //!< Slope FLAT, Track RIGHT, Fence W + RFO_FLAT_LOWER, //!< Slope FLAT, Track LOWER, Fence N + RFO_SLOPE_SW_SE, //!< Slope SW, Track X, Fence SE + RFO_SLOPE_SE_SW, //!< Slope SE, Track Y, Fence SW + RFO_SLOPE_NE_SE, //!< Slope NE, Track X, Fence SE + RFO_SLOPE_NW_SW, //!< Slope NW, Track Y, Fence SW }; /** List of rail type labels. */ @@ -150,16 +158,16 @@ struct RailtypeInfo { CursorID depot; ///< Cursor for building a depot CursorID tunnel; ///< Cursor for building a tunnel CursorID convert; ///< Cursor for converting track - } cursor; + } cursor; ///< Cursors associated with the rail type. struct { - StringID name; - StringID toolbar_caption; - StringID menu_text; - StringID build_caption; - StringID replace_text; - StringID new_loco; - } strings; + StringID name; ///< Name of this rail type. + StringID toolbar_caption; ///< Caption in the construction toolbar GUI for this rail type. + StringID menu_text; ///< Name of this rail type in the main toolbar dropdown. + StringID build_caption; ///< Caption of the build vehicle GUI for this rail type. + StringID replace_text; ///< Text used in the autoreplace GUI. + StringID new_loco; ///< Name of an engine for this type of rail in the engine preview GUI. + } strings; ///< Strings associated with the rail type. /** sprite number difference between a piece of track on a snowy ground and the corresponding one on normal ground */ SpriteID snow_offset; diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 152f2f54c7..743e6e193c 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -38,6 +38,8 @@ #include "table/railtypes.h" #include "table/track_land.h" +#include "safeguards.h" + /** Helper type for lists/vectors of trains */ typedef SmallVector TrainList; @@ -483,36 +485,38 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u RoadTypes roadtypes = GetRoadTypes(tile); RoadBits road = GetRoadBits(tile, ROADTYPE_ROAD); RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM); - switch (roadtypes) { - default: break; - case ROADTYPES_TRAM: - /* Tram crossings must always have road. */ - if (flags & DC_EXEC) { - SetRoadOwner(tile, ROADTYPE_ROAD, _current_company); - Company *c = Company::GetIfValid(_current_company); - if (c != NULL) { - /* A full diagonal tile has two road bits. */ - c->infrastructure.road[ROADTYPE_ROAD] += 2; - DirtyCompanyInfrastructureWindows(c->index); - } - } - roadtypes |= ROADTYPES_ROAD; - break; - - case ROADTYPES_ALL: - if (road != tram) return CMD_ERROR; - break; - } + if ((track == TRACK_X && ((road | tram) & ROAD_X) == 0) || + (track == TRACK_Y && ((road | tram) & ROAD_Y) == 0)) { + Owner road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); + Owner tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); + /* Disallow breaking end-of-line of someone else + * so trams can still reverse on this tile. */ + if (Company::IsValidID(tram_owner) && HasExactlyOneBit(tram)) { + CommandCost ret = CheckOwnership(tram_owner); + if (ret.Failed()) return ret; + } + /* Crossings must always have a road... */ + uint num_new_road_pieces = 2 - CountBits(road); + if (road == ROAD_NONE) road_owner = _current_company; + roadtypes |= ROADTYPES_ROAD; + /* ...but tram is not required. */ + uint num_new_tram_pieces = (tram != ROAD_NONE) ? 2 - CountBits(tram) : 0; - road |= tram; + cost.AddCost((num_new_road_pieces + num_new_tram_pieces) * _price[PR_BUILD_ROAD]); - if ((track == TRACK_X && road == ROAD_Y) || - (track == TRACK_Y && road == ROAD_X)) { if (flags & DC_EXEC) { - MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), _current_company, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile)); + MakeRoadCrossing(tile, road_owner, tram_owner, _current_company, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile)); UpdateLevelCrossing(tile, false); Company::Get(_current_company)->infrastructure.rail[railtype] += LEVELCROSSING_TRACKBIT_FACTOR; DirtyCompanyInfrastructureWindows(_current_company); + if (num_new_road_pieces > 0 && Company::IsValidID(road_owner)) { + Company::Get(road_owner)->infrastructure.road[ROADTYPE_ROAD] += num_new_road_pieces; + DirtyCompanyInfrastructureWindows(road_owner); + } + if (num_new_tram_pieces > 0 && Company::IsValidID(tram_owner)) { + Company::Get(tram_owner)->infrastructure.road[ROADTYPE_TRAM] += num_new_tram_pieces; + DirtyCompanyInfrastructureWindows(tram_owner); + } } break; } @@ -821,7 +825,7 @@ static CommandCost ValidateAutoDrag(Trackdir *trackdir, TileIndex start, TileInd * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements - * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) + * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev), only used for building * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 7) - 0 = build, 1 = remove tracks * - p2 = (bit 8) - 0 = build up to an obstacle, 1 = fail if an obstacle is found (used for AIs). @@ -835,7 +839,7 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 bool remove = HasBit(p2, 7); RailType railtype = Extract(p2); - if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; + if ((!remove && !ValParamRailtype(railtype)) || !ValParamTrackOrientation(track)) return CMD_ERROR; if (p1 >= MapSize()) return CMD_ERROR; TileIndex end_tile = p1; Trackdir trackdir = TrackToTrackdir(track); @@ -843,12 +847,10 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 CommandCost ret = ValidateAutoDrag(&trackdir, tile, end_tile); if (ret.Failed()) return ret; - if ((flags & DC_EXEC) && _settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, tile); - bool had_success = false; CommandCost last_error = CMD_ERROR; for (;;) { - CommandCost ret = DoCommand(tile, railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); + CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); if (ret.Failed()) { last_error = ret; @@ -902,7 +904,7 @@ CommandCost CmdBuildRailroadTrack(TileIndex tile, DoCommandFlag flags, uint32 p1 * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements - * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) + * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev), only used for building * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 7) - 0 = build, 1 = remove tracks * @param text unused @@ -953,7 +955,7 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u CommandCost cost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (cost.Failed()) return cost; - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); if (!Depot::CanAllocateItem()) return CMD_ERROR; @@ -1517,16 +1519,19 @@ static Vehicle *UpdateTrainPowerProc(Vehicle *v, void *data) CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { RailType totype = Extract(p2); + TileIndex area_start = p1; + TileIndex area_end = tile; + bool diagonal = HasBit(p2, 4); if (!ValParamRailtype(totype)) return CMD_ERROR; - if (p1 >= MapSize()) return CMD_ERROR; + if (area_start >= MapSize()) return CMD_ERROR; TrainList affected_trains; CommandCost cost(EXPENSES_CONSTRUCTION); CommandCost error = CommandCost(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); // by default, there is no track to convert. - TileArea ta(tile, p1); - TileIterator *iter = HasBit(p2, 4) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta); + + TileIterator *iter = diagonal ? (TileIterator *)new DiagonalTileIterator(area_start, area_end) : new OrthogonalTileIterator(area_start, area_end); for (; (tile = *iter) != INVALID_TILE; ++(*iter)) { TileType tt = GetTileType(tile); @@ -1641,8 +1646,13 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 /* If both ends of tunnel/bridge are in the range, do not try to convert twice - * it would cause assert because of different test and exec runs */ - if (endtile < tile && TileX(endtile) >= TileX(ta.tile) && TileX(endtile) < TileX(ta.tile) + ta.w && - TileY(endtile) >= TileY(ta.tile) && TileY(endtile) < TileY(ta.tile) + ta.h) continue; + if (endtile < tile) { + if (diagonal) { + if (DiagonalTileArea(area_start, area_end).Contains(endtile)) continue; + } else { + if (OrthogonalTileArea(area_start, area_end).Contains(endtile)) continue; + } + } /* When not converting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */ if (!IsCompatibleRail(GetRailType(tile), totype)) { @@ -1680,13 +1690,11 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 YapfNotifyTrackLayoutChange(tile, track); YapfNotifyTrackLayoutChange(endtile, track); - MarkTileDirtyByTile(tile); - MarkTileDirtyByTile(endtile); - if (IsBridge(tile)) { - TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); - TileIndex t = tile + delta; - for (; t != endtile; t += delta) MarkTileDirtyByTile(t); // TODO encapsulate this into a function + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(tile); + MarkTileDirtyByTile(endtile); } } @@ -1712,7 +1720,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 if (flags & DC_EXEC) { /* Railtype changed, update trains as when entering different track */ for (Train **v = affected_trains.Begin(); v != affected_trains.End(); v++) { - (*v)->ConsistChanged(true); + (*v)->ConsistChanged(CCF_TRACK); } } @@ -1866,109 +1874,128 @@ static void DrawSingleSignal(TileIndex tile, const RailtypeInfo *rti, Track trac static uint32 _drawtile_track_palette; -static void DrawTrackFence_NW(const TileInfo *ti, SpriteID base_image) -{ - RailFenceOffset rfo = RFO_FLAT_X; - if (ti->tileh & SLOPE_NW) rfo = (ti->tileh & SLOPE_W) ? RFO_SLOPE_SW : RFO_SLOPE_NE; - AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, - ti->x, ti->y + 1, 16, 1, 4, ti->z); -} - -static void DrawTrackFence_SE(const TileInfo *ti, SpriteID base_image) -{ - RailFenceOffset rfo = RFO_FLAT_X; - if (ti->tileh & SLOPE_SE) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SW : RFO_SLOPE_NE; - AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, - ti->x, ti->y + TILE_SIZE - 1, 16, 1, 4, ti->z); -} -static void DrawTrackFence_NW_SE(const TileInfo *ti, SpriteID base_image) -{ - DrawTrackFence_NW(ti, base_image); - DrawTrackFence_SE(ti, base_image); -} - -static void DrawTrackFence_NE(const TileInfo *ti, SpriteID base_image) -{ - RailFenceOffset rfo = RFO_FLAT_Y; - if (ti->tileh & SLOPE_NE) rfo = (ti->tileh & SLOPE_E) ? RFO_SLOPE_SE : RFO_SLOPE_NW; - AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, - ti->x + 1, ti->y, 1, 16, 4, ti->z); -} +/** Offsets for drawing fences */ +struct FenceOffset { + Corner height_ref; //!< Corner to use height offset from. + int x_offs; //!< Bounding box X offset. + int y_offs; //!< Bounding box Y offset. + int x_size; //!< Bounding box X size. + int y_size; //!< Bounding box Y size. +}; -static void DrawTrackFence_SW(const TileInfo *ti, SpriteID base_image) -{ - RailFenceOffset rfo = RFO_FLAT_Y; - if (ti->tileh & SLOPE_SW) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SE : RFO_SLOPE_NW; - AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, - ti->x + TILE_SIZE - 1, ti->y, 1, 16, 4, ti->z); -} +/** Offsets for drawing fences */ +static FenceOffset _fence_offsets[] = { + { CORNER_INVALID, 0, 1, 16, 1 }, // RFO_FLAT_X_NW + { CORNER_INVALID, 1, 0, 1, 16 }, // RFO_FLAT_Y_NE + { CORNER_W, 8, 8, 1, 1 }, // RFO_FLAT_LEFT + { CORNER_N, 8, 8, 1, 1 }, // RFO_FLAT_UPPER + { CORNER_INVALID, 0, 1, 16, 1 }, // RFO_SLOPE_SW_NW + { CORNER_INVALID, 1, 0, 1, 16 }, // RFO_SLOPE_SE_NE + { CORNER_INVALID, 0, 1, 16, 1 }, // RFO_SLOPE_NE_NW + { CORNER_INVALID, 1, 0, 1, 16 }, // RFO_SLOPE_NW_NE + { CORNER_INVALID, 0, 15, 16, 1 }, // RFO_FLAT_X_SE + { CORNER_INVALID, 15, 0, 1, 16 }, // RFO_FLAT_Y_SW + { CORNER_E, 8, 8, 1, 1 }, // RFO_FLAT_RIGHT + { CORNER_S, 8, 8, 1, 1 }, // RFO_FLAT_LOWER + { CORNER_INVALID, 0, 15, 16, 1 }, // RFO_SLOPE_SW_SE + { CORNER_INVALID, 15, 0, 1, 16 }, // RFO_SLOPE_SE_SW + { CORNER_INVALID, 0, 15, 16, 1 }, // RFO_SLOPE_NE_SE + { CORNER_INVALID, 15, 0, 1, 16 }, // RFO_SLOPE_NW_SW +}; -static void DrawTrackFence_NE_SW(const TileInfo *ti, SpriteID base_image) +/** + * Draw a track fence. + * @param ti Tile drawing information. + * @param base_image First fence sprite. + * @param num_sprites Number of fence sprites. + * @param rfo Fence to draw. + */ +static void DrawTrackFence(const TileInfo *ti, SpriteID base_image, uint num_sprites, RailFenceOffset rfo) { - DrawTrackFence_NE(ti, base_image); - DrawTrackFence_SW(ti, base_image); + int z = ti->z; + if (_fence_offsets[rfo].height_ref != CORNER_INVALID) { + z += GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), _fence_offsets[rfo].height_ref); + } + AddSortableSpriteToDraw(base_image + (rfo % num_sprites), _drawtile_track_palette, + ti->x + _fence_offsets[rfo].x_offs, + ti->y + _fence_offsets[rfo].y_offs, + _fence_offsets[rfo].x_size, + _fence_offsets[rfo].y_size, + 4, z); } /** - * Draw fence at eastern side of track. + * Draw fence at NW border matching the tile slope. */ -static void DrawTrackFence_NS_1(const TileInfo *ti, SpriteID base_image) +static void DrawTrackFence_NW(const TileInfo *ti, SpriteID base_image, uint num_sprites) { - int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_W); - AddSortableSpriteToDraw(base_image + RFO_FLAT_VERT, _drawtile_track_palette, - ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); + RailFenceOffset rfo = RFO_FLAT_X_NW; + if (ti->tileh & SLOPE_NW) rfo = (ti->tileh & SLOPE_W) ? RFO_SLOPE_SW_NW : RFO_SLOPE_NE_NW; + DrawTrackFence(ti, base_image, num_sprites, rfo); } /** - * Draw fence at western side of track. + * Draw fence at SE border matching the tile slope. */ -static void DrawTrackFence_NS_2(const TileInfo *ti, SpriteID base_image) +static void DrawTrackFence_SE(const TileInfo *ti, SpriteID base_image, uint num_sprites) { - int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_E); - AddSortableSpriteToDraw(base_image + RFO_FLAT_VERT, _drawtile_track_palette, - ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); + RailFenceOffset rfo = RFO_FLAT_X_SE; + if (ti->tileh & SLOPE_SE) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SW_SE : RFO_SLOPE_NE_SE; + DrawTrackFence(ti, base_image, num_sprites, rfo); } /** - * Draw fence at southern side of track. + * Draw fence at NE border matching the tile slope. */ -static void DrawTrackFence_WE_1(const TileInfo *ti, SpriteID base_image) +static void DrawTrackFence_NE(const TileInfo *ti, SpriteID base_image, uint num_sprites) { - int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_N); - AddSortableSpriteToDraw(base_image + RFO_FLAT_HORZ, _drawtile_track_palette, - ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); + RailFenceOffset rfo = RFO_FLAT_Y_NE; + if (ti->tileh & SLOPE_NE) rfo = (ti->tileh & SLOPE_E) ? RFO_SLOPE_SE_NE : RFO_SLOPE_NW_NE; + DrawTrackFence(ti, base_image, num_sprites, rfo); } /** - * Draw fence at northern side of track. + * Draw fence at SW border matching the tile slope. */ -static void DrawTrackFence_WE_2(const TileInfo *ti, SpriteID base_image) +static void DrawTrackFence_SW(const TileInfo *ti, SpriteID base_image, uint num_sprites) { - int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_S); - AddSortableSpriteToDraw(base_image + RFO_FLAT_HORZ, _drawtile_track_palette, - ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); + RailFenceOffset rfo = RFO_FLAT_Y_SW; + if (ti->tileh & SLOPE_SW) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SE_SW : RFO_SLOPE_NW_SW; + DrawTrackFence(ti, base_image, num_sprites, rfo); } - +/** + * Draw track fences. + * @param ti Tile drawing information. + * @param rti Rail type information. + */ static void DrawTrackDetails(const TileInfo *ti, const RailtypeInfo *rti) { /* Base sprite for track fences. * Note: Halftile slopes only have fences on the upper part. */ - SpriteID base_image = GetCustomRailSprite(rti, ti->tile, RTSG_FENCES, IsHalftileSlope(ti->tileh) ? TCX_UPPER_HALFTILE : TCX_NORMAL); - if (base_image == 0) base_image = SPR_TRACK_FENCE_FLAT_X; + uint num_sprites = 0; + SpriteID base_image = GetCustomRailSprite(rti, ti->tile, RTSG_FENCES, IsHalftileSlope(ti->tileh) ? TCX_UPPER_HALFTILE : TCX_NORMAL, &num_sprites); + if (base_image == 0) { + base_image = SPR_TRACK_FENCE_FLAT_X; + num_sprites = 8; + } + + assert(num_sprites > 0); switch (GetRailGroundType(ti->tile)) { - case RAIL_GROUND_FENCE_NW: DrawTrackFence_NW(ti, base_image); break; - case RAIL_GROUND_FENCE_SE: DrawTrackFence_SE(ti, base_image); break; - case RAIL_GROUND_FENCE_SENW: DrawTrackFence_NW_SE(ti, base_image); break; - case RAIL_GROUND_FENCE_NE: DrawTrackFence_NE(ti, base_image); break; - case RAIL_GROUND_FENCE_SW: DrawTrackFence_SW(ti, base_image); break; - case RAIL_GROUND_FENCE_NESW: DrawTrackFence_NE_SW(ti, base_image); break; - case RAIL_GROUND_FENCE_VERT1: DrawTrackFence_NS_1(ti, base_image); break; - case RAIL_GROUND_FENCE_VERT2: DrawTrackFence_NS_2(ti, base_image); break; - case RAIL_GROUND_FENCE_HORIZ1: DrawTrackFence_WE_1(ti, base_image); break; - case RAIL_GROUND_FENCE_HORIZ2: DrawTrackFence_WE_2(ti, base_image); break; + case RAIL_GROUND_FENCE_NW: DrawTrackFence_NW(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_SE: DrawTrackFence_SE(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_SENW: DrawTrackFence_NW(ti, base_image, num_sprites); + DrawTrackFence_SE(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_NE: DrawTrackFence_NE(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_SW: DrawTrackFence_SW(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_NESW: DrawTrackFence_NE(ti, base_image, num_sprites); + DrawTrackFence_SW(ti, base_image, num_sprites); break; + case RAIL_GROUND_FENCE_VERT1: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_LEFT); break; + case RAIL_GROUND_FENCE_VERT2: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_RIGHT); break; + case RAIL_GROUND_FENCE_HORIZ1: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_UPPER); break; + case RAIL_GROUND_FENCE_HORIZ2: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_LOWER); break; case RAIL_GROUND_WATER: { Corner track_corner; if (IsHalftileSlope(ti->tileh)) { @@ -1979,10 +2006,10 @@ static void DrawTrackDetails(const TileInfo *ti, const RailtypeInfo *rti) track_corner = OppositeCorner(GetHighestSlopeCorner(ComplementSlope(ti->tileh))); } switch (track_corner) { - case CORNER_W: DrawTrackFence_NS_1(ti, base_image); break; - case CORNER_S: DrawTrackFence_WE_2(ti, base_image); break; - case CORNER_E: DrawTrackFence_NS_2(ti, base_image); break; - case CORNER_N: DrawTrackFence_WE_1(ti, base_image); break; + case CORNER_W: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_LEFT); break; + case CORNER_S: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_LOWER); break; + case CORNER_E: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_RIGHT); break; + case CORNER_N: DrawTrackFence(ti, base_image, num_sprites, RFO_FLAT_UPPER); break; default: NOT_REACHED(); } break; @@ -2053,16 +2080,16 @@ static void DrawTrackBitsOverlay(TileInfo *ti, TrackBits track, const RailtypeIn /* Half-tile foundation, no track here? */ } else if (ti->tileh == SLOPE_NW && track == TRACK_BIT_Y) { DrawGroundSprite(ground + RTO_SLOPE_NW, PAL_NONE); - if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 9, PALETTE_CRASH); + if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + RTO_SLOPE_NW, PALETTE_CRASH); } else if (ti->tileh == SLOPE_NE && track == TRACK_BIT_X) { DrawGroundSprite(ground + RTO_SLOPE_NE, PAL_NONE); - if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 6, PALETTE_CRASH); + if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + RTO_SLOPE_NE, PALETTE_CRASH); } else if (ti->tileh == SLOPE_SE && track == TRACK_BIT_Y) { DrawGroundSprite(ground + RTO_SLOPE_SE, PAL_NONE); - if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 7, PALETTE_CRASH); + if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + RTO_SLOPE_SE, PALETTE_CRASH); } else if (ti->tileh == SLOPE_SW && track == TRACK_BIT_X) { DrawGroundSprite(ground + RTO_SLOPE_SW, PAL_NONE); - if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 8, PALETTE_CRASH); + if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + RTO_SLOPE_SW, PALETTE_CRASH); } else { switch (track) { /* Draw single ground sprite when not overlapping. No track overlay @@ -2435,9 +2462,6 @@ void DrawTrainDepotSprite(int x, int y, int dir, RailType railtype) SpriteID image = rti->UsesOverlay() ? SPR_FLAT_GRASS_TILE : dts->ground.sprite; uint32 offset = rti->GetRailtypeSpriteOffset(); - x += 33; - y += 17; - if (image != SPR_FLAT_GRASS_TILE) image += offset; PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company); @@ -2572,7 +2596,7 @@ static void TileLoop_Track(TileIndex tile) /* Show fences if it's a house, industry, object, road, tunnelbridge or not owned by us. */ if (!IsValidTile(tile2) || IsTileType(tile2, MP_HOUSE) || IsTileType(tile2, MP_INDUSTRY) || - IsTileType(tile2, MP_ROAD) || (IsTileType(tile2, MP_OBJECT) && !IsOwnedLand(tile2)) || IsTileType(tile2, MP_TUNNELBRIDGE) || !IsTileOwner(tile2, owner)) { + IsTileType(tile2, MP_ROAD) || (IsTileType(tile2, MP_OBJECT) && !IsObjectType(tile2, OBJECT_OWNED_LAND)) || IsTileType(tile2, MP_TUNNELBRIDGE) || !IsTileOwner(tile2, owner)) { fences |= 1 << d; } } diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 61c29e1e15..a8c2fc6b33 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -40,6 +40,8 @@ #include "widgets/rail_widget.h" +#include "safeguards.h" + static RailType _cur_railtype; ///< Rail type of the current build-rail toolbar. static bool _remove_button_clicked; ///< Flag whether 'remove' toggle-button is currently enabled @@ -86,7 +88,7 @@ static bool IsStationAvailable(const StationSpec *statspec) void CcPlaySound1E(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { - if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, tile); + if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); } static void GenericPlaceRail(TileIndex tile, int cmd) @@ -133,7 +135,7 @@ void CcRailDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2 DiagDirection dir = (DiagDirection)p2; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); tile += TileOffsByDiagDir(dir); @@ -171,7 +173,7 @@ void CcStation(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); /* Only close the station builder window if the default station and non persistent building is chosen. */ if (_railstation.station_class == STAT_CLASS_DFLT && _railstation.station_type == 0 && !_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } @@ -262,7 +264,7 @@ static void PlaceRail_Bridge(TileIndex tile, Window *w) if (IsBridgeTile(tile)) { TileIndex other_tile = GetOtherTunnelBridgeEnd(tile); Point pt = {0, 0}; - w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, tile, other_tile); + w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, other_tile, tile); } else { VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); } @@ -272,7 +274,7 @@ static void PlaceRail_Bridge(TileIndex tile, Window *w) void CcBuildRailTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { - if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } else { SetRedErrorSquare(_build_tunnel_endtile); @@ -352,7 +354,8 @@ static void DoRailroadTrack(int mode) DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 4), _remove_button_clicked ? CMD_REMOVE_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : - CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK)); + CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), + CcPlaySound1E); } static void HandleAutodirPlacement() @@ -431,6 +434,18 @@ struct BuildRailToolbarWindow : Window { if (_settings_client.gui.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0, false); } + /** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. + */ + virtual void OnInvalidateData(int data = 0, bool gui_scope = true) + { + if (!gui_scope) return; + + if (!CanBuildVehicleInfrastructure(VEH_TRAIN)) delete this; + } + /** * Configures the rail toolbar for railtype given * @param railtype the railtype to display @@ -893,23 +908,27 @@ private: { if (statspec == NULL || _settings_client.gui.station_dragdrop) return; - /* If current number of tracks is not allowed, make it as big as possible (which is always less than currently selected) */ + /* If current number of tracks is not allowed, make it as big as possible */ if (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { this->RaiseWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); _settings_client.gui.station_numtracks = 1; - while (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { - _settings_client.gui.station_numtracks++; + if (statspec->disallowed_platforms != UINT8_MAX) { + while (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { + _settings_client.gui.station_numtracks++; + } + this->LowerWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); } - this->LowerWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); } if (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { this->RaiseWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); _settings_client.gui.station_platlength = 1; - while (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { - _settings_client.gui.station_platlength++; + if (statspec->disallowed_lengths != UINT8_MAX) { + while (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { + _settings_client.gui.station_platlength++; + } + this->LowerWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); } - this->LowerWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); } } @@ -1033,8 +1052,7 @@ public: Dimension d = {0, 0}; for (uint i = 0; i < StationClass::GetClassCount(); i++) { if (i == STAT_CLASS_WAYP) continue; - SetDParam(0, StationClass::Get((StationClassID)i)->name); - d = maxdim(d, GetStringBoundingBox(STR_BLACK_STRING)); + d = maxdim(d, GetStringBoundingBox(StationClass::Get((StationClassID)i)->name)); } size->width = max(size->width, d.width + padding.width); this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; @@ -1066,6 +1084,13 @@ public: break; } + case WID_BRAS_PLATFORM_DIR_X: + case WID_BRAS_PLATFORM_DIR_Y: + case WID_BRAS_IMAGE: + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(58) + 2; + break; + case WID_BRAS_COVERAGE_TEXTS: size->height = this->coverage_height; break; @@ -1087,8 +1112,10 @@ public: if (FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; - if (!DrawStationTile(32, 28, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) { - StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2); + int x = ScaleGUITrad(31) + 1; + int y = r.bottom - r.top - ScaleGUITrad(31); + if (!DrawStationTile(x, y, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) { + StationPickerDrawSprite(x, y, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2); } _cur_dpi = old_dpi; } @@ -1099,8 +1126,10 @@ public: if (FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; - if (!DrawStationTile(32, 28, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) { - StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 3); + int x = ScaleGUITrad(31) + 1; + int y = r.bottom - r.top - ScaleGUITrad(31); + if (!DrawStationTile(x, y, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) { + StationPickerDrawSprite(x, y, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 3); } _cur_dpi = old_dpi; } @@ -1112,8 +1141,8 @@ public: for (uint i = 0; i < StationClass::GetClassCount(); i++) { if (i == STAT_CLASS_WAYP) continue; if (this->vscroll->IsVisible(statclass)) { - SetDParam(0, StationClass::Get((StationClassID)i)->name); - DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, row * this->line_height + r.top + WD_MATRIX_TOP, STR_JUST_STRING, + DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, row * this->line_height + r.top + WD_MATRIX_TOP, + StationClass::Get((StationClassID)i)->name, (StationClassID)i == _railstation.station_class ? TC_WHITE : TC_BLACK); row++; } @@ -1135,8 +1164,10 @@ public: if (FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; - if (!DrawStationTile(32, 28, _cur_railtype, _railstation.orientation, _railstation.station_class, type)) { - StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2 + _railstation.orientation); + int x = ScaleGUITrad(31) + 1; + int y = r.bottom - r.top - ScaleGUITrad(31); + if (!DrawStationTile(x, y, _cur_railtype, _railstation.orientation, _railstation.station_class, type)) { + StationPickerDrawSprite(x, y, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2 + _railstation.orientation); } _cur_dpi = old_dpi; } @@ -1452,6 +1483,9 @@ static void ShowStationBuilder(Window *parent) struct BuildSignalWindow : public PickerWindowBase { private: + Dimension sig_sprite_size; ///< Maximum size of signal GUI sprites. + int sig_sprite_bottom_offset; ///< Maximum extent of signal GUI sprite from reference point towards bottom. + /** * Draw dynamic a signal-sprite in a button in the signal GUI * Draw the sprite +1px to the right and down if the button is lowered @@ -1461,26 +1495,17 @@ private: */ void DrawSignalSprite(byte widget_index, SpriteID image) const { - /* Next get the actual sprite so we can calculate the right offsets. */ - const Sprite *sprite = GetSprite(image, ST_NORMAL); - - /* For the x offset we want the sprite to be centered, so undo the offset - * for sprite drawing and add half of the sprite's width. For the y offset - * we want the sprite to be aligned on the bottom, so again we undo the - * offset for sprite drawing and assume it is the bottom of the sprite. */ - int sprite_center_x_offset = UnScaleByZoom(sprite->x_offs + sprite->width / 2, ZOOM_LVL_GUI); - int sprite_bottom_y_offset = UnScaleByZoom(sprite->height + sprite->y_offs, ZOOM_LVL_GUI); - - /* Next we want to know where on the window to draw. Calculate the center - * and the bottom of the area to draw. */ + Point offset; + Dimension sprite_size = GetSpriteSize(image, &offset); const NWidgetBase *widget = this->GetWidget(widget_index); - int widget_center_x = widget->pos_x + widget->current_x / 2; - int widget_bottom_y = widget->pos_y + widget->current_y - 2; + int x = widget->pos_x - offset.x + + (widget->current_x - sprite_size.width + offset.x) / 2; // centered + int y = widget->pos_y - sig_sprite_bottom_offset + WD_IMGBTN_TOP + + (widget->current_y - WD_IMGBTN_TOP - WD_IMGBTN_BOTTOM + sig_sprite_size.height) / 2; // aligned to bottom - /* Finally we draw the signal. */ DrawSprite(image, PAL_NONE, - widget_center_x - sprite_center_x_offset + this->IsWidgetLowered(widget_index), - widget_bottom_y - sprite_bottom_y_offset + this->IsWidgetLowered(widget_index)); + x + this->IsWidgetLowered(widget_index), + y + this->IsWidgetLowered(widget_index)); } public: @@ -1495,6 +1520,37 @@ public: _convert_signal_button = false; } + virtual void OnInit() + { + /* Calculate maximum signal sprite size. */ + this->sig_sprite_size.width = 0; + this->sig_sprite_size.height = 0; + this->sig_sprite_bottom_offset = 0; + const RailtypeInfo *rti = GetRailTypeInfo(_cur_railtype); + for (uint type = SIGTYPE_NORMAL; type < SIGTYPE_END; type++) { + for (uint variant = SIG_ELECTRIC; variant <= SIG_SEMAPHORE; variant++) { + for (uint lowered = 0; lowered < 2; lowered++) { + Point offset; + Dimension sprite_size = GetSpriteSize(rti->gui_sprites.signals[type][variant][lowered], &offset); + this->sig_sprite_bottom_offset = max(this->sig_sprite_bottom_offset, sprite_size.height); + this->sig_sprite_size.width = max(this->sig_sprite_size.width, sprite_size.width - offset.x); + this->sig_sprite_size.height = max(this->sig_sprite_size.height, sprite_size.height - offset.y); + } + } + } + } + + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (widget == WID_BS_DRAG_SIGNALS_DENSITY_LABEL) { + /* Two digits for signals density. */ + size->width = max(size->width, 2 * GetDigitWidth() + padding.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT); + } else if (IsInsideMM(widget, WID_BS_SEMAPHORE_NORM, WID_BS_ELECTRIC_PBS_OWAY + 1)) { + size->width = max(size->width, this->sig_sprite_size.width + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT); + size->height = max(size->height, this->sig_sprite_size.height + WD_IMGBTN_TOP + WD_IMGBTN_BOTTOM); + } + } + virtual void SetStringParameters(int widget) const { switch (widget) { @@ -1645,11 +1701,19 @@ struct BuildRailDepotWindow : public PickerWindowBase { this->LowerWidget(_build_depot_direction + WID_BRAD_DEPOT_NE); } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (!IsInsideMM(widget, WID_BRAD_DEPOT_NE, WID_BRAD_DEPOT_NW + 1)) return; + + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(48) + 2; + } + virtual void DrawWidget(const Rect &r, int widget) const { if (!IsInsideMM(widget, WID_BRAD_DEPOT_NE, WID_BRAD_DEPOT_NW + 1)) return; - DrawTrainDepotSprite(r.left - 1, r.top, widget - WID_BRAD_DEPOT_NE + DIAGDIR_NE, _cur_railtype); + DrawTrainDepotSprite(r.left + 1 + ScaleGUITrad(31), r.bottom - ScaleGUITrad(31), widget - WID_BRAD_DEPOT_NE + DIAGDIR_NE, _cur_railtype); } virtual void OnClick(Point pt, int widget, int click_count) @@ -1737,6 +1801,11 @@ struct BuildRailWaypointWindow : PickerWindowBase { /* Resizing in X direction only at blob size, but at pixel level in Y. */ resize->height = 1; break; + + case WID_BRW_WAYPOINT: + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(58) + 2; + break; } } @@ -1746,7 +1815,7 @@ struct BuildRailWaypointWindow : PickerWindowBase { case WID_BRW_WAYPOINT: { byte type = GB(widget, 16, 16); const StationSpec *statspec = StationClass::Get(STAT_CLASS_WAYP)->GetSpec(type); - DrawWaypointSprite(r.left + TILE_PIXELS, r.bottom - TILE_PIXELS, type, _cur_railtype); + DrawWaypointSprite(r.left + 1 + ScaleGUITrad(31), r.bottom - ScaleGUITrad(31), type, _cur_railtype); if (!IsStationAvailable(statspec)) { GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK, FILLRECT_CHECKER); @@ -1915,9 +1984,9 @@ void InitializeRailGUI() * @param second The railtype to compare. * @return True iff the first should be sorted before the second. */ -static bool CompareRailTypes(const DropDownListItem *first, const DropDownListItem *second) +static int CDECL CompareRailTypes(const DropDownListItem * const *first, const DropDownListItem * const *second) { - return GetRailTypeInfo((RailType)first->result)->sorting_order < GetRailTypeInfo((RailType)second->result)->sorting_order; + return GetRailTypeInfo((RailType)(*first)->result)->sorting_order - GetRailTypeInfo((RailType)(*second)->result)->sorting_order; } /** @@ -1954,8 +2023,8 @@ DropDownList *GetRailTypeDropDownList(bool for_replacement) DropDownListParamStringItem *item = new DropDownListParamStringItem(str, rt, !HasBit(c->avail_railtypes, rt)); item->SetParam(0, rti->strings.menu_text); item->SetParam(1, rti->max_speed); - list->push_back(item); + *list->Append() = item; } - list->sort(CompareRailTypes); + QSortT(list->Begin(), list->Length(), CompareRailTypes); return list; } diff --git a/src/rail_map.h b/src/rail_map.h index c8033a3118..2431a79202 100644 --- a/src/rail_map.h +++ b/src/rail_map.h @@ -525,7 +525,7 @@ static inline void MakeRailNormal(TileIndex t, Owner o, TrackBits b, RailType r) _m[t].m3 = r; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_NORMAL << 6 | b; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } @@ -538,7 +538,7 @@ static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirectio _m[t].m3 = r; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_DEPOT << 6 | d; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/rev.cpp.in b/src/rev.cpp.in index cd22a4a8cf..7e27859ce0 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -13,6 +13,8 @@ #include "core/bitmath_func.hpp" #include "rev.h" +#include "safeguards.h" + /** * Is this version of OpenTTD a release version? * @return True if it is a release version. @@ -70,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 | 4 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 1 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** diff --git a/src/road.cpp b/src/road.cpp index c005d56c1b..57c5da5d41 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -20,6 +20,8 @@ #include "date_func.h" #include "landscape.h" +#include "safeguards.h" + /** * Return if the tile is a valid tile for a crossing. * diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 7931fa965b..aa445eb91a 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -38,6 +38,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Verify whether a road vehicle is available. * @return \c true if at least one road vehicle is available, \c false if not @@ -235,21 +237,20 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt)); /* If the owner of the bridge sells all its road, also move the ownership - * to the owner of the other roadtype. */ + * to the owner of the other roadtype, unless the bridge owner is a town. */ RoadType other_rt = (rt == ROADTYPE_ROAD) ? ROADTYPE_TRAM : ROADTYPE_ROAD; Owner other_owner = GetRoadOwner(tile, other_rt); - if (other_owner != GetTileOwner(tile)) { + if (!IsTileOwner(tile, other_owner) && !IsTileOwner(tile, OWNER_TOWN)) { SetTileOwner(tile, other_owner); SetTileOwner(other_end, other_owner); } /* Mark tiles dirty that have been repaved */ - MarkTileDirtyByTile(tile); - MarkTileDirtyByTile(other_end); if (IsBridge(tile)) { - TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); - - for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t); + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(tile); + MarkTileDirtyByTile(other_end); } } } else { @@ -383,7 +384,10 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec /* Update rail count for level crossings. The plain track should still be accounted * for, so only subtract the difference to the level crossing cost. */ c = Company::GetIfValid(GetTileOwner(tile)); - if (c != NULL) c->infrastructure.rail[GetRailType(tile)] -= LEVELCROSSING_TRACKBIT_FACTOR - 1; + if (c != NULL) { + c->infrastructure.rail[GetRailType(tile)] -= LEVELCROSSING_TRACKBIT_FACTOR - 1; + DirtyCompanyInfrastructureWindows(c->index); + } } else { SetRoadTypes(tile, rts); } @@ -562,6 +566,15 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 } return_cmd_error(STR_ERROR_ALREADY_BUILT); } + /* Disallow breaking end-of-line of someone else + * so trams can still reverse on this tile. */ + if (rt == ROADTYPE_TRAM && HasExactlyOneBit(existing)) { + Owner owner = GetRoadOwner(tile, rt); + if (Company::IsValidID(owner)) { + CommandCost ret = CheckOwnership(owner); + if (ret.Failed()) return ret; + } + } break; } @@ -628,7 +641,10 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* Update rail count for level crossings. The plain track is already * counted, so only add the difference to the level crossing cost. */ c = Company::GetIfValid(GetTileOwner(tile)); - if (c != NULL) c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR - 1; + if (c != NULL) { + c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR - 1; + DirtyCompanyInfrastructureWindows(c->index); + } /* Always add road to the roadtypes (can't draw without it) */ bool reserved = HasBit(GetRailReservationTrackBits(tile), railtrack); @@ -745,12 +761,11 @@ do_clear:; SetRoadOwner(tile, rt, company); /* Mark tiles dirty that have been repaved */ - MarkTileDirtyByTile(other_end); - MarkTileDirtyByTile(tile); if (IsBridge(tile)) { - TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); - - for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t); + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(other_end); + MarkTileDirtyByTile(tile); } break; } @@ -1013,7 +1028,7 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui CommandCost cost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (cost.Failed()) return cost; - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); if (!Depot::CanAllocateItem()) return CMD_ERROR; @@ -1156,16 +1171,15 @@ const byte _road_sloped_sprites[14] = { }; /** - * Whether to draw unpaved roads regardless of the town zone. - * By default, OpenTTD always draws roads as unpaved if they are on a desert - * tile or above the snowline. Newgrf files, however, can set a bit that allows - * paved roads to be built on desert tiles as they would be on grassy tiles. + * Should the road be drawn as a unpaved snow/desert road? + * By default, roads are always drawn as unpaved if they are on desert or + * above the snow line, but NewGRFs can override this for desert. * * @param tile The tile the road is on * @param roadside What sort of road this is - * @return True if the road should be drawn unpaved regardless of the roadside. + * @return True if snow/desert road sprites should be used. */ -static bool AlwaysDrawUnpavedRoads(TileIndex tile, Roadside roadside) +static bool DrawRoadAsSnowDesert(TileIndex tile, Roadside roadside) { return (IsOnSnow(tile) && !(_settings_game.game_creation.landscape == LT_TROPIC && HasGrfMiscBit(GMB_DESERT_PAVED_ROADS) && @@ -1183,7 +1197,7 @@ void DrawTramCatenary(const TileInfo *ti, RoadBits tram) if (IsInvisibilitySet(TO_CATENARY)) return; /* Don't draw the catenary under a low bridge */ - if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_CATENARY)) { + if (IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_CATENARY)) { int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); if (height <= GetTileMaxZ(ti->tile) + 1) return; @@ -1245,7 +1259,7 @@ static void DrawRoadBits(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { image += 19; } else { switch (roadside) { @@ -1290,7 +1304,7 @@ static void DrawRoadBits(TileInfo *ti) if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return; /* Do not draw details (street lights, trees) under low bridge */ - if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && (roadside == ROADSIDE_TREES || roadside == ROADSIDE_STREET_LIGHTS)) { + if (IsBridgeAbove(ti->tile) && (roadside == ROADSIDE_TREES || roadside == ROADSIDE_STREET_LIGHTS)) { int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); int minz = GetTileMaxZ(ti->tile) + 2; @@ -1328,7 +1342,7 @@ static void DrawTile_Road(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { road += 19; } else { switch (roadside) { @@ -1354,7 +1368,7 @@ static void DrawTile_Road(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { image += 8; } else { switch (roadside) { @@ -1413,9 +1427,6 @@ void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt) PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company); const DrawTileSprites *dts = (rt == ROADTYPE_TRAM) ? &_tram_depot[dir] : &_road_depot[dir]; - x += 33; - y += 17; - DrawSprite(dts->ground.sprite, PAL_NONE, x, y); DrawOrigTileSeqInGUI(x, y, dts, palette); } @@ -1763,6 +1774,11 @@ static void ChangeTileOwner_Road(TileIndex tile, Owner old_owner, Owner new_owne Company::Get(new_owner)->infrastructure.road[rt] += 2; SetTileOwner(tile, new_owner); + for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) { + if (GetRoadOwner(tile, rt) == old_owner) { + SetRoadOwner(tile, rt, new_owner); + } + } } } return; diff --git a/src/road_func.h b/src/road_func.h index bfe261980c..c4af229d53 100644 --- a/src/road_func.h +++ b/src/road_func.h @@ -37,6 +37,16 @@ static inline bool IsValidRoadType(RoadType rt) return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM; } +/** + * Whether the given roadtype is valid. + * @param rt the roadtype to check for validness + * @return true if and only if valid + */ +static inline bool IsValidRoadBits(RoadBits r) +{ + return r < ROAD_END; +} + /** * Maps a RoadType to the corresponding RoadTypes value * @@ -45,6 +55,7 @@ static inline bool IsValidRoadType(RoadType rt) */ static inline RoadTypes RoadTypeToRoadTypes(RoadType rt) { + assert(IsValidRoadType(rt)); return (RoadTypes)(1 << rt); } @@ -73,6 +84,7 @@ static inline RoadTypes ComplementRoadTypes(RoadTypes r) */ static inline RoadBits ComplementRoadBits(RoadBits r) { + assert(IsValidRoadBits(r)); return (RoadBits)(ROAD_ALL ^ r); } @@ -86,6 +98,7 @@ static inline RoadBits ComplementRoadBits(RoadBits r) */ static inline RoadBits MirrorRoadBits(RoadBits r) { + assert(IsValidRoadBits(r)); return (RoadBits)(GB(r, 0, 2) << 2 | GB(r, 2, 2)); } @@ -100,6 +113,7 @@ static inline RoadBits MirrorRoadBits(RoadBits r) */ static inline RoadBits RotateRoadBits(RoadBits r, DiagDirDiff rot) { + assert(IsValidRoadBits(r)); for (; rot > (DiagDirDiff)0; rot--) { r = (RoadBits)(GB(r, 0, 1) << 3 | GB(r, 1, 3)); } @@ -114,6 +128,7 @@ static inline RoadBits RotateRoadBits(RoadBits r, DiagDirDiff rot) */ static inline bool IsStraightRoad(RoadBits r) { + assert(IsValidRoadBits(r)); return (r == ROAD_X || r == ROAD_Y); } @@ -128,6 +143,7 @@ static inline bool IsStraightRoad(RoadBits r) */ static inline RoadBits DiagDirToRoadBits(DiagDirection d) { + assert(IsValidDiagDirection(d)); return (RoadBits)(ROAD_NW << (3 ^ d)); } @@ -142,6 +158,7 @@ static inline RoadBits DiagDirToRoadBits(DiagDirection d) */ static inline RoadBits AxisToRoadBits(Axis a) { + assert(IsValidAxis(a)); return a == AXIS_X ? ROAD_X : ROAD_Y; } @@ -154,7 +171,7 @@ static inline RoadBits AxisToRoadBits(Axis a) */ static inline Money RoadMaintenanceCost(RoadType roadtype, uint32 num) { - assert(roadtype < ROADTYPE_END); + assert(IsValidRoadType(roadtype)); return (_price[PR_INFRASTRUCTURE_ROAD] * (roadtype == ROADTYPE_TRAM ? 3 : 2) * num * (1 + IntSqrt(num))) >> 9; // 2 bits fraction for the multiplier and 7 bits scaling. } diff --git a/src/road_gui.cpp b/src/road_gui.cpp index 388033382a..b158482ef3 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -28,11 +28,14 @@ #include "company_base.h" #include "hotkeys.h" #include "road_gui.h" +#include "zoom_func.h" #include "widgets/road_widget.h" #include "table/strings.h" +#include "safeguards.h" + static void ShowRVStationPicker(Window *parent, RoadStopType rs); static void ShowRoadDepotPicker(Window *parent); @@ -63,7 +66,7 @@ static DiagDirection _road_station_picker_orientation; void CcPlaySound1D(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { - if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); } /** @@ -75,7 +78,7 @@ static void PlaceRoad_Bridge(TileIndex tile, Window *w) if (IsBridgeTile(tile)) { TileIndex other_tile = GetOtherTunnelBridgeEnd(tile); Point pt = {0, 0}; - w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, tile, other_tile); + w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, other_tile, tile); } else { VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); } @@ -93,7 +96,7 @@ static void PlaceRoad_Bridge(TileIndex tile, Window *w) void CcBuildRoadTunnel(const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { - if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_2, start_tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, start_tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); DiagDirection start_direction = ReverseDiagDir(GetTunnelBridgeDirection(start_tile)); @@ -174,7 +177,7 @@ void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2 if (result.Failed()) return; DiagDirection dir = (DiagDirection)GB(p1, 0, 2); - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); ConnectRoadToStructure(tile, dir); } @@ -198,7 +201,7 @@ void CcRoadStop(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) if (result.Failed()) return; DiagDirection dir = (DiagDirection)GB(p2, 6, 2); - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); TileArea roadstop_area(tile, GB(p1, 0, 8), GB(p1, 8, 8)); TILE_AREA_LOOP(cur_tile, roadstop_area) { @@ -335,11 +338,18 @@ struct BuildRoadToolbarWindow : Window { virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; - this->SetWidgetsDisabledState(!CanBuildVehicleInfrastructure(VEH_ROAD), + + bool can_build = CanBuildVehicleInfrastructure(VEH_ROAD); + this->SetWidgetsDisabledState(!can_build, WID_ROT_DEPOT, WID_ROT_BUS_STATION, WID_ROT_TRUCK_STATION, WIDGET_LIST_END); + if (!can_build) { + DeleteWindowById(WC_BUILD_DEPOT, TRANSPORT_ROAD); + DeleteWindowById(WC_BUS_STATION, TRANSPORT_ROAD); + DeleteWindowById(WC_TRUCK_STATION, TRANSPORT_ROAD); + } } /** @@ -632,13 +642,13 @@ struct BuildRoadToolbarWindow : Window { case DDSP_REMOVE_BUSSTOP: { TileArea ta(start_tile, end_tile); - DoCommandP(ta.tile, ta.w | ta.h << 8, ROADSTOP_BUS, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_BUS]), CcPlaySound1D); + DoCommandP(ta.tile, ta.w | ta.h << 8, (_ctrl_pressed << 1) | ROADSTOP_BUS, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_BUS]), CcPlaySound1D); break; } case DDSP_REMOVE_TRUCKSTOP: { TileArea ta(start_tile, end_tile); - DoCommandP(ta.tile, ta.w | ta.h << 8, ROADSTOP_TRUCK, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_TRUCK]), CcPlaySound1D); + DoCommandP(ta.tile, ta.w | ta.h << 8, (_ctrl_pressed << 1) | ROADSTOP_TRUCK, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_TRUCK]), CcPlaySound1D); break; } } @@ -838,7 +848,7 @@ static WindowDesc _build_road_scen_desc( /** * Show the road building toolbar in the scenario editor. - * @return The just opened toolbar. + * @return The just opened toolbar, or \c NULL if the toolbar was already open. */ Window *ShowBuildRoadScenToolbar() { @@ -860,11 +870,19 @@ struct BuildRoadDepotWindow : public PickerWindowBase { this->FinishInitNested(TRANSPORT_ROAD); } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (!IsInsideMM(widget, WID_BROD_DEPOT_NE, WID_BROD_DEPOT_NW + 1)) return; + + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(48) + 2; + } + virtual void DrawWidget(const Rect &r, int widget) const { if (!IsInsideMM(widget, WID_BROD_DEPOT_NE, WID_BROD_DEPOT_NW + 1)) return; - DrawRoadDepotSprite(r.left - 1, r.top, (DiagDirection)(widget - WID_BROD_DEPOT_NE + DIAGDIR_NE), _cur_roadtype); + DrawRoadDepotSprite(r.left + 1 + ScaleGUITrad(31), r.bottom - ScaleGUITrad(31), (DiagDirection)(widget - WID_BROD_DEPOT_NE + DIAGDIR_NE), _cur_roadtype); } virtual void OnClick(Point pt, int widget, int click_count) @@ -988,12 +1006,20 @@ struct BuildRoadStationWindow : public PickerWindowBase { } } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (!IsInsideMM(widget, WID_BROS_STATION_NE, WID_BROS_STATION_Y + 1)) return; + + size->width = ScaleGUITrad(64) + 2; + size->height = ScaleGUITrad(48) + 2; + } + virtual void DrawWidget(const Rect &r, int widget) const { if (!IsInsideMM(widget, WID_BROS_STATION_NE, WID_BROS_STATION_Y + 1)) return; StationType st = (this->window_class == WC_BUS_STATION) ? STATION_BUS : STATION_TRUCK; - StationPickerDrawSprite(r.left + TILE_PIXELS, r.bottom - TILE_PIXELS, st, INVALID_RAILTYPE, widget < WID_BROS_STATION_X ? ROADTYPE_ROAD : _cur_roadtype, widget - WID_BROS_STATION_NE); + StationPickerDrawSprite(r.left + 1 + ScaleGUITrad(31), r.bottom - ScaleGUITrad(31), st, INVALID_RAILTYPE, widget < WID_BROS_STATION_X ? ROADTYPE_ROAD : _cur_roadtype, widget - WID_BROS_STATION_NE); } virtual void OnClick(Point pt, int widget, int click_count) diff --git a/src/road_map.cpp b/src/road_map.cpp index 2c24582ee7..4984117bab 100644 --- a/src/road_map.cpp +++ b/src/road_map.cpp @@ -13,6 +13,8 @@ #include "station_map.h" #include "tunnelbridge_map.h" +#include "safeguards.h" + /** * Returns the RoadBits on an arbitrary tile diff --git a/src/road_map.h b/src/road_map.h index 6fe1a02b1f..693730294e 100644 --- a/src/road_map.h +++ b/src/road_map.h @@ -461,7 +461,7 @@ enum Roadside { */ static inline Roadside GetRoadside(TileIndex tile) { - return (Roadside)GB(_m[tile].m6, 3, 3); + return (Roadside)GB(_me[tile].m6, 3, 3); } /** @@ -471,7 +471,7 @@ static inline Roadside GetRoadside(TileIndex tile) */ static inline void SetRoadside(TileIndex tile, Roadside s) { - SB(_m[tile].m6, 3, 3, s); + SB(_me[tile].m6, 3, 3, s); } /** @@ -558,7 +558,7 @@ static inline void MakeRoadNormal(TileIndex t, RoadBits bits, RoadTypes rot, Tow _m[t].m3 = (HasBit(rot, ROADTYPE_TRAM) ? bits : 0); _m[t].m4 = 0; _m[t].m5 = (HasBit(rot, ROADTYPE_ROAD) ? bits : 0) | ROAD_TILE_NORMAL << 6; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = rot << 6; SetRoadOwner(t, ROADTYPE_TRAM, tram); } @@ -582,7 +582,7 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner r _m[t].m3 = rat; _m[t].m4 = 0; _m[t].m5 = ROAD_TILE_CROSSING << 6 | roaddir; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = rot << 6 | road; SetRoadOwner(t, ROADTYPE_TRAM, tram); } @@ -603,7 +603,7 @@ static inline void MakeRoadDepot(TileIndex t, Owner owner, DepotID did, DiagDire _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = ROAD_TILE_DEPOT << 6 | dir; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = RoadTypeToRoadTypes(rt) << 6 | owner; SetRoadOwner(t, ROADTYPE_TRAM, owner); } diff --git a/src/roadstop.cpp b/src/roadstop.cpp index 193e915d21..ca049979ca 100644 --- a/src/roadstop.cpp +++ b/src/roadstop.cpp @@ -16,6 +16,8 @@ #include "station_base.h" #include "vehicle_func.h" +#include "safeguards.h" + /** The pool of roadstops. */ RoadStopPool _roadstop_pool("RoadStop"); INSTANTIATE_POOL_METHODS(RoadStop) diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index aa4791bf7a..35c671d355 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -38,7 +38,9 @@ #include "table/strings.h" -static const uint16 _roadveh_images[63] = { +#include "safeguards.h" + +static const uint16 _roadveh_images[] = { 0xCD4, 0xCDC, 0xCE4, 0xCEC, 0xCF4, 0xCFC, 0xD0C, 0xD14, 0xD24, 0xD1C, 0xD2C, 0xD04, 0xD1C, 0xD24, 0xD6C, 0xD74, 0xD7C, 0xC14, 0xC1C, 0xC24, 0xC2C, 0xC34, 0xC3C, 0xC4C, @@ -49,7 +51,7 @@ static const uint16 _roadveh_images[63] = { 0xC5C, 0xC64, 0xC6C, 0xC74, 0xC84, 0xC94, 0xCA4 }; -static const uint16 _roadveh_full_adder[63] = { +static const uint16 _roadveh_full_adder[] = { 0, 88, 0, 0, 0, 0, 48, 48, 48, 48, 0, 0, 64, 64, 0, 16, 16, 0, 88, 0, 0, 0, 0, 48, @@ -59,6 +61,13 @@ static const uint16 _roadveh_full_adder[63] = { 0, 16, 16, 0, 8, 8, 8, 8, 0, 0, 0, 8, 8, 8, 8 }; +assert_compile(lengthof(_roadveh_images) == lengthof(_roadveh_full_adder)); + +template <> +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] = { @@ -98,10 +107,10 @@ int RoadVehicle::GetDisplayImageWidth(Point *offset) const int reference_width = ROADVEHINFO_DEFAULT_VEHICLE_WIDTH; if (offset != NULL) { - offset->x = reference_width / 2; + offset->x = ScaleGUITrad(reference_width) / 2; offset->y = 0; } - return this->gcache.cached_veh_length * reference_width / VEHICLE_LENGTH; + return ScaleGUITrad(this->gcache.cached_veh_length * reference_width / VEHICLE_LENGTH); } static SpriteID GetRoadVehIcon(EngineID engine, EngineImageType image_type) @@ -116,6 +125,7 @@ static SpriteID GetRoadVehIcon(EngineID engine, EngineImageType image_type) spritenum = e->original_image_index; } + assert(IsValidImageIndex(spritenum)); return DIR_W + _roadveh_images[spritenum]; } @@ -131,6 +141,7 @@ SpriteID RoadVehicle::GetImage(Direction direction, EngineImageType image_type) spritenum = this->GetEngine()->original_image_index; } + assert(IsValidImageIndex(spritenum)); sprite = direction + _roadveh_images[spritenum]; if (this->cargo.StoredCount() >= this->cargo_cap / 2U) sprite += _roadveh_full_adder[spritenum]; @@ -151,7 +162,9 @@ void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID eng { SpriteID sprite = GetRoadVehIcon(engine, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - preferred_x = Clamp(preferred_x, left - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI), right - UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI) - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI)); + preferred_x = Clamp(preferred_x, + left - UnScaleGUI(real_sprite->x_offs), + right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs)); DrawSprite(sprite, pal, preferred_x, y); } @@ -168,10 +181,10 @@ void GetRoadVehSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs { const Sprite *spr = GetSprite(GetRoadVehIcon(engine, image_type), ST_NORMAL); - width = UnScaleByZoom(spr->width, ZOOM_LVL_GUI); - height = UnScaleByZoom(spr->height, ZOOM_LVL_GUI); - xoffs = UnScaleByZoom(spr->x_offs, ZOOM_LVL_GUI); - yoffs = UnScaleByZoom(spr->y_offs, ZOOM_LVL_GUI); + width = UnScaleGUI(spr->width); + height = UnScaleGUI(spr->height); + xoffs = UnScaleGUI(spr->x_offs); + yoffs = UnScaleGUI(spr->y_offs); } /** @@ -232,7 +245,7 @@ void RoadVehUpdateCache(RoadVehicle *v, bool same_length) v->gcache.cached_total_length += u->gcache.cached_veh_length; /* Update visual effect */ - v->UpdateVisualEffect(); + u->UpdateVisualEffect(); /* Update cargo aging period. */ u->vcache.cached_cargo_age_period = GetVehicleProperty(u, PROP_ROADVEH_CARGO_AGE_PERIOD, EngInfo(u->engine_type)->cargo_age_period); @@ -318,7 +331,7 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin /* Initialize cached values for realistic acceleration. */ if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) v->CargoChanged(); - VehicleUpdatePosition(v); + v->UpdatePosition(); CheckConsistencyOfArticulatedVehicle(v); } @@ -449,7 +462,7 @@ inline int RoadVehicle::GetCurrentMaxSpeed() const } } - return min(max_speed, this->current_order.max_speed * 2); + return min(max_speed, this->current_order.GetMaxSpeed() * 2); } /** @@ -795,12 +808,6 @@ static void RoadVehCheckOvertake(RoadVehicle *v, RoadVehicle *u) od.v = v; od.u = u; - if (u->vcache.cached_max_speed >= v->vcache.cached_max_speed && - !(u->vehstatus & VS_STOPPED) && - u->cur_speed != 0) { - return; - } - /* Trams can't overtake other trams */ if (v->roadtype == ROADTYPE_TRAM) return; @@ -816,6 +823,16 @@ static void RoadVehCheckOvertake(RoadVehicle *v, RoadVehicle *u) /* Check if vehicle is in a road stop, depot, tunnel or bridge or not on a straight road */ if (v->state >= RVSB_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->state & RVSB_TRACKDIR_MASK))) return; + /* Can't overtake a vehicle that is moving faster than us. If the vehicle in front is + * accelerating, take the maximum speed for the comparison, else the current speed. + * Original acceleration always accelerates, so always use the maximum speed. */ + int u_speed = (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL || u->GetAcceleration() > 0) ? u->GetCurrentMaxSpeed() : u->cur_speed; + if (u_speed >= v->GetCurrentMaxSpeed() && + !(u->vehstatus & VS_STOPPED) && + u->cur_speed != 0) { + return; + } + od.trackdir = DiagDirToDiagTrackdir(DirToDiagDir(v->direction)); /* Are the current and the next tile suitable for overtaking? @@ -836,7 +853,7 @@ static void RoadVehCheckOvertake(RoadVehicle *v, RoadVehicle *u) v->overtaking = RVSB_DRIVE_SIDE; } -static void RoadZPosAffectSpeed(RoadVehicle *v, byte old_z) +static void RoadZPosAffectSpeed(RoadVehicle *v, int old_z) { if (old_z == v->z_pos || _settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) return; @@ -1006,7 +1023,7 @@ static bool RoadVehLeaveDepot(RoadVehicle *v, bool first) v->x_pos = x; v->y_pos = y; - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateInclination(true, true); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); @@ -1098,7 +1115,7 @@ static bool CanBuildTramTrackOnTile(CompanyID c, TileIndex t, RoadBits r) return ret.Succeeded(); } -static bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev) +bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev) { if (v->overtaking != 0) { if (IsTileType(v->tile, MP_STATION)) { @@ -1135,15 +1152,15 @@ static bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *p /* Vehicle has just entered a bridge or tunnel */ v->x_pos = gp.x; v->y_pos = gp.y; - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateInclination(true, true); return true; } v->x_pos = gp.x; v->y_pos = gp.y; - VehicleUpdatePosition(v); - if ((v->vehstatus & VS_HIDDEN) == 0) VehicleUpdateViewport(v, true); + v->UpdatePosition(); + if ((v->vehstatus & VS_HIDDEN) == 0) v->Vehicle::UpdateViewport(true); return true; } @@ -1292,7 +1309,7 @@ again: } v->x_pos = x; v->y_pos = y; - VehicleUpdatePosition(v); + v->UpdatePosition(); RoadZPosAffectSpeed(v, v->UpdateInclination(true, true)); return true; } @@ -1358,7 +1375,7 @@ again: v->x_pos = x; v->y_pos = y; - VehicleUpdatePosition(v); + v->UpdatePosition(); RoadZPosAffectSpeed(v, v->UpdateInclination(true, true)); return true; } @@ -1407,14 +1424,13 @@ again: if (new_dir != old_dir) { v->direction = new_dir; if (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) v->cur_speed -= v->cur_speed >> 2; - if (old_dir != v->state) { - /* The vehicle is in a road stop */ - v->UpdateInclination(false, true); - /* Note, return here means that the frame counter is not incremented - * for vehicles changing direction in a road stop. This causes frames to - * be repeated. (XXX) Is this intended? */ - return true; - } + + /* Delay the vehicle in curves by making it require one additional frame per turning direction (two in total). + * A vehicle has to spend at least 9 frames on a tile, so the following articulated part can follow. + * (The following part may only be one tile behind, and the front part is moved before the following ones.) + * The short (inner) curve has 8 frames, this elongates it to 10. */ + v->UpdateInclination(false, true); + return true; } /* If the vehicle is in a normal road stop and the frame equals the stop frame OR @@ -1447,7 +1463,7 @@ again: v->frame++; v->x_pos = x; v->y_pos = y; - VehicleUpdatePosition(v); + v->UpdatePosition(); RoadZPosAffectSpeed(v, v->UpdateInclination(true, false)); return true; } @@ -1496,7 +1512,7 @@ again: if (!HasBit(r, VETS_ENTERED_WORMHOLE)) v->frame++; v->x_pos = x; v->y_pos = y; - VehicleUpdatePosition(v); + v->UpdatePosition(); RoadZPosAffectSpeed(v, v->UpdateInclination(false, true)); return true; } diff --git a/src/roadveh_gui.cpp b/src/roadveh_gui.cpp index bf837bbad3..46ff6cea78 100644 --- a/src/roadveh_gui.cpp +++ b/src/roadveh_gui.cpp @@ -15,9 +15,12 @@ #include "strings_func.h" #include "vehicle_func.h" #include "string_func.h" +#include "zoom_func.h" #include "table/strings.h" +#include "safeguards.h" + /** * Draw the details for the given vehicle at the given position * @@ -28,7 +31,7 @@ */ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y) { - uint y_offset = v->HasArticulatedPart() ? 15 : 0; // Draw the first line below the sprite of an articulated RV instead of after it. + uint y_offset = v->HasArticulatedPart() ? ScaleGUITrad(15) : 0; // Draw the first line below the sprite of an articulated RV instead of after it. StringID str; Money feeder_share = 0; @@ -134,7 +137,7 @@ void DrawRoadVehImage(const Vehicle *v, int left, int right, int y, VehicleID se DrawPixelInfo tmp_dpi, *old_dpi; int max_width = right - left + 1; - if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, 14)) return; + if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, ScaleGUITrad(14))) return; old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; @@ -146,14 +149,14 @@ void DrawRoadVehImage(const Vehicle *v, int left, int right, int y, VehicleID se if (rtl ? px + width > 0 : px - width < max_width) { PaletteID pal = (u->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(u); - DrawSprite(u->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), 6 + offset.y); + DrawSprite(u->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), ScaleGUITrad(6) + offset.y); } px += rtl ? -width : width; } if (v->index == selection) { - DrawFrameRect((rtl ? px : 0), 0, (rtl ? max_width : px) - 1, 12, COLOUR_WHITE, FR_BORDERONLY); + DrawFrameRect((rtl ? px : 0), 0, (rtl ? max_width : px) - 1, ScaleGUITrad(13) - 1, COLOUR_WHITE, FR_BORDERONLY); } _cur_dpi = old_dpi; diff --git a/src/safeguards.h b/src/safeguards.h new file mode 100644 index 0000000000..f447627e68 --- /dev/null +++ b/src/safeguards.h @@ -0,0 +1,74 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file safeguards.h A number of safeguards to prevent using unsafe methods. + * + * Unsafe methods are, for example, strndup and strncpy because they may leave the + * string without a null termination, but also strdup and strndup because they can + * return NULL and then all strdups would need to be guarded against that instead + * of using the current MallocT/ReallocT/CallocT technique of just giving the user + * an error that too much memory was used instead of spreading that code though + * the whole code base. + */ + +#ifndef SAFEGUARDS_H +#define SAFEGUARDS_H + +/* Use MallocT instead. */ +#define malloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use MallocT instead. */ +#define calloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use ReallocT instead. */ +#define realloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use stredup instead. */ +#define strdup SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strndup SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use strecpy instead. */ +#define strcpy SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strncpy SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use strecat instead. */ +#define strcat SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strncat SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use seprintf instead. */ +#define sprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define snprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use vseprintf instead. */ +#define vsprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define vsnprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use fgets instead. */ +#define gets SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* No clear replacement. */ +#define strtok SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef min +#undef min +#endif + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef max +#undef max +#endif + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef abs +#undef abs +#endif + +#endif /* SAFEGUARDS_H */ diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index a715c9162f..9690481154 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -16,6 +16,7 @@ #include "../fios.h" #include "../gamelog_internal.h" #include "../network/network.h" +#include "../network/network_func.h" #include "../gfxinit.h" #include "../viewport_func.h" #include "../industry.h" @@ -51,13 +52,17 @@ #include "../core/backup_type.hpp" #include "../smallmap_gui.h" #include "../news_func.h" +#include "../order_backup.h" #include "../error.h" +#include "../disaster_vehicle.h" #include "saveload_internal.h" #include +#include "../safeguards.h" + extern Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY); /** @@ -74,7 +79,7 @@ void SetWaterClassDependingOnSurroundings(TileIndex t, bool include_invalid_wate { /* If the slope is not flat, we always assume 'land' (if allowed). Also for one-corner-raised-shores. * Note: Wrt. autosloping under industry tiles this is the most fool-proof behaviour. */ - if (GetTileSlope(t) != SLOPE_FLAT) { + if (!IsTileFlat(t)) { if (include_invalid_water_class) { SetWaterClass(t, WATER_CLASS_INVALID); return; @@ -248,6 +253,35 @@ static void InitializeWindowsAndCaches() } } + /* Count number of objects per type */ + Object *o; + FOR_ALL_OBJECTS(o) { + Object::IncTypeCount(o->type); + } + + /* Identify owners of persistent storage arrays */ + Industry *i; + FOR_ALL_INDUSTRIES(i) { + if (i->psa != NULL) { + i->psa->feature = GSF_INDUSTRIES; + i->psa->tile = i->location.tile; + } + } + Station *s; + FOR_ALL_STATIONS(s) { + if (s->airport.psa != NULL) { + s->airport.psa->feature = GSF_AIRPORTS; + s->airport.psa->tile = s->airport.tile; + } + } + Town *t; + FOR_ALL_TOWNS(t) { + for (std::list::iterator it = t->psa_list.begin(); it != t->psa_list.end(); ++it) { + (*it)->feature = GSF_FAKE_TOWNS; + (*it)->tile = t->xy; + } + } + RecomputePrices(); GroupStatistics::UpdateAfterLoad(); @@ -472,6 +506,18 @@ static uint FixVehicleInclination(Vehicle *v, Direction dir) return 1U << GVF_GOINGUP_BIT; } +/** + * Checks for the possibility that a bridge may be on this tile + * These are in fact all the tile types on which a bridge can be found + * @param t The tile to analyze + * @return True if a bridge might have been present prior to savegame 194. + */ +static inline bool MayHaveBridgeAbove(TileIndex t) +{ + return IsTileType(t, MP_CLEAR) || IsTileType(t, MP_RAILWAY) || IsTileType(t, MP_ROAD) || + IsTileType(t, MP_WATER) || IsTileType(t, MP_TUNNELBRIDGE) || IsTileType(t, MP_OBJECT); +} + /** * Perform a (large) amount of savegame conversion *magic* in order to * load older savegames and to fill the caches for various purposes. @@ -537,6 +583,23 @@ bool AfterLoadGame() } } + if (IsSavegameVersionBefore(194)) { + _settings_game.construction.max_heightlevel = 15; + + /* In old savegame versions, the heightlevel was coded in bits 0..3 of the type field */ + for (TileIndex t = 0; t < map_size; t++) { + _m[t].height = GB(_m[t].type, 0, 4); + SB(_m[t].type, 0, 2, GB(_me[t].m6, 0, 2)); + SB(_me[t].m6, 0, 2, 0); + if (MayHaveBridgeAbove(t)) { + SB(_m[t].type, 2, 2, GB(_me[t].m6, 6, 2)); + SB(_me[t].m6, 6, 2, 0); + } else { + SB(_m[t].type, 2, 2, 0); + } + } + } + /* in version 2.1 of the savegame, town owner was unified. */ if (IsSavegameVersionBefore(2, 1)) ConvertTownOwner(); @@ -762,7 +825,7 @@ bool AfterLoadGame() break; case MP_STATION: { - if (HasBit(_m[t].m6, 3)) SetBit(_m[t].m6, 2); + if (HasBit(_me[t].m6, 3)) SetBit(_me[t].m6, 2); StationGfx gfx = GetStationGfx(t); StationType st; if ( IsInsideMM(gfx, 0, 8)) { // Rail station @@ -800,7 +863,7 @@ bool AfterLoadGame() ResetSignalHandlers(); return false; } - SB(_m[t].m6, 3, 3, st); + SB(_me[t].m6, 3, 3, st); break; } } @@ -974,7 +1037,7 @@ bool AfterLoadGame() case ROAD_TILE_NORMAL: SB(_m[t].m4, 0, 4, GB(_m[t].m5, 0, 4)); SB(_m[t].m4, 4, 4, 0); - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); break; case ROAD_TILE_CROSSING: SB(_m[t].m4, 5, 2, GB(_m[t].m5, 2, 2)); @@ -1013,19 +1076,19 @@ bool AfterLoadGame() switch (GetRoadTileType(t)) { default: SlErrorCorrupt("Invalid road tile type"); case ROAD_TILE_NORMAL: - SB(_me[t].m7, 0, 4, GB(_m[t].m3, 0, 4)); // road works - SB(_m[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground - SB(_m[t].m3, 0, 4, GB(_m[t].m4, 4, 4)); // tram bits - SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner - SB(_m[t].m5, 0, 4, GB(_m[t].m4, 0, 4)); // road bits + SB(_me[t].m7, 0, 4, GB(_m[t].m3, 0, 4)); // road works + SB(_me[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground + SB(_m[t].m3, 0, 4, GB(_m[t].m4, 4, 4)); // tram bits + SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner + SB(_m[t].m5, 0, 4, GB(_m[t].m4, 0, 4)); // road bits break; case ROAD_TILE_CROSSING: - SB(_me[t].m7, 0, 5, GB(_m[t].m4, 0, 5)); // road owner - SB(_m[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground - SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner - SB(_m[t].m5, 0, 1, GB(_m[t].m4, 6, 1)); // road axis - SB(_m[t].m5, 5, 1, GB(_m[t].m4, 5, 1)); // crossing state + SB(_me[t].m7, 0, 5, GB(_m[t].m4, 0, 5)); // road owner + SB(_me[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground + SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner + SB(_m[t].m5, 0, 1, GB(_m[t].m4, 6, 1)); // road axis + SB(_m[t].m5, 5, 1, GB(_m[t].m4, 5, 1)); // crossing state break; case ROAD_TILE_DEPOT: @@ -1042,7 +1105,7 @@ bool AfterLoadGame() if (!IsRoadStop(t)) break; if (fix_roadtypes) SetRoadTypes(t, (RoadTypes)GB(_m[t].m3, 0, 3)); - SB(_me[t].m7, 0, 5, HasBit(_m[t].m6, 2) ? OWNER_TOWN : GetTileOwner(t)); + SB(_me[t].m7, 0, 5, HasBit(_me[t].m6, 2) ? OWNER_TOWN : GetTileOwner(t)); SB(_m[t].m3, 4, 4, _m[t].m1); _m[t].m4 = 0; break; @@ -1056,7 +1119,7 @@ bool AfterLoadGame() SB(_me[t].m7, 0, 5, o); // road owner SB(_m[t].m3, 4, 4, o == OWNER_NONE ? OWNER_TOWN : o); // tram owner } - SB(_m[t].m6, 2, 4, GB(_m[t].m2, 4, 4)); // bridge type + SB(_me[t].m6, 2, 4, GB(_m[t].m2, 4, 4)); // bridge type SB(_me[t].m7, 5, 1, GB(_m[t].m4, 7, 1)); // snow/desert _m[t].m2 = 0; @@ -1100,7 +1163,7 @@ bool AfterLoadGame() if (GB(_m[t].m5, 3, 2) == 0) { MakeClear(t, CLEAR_GRASS, 3); } else { - if (GetTileSlope(t) != SLOPE_FLAT) { + if (!IsTileFlat(t)) { MakeShore(t); } else { if (GetTileOwner(t) == OWNER_WATER) { @@ -1192,7 +1255,7 @@ bool AfterLoadGame() } FOR_ALL_TRAINS(v) { - if (v->IsFrontEngine() || v->IsFreeWagon()) v->ConsistChanged(true); + if (v->IsFrontEngine() || v->IsFreeWagon()) v->ConsistChanged(CCF_TRACK); } } @@ -1219,11 +1282,15 @@ bool AfterLoadGame() switch (GetTileType(t)) { case MP_RAILWAY: if (HasSignals(t)) { + /* Original signal type/variant was stored in m4 but since saveload + * version 48 they are in m2. The bits has been already moved to m2 + * (see the code somewhere above) so don't use m4, use m2 instead. */ + /* convert PBS signals to combo-signals */ - if (HasBit(_m[t].m2, 2)) SetSignalType(t, TRACK_X, SIGTYPE_COMBO); + if (HasBit(_m[t].m2, 2)) SB(_m[t].m2, 0, 2, SIGTYPE_COMBO); /* move the signal variant back */ - SetSignalVariant(t, TRACK_X, HasBit(_m[t].m2, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC); + SB(_m[t].m2, 2, 1, HasBit(_m[t].m2, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC); ClrBit(_m[t].m2, 3); } @@ -1444,7 +1511,7 @@ bool AfterLoadGame() if (IsSavegameVersionBefore(52)) { for (TileIndex t = 0; t < map_size; t++) { - if (IsStatueTile(t)) { + if (IsTileType(t, MP_OBJECT) && _m[t].m5 == OBJECT_STATUE) { _m[t].m2 = CalcClosestTownFromTile(t)->index; } } @@ -1503,13 +1570,15 @@ bool AfterLoadGame() } if (IsSavegameVersionBefore(64)) { - /* copy the signal type/variant and move signal states bits */ + /* Since now we allow different signal types and variants on a single tile. + * Move signal states to m4 to make room and clone the signal type/variant. */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) { + /* move signal states */ SetSignalStates(t, GB(_m[t].m2, 4, 4)); - SetSignalVariant(t, INVALID_TRACK, GetSignalVariant(t, TRACK_X)); - SetSignalType(t, INVALID_TRACK, GetSignalType(t, TRACK_X)); - ClrBit(_m[t].m2, 7); + SB(_m[t].m2, 4, 4, 0); + /* clone signal type and variant */ + SB(_m[t].m2, 4, 3, GB(_m[t].m2, 0, 3)); } } } @@ -1562,7 +1631,7 @@ bool AfterLoadGame() FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) { st->goods[c].last_speed = 0; - if (st->goods[c].cargo.AvailableCount() != 0) SetBit(st->goods[c].acceptance_pickup, GoodsEntry::GES_PICKUP); + if (st->goods[c].cargo.AvailableCount() != 0) SetBit(st->goods[c].status, GoodsEntry::GES_RATING); } } } @@ -1706,7 +1775,7 @@ bool AfterLoadGame() * on its neighbouring tiles. Done after river and canal updates to * ensure neighbours are correct. */ for (TileIndex t = 0; t < map_size; t++) { - if (GetTileSlope(t) != SLOPE_FLAT) continue; + if (!IsTileFlat(t)) continue; if (IsTileType(t, MP_WATER) && IsLock(t)) SetWaterClassDependingOnSurroundings(t, false); if (IsTileType(t, MP_STATION) && (IsDock(t) || IsBuoy(t))) SetWaterClassDependingOnSurroundings(t, false); @@ -1784,7 +1853,7 @@ bool AfterLoadGame() /* Increase HouseAnimationFrame from 5 to 7 bits */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) { - SB(_m[t].m6, 2, 6, GB(_m[t].m6, 3, 5)); + SB(_me[t].m6, 2, 6, GB(_me[t].m6, 3, 5)); SB(_m[t].m3, 5, 1, 0); } } @@ -1940,8 +2009,8 @@ bool AfterLoadGame() if (!IsTileType(t, MP_OBJECT)) continue; /* Reordering/generalisation of the object bits. */ - ObjectType type = GetObjectType(t); - SB(_m[t].m6, 2, 4, type == OBJECT_HQ ? GB(_m[t].m3, 2, 3) : 0); + ObjectType type = _m[t].m5; + SB(_me[t].m6, 2, 4, type == OBJECT_HQ ? GB(_m[t].m3, 2, 3) : 0); _m[t].m3 = type == OBJECT_HQ ? GB(_m[t].m3, 1, 1) | GB(_m[t].m3, 0, 1) << 4 : 0; /* Make sure those bits are clear as well! */ @@ -1962,12 +2031,12 @@ bool AfterLoadGame() uint offset = _m[t].m3; /* Also move the animation state. */ - _m[t].m3 = GB(_m[t].m6, 2, 4); - SB(_m[t].m6, 2, 4, 0); + _m[t].m3 = GB(_me[t].m6, 2, 4); + SB(_me[t].m6, 2, 4, 0); if (offset == 0) { /* No offset, so make the object. */ - ObjectType type = GetObjectType(t); + ObjectType type = _m[t].m5; int size = type == OBJECT_HQ ? 2 : 1; if (!Object::CanAllocateItem()) { @@ -2054,7 +2123,7 @@ bool AfterLoadGame() /* Delete small ufos heading for non-existing vehicles */ Vehicle *v; FOR_ALL_DISASTERVEHICLES(v) { - if (v->subtype == 2/*ST_SMALL_UFO*/ && v->current_order.GetDestination() != 0) { + if (v->subtype == 2 /* ST_SMALL_UFO */ && v->current_order.GetDestination() != 0) { const Vehicle *u = Vehicle::GetIfValid(v->dest_tile); if (u == NULL || u->type != VEH_ROAD || !RoadVehicle::From(u)->IsFrontEngine()) { delete v; @@ -2200,11 +2269,6 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(127)) { - Station *st; - FOR_ALL_STATIONS(st) UpdateStationAcceptance(st, false); - } - if (IsSavegameVersionBefore(128)) { const Depot *d; FOR_ALL_DEPOTS(d) { @@ -2340,7 +2404,10 @@ bool AfterLoadGame() UpdateAircraftCache(v); AircraftNextAirportPos_and_Order(v); /* get aircraft back on running altitude */ - if ((v->vehstatus & VS_CRASHED) == 0) SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlyingAltitude(v)); + if ((v->vehstatus & VS_CRASHED) == 0) { + GetAircraftFlightLevelBounds(v, &v->z_pos, NULL); + SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlightLevel(v)); + } } } } @@ -2352,9 +2419,9 @@ bool AfterLoadGame() case MP_HOUSE: if (GetHouseType(t) >= NEW_HOUSE_OFFSET) { uint per_proc = _me[t].m7; - _me[t].m7 = GB(_m[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6); + _me[t].m7 = GB(_me[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6); SB(_m[t].m3, 5, 1, 0); - SB(_m[t].m6, 2, 6, min(per_proc, 63)); + SB(_me[t].m6, 2, 6, min(per_proc, 63)); } break; @@ -2389,7 +2456,7 @@ bool AfterLoadGame() if (IsSavegameVersionBefore(149)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_STATION)) continue; - if (!IsBuoy(t) && !IsOilRig(t) && !(IsDock(t) && GetTileSlope(t) == SLOPE_FLAT)) { + if (!IsBuoy(t) && !IsOilRig(t) && !(IsDock(t) && IsTileFlat(t))) { SetWaterClass(t, WATER_CLASS_INVALID); } } @@ -2694,11 +2761,11 @@ bool AfterLoadGame() if (IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_FIELDS)) continue; uint fence = GB(_m[t].m4, 5, 3); if (fence != 0 && IsTileType(TILE_ADDXY(t, 1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(t, 1, 0), CLEAR_FIELDS)) { - SetFenceNE(TILE_ADDXY(t, 1, 0), fence); + SetFence(TILE_ADDXY(t, 1, 0), DIAGDIR_NE, fence); } fence = GB(_m[t].m4, 2, 3); if (fence != 0 && IsTileType(TILE_ADDXY(t, 0, 1), MP_CLEAR) && IsClearGround(TILE_ADDXY(t, 0, 1), CLEAR_FIELDS)) { - SetFenceNW(TILE_ADDXY(t, 0, 1), fence); + SetFence(TILE_ADDXY(t, 0, 1), DIAGDIR_NW, fence); } SB(_m[t].m4, 2, 3, 0); SB(_m[t].m4, 5, 3, 0); @@ -2814,6 +2881,100 @@ bool AfterLoadGame() _settings_game.locale.units_height = Clamp(_old_units, 0, 2); } + if (IsSavegameVersionBefore(186)) { + /* Move ObjectType from map to pool */ + for (TileIndex t = 0; t < map_size; t++) { + if (IsTileType(t, MP_OBJECT)) { + Object *o = Object::Get(_m[t].m2); + o->type = _m[t].m5; + _m[t].m5 = 0; // zero upper bits of (now bigger) ObjectID + } + } + } + + if (IsSavegameVersionBefore(188)) { + /* Fix articulated road vehicles. + * Some curves were shorter than other curves. + * Now they have the same length, but that means that trailing articulated parts will + * take longer to go through the curve than the parts in front which already left the courve. + * So, make articulated parts catch up. */ + RoadVehicle *v; + bool roadside = _settings_game.vehicle.road_side == 1; + SmallVector skip_frames; + FOR_ALL_ROADVEHICLES(v) { + if (!v->IsFrontEngine()) continue; + skip_frames.Clear(); + TileIndex prev_tile = v->tile; + uint prev_tile_skip = 0; + uint cur_skip = 0; + for (RoadVehicle *u = v; u != NULL; u = u->Next()) { + if (u->tile != prev_tile) { + prev_tile_skip = cur_skip; + prev_tile = u->tile; + } else { + cur_skip = prev_tile_skip; + } + + uint *this_skip = skip_frames.Append(); + *this_skip = prev_tile_skip; + + /* The following 3 curves now take longer than before */ + switch (u->state) { + case 2: + cur_skip++; + if (u->frame <= (roadside ? 9 : 5)) *this_skip = cur_skip; + break; + + case 4: + cur_skip++; + if (u->frame <= (roadside ? 5 : 9)) *this_skip = cur_skip; + break; + + case 5: + cur_skip++; + if (u->frame <= (roadside ? 4 : 2)) *this_skip = cur_skip; + break; + + default: + break; + } + } + while (cur_skip > skip_frames[0]) { + RoadVehicle *u = v; + RoadVehicle *prev = NULL; + for (uint *it = skip_frames.Begin(); it != skip_frames.End(); ++it, prev = u, u = u->Next()) { + extern bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev); + if (*it >= cur_skip) IndividualRoadVehicleController(u, prev); + } + cur_skip--; + } + } + } + + /* + * Only keep order-backups for network clients (and when replaying). + * If we are a network server or not networking, then we just loaded a previously + * saved-by-server savegame. There are no clients with a backup, so clear it. + * Furthermore before savegame version 192 the actual content was always corrupt. + */ + if (!_networking || _network_server || IsSavegameVersionBefore(192)) { +#ifndef DEBUG_DUMP_COMMANDS + /* Note: We cannot use CleanPool since that skips part of the destructor + * and then leaks un-reachable Orders in the order pool. */ + OrderBackup *ob; + FOR_ALL_ORDER_BACKUPS(ob) { + delete ob; + } +#endif + } + + + /* Station acceptance is some kind of cache */ + if (IsSavegameVersionBefore(127)) { + Station *st; + FOR_ALL_STATIONS(st) UpdateStationAcceptance(st, false); + } + /* Road stops is 'only' updating some caches */ AfterLoadRoadStops(); AfterLoadLabelMaps(); diff --git a/src/saveload/ai_sl.cpp b/src/saveload/ai_sl.cpp index 51d0a50b8c..e8b5339c0d 100644 --- a/src/saveload/ai_sl.cpp +++ b/src/saveload/ai_sl.cpp @@ -20,6 +20,8 @@ #include "../network/network.h" #include "../ai/ai_instance.hpp" +#include "../safeguards.h" + static char _ai_saveload_name[64]; static int _ai_saveload_version; static char _ai_saveload_settings[1024]; @@ -39,7 +41,7 @@ static void SaveReal_AIPL(int *index_ptr) AIConfig *config = AIConfig::GetConfig(index); if (config->HasScript()) { - ttd_strlcpy(_ai_saveload_name, config->GetName(), lengthof(_ai_saveload_name)); + strecpy(_ai_saveload_name, config->GetName(), lastof(_ai_saveload_name)); _ai_saveload_version = config->GetVersion(); } else { /* No AI is configured for this so store an empty string as name. */ @@ -49,7 +51,7 @@ static void SaveReal_AIPL(int *index_ptr) _ai_saveload_is_random = config->IsRandom(); _ai_saveload_settings[0] = '\0'; - config->SettingsToString(_ai_saveload_settings, lengthof(_ai_saveload_settings)); + config->SettingsToString(_ai_saveload_settings, lastof(_ai_saveload_settings)); SlObject(NULL, _ai_company); /* If the AI was active, store his data too */ diff --git a/src/saveload/airport_sl.cpp b/src/saveload/airport_sl.cpp index 00a4b2b012..1172d2593e 100644 --- a/src/saveload/airport_sl.cpp +++ b/src/saveload/airport_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" #include "newgrf_sl.h" +#include "../safeguards.h" + static void Save_APID() { Save_NewGRFMapping(_airport_mngr); diff --git a/src/saveload/animated_tile_sl.cpp b/src/saveload/animated_tile_sl.cpp index 2ccd42cb53..3fc5f61753 100644 --- a/src/saveload/animated_tile_sl.cpp +++ b/src/saveload/animated_tile_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + extern TileIndex *_animated_tile_list; extern uint _animated_tile_count; extern uint _animated_tile_allocated; diff --git a/src/saveload/autoreplace_sl.cpp b/src/saveload/autoreplace_sl.cpp index 0cb9cca8d1..99e945503d 100644 --- a/src/saveload/autoreplace_sl.cpp +++ b/src/saveload/autoreplace_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + static const SaveLoad _engine_renew_desc[] = { SLE_VAR(EngineRenew, from, SLE_UINT16), SLE_VAR(EngineRenew, to, SLE_UINT16), diff --git a/src/saveload/cargomonitor_sl.cpp b/src/saveload/cargomonitor_sl.cpp index 2188470a22..98ad95f090 100644 --- a/src/saveload/cargomonitor_sl.cpp +++ b/src/saveload/cargomonitor_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** Temporary storage of cargo monitoring data for loading or saving it. */ struct TempStorage { CargoMonitorID number; diff --git a/src/saveload/cargopacket_sl.cpp b/src/saveload/cargopacket_sl.cpp index fbc38cc852..dc8d4145e3 100644 --- a/src/saveload/cargopacket_sl.cpp +++ b/src/saveload/cargopacket_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** * Savegame conversion for cargopackets. */ diff --git a/src/saveload/cheat_sl.cpp b/src/saveload/cheat_sl.cpp index aa5648a888..4616b7e852 100644 --- a/src/saveload/cheat_sl.cpp +++ b/src/saveload/cheat_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** * Save the cheat values. */ diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index 5878f31ead..6ac22c2685 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -21,6 +21,8 @@ #include "table/strings.h" +#include "../safeguards.h" + /** * Converts an old company manager's face format to the new company manager's face format * @@ -256,7 +258,7 @@ static const SaveLoad _company_desc[] = { SLE_VAR(CompanyProperties, colour, SLE_UINT8), SLE_VAR(CompanyProperties, money_fraction, SLE_UINT8), - SLE_CONDVAR(CompanyProperties, avail_railtypes, SLE_UINT8, 0, 57), + SLE_CONDVAR(CompanyProperties, avail_railtypes, SLE_VAR_I32 | SLE_FILE_I8, 0, 57), SLE_VAR(CompanyProperties, block_preview, SLE_UINT8), SLE_CONDNULL(2, 0, 93), ///< cargo_types diff --git a/src/saveload/depot_sl.cpp b/src/saveload/depot_sl.cpp index 0d62d74cdf..861a541730 100644 --- a/src/saveload/depot_sl.cpp +++ b/src/saveload/depot_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + static TownID _town_index; static const SaveLoad _depot_desc[] = { diff --git a/src/saveload/economy_sl.cpp b/src/saveload/economy_sl.cpp index 86605bdfb7..dabf120fca 100644 --- a/src/saveload/economy_sl.cpp +++ b/src/saveload/economy_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** Prices in pre 126 savegames */ static void Load_PRIC() { diff --git a/src/saveload/engine_sl.cpp b/src/saveload/engine_sl.cpp index d02264cd6b..a568fead7b 100644 --- a/src/saveload/engine_sl.cpp +++ b/src/saveload/engine_sl.cpp @@ -12,7 +12,10 @@ #include "../stdafx.h" #include "saveload_internal.h" #include "../engine_base.h" -#include +#include "../string_func.h" +#include + +#include "../safeguards.h" static const SaveLoad _engine_desc[] = { SLE_CONDVAR(Engine, intro_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), @@ -37,6 +40,7 @@ static const SaveLoad _engine_desc[] = { SLE_CONDNULL(1, 0, 44), SLE_CONDVAR(Engine, company_avail, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), SLE_CONDVAR(Engine, company_avail, SLE_UINT16, 104, SL_MAX_VERSION), + SLE_CONDVAR(Engine, company_hidden, SLE_UINT16, 193, SL_MAX_VERSION), SLE_CONDSTR(Engine, name, SLE_STR, 0, 84, SL_MAX_VERSION), SLE_CONDNULL(16, 2, 143), // old reserved space @@ -44,11 +48,42 @@ static const SaveLoad _engine_desc[] = { SLE_END() }; -static std::map _temp_engine; +static std::vector _temp_engine; + +/** + * Allocate an Engine structure, but not using the pools. + * The allocated Engine must be freed using FreeEngine; + * @return Allocated engine. + */ +static Engine* CallocEngine() +{ + uint8 *zero = CallocT(sizeof(Engine)); + Engine *engine = new (zero) Engine(); + return engine; +} + +/** + * Deallocate an Engine constructed by CallocEngine. + * @param e Engine to free. + */ +static void FreeEngine(Engine *e) +{ + if (e != NULL) { + e->~Engine(); + free(e); + } +} Engine *GetTempDataEngine(EngineID index) { - return &_temp_engine[index]; + if (index < _temp_engine.size()) { + return _temp_engine[index]; + } else if (index == _temp_engine.size()) { + _temp_engine.push_back(CallocEngine()); + return _temp_engine[index]; + } else { + NOT_REACHED(); + } } static void Save_ENGN() @@ -105,10 +140,14 @@ void CopyTempEngineData() e->preview_company = se->preview_company; e->preview_wait = se->preview_wait; e->company_avail = se->company_avail; - if (se->name != NULL) e->name = strdup(se->name); + e->company_hidden = se->company_hidden; + if (se->name != NULL) e->name = stredup(se->name); } /* Get rid of temporary data */ + for (std::vector::iterator it = _temp_engine.begin(); it != _temp_engine.end(); ++it) { + FreeEngine(*it); + } _temp_engine.clear(); } diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp new file mode 100644 index 0000000000..be40cad17b --- /dev/null +++ b/src/saveload/extended_ver_sl.cpp @@ -0,0 +1,339 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file extended_ver_sl.cpp Functions related to handling save/load extended version info. + * + * Known extended features are stored in _sl_xv_feature_versions, features which are currently enabled/in use and their versions are stored in the savegame. + * On load, the list of features and their versions are loaded from the savegame. If the savegame contains a feature which is either unknown, or has too high a version, + * loading can be either aborted, or the feature can be ignored if the the feature flags in the savegame indicate that it can be ignored. The savegame may also list any additional + * chunk IDs which are associated with an extended feature, these can be discarded if the feature is discarded. + * This information is stored in the SLXI chunk, the contents of which has the following format: + * + * uint32 chunk version + * uint32 chunk flags + * uint32 number of sub chunks/features + * For each of N sub chunk/feature: + * uint32 feature flags (SlxiSubChunkFlags) + * uint16 feature version + * SLE_STR feature name + * uint32* extra data length [only present iff feature flags & XSCF_EXTRA_DATA_PRESENT] + * N bytes extra data + * uint32* chunk ID list count [only present iff feature flags & XSCF_CHUNK_ID_LIST_PRESENT] + * N x uint32 chunk ID list + */ + +#include "../stdafx.h" +#include "../debug.h" +#include "saveload.h" +#include "extended_ver_sl.h" + +#include + +#include "../safeguards.h" + +uint16 _sl_xv_feature_versions[XSLFI_SIZE]; ///< array of all known feature types and their current versions +bool _sl_is_ext_version; ///< is this an extended savegame version, with more info in the SLXI chunk? +bool _sl_is_faked_ext; ///< is this a faked extended savegame version, with no SLXI chunk? +std::vector _sl_xv_discardable_chunk_ids; ///< list of chunks IDs which we can discard if no chunk loader exists + +static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk + +const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { + { XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker +}; + +/** + * Extended save/load feature test + * + * First performs a tradional check on the provided @p savegame_version against @p savegame_version_from and @p savegame_version_to. + * Then, if the feature set in the constructor is not XSLFI_NULL, also check than the feature version is inclusively bounded by @p min_version and @p max_version, + * and return the combination of the two tests using the operator defined in the constructor. + * Otherwise just returns the result of the savegame version test + */ +bool SlXvFeatureTest::IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const +{ + bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to; + + if (this->feature == XSLFI_NULL) return savegame_version_ok; + + bool feature_ok = SlXvIsFeaturePresent(this->feature, this->min_version, this->max_version); + + switch (op) { + case XSLFTO_OR: + return savegame_version_ok || feature_ok; + + case XSLFTO_AND: + return savegame_version_ok && feature_ok; + + default: + NOT_REACHED(); + return false; + } +} + +/** + * Returns true if @p feature is present and has a version inclusively bounded by @p min_version and @p max_version + */ +bool SlXvIsFeaturePresent(SlXvFeatureIndex feature, uint16 min_version, uint16 max_version) +{ + assert(feature < XSLFI_SIZE); + return _sl_xv_feature_versions[feature] >= min_version && _sl_xv_feature_versions[feature] <= max_version; +} + +/** + * Resets all extended feature versions to 0 + */ +void SlXvResetState() +{ + _sl_is_ext_version = false; + _sl_is_faked_ext = false; + memset(_sl_xv_feature_versions, 0, sizeof(_sl_xv_feature_versions)); +} + +/** + * Resets all extended feature versions to their currently enabled versions, i.e. versions suitable for saving + */ +void SlXvSetCurrentState() +{ + SlXvResetState(); + _sl_is_ext_version = true; + + const SlxiSubChunkInfo *info = _sl_xv_sub_chunk_infos; + for (; info->index != XSLFI_NULL; ++info) { + _sl_xv_feature_versions[info->index] = info->save_version; + } +} + +/** + * Check for "special" savegame versions (i.e. known patchpacks) and set correct savegame version, settings, etc. + */ +void SlXvCheckSpecialSavegameVersions() +{ + extern uint16 _sl_version; + + // TODO: check for savegame versions +} + +/** + * Return true if this chunk has been marked as discardable + */ +bool SlXvIsChunkDiscardable(uint32 id) +{ + for(size_t i = 0; i < _sl_xv_discardable_chunk_ids.size(); i++) { + if (_sl_xv_discardable_chunk_ids[i] == id) { + return true; + } + } + return false; +} + +/** + * Writes a chunk ID list string to the savegame, returns the number of chunks written + * In dry run mode, only returns the number of chunk which would have been written + */ +static uint32 WriteChunkIdList(const char *chunk_list, bool dry_run) +{ + unsigned int chunk_count = 0; // number of chunks output + unsigned int id_offset = 0; // how far are we into the ID + for (; *chunk_list != 0; chunk_list++) { + if (id_offset == 4) { + assert(*chunk_list == ','); + id_offset = 0; + } else { + if (!dry_run) { + SlWriteByte(*chunk_list); + } + if (id_offset == 3) { + chunk_count++; + } + id_offset++; + } + } + assert(id_offset == 4); + return chunk_count; +} + +static void Save_SLXI() +{ + SlXvSetCurrentState(); + + static const SaveLoad _xlsi_sub_chunk_desc[] = { + SLE_VAR(SlxiSubChunkInfo, save_version, SLE_UINT16), + SLE_STR(SlxiSubChunkInfo, name, SLE_STR, 0), + SLE_END() + }; + + // calculate lengths + uint32 item_count = 0; + uint32 length = 12; + std::vector extra_data_lengths; + std::vector chunk_counts; + extra_data_lengths.resize(XSLFI_SIZE); + chunk_counts.resize(XSLFI_SIZE); + const SlxiSubChunkInfo *info = _sl_xv_sub_chunk_infos; + for (; info->index != XSLFI_NULL; ++info) { + if (info->save_version > 0) { + item_count++; + length += 4; + length += SlCalcObjLength(info, _xlsi_sub_chunk_desc); + if (info->save_proc) { + uint32 extra_data_length = info->save_proc(info, true); + if (extra_data_length) { + extra_data_lengths[info->index] = extra_data_length; + length += 4 + extra_data_length; + } + } + if (info->chunk_list) { + uint32 chunk_count = WriteChunkIdList(info->chunk_list, true); + if (chunk_count) { + chunk_counts[info->index] = chunk_count; + length += 4 * (1 + chunk_count); + } + } + } + } + + // write header + SlSetLength(length); + SlWriteUint32(_sl_xv_slxi_chunk_version); // chunk version + SlWriteUint32(0); // flags + SlWriteUint32(item_count); // item count + + // write data + info = _sl_xv_sub_chunk_infos; + for (; info->index != XSLFI_NULL; ++info) { + if (info->save_version > 0) { + SlxiSubChunkFlags flags = info->flags; + assert(!(flags & (XSCF_EXTRA_DATA_PRESENT | XSCF_CHUNK_ID_LIST_PRESENT))); + uint32 extra_data_length = extra_data_lengths[info->index]; + uint32 chunk_count = chunk_counts[info->index]; + if (extra_data_length > 0) flags |= XSCF_EXTRA_DATA_PRESENT; + if (chunk_count > 0) flags |= XSCF_CHUNK_ID_LIST_PRESENT; + SlWriteUint32(flags); + SlObject(const_cast(info), _xlsi_sub_chunk_desc); + + if (extra_data_length > 0) { + SlWriteUint32(extra_data_length); + size_t written = SlGetBytesWritten(); + info->save_proc(info, false); + assert(SlGetBytesWritten() == written + extra_data_length); + } + if (chunk_count > 0) { + SlWriteUint32(chunk_count); + size_t written = SlGetBytesWritten(); + WriteChunkIdList(info->chunk_list, false); + assert(SlGetBytesWritten() == written + (chunk_count * 4)); + } + } + } +} + +static void Load_SLXI() +{ + if (_sl_is_faked_ext || !_sl_is_ext_version) { + SlErrorCorrupt("SXLI chunk is unexpectedly present"); + } + + SlXvResetState(); + _sl_is_ext_version = true; + + uint32 version = SlReadUint32(); + if (version > _sl_xv_slxi_chunk_version) SlErrorCorruptFmt("SLXI chunk: version: %u is too new (expected max: %u)", version, _sl_xv_slxi_chunk_version); + + uint32 chunk_flags = SlReadUint32(); + // flags are not in use yet, reserve for future expansion + if (chunk_flags != 0) SlErrorCorruptFmt("SLXI chunk: unknown chunk header flags: 0x%X", chunk_flags); + + char name_buffer[256]; + const SaveLoadGlobVarList xlsi_sub_chunk_name_desc[] = { + SLEG_STR(name_buffer, SLE_STRB), + SLEG_END() + }; + + uint32 item_count = SlReadUint32(); + for (uint32 i = 0; i < item_count; i++) { + SlxiSubChunkFlags flags = static_cast(SlReadUint32()); + uint16 version = SlReadUint16(); + SlGlobList(xlsi_sub_chunk_name_desc); + + // linearly scan through feature list until found name match + bool found = false; + const SlxiSubChunkInfo *info = _sl_xv_sub_chunk_infos; + for (; info->index != XSLFI_NULL; ++info) { + if (strcmp(name_buffer, info->name) == 0) { + found = true; + break; + } + } + + bool discard_chunks = false; + if (found) { + if (version > info->max_version) { + if (flags & XSCF_IGNORABLE_VERSION) { + // version too large but carry on regardless + discard_chunks = true; + if (flags & XSCF_EXTRA_DATA_PRESENT) { + SlSkipBytes(SlReadUint32()); // skip extra data field + } + DEBUG(sl, 1, "SLXI chunk: too large version for feature: '%s', version: %d, max version: %d, ignoring", name_buffer, version, info->max_version); + } else { + SlErrorCorruptFmt("SLXI chunk: too large version for feature: '%s', version: %d, max version: %d", name_buffer, version, info->max_version); + } + } else { + // success path :) + + _sl_xv_feature_versions[info->index] = version; + if (flags & XSCF_EXTRA_DATA_PRESENT) { + uint32 extra_data_size = SlReadUint32(); + if (extra_data_size) { + if (info->load_proc) { + size_t read = SlGetBytesRead(); + info->load_proc(info, extra_data_size); + if (SlGetBytesRead() != read + extra_data_size) { + SlErrorCorruptFmt("SLXI chunk: feature: %s, version: %d, extra data length mismatch", name_buffer, version); + } + } else { + SlErrorCorruptFmt("SLXI chunk: feature: %s, version: %d, unexpectedly includes extra data", name_buffer, version); + } + } + } + + DEBUG(sl, 1, "SLXI chunk: found known feature: '%s', version: %d, max version: %d", name_buffer, version, info->max_version); + } + } else { + if (flags & XSCF_IGNORABLE_UNKNOWN) { + // not found but carry on regardless + discard_chunks = true; + if (flags & XSCF_EXTRA_DATA_PRESENT) { + SlSkipBytes(SlReadUint32()); // skip extra data field + } + DEBUG(sl, 1, "SLXI chunk: unknown feature: '%s', version: %d, ignoring", name_buffer, version); + } else { + SlErrorCorruptFmt("SLXI chunk: unknown feature: %s, version: %d", name_buffer, version); + } + } + + // at this point the extra data field should have been consumed + // handle chunk ID list field + if (flags & XSCF_CHUNK_ID_LIST_PRESENT) { + uint32 chunk_count = SlReadUint32(); + for (uint32 j = 0; j < chunk_count; j++) { + uint32 chunk_id = SlReadUint32(); + if (discard_chunks) { + _sl_xv_discardable_chunk_ids.push_back(chunk_id); + DEBUG(sl, 2, "SLXI chunk: unknown feature: '%s', discarding chunk: %c%c%c%c", name_buffer, chunk_id >> 24, chunk_id >> 16, chunk_id >> 8, chunk_id); + } + } + } + } +} + +extern const ChunkHandler _version_ext_chunk_handlers[] = { + { 'SLXI', Save_SLXI, Load_SLXI, NULL, Load_SLXI, CH_RIFF | CH_LAST}, +}; diff --git a/src/saveload/extended_ver_sl.h b/src/saveload/extended_ver_sl.h new file mode 100644 index 0000000000..3dffee5a7c --- /dev/null +++ b/src/saveload/extended_ver_sl.h @@ -0,0 +1,106 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file extended_ver_sl.h Functions/types related to handling save/load extended version info. */ + +#ifndef EXTENDED_VER_SL_H +#define EXTENDED_VER_SL_H + +#include "../core/bitmath_func.hpp" + +#include + +/** + * List of extended features, each feature has its own (16 bit) version + */ +enum SlXvFeatureIndex { + XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use + + XSLFI_SIZE, ///< Total count of features, including null feature +}; + +extern uint16 _sl_xv_feature_versions[XSLFI_SIZE]; + +/** + * Operator to use when combining traditional savegame number test with an extended feature version test + */ +enum SlXvFeatureTestOperator { + XSLFTO_OR = 0, ///< Test if traditional savegame version is in bounds OR extended feature is in version bounds + XSLFTO_AND ///< Test if traditional savegame version is in bounds AND extended feature is in version bounds +}; + +/** + * Structure to describe an extended feature version test, and how it combines with a traditional savegame version test + */ +struct SlXvFeatureTest { + private: + uint16 min_version; + uint16 max_version; + SlXvFeatureIndex feature; + SlXvFeatureTestOperator op; + + public: + SlXvFeatureTest() + : min_version(0), max_version(0), feature(XSLFI_NULL), op(XSLFTO_OR) { } + + SlXvFeatureTest(SlXvFeatureTestOperator op_, SlXvFeatureIndex feature_, uint16 min_version_ = 1, uint16 max_version_ = 0xFFFF) + : min_version(min_version_), max_version(max_version_), feature(feature_), op(op_) { } + + bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const; +}; + +bool SlXvIsFeaturePresent(SlXvFeatureIndex feature, uint16 min_version = 1, uint16 max_version = 0xFFFF); + +/** + * Returns true if @p feature is missing (i.e. has a version of 0) + */ +inline bool SlXvIsFeatureMissing(SlXvFeatureIndex feature) +{ + return !SlXvIsFeaturePresent(feature); +} + +/** + * sub chunk flags, this is saved as-is + * (XSCF_EXTRA_DATA_PRESENT and XSCF_CHUNK_ID_LIST_PRESENT must only be set by the save code, and read by the load code) + */ +enum SlxiSubChunkFlags { + XSCF_NULL = 0, ///< zero value + XSCF_IGNORABLE_UNKNOWN = 1 << 0, ///< the loader is free to ignore this without aborting the load if it doesn't know what it is at all + XSCF_IGNORABLE_VERSION = 1 << 1, ///< the loader is free to ignore this without aborting the load if the version is greater than the maximum that can be loaded + XSCF_EXTRA_DATA_PRESENT = 1 << 2, ///< extra data field is present, extra data in some sub-chunk/feature specific format, not used for anything yet + XSCF_CHUNK_ID_LIST_PRESENT = 1 << 3, ///< chunk ID list field is present, list of chunks which this sub-chunk/feature adds to the save game, this can be used to discard the chunks if the feature is unknown +}; +DECLARE_ENUM_AS_BIT_SET(SlxiSubChunkFlags) + +struct SlxiSubChunkInfo; + +typedef uint32 SlxiSubChunkSaveProc(const SlxiSubChunkInfo *info, bool dry_run); ///< sub chunk save procedure type, must return length and write no data when dry_run is true +typedef void SlxiSubChunkLoadProc(const SlxiSubChunkInfo *info, uint32 length); ///< sub chunk load procedure, must consume length bytes + +/** Handlers and description of chunk. */ +struct SlxiSubChunkInfo { + SlXvFeatureIndex index; ///< feature index, this is saved + SlxiSubChunkFlags flags; ///< flags, this is saved + uint16 save_version; ///< version to save + uint16 max_version; ///< maximum version to accept on load + const char *name; ///< feature name, this *IS* saved, so must be globally unique + SlxiSubChunkSaveProc *save_proc; ///< save procedure of the sub chunk, this may be NULL in which case no extra chunk data is saved + SlxiSubChunkLoadProc *load_proc; ///< load procedure of the sub chunk, this may be NULL in which case the extra chunk data must be missing or of 0 length + const char *chunk_list; ///< this is a list of chunks that this feature uses, which should be written to the savegame, this must be a comma-seperated list of 4-character IDs, with no spaces, or NULL +}; + +void SlXvResetState(); + +void SlXvSetCurrentState(); + +void SlXvCheckSpecialSavegameVersions(); + +bool SlXvIsChunkDiscardable(uint32 id); + +#endif /* EXTENDED_VER_SL_H */ diff --git a/src/saveload/game_sl.cpp b/src/saveload/game_sl.cpp index d5a454f480..325ae1c9d4 100644 --- a/src/saveload/game_sl.cpp +++ b/src/saveload/game_sl.cpp @@ -20,6 +20,8 @@ #include "../game/game_instance.hpp" #include "../game/game_text.hpp" +#include "../safeguards.h" + static char _game_saveload_name[64]; static int _game_saveload_version; static char _game_saveload_settings[1024]; @@ -38,7 +40,7 @@ static void SaveReal_GSDT(int *index_ptr) GameConfig *config = GameConfig::GetConfig(); if (config->HasScript()) { - ttd_strlcpy(_game_saveload_name, config->GetName(), lengthof(_game_saveload_name)); + strecpy(_game_saveload_name, config->GetName(), lastof(_game_saveload_name)); _game_saveload_version = config->GetVersion(); } else { /* No GameScript is configured for this so store an empty string as name. */ @@ -48,7 +50,7 @@ static void SaveReal_GSDT(int *index_ptr) _game_saveload_is_random = config->IsRandom(); _game_saveload_settings[0] = '\0'; - config->SettingsToString(_game_saveload_settings, lengthof(_game_saveload_settings)); + config->SettingsToString(_game_saveload_settings, lastof(_game_saveload_settings)); SlObject(NULL, _game_script); Game::Save(); @@ -76,22 +78,22 @@ static void Load_GSDT() config->Change(_game_saveload_name, _game_saveload_version, false, _game_saveload_is_random); if (!config->HasScript()) { /* No version of the GameScript available that can load the data. Try to load the - * latest version of the GameScript instead. */ + * latest version of the GameScript instead. */ config->Change(_game_saveload_name, -1, false, _game_saveload_is_random); if (!config->HasScript()) { if (strcmp(_game_saveload_name, "%_dummy") != 0) { DEBUG(script, 0, "The savegame has an GameScript by the name '%s', version %d which is no longer available.", _game_saveload_name, _game_saveload_version); - DEBUG(script, 0, "This game wil continue to run without GameScript."); + DEBUG(script, 0, "This game will continue to run without GameScript."); } else { DEBUG(script, 0, "The savegame had no GameScript available at the time of saving."); - DEBUG(script, 0, "This game wil continue to run without GameScript."); + DEBUG(script, 0, "This game will continue to run without GameScript."); } } else { DEBUG(script, 0, "The savegame has an GameScript by the name '%s', version %d which is no longer available.", _game_saveload_name, _game_saveload_version); DEBUG(script, 0, "The latest version of that GameScript has been loaded instead, but it'll not get the savegame data as it's incompatible."); } /* Make sure the GameScript doesn't get the saveload data, as he was not the - * writer of the saveload data in the first place */ + * writer of the saveload data in the first place */ _game_saveload_version = -1; } } @@ -148,10 +150,10 @@ static void Load_GSTR() _game_saveload_string = NULL; SlObject(NULL, _game_language_header); - LanguageStrings *ls = new LanguageStrings(_game_saveload_string); + LanguageStrings *ls = new LanguageStrings(_game_saveload_string != NULL ? _game_saveload_string : ""); for (uint i = 0; i < _game_saveload_strings; i++) { SlObject(NULL, _game_language_string); - *ls->lines.Append() = strdup(_game_saveload_string != NULL ? _game_saveload_string : ""); + *ls->lines.Append() = stredup(_game_saveload_string != NULL ? _game_saveload_string : ""); } *_current_data->raw_strings.Append() = ls; diff --git a/src/saveload/gamelog_sl.cpp b/src/saveload/gamelog_sl.cpp index f25a8d1ebd..f818eca137 100644 --- a/src/saveload/gamelog_sl.cpp +++ b/src/saveload/gamelog_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + static const SaveLoad _glog_action_desc[] = { SLE_VAR(LoggedAction, tick, SLE_UINT16), SLE_END() diff --git a/src/saveload/goal_sl.cpp b/src/saveload/goal_sl.cpp index 1c260503e8..4d1441787d 100644 --- a/src/saveload/goal_sl.cpp +++ b/src/saveload/goal_sl.cpp @@ -14,9 +14,11 @@ #include "saveload.h" +#include "../safeguards.h" + static const SaveLoad _goals_desc[] = { - SLE_VAR(Goal, company, SLE_UINT16), - SLE_VAR(Goal, type, SLE_UINT16), + SLE_VAR(Goal, company, SLE_FILE_U16 | SLE_VAR_U8), + SLE_VAR(Goal, type, SLE_FILE_U16 | SLE_VAR_U8), SLE_VAR(Goal, dst, SLE_UINT32), SLE_STR(Goal, text, SLE_STR | SLF_ALLOW_CONTROL, 0), SLE_CONDSTR(Goal, progress, SLE_STR | SLF_ALLOW_CONTROL, 0, 182, SL_MAX_VERSION), diff --git a/src/saveload/group_sl.cpp b/src/saveload/group_sl.cpp index 1e006a218b..93734f80f6 100644 --- a/src/saveload/group_sl.cpp +++ b/src/saveload/group_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + static const SaveLoad _group_desc[] = { SLE_CONDVAR(Group, name, SLE_NAME, 0, 83), SLE_CONDSTR(Group, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), @@ -21,6 +23,7 @@ static const SaveLoad _group_desc[] = { SLE_VAR(Group, owner, SLE_UINT8), SLE_VAR(Group, vehicle_type, SLE_UINT8), SLE_VAR(Group, replace_protection, SLE_BOOL), + SLE_CONDVAR(Group, parent, SLE_UINT16, 189, SL_MAX_VERSION), SLE_END() }; @@ -42,6 +45,8 @@ static void Load_GRPS() while ((index = SlIterateArray()) != -1) { Group *g = new (index) Group(); SlObject(g, _group_desc); + + if (IsSavegameVersionBefore(189)) g->parent = INVALID_GROUP; } } diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp index 8943a5d529..c5ddadfdd0 100644 --- a/src/saveload/industry_sl.cpp +++ b/src/saveload/industry_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" #include "newgrf_sl.h" +#include "../safeguards.h" + static OldPersistentStorage _old_ind_persistent_storage; static const SaveLoad _industry_desc[] = { @@ -98,7 +100,7 @@ static void Load_INDY() if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(76)) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); - i->psa = new PersistentStorage(0); + i->psa = new PersistentStorage(0, 0, 0); memcpy(i->psa->storage, _old_ind_persistent_storage.storage, sizeof(i->psa->storage)); } Industry::IncIndustryTypeCount(i->type); @@ -158,14 +160,14 @@ static void Save_ITBL() /** Load industry-type build data. */ static void Load_ITBL() { + for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { + _industry_builder.builddata[it].Reset(); + } int index; - for (int i = 0; i < NUM_INDUSTRYTYPES; i++) { - index = SlIterateArray(); - assert(index == i); - SlObject(_industry_builder.builddata + i, _industrytype_builder_desc); + while ((index = SlIterateArray()) != -1) { + if ((uint)index >= NUM_INDUSTRYTYPES) SlErrorCorrupt("Too many industry builder datas"); + SlObject(_industry_builder.builddata + index, _industrytype_builder_desc); } - index = SlIterateArray(); - assert(index == -1); } extern const ChunkHandler _industry_chunk_handlers[] = { diff --git a/src/saveload/labelmaps_sl.cpp b/src/saveload/labelmaps_sl.cpp index 5cc77af0ce..3b898a3b87 100644 --- a/src/saveload/labelmaps_sl.cpp +++ b/src/saveload/labelmaps_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + static SmallVector _railtype_list; /** diff --git a/src/saveload/linkgraph_sl.cpp b/src/saveload/linkgraph_sl.cpp index 121934d8d6..a65f4fc8a5 100644 --- a/src/saveload/linkgraph_sl.cpp +++ b/src/saveload/linkgraph_sl.cpp @@ -16,12 +16,14 @@ #include "../settings_internal.h" #include "saveload.h" +#include "../safeguards.h" + typedef LinkGraph::BaseNode Node; typedef LinkGraph::BaseEdge Edge; const SettingDesc *GetSettingDescription(uint index); -static uint _num_nodes; +static uint16 _num_nodes; /** * Get a SaveLoad array for a link graph. @@ -30,7 +32,7 @@ static uint _num_nodes; const SaveLoad *GetLinkGraphDesc() { static const SaveLoad link_graph_desc[] = { - SLE_VAR(LinkGraph, last_compression, SLE_UINT32), + SLE_VAR(LinkGraph, last_compression, SLE_INT32), SLEG_VAR(_num_nodes, SLE_UINT16), SLE_VAR(LinkGraph, cargo, SLE_UINT8), SLE_END() @@ -73,7 +75,7 @@ const SaveLoad *GetLinkGraphJobDesc() } const SaveLoad job_desc[] = { - SLE_VAR(LinkGraphJob, join_date, SLE_UINT32), + SLE_VAR(LinkGraphJob, join_date, SLE_INT32), SLE_VAR(LinkGraphJob, link_graph.index, SLE_UINT16), SLE_END() }; @@ -107,23 +109,25 @@ const SaveLoad *GetLinkGraphScheduleDesc() * SaveLoad desc for a link graph node. */ static const SaveLoad _node_desc[] = { - SLE_VAR(Node, supply, SLE_UINT32), - SLE_VAR(Node, demand, SLE_UINT32), - SLE_VAR(Node, station, SLE_UINT16), - SLE_VAR(Node, last_update, SLE_UINT32), - SLE_END() + SLE_CONDVAR(Node, xy, SLE_UINT32, 191, SL_MAX_VERSION), + SLE_VAR(Node, supply, SLE_UINT32), + SLE_VAR(Node, demand, SLE_UINT32), + SLE_VAR(Node, station, SLE_UINT16), + SLE_VAR(Node, last_update, SLE_INT32), + SLE_END() }; /** * SaveLoad desc for a link graph edge. */ static const SaveLoad _edge_desc[] = { - SLE_VAR(Edge, distance, SLE_UINT32), - SLE_VAR(Edge, capacity, SLE_UINT32), - SLE_VAR(Edge, usage, SLE_UINT32), - SLE_VAR(Edge, last_update, SLE_UINT32), - SLE_VAR(Edge, next_edge, SLE_UINT16), - SLE_END() + SLE_CONDNULL(4, 0, 190), // distance + SLE_VAR(Edge, capacity, SLE_UINT32), + SLE_VAR(Edge, usage, SLE_UINT32), + SLE_VAR(Edge, last_unrestricted_update, SLE_INT32), + SLE_CONDVAR(Edge, last_restricted_update, SLE_INT32, 187, SL_MAX_VERSION), + SLE_VAR(Edge, next_edge, SLE_UINT16), + SLE_END() }; /** @@ -136,8 +140,16 @@ void SaveLoad_LinkGraph(LinkGraph &lg) for (NodeID from = 0; from < size; ++from) { Node *node = &lg.nodes[from]; SlObject(node, _node_desc); - for (NodeID to = 0; to < size; ++to) { - SlObject(&lg.edges[from][to], _edge_desc); + if (IsSavegameVersionBefore(191)) { + /* We used to save the full matrix ... */ + for (NodeID to = 0; to < size; ++to) { + SlObject(&lg.edges[from][to], _edge_desc); + } + } else { + /* ... but as that wasted a lot of space we save a sparse matrix now. */ + for (NodeID to = from; to != INVALID_NODE; to = lg.edges[from][to].next_edge) { + SlObject(&lg.edges[from][to], _edge_desc); + } } } } @@ -208,7 +220,7 @@ static void Load_LGRJ() */ static void Load_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } /** @@ -217,7 +229,24 @@ static void Load_LGRS() */ void AfterLoadLinkGraphs() { - LinkGraphSchedule::Instance()->SpawnAll(); + if (IsSavegameVersionBefore(191)) { + LinkGraph *lg; + FOR_ALL_LINK_GRAPHS(lg) { + for (NodeID node_id = 0; node_id < lg->Size(); ++node_id) { + (*lg)[node_id].UpdateLocation(Station::Get((*lg)[node_id].Station())->xy); + } + } + + LinkGraphJob *lgj; + FOR_ALL_LINK_GRAPH_JOBS(lgj) { + lg = &(const_cast(lgj->Graph())); + for (NodeID node_id = 0; node_id < lg->Size(); ++node_id) { + (*lg)[node_id].UpdateLocation(Station::Get((*lg)[node_id].Station())->xy); + } + } + } + + LinkGraphSchedule::instance.SpawnAll(); } /** @@ -249,7 +278,7 @@ static void Save_LGRJ() */ static void Save_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } /** @@ -257,7 +286,7 @@ static void Save_LGRS() */ static void Ptrs_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } extern const ChunkHandler _linkgraph_chunk_handlers[] = { diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp index 7088a4406c..86a185ca42 100644 --- a/src/saveload/map_sl.cpp +++ b/src/saveload/map_sl.cpp @@ -16,6 +16,8 @@ #include "saveload.h" +#include "../safeguards.h" + static uint32 _map_dim_x; static uint32 _map_dim_y; @@ -54,7 +56,7 @@ static void Load_MAPT() for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); - for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].type_height = buf[j]; + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].type = buf[j]; } } @@ -65,7 +67,30 @@ static void Save_MAPT() SlSetLength(size); for (TileIndex i = 0; i != size;) { - for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].type_height; + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].type; + SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); + } +} + +static void Load_MAPH() +{ + SmallStackSafeStackAlloc buf; + TileIndex size = MapSize(); + + for (TileIndex i = 0; i != size;) { + SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].height = buf[j]; + } +} + +static void Save_MAPH() +{ + SmallStackSafeStackAlloc buf; + TileIndex size = MapSize(); + + SlSetLength(size); + for (TileIndex i = 0; i != size;) { + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].height; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } @@ -198,16 +223,16 @@ static void Load_MAP6() /* 1024, otherwise we overflow on 64x64 maps! */ SlArray(buf, 1024, SLE_UINT8); for (uint j = 0; j != 1024; j++) { - _m[i++].m6 = GB(buf[j], 0, 2); - _m[i++].m6 = GB(buf[j], 2, 2); - _m[i++].m6 = GB(buf[j], 4, 2); - _m[i++].m6 = GB(buf[j], 6, 2); + _me[i++].m6 = GB(buf[j], 0, 2); + _me[i++].m6 = GB(buf[j], 2, 2); + _me[i++].m6 = GB(buf[j], 4, 2); + _me[i++].m6 = GB(buf[j], 6, 2); } } } else { for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); - for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m6 = buf[j]; + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _me[i++].m6 = buf[j]; } } } @@ -219,7 +244,7 @@ static void Save_MAP6() SlSetLength(size); for (TileIndex i = 0; i != size;) { - for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m6; + for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _me[i++].m6; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } @@ -250,6 +275,7 @@ static void Save_MAP7() extern const ChunkHandler _map_chunk_handlers[] = { { 'MAPS', Save_MAPS, Load_MAPS, NULL, Check_MAPS, CH_RIFF }, { 'MAPT', Save_MAPT, Load_MAPT, NULL, NULL, CH_RIFF }, + { 'MAPH', Save_MAPH, Load_MAPH, NULL, NULL, CH_RIFF }, { 'MAPO', Save_MAP1, Load_MAP1, NULL, NULL, CH_RIFF }, { 'MAP2', Save_MAP2, Load_MAP2, NULL, NULL, CH_RIFF }, { 'M3LO', Save_MAP3, Load_MAP3, NULL, NULL, CH_RIFF }, diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index 72c56db540..c7bd31e81e 100644 --- a/src/saveload/misc_sl.cpp +++ b/src/saveload/misc_sl.cpp @@ -21,6 +21,8 @@ #include "saveload.h" +#include "../safeguards.h" + extern TileIndex _cur_tileloop_tile; extern uint16 _disaster_delay; extern byte _trees_tick_ctr; diff --git a/src/saveload/newgrf_sl.cpp b/src/saveload/newgrf_sl.cpp index d3915340cf..dacc127ea0 100644 --- a/src/saveload/newgrf_sl.cpp +++ b/src/saveload/newgrf_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" #include "newgrf_sl.h" +#include "../safeguards.h" + /** Save and load the mapping between a spec and the NewGRF it came from. */ static const SaveLoad _newgrf_mapping_desc[] = { SLE_VAR(EntityIDMapping, grfid, SLE_UINT32), @@ -49,7 +51,7 @@ void Load_NewGRFMapping(OverrideManagerBase &mapping) int index; while ((index = SlIterateArray()) != -1) { - if ((uint)index >= max_id) break; + if ((uint)index >= max_id) SlErrorCorrupt("Too many NewGRF entity mappings"); SlObject(&mapping.mapping_ID[index], _newgrf_mapping_desc); } } diff --git a/src/saveload/object_sl.cpp b/src/saveload/object_sl.cpp index 037fc6b4d3..dfb1d2cbf5 100644 --- a/src/saveload/object_sl.cpp +++ b/src/saveload/object_sl.cpp @@ -16,6 +16,8 @@ #include "saveload.h" #include "newgrf_sl.h" +#include "../safeguards.h" + static const SaveLoad _object_desc[] = { SLE_VAR(Object, location.tile, SLE_UINT32), SLE_VAR(Object, location.w, SLE_FILE_U8 | SLE_VAR_U16), @@ -24,6 +26,7 @@ static const SaveLoad _object_desc[] = { SLE_VAR(Object, build_date, SLE_UINT32), SLE_CONDVAR(Object, colour, SLE_UINT8, 148, SL_MAX_VERSION), SLE_CONDVAR(Object, view, SLE_UINT8, 155, SL_MAX_VERSION), + SLE_CONDVAR(Object, type, SLE_UINT16, 186, SL_MAX_VERSION), SLE_END() }; @@ -56,8 +59,6 @@ static void Ptrs_OBJS() if (IsSavegameVersionBefore(148) && !IsTileType(o->location.tile, MP_OBJECT)) { /* Due to a small bug stale objects could remain. */ delete o; - } else { - Object::IncTypeCount(GetObjectType(o->location.tile)); } } } diff --git a/src/saveload/oldloader.cpp b/src/saveload/oldloader.cpp index f6ebb48bcc..13ee0e5b06 100644 --- a/src/saveload/oldloader.cpp +++ b/src/saveload/oldloader.cpp @@ -23,6 +23,8 @@ #include +#include "../safeguards.h" + static const int TTO_HEADER_SIZE = 41; static const int TTD_HEADER_SIZE = 49; @@ -244,16 +246,15 @@ static inline bool CheckOldSavegameType(FILE *f, char *temp, const char *last, u static SavegameType DetermineOldSavegameType(FILE *f, char *title, const char *last) { assert_compile(TTD_HEADER_SIZE >= TTO_HEADER_SIZE); - char temp[TTD_HEADER_SIZE]; + char temp[TTD_HEADER_SIZE] = "Unknown"; SavegameType type = SGT_TTO; /* Can't fseek to 0 as in tar files that is not correct */ long pos = ftell(f); - if (!CheckOldSavegameType(f, temp, lastof(temp), TTO_HEADER_SIZE)) { + if (pos >= 0 && !CheckOldSavegameType(f, temp, lastof(temp), TTO_HEADER_SIZE)) { type = SGT_TTD; - fseek(f, pos, SEEK_SET); - if (!CheckOldSavegameType(f, temp, lastof(temp), TTD_HEADER_SIZE)) { + if (fseek(f, pos, SEEK_SET) < 0 || !CheckOldSavegameType(f, temp, lastof(temp), TTD_HEADER_SIZE)) { type = SGT_INVALID; } } diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index f9215cf1d0..4afbe6033d 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -27,6 +27,7 @@ #include "../effectvehicle_base.h" #include "../engine_func.h" #include "../company_base.h" +#include "../disaster_vehicle.h" #include "saveload_internal.h" #include "oldloader.h" @@ -34,6 +35,8 @@ #include "../table/engines.h" #include "../table/townname.h" +#include "../safeguards.h" + static bool _read_ttdpatch_flags; ///< Have we (tried to) read TTDPatch extra flags? static uint16 _old_extra_chunk_nums; ///< Number of extra TTDPatch chunks static byte _old_vehicle_multiplier; ///< TTDPatch vehicle multiplier @@ -708,8 +711,8 @@ static bool LoadOldGood(LoadgameState *ls, int num) if (!LoadChunk(ls, ge, goods_chunk)) return false; - SB(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); - SB(ge->acceptance_pickup, GoodsEntry::GES_PICKUP, 1, _cargo_source != 0xFF); + SB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); + SB(ge->status, GoodsEntry::GES_RATING, 1, _cargo_source != 0xFF); if (GB(_waiting_acceptance, 0, 12) != 0 && CargoPacket::CanAllocateItem()) { ge->cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, 0, 0), INVALID_STATION); @@ -1492,10 +1495,10 @@ static bool LoadOldMapPart1(LoadgameState *ls, int num) } for (uint i = 0; i < OLD_MAP_SIZE / 4; i++) { byte b = ReadByte(ls); - _m[i * 4 + 0].m6 = GB(b, 0, 2); - _m[i * 4 + 1].m6 = GB(b, 2, 2); - _m[i * 4 + 2].m6 = GB(b, 4, 2); - _m[i * 4 + 3].m6 = GB(b, 6, 2); + _me[i * 4 + 0].m6 = GB(b, 0, 2); + _me[i * 4 + 1].m6 = GB(b, 2, 2); + _me[i * 4 + 2].m6 = GB(b, 4, 2); + _me[i * 4 + 3].m6 = GB(b, 6, 2); } } @@ -1507,7 +1510,7 @@ static bool LoadOldMapPart2(LoadgameState *ls, int num) uint i; for (i = 0; i < OLD_MAP_SIZE; i++) { - _m[i].type_height = ReadByte(ls); + _m[i].type = ReadByte(ls); } for (i = 0; i < OLD_MAP_SIZE; i++) { _m[i].m5 = ReadByte(ls); diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index 8234165793..d55d577cb6 100644 --- a/src/saveload/order_sl.cpp +++ b/src/saveload/order_sl.cpp @@ -16,6 +16,8 @@ #include "saveload_internal.h" +#include "../safeguards.h" + /** * Converts this order from an old savegame's version; * it moves all bits to the new location. @@ -184,6 +186,10 @@ static void Load_ORDR() while ((index = SlIterateArray()) != -1) { Order *order = new (index) Order(); SlObject(order, GetOrderDescription()); + if (IsSavegameVersionBefore(190)) { + order->SetTravelTimetabled(order->GetTravelTime() > 0); + order->SetWaitTimetabled(order->GetWaitTime() > 0); + } } } } @@ -247,9 +253,11 @@ const SaveLoad *GetOrderBackupDescription() SLE_VAR(OrderBackup, user, SLE_UINT32), SLE_VAR(OrderBackup, tile, SLE_UINT32), SLE_VAR(OrderBackup, group, SLE_UINT16), - SLE_VAR(OrderBackup, service_interval, SLE_UINT32), + SLE_CONDVAR(OrderBackup, service_interval, SLE_FILE_U32 | SLE_VAR_U16, 0, 191), + SLE_CONDVAR(OrderBackup, service_interval, SLE_UINT16, 192, SL_MAX_VERSION), SLE_STR(OrderBackup, name, SLE_STR, 0), - SLE_VAR(OrderBackup, clone, SLE_UINT16), + SLE_CONDNULL(2, 0, 191), // clone (2 bytes of pointer, i.e. garbage) + SLE_CONDREF(OrderBackup, clone, REF_VEHICLE, 192, SL_MAX_VERSION), SLE_VAR(OrderBackup, cur_real_order_index, SLE_UINT8), SLE_CONDVAR(OrderBackup, cur_implicit_order_index, SLE_UINT8, 176, SL_MAX_VERSION), SLE_CONDVAR(OrderBackup, current_order_time, SLE_UINT32, 176, SL_MAX_VERSION), @@ -287,14 +295,6 @@ void Load_BKOR() OrderBackup *ob = new (index) OrderBackup(); SlObject(ob, GetOrderBackupDescription()); } - - /* Only load order-backups for network clients. - * If we are a network server or not networking, then we just loaded - * a previously saved-by-server savegame. There are - * no clients with a backup anymore, so clear it. */ - if (!_networking || _network_server) { - _order_backup_pool.CleanPool(); - } } static void Ptrs_BKOR() diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index d85b0dd6c9..55a37f8ee8 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -48,6 +48,11 @@ #include "saveload_internal.h" #include "saveload_filter.h" +#include "extended_ver_sl.h" + +#include "../safeguards.h" + +#include /* * Previous savegame versions, the trunk revision where they were @@ -251,8 +256,18 @@ * 183 25363 * 184 25508 * 185 25620 + * 186 25833 + * 187 25899 + * 188 26169 1.4.x + * 189 26450 + * 190 26547 + * 191 26646 + * 192 26700 + * 193 26802 + * 194 26881 1.5.x */ -extern const uint16 SAVEGAME_VERSION = SL_REPAIRCOST; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = 194; ///< Current savegame version of OpenTTD. +const uint16 SAVEGAME_VERSION_EXT = 0x8000; ///< Savegame extension indicator mask SavegameType _savegame_type; ///< type of savegame we are loading @@ -262,6 +277,8 @@ byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! char _savegame_format[8]; ///< how to compress savegames bool _do_autosave; ///< are we doing an autosave at the moment? +extern bool _sl_is_ext_version; + /** What are we currently doing? */ enum SaveLoadAction { SLA_LOAD, ///< loading @@ -403,6 +420,7 @@ struct SaveLoadParams { static SaveLoadParams _sl; ///< Parameters used for/at saveload. /* these define the chunks */ +extern const ChunkHandler _version_ext_chunk_handlers[]; extern const ChunkHandler _gamelog_chunk_handlers[]; extern const ChunkHandler _map_chunk_handlers[]; extern const ChunkHandler _misc_chunk_handlers[]; @@ -439,6 +457,7 @@ extern const ChunkHandler _persistent_storage_chunk_handlers[]; /** Array of all chunks in a savegame, \c NULL terminated. */ static const ChunkHandler * const _chunk_handlers[] = { + _version_ext_chunk_handlers, // this should be first, such that it is saved first, as when loading it affects the loading of subsequent chunks _gamelog_chunk_handlers, _map_chunk_handlers, _misc_chunk_handlers, @@ -492,6 +511,7 @@ static void SlNullPointers() * during NULLing; especially those that try to get * pointers from other pools. */ _sl_version = SAVEGAME_VERSION; + SlXvSetCurrentState(); DEBUG(sl, 1, "Nulling pointers"); @@ -515,17 +535,22 @@ static void SlNullPointers() * @note This function does never return as it throws an exception to * break out of all the saveload code. */ -void NORETURN SlError(StringID string, const char *extra_msg) +void NORETURN SlError(StringID string, const char *extra_msg, bool already_malloced) { + char *str = NULL; + if (extra_msg != NULL) { + str = already_malloced ? const_cast(extra_msg) : stredup(extra_msg); + } + /* Distinguish between loading into _load_check_data vs. normal save/load. */ if (_sl.action == SLA_LOAD_CHECK) { _load_check_data.error = string; free(_load_check_data.error_data); - _load_check_data.error_data = (extra_msg == NULL) ? NULL : strdup(extra_msg); + _load_check_data.error_data = str; } else { _sl.error_str = string; free(_sl.extra_msg); - _sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg); + _sl.extra_msg = str; } /* We have to NULL all pointers here; we might be in a state where @@ -536,6 +561,18 @@ void NORETURN SlError(StringID string, const char *extra_msg) throw std::exception(); } +/** + * As SlError, except that it takes a format string and additional parameters + */ +void CDECL NORETURN SlErrorFmt(StringID string, const char *msg, ...) +{ + va_list va; + va_start(va, msg); + char *str = str_vfmt(msg, va); + va_end(va); + SlError(string, str, true); +} + /** * Error handler for corrupt savegames. Sets everything up to show the * error message and to clean up the mess of a partial savegame load. @@ -543,9 +580,21 @@ void NORETURN SlError(StringID string, const char *extra_msg) * @note This function does never return as it throws an exception to * break out of all the saveload code. */ -void NORETURN SlErrorCorrupt(const char *msg) +void NORETURN SlErrorCorrupt(const char *msg, bool already_malloced) { - SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, msg); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, msg, already_malloced); +} + +/** + * As SlErrorCorruptFmt, except that it takes a format string and additional parameters + */ +void CDECL NORETURN SlErrorCorruptFmt(const char *msg, ...) +{ + va_list va; + va_start(va, msg); + char *str = str_vfmt(msg, va); + va_end(va); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, str, true); } @@ -601,51 +650,24 @@ void SlWriteByte(byte b) _sl.dumper->WriteByte(b); } -static inline int SlReadUint16() -{ - int x = SlReadByte() << 8; - return x | SlReadByte(); -} - -static inline uint32 SlReadUint32() -{ - uint32 x = SlReadUint16() << 16; - return x | SlReadUint16(); -} - -static inline uint64 SlReadUint64() -{ - uint32 x = SlReadUint32(); - uint32 y = SlReadUint32(); - return (uint64)x << 32 | y; -} - -static inline void SlWriteUint16(uint16 v) -{ - SlWriteByte(GB(v, 8, 8)); - SlWriteByte(GB(v, 0, 8)); -} - -static inline void SlWriteUint32(uint32 v) -{ - SlWriteUint16(GB(v, 16, 16)); - SlWriteUint16(GB(v, 0, 16)); -} - -static inline void SlWriteUint64(uint64 x) +/** + * Returns number of bytes read so far + * May only be called during a load/load check action + */ +size_t SlGetBytesRead() { - SlWriteUint32((uint32)(x >> 32)); - SlWriteUint32((uint32)x); + assert(_sl.action == SLA_LOAD || _sl.action == SLA_LOAD_CHECK); + return _sl.reader->GetSize(); } /** - * Read in bytes from the file/data structure but don't do - * anything with them, discarding them in effect - * @param length The amount of bytes that is being treated this way + * Returns number of bytes written so far + * May only be called during a save action */ -static inline void SlSkipBytes(size_t length) +size_t SlGetBytesWritten() { - for (; length != 0; length--) SlReadByte(); + assert(_sl.action == SLA_SAVE); + return _sl.dumper->GetSize(); } /** @@ -667,7 +689,11 @@ static uint SlReadSimpleGamma() if (HasBit(i, 5)) { i &= ~0x20; if (HasBit(i, 4)) { - SlErrorCorrupt("Unsupported gamma"); + i &= ~0x10; + if (HasBit(i, 3)) { + SlErrorCorrupt("Unsupported gamma"); + } + i = SlReadByte(); // 32 bits only. } i = (i << 8) | SlReadByte(); } @@ -687,6 +713,11 @@ static uint SlReadSimpleGamma() * 10xxxxxx xxxxxxxx * 110xxxxx xxxxxxxx xxxxxxxx * 1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx + * 11110--- xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx + * We could extend the scheme ad infinum to support arbitrarily + * large chunks, but as sizeof(size_t) == 4 is still very common + * we don't support anything above 32 bits. That's why in the last + * case the 3 most significant bits are unused. * @param i Index being written */ @@ -695,8 +726,13 @@ static void SlWriteSimpleGamma(size_t i) if (i >= (1 << 7)) { if (i >= (1 << 14)) { if (i >= (1 << 21)) { - assert(i < (1 << 28)); - SlWriteByte((byte)(0xE0 | (i >> 24))); + if (i >= (1 << 28)) { + assert(i <= UINT32_MAX); // We can only support 32 bits for now. + SlWriteByte((byte)(0xF0)); + SlWriteByte((byte)(i >> 24)); + } else { + SlWriteByte((byte)(0xE0 | (i >> 24))); + } SlWriteByte((byte)(i >> 16)); } else { SlWriteByte((byte)(0xC0 | (i >> 16))); @@ -712,7 +748,7 @@ static void SlWriteSimpleGamma(size_t i) /** Return how many bytes used to encode a gamma value */ static inline uint SlGetGammaLength(size_t i) { - return 1 + (i >= (1 << 7)) + (i >= (1 << 14)) + (i >= (1 << 21)); + return 1 + (i >= (1 << 7)) + (i >= (1 << 14)) + (i >= (1 << 21)) + (i >= (1 << 28)); } static inline uint SlReadSparseIndex() @@ -1389,7 +1425,7 @@ static void SlList(void *list, SLRefType conv) /** Are we going to save this object or not? */ static inline bool SlIsObjectValidInSavegame(const SaveLoad *sld) { - if (_sl_version < sld->version_from || _sl_version > sld->version_to) return false; + if (!sld->ext_feature_test.IsFeaturePresent(_sl_version, sld->version_from, sld->version_to)) return false; if (sld->conv & SLF_NOT_IN_SAVE) return false; return true; @@ -1457,9 +1493,50 @@ size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld) return 0; } +/** + * Check whether the variable size of the variable in the saveload configuration + * matches with the actual variable size. + * @param sld The saveload configuration to test. + */ +static bool IsVariableSizeRight(const SaveLoad *sld) +{ + switch (sld->cmd) { + case SL_VAR: + switch (GetVarMemType(sld->conv)) { + case SLE_VAR_BL: + return sld->size == sizeof(bool); + case SLE_VAR_I8: + case SLE_VAR_U8: + return sld->size == sizeof(int8); + case SLE_VAR_I16: + case SLE_VAR_U16: + return sld->size == sizeof(int16); + case SLE_VAR_I32: + case SLE_VAR_U32: + return sld->size == sizeof(int32); + case SLE_VAR_I64: + case SLE_VAR_U64: + return sld->size == sizeof(int64); + default: + return sld->size == sizeof(void *); + } + case SL_REF: + /* These should all be pointer sized. */ + return sld->size == sizeof(void *); + + case SL_STR: + /* These should be pointer sized, or fixed array. */ + return sld->size == sizeof(void *) || sld->size == sld->length; + + default: + return true; + } +} bool SlObjectMember(void *ptr, const SaveLoad *sld) { + assert(IsVariableSizeRight(sld)); + VarType conv = GB(sld->conv, 0, 8); switch (sld->cmd) { case SL_VAR: @@ -1601,9 +1678,11 @@ static void SlLoadChunk(const ChunkHandler *ch) case CH_ARRAY: _sl.array_index = 0; ch->load_proc(); + if (_next_offs != 0) SlErrorCorrupt("Invalid array length"); break; case CH_SPARSE_ARRAY: ch->load_proc(); + if (_next_offs != 0) SlErrorCorrupt("Invalid array length"); break; default: if ((m & 0xF) == CH_RIFF) { @@ -1624,7 +1703,7 @@ static void SlLoadChunk(const ChunkHandler *ch) /** * Load a chunk of data for checking savegames. * If the chunkhandler is NULL, the chunk is skipped. - * @param ch The chunkhandler that will be used for the operation + * @param ch The chunkhandler that will be used for the operation, this may be NULL */ static void SlLoadCheckChunk(const ChunkHandler *ch) { @@ -1638,14 +1717,14 @@ static void SlLoadCheckChunk(const ChunkHandler *ch) switch (m) { case CH_ARRAY: _sl.array_index = 0; - if (ch->load_check_proc) { + if (ch && ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipArray(); } break; case CH_SPARSE_ARRAY: - if (ch->load_check_proc) { + if (ch && ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipArray(); @@ -1658,7 +1737,7 @@ static void SlLoadCheckChunk(const ChunkHandler *ch) len += SlReadUint16(); _sl.obj_len = len; endoffs = _sl.reader->GetSize() + len; - if (ch->load_check_proc) { + if (ch && ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipBytes(len); @@ -1772,8 +1851,16 @@ static void SlLoadChunks() DEBUG(sl, 2, "Loading chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); ch = SlFindChunkHandler(id); - if (ch == NULL) SlErrorCorrupt("Unknown chunk type"); - SlLoadChunk(ch); + if (ch == NULL) { + if (SlXvIsChunkDiscardable(id)) { + DEBUG(sl, 1, "Discarding chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); + SlLoadCheckChunk(NULL); + } else { + SlErrorCorrupt("Unknown chunk type"); + } + } else { + SlLoadChunk(ch); + } } } @@ -1787,7 +1874,7 @@ static void SlLoadCheckChunks() DEBUG(sl, 2, "Loading chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); ch = SlFindChunkHandler(id); - if (ch == NULL) SlErrorCorrupt("Unknown chunk type"); + if (ch == NULL && !SlXvIsChunkDiscardable(id)) SlErrorCorrupt("Unknown chunk type"); SlLoadCheckChunk(ch); } } @@ -1846,7 +1933,9 @@ struct FileReader : LoadFilter { /* virtual */ void Reset() { clearerr(this->file); - fseek(this->file, this->begin, SEEK_SET); + if (fseek(this->file, this->begin, SEEK_SET)) { + DEBUG(sl, 1, "Could not reset the file reading"); + } } }; @@ -2378,6 +2467,8 @@ static inline void ClearSaveLoadState() delete _sl.lf; _sl.lf = NULL; + + SlXvSetCurrentState(); } /** @@ -2441,7 +2532,7 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded) const SaveLoadFormat *fmt = GetSavegameFormat(_savegame_format, &compression); /* We have written our stuff to memory, now write it to file! */ - uint32 hdr[2] = { fmt->tag, TO_BE32(SAVEGAME_VERSION << 16) }; + uint32 hdr[2] = { fmt->tag, TO_BE32((SAVEGAME_VERSION | SAVEGAME_VERSION_EXT) << 16) }; _sl.sf->Write((byte*)hdr, sizeof(hdr)); _sl.sf = fmt->init_write(_sl.sf, compression); @@ -2508,6 +2599,7 @@ static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) _sl.sf = writer; _sl_version = SAVEGAME_VERSION; + SlXvSetCurrentState(); SaveViewportBeforeSaveGame(); SlSaveChunks(); @@ -2559,6 +2651,8 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) _load_check_data.checkable = true; } + SlXvResetState(); + uint32 hdr[2]; if (_sl.lf->Read((byte*)hdr, sizeof(hdr)) != sizeof(hdr)) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); @@ -2571,6 +2665,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) _sl.lf->Reset(); _sl_version = 0; _sl_minor_version = 0; + SlXvResetState(); /* Try to find the LZO savegame format; it uses 'OTTD' as tag. */ fmt = _saveload_formats; @@ -2593,7 +2688,14 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) * Therefore it is loaded, but never saved (or, it saves a 0 in any scenario). */ _sl_minor_version = (TO_BE32(hdr[1]) >> 8) & 0xFF; - DEBUG(sl, 1, "Loading savegame version %d", _sl_version); + if (_sl_version & SAVEGAME_VERSION_EXT) { + _sl_version &= ~SAVEGAME_VERSION_EXT; + _sl_is_ext_version = true; + } else { + SlXvCheckSpecialSavegameVersions(); + } + + DEBUG(sl, 1, "Loading savegame version %d%s", _sl_version, _sl_is_ext_version ? " (extended)" : ""); /* Is the version higher than the current? */ if (_sl_version > SAVEGAME_VERSION) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME); @@ -2606,7 +2708,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) /* loader for this savegame type is not implemented? */ if (fmt->init_load == NULL) { char err_str[64]; - snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name); + seprintf(err_str, lastof(err_str), "Loader for '%s' is not available.", fmt->name); SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str); } @@ -2716,36 +2818,37 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, boo } WaitTillSaved(); - /* Load a TTDLX or TTDPatch game */ - if (mode == SL_OLD_LOAD) { - InitializeGame(256, 256, true, true); // set a mapsize of 256x256 for TTDPatch games or it might get confused + try { + /* Load a TTDLX or TTDPatch game */ + if (mode == SL_OLD_LOAD) { + InitializeGame(256, 256, true, true); // set a mapsize of 256x256 for TTDPatch games or it might get confused - /* TTD/TTO savegames have no NewGRFs, TTDP savegame have them - * and if so a new NewGRF list will be made in LoadOldSaveGame. - * Note: this is done here because AfterLoadGame is also called - * for OTTD savegames which have their own NewGRF logic. */ - ClearGRFConfigList(&_grfconfig); - GamelogReset(); - if (!LoadOldSaveGame(filename)) return SL_REINIT; - _sl_version = 0; - _sl_minor_version = 0; - GamelogStartAction(GLAT_LOAD); - if (!AfterLoadGame()) { + /* TTD/TTO savegames have no NewGRFs, TTDP savegame have them + * and if so a new NewGRF list will be made in LoadOldSaveGame. + * Note: this is done here because AfterLoadGame is also called + * for OTTD savegames which have their own NewGRF logic. */ + ClearGRFConfigList(&_grfconfig); + GamelogReset(); + if (!LoadOldSaveGame(filename)) return SL_REINIT; + _sl_version = 0; + _sl_minor_version = 0; + SlXvResetState(); + GamelogStartAction(GLAT_LOAD); + if (!AfterLoadGame()) { + GamelogStopAction(); + return SL_REINIT; + } GamelogStopAction(); - return SL_REINIT; + return SL_OK; } - GamelogStopAction(); - return SL_OK; - } - switch (mode) { - case SL_LOAD_CHECK: _sl.action = SLA_LOAD_CHECK; break; - case SL_LOAD: _sl.action = SLA_LOAD; break; - case SL_SAVE: _sl.action = SLA_SAVE; break; - default: NOT_REACHED(); - } + switch (mode) { + case SL_LOAD_CHECK: _sl.action = SLA_LOAD_CHECK; break; + case SL_LOAD: _sl.action = SLA_LOAD; break; + case SL_SAVE: _sl.action = SLA_SAVE; break; + default: NOT_REACHED(); + } - try { FILE *fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb); /* Make it a little easier to load savegames from the console */ @@ -2775,7 +2878,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, boo if (mode != SL_LOAD_CHECK) DEBUG(sl, 0, "%s", GetSaveLoadErrorString() + 3); /* A saver/loader exception!! reinitialize all variables to prevent crash! */ - return (mode == SL_LOAD) ? SL_REINIT : SL_ERROR; + return (mode == SL_LOAD || mode == SL_OLD_LOAD) ? SL_REINIT : SL_ERROR; } } diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 601f65d582..b080cd0f9b 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -14,6 +14,9 @@ #include "../fileio_type.h" #include "../strings_type.h" +#include "extended_ver_sl.h" + +#include /** Save or load result codes. */ enum SaveOrLoadResult { @@ -213,6 +216,8 @@ struct SaveLoad { * during runtime. Decision on which one to use is controlled by the function * that is called to save it. address: global=true, offset: global=false */ void *address; ///< address of variable OR offset of variable in the struct (max offset is 65536) + size_t size; ///< the sizeof size. + SlXvFeatureTest ext_feature_test; ///< extended feature test }; /** Same as #SaveLoad but global variables are used (for better readability); */ @@ -226,9 +231,11 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field * @note In general, it is better to use one of the SLE_* macros below. */ -#define SLE_GENERAL(cmd, base, variable, type, length, from, to) {false, cmd, type, length, from, to, (void*)cpp_offsetof(base, variable)} +#define SLE_GENERAL_X(cmd, base, variable, type, length, from, to, extver) {false, cmd, type, length, from, to, (void*)cpp_offsetof(base, variable), cpp_sizeof(base, variable), extver} +#define SLE_GENERAL(cmd, base, variable, type, length, from, to) SLE_GENERAL_X(cmd, base, variable, type, length, from, to, {}) /** * Storage of a variable in some savegame versions. @@ -237,8 +244,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLE_CONDVAR(base, variable, type, from, to) SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to) +#define SLE_CONDVAR_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_VAR, base, variable, type, 0, from, to, extver) +#define SLE_CONDVAR(base, variable, type, from, to) SLE_CONDVAR_X(base, variable, type, from, to, {}) /** * Storage of a reference in some savegame versions. @@ -247,8 +256,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Type of the reference, a value from #SLRefType. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLE_CONDREF(base, variable, type, from, to) SLE_GENERAL(SL_REF, base, variable, type, 0, from, to) +#define SLE_CONDREF_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_REF, base, variable, type, 0, from, to, extver) +#define SLE_CONDREF(base, variable, type, from, to) SLE_CONDREF_X(base, variable, type, from, to, {}) /** * Storage of an array in some savegame versions. @@ -258,8 +269,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Number of elements in the array. * @param from First savegame version that has the array. * @param to Last savegame version that has the array. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLE_CONDARR(base, variable, type, length, from, to) SLE_GENERAL(SL_ARR, base, variable, type, length, from, to) +#define SLE_CONDARR_X(base, variable, type, length, from, to, extver) SLE_GENERAL_X(SL_ARR, base, variable, type, length, from, to, extver) +#define SLE_CONDARR(base, variable, type, length, from, to) SLE_CONDARR_X(base, variable, type, length, from, to, {}) /** * Storage of a string in some savegame versions. @@ -269,8 +282,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Number of elements in the string (only used for fixed size buffers). * @param from First savegame version that has the string. * @param to Last savegame version that has the string. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLE_CONDSTR(base, variable, type, length, from, to) SLE_GENERAL(SL_STR, base, variable, type, length, from, to) +#define SLE_CONDSTR_X(base, variable, type, length, from, to, extver) SLE_GENERAL_X(SL_STR, base, variable, type, length, from, to, extver) +#define SLE_CONDSTR(base, variable, type, length, from, to) SLE_CONDSTR_X(base, variable, type, length, from, to, {}) /** * Storage of a list in some savegame versions. @@ -279,8 +294,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the list. * @param to Last savegame version that has the list. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLE_CONDLST(base, variable, type, from, to) SLE_GENERAL(SL_LST, base, variable, type, 0, from, to) +#define SLE_CONDLST_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_LST, base, variable, type, 0, from, to, extver) +#define SLE_CONDLST(base, variable, type, from, to) SLE_CONDLST_X(base, variable, type, from, to, {}) /** * Storage of a variable in every version of a savegame. @@ -335,17 +352,19 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Length of the empty space. * @param from First savegame version that has the empty space. * @param to Last savegame version that has the empty space. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have empty space */ -#define SLE_CONDNULL(length, from, to) SLE_CONDARR(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to) +#define SLE_CONDNULL_X(length, from, to, extver) SLE_CONDARR_X(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, extver) +#define SLE_CONDNULL(length, from, to) SLE_CONDNULL_X(length, from, to, {}) /** Translate values ingame to different values in the savegame and vv. */ #define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value) -#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL} -#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL} +#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, {}} +#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, {}} /** End marker of a struct/class save or load. */ -#define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL} +#define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL, 0, {}} /** * Storage of global simple variables, references (pointers), and arrays. @@ -354,9 +373,11 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field * @note In general, it is better to use one of the SLEG_* macros below. */ -#define SLEG_GENERAL(cmd, variable, type, length, from, to) {true, cmd, type, length, from, to, (void*)&variable} +#define SLEG_GENERAL_X(cmd, variable, type, length, from, to, extver) {true, cmd, type, length, from, to, (void*)&variable, sizeof(variable), extver} +#define SLEG_GENERAL(cmd, variable, type, length, from, to) SLEG_GENERAL_X(cmd, variable, type, length, from, to, {}) /** * Storage of a global variable in some savegame versions. @@ -364,8 +385,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLEG_CONDVAR(variable, type, from, to) SLEG_GENERAL(SL_VAR, variable, type, 0, from, to) +#define SLEG_CONDVAR_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_VAR, variable, type, 0, from, to, extver) +#define SLEG_CONDVAR(variable, type, from, to) SLEG_CONDVAR_X(variable, type, from, to, {}) /** * Storage of a global reference in some savegame versions. @@ -373,8 +396,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLEG_CONDREF(variable, type, from, to) SLEG_GENERAL(SL_REF, variable, type, 0, from, to) +#define SLEG_CONDREF_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_REF, variable, type, 0, from, to, extver) +#define SLEG_CONDREF(variable, type, from, to) SLEG_CONDREF_X(variable, type, from, to, {}) /** * Storage of a global array in some savegame versions. @@ -383,8 +408,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Number of elements in the array. * @param from First savegame version that has the array. * @param to Last savegame version that has the array. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLEG_CONDARR(variable, type, length, from, to) SLEG_GENERAL(SL_ARR, variable, type, length, from, to) +#define SLEG_CONDARR_X(variable, type, length, from, to, extver) SLEG_GENERAL_X(SL_ARR, variable, type, length, from, to, extver) +#define SLEG_CONDARR(variable, type, length, from, to) SLEG_CONDARR_X(variable, type, length, from, to, {}) /** * Storage of a global string in some savegame versions. @@ -393,8 +420,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Number of elements in the string (only used for fixed size buffers). * @param from First savegame version that has the string. * @param to Last savegame version that has the string. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLEG_CONDSTR(variable, type, length, from, to) SLEG_GENERAL(SL_STR, variable, type, length, from, to) +#define SLEG_CONDSTR_X(variable, type, length, from, to, extver) SLEG_GENERAL_X(SL_STR, variable, type, length, from, to, extver) +#define SLEG_CONDSTR(variable, type, length, from, to) SLEG_CONDSTR_X(variable, type, length, from, to, {}) /** * Storage of a global list in some savegame versions. @@ -402,8 +431,10 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the list. * @param to Last savegame version that has the list. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field */ -#define SLEG_CONDLST(variable, type, from, to) SLEG_GENERAL(SL_LST, variable, type, 0, from, to) +#define SLEG_CONDLST_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_LST, variable, type, 0, from, to, extver) +#define SLEG_CONDLST(variable, type, from, to) SLEG_CONDLST_X(variable, type, from, to, {}) /** * Storage of a global variable in every savegame version. @@ -445,11 +476,12 @@ typedef SaveLoad SaveLoadGlobVarList; * @param length Length of the empty space. * @param from First savegame version that has the empty space. * @param to Last savegame version that has the empty space. + * @param extver SlXvFeatureTest to test (along with from and to) which savegames have empty space */ -#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL} +#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL, {}} /** End marker of global variables save or load. */ -#define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL} +#define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL, 0, {}} /** * Checks whether the savegame is below \a major.\a minor. @@ -471,10 +503,10 @@ static inline bool IsSavegameVersionBefore(uint16 major, byte minor = 0) * @param version_to Highest version number that falls within the range. * @return Active savegame version falls within the given range. */ -static inline bool SlIsObjectCurrentlyValid(uint16 version_from, uint16 version_to) +static inline bool SlIsObjectCurrentlyValid(uint16 version_from, uint16 version_to, SlXvFeatureTest ext_feature_test) { extern const uint16 SAVEGAME_VERSION; - if (SAVEGAME_VERSION < version_from || SAVEGAME_VERSION > version_to) return false; + if (!ext_feature_test.IsFeaturePresent(SAVEGAME_VERSION, version_from, version_to)) return false; return true; } @@ -537,12 +569,64 @@ size_t SlCalcObjLength(const void *object, const SaveLoad *sld); byte SlReadByte(); void SlWriteByte(byte b); +static inline int SlReadUint16() +{ + int x = SlReadByte() << 8; + return x | SlReadByte(); +} + +static inline uint32 SlReadUint32() +{ + uint32 x = SlReadUint16() << 16; + return x | SlReadUint16(); +} + +static inline uint64 SlReadUint64() +{ + uint32 x = SlReadUint32(); + uint32 y = SlReadUint32(); + return (uint64)x << 32 | y; +} + +static inline void SlWriteUint16(uint16 v) +{ + SlWriteByte(GB(v, 8, 8)); + SlWriteByte(GB(v, 0, 8)); +} + +static inline void SlWriteUint32(uint32 v) +{ + SlWriteUint16(GB(v, 16, 16)); + SlWriteUint16(GB(v, 0, 16)); +} + +static inline void SlWriteUint64(uint64 x) +{ + SlWriteUint32((uint32)(x >> 32)); + SlWriteUint32((uint32)x); +} + +/** + * Read in bytes from the file/data structure but don't do + * anything with them, discarding them in effect + * @param length The amount of bytes that is being treated this way + */ +static inline void SlSkipBytes(size_t length) +{ + for (; length != 0; length--) SlReadByte(); +} + +size_t SlGetBytesRead(); +size_t SlGetBytesWritten(); + void SlGlobList(const SaveLoadGlobVarList *sldg); void SlArray(void *array, size_t length, VarType conv); void SlObject(void *object, const SaveLoad *sld); bool SlObjectMember(void *object, const SaveLoad *sld); -void NORETURN SlError(StringID string, const char *extra_msg = NULL); -void NORETURN SlErrorCorrupt(const char *msg); +void NORETURN SlError(StringID string, const char *extra_msg = NULL, bool already_malloced = false); +void NORETURN SlErrorCorrupt(const char *msg, bool already_malloced = false); +void CDECL NORETURN SlErrorFmt(StringID string, const char *msg, ...) WARN_FORMAT(2, 3); +void CDECL NORETURN SlErrorCorruptFmt(const char *msg, ...) WARN_FORMAT(1, 2); bool SaveloadCrashWithMissingNewGRFs(); diff --git a/src/saveload/signs_sl.cpp b/src/saveload/signs_sl.cpp index d5ea26d65d..d5bacd509c 100644 --- a/src/saveload/signs_sl.cpp +++ b/src/saveload/signs_sl.cpp @@ -15,6 +15,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** Description of a sign within the savegame. */ static const SaveLoad _sign_desc[] = { SLE_CONDVAR(Sign, name, SLE_NAME, 0, 83), diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index 8193bf6231..3db5e1f5f8 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -19,6 +19,8 @@ #include "saveload.h" #include "table/strings.h" +#include "../safeguards.h" + /** * Update the buoy orders to be waypoint orders. * @param o the order 'list' to check. @@ -93,7 +95,7 @@ void MoveBuoysToWaypoints() TILE_AREA_LOOP(t, train_st) { if (!IsTileType(t, MP_STATION) || GetStationIndex(t) != index) continue; - SB(_m[t].m6, 3, 3, STATION_WAYPOINT); + SB(_me[t].m6, 3, 3, STATION_WAYPOINT); wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE); } @@ -241,17 +243,19 @@ std::list _packets; uint32 _num_dests; struct FlowSaveLoad { - FlowSaveLoad() : via(0), share(0) {} + FlowSaveLoad() : source(0), via(0), share(0), restricted(false) {} StationID source; StationID via; uint32 share; + bool restricted; }; static const SaveLoad _flow_desc[] = { - SLE_VAR(FlowSaveLoad, source, SLE_UINT16), - SLE_VAR(FlowSaveLoad, via, SLE_UINT16), - SLE_VAR(FlowSaveLoad, share, SLE_UINT32), - SLE_END() + SLE_VAR(FlowSaveLoad, source, SLE_UINT16), + SLE_VAR(FlowSaveLoad, via, SLE_UINT16), + SLE_VAR(FlowSaveLoad, share, SLE_UINT32), + SLE_CONDVAR(FlowSaveLoad, restricted, SLE_BOOL, 187, SL_MAX_VERSION), + SLE_END() }; /** @@ -263,7 +267,7 @@ const SaveLoad *GetGoodsDesc() { static const SaveLoad goods_desc[] = { SLEG_CONDVAR( _waiting_acceptance, SLE_UINT16, 0, 67), - SLE_CONDVAR(GoodsEntry, acceptance_pickup, SLE_UINT8, 68, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, status, SLE_UINT8, 68, SL_MAX_VERSION), SLE_CONDNULL(2, 51, 67), SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8), SLE_VAR(GoodsEntry, rating, SLE_UINT8), @@ -335,7 +339,7 @@ static void Load_STNS() SlObject(ge, GetGoodsDesc()); SwapPackets(ge); if (IsSavegameVersionBefore(68)) { - SB(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); + SB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); if (GB(_waiting_acceptance, 0, 12) != 0) { /* In old versions, enroute_from used 0xFF as INVALID_STATION */ StationID source = (IsSavegameVersionBefore(7) && _cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; @@ -349,7 +353,7 @@ static void Load_STNS() /* Don't construct the packet with station here, because that'll fail with old savegames */ CargoPacket *cp = new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, source, _cargo_source_xy, _cargo_source_xy, _cargo_feeder_share); ge->cargo.Append(cp, INVALID_STATION); - SB(ge->acceptance_pickup, GoodsEntry::GES_PICKUP, 1, 1); + SB(ge->status, GoodsEntry::GES_RATING, 1, 1); } } } @@ -481,6 +485,7 @@ static void RealSave_STNN(BaseStation *bst) for (FlowStat::SharesMap::const_iterator inner_it(shares->begin()); inner_it != shares->end(); ++inner_it) { flow.via = inner_it->second; flow.share = inner_it->first - sum_shares; + flow.restricted = inner_it->first > outer_it->second.GetUnrestricted(); sum_shares = inner_it->first; assert(flow.share > 0); SlObject(&flow, _flow_desc); @@ -524,7 +529,7 @@ static void Load_STNN() if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(145) && st->facilities & FACIL_AIRPORT) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); - st->airport.psa = new PersistentStorage(0); + st->airport.psa = new PersistentStorage(0, 0, 0); memcpy(st->airport.psa->storage, _old_st_persistent_storage.storage, sizeof(st->airport.psa->storage)); } @@ -536,9 +541,9 @@ static void Load_STNN() for (uint32 j = 0; j < _num_flows; ++j) { SlObject(&flow, _flow_desc); if (fs == NULL || prev_source != flow.source) { - fs = &(st->goods[i].flows.insert(std::make_pair(flow.source, FlowStat(flow.via, flow.share))).first->second); + fs = &(st->goods[i].flows.insert(std::make_pair(flow.source, FlowStat(flow.via, flow.share, flow.restricted))).first->second); } else { - fs->AppendShare(flow.via, flow.share); + fs->AppendShare(flow.via, flow.share, flow.restricted); } prev_source = flow.source; } diff --git a/src/saveload/storage_sl.cpp b/src/saveload/storage_sl.cpp index 1fa8d2404a..110df63a7c 100644 --- a/src/saveload/storage_sl.cpp +++ b/src/saveload/storage_sl.cpp @@ -13,6 +13,8 @@ #include "../newgrf_storage.h" #include "saveload.h" +#include "../safeguards.h" + /** Description of the data to save and load in #PersistentStorage. */ static const SaveLoad _storage_desc[] = { SLE_CONDVAR(PersistentStorage, grfid, SLE_UINT32, 6, SL_MAX_VERSION), @@ -27,7 +29,7 @@ static void Load_PSAC() while ((index = SlIterateArray()) != -1) { assert(PersistentStorage::CanAllocateItem()); - PersistentStorage *ps = new (index) PersistentStorage(0); + PersistentStorage *ps = new (index) PersistentStorage(0, 0, 0); SlObject(ps, _storage_desc); } } @@ -39,6 +41,7 @@ static void Save_PSAC() /* Write the industries */ FOR_ALL_STORAGES(ps) { + ps->ClearChanges(); SlSetArrayIndex(ps->index); SlObject(ps, _storage_desc); } diff --git a/src/saveload/story_sl.cpp b/src/saveload/story_sl.cpp index 310f96fcb8..87e3720a62 100644 --- a/src/saveload/story_sl.cpp +++ b/src/saveload/story_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + /** Called after load to trash broken pages. */ void AfterLoadStoryBook() { diff --git a/src/saveload/strings_sl.cpp b/src/saveload/strings_sl.cpp index b1cc50d460..73f2a1e2e1 100644 --- a/src/saveload/strings_sl.cpp +++ b/src/saveload/strings_sl.cpp @@ -15,6 +15,8 @@ #include "table/strings.h" +#include "../safeguards.h" + static const int NUM_OLD_STRINGS = 512; ///< The number of custom strings stored in old savegames. static const int LEN_OLD_STRINGS = 32; ///< The number of characters per string. static const int LEN_OLD_STRINGS_TTO = 24; ///< The number of characters per string in TTO savegames. @@ -92,10 +94,10 @@ char *CopyFromOldName(StringID id) /* Terminate the new string and copy it back to the name array */ *strto = '\0'; - return strdup(tmp); + return stredup(tmp); } else { /* Name will already be in UTF-8. */ - return strdup(&_old_name_array[LEN_OLD_STRINGS * GB(id, 0, 9)]); + return stredup(&_old_name_array[LEN_OLD_STRINGS * GB(id, 0, 9)]); } } diff --git a/src/saveload/subsidy_sl.cpp b/src/saveload/subsidy_sl.cpp index bfdd25339f..f6d650468c 100644 --- a/src/saveload/subsidy_sl.cpp +++ b/src/saveload/subsidy_sl.cpp @@ -14,6 +14,8 @@ #include "saveload.h" +#include "../safeguards.h" + static const SaveLoad _subsidies_desc[] = { SLE_VAR(Subsidy, cargo_type, SLE_UINT8), SLE_VAR(Subsidy, remaining, SLE_UINT8), diff --git a/src/saveload/town_sl.cpp b/src/saveload/town_sl.cpp index de52604f5f..7db6a7aa6f 100644 --- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -18,6 +18,8 @@ #include "saveload.h" #include "newgrf_sl.h" +#include "../safeguards.h" + /** * Rebuild all the cached variables of towns. */ diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 9338f3eae5..db57da3dd8 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -19,11 +19,14 @@ #include "../effectvehicle_base.h" #include "../company_base.h" #include "../company_func.h" +#include "../disaster_vehicle.h" #include "saveload.h" #include +#include "../safeguards.h" + /** * Link front and rear multiheaded engines to each other * This is done when loading a savegame @@ -197,7 +200,8 @@ void UpdateOldAircraft() if (a->subtype == AIR_HELICOPTER) a->Next()->Next()->cur_speed = 32; /* set new position x,y,z */ - SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlyingAltitude(a)); + GetAircraftFlightLevelBounds(a, &a->z_pos, NULL); + SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlightLevel(a)); } } } @@ -394,7 +398,7 @@ void AfterLoadVehicles(bool part_of_load) Train *t = Train::From(v); if (t->IsFrontEngine() || t->IsFreeWagon()) { t->gcache.last_speed = t->cur_speed; // update displayed train speed - t->ConsistChanged(false); + t->ConsistChanged(CCF_SAVELOAD); } break; } @@ -475,8 +479,8 @@ void AfterLoadVehicles(bool part_of_load) v->UpdateDeltaXY(v->direction); v->coord.left = INVALID_COORD; - VehicleUpdatePosition(v); - VehicleUpdateViewport(v, false); + v->UpdatePosition(); + v->UpdateViewport(false); } } @@ -565,7 +569,7 @@ void FixupTrainLengths() } /* Update all cached properties after moving the vehicle chain around. */ - Train::From(v)->ConsistChanged(true); + Train::From(v)->ConsistChanged(CCF_TRACK); } } } @@ -856,8 +860,11 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_CONDVAR(Vehicle, age, SLE_INT32, 31, SL_MAX_VERSION), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), - SLE_VAR(DisasterVehicle, image_override, SLE_UINT16), - SLE_VAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT16), + SLE_CONDVAR(DisasterVehicle, image_override, SLE_FILE_U16 | SLE_VAR_U32, 0, 190), + SLE_CONDVAR(DisasterVehicle, image_override, SLE_UINT32, 191, SL_MAX_VERSION), + SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_FILE_U16 | SLE_VAR_U32, 0, 190), + SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT32, 191, SL_MAX_VERSION), + SLE_CONDVAR(DisasterVehicle, flags, SLE_UINT8, 194, SL_MAX_VERSION), SLE_CONDNULL(16, 2, 143), // old reserved space diff --git a/src/saveload/waypoint_sl.cpp b/src/saveload/waypoint_sl.cpp index 6ea72ea6f2..0f93969853 100644 --- a/src/saveload/waypoint_sl.cpp +++ b/src/saveload/waypoint_sl.cpp @@ -20,6 +20,8 @@ #include "saveload_internal.h" +#include "../safeguards.h" + /** Helper structure to convert from the old waypoint system. */ struct OldWaypoint { size_t index; diff --git a/src/screenshot.cpp b/src/screenshot.cpp index 52500a7568..a24cc6b211 100644 --- a/src/screenshot.cpp +++ b/src/screenshot.cpp @@ -28,6 +28,8 @@ #include "table/strings.h" +#include "safeguards.h" + static const char * const SCREENSHOT_NAME = "screenshot"; ///< Default filename of a saved screenshot. static const char * const HEIGHTMAP_NAME = "heightmap"; ///< Default filename of a saved heightmap. @@ -62,10 +64,8 @@ typedef bool ScreenshotHandlerProc(const char *name, ScreenshotCallback *callb, /** Screenshot format information. */ struct ScreenshotFormat { - const char *name; ///< Name of the format. const char *extension; ///< File extension. ScreenshotHandlerProc *proc; ///< Function for writing the screenshot. - bool supports_32bpp; ///< Does this format support 32bpp images? }; /************************************************* @@ -571,10 +571,10 @@ static bool MakePCXImage(const char *name, ScreenshotCallback *callb, void *user /** Available screenshot formats. */ static const ScreenshotFormat _screenshot_formats[] = { #if defined(WITH_PNG) - {"PNG", "png", &MakePNGImage, true}, + {"png", &MakePNGImage}, #endif - {"BMP", "bmp", &MakeBMPImage, true}, - {"PCX", "pcx", &MakePCXImage, false}, + {"bmp", &MakeBMPImage}, + {"pcx", &MakePCXImage}, }; /** Get filename extension of current screenshot file format. */ @@ -597,44 +597,13 @@ void InitializeScreenshotFormats() _num_screenshot_formats = lengthof(_screenshot_formats); } -/** - * Give descriptive name of the screenshot format. - * @param i Number of the screenshot format. - * @return String constant describing the format. - */ -const char *GetScreenshotFormatDesc(int i) -{ - return _screenshot_formats[i].name; -} - -/** - * Determine whether a certain screenshot format support 32bpp images. - * @param i Number of the screenshot format. - * @return true if 32bpp is supported. - */ -bool GetScreenshotFormatSupports_32bpp(int i) -{ - return _screenshot_formats[i].supports_32bpp; -} - -/** - * Set the screenshot format to use. - * @param i Number of the format. - */ -void SetScreenshotFormat(uint i) -{ - assert(i < _num_screenshot_formats); - _cur_screenshot_format = i; - strecpy(_screenshot_format_name, _screenshot_formats[i].extension, lastof(_screenshot_format_name)); -} - /** * Callback of the screenshot generator that dumps the current video buffer. * @see ScreenshotCallback */ static void CurrentScreenCallback(void *userdata, void *buf, uint y, uint pitch, uint n) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); void *src = blitter->MoveTo(_screen.dst_ptr, 0, y); blitter->CopyImageToBuffer(src, buf, _screen.width, n, pitch); } @@ -716,12 +685,12 @@ static const char *MakeScreenshotName(const char *default_fn, const char *ext, b /* Add extension to screenshot file */ size_t len = strlen(_screenshot_name); - snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, ".%s", ext); + seprintf(&_screenshot_name[len], lastof(_screenshot_name), ".%s", ext); const char *screenshot_dir = crashlog ? _personal_dir : FiosGetScreenshotDir(); for (uint serial = 1;; serial++) { - if (snprintf(_full_screenshot_name, lengthof(_full_screenshot_name), "%s%s", screenshot_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) { + if (seprintf(_full_screenshot_name, lastof(_full_screenshot_name), "%s%s", screenshot_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) { /* We need more characters than MAX_PATH -> end with error */ _full_screenshot_name[0] = '\0'; break; @@ -729,7 +698,7 @@ static const char *MakeScreenshotName(const char *default_fn, const char *ext, b if (!generate) break; // allow overwriting of non-automatic filenames if (!FileExists(_full_screenshot_name)) break; /* If file exists try another one with same name, but just with a higher index */ - snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, "#%u.%s", serial, ext); + seprintf(&_screenshot_name[len], lastof(_screenshot_name) - len, "#%u.%s", serial, ext); } return _full_screenshot_name; @@ -740,7 +709,7 @@ static bool MakeSmallScreenshot(bool crashlog) { const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; return sf->proc(MakeScreenshotName(SCREENSHOT_NAME, sf->extension, crashlog), CurrentScreenCallback, NULL, _screen.width, _screen.height, - BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); + BlitterFactory::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); } /** @@ -796,7 +765,7 @@ static bool MakeLargeWorldScreenshot(ScreenshotType t) const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; return sf->proc(MakeScreenshotName(SCREENSHOT_NAME, sf->extension), LargeWorldCallback, &vp, vp.width, vp.height, - BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); + BlitterFactory::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); } /** @@ -814,7 +783,7 @@ static void HeightmapCallback(void *userdata, void *buffer, uint y, uint pitch, while (n > 0) { TileIndex ti = TileXY(MapMaxX(), y); for (uint x = MapMaxX(); true; x--) { - *buf = 16 * TileHeight(ti); + *buf = 256 * TileHeight(ti) / (1 + _settings_game.construction.max_heightlevel); buf++; if (x == 0) break; ti = TILE_ADDXY(ti, -1, 0); diff --git a/src/screenshot.h b/src/screenshot.h index 7456a09de3..ee03d8aff7 100644 --- a/src/screenshot.h +++ b/src/screenshot.h @@ -14,9 +14,6 @@ void InitializeScreenshotFormats(); -const char *GetScreenshotFormatDesc(int i); -bool GetScreenshotFormatSupports_32bpp(int i); -void SetScreenshotFormat(uint i); const char *GetCurrentScreenshotExtension(); /** Type of requested screenshot */ diff --git a/src/script/api/ai/ai_cargo.hpp.sq b/src/script/api/ai/ai_cargo.hpp.sq index c658721264..6478d44b81 100644 --- a/src/script/api/ai/ai_cargo.hpp.sq +++ b/src/script/api/ai/ai_cargo.hpp.sq @@ -21,32 +21,37 @@ void SQAICargo_Register(Squirrel *engine) SQAICargo.PreRegister(engine); SQAICargo.AddConstructor(engine, "x"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_PASSENGERS, "CC_PASSENGERS"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_MAIL, "CC_MAIL"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_EXPRESS, "CC_EXPRESS"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_ARMOURED, "CC_ARMOURED"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_BULK, "CC_BULK"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_PIECE_GOODS, "CC_PIECE_GOODS"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_LIQUID, "CC_LIQUID"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_REFRIGERATED, "CC_REFRIGERATED"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_HAZARDOUS, "CC_HAZARDOUS"); - SQAICargo.DefSQConst(engine, ScriptCargo::CC_COVERED, "CC_COVERED"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_NONE, "TE_NONE"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_PASSENGERS, "TE_PASSENGERS"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_MAIL, "TE_MAIL"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_GOODS, "TE_GOODS"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_WATER, "TE_WATER"); - SQAICargo.DefSQConst(engine, ScriptCargo::TE_FOOD, "TE_FOOD"); - SQAICargo.DefSQConst(engine, ScriptCargo::CT_AUTO_REFIT, "CT_AUTO_REFIT"); - SQAICargo.DefSQConst(engine, ScriptCargo::CT_NO_REFIT, "CT_NO_REFIT"); - - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidCargo, "IsValidCargo", 2, ".i"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidTownEffect, "IsValidTownEffect", 2, ".i"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoLabel, "GetCargoLabel", 2, ".i"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsFreight, "IsFreight", 2, ".i"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::HasCargoClass, "HasCargoClass", 3, ".ii"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetTownEffect, "GetTownEffect", 2, ".i"); - SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoIncome, "GetCargoIncome", 4, ".iii"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_PASSENGERS, "CC_PASSENGERS"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_MAIL, "CC_MAIL"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_EXPRESS, "CC_EXPRESS"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_ARMOURED, "CC_ARMOURED"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_BULK, "CC_BULK"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_PIECE_GOODS, "CC_PIECE_GOODS"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_LIQUID, "CC_LIQUID"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_REFRIGERATED, "CC_REFRIGERATED"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_HAZARDOUS, "CC_HAZARDOUS"); + SQAICargo.DefSQConst(engine, ScriptCargo::CC_COVERED, "CC_COVERED"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_NONE, "TE_NONE"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_PASSENGERS, "TE_PASSENGERS"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_MAIL, "TE_MAIL"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_GOODS, "TE_GOODS"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_WATER, "TE_WATER"); + SQAICargo.DefSQConst(engine, ScriptCargo::TE_FOOD, "TE_FOOD"); + SQAICargo.DefSQConst(engine, ScriptCargo::CT_AUTO_REFIT, "CT_AUTO_REFIT"); + SQAICargo.DefSQConst(engine, ScriptCargo::CT_NO_REFIT, "CT_NO_REFIT"); + SQAICargo.DefSQConst(engine, ScriptCargo::DT_MANUAL, "DT_MANUAL"); + SQAICargo.DefSQConst(engine, ScriptCargo::DT_ASYMMETRIC, "DT_ASYMMETRIC"); + SQAICargo.DefSQConst(engine, ScriptCargo::DT_SYMMETRIC, "DT_SYMMETRIC"); + SQAICargo.DefSQConst(engine, ScriptCargo::INVALID_DISTRIBUTION_TYPE, "INVALID_DISTRIBUTION_TYPE"); + + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidCargo, "IsValidCargo", 2, ".i"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidTownEffect, "IsValidTownEffect", 2, ".i"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoLabel, "GetCargoLabel", 2, ".i"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::IsFreight, "IsFreight", 2, ".i"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::HasCargoClass, "HasCargoClass", 3, ".ii"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetTownEffect, "GetTownEffect", 2, ".i"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoIncome, "GetCargoIncome", 4, ".iii"); + SQAICargo.DefSQStaticMethod(engine, &ScriptCargo::GetDistributionType, "GetDistributionType", 2, ".i"); SQAICargo.PostRegister(engine); } diff --git a/src/script/api/ai/ai_date.hpp.sq b/src/script/api/ai/ai_date.hpp.sq index 3210a6950f..7bdf9519d6 100644 --- a/src/script/api/ai/ai_date.hpp.sq +++ b/src/script/api/ai/ai_date.hpp.sq @@ -21,6 +21,9 @@ void SQAIDate_Register(Squirrel *engine) SQAIDate.PreRegister(engine); SQAIDate.AddConstructor(engine, "x"); + SQAIDate.DefSQConst(engine, ScriptDate::DATE_INVALID, "DATE_INVALID"); + + SQAIDate.DefSQStaticMethod(engine, &ScriptDate::IsValidDate, "IsValidDate", 2, ".i"); SQAIDate.DefSQStaticMethod(engine, &ScriptDate::GetCurrentDate, "GetCurrentDate", 1, "."); SQAIDate.DefSQStaticMethod(engine, &ScriptDate::GetYear, "GetYear", 2, ".i"); SQAIDate.DefSQStaticMethod(engine, &ScriptDate::GetMonth, "GetMonth", 2, ".i"); diff --git a/src/script/api/ai/ai_list.hpp.sq b/src/script/api/ai/ai_list.hpp.sq index db724da831..201113823d 100644 --- a/src/script/api/ai/ai_list.hpp.sq +++ b/src/script/api/ai/ai_list.hpp.sq @@ -40,6 +40,7 @@ void SQAIList_Register(Squirrel *engine) SQAIList.DefSQMethod(engine, &ScriptList::SetValue, "SetValue", 3, "xii"); SQAIList.DefSQMethod(engine, &ScriptList::Sort, "Sort", 3, "xib"); SQAIList.DefSQMethod(engine, &ScriptList::AddList, "AddList", 2, "xx"); + SQAIList.DefSQMethod(engine, &ScriptList::SwapList, "SwapList", 2, "xx"); SQAIList.DefSQMethod(engine, &ScriptList::RemoveAboveValue, "RemoveAboveValue", 2, "xi"); SQAIList.DefSQMethod(engine, &ScriptList::RemoveBelowValue, "RemoveBelowValue", 2, "xi"); SQAIList.DefSQMethod(engine, &ScriptList::RemoveBetweenValue, "RemoveBetweenValue", 3, "xii"); diff --git a/src/script/api/ai/ai_station.hpp.sq b/src/script/api/ai/ai_station.hpp.sq index 60e7a9cce3..af7012d354 100644 --- a/src/script/api/ai/ai_station.hpp.sq +++ b/src/script/api/ai/ai_station.hpp.sq @@ -47,6 +47,13 @@ void SQAIStation_Register(Squirrel *engine) SQAIStation.DefSQStaticMethod(engine, &ScriptStation::IsValidStation, "IsValidStation", 2, ".i"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetStationID, "GetStationID", 2, ".i"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaiting, "GetCargoWaiting", 3, ".ii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingFrom, "GetCargoWaitingFrom", 4, ".iii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingVia, "GetCargoWaitingVia", 4, ".iii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingFromVia, "GetCargoWaitingFromVia", 5, ".iiii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlanned, "GetCargoPlanned", 3, ".ii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedFrom, "GetCargoPlannedFrom", 4, ".iii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedVia, "GetCargoPlannedVia", 4, ".iii"); + SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedFromVia, "GetCargoPlannedFromVia", 5, ".iiii"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::HasCargoRating, "HasCargoRating", 3, ".ii"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoRating, "GetCargoRating", 3, ".ii"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCoverageRadius, "GetCoverageRadius", 2, ".i"); diff --git a/src/script/api/ai/ai_stationlist.hpp.sq b/src/script/api/ai/ai_stationlist.hpp.sq index 998e89cc1e..93a8c6e767 100644 --- a/src/script/api/ai/ai_stationlist.hpp.sq +++ b/src/script/api/ai/ai_stationlist.hpp.sq @@ -25,6 +25,145 @@ void SQAIStationList_Register(Squirrel *engine) } +template <> const char *GetClassName() { return "AIStationList_Cargo"; } + +void SQAIStationList_Cargo_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_Cargo("AIStationList_Cargo"); + SQAIStationList_Cargo.PreRegister(engine, "AIList"); + SQAIStationList_Cargo.AddConstructor(engine, "xiiiii"); + + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_BY_FROM, "CS_BY_FROM"); + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_VIA_BY_FROM, "CS_VIA_BY_FROM"); + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_BY_VIA, "CS_BY_VIA"); + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_FROM_BY_VIA, "CS_FROM_BY_VIA"); + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CM_WAITING, "CM_WAITING"); + SQAIStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CM_PLANNED, "CM_PLANNED"); + + SQAIStationList_Cargo.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoWaiting"; } + +void SQAIStationList_CargoWaiting_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoWaiting("AIStationList_CargoWaiting"); + SQAIStationList_CargoWaiting.PreRegister(engine, "AIStationList_Cargo"); + SQAIStationList_CargoWaiting.AddConstructor(engine, "xiiii"); + + SQAIStationList_CargoWaiting.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoPlanned"; } + +void SQAIStationList_CargoPlanned_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoPlanned("AIStationList_CargoPlanned"); + SQAIStationList_CargoPlanned.PreRegister(engine, "AIStationList_Cargo"); + SQAIStationList_CargoPlanned.AddConstructor(engine, "xiiii"); + + SQAIStationList_CargoPlanned.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoWaitingByFrom"; } + +void SQAIStationList_CargoWaitingByFrom_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoWaitingByFrom("AIStationList_CargoWaitingByFrom"); + SQAIStationList_CargoWaitingByFrom.PreRegister(engine, "AIStationList_CargoWaiting"); + SQAIStationList_CargoWaitingByFrom.AddConstructor(engine, "xii"); + + SQAIStationList_CargoWaitingByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoWaitingViaByFrom"; } + +void SQAIStationList_CargoWaitingViaByFrom_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoWaitingViaByFrom("AIStationList_CargoWaitingViaByFrom"); + SQAIStationList_CargoWaitingViaByFrom.PreRegister(engine, "AIStationList_CargoWaiting"); + SQAIStationList_CargoWaitingViaByFrom.AddConstructor(engine, "xiii"); + + SQAIStationList_CargoWaitingViaByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoWaitingByVia"; } + +void SQAIStationList_CargoWaitingByVia_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoWaitingByVia("AIStationList_CargoWaitingByVia"); + SQAIStationList_CargoWaitingByVia.PreRegister(engine, "AIStationList_CargoWaiting"); + SQAIStationList_CargoWaitingByVia.AddConstructor(engine, "xii"); + + SQAIStationList_CargoWaitingByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoWaitingFromByVia"; } + +void SQAIStationList_CargoWaitingFromByVia_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoWaitingFromByVia("AIStationList_CargoWaitingFromByVia"); + SQAIStationList_CargoWaitingFromByVia.PreRegister(engine, "AIStationList_CargoWaiting"); + SQAIStationList_CargoWaitingFromByVia.AddConstructor(engine, "xiii"); + + SQAIStationList_CargoWaitingFromByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoPlannedByFrom"; } + +void SQAIStationList_CargoPlannedByFrom_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoPlannedByFrom("AIStationList_CargoPlannedByFrom"); + SQAIStationList_CargoPlannedByFrom.PreRegister(engine, "AIStationList_CargoPlanned"); + SQAIStationList_CargoPlannedByFrom.AddConstructor(engine, "xii"); + + SQAIStationList_CargoPlannedByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoPlannedViaByFrom"; } + +void SQAIStationList_CargoPlannedViaByFrom_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoPlannedViaByFrom("AIStationList_CargoPlannedViaByFrom"); + SQAIStationList_CargoPlannedViaByFrom.PreRegister(engine, "AIStationList_CargoPlanned"); + SQAIStationList_CargoPlannedViaByFrom.AddConstructor(engine, "xiii"); + + SQAIStationList_CargoPlannedViaByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoPlannedByVia"; } + +void SQAIStationList_CargoPlannedByVia_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoPlannedByVia("AIStationList_CargoPlannedByVia"); + SQAIStationList_CargoPlannedByVia.PreRegister(engine, "AIStationList_CargoPlanned"); + SQAIStationList_CargoPlannedByVia.AddConstructor(engine, "xii"); + + SQAIStationList_CargoPlannedByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "AIStationList_CargoPlannedFromByVia"; } + +void SQAIStationList_CargoPlannedFromByVia_Register(Squirrel *engine) +{ + DefSQClass SQAIStationList_CargoPlannedFromByVia("AIStationList_CargoPlannedFromByVia"); + SQAIStationList_CargoPlannedFromByVia.PreRegister(engine, "AIStationList_CargoPlanned"); + SQAIStationList_CargoPlannedFromByVia.AddConstructor(engine, "xiii"); + + SQAIStationList_CargoPlannedFromByVia.PostRegister(engine); +} + + template <> const char *GetClassName() { return "AIStationList_Vehicle"; } void SQAIStationList_Vehicle_Register(Squirrel *engine) diff --git a/src/script/api/ai/ai_town.hpp.sq b/src/script/api/ai/ai_town.hpp.sq index 70e3e994eb..6b09190be8 100644 --- a/src/script/api/ai/ai_town.hpp.sq +++ b/src/script/api/ai/ai_town.hpp.sq @@ -44,6 +44,12 @@ void SQAITown_Register(Squirrel *engine) SQAITown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_2x2, "ROAD_LAYOUT_2x2"); SQAITown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_3x3, "ROAD_LAYOUT_3x3"); SQAITown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_INVALID, "ROAD_LAYOUT_INVALID"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_SIZE_SMALL, "TOWN_SIZE_SMALL"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_SIZE_MEDIUM, "TOWN_SIZE_MEDIUM"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_SIZE_LARGE, "TOWN_SIZE_LARGE"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_SIZE_INVALID, "TOWN_SIZE_INVALID"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_GROWTH_NONE, "TOWN_GROWTH_NONE"); + SQAITown.DefSQConst(engine, ScriptTown::TOWN_GROWTH_NORMAL, "TOWN_GROWTH_NORMAL"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetTownCount, "GetTownCount", 1, "."); SQAITown.DefSQStaticMethod(engine, &ScriptTown::IsValidTown, "IsValidTown", 2, ".i"); @@ -63,10 +69,12 @@ void SQAITown_Register(Squirrel *engine) SQAITown.DefSQStaticMethod(engine, &ScriptTown::HasStatue, "HasStatue", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::IsCity, "IsCity", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetRoadReworkDuration, "GetRoadReworkDuration", 2, ".i"); + SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetFundBuildingsDuration, "GetFundBuildingsDuration", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetExclusiveRightsCompany, "GetExclusiveRightsCompany", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetExclusiveRightsDuration, "GetExclusiveRightsDuration", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::IsActionAvailable, "IsActionAvailable", 3, ".ii"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::PerformTownAction, "PerformTownAction", 3, ".ii"); + SQAITown.DefSQStaticMethod(engine, &ScriptTown::FoundTown, "FoundTown", 6, ".iibi."); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetRating, "GetRating", 3, ".ii"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetAllowedNoise, "GetAllowedNoise", 2, ".i"); SQAITown.DefSQStaticMethod(engine, &ScriptTown::GetRoadLayout, "GetRoadLayout", 2, ".i"); diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index 9519c26074..0cf57fe0ff 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -15,18 +15,75 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * - * \b 1.4.0 + * \b 1.6.0 + * + * 1.6.0 is not yet released. The following changes are not set in stone yet. * - * 1.4.0 is not yet released. The following changes are not set in stone yet. + * \b 1.5.0 * * API additions: + * \li AIList::SwapList + * \li AIStation::GetCargoPlanned + * \li AIStation::GetCargoPlannedFrom + * \li AIStation::GetCargoPlannedFromVia + * \li AIStation::GetCargoPlannedVia + * \li AIStation::GetCargoWaitingFromVia + * \li AIStationList_CargoPlannedByFrom + * \li AIStationList_CargoPlannedByVia + * \li AIStationList_CargoPlannedFromByVia + * \li AIStationList_CargoPlannedViaByFrom + * \li AIStationList_CargoWaitingByFrom + * \li AIStationList_CargoWaitingByVia + * \li AIStationList_CargoWaitingFromByVia + * \li AIStationList_CargoWaitingViaByFrom + * + * \b 1.4.4 + * + * No changes + * + * \b 1.4.3 + * + * No changes + * + * \b 1.4.2 + * + * No changes + * + * \b 1.4.1 + * + * No changes + * + * \b 1.4.0 + * + * API additions: + * \li AICargo::GetDistributionType + * \li AIDate::DATE_INVALID + * \li AIDate::IsValidDate * \li AIStation::HasCargoRating + * \li AIStation::GetCargoWaitingFrom + * \li AIStation::GetCargoWaitingVia * \li AITile::GetTerrainType + * \li AITown::FoundTown + * \li AITown::GetFundBuildingsDuration + * \li AITown::TOWN_GROWTH_NONE * * Other changes: * \li AIStation::GetCargoRating does return -1 for cargo-station combinations that * do not have a rating yet instead of returning 69. * + * \b 1.3.3 + * + * No changes + * + * \b 1.3.2 + * + * No changes + * + * \b 1.3.1 + * + * API additions: + * \li AITile::GetTerrainType + * * \b 1.3.0 * * API additions: diff --git a/src/script/api/game/game_cargo.hpp.sq b/src/script/api/game/game_cargo.hpp.sq index 188c732a86..515d5ff28f 100644 --- a/src/script/api/game/game_cargo.hpp.sq +++ b/src/script/api/game/game_cargo.hpp.sq @@ -21,32 +21,37 @@ void SQGSCargo_Register(Squirrel *engine) SQGSCargo.PreRegister(engine); SQGSCargo.AddConstructor(engine, "x"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_PASSENGERS, "CC_PASSENGERS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_MAIL, "CC_MAIL"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_EXPRESS, "CC_EXPRESS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_ARMOURED, "CC_ARMOURED"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_BULK, "CC_BULK"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_PIECE_GOODS, "CC_PIECE_GOODS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_LIQUID, "CC_LIQUID"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_REFRIGERATED, "CC_REFRIGERATED"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_HAZARDOUS, "CC_HAZARDOUS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CC_COVERED, "CC_COVERED"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_NONE, "TE_NONE"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_PASSENGERS, "TE_PASSENGERS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_MAIL, "TE_MAIL"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_GOODS, "TE_GOODS"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_WATER, "TE_WATER"); - SQGSCargo.DefSQConst(engine, ScriptCargo::TE_FOOD, "TE_FOOD"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CT_AUTO_REFIT, "CT_AUTO_REFIT"); - SQGSCargo.DefSQConst(engine, ScriptCargo::CT_NO_REFIT, "CT_NO_REFIT"); - - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidCargo, "IsValidCargo", 2, ".i"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidTownEffect, "IsValidTownEffect", 2, ".i"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoLabel, "GetCargoLabel", 2, ".i"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsFreight, "IsFreight", 2, ".i"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::HasCargoClass, "HasCargoClass", 3, ".ii"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetTownEffect, "GetTownEffect", 2, ".i"); - SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoIncome, "GetCargoIncome", 4, ".iii"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_PASSENGERS, "CC_PASSENGERS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_MAIL, "CC_MAIL"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_EXPRESS, "CC_EXPRESS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_ARMOURED, "CC_ARMOURED"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_BULK, "CC_BULK"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_PIECE_GOODS, "CC_PIECE_GOODS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_LIQUID, "CC_LIQUID"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_REFRIGERATED, "CC_REFRIGERATED"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_HAZARDOUS, "CC_HAZARDOUS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CC_COVERED, "CC_COVERED"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_NONE, "TE_NONE"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_PASSENGERS, "TE_PASSENGERS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_MAIL, "TE_MAIL"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_GOODS, "TE_GOODS"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_WATER, "TE_WATER"); + SQGSCargo.DefSQConst(engine, ScriptCargo::TE_FOOD, "TE_FOOD"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CT_AUTO_REFIT, "CT_AUTO_REFIT"); + SQGSCargo.DefSQConst(engine, ScriptCargo::CT_NO_REFIT, "CT_NO_REFIT"); + SQGSCargo.DefSQConst(engine, ScriptCargo::DT_MANUAL, "DT_MANUAL"); + SQGSCargo.DefSQConst(engine, ScriptCargo::DT_ASYMMETRIC, "DT_ASYMMETRIC"); + SQGSCargo.DefSQConst(engine, ScriptCargo::DT_SYMMETRIC, "DT_SYMMETRIC"); + SQGSCargo.DefSQConst(engine, ScriptCargo::INVALID_DISTRIBUTION_TYPE, "INVALID_DISTRIBUTION_TYPE"); + + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidCargo, "IsValidCargo", 2, ".i"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsValidTownEffect, "IsValidTownEffect", 2, ".i"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoLabel, "GetCargoLabel", 2, ".i"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::IsFreight, "IsFreight", 2, ".i"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::HasCargoClass, "HasCargoClass", 3, ".ii"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetTownEffect, "GetTownEffect", 2, ".i"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetCargoIncome, "GetCargoIncome", 4, ".iii"); + SQGSCargo.DefSQStaticMethod(engine, &ScriptCargo::GetDistributionType, "GetDistributionType", 2, ".i"); SQGSCargo.PostRegister(engine); } diff --git a/src/script/api/game/game_company.hpp.sq b/src/script/api/game/game_company.hpp.sq index 98c6d44764..56917a5b21 100644 --- a/src/script/api/game/game_company.hpp.sq +++ b/src/script/api/game/game_company.hpp.sq @@ -21,15 +21,29 @@ void SQGSCompany_Register(Squirrel *engine) SQGSCompany.PreRegister(engine); SQGSCompany.AddConstructor(engine, "x"); - SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER"); - SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER"); - SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST"); - SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST"); - SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID"); - SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF"); - SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE"); - SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE"); - SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID"); + SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER"); + SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST"); + SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST"); + SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID"); + SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF"); + SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE"); + SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE"); + SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_CONSTRUCTION, "EXPENSES_CONSTRUCTION"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_NEW_VEHICLES, "EXPENSES_NEW_VEHICLES"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_RUN, "EXPENSES_TRAIN_RUN"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_RUN, "EXPENSES_ROADVEH_RUN"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_RUN, "EXPENSES_AIRCRAFT_RUN"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_RUN, "EXPENSES_SHIP_RUN"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_PROPERTY, "EXPENSES_PROPERTY"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_INC, "EXPENSES_TRAIN_INC"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_INC, "EXPENSES_ROADVEH_INC"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_INC, "EXPENSES_AIRCRAFT_INC"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_INC, "EXPENSES_SHIP_INC"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_LOAN_INT, "EXPENSES_LOAN_INT"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_OTHER, "EXPENSES_OTHER"); + SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_INVALID, "EXPENSES_INVALID"); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i"); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetName, "SetName", 2, ".."); @@ -43,6 +57,7 @@ void SQGSCompany_Register(Squirrel *engine) SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetMaxLoanAmount, "GetMaxLoanAmount", 1, "."); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetLoanInterval, "GetLoanInterval", 1, "."); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetBankBalance, "GetBankBalance", 2, ".i"); + SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::ChangeBankBalance, "ChangeBankBalance", 4, ".iii"); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetQuarterlyIncome, "GetQuarterlyIncome", 3, ".ii"); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetQuarterlyExpenses, "GetQuarterlyExpenses", 3, ".ii"); SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetQuarterlyCargoDelivered, "GetQuarterlyCargoDelivered", 3, ".ii"); diff --git a/src/script/api/game/game_date.hpp.sq b/src/script/api/game/game_date.hpp.sq index 43af86afa7..dc40989da0 100644 --- a/src/script/api/game/game_date.hpp.sq +++ b/src/script/api/game/game_date.hpp.sq @@ -21,6 +21,9 @@ void SQGSDate_Register(Squirrel *engine) SQGSDate.PreRegister(engine); SQGSDate.AddConstructor(engine, "x"); + SQGSDate.DefSQConst(engine, ScriptDate::DATE_INVALID, "DATE_INVALID"); + + SQGSDate.DefSQStaticMethod(engine, &ScriptDate::IsValidDate, "IsValidDate", 2, ".i"); SQGSDate.DefSQStaticMethod(engine, &ScriptDate::GetCurrentDate, "GetCurrentDate", 1, "."); SQGSDate.DefSQStaticMethod(engine, &ScriptDate::GetYear, "GetYear", 2, ".i"); SQGSDate.DefSQStaticMethod(engine, &ScriptDate::GetMonth, "GetMonth", 2, ".i"); diff --git a/src/script/api/game/game_goal.hpp.sq b/src/script/api/game/game_goal.hpp.sq index 1833bb1824..7d8a3bf5e7 100644 --- a/src/script/api/game/game_goal.hpp.sq +++ b/src/script/api/game/game_goal.hpp.sq @@ -27,6 +27,7 @@ void SQGSGoal_Register(Squirrel *engine) SQGSGoal.DefSQConst(engine, ScriptGoal::GT_INDUSTRY, "GT_INDUSTRY"); SQGSGoal.DefSQConst(engine, ScriptGoal::GT_TOWN, "GT_TOWN"); SQGSGoal.DefSQConst(engine, ScriptGoal::GT_COMPANY, "GT_COMPANY"); + SQGSGoal.DefSQConst(engine, ScriptGoal::GT_STORY_PAGE, "GT_STORY_PAGE"); SQGSGoal.DefSQConst(engine, ScriptGoal::QT_QUESTION, "QT_QUESTION"); SQGSGoal.DefSQConst(engine, ScriptGoal::QT_INFORMATION, "QT_INFORMATION"); SQGSGoal.DefSQConst(engine, ScriptGoal::QT_WARNING, "QT_WARNING"); diff --git a/src/script/api/game/game_list.hpp.sq b/src/script/api/game/game_list.hpp.sq index 03049b314f..a46696def5 100644 --- a/src/script/api/game/game_list.hpp.sq +++ b/src/script/api/game/game_list.hpp.sq @@ -40,6 +40,7 @@ void SQGSList_Register(Squirrel *engine) SQGSList.DefSQMethod(engine, &ScriptList::SetValue, "SetValue", 3, "xii"); SQGSList.DefSQMethod(engine, &ScriptList::Sort, "Sort", 3, "xib"); SQGSList.DefSQMethod(engine, &ScriptList::AddList, "AddList", 2, "xx"); + SQGSList.DefSQMethod(engine, &ScriptList::SwapList, "SwapList", 2, "xx"); SQGSList.DefSQMethod(engine, &ScriptList::RemoveAboveValue, "RemoveAboveValue", 2, "xi"); SQGSList.DefSQMethod(engine, &ScriptList::RemoveBelowValue, "RemoveBelowValue", 2, "xi"); SQGSList.DefSQMethod(engine, &ScriptList::RemoveBetweenValue, "RemoveBetweenValue", 3, "xii"); diff --git a/src/script/api/game/game_news.hpp.sq b/src/script/api/game/game_news.hpp.sq index 70416f6b7c..3d7022e10e 100644 --- a/src/script/api/game/game_news.hpp.sq +++ b/src/script/api/game/game_news.hpp.sq @@ -28,8 +28,13 @@ void SQGSNews_Register(Squirrel *engine) SQGSNews.DefSQConst(engine, ScriptNews::NT_ACCEPTANCE, "NT_ACCEPTANCE"); SQGSNews.DefSQConst(engine, ScriptNews::NT_SUBSIDIES, "NT_SUBSIDIES"); SQGSNews.DefSQConst(engine, ScriptNews::NT_GENERAL, "NT_GENERAL"); + SQGSNews.DefSQConst(engine, ScriptNews::NR_NONE, "NR_NONE"); + SQGSNews.DefSQConst(engine, ScriptNews::NR_TILE, "NR_TILE"); + SQGSNews.DefSQConst(engine, ScriptNews::NR_STATION, "NR_STATION"); + SQGSNews.DefSQConst(engine, ScriptNews::NR_INDUSTRY, "NR_INDUSTRY"); + SQGSNews.DefSQConst(engine, ScriptNews::NR_TOWN, "NR_TOWN"); - SQGSNews.DefSQStaticMethod(engine, &ScriptNews::Create, "Create", 4, ".i.i"); + SQGSNews.DefSQStaticMethod(engine, &ScriptNews::Create, "Create", 6, ".i.iii"); SQGSNews.PostRegister(engine); } diff --git a/src/script/api/game/game_station.hpp.sq b/src/script/api/game/game_station.hpp.sq index 24f80f7d64..e3a7425caa 100644 --- a/src/script/api/game/game_station.hpp.sq +++ b/src/script/api/game/game_station.hpp.sq @@ -48,6 +48,13 @@ void SQGSStation_Register(Squirrel *engine) SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetOwner, "GetOwner", 2, ".i"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetStationID, "GetStationID", 2, ".i"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaiting, "GetCargoWaiting", 3, ".ii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingFrom, "GetCargoWaitingFrom", 4, ".iii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingVia, "GetCargoWaitingVia", 4, ".iii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoWaitingFromVia, "GetCargoWaitingFromVia", 5, ".iiii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlanned, "GetCargoPlanned", 3, ".ii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedFrom, "GetCargoPlannedFrom", 4, ".iii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedVia, "GetCargoPlannedVia", 4, ".iii"); + SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoPlannedFromVia, "GetCargoPlannedFromVia", 5, ".iiii"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::HasCargoRating, "HasCargoRating", 3, ".ii"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoRating, "GetCargoRating", 3, ".ii"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCoverageRadius, "GetCoverageRadius", 2, ".i"); diff --git a/src/script/api/game/game_stationlist.hpp.sq b/src/script/api/game/game_stationlist.hpp.sq index 65138964ff..a3cdfaa967 100644 --- a/src/script/api/game/game_stationlist.hpp.sq +++ b/src/script/api/game/game_stationlist.hpp.sq @@ -25,6 +25,145 @@ void SQGSStationList_Register(Squirrel *engine) } +template <> const char *GetClassName() { return "GSStationList_Cargo"; } + +void SQGSStationList_Cargo_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_Cargo("GSStationList_Cargo"); + SQGSStationList_Cargo.PreRegister(engine, "GSList"); + SQGSStationList_Cargo.AddConstructor(engine, "xiiiii"); + + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_BY_FROM, "CS_BY_FROM"); + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_VIA_BY_FROM, "CS_VIA_BY_FROM"); + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_BY_VIA, "CS_BY_VIA"); + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CS_FROM_BY_VIA, "CS_FROM_BY_VIA"); + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CM_WAITING, "CM_WAITING"); + SQGSStationList_Cargo.DefSQConst(engine, ScriptStationList_Cargo::CM_PLANNED, "CM_PLANNED"); + + SQGSStationList_Cargo.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoWaiting"; } + +void SQGSStationList_CargoWaiting_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoWaiting("GSStationList_CargoWaiting"); + SQGSStationList_CargoWaiting.PreRegister(engine, "GSStationList_Cargo"); + SQGSStationList_CargoWaiting.AddConstructor(engine, "xiiii"); + + SQGSStationList_CargoWaiting.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoPlanned"; } + +void SQGSStationList_CargoPlanned_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoPlanned("GSStationList_CargoPlanned"); + SQGSStationList_CargoPlanned.PreRegister(engine, "GSStationList_Cargo"); + SQGSStationList_CargoPlanned.AddConstructor(engine, "xiiii"); + + SQGSStationList_CargoPlanned.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoWaitingByFrom"; } + +void SQGSStationList_CargoWaitingByFrom_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoWaitingByFrom("GSStationList_CargoWaitingByFrom"); + SQGSStationList_CargoWaitingByFrom.PreRegister(engine, "GSStationList_CargoWaiting"); + SQGSStationList_CargoWaitingByFrom.AddConstructor(engine, "xii"); + + SQGSStationList_CargoWaitingByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoWaitingViaByFrom"; } + +void SQGSStationList_CargoWaitingViaByFrom_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoWaitingViaByFrom("GSStationList_CargoWaitingViaByFrom"); + SQGSStationList_CargoWaitingViaByFrom.PreRegister(engine, "GSStationList_CargoWaiting"); + SQGSStationList_CargoWaitingViaByFrom.AddConstructor(engine, "xiii"); + + SQGSStationList_CargoWaitingViaByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoWaitingByVia"; } + +void SQGSStationList_CargoWaitingByVia_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoWaitingByVia("GSStationList_CargoWaitingByVia"); + SQGSStationList_CargoWaitingByVia.PreRegister(engine, "GSStationList_CargoWaiting"); + SQGSStationList_CargoWaitingByVia.AddConstructor(engine, "xii"); + + SQGSStationList_CargoWaitingByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoWaitingFromByVia"; } + +void SQGSStationList_CargoWaitingFromByVia_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoWaitingFromByVia("GSStationList_CargoWaitingFromByVia"); + SQGSStationList_CargoWaitingFromByVia.PreRegister(engine, "GSStationList_CargoWaiting"); + SQGSStationList_CargoWaitingFromByVia.AddConstructor(engine, "xiii"); + + SQGSStationList_CargoWaitingFromByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoPlannedByFrom"; } + +void SQGSStationList_CargoPlannedByFrom_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoPlannedByFrom("GSStationList_CargoPlannedByFrom"); + SQGSStationList_CargoPlannedByFrom.PreRegister(engine, "GSStationList_CargoPlanned"); + SQGSStationList_CargoPlannedByFrom.AddConstructor(engine, "xii"); + + SQGSStationList_CargoPlannedByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoPlannedViaByFrom"; } + +void SQGSStationList_CargoPlannedViaByFrom_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoPlannedViaByFrom("GSStationList_CargoPlannedViaByFrom"); + SQGSStationList_CargoPlannedViaByFrom.PreRegister(engine, "GSStationList_CargoPlanned"); + SQGSStationList_CargoPlannedViaByFrom.AddConstructor(engine, "xiii"); + + SQGSStationList_CargoPlannedViaByFrom.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoPlannedByVia"; } + +void SQGSStationList_CargoPlannedByVia_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoPlannedByVia("GSStationList_CargoPlannedByVia"); + SQGSStationList_CargoPlannedByVia.PreRegister(engine, "GSStationList_CargoPlanned"); + SQGSStationList_CargoPlannedByVia.AddConstructor(engine, "xii"); + + SQGSStationList_CargoPlannedByVia.PostRegister(engine); +} + + +template <> const char *GetClassName() { return "GSStationList_CargoPlannedFromByVia"; } + +void SQGSStationList_CargoPlannedFromByVia_Register(Squirrel *engine) +{ + DefSQClass SQGSStationList_CargoPlannedFromByVia("GSStationList_CargoPlannedFromByVia"); + SQGSStationList_CargoPlannedFromByVia.PreRegister(engine, "GSStationList_CargoPlanned"); + SQGSStationList_CargoPlannedFromByVia.AddConstructor(engine, "xiii"); + + SQGSStationList_CargoPlannedFromByVia.PostRegister(engine); +} + + template <> const char *GetClassName() { return "GSStationList_Vehicle"; } void SQGSStationList_Vehicle_Register(Squirrel *engine) diff --git a/src/script/api/game/game_story_page.hpp.sq b/src/script/api/game/game_story_page.hpp.sq index 1d0fe6cedf..621399bb03 100644 --- a/src/script/api/game/game_story_page.hpp.sq +++ b/src/script/api/game/game_story_page.hpp.sq @@ -32,9 +32,15 @@ void SQGSStoryPage_Register(Squirrel *engine) SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::New, "New", 3, ".i."); SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::NewElement, "NewElement", 5, ".iii."); SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::UpdateElement, "UpdateElement", 4, ".ii."); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::GetPageSortValue, "GetPageSortValue", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::GetPageElementSortValue, "GetPageElementSortValue", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::GetCompany, "GetCompany", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::GetDate, "GetDate", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::SetDate, "SetDate", 3, ".ii"); SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::SetTitle, "SetTitle", 3, ".i."); SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::Show, "Show", 2, ".i"); SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::Remove, "Remove", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::RemoveElement, "RemoveElement", 2, ".i"); SQGSStoryPage.PostRegister(engine); } diff --git a/src/script/api/game/game_storypageelementlist.hpp.sq b/src/script/api/game/game_storypageelementlist.hpp.sq new file mode 100644 index 0000000000..5ef3e6ed38 --- /dev/null +++ b/src/script/api/game/game_storypageelementlist.hpp.sq @@ -0,0 +1,25 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */ + +#include "../script_storypageelementlist.hpp" +#include "../template/template_storypageelementlist.hpp.sq" + + +template <> const char *GetClassName() { return "GSStoryPageElementList"; } + +void SQGSStoryPageElementList_Register(Squirrel *engine) +{ + DefSQClass SQGSStoryPageElementList("GSStoryPageElementList"); + SQGSStoryPageElementList.PreRegister(engine, "GSList"); + SQGSStoryPageElementList.AddConstructor(engine, "xi"); + + SQGSStoryPageElementList.PostRegister(engine); +} diff --git a/src/script/api/game/game_storypagelist.hpp.sq b/src/script/api/game/game_storypagelist.hpp.sq new file mode 100644 index 0000000000..99b25a30ac --- /dev/null +++ b/src/script/api/game/game_storypagelist.hpp.sq @@ -0,0 +1,25 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */ + +#include "../script_storypagelist.hpp" +#include "../template/template_storypagelist.hpp.sq" + + +template <> const char *GetClassName() { return "GSStoryPageList"; } + +void SQGSStoryPageList_Register(Squirrel *engine) +{ + DefSQClass SQGSStoryPageList("GSStoryPageList"); + SQGSStoryPageList.PreRegister(engine, "GSList"); + SQGSStoryPageList.AddConstructor(engine, "xi"); + + SQGSStoryPageList.PostRegister(engine); +} diff --git a/src/script/api/game/game_town.hpp.sq b/src/script/api/game/game_town.hpp.sq index ddd80c59dd..30eec6928a 100644 --- a/src/script/api/game/game_town.hpp.sq +++ b/src/script/api/game/game_town.hpp.sq @@ -44,10 +44,17 @@ void SQGSTown_Register(Squirrel *engine) SQGSTown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_2x2, "ROAD_LAYOUT_2x2"); SQGSTown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_3x3, "ROAD_LAYOUT_3x3"); SQGSTown.DefSQConst(engine, ScriptTown::ROAD_LAYOUT_INVALID, "ROAD_LAYOUT_INVALID"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_SIZE_SMALL, "TOWN_SIZE_SMALL"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_SIZE_MEDIUM, "TOWN_SIZE_MEDIUM"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_SIZE_LARGE, "TOWN_SIZE_LARGE"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_SIZE_INVALID, "TOWN_SIZE_INVALID"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_GROWTH_NONE, "TOWN_GROWTH_NONE"); + SQGSTown.DefSQConst(engine, ScriptTown::TOWN_GROWTH_NORMAL, "TOWN_GROWTH_NORMAL"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetTownCount, "GetTownCount", 1, "."); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::IsValidTown, "IsValidTown", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetName, "GetName", 2, ".i"); + SQGSTown.DefSQStaticMethod(engine, &ScriptTown::SetName, "SetName", 3, ".i."); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::SetText, "SetText", 3, ".i."); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetPopulation, "GetPopulation", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetHouseCount, "GetHouseCount", 2, ".i"); @@ -66,11 +73,13 @@ void SQGSTown_Register(Squirrel *engine) SQGSTown.DefSQStaticMethod(engine, &ScriptTown::HasStatue, "HasStatue", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::IsCity, "IsCity", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetRoadReworkDuration, "GetRoadReworkDuration", 2, ".i"); + SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetFundBuildingsDuration, "GetFundBuildingsDuration", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetExclusiveRightsCompany, "GetExclusiveRightsCompany", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetExclusiveRightsDuration, "GetExclusiveRightsDuration", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::IsActionAvailable, "IsActionAvailable", 3, ".ii"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::PerformTownAction, "PerformTownAction", 3, ".ii"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::ExpandTown, "ExpandTown", 3, ".ii"); + SQGSTown.DefSQStaticMethod(engine, &ScriptTown::FoundTown, "FoundTown", 6, ".iibi."); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetRating, "GetRating", 3, ".ii"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetAllowedNoise, "GetAllowedNoise", 2, ".i"); SQGSTown.DefSQStaticMethod(engine, &ScriptTown::GetRoadLayout, "GetRoadLayout", 2, ".i"); diff --git a/src/script/api/game/game_window.hpp.sq b/src/script/api/game/game_window.hpp.sq index 0363a004fd..23627ca665 100644 --- a/src/script/api/game/game_window.hpp.sq +++ b/src/script/api/game/game_window.hpp.sq @@ -137,6 +137,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WC_NEWGRF_INSPECT, "WC_NEWGRF_INSPECT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_SPRITE_ALIGNER, "WC_SPRITE_ALIGNER"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_LINKGRAPH_LEGEND, "WC_LINKGRAPH_LEGEND"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WC_SAVE_PRESET, "WC_SAVE_PRESET"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_INVALID, "WC_INVALID"); SQGSWindow.DefSQConst(engine, ScriptWindow::TC_BLUE, "TC_BLUE"); SQGSWindow.DefSQConst(engine, ScriptWindow::TC_SILVER, "TC_SILVER"); @@ -212,6 +213,9 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_AP_BTN_DONTHILIGHT, "WID_AP_BTN_DONTHILIGHT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_AP_BTN_DOHILIGHT, "WID_AP_BTN_DOHILIGHT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_CAPTION, "WID_RV_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_SORT_ASCENDING_DESCENDING, "WID_RV_SORT_ASCENDING_DESCENDING"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_SHOW_HIDDEN_ENGINES, "WID_RV_SHOW_HIDDEN_ENGINES"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_SORT_DROPDOWN, "WID_RV_SORT_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_LEFT_MATRIX, "WID_RV_LEFT_MATRIX"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_LEFT_SCROLLBAR, "WID_RV_LEFT_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RV_RIGHT_MATRIX, "WID_RV_RIGHT_MATRIX"); @@ -236,13 +240,15 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BBS_BRIDGE_LIST, "WID_BBS_BRIDGE_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BBS_SCROLLBAR, "WID_BBS_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_CAPTION, "WID_BV_CAPTION"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SORT_ASSENDING_DESCENDING, "WID_BV_SORT_ASSENDING_DESCENDING"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SORT_ASCENDING_DESCENDING, "WID_BV_SORT_ASCENDING_DESCENDING"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SORT_DROPDOWN, "WID_BV_SORT_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_CARGO_FILTER_DROPDOWN, "WID_BV_CARGO_FILTER_DROPDOWN"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SHOW_HIDDEN_ENGINES, "WID_BV_SHOW_HIDDEN_ENGINES"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_LIST, "WID_BV_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SCROLLBAR, "WID_BV_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_PANEL, "WID_BV_PANEL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_BUILD, "WID_BV_BUILD"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_SHOW_HIDE, "WID_BV_SHOW_HIDE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_BUILD_SEL, "WID_BV_BUILD_SEL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_RENAME, "WID_BV_RENAME"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_C_PANEL, "WID_C_PANEL"); @@ -454,9 +460,10 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_MAPSIZE_Y_PULLDOWN, "WID_GL_MAPSIZE_Y_PULLDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_TOWN_PULLDOWN, "WID_GL_TOWN_PULLDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_INDUSTRY_PULLDOWN, "WID_GL_INDUSTRY_PULLDOWN"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_RANDOM_EDITBOX, "WID_GL_RANDOM_EDITBOX"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_RANDOM_BUTTON, "WID_GL_RANDOM_BUTTON"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_GENERATE_BUTTON, "WID_GL_GENERATE_BUTTON"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_MAX_HEIGHTLEVEL_DOWN, "WID_GL_MAX_HEIGHTLEVEL_DOWN"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_MAX_HEIGHTLEVEL_TEXT, "WID_GL_MAX_HEIGHTLEVEL_TEXT"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_MAX_HEIGHTLEVEL_UP, "WID_GL_MAX_HEIGHTLEVEL_UP"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_START_DATE_DOWN, "WID_GL_START_DATE_DOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_START_DATE_TEXT, "WID_GL_START_DATE_TEXT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_START_DATE_UP, "WID_GL_START_DATE_UP"); @@ -615,6 +622,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_Q_NO, "WID_Q_NO"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_Q_YES, "WID_Q_YES"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TF_CAPTION, "WID_TF_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TF_WRAPTEXT, "WID_TF_WRAPTEXT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TF_BACKGROUND, "WID_TF_BACKGROUND"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TF_VSCROLLBAR, "WID_TF_VSCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TF_HSCROLLBAR, "WID_TF_HSCROLLBAR"); @@ -752,6 +760,9 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NCP_OK, "WID_NCP_OK"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_CAPTION, "WID_NGRFI_CAPTION"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_PARENT, "WID_NGRFI_PARENT"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_VEH_PREV, "WID_NGRFI_VEH_PREV"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_VEH_NEXT, "WID_NGRFI_VEH_NEXT"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_VEH_CHAIN, "WID_NGRFI_VEH_CHAIN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_MAINPANEL, "WID_NGRFI_MAINPANEL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NGRFI_SCROLLBAR, "WID_NGRFI_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_CAPTION, "WID_SA_CAPTION"); @@ -763,10 +774,12 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_RIGHT, "WID_SA_RIGHT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_DOWN, "WID_SA_DOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_SPRITE, "WID_SA_SPRITE"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS, "WID_SA_OFFSETS"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS_ABS, "WID_SA_OFFSETS_ABS"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS_REL, "WID_SA_OFFSETS_REL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_PICKER, "WID_SA_PICKER"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_LIST, "WID_SA_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_SCROLLBAR, "WID_SA_SCROLLBAR"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_RESET_REL, "WID_SA_RESET_REL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_SHOW_NUMPAR, "WID_NP_SHOW_NUMPAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_NUMPAR_DEC, "WID_NP_NUMPAR_DEC"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_NUMPAR_INC, "WID_NP_NUMPAR_INC"); @@ -785,6 +798,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_REMOVE, "WID_NS_REMOVE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_MOVE_UP, "WID_NS_MOVE_UP"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_MOVE_DOWN, "WID_NS_MOVE_DOWN"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_UPGRADE, "WID_NS_UPGRADE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_FILTER, "WID_NS_FILTER"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_FILE_LIST, "WID_NS_FILE_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_SCROLLBAR, "WID_NS_SCROLLBAR"); @@ -804,6 +818,11 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_CONTENT_DOWNLOAD2, "WID_NS_CONTENT_DOWNLOAD2"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_SHOW_REMOVE, "WID_NS_SHOW_REMOVE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NS_SHOW_APPLY, "WID_NS_SHOW_APPLY"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SVP_PRESET_LIST, "WID_SVP_PRESET_LIST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SVP_SCROLLBAR, "WID_SVP_SCROLLBAR"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SVP_EDITBOX, "WID_SVP_EDITBOX"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SVP_CANCEL, "WID_SVP_CANCEL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SVP_SAVE, "WID_SVP_SAVE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SP_PROGRESS_BAR, "WID_SP_PROGRESS_BAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SP_PROGRESS_TEXT, "WID_SP_PROGRESS_TEXT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_N_PANEL, "WID_N_PANEL"); @@ -987,7 +1006,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_LANG_DROPDOWN, "WID_GO_LANG_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_RESOLUTION_DROPDOWN, "WID_GO_RESOLUTION_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_FULLSCREEN_BUTTON, "WID_GO_FULLSCREEN_BUTTON"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_SCREENSHOT_DROPDOWN, "WID_GO_SCREENSHOT_DROPDOWN"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_GUI_ZOOM_DROPDOWN, "WID_GO_GUI_ZOOM_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_DROPDOWN, "WID_GO_BASE_GRF_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_STATUS, "WID_GO_BASE_GRF_STATUS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_TEXTFILE, "WID_GO_BASE_GRF_TEXTFILE"); @@ -1005,7 +1024,8 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_HELP_TEXT, "WID_GS_HELP_TEXT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_EXPAND_ALL, "WID_GS_EXPAND_ALL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_COLLAPSE_ALL, "WID_GS_COLLAPSE_ALL"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_RESTRICT_LABEL, "WID_GS_RESTRICT_LABEL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_RESTRICT_CATEGORY, "WID_GS_RESTRICT_CATEGORY"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_RESTRICT_TYPE, "WID_GS_RESTRICT_TYPE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_RESTRICT_DROPDOWN, "WID_GS_RESTRICT_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_TYPE_DROPDOWN, "WID_GS_TYPE_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_CC_RATE_DOWN, "WID_CC_RATE_DOWN"); diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index ee21d0be9f..8c01be8d1d 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -15,24 +15,94 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * - * \b 1.4.0 + * \b 1.6.0 + * + * 1.6.0 is not yet released. The following changes are not set in stone yet. + * + * \b 1.5.0 + * + * API additions: + * \li GSList::SwapList + * \li GSStation::GetCargoPlanned + * \li GSStation::GetCargoPlannedFrom + * \li GSStation::GetCargoPlannedFromVia + * \li GSStation::GetCargoPlannedVia + * \li GSStation::GetCargoWaitingFromVia + * \li GSStationList_CargoPlannedByFrom + * \li GSStationList_CargoPlannedByVia + * \li GSStationList_CargoPlannedFromByVia + * \li GSStationList_CargoPlannedViaByFrom + * \li GSStationList_CargoWaitingByFrom + * \li GSStationList_CargoWaitingByVia + * \li GSStationList_CargoWaitingFromByVia + * \li GSStationList_CargoWaitingViaByFrom + * + * Other changes: + * \li GSNews::Create takes two extra parameters to refer to a location, station, + * industry, or town. The user can click at the news message to jump to the + * referred location. + * + * \b 1.4.4 + * + * No changes + * + * \b 1.4.3 + * + * No changes + * + * \b 1.4.2 + * + * Other changes: + * \li GSCargoMonitor delivery and pickup monitor functions have improved boundary checking for + * their parameters, and return \c -1 if they are found out of bounds. + * + * \b 1.4.1 + * + * No changes * - * 1.4.0 is not yet released. The following changes are not set in stone yet. + * \b 1.4.0 * * API additions: + * \li AICargo::GetDistributionType + * \li GSCompany::ChangeBankBalance + * \li GSDate::DATE_INVALID + * \li GSDate::IsValidDate + * \li GSGoal::GT_STORY_PAGE * \li GSGoal::IsCompleted * \li GSGoal::SetCompleted * \li GSGoal::SetProgress * \li GSGoal::SetText * \li GSStation::HasCargoRating + * \li GSStation::GetCargoWaitingFrom + * \li GSStation::GetCargoWaitingVia * \li GSStoryPage + * \li GSStoryPageList + * \li GSStoryPageElementList * \li GSTile::GetTerrainType + * \li GSTown::FoundTown + * \li GSTown::GetFundBuildingsDuration + * \li GSTown::SetName + * \li GSTown::TOWN_GROWTH_NONE + * \li GSTown::TOWN_GROWTH_NORMAL * * Other changes: * \li GSGoal::New can now create up to 64000 concurrent goals. The old limit was 256 goals. * \li GSStation::GetCargoRating does return -1 for cargo-station combinations that * do not have a rating yet instead of returning 69. * + * \b 1.3.3 + * + * No changes + * + * \b 1.3.2 + * + * No changes + * + * \b 1.3.1 + * + * API additions: + * \li GSTile::GetTerrainType + * * \b 1.3.0 * * API additions: diff --git a/src/script/api/script_accounting.cpp b/src/script/api/script_accounting.cpp index dfe05df3b0..e6fddf9e8c 100644 --- a/src/script/api/script_accounting.cpp +++ b/src/script/api/script_accounting.cpp @@ -12,6 +12,8 @@ #include "../../stdafx.h" #include "script_accounting.hpp" +#include "../../safeguards.h" + Money ScriptAccounting::GetCosts() { return this->GetDoCommandCosts(); diff --git a/src/script/api/script_admin.cpp b/src/script/api/script_admin.cpp index 3625fb4585..f66d9fc8a8 100644 --- a/src/script/api/script_admin.cpp +++ b/src/script/api/script_admin.cpp @@ -14,6 +14,9 @@ #include "script_log.hpp" #include "../../network/network_admin.h" #include "../script_instance.hpp" +#include "../../string_func.h" + +#include "../../safeguards.h" /* static */ bool ScriptAdmin::MakeJSON(HSQUIRRELVM vm, SQInteger index, int max_depth, std::string &data) { @@ -28,18 +31,15 @@ sq_getinteger(vm, index, &res); char buf[10]; - snprintf(buf, sizeof(buf), "%d", (int32)res); + seprintf(buf, lastof(buf), "%d", (int32)res); data = buf; return true; } case OT_STRING: { - const SQChar *res; - sq_getstring(vm, index, &res); + const SQChar *buf; + sq_getstring(vm, index, &buf); - /* @bug if a string longer than 512 characters is given to SQ2OTTD, the - * internal buffer overflows. */ - const char *buf = SQ2OTTD(res); size_t len = strlen(buf) + 1; if (len >= 255) { ScriptLog::Error("Maximum string length is 254 chars. No data sent."); @@ -126,10 +126,10 @@ /* static */ SQInteger ScriptAdmin::Send(HSQUIRRELVM vm) { - if (sq_gettop(vm) - 1 != 1) return sq_throwerror(vm, _SC("wrong number of parameters")); + if (sq_gettop(vm) - 1 != 1) return sq_throwerror(vm, "wrong number of parameters"); if (sq_gettype(vm, 2) != OT_TABLE) { - return sq_throwerror(vm, _SC("ScriptAdmin::Send requires a table as first parameter. No data sent.")); + return sq_throwerror(vm, "ScriptAdmin::Send requires a table as first parameter. No data sent."); } std::string json; diff --git a/src/script/api/script_airport.cpp b/src/script/api/script_airport.cpp index 438a18ae98..edb912609e 100644 --- a/src/script/api/script_airport.cpp +++ b/src/script/api/script_airport.cpp @@ -15,6 +15,8 @@ #include "../../station_base.h" #include "../../town.h" +#include "../../safeguards.h" + /* static */ bool ScriptAirport::IsValidAirportType(AirportType type) { return IsAirportInformationAvailable(type) && ::AirportSpec::Get(type)->IsAvailable(); diff --git a/src/script/api/script_base.cpp b/src/script/api/script_base.cpp index 7fd5b2df90..5b2d550b8c 100644 --- a/src/script/api/script_base.cpp +++ b/src/script/api/script_base.cpp @@ -15,6 +15,8 @@ #include "../../network/network.h" #include "../../core/random_func.hpp" +#include "../../safeguards.h" + /* static */ uint32 ScriptBase::Rand() { /* We pick RandomRange if we are in SP (so when saved, we do the same over and over) diff --git a/src/script/api/script_basestation.cpp b/src/script/api/script_basestation.cpp index d46d717a0c..229abf8657 100644 --- a/src/script/api/script_basestation.cpp +++ b/src/script/api/script_basestation.cpp @@ -17,6 +17,8 @@ #include "../../strings_func.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ bool ScriptBaseStation::IsValidBaseStation(StationID station_id) { const BaseStation *st = ::BaseStation::GetIfValid(station_id); @@ -52,9 +54,9 @@ return ::BaseStation::Get(station_id)->xy; } -/* static */ int32 ScriptBaseStation::GetConstructionDate(StationID station_id) +/* static */ ScriptDate::Date ScriptBaseStation::GetConstructionDate(StationID station_id) { - if (!IsValidBaseStation(station_id)) return -1; + if (!IsValidBaseStation(station_id)) return ScriptDate::DATE_INVALID; - return ::BaseStation::Get(station_id)->build_date; + return (ScriptDate::Date)::BaseStation::Get(station_id)->build_date; } diff --git a/src/script/api/script_basestation.hpp b/src/script/api/script_basestation.hpp index e610280790..9676829f67 100644 --- a/src/script/api/script_basestation.hpp +++ b/src/script/api/script_basestation.hpp @@ -13,6 +13,7 @@ #define SCRIPT_BASESTATION_HPP #include "script_text.hpp" +#include "script_date.hpp" /** * Base class for stations and waypoints. @@ -73,7 +74,7 @@ public: * @param station_id The station to look at. * @return The last date some part of this station was build. */ - static int32 GetConstructionDate(StationID station_id); + static ScriptDate::Date GetConstructionDate(StationID station_id); }; #endif /* SCRIPT_BASESTATION_HPP */ diff --git a/src/script/api/script_bridge.cpp b/src/script/api/script_bridge.cpp index 8cd11b3112..45bec466c8 100644 --- a/src/script/api/script_bridge.cpp +++ b/src/script/api/script_bridge.cpp @@ -17,6 +17,8 @@ #include "../../strings_func.h" #include "../../date_func.h" +#include "../../safeguards.h" + /* static */ bool ScriptBridge::IsValidBridge(BridgeID bridge_id) { return bridge_id < MAX_BRIDGES && ::GetBridgeSpec(bridge_id)->avail_year <= _cur_year; @@ -73,6 +75,7 @@ static void _DoCommandReturnBuildBridge1(class ScriptInstance *instance) EnforcePrecondition(false, TileX(start) == TileX(end) || TileY(start) == TileY(end)); EnforcePrecondition(false, vehicle_type == ScriptVehicle::VT_ROAD || vehicle_type == ScriptVehicle::VT_RAIL || vehicle_type == ScriptVehicle::VT_WATER); EnforcePrecondition(false, vehicle_type != ScriptVehicle::VT_RAIL || ScriptRail::IsRailTypeAvailable(ScriptRail::GetCurrentRailType())); + EnforcePrecondition(false, vehicle_type != ScriptVehicle::VT_ROAD || ScriptRoad::IsRoadTypeAvailable(ScriptRoad::GetCurrentRoadType())); EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY || vehicle_type == ScriptVehicle::VT_ROAD); uint type = 0; diff --git a/src/script/api/script_bridge.hpp b/src/script/api/script_bridge.hpp index 8a00206fde..e069285969 100644 --- a/src/script/api/script_bridge.hpp +++ b/src/script/api/script_bridge.hpp @@ -133,7 +133,8 @@ public: * @pre 'start' and 'end' are in a straight line, i.e. * ScriptMap::GetTileX(start) == ScriptMap::GetTileX(end) or * ScriptMap::GetTileY(start) == ScriptMap::GetTileY(end). - * @pre vehicle_type == ScriptVehicle::VT_ROAD || vehicle_type == ScriptVehicle::VT_WATER || + * @pre vehicle_type == ScriptVehicle::VT_WATER || + * (vehicle_type == ScriptVehicle::VT_ROAD && ScriptRoad::IsRoadTypeAvailable(ScriptRoad::GetCurrentRoadType())) || * (vehicle_type == ScriptVehicle::VT_RAIL && ScriptRail::IsRailTypeAvailable(ScriptRail::GetCurrentRailType())). * @game @pre Outside CompanyMode: vehicle_type == ScriptVehicle::VT_ROAD. * @exception ScriptError::ERR_ALREADY_BUILT diff --git a/src/script/api/script_bridgelist.cpp b/src/script/api/script_bridgelist.cpp index 9687663e9e..0969342ecb 100644 --- a/src/script/api/script_bridgelist.cpp +++ b/src/script/api/script_bridgelist.cpp @@ -14,6 +14,8 @@ #include "script_bridge.hpp" #include "../../bridge.h" +#include "../../safeguards.h" + ScriptBridgeList::ScriptBridgeList() { for (byte j = 0; j < MAX_BRIDGES; j++) { diff --git a/src/script/api/script_cargo.cpp b/src/script/api/script_cargo.cpp index e8268b6bbe..a2643f897f 100644 --- a/src/script/api/script_cargo.cpp +++ b/src/script/api/script_cargo.cpp @@ -13,6 +13,9 @@ #include "script_cargo.hpp" #include "../../economy_func.h" #include "../../core/bitmath_func.hpp" +#include "../../settings_type.h" + +#include "../../safeguards.h" /* static */ bool ScriptCargo::IsValidCargo(CargoID cargo_type) { @@ -64,3 +67,9 @@ if (!IsValidCargo(cargo_type)) return -1; return ::GetTransportedGoodsIncome(1, distance, Clamp(days_in_transit * 2 / 5, 0, 255), cargo_type); } + +/* static */ ScriptCargo::DistributionType ScriptCargo::GetDistributionType(CargoID cargo_type) +{ + if (!ScriptCargo::IsValidCargo(cargo_type)) return INVALID_DISTRIBUTION_TYPE; + return (ScriptCargo::DistributionType)_settings_game.linkgraph.GetDistributionType(cargo_type); +} \ No newline at end of file diff --git a/src/script/api/script_cargo.hpp b/src/script/api/script_cargo.hpp index f4e4303625..d1bfdd1fcc 100644 --- a/src/script/api/script_cargo.hpp +++ b/src/script/api/script_cargo.hpp @@ -14,6 +14,7 @@ #include "script_object.hpp" #include "../../cargotype.h" +#include "../../linkgraph/linkgraph_type.h" /** * Class that handles all cargo related functions. @@ -60,6 +61,16 @@ public: CT_NO_REFIT = ::CT_NO_REFIT, ///< Do not refit cargo of a vehicle. }; + /** + * Type of cargo distribution. + */ + enum DistributionType { + DT_MANUAL = ::DT_MANUAL, ///< Manual distribution. + DT_ASYMMETRIC = ::DT_ASYMMETRIC, ///< Asymmetric distribution. Usually cargo will only travel in one direction. + DT_SYMMETRIC = ::DT_SYMMETRIC, ///< Symmetric distribution. The same amount of cargo travels in each direction between each pair of nodes. + INVALID_DISTRIBUTION_TYPE = 0xFFFF, ///< Invalid distribution type. + }; + /** * Checks whether the given cargo type is valid. * @param cargo_type The cargo to check. @@ -79,8 +90,15 @@ public: * @param cargo_type The cargo to get the string representation of. * @pre ScriptCargo::IsValidCargo(cargo_type). * @return The cargo label. - * @note Never use this to check if it is a certain cargo. NewGRF can - * redefine all of the names. + * @note + * - The label uniquely identifies a specific cargo. Use this if you want to + * detect special cargos from specific industry set (like production booster cargos, supplies, ...). + * - For more generic cargo support, rather check cargo properties though. For example: + * - Use ScriptCargo::HasCargoClass(..., CC_PASSENGER) to decide bus vs. truck requirements. + * - Use ScriptCargo::GetTownEffect(...) paired with ScriptTown::GetCargoGoal(...) to determine + * town growth requirements. + * - In other words: Only use the cargo label, if you know more about the behaviour + * of a specific cargo from a specific industry set, than the API methods can tell you. */ static char *GetCargoLabel(CargoID cargo_type); @@ -121,6 +139,13 @@ public: * @return The amount of money that would be earned by this trip. */ static Money GetCargoIncome(CargoID cargo_type, uint32 distance, uint32 days_in_transit); + + /** + * Get the cargo distribution type for a cargo. + * @param cargo_type The cargo to check on. + * @return The cargo distribution type for the given cargo. + */ + static DistributionType GetDistributionType(CargoID cargo_type); }; #endif /* SCRIPT_CARGO_HPP */ diff --git a/src/script/api/script_cargolist.cpp b/src/script/api/script_cargolist.cpp index 08f705d60d..b96cd721e9 100644 --- a/src/script/api/script_cargolist.cpp +++ b/src/script/api/script_cargolist.cpp @@ -17,6 +17,8 @@ #include "../../industry.h" #include "../../station_base.h" +#include "../../safeguards.h" + ScriptCargoList::ScriptCargoList() { const CargoSpec *cs; @@ -57,6 +59,6 @@ ScriptCargoList_StationAccepting::ScriptCargoList_StationAccepting(StationID sta Station *st = ::Station::Get(station_id); for (CargoID i = 0; i < NUM_CARGO; i++) { - if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::GES_ACCEPTANCE)) this->AddItem(i); + if (HasBit(st->goods[i].status, GoodsEntry::GES_ACCEPTANCE)) this->AddItem(i); } } diff --git a/src/script/api/script_cargomonitor.cpp b/src/script/api/script_cargomonitor.cpp index e19821bba8..3cb9b4a8e7 100644 --- a/src/script/api/script_cargomonitor.cpp +++ b/src/script/api/script_cargomonitor.cpp @@ -10,29 +10,54 @@ /** @file script_cargomonitor.cpp Code to monitor cargo pickup and deliveries by companies. */ #include "../../stdafx.h" +#include "script_cargo.hpp" #include "script_cargomonitor.hpp" +#include "../../town.h" +#include "../../industry.h" -/* static */ uint32 ScriptCargoMonitor::GetTownDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring) +#include "../../safeguards.h" + +/* static */ int32 ScriptCargoMonitor::GetTownDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring) { - CargoMonitorID monitor = EncodeCargoTownMonitor(static_cast(company), cargo, town_id); + CompanyID cid = static_cast(company); + if (cid < OWNER_BEGIN || cid >= MAX_COMPANIES) return -1; + if (!ScriptCargo::IsValidCargo(cargo)) return -1; + if (!::Town::IsValidID(town_id)) return -1; + + CargoMonitorID monitor = EncodeCargoTownMonitor(cid, cargo, town_id); return GetDeliveryAmount(monitor, keep_monitoring); } -/* static */ uint32 ScriptCargoMonitor::GetIndustryDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring) +/* static */ int32 ScriptCargoMonitor::GetIndustryDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring) { - CargoMonitorID monitor = EncodeCargoIndustryMonitor(static_cast(company), cargo, industry_id); + CompanyID cid = static_cast(company); + if (cid < OWNER_BEGIN || cid >= MAX_COMPANIES) return -1; + if (!ScriptCargo::IsValidCargo(cargo)) return -1; + if (!::Industry::IsValidID(industry_id)) return -1; + + CargoMonitorID monitor = EncodeCargoIndustryMonitor(cid, cargo, industry_id); return GetDeliveryAmount(monitor, keep_monitoring); } -/* static */ uint32 ScriptCargoMonitor::GetTownPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring) +/* static */ int32 ScriptCargoMonitor::GetTownPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring) { - CargoMonitorID monitor = EncodeCargoTownMonitor(static_cast(company), cargo, town_id); + CompanyID cid = static_cast(company); + if (cid < OWNER_BEGIN || cid >= MAX_COMPANIES) return -1; + if (!ScriptCargo::IsValidCargo(cargo)) return -1; + if (!::Town::IsValidID(town_id)) return -1; + + CargoMonitorID monitor = EncodeCargoTownMonitor(cid, cargo, town_id); return GetPickupAmount(monitor, keep_monitoring); } -/* static */ uint32 ScriptCargoMonitor::GetIndustryPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring) +/* static */ int32 ScriptCargoMonitor::GetIndustryPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring) { - CargoMonitorID monitor = EncodeCargoIndustryMonitor(static_cast(company), cargo, industry_id); + CompanyID cid = static_cast(company); + if (cid < OWNER_BEGIN || cid >= MAX_COMPANIES) return -1; + if (!ScriptCargo::IsValidCargo(cargo)) return -1; + if (!::Industry::IsValidID(industry_id)) return -1; + + CargoMonitorID monitor = EncodeCargoIndustryMonitor(cid, cargo, industry_id); return GetPickupAmount(monitor, keep_monitoring); } diff --git a/src/script/api/script_cargomonitor.hpp b/src/script/api/script_cargomonitor.hpp index f0fa56be94..175936db26 100644 --- a/src/script/api/script_cargomonitor.hpp +++ b/src/script/api/script_cargomonitor.hpp @@ -50,9 +50,10 @@ public: * @param cargo Cargo type to query. * @param town_id %Town to query. * @param keep_monitoring If \c true, the given combination continues to be monitored for the next call. If \c false, monitoring ends. - * @return Amount of delivered cargo of the given cargo type to the given town by the given company since the last call. + * @return Amount of delivered cargo of the given cargo type to the given town by the given company since the last call, or + * \c -1 if a parameter is out-of-bound. */ - static uint32 GetTownDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring); + static int32 GetTownDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring); /** * Get the amount of cargo delivered to an industry by a company since the last query, and update the monitoring state. @@ -60,9 +61,10 @@ public: * @param cargo Cargo type to query. * @param industry_id %Industry to query. * @param keep_monitoring If \c true, the given combination continues to be monitored for the next call. If \c false, monitoring ends. - * @return Amount of delivered cargo of the given cargo type to the given industry by the given company since the last call. + * @return Amount of delivered cargo of the given cargo type to the given industry by the given company since the last call, or + * \c -1 if a parameter is out-of-bound. */ - static uint32 GetIndustryDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring); + static int32 GetIndustryDeliveryAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring); /** * Get the amount of cargo picked up (and delivered) from a town by a company since the last query, and update the monitoring state. @@ -70,10 +72,11 @@ public: * @param cargo Cargo type to query. * @param town_id %Town to query. * @param keep_monitoring If \c true, the given combination continues to be monitored for the next call. If \c false, monitoring ends. - * @return Amount of picked up cargo of the given cargo type to the given town by the given company since the last call. + * @return Amount of picked up cargo of the given cargo type to the given town by the given company since the last call, or + * \c -1 if a parameter is out-of-bound. * @note Amounts of picked-up cargo are added during final delivery of it, to prevent users from getting credit for picking up without delivering it. */ - static uint32 GetTownPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring); + static int32 GetTownPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, TownID town_id, bool keep_monitoring); /** * Get the amount of cargo picked up (and delivered) from an industry by a company since the last query, and update the monitoring state. @@ -81,10 +84,11 @@ public: * @param cargo Cargo type to query. * @param industry_id %Industry to query. * @param keep_monitoring If \c true, the given combination continues to be monitored for the next call. If \c false, monitoring ends. - * @return Amount of picked up cargo of the given cargo type to the given industry by the given company since the last call. + * @return Amount of picked up cargo of the given cargo type to the given industry by the given company since the last call, or + * \c -1 if a parameter is out-of-bound. * @note Amounts of picked-up cargo are added during final delivery of it, to prevent users from getting credit for picking up without delivering it. */ - static uint32 GetIndustryPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring); + static int32 GetIndustryPickupAmount(ScriptCompany::CompanyID company, CargoID cargo, IndustryID industry_id, bool keep_monitoring); /** Stop monitoring everything. */ static void StopAllMonitoring(); diff --git a/src/script/api/script_company.cpp b/src/script/api/script_company.cpp index 2f06fd69de..a1f40c5e1e 100644 --- a/src/script/api/script_company.cpp +++ b/src/script/api/script_company.cpp @@ -12,6 +12,7 @@ #include "../../stdafx.h" #include "script_company.hpp" #include "script_error.hpp" +#include "script_companymode.hpp" #include "../../company_func.h" #include "../../company_base.h" #include "../../company_manager_face.h" @@ -23,6 +24,8 @@ #include "../../settings_func.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ ScriptCompany::CompanyID ScriptCompany::ResolveCompanyID(ScriptCompany::CompanyID company) { if (company == COMPANY_SELF) { @@ -193,11 +196,11 @@ return LOAN_INTERVAL; } -/* static */ bool ScriptCompany::SetLoanAmount(int32 loan) +/* static */ bool ScriptCompany::SetLoanAmount(Money loan) { EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); EnforcePrecondition(false, loan >= 0); - EnforcePrecondition(false, (loan % GetLoanInterval()) == 0); + EnforcePrecondition(false, ((int64)loan % GetLoanInterval()) == 0); EnforcePrecondition(false, loan <= GetMaxLoanAmount()); EnforcePrecondition(false, (loan - GetLoanAmount() + GetBankBalance(COMPANY_SELF)) >= 0); @@ -208,12 +211,12 @@ (loan > GetLoanAmount()) ? CMD_INCREASE_LOAN : CMD_DECREASE_LOAN); } -/* static */ bool ScriptCompany::SetMinimumLoanAmount(int32 loan) +/* static */ bool ScriptCompany::SetMinimumLoanAmount(Money loan) { EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); EnforcePrecondition(false, loan >= 0); - int32 over_interval = loan % GetLoanInterval(); + Money over_interval = (int64)loan % GetLoanInterval(); if (over_interval != 0) loan += GetLoanInterval() - over_interval; EnforcePrecondition(false, loan <= GetMaxLoanAmount()); @@ -223,6 +226,19 @@ return GetLoanAmount() == loan; } +/* static */ bool ScriptCompany::ChangeBankBalance(CompanyID company, Money delta, ExpensesType expenses_type) +{ + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, expenses_type < (ExpensesType)::EXPENSES_END); + EnforcePrecondition(false, (int64)delta >= INT32_MIN); + EnforcePrecondition(false, (int64)delta <= INT32_MAX); + + company = ResolveCompanyID(company); + EnforcePrecondition(false, company != COMPANY_INVALID); + + return ScriptObject::DoCommand(0, (uint32)(delta), company | expenses_type << 8 , CMD_CHANGE_BANK_BALANCE); +} + /* static */ bool ScriptCompany::BuildCompanyHQ(TileIndex tile) { EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); @@ -266,12 +282,14 @@ return ::Company::Get((CompanyID)company)->settings.engine_renew_months; } -/* static */ bool ScriptCompany::SetAutoRenewMoney(uint32 money) +/* static */ bool ScriptCompany::SetAutoRenewMoney(Money money) { + EnforcePrecondition(false, money >= 0); + EnforcePrecondition(false, (int64)money <= UINT32_MAX); return ScriptObject::DoCommand(0, ::GetCompanySettingIndex("company.engine_renew_money"), money, CMD_CHANGE_COMPANY_SETTING); } -/* static */ uint32 ScriptCompany::GetAutoRenewMoney(CompanyID company) +/* static */ Money ScriptCompany::GetAutoRenewMoney(CompanyID company) { company = ResolveCompanyID(company); if (company == COMPANY_INVALID) return 0; diff --git a/src/script/api/script_company.hpp b/src/script/api/script_company.hpp index e6c3dcb31c..4deaeed5e3 100644 --- a/src/script/api/script_company.hpp +++ b/src/script/api/script_company.hpp @@ -13,6 +13,7 @@ #define SCRIPT_COMPANY_HPP #include "script_text.hpp" +#include "../../economy_type.h" /** * Class that handles all company related functions. @@ -44,6 +45,27 @@ public: GENDER_INVALID = -1, ///< An invalid gender. }; + /** + * Types of expenses. + * @api -ai + */ + enum ExpensesType { + EXPENSES_CONSTRUCTION = ::EXPENSES_CONSTRUCTION, ///< Construction costs. + EXPENSES_NEW_VEHICLES = ::EXPENSES_NEW_VEHICLES, ///< New vehicles. + EXPENSES_TRAIN_RUN = ::EXPENSES_TRAIN_RUN, ///< Running costs trains. + EXPENSES_ROADVEH_RUN = ::EXPENSES_ROADVEH_RUN, ///< Running costs road vehicles. + EXPENSES_AIRCRAFT_RUN = ::EXPENSES_AIRCRAFT_RUN, ///< Running costs aircrafts. + EXPENSES_SHIP_RUN = ::EXPENSES_SHIP_RUN, ///< Running costs ships. + EXPENSES_PROPERTY = ::EXPENSES_PROPERTY, ///< Property costs. + EXPENSES_TRAIN_INC = ::EXPENSES_TRAIN_INC, ///< Income from trains. + EXPENSES_ROADVEH_INC = ::EXPENSES_ROADVEH_INC, ///< Income from road vehicles. + EXPENSES_AIRCRAFT_INC = ::EXPENSES_AIRCRAFT_INC, ///< Income from aircrafts. + EXPENSES_SHIP_INC = ::EXPENSES_SHIP_INC, ///< Income from ships. + EXPENSES_LOAN_INT = ::EXPENSES_LOAN_INT, ///< Interest payments over the loan. + EXPENSES_OTHER = ::EXPENSES_OTHER, ///< Other expenses. + EXPENSES_INVALID = ::INVALID_EXPENSES, ///< Invalid expense type. + }; + /** * Resolved the given company index to the correct index for the company. If * the company index was COMPANY_SELF it will be resolved to the index of @@ -123,7 +145,7 @@ public: * @game @pre Valid ScriptCompanyMode active in scope. * @return True if the loan could be set to your requested amount. */ - static bool SetLoanAmount(int32 loan); + static bool SetLoanAmount(Money loan); /** * Sets the minimum amount to loan, i.e. the given amount of loan rounded up. @@ -133,7 +155,7 @@ public: * @game @pre Valid ScriptCompanyMode active in scope. * @return True if we could allocate a minimum of 'loan' loan. */ - static bool SetMinimumLoanAmount(int32 loan); + static bool SetMinimumLoanAmount(Money loan); /** * Gets the amount your company have loaned. @@ -164,6 +186,22 @@ public: */ static Money GetBankBalance(CompanyID company); + /** + * Changes the bank balance by a delta value. This method does not affect the loan but instead + * allows a GS to give or take money from a company. + * @param company The company to change the bank balance of. + * @param delta Amount of money to give or take from the bank balance. A positive value adds money to the bank balance. + * @param expenses_type The account in the finances window that will register the cost. + * @return True, if the bank balance was changed. + * @game @pre No ScriptCompanyMode active in scope. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre delta >= -2**31 + * @pre delta < 2**31 + * @note You need to create your own news message to inform about costs/gifts that you create using this command. + * @api -ai + */ + static bool ChangeBankBalance(CompanyID company, Money delta, ExpensesType expenses_type); + /** * Get the income of the company in the given quarter. * Note that this function only considers recurring income from vehicles; @@ -279,9 +317,11 @@ public: * Set the minimum money needed to autorenew an engine for your company. * @param money The new minimum required money for autorenew to work. * @return True if autorenew money has been modified. + * @pre money >= 0 + * @pre money < 2**32 * @api -game */ - static bool SetAutoRenewMoney(uint32 money); + static bool SetAutoRenewMoney(Money money); /** * Return the minimum money needed to autorenew an engine for a company. @@ -289,7 +329,7 @@ public: * @pre ResolveCompanyID(company) != COMPANY_INVALID. * @return The minimum required money for autorenew to work. */ - static uint32 GetAutoRenewMoney(CompanyID company); + static Money GetAutoRenewMoney(CompanyID company); }; DECLARE_POSTFIX_INCREMENT(ScriptCompany::CompanyID) diff --git a/src/script/api/script_companymode.cpp b/src/script/api/script_companymode.cpp index bf6da493c0..1931a5db78 100644 --- a/src/script/api/script_companymode.cpp +++ b/src/script/api/script_companymode.cpp @@ -12,6 +12,8 @@ #include "../../stdafx.h" #include "script_companymode.hpp" +#include "../../safeguards.h" + ScriptCompanyMode::ScriptCompanyMode(int company) { if (company < OWNER_BEGIN || company >= MAX_COMPANIES) company = INVALID_COMPANY; diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp index 7ca0c7d464..a42c8ede9b 100644 --- a/src/script/api/script_controller.cpp +++ b/src/script/api/script_controller.cpp @@ -24,6 +24,8 @@ #include "../../settings_type.h" #include "../../network/network.h" +#include "../../safeguards.h" + /* static */ void ScriptController::SetCommandDelay(int ticks) { if (ticks <= 0) return; @@ -51,7 +53,7 @@ ScriptObject::GetActiveInstance()->Pause(); char log_message[1024]; - snprintf(log_message, sizeof(log_message), "Break: %s", message); + seprintf(log_message, lastof(log_message), "Break: %s", message); ScriptLog::Log(ScriptLog::LOG_SQ_ERROR, log_message); /* Inform script developer that his script has been paused and @@ -113,14 +115,14 @@ ScriptController::~ScriptController() /* Internally we store libraries as 'library.version' */ char library_name[1024]; - snprintf(library_name, sizeof(library_name), "%s.%d", library, version); + seprintf(library_name, lastof(library_name), "%s.%d", library, version); strtolower(library_name); ScriptInfo *lib = ScriptObject::GetActiveInstance()->FindLibrary(library, version); if (lib == NULL) { char error[1024]; - snprintf(error, sizeof(error), "couldn't find library '%s' with version %d", library, version); - throw sq_throwerror(vm, OTTD2SQ(error)); + seprintf(error, lastof(error), "couldn't find library '%s' with version %d", library, version); + throw sq_throwerror(vm, error); } /* Get the current table/class we belong to */ @@ -131,41 +133,41 @@ ScriptController::~ScriptController() LoadedLibraryList::iterator iter = controller->loaded_library.find(library_name); if (iter != controller->loaded_library.end()) { - ttd_strlcpy(fake_class, (*iter).second, sizeof(fake_class)); + strecpy(fake_class, (*iter).second, lastof(fake_class)); } else { int next_number = ++controller->loaded_library_count; /* Create a new fake internal name */ - snprintf(fake_class, sizeof(fake_class), "_internalNA%d", next_number); + seprintf(fake_class, lastof(fake_class), "_internalNA%d", next_number); /* Load the library in a 'fake' namespace, so we can link it to the name the user requested */ sq_pushroottable(vm); - sq_pushstring(vm, OTTD2SQ(fake_class), -1); + sq_pushstring(vm, fake_class, -1); sq_newclass(vm, SQFalse); /* Load the library */ if (!engine->LoadScript(vm, lib->GetMainScript(), false)) { char error[1024]; - snprintf(error, sizeof(error), "there was a compile error when importing '%s' version %d", library, version); - throw sq_throwerror(vm, OTTD2SQ(error)); + seprintf(error, lastof(error), "there was a compile error when importing '%s' version %d", library, version); + throw sq_throwerror(vm, error); } /* Create the fake class */ sq_newslot(vm, -3, SQFalse); sq_pop(vm, 1); - controller->loaded_library[strdup(library_name)] = strdup(fake_class); + controller->loaded_library[stredup(library_name)] = stredup(fake_class); } /* Find the real class inside the fake class (like 'sets.Vector') */ sq_pushroottable(vm); - sq_pushstring(vm, OTTD2SQ(fake_class), -1); + sq_pushstring(vm, fake_class, -1); if (SQ_FAILED(sq_get(vm, -2))) { - throw sq_throwerror(vm, _SC("internal error assigning library class")); + throw sq_throwerror(vm, "internal error assigning library class"); } - sq_pushstring(vm, OTTD2SQ(lib->GetInstanceName()), -1); + sq_pushstring(vm, lib->GetInstanceName(), -1); if (SQ_FAILED(sq_get(vm, -2))) { char error[1024]; - snprintf(error, sizeof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version); - throw sq_throwerror(vm, OTTD2SQ(error)); + seprintf(error, lastof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version); + throw sq_throwerror(vm, error); } HSQOBJECT obj; sq_getstackobj(vm, -1, &obj); @@ -175,7 +177,7 @@ ScriptController::~ScriptController() /* Now link the name the user wanted to our 'fake' class */ sq_pushobject(vm, parent); - sq_pushstring(vm, OTTD2SQ(class_name), -1); + sq_pushstring(vm, class_name, -1); sq_pushobject(vm, obj); sq_newclass(vm, SQTrue); sq_newslot(vm, -3, SQFalse); diff --git a/src/script/api/script_controller.hpp b/src/script/api/script_controller.hpp index 20a849fc84..9bdbe9ab79 100644 --- a/src/script/api/script_controller.hpp +++ b/src/script/api/script_controller.hpp @@ -18,8 +18,32 @@ /** * The Controller, the class each Script should extend. It creates the Script, - * makes sure the logic kicks in correctly, and that GetTick() has a valid + * makes sure the logic kicks in correctly, and that #GetTick() has a valid * value. + * + * When starting a new game, or when loading a game, OpenTTD tries to match a + * script that matches to the specified version as close as possible. It tries + * (from first to last, stopping as soon as the attempt succeeds) + * + * - load the exact same version of the same script, + * - load the latest version of the same script that supports loading data from + * the saved version (the version of saved data must be equal or greater + * than ScriptInfo::MinVersionToLoad), + * - load the latest version of the same script (ignoring version requirements), + * - (for AIs) load a random AI, and finally + * - (for AIs) load the dummy AI. + * + * After determining the script to use, starting it is done as follows + * + * - An instance is constructed of the class derived from ScriptController + * (class name is retrieved from ScriptInfo::CreateInstance). + * - If there is script data available in the loaded game and if the data is + * loadable according to ScriptInfo::MinVersionToLoad, #Load is called with the + * data from the loaded game. + * - Finally, #Start is called to start execution of the script. + * + * See also http://wiki.openttd.org/AI:Save/Load for more details. + * * @api ai game */ class ScriptController { @@ -46,6 +70,48 @@ public: */ void Start(); +#ifdef DOXYGEN_API + /** + * Save the state of the script. + * + * By implementing this function, you can store some data inside the savegame. + * The function should return a table with the information you want to store. + * You can only store: + * + * - integers, + * - strings, + * - arrays (max. 25 levels deep), + * - tables (max. 25 levels deep), + * - booleans, and + * - nulls. + * + * In particular, instances of classes can't be saved including + * ScriptList. Such a list should be converted to an array or table on + * save and converted back on load. + * + * The function is called as soon as the user saves the game, + * independently of other activities of the script. The script is not + * notified of the call. To avoid race-conditions between #Save and the + * other script code, change variables directly after a #Sleep, it is + * very unlikely, to get interrupted at that point in the execution. + * See also http://wiki.openttd.org/AI:Save/Load for more details. + * + * @note No other information is saved than the table returned by #Save. + * For example all pending events are lost as soon as the game is loaded. + * + * @return Data of the script that should be stored in the save game. + */ + SquirrelTable Save(); + + /** + * Load saved data just before calling #Start. + * The function is only called when there is data to load. + * @param version Version number of the script that created the \a data. + * @param data Data that was saved (return value of #Save). + */ + void Load(int version, SquirrelTable data); +#endif /* DOXYGEN_API */ + /** * Find at which tick your script currently is. * @return returns the current tick. @@ -127,7 +193,8 @@ public: /** * Import a library. - * @param library The name of the library to import. + * @param library The name of the library to import. The name should be composed as ScriptInfo::GetCategory() + "." + + * ScriptInfo::CreateInstance(). * @param class_name Under which name you want it to be available (or "" if you just want the returning object). * @param version Which version you want specifically. * @return The loaded library object. If class_name is set, it is also available (under the scope of the import) under that name. diff --git a/src/script/api/script_date.cpp b/src/script/api/script_date.cpp index 1f80b40d7e..2f5b399633 100644 --- a/src/script/api/script_date.cpp +++ b/src/script/api/script_date.cpp @@ -14,45 +14,52 @@ #include "script_date.hpp" #include "../../date_func.h" -/* static */ int32 ScriptDate::GetCurrentDate() +#include "../../safeguards.h" + +/* static */ bool ScriptDate::IsValidDate(Date date) +{ + return date >= 0; +} + +/* static */ ScriptDate::Date ScriptDate::GetCurrentDate() { - return ::_date; + return (ScriptDate::Date)_date; } -/* static */ int32 ScriptDate::GetYear(int32 date) +/* static */ int32 ScriptDate::GetYear(ScriptDate::Date date) { - if (date < 0) return -1; + if (date < 0) return DATE_INVALID; ::YearMonthDay ymd; ::ConvertDateToYMD(date, &ymd); return ymd.year; } -/* static */ int32 ScriptDate::GetMonth(int32 date) +/* static */ int32 ScriptDate::GetMonth(ScriptDate::Date date) { - if (date < 0) return -1; + if (date < 0) return DATE_INVALID; ::YearMonthDay ymd; ::ConvertDateToYMD(date, &ymd); return ymd.month + 1; } -/* static */ int32 ScriptDate::GetDayOfMonth(int32 date) +/* static */ int32 ScriptDate::GetDayOfMonth(ScriptDate::Date date) { - if (date < 0) return -1; + if (date < 0) return DATE_INVALID; ::YearMonthDay ymd; ::ConvertDateToYMD(date, &ymd); return ymd.day; } -/* static */ int32 ScriptDate::GetDate(int32 year, int32 month, int32 day_of_month) +/* static */ ScriptDate::Date ScriptDate::GetDate(int32 year, int32 month, int32 day_of_month) { - if (month < 1 || month > 12) return -1; - if (day_of_month < 1 || day_of_month > 31) return -1; - if (year < 0 || year > MAX_YEAR) return -1; + if (month < 1 || month > 12) return DATE_INVALID; + if (day_of_month < 1 || day_of_month > 31) return DATE_INVALID; + if (year < 0 || year > MAX_YEAR) return DATE_INVALID; - return ::ConvertYMDToDate(year, month - 1, day_of_month); + return (ScriptDate::Date)::ConvertYMDToDate(year, month - 1, day_of_month); } /* static */ int32 ScriptDate::GetSystemTime() diff --git a/src/script/api/script_date.hpp b/src/script/api/script_date.hpp index 488e35edae..b402b0a2b2 100644 --- a/src/script/api/script_date.hpp +++ b/src/script/api/script_date.hpp @@ -13,6 +13,7 @@ #define SCRIPT_DATE_HPP #include "script_object.hpp" +#include "../../date_type.h" /** * Class that handles all date related (calculation) functions. @@ -27,6 +28,21 @@ */ class ScriptDate : public ScriptObject { public: + /** + * Date data type is an integer value. Use ScriptDate::GetDate to + * compose valid date values for a known year, month and day. + */ + enum Date { + DATE_INVALID = ::INVALID_DATE, ///< A value representing an invalid date. + }; + + /** + * Validates if a date value represent a valid date. + * @param date The date to validate. + * @return True if the date is valid, otherwise false + */ + static bool IsValidDate(Date date); + /** * Get the current date. * This is the number of days since epoch under the assumption that @@ -34,28 +50,28 @@ public: * 100 but not by 400. * @return The current date. */ - static int32 GetCurrentDate(); + static Date GetCurrentDate(); /** * Get the year of the given date. * @param date The date to get the year of. * @return The year. */ - static int32 GetYear(int32 date); + static int32 GetYear(Date date); /** * Get the month of the given date. * @param date The date to get the month of. * @return The month. */ - static int32 GetMonth(int32 date); + static int32 GetMonth(Date date); /** * Get the day (of the month) of the given date. * @param date The date to get the day of. * @return The day. */ - static int32 GetDayOfMonth(int32 date); + static int32 GetDayOfMonth(Date date); /** * Get the date given a year, month and day of month. @@ -64,7 +80,7 @@ public: * @param day_of_month The day of month of the to-be determined date. * @return The date. */ - static int32 GetDate(int32 year, int32 month, int32 day_of_month); + static Date GetDate(int32 year, int32 month, int32 day_of_month); /** * Get the time of the host system. diff --git a/src/script/api/script_depotlist.cpp b/src/script/api/script_depotlist.cpp index 7adbe8a286..05bb4ccd04 100644 --- a/src/script/api/script_depotlist.cpp +++ b/src/script/api/script_depotlist.cpp @@ -14,6 +14,8 @@ #include "../../depot_base.h" #include "../../station_base.h" +#include "../../safeguards.h" + ScriptDepotList::ScriptDepotList(ScriptTile::TransportType transport_type) { ::TileType tile_type; diff --git a/src/script/api/script_engine.cpp b/src/script/api/script_engine.cpp index a34d0910f3..1fe16321b5 100644 --- a/src/script/api/script_engine.cpp +++ b/src/script/api/script_engine.cpp @@ -20,6 +20,8 @@ #include "../../articulated_vehicles.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ bool ScriptEngine::IsValidEngine(EngineID engine_id) { const Engine *e = ::Engine::GetIfValid(engine_id); @@ -171,11 +173,11 @@ return ::Engine::Get(engine_id)->GetDisplayMaxTractiveEffort(); } -/* static */ int32 ScriptEngine::GetDesignDate(EngineID engine_id) +/* static */ ScriptDate::Date ScriptEngine::GetDesignDate(EngineID engine_id) { - if (!IsValidEngine(engine_id)) return -1; + if (!IsValidEngine(engine_id)) return ScriptDate::DATE_INVALID; - return ::Engine::Get(engine_id)->intro_date; + return (ScriptDate::Date)::Engine::Get(engine_id)->intro_date; } /* static */ ScriptVehicle::VehicleType ScriptEngine::GetVehicleType(EngineID engine_id) diff --git a/src/script/api/script_engine.hpp b/src/script/api/script_engine.hpp index 058d23082c..173377742d 100644 --- a/src/script/api/script_engine.hpp +++ b/src/script/api/script_engine.hpp @@ -15,6 +15,7 @@ #include "script_vehicle.hpp" #include "script_rail.hpp" #include "script_airport.hpp" +#include "script_date.hpp" /** * Class that handles all engine related functions. @@ -107,7 +108,6 @@ public: * Get the maximum speed of an engine. * @param engine_id The engine to get the maximum speed of. * @pre IsValidEngine(engine_id). - * @pre GetVehicleType(engine_id) != ScriptVehicle::VT_TRAIN || !IsWagon(engine_id). * @return The maximum speed the engine has. * @note The speed is in OpenTTD's internal speed unit. * This is mph / 1.6, which is roughly km/h. @@ -174,7 +174,7 @@ public: * @pre IsValidEngine(engine_id). * @return The date this engine was designed. */ - static int32 GetDesignDate(EngineID engine_id); + static ScriptDate::Date GetDesignDate(EngineID engine_id); /** * Get the type of an engine. diff --git a/src/script/api/script_enginelist.cpp b/src/script/api/script_enginelist.cpp index b6143a20ec..99ab9537be 100644 --- a/src/script/api/script_enginelist.cpp +++ b/src/script/api/script_enginelist.cpp @@ -13,6 +13,8 @@ #include "script_enginelist.hpp" #include "../../engine_base.h" +#include "../../safeguards.h" + ScriptEngineList::ScriptEngineList(ScriptVehicle::VehicleType vehicle_type) { Engine *e; diff --git a/src/script/api/script_error.cpp b/src/script/api/script_error.cpp index 46d287f77c..d30ad9c66d 100644 --- a/src/script/api/script_error.cpp +++ b/src/script/api/script_error.cpp @@ -12,6 +12,9 @@ #include "../../stdafx.h" #include "script_error.hpp" #include "../../core/bitmath_func.hpp" +#include "../../string_func.h" + +#include "../../safeguards.h" ScriptError::ScriptErrorMap ScriptError::error_map = ScriptError::ScriptErrorMap(); ScriptError::ScriptErrorMapString ScriptError::error_map_string = ScriptError::ScriptErrorMapString(); @@ -23,7 +26,7 @@ ScriptError::ScriptErrorMapString ScriptError::error_map_string = ScriptError::S /* static */ char *ScriptError::GetLastErrorString() { - return strdup((*error_map_string.find(ScriptError::GetLastError())).second); + return stredup((*error_map_string.find(ScriptError::GetLastError())).second); } /* static */ ScriptErrorType ScriptError::StringToError(StringID internal_string_id) diff --git a/src/script/api/script_event.cpp b/src/script/api/script_event.cpp index d7d19863ff..0e711ca416 100644 --- a/src/script/api/script_event.cpp +++ b/src/script/api/script_event.cpp @@ -14,6 +14,8 @@ #include +#include "../../safeguards.h" + /** The queue of events for a script. */ struct ScriptEventData { std::queue stack; ///< The actual queue. diff --git a/src/script/api/script_event_types.cpp b/src/script/api/script_event_types.cpp index 0e16834405..d424e6feff 100644 --- a/src/script/api/script_event_types.cpp +++ b/src/script/api/script_event_types.cpp @@ -17,8 +17,11 @@ #include "../../settings_type.h" #include "../../engine_base.h" #include "../../articulated_vehicles.h" +#include "../../string_func.h" #include "table/strings.h" +#include "../../safeguards.h" + bool ScriptEventEnginePreview::IsEngineValid() const { const Engine *e = ::Engine::GetIfValid(this->engine); @@ -117,6 +120,17 @@ bool ScriptEventCompanyAskMerger::AcceptMerger() return ScriptObject::DoCommand(0, this->owner, 0, CMD_BUY_COMPANY); } +ScriptEventAdminPort::ScriptEventAdminPort(const char *json) : + ScriptEvent(ET_ADMIN_PORT), + json(stredup(json)) +{ +} + +ScriptEventAdminPort::~ScriptEventAdminPort() +{ + free(this->json); +} + #define SKIP_EMPTY(p) while (*(p) == ' ' || *(p) == '\n' || *(p) == '\r') (p)++; #define RETURN_ERROR(stack) { ScriptLog::Error("Received invalid JSON data from AdminPort."); if (stack != 0) sq_pop(vm, stack); return NULL; } @@ -157,7 +171,7 @@ char *ScriptEventAdminPort::ReadString(HSQUIRRELVM vm, char *p) } *p = '\0'; - sq_pushstring(vm, OTTD2SQ(value), -1); + sq_pushstring(vm, value, -1); *p++ = '"'; return p; @@ -244,6 +258,14 @@ char *ScriptEventAdminPort::ReadValue(HSQUIRRELVM vm, char *p) /* Array */ sq_newarray(vm, 0); + /* Empty array? */ + char *p2 = p + 1; + SKIP_EMPTY(p2); + if (*p2 == ']') { + p = p2 + 1; + break; + } + while (*p++ != ']') { p = this->ReadValue(vm, p); if (p == NULL) { diff --git a/src/script/api/script_event_types.hpp b/src/script/api/script_event_types.hpp index 62834113d0..9430168977 100644 --- a/src/script/api/script_event_types.hpp +++ b/src/script/api/script_event_types.hpp @@ -839,15 +839,8 @@ public: /** * @param json The JSON string which got sent. */ - ScriptEventAdminPort(const char *json) : - ScriptEvent(ET_ADMIN_PORT), - json(strdup(json)) - {} - - ~ScriptEventAdminPort() - { - free(this->json); - } + ScriptEventAdminPort(const char *json); + ~ScriptEventAdminPort(); /** * Convert an ScriptEvent to the real instance. diff --git a/src/script/api/script_execmode.cpp b/src/script/api/script_execmode.cpp index fe2ac3d7c1..4fb0cc7e29 100644 --- a/src/script/api/script_execmode.cpp +++ b/src/script/api/script_execmode.cpp @@ -14,6 +14,8 @@ #include "../script_instance.hpp" #include "../script_fatalerror.hpp" +#include "../../safeguards.h" + bool ScriptExecMode::ModeProc() { /* In execution mode we only return 'true', telling the DoCommand it diff --git a/src/script/api/script_game.cpp b/src/script/api/script_game.cpp index f0aeb191fc..c24757a3cc 100644 --- a/src/script/api/script_game.cpp +++ b/src/script/api/script_game.cpp @@ -15,6 +15,8 @@ #include "../../settings_type.h" #include "../../network/network.h" +#include "../../safeguards.h" + /* static */ bool ScriptGame::Pause() { return ScriptObject::DoCommand(0, PM_PAUSED_GAME_SCRIPT, 1, CMD_PAUSE); diff --git a/src/script/api/script_gamesettings.cpp b/src/script/api/script_gamesettings.cpp index ed284ae595..1f8ded877e 100644 --- a/src/script/api/script_gamesettings.cpp +++ b/src/script/api/script_gamesettings.cpp @@ -15,6 +15,8 @@ #include "../../settings_type.h" #include "../../command_type.h" +#include "../../safeguards.h" + /* static */ bool ScriptGameSettings::IsValid(const char *setting) { uint i; diff --git a/src/script/api/script_goal.cpp b/src/script/api/script_goal.cpp index b5d6112fcd..5153e0ef0e 100644 --- a/src/script/api/script_goal.cpp +++ b/src/script/api/script_goal.cpp @@ -15,10 +15,13 @@ #include "script_industry.hpp" #include "script_map.hpp" #include "script_town.hpp" +#include "script_story_page.hpp" #include "../script_instance.hpp" #include "../../goal_base.h" #include "../../string_func.h" +#include "../../safeguards.h" + /* static */ bool ScriptGoal::IsValidGoal(GoalID goal_id) { return ::Goal::IsValidID(goal_id); @@ -33,10 +36,18 @@ const char *text = goal->GetEncodedText(); EnforcePreconditionEncodedText(GOAL_INVALID, text); EnforcePrecondition(GOAL_INVALID, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); - EnforcePrecondition(GOAL_INVALID, (type == GT_NONE && destination == 0) || (type == GT_TILE && ScriptMap::IsValidTile(destination)) || (type == GT_INDUSTRY && ScriptIndustry::IsValidIndustry(destination)) || (type == GT_TOWN && ScriptTown::IsValidTown(destination)) || (type == GT_COMPANY && ScriptCompany::ResolveCompanyID((ScriptCompany::CompanyID)destination) != ScriptCompany::COMPANY_INVALID)); uint8 c = company; if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; + StoryPage *story_page = NULL; + if (type == GT_STORY_PAGE && ScriptStoryPage::IsValidStoryPage((ScriptStoryPage::StoryPageID)destination)) story_page = ::StoryPage::Get((ScriptStoryPage::StoryPageID)destination); + + EnforcePrecondition(GOAL_INVALID, (type == GT_NONE && destination == 0) || + (type == GT_TILE && ScriptMap::IsValidTile(destination)) || + (type == GT_INDUSTRY && ScriptIndustry::IsValidIndustry(destination)) || + (type == GT_TOWN && ScriptTown::IsValidTown(destination)) || + (type == GT_COMPANY && ScriptCompany::ResolveCompanyID((ScriptCompany::CompanyID)destination) != ScriptCompany::COMPANY_INVALID) || + (type == GT_STORY_PAGE && story_page != NULL && (c == INVALID_COMPANY ? story_page->company == INVALID_COMPANY : story_page->company == INVALID_COMPANY || story_page->company == c))); if (!ScriptObject::DoCommand(0, type | (c << 8), destination, CMD_CREATE_GOAL, text, &ScriptInstance::DoCommandReturnGoalID)) return GOAL_INVALID; @@ -107,7 +118,7 @@ EnforcePrecondition(false, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); EnforcePrecondition(false, CountBits(buttons) >= 1 && CountBits(buttons) <= 3); EnforcePrecondition(false, buttons < (1 << ::GOAL_QUESTION_BUTTON_COUNT)); - EnforcePrecondition(false, type < ::GOAL_QUESTION_TYPE_COUNT); + EnforcePrecondition(false, (int)type < ::GOAL_QUESTION_TYPE_COUNT); uint8 c = company; if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; diff --git a/src/script/api/script_goal.hpp b/src/script/api/script_goal.hpp index d47dbeb427..a9c7b239d5 100644 --- a/src/script/api/script_goal.hpp +++ b/src/script/api/script_goal.hpp @@ -44,6 +44,7 @@ public: GT_INDUSTRY = ::GT_INDUSTRY, ///< Destination is an industry. GT_TOWN = ::GT_TOWN, ///< Destination is a town. GT_COMPANY = ::GT_COMPANY, ///< Destination is a company. + GT_STORY_PAGE = ::GT_STORY_PAGE ///< Destination is a story page. }; /** @@ -99,6 +100,9 @@ public: * @pre No ScriptCompanyMode may be in scope. * @pre goal != NULL && len(goal) != 0. * @pre company == COMPANY_INVALID || ResolveCompanyID(company) != COMPANY_INVALID. + * @pre if type is GT_STORY_PAGE, the company of the goal and the company of the story page need to match: + * \li Global goals can only reference global story pages. + * \li Company specific goals can reference global story pages and story pages of the same company. */ static GoalID New(ScriptCompany::CompanyID company, Text *goal, GoalType type, uint32 destination); diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp index 01569d8241..1e8d6d774d 100644 --- a/src/script/api/script_group.cpp +++ b/src/script/api/script_group.cpp @@ -19,6 +19,8 @@ #include "../../settings_func.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ bool ScriptGroup::IsValidGroup(GroupID group_id) { const Group *g = ::Group::GetIfValid(group_id); @@ -57,7 +59,7 @@ EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_GROUP_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); - return ScriptObject::DoCommand(0, group_id, 0, CMD_RENAME_GROUP, text); + return ScriptObject::DoCommand(0, group_id, 0, CMD_ALTER_GROUP, text); } /* static */ char *ScriptGroup::GetName(GroupID group_id) diff --git a/src/script/api/script_grouplist.cpp b/src/script/api/script_grouplist.cpp index 39dd310024..d1071c36c6 100644 --- a/src/script/api/script_grouplist.cpp +++ b/src/script/api/script_grouplist.cpp @@ -13,6 +13,8 @@ #include "script_grouplist.hpp" #include "../../group.h" +#include "../../safeguards.h" + ScriptGroupList::ScriptGroupList() { Group *g; diff --git a/src/script/api/script_industry.cpp b/src/script/api/script_industry.cpp index 5e30f13770..c536ec5590 100644 --- a/src/script/api/script_industry.cpp +++ b/src/script/api/script_industry.cpp @@ -19,6 +19,8 @@ #include "../../newgrf_industries.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ int32 ScriptIndustry::GetIndustryCount() { return (int32)::Industry::GetNumItems(); diff --git a/src/script/api/script_industrylist.cpp b/src/script/api/script_industrylist.cpp index b9824b9acb..d2d298fa3f 100644 --- a/src/script/api/script_industrylist.cpp +++ b/src/script/api/script_industrylist.cpp @@ -13,6 +13,8 @@ #include "script_industrylist.hpp" #include "../../industry.h" +#include "../../safeguards.h" + ScriptIndustryList::ScriptIndustryList() { Industry *i; diff --git a/src/script/api/script_industrytype.cpp b/src/script/api/script_industrytype.cpp index bbfca99a4d..1ac59975dc 100644 --- a/src/script/api/script_industrytype.cpp +++ b/src/script/api/script_industrytype.cpp @@ -18,6 +18,8 @@ #include "../../newgrf_industries.h" #include "../../core/random_func.hpp" +#include "../../safeguards.h" + /* static */ bool ScriptIndustryType::IsValidIndustryType(IndustryType industry_type) { if (industry_type >= NUM_INDUSTRYTYPES) return false; diff --git a/src/script/api/script_industrytype.hpp b/src/script/api/script_industrytype.hpp index bae0919e97..8dccc68c91 100644 --- a/src/script/api/script_industrytype.hpp +++ b/src/script/api/script_industrytype.hpp @@ -112,7 +112,9 @@ public: * @param industry_type The type of the industry. * @pre IsValidIndustryType(industry_type). * @return True if you can build this type of industry at locations of your choice. - * @note Returns false if you can only prospect this type of industry, or not build it at all. + * @ai @note Returns false if you can only prospect this type of industry, or not build it at all. + * @game @note If no valid ScriptCompanyMode active in scope, this method returns false if you can + * @game only prospect this type of industry, or not build it at all. * @game @note If no valid ScriptCompanyMode active in scope, the script can * @game build as long as the industry type can be built. (a NewGRF can for example * @game reject construction based on current year) @@ -124,8 +126,11 @@ public: * @param industry_type The type of the industry. * @pre IsValidIndustryType(industry_type). * @return True if you can prospect this type of industry. - * @note If the setting "Manual primary industry construction method" is set - * to either "None" or "as other industries" this function always returns false. + * @ai @note If the setting "Manual primary industry construction method" is set + * @ai to either "None" or "as other industries" this function always returns false. + * @game @note If no valid ScriptCompanyMode is active in scope, and if the setting + * @game "Manual primary industry construction method" is set to either "None" or + * @game "as other industries" this function always returns false. * @game @note If no valid ScriptCompanyMode active in scope, the script can * @game prospect as long as the industry type can be built. (a NewGRF can for * @game example reject construction based on current year) diff --git a/src/script/api/script_industrytypelist.cpp b/src/script/api/script_industrytypelist.cpp index c72fabcaa5..b60361578b 100644 --- a/src/script/api/script_industrytypelist.cpp +++ b/src/script/api/script_industrytypelist.cpp @@ -13,6 +13,8 @@ #include "script_industrytypelist.hpp" #include "../../industry.h" +#include "../../safeguards.h" + ScriptIndustryTypeList::ScriptIndustryTypeList() { for (int i = 0; i < NUM_INDUSTRYTYPES; i++) { diff --git a/src/script/api/script_info_docs.hpp b/src/script/api/script_info_docs.hpp index 1ae38750c3..e12a6a45c5 100644 --- a/src/script/api/script_info_docs.hpp +++ b/src/script/api/script_info_docs.hpp @@ -18,9 +18,10 @@ * Scripts must or can implemented to provide information to OpenTTD to * base configuring/starting/loading the Script on. * - * @note The required functions are also needed for Script Libraries. As such - * the information here can be used for libraries, but the information - * will not be shown in the GUI except for error/debug messages. + * @note The required functions are also needed for Script Libraries, but in + * that case you extend ScriptLibrary. As such the information here can + * be used for libraries, but the information will not be shown in the + * GUI except for error/debug messages. * * @api ai game */ @@ -43,6 +44,8 @@ public: * * @return The name of the Script. * @note This function is required. + * @note This name is not used as library name by ScriptController::Import, + * instead the name returned by #CreateInstance is used. */ string GetName(); @@ -144,7 +147,8 @@ public: /** * Gets the name of main class of the Script so OpenTTD knows - * what class to instantiate. + * what class to instantiate. For libraries, this name is also + * used when other scripts import it using ScriptController::Import. * * @return The class name of the Script. * @note This function is required. diff --git a/src/script/api/script_infrastructure.cpp b/src/script/api/script_infrastructure.cpp index 1ce051bba0..d7da2747e1 100644 --- a/src/script/api/script_infrastructure.cpp +++ b/src/script/api/script_infrastructure.cpp @@ -17,6 +17,8 @@ #include "../../water.h" #include "../../station_func.h" +#include "../../safeguards.h" + /* static */ uint32 ScriptInfrastructure::GetRailPieceCount(ScriptCompany::CompanyID company, ScriptRail::RailType railtype) { diff --git a/src/script/api/script_list.cpp b/src/script/api/script_list.cpp index 353d25d3eb..bdbc1209bd 100644 --- a/src/script/api/script_list.cpp +++ b/src/script/api/script_list.cpp @@ -14,14 +14,16 @@ #include "../../debug.h" #include "../../script/squirrel.hpp" +#include "../../safeguards.h" + /** * Base class for any ScriptList sorter. */ class ScriptListSorter { protected: - ScriptList *list; ///< The list that's being sorted. + ScriptList *list; ///< The list that's being sorted. bool has_no_more_items; ///< Whether we have more items to iterate over. - int32 item_next; ///< The next item we will show. + int64 item_next; ///< The next item we will show. public: /** @@ -32,7 +34,7 @@ public: /** * Get the first item of the sorter. */ - virtual int32 Begin() = 0; + virtual int64 Begin() = 0; /** * Stop iterating a sorter. @@ -42,7 +44,7 @@ public: /** * Get the next item of the sorter. */ - virtual int32 Next() = 0; + virtual int64 Next() = 0; /** * See if the sorter has reached the end. @@ -56,6 +58,17 @@ public: * Callback from the list if an item gets removed. */ virtual void Remove(int item) = 0; + + /** + * Attach the sorter to a new list. This assumes the content of the old list has been moved to + * the new list, too, so that we don't have to invalidate any iterators. Note that std::swap + * doesn't invalidate iterators on lists and maps, so that should be safe. + * @param target New list to attach to. + */ + virtual void Retarget(ScriptList *new_list) + { + this->list = new_list; + } }; /** @@ -78,7 +91,7 @@ public: this->End(); } - int32 Begin() + int64 Begin() { if (this->list->buckets.empty()) return 0; this->has_no_more_items = false; @@ -88,7 +101,7 @@ public: this->bucket_list_iter = this->bucket_list->begin(); this->item_next = *this->bucket_list_iter; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -123,11 +136,11 @@ public: this->item_next = *this->bucket_list_iter; } - int32 Next() + int64 Next() { if (this->IsEnd()) return 0; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -149,6 +162,9 @@ public: */ class ScriptListSorterValueDescending : public ScriptListSorter { private: + /* Note: We cannot use reverse_iterator. + * The iterators must only be invalidated when the element they are pointing to is removed. + * This only holds for forward iterators. */ ScriptList::ScriptListBucket::iterator bucket_iter; ///< The iterator over the list to find the buckets. ScriptList::ScriptItemList *bucket_list; ///< The current bucket list we're iterator over. ScriptList::ScriptItemList::iterator bucket_list_iter; ///< The iterator over the bucket list. @@ -164,22 +180,22 @@ public: this->End(); } - int32 Begin() + int64 Begin() { if (this->list->buckets.empty()) return 0; this->has_no_more_items = false; /* Go to the end of the bucket-list */ - this->bucket_iter = this->list->buckets.begin(); - for (size_t i = this->list->buckets.size(); i > 1; i--) this->bucket_iter++; + this->bucket_iter = this->list->buckets.end(); + --this->bucket_iter; this->bucket_list = &(*this->bucket_iter).second; /* Go to the end of the items in the bucket */ - this->bucket_list_iter = this->bucket_list->begin(); - for (size_t i = this->bucket_list->size(); i > 1; i--) this->bucket_list_iter++; + this->bucket_list_iter = this->bucket_list->end(); + --this->bucket_list_iter; this->item_next = *this->bucket_list_iter; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -209,19 +225,19 @@ public: this->bucket_iter--; this->bucket_list = &(*this->bucket_iter).second; /* Go to the end of the items in the bucket */ - this->bucket_list_iter = this->bucket_list->begin(); - for (size_t i = this->bucket_list->size(); i > 1; i--) this->bucket_list_iter++; + this->bucket_list_iter = this->bucket_list->end(); + --this->bucket_list_iter; } else { this->bucket_list_iter--; } this->item_next = *this->bucket_list_iter; } - int32 Next() + int64 Next() { if (this->IsEnd()) return 0; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -256,7 +272,7 @@ public: this->End(); } - int32 Begin() + int64 Begin() { if (this->list->items.empty()) return 0; this->has_no_more_items = false; @@ -264,7 +280,7 @@ public: this->item_iter = this->list->items.begin(); this->item_next = (*this->item_iter).first; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -287,11 +303,11 @@ public: if (this->item_iter != this->list->items.end()) item_next = (*this->item_iter).first; } - int32 Next() + int64 Next() { if (this->IsEnd()) return 0; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -313,6 +329,9 @@ public: */ class ScriptListSorterItemDescending : public ScriptListSorter { private: + /* Note: We cannot use reverse_iterator. + * The iterators must only be invalidated when the element they are pointing to is removed. + * This only holds for forward iterators. */ ScriptList::ScriptListMap::iterator item_iter; ///< The iterator over the items in the map. public: @@ -326,16 +345,16 @@ public: this->End(); } - int32 Begin() + int64 Begin() { if (this->list->items.empty()) return 0; this->has_no_more_items = false; - this->item_iter = this->list->items.begin(); - for (size_t i = this->list->items.size(); i > 1; i--) this->item_iter++; + this->item_iter = this->list->items.end(); + --this->item_iter; this->item_next = (*this->item_iter).first; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -354,15 +373,20 @@ public: this->has_no_more_items = true; return; } - this->item_iter--; + if (this->item_iter == this->list->items.begin()) { + /* Use 'end' as marker for 'beyond begin' */ + this->item_iter = this->list->items.end(); + } else { + this->item_iter--; + } if (this->item_iter != this->list->items.end()) item_next = (*this->item_iter).first; } - int32 Next() + int64 Next() { if (this->IsEnd()) return 0; - int32 item_current = this->item_next; + int64 item_current = this->item_next; FindNext(); return item_current; } @@ -396,7 +420,7 @@ ScriptList::~ScriptList() delete this->sorter; } -bool ScriptList::HasItem(int32 item) +bool ScriptList::HasItem(int64 item) { return this->items.count(item) == 1; } @@ -410,39 +434,40 @@ void ScriptList::Clear() this->sorter->End(); } -void ScriptList::AddItem(int32 item, int32 value) +void ScriptList::AddItem(int64 item, int64 value) { this->modifications++; if (this->HasItem(item)) return; - this->items[item] = 0; - this->buckets[0].insert(item); - - this->SetValue(item, value); + this->items[item] = value; + this->buckets[value].insert(item); } -void ScriptList::RemoveItem(int32 item) +void ScriptList::RemoveItem(int64 item) { this->modifications++; - if (!this->HasItem(item)) return; + ScriptListMap::iterator item_iter = this->items.find(item); + if (item_iter == this->items.end()) return; - int32 value = this->GetValue(item); + int64 value = item_iter->second; this->sorter->Remove(item); - this->buckets[value].erase(item); - if (this->buckets[value].empty()) this->buckets.erase(value); - this->items.erase(item); + ScriptListBucket::iterator bucket_iter = this->buckets.find(value); + assert(bucket_iter != this->buckets.end()); + bucket_iter->second.erase(item); + if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter); + this->items.erase(item_iter); } -int32 ScriptList::Begin() +int64 ScriptList::Begin() { this->initialized = true; return this->sorter->Begin(); } -int32 ScriptList::Next() +int64 ScriptList::Next() { if (this->initialized == false) { DEBUG(script, 0, "Next() is invalid as Begin() is never called"); @@ -470,26 +495,28 @@ int32 ScriptList::Count() return (int32)this->items.size(); } -int32 ScriptList::GetValue(int32 item) +int64 ScriptList::GetValue(int64 item) { - if (!this->HasItem(item)) return 0; - - return this->items[item]; + ScriptListMap::const_iterator item_iter = this->items.find(item); + return item_iter == this->items.end() ? 0 : item_iter->second; } -bool ScriptList::SetValue(int32 item, int32 value) +bool ScriptList::SetValue(int64 item, int64 value) { this->modifications++; - if (!this->HasItem(item)) return false; + ScriptListMap::iterator item_iter = this->items.find(item); + if (item_iter == this->items.end()) return false; - int32 value_old = this->GetValue(item); + int64 value_old = item_iter->second; if (value_old == value) return true; this->sorter->Remove(item); - this->buckets[value_old].erase(item); - if (this->buckets[value_old].empty()) this->buckets.erase(value_old); - this->items[item] = value; + ScriptListBucket::iterator bucket_iter = this->buckets.find(value_old); + assert(bucket_iter != this->buckets.end()); + bucket_iter->second.erase(item); + if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter); + item_iter->second = value; this->buckets[value].insert(item); return true; @@ -520,9 +547,7 @@ void ScriptList::Sort(SorterType sorter, bool ascending) } break; - default: - this->Sort(SORT_BY_ITEM, false); - return; + default: NOT_REACHED(); } this->sorter_type = sorter; this->sort_ascending = ascending; @@ -531,6 +556,8 @@ void ScriptList::Sort(SorterType sorter, bool ascending) void ScriptList::AddList(ScriptList *list) { + if (list == this) return; + ScriptListMap *list_items = &list->items; for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) { this->AddItem((*iter).first); @@ -538,7 +565,22 @@ void ScriptList::AddList(ScriptList *list) } } -void ScriptList::RemoveAboveValue(int32 value) +void ScriptList::SwapList(ScriptList *list) +{ + if (list == this) return; + + this->items.swap(list->items); + this->buckets.swap(list->buckets); + Swap(this->sorter, list->sorter); + Swap(this->sorter_type, list->sorter_type); + Swap(this->sort_ascending, list->sort_ascending); + Swap(this->initialized, list->initialized); + Swap(this->modifications, list->modifications); + this->sorter->Retarget(this); + list->sorter->Retarget(list); +} + +void ScriptList::RemoveAboveValue(int64 value) { this->modifications++; @@ -548,7 +590,7 @@ void ScriptList::RemoveAboveValue(int32 value) } } -void ScriptList::RemoveBelowValue(int32 value) +void ScriptList::RemoveBelowValue(int64 value) { this->modifications++; @@ -558,7 +600,7 @@ void ScriptList::RemoveBelowValue(int32 value) } } -void ScriptList::RemoveBetweenValue(int32 start, int32 end) +void ScriptList::RemoveBetweenValue(int64 start, int64 end) { this->modifications++; @@ -568,7 +610,7 @@ void ScriptList::RemoveBetweenValue(int32 start, int32 end) } } -void ScriptList::RemoveValue(int32 value) +void ScriptList::RemoveValue(int64 value) { this->modifications++; @@ -641,6 +683,7 @@ void ScriptList::RemoveBottom(int32 count) if (--size == 0) break; } } + break; case SORT_BY_ITEM: for (ScriptListMap::reverse_iterator iter = this->items.rbegin(); iter != this->items.rend(); iter = this->items.rbegin()) { @@ -655,13 +698,17 @@ void ScriptList::RemoveList(ScriptList *list) { this->modifications++; - ScriptListMap *list_items = &list->items; - for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) { - this->RemoveItem((*iter).first); + if (list == this) { + Clear(); + } else { + ScriptListMap *list_items = &list->items; + for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) { + this->RemoveItem((*iter).first); + } } } -void ScriptList::KeepAboveValue(int32 value) +void ScriptList::KeepAboveValue(int64 value) { this->modifications++; @@ -671,7 +718,7 @@ void ScriptList::KeepAboveValue(int32 value) } } -void ScriptList::KeepBelowValue(int32 value) +void ScriptList::KeepBelowValue(int64 value) { this->modifications++; @@ -681,7 +728,7 @@ void ScriptList::KeepBelowValue(int32 value) } } -void ScriptList::KeepBetweenValue(int32 start, int32 end) +void ScriptList::KeepBetweenValue(int64 start, int64 end) { this->modifications++; @@ -691,7 +738,7 @@ void ScriptList::KeepBetweenValue(int32 start, int32 end) } } -void ScriptList::KeepValue(int32 value) +void ScriptList::KeepValue(int64 value) { this->modifications++; @@ -717,14 +764,12 @@ void ScriptList::KeepBottom(int32 count) void ScriptList::KeepList(ScriptList *list) { + if (list == this) return; + this->modifications++; ScriptList tmp; - for (ScriptListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) { - tmp.AddItem((*iter).first); - tmp.SetValue((*iter).first, (*iter).second); - } - + tmp.AddList(this); tmp.RemoveList(list); this->RemoveList(&tmp); } @@ -736,9 +781,10 @@ SQInteger ScriptList::_get(HSQUIRRELVM vm) SQInteger idx; sq_getinteger(vm, 2, &idx); - if (!this->HasItem(idx)) return SQ_ERROR; + ScriptListMap::const_iterator item_iter = this->items.find(idx); + if (item_iter == this->items.end()) return SQ_ERROR; - sq_pushinteger(vm, this->GetValue(idx)); + sq_pushinteger(vm, item_iter->second); return 1; } @@ -746,7 +792,7 @@ SQInteger ScriptList::_set(HSQUIRRELVM vm) { if (sq_gettype(vm, 2) != OT_INTEGER) return SQ_ERROR; if (sq_gettype(vm, 3) != OT_INTEGER && sq_gettype(vm, 3) != OT_NULL) { - return sq_throwerror(vm, _SC("you can only assign integers to this list")); + return sq_throwerror(vm, "you can only assign integers to this list"); } SQInteger idx, val; @@ -798,7 +844,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm) int nparam = sq_gettop(vm) - 1; if (nparam < 1) { - return sq_throwerror(vm, _SC("You need to give a least a Valuator as parameter to ScriptList::Valuate")); + return sq_throwerror(vm, "You need to give a least a Valuator as parameter to ScriptList::Valuate"); } /* Make sure the valuator function is really a function, and not any @@ -806,7 +852,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm) * first parameter they give. */ SQObjectType valuator_type = sq_gettype(vm, 2); if (valuator_type != OT_CLOSURE && valuator_type != OT_NATIVECLOSURE) { - return sq_throwerror(vm, _SC("parameter 1 has an invalid type (expected function)")); + return sq_throwerror(vm, "parameter 1 has an invalid type (expected function)"); } /* Don't allow docommand from a Valuator, as we can't resume in @@ -855,7 +901,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm) sq_pop(vm, nparam + 4); ScriptObject::SetAllowDoCommand(backup_allow); - return sq_throwerror(vm, _SC("return value of valuator is not valid (not integer/bool)")); + return sq_throwerror(vm, "return value of valuator is not valid (not integer/bool)"); } } @@ -865,7 +911,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm) sq_pop(vm, nparam + 4); ScriptObject::SetAllowDoCommand(backup_allow); - return sq_throwerror(vm, _SC("modifying valuated list outside of valuator function")); + return sq_throwerror(vm, "modifying valuated list outside of valuator function"); } this->SetValue((*iter).first, value); diff --git a/src/script/api/script_list.hpp b/src/script/api/script_list.hpp index 2117f959da..1fbafe3d9f 100644 --- a/src/script/api/script_list.hpp +++ b/src/script/api/script_list.hpp @@ -44,9 +44,9 @@ private: int modifications; ///< Number of modification that has been done. To prevent changing data while valuating. public: - typedef std::set ScriptItemList; ///< The list of items inside the bucket - typedef std::map ScriptListBucket; ///< The bucket list per value - typedef std::map ScriptListMap; ///< List per item + typedef std::set ScriptItemList; ///< The list of items inside the bucket + typedef std::map ScriptListBucket; ///< The bucket list per value + typedef std::map ScriptListMap; ///< List per item ScriptListMap items; ///< The items in the list ScriptListBucket buckets; ///< The items in the list, sorted by value @@ -60,16 +60,16 @@ public: * @param item the item to add. Should be unique, otherwise it is ignored. * @param value the value to assign. */ - void AddItem(int32 item, int32 value); + void AddItem(int64 item, int64 value); #else - void AddItem(int32 item, int32 value = 0); + void AddItem(int64 item, int64 value = 0); #endif /* DOXYGEN_API */ /** * Remove a single item from the list. * @param item the item to remove. If not existing, it is ignored. */ - void RemoveItem(int32 item); + void RemoveItem(int64 item); /** * Clear the list, making Count() returning 0 and IsEmpty() returning true. @@ -81,21 +81,21 @@ public: * @param item the item to check for. * @return true if the item is in the list. */ - bool HasItem(int32 item); + bool HasItem(int64 item); /** - * Go to the beginning of the list. - * @return the item value of the first item. + * Go to the beginning of the list and return the item. To get the value use list.GetValue(list.Begin()). + * @return the first item. * @note returns 0 if beyond end-of-list. Use IsEnd() to check for end-of-list. */ - int32 Begin(); + int64 Begin(); /** - * Go to the next item in the list. - * @return the item value of the next item. + * Go to the next item in the list and return the item. To get the value use list.GetValue(list.Next()). + * @return the next item. * @note returns 0 if beyond end-of-list. Use IsEnd() to check for end-of-list. */ - int32 Next(); + int64 Next(); /** * Check if a list is empty. @@ -121,7 +121,7 @@ public: * @param item the item to get the value from * @return the value that belongs to this item. */ - int32 GetValue(int32 item); + int64 GetValue(int64 item); /** * Set a value of an item directly. @@ -131,7 +131,7 @@ public: * @note Changing values of items while looping through a list might cause * entries to be skipped. Be very careful with such operations. */ - bool SetValue(int32 item, int32 value); + bool SetValue(int64 item, int64 value); /** * Sort this list by the given sorter and direction. @@ -152,30 +152,36 @@ public: */ void AddList(ScriptList *list); + /** + * Swap the contents of two lists. + * @param list The list that will be swapped with. + */ + void SwapList(ScriptList *list); + /** * Removes all items with a higher value than 'value'. * @param value the value above which all items are removed. */ - void RemoveAboveValue(int32 value); + void RemoveAboveValue(int64 value); /** * Removes all items with a lower value than 'value'. * @param value the value below which all items are removed. */ - void RemoveBelowValue(int32 value); + void RemoveBelowValue(int64 value); /** * Removes all items with a value above start and below end. * @param start the lower bound of the to be removed values (exclusive). * @param end the upper bound of the to be removed values (exclusive). */ - void RemoveBetweenValue(int32 start, int32 end); + void RemoveBetweenValue(int64 start, int64 end); /** * Remove all items with this value. * @param value the value to remove. */ - void RemoveValue(int32 value); + void RemoveValue(int64 value); /** * Remove the first count items. @@ -200,26 +206,26 @@ public: * Keep all items with a higher value than 'value'. * @param value the value above which all items are kept. */ - void KeepAboveValue(int32 value); + void KeepAboveValue(int64 value); /** * Keep all items with a lower value than 'value'. * @param value the value below which all items are kept. */ - void KeepBelowValue(int32 value); + void KeepBelowValue(int64 value); /** * Keep all items with a value above start and below end. * @param start the lower bound of the to be kept values (exclusive). * @param end the upper bound of the to be kept values (exclusive). */ - void KeepBetweenValue(int32 start, int32 end); + void KeepBetweenValue(int64 start, int64 end); /** * Keep all items with this value. * @param value the value to keep. */ - void KeepValue(int32 value); + void KeepValue(int64 value); /** * Keep the first count items, i.e. remove everything except the first count items. diff --git a/src/script/api/script_log.cpp b/src/script/api/script_log.cpp index fc6a0b193a..d9fbbde982 100644 --- a/src/script/api/script_log.cpp +++ b/src/script/api/script_log.cpp @@ -14,6 +14,9 @@ #include "../../core/alloc_func.hpp" #include "../../debug.h" #include "../../window_func.h" +#include "../../string_func.h" + +#include "../../safeguards.h" /* static */ void ScriptLog::Info(const char *message) { @@ -51,7 +54,7 @@ /* Free last message, and write new message */ free(log->lines[log->pos]); - log->lines[log->pos] = strdup(message); + log->lines[log->pos] = stredup(message); log->type[log->pos] = level; /* Cut string after first \n */ diff --git a/src/script/api/script_map.cpp b/src/script/api/script_map.cpp index 3f224b3d15..6334089fdb 100644 --- a/src/script/api/script_map.cpp +++ b/src/script/api/script_map.cpp @@ -13,6 +13,8 @@ #include "script_map.hpp" #include "../../tile_map.h" +#include "../../safeguards.h" + /* static */ bool ScriptMap::IsValidTile(TileIndex t) { return ::IsValidTile(t); diff --git a/src/script/api/script_marine.cpp b/src/script/api/script_marine.cpp index abc8666f1f..434ec11acc 100644 --- a/src/script/api/script_marine.cpp +++ b/src/script/api/script_marine.cpp @@ -15,6 +15,8 @@ #include "../../station_base.h" #include "../../tile_cmd.h" +#include "../../safeguards.h" + /* static */ bool ScriptMarine::IsWaterDepotTile(TileIndex tile) { diff --git a/src/script/api/script_news.cpp b/src/script/api/script_news.cpp index e80b884913..5f84f96d69 100644 --- a/src/script/api/script_news.cpp +++ b/src/script/api/script_news.cpp @@ -11,11 +11,17 @@ #include "../../stdafx.h" #include "script_news.hpp" +#include "script_industry.hpp" +#include "script_station.hpp" +#include "script_map.hpp" +#include "script_town.hpp" #include "script_error.hpp" #include "../../command_type.h" #include "../../string_func.h" -/* static */ bool ScriptNews::Create(NewsType type, Text *text, ScriptCompany::CompanyID company) +#include "../../safeguards.h" + +/* static */ bool ScriptNews::Create(NewsType type, Text *text, ScriptCompany::CompanyID company, NewsReferenceType ref_type, uint32 reference) { CCountedPtr counter(text); @@ -24,9 +30,15 @@ EnforcePreconditionEncodedText(false, encoded); EnforcePrecondition(false, type == NT_ECONOMY || type == NT_SUBSIDIES || type == NT_GENERAL); EnforcePrecondition(false, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); + EnforcePrecondition(false, (ref_type == NR_NONE) || + (ref_type == NR_TILE && ScriptMap::IsValidTile(reference)) || + (ref_type == NR_STATION && ScriptStation::IsValidStation(reference)) || + (ref_type == NR_INDUSTRY && ScriptIndustry::IsValidIndustry(reference)) || + (ref_type == NR_TOWN && ScriptTown::IsValidTown(reference))); uint8 c = company; if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; - return ScriptObject::DoCommand(0, type | (NR_NONE << 8) | (c << 16), 0, CMD_CUSTOM_NEWS_ITEM, encoded); + if (ref_type == NR_NONE) reference = 0; + return ScriptObject::DoCommand(0, type | (ref_type << 8) | (c << 16), reference, CMD_CUSTOM_NEWS_ITEM, encoded); } diff --git a/src/script/api/script_news.hpp b/src/script/api/script_news.hpp index 8defa3a85f..ca0656608f 100644 --- a/src/script/api/script_news.hpp +++ b/src/script/api/script_news.hpp @@ -36,15 +36,36 @@ public: }; /** - * Create a news messages for a company. + * Reference to a game element. + */ + enum NewsReferenceType { + /* Selection of useful game elements to refer to. */ + NR_NONE = ::NR_NONE, ///< No reference supplied. + NR_TILE = ::NR_TILE, ///< Reference location, scroll to the location when clicking on the news. + NR_STATION = ::NR_STATION, ///< Reference station, scroll to the station when clicking on the news. Delete news when the station is deleted. + NR_INDUSTRY = ::NR_INDUSTRY, ///< Reference industry, scrolls to the industry when clicking on the news. Delete news when the industry is deleted. + NR_TOWN = ::NR_TOWN, ///< Reference town, scroll to the town when clicking on the news. + }; + + /** + * Create a news message for everybody, or for one company. * @param type The type of the news. * @param text The text message to show (can be either a raw string, or a ScriptText object). * @param company The company, or COMPANY_INVALID for all companies. + * @param ref_type Type of referred game element. + * @param reference The referenced game element of \a ref_type. + * - For #NR_NONE this parameter is ignored. + * - For #NR_TILE this parameter should be a valid location (ScriptMap::IsValidTile). + * - For #NR_STATION this parameter should be a valid stationID (ScriptStation::IsValidStation). + * - For #NR_INDUSTRY this parameter should be a valid industryID (ScriptIndustry::IsValidIndustry). + * - For #NR_TOWN this parameter should be a valid townID (ScriptTown::IsValidTown). * @return True if the action succeeded. + * @pre type must be #NT_ECONOMY, #NT_SUBSIDIES, or #NT_GENERAL. * @pre text != NULL. * @pre company == COMPANY_INVALID || ResolveCompanyID(company) != COMPANY_INVALID. + * @pre The \a reference condition must be fulfilled. */ - static bool Create(NewsType type, Text *text, ScriptCompany::CompanyID company); + static bool Create(NewsType type, Text *text, ScriptCompany::CompanyID company, NewsReferenceType ref_type, uint32 reference); }; #endif /* SCRIPT_NEWS_HPP */ diff --git a/src/script/api/script_object.cpp b/src/script/api/script_object.cpp index 6d4140b2a3..49dba6bb73 100644 --- a/src/script/api/script_object.cpp +++ b/src/script/api/script_object.cpp @@ -24,6 +24,8 @@ #include "../script_fatalerror.hpp" #include "script_error.hpp" +#include "../../safeguards.h" + /** * Get the storage associated with the current ScriptInstance. * @return The storage. @@ -262,7 +264,7 @@ ScriptObject::ActiveInstance::~ActiveInstance() char buffer[64]; ::GetString(buffer, string, lastof(buffer)); ::str_validate(buffer, lastof(buffer), SVS_NONE); - return ::strdup(buffer); + return ::stredup(buffer); } /* static */ void ScriptObject::SetCallbackVariable(int index, int value) @@ -287,7 +289,11 @@ ScriptObject::ActiveInstance::~ActiveInstance() return false; } - assert(StrEmpty(text) || (GetCommandFlags(cmd) & CMD_STR_CTRL) != 0 || StrValid(text, text + strlen(text))); + if (!StrEmpty(text) && (GetCommandFlags(cmd) & CMD_STR_CTRL) == 0) { + /* The string must be valid, i.e. not contain special codes. Since some + * can be made with GSText, make sure the control codes are removed. */ + ::str_validate(const_cast(text), text + strlen(text), SVS_NONE); + } /* Set the default callback to return a true/false result of the DoCommand */ if (callback == NULL) callback = &ScriptInstance::DoCommandReturn; diff --git a/src/script/api/script_order.cpp b/src/script/api/script_order.cpp index 3087caa651..676262dc77 100644 --- a/src/script/api/script_order.cpp +++ b/src/script/api/script_order.cpp @@ -21,6 +21,8 @@ #include "../../station_base.h" #include "../../waypoint_base.h" +#include "../../safeguards.h" + /** * Gets the order type given a tile * @param t the tile to get the order from @@ -66,7 +68,7 @@ static const Order *ResolveOrder(VehicleID vehicle_id, ScriptOrder::OrderPositio order_position = ScriptOrder::ResolveOrderPosition(vehicle_id, order_position); if (order_position == ScriptOrder::ORDER_INVALID) return NULL; } - const Order *order = v->orders.list->GetFirstOrder(); + const Order *order = v->GetFirstOrder(); while (order->GetType() == OT_IMPLICIT) order = order->next; while (order_position > 0) { order_position = (ScriptOrder::OrderPosition)(order_position - 1); @@ -165,18 +167,22 @@ static int ScriptOrderPositionToRealOrderPosition(VehicleID vehicle_id, ScriptOr { if (!ScriptVehicle::IsValidVehicle(vehicle_id)) return ORDER_INVALID; + int num_manual_orders = ::Vehicle::Get(vehicle_id)->GetNumManualOrders(); + if (num_manual_orders == 0) return ORDER_INVALID; + if (order_position == ORDER_CURRENT) { int cur_order_pos = ::Vehicle::Get(vehicle_id)->cur_real_order_index; - const Order *order = ::Vehicle::Get(vehicle_id)->GetOrder(0); - if (order == NULL) return ORDER_INVALID; + const Order *order = ::Vehicle::Get(vehicle_id)->GetFirstOrder(); int num_implicit_orders = 0; for (int i = 0; i < cur_order_pos; i++) { if (order->GetType() == OT_IMPLICIT) num_implicit_orders++; order = order->next; } - return (ScriptOrder::OrderPosition)(cur_order_pos - num_implicit_orders); + int real_order_pos = cur_order_pos - num_implicit_orders; + assert(real_order_pos < num_manual_orders); + return (ScriptOrder::OrderPosition)real_order_pos; } - return (order_position >= 0 && order_position < ::Vehicle::Get(vehicle_id)->GetNumManualOrders()) ? order_position : ORDER_INVALID; + return (order_position >= 0 && order_position < num_manual_orders) ? order_position : ORDER_INVALID; } diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index 161007de96..af68a3edc8 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -21,6 +21,8 @@ #include "../../newgrf_station.h" #include "../../strings_func.h" +#include "../../safeguards.h" + /* static */ char *ScriptRail::GetName(RailType rail_type) { if (!IsRailTypeAvailable(rail_type)) return NULL; @@ -253,7 +255,7 @@ EnforcePrecondition(false, GetRailTracks(tile) & rail_track); EnforcePrecondition(false, KillFirstBit((uint)rail_track) == 0); - return ScriptObject::DoCommand(tile, tile, GetCurrentRailType() | (FindFirstTrack((::TrackBits)rail_track) << 4), CMD_REMOVE_RAILROAD_TRACK); + return ScriptObject::DoCommand(tile, tile, FindFirstTrack((::TrackBits)rail_track) << 4, CMD_REMOVE_RAILROAD_TRACK); } /* static */ bool ScriptRail::AreTilesConnected(TileIndex from, TileIndex tile, TileIndex to) @@ -284,7 +286,7 @@ static uint32 SimulateDrag(TileIndex from, TileIndex tile, TileIndex *to) { int diag_offset = abs(abs((int)::TileX(*to) - (int)::TileX(tile)) - abs((int)::TileY(*to) - (int)::TileY(tile))); - uint32 p2 = ScriptRail::GetCurrentRailType(); + uint32 p2 = 0; if (::TileY(from) == ::TileY(*to)) { p2 |= (TRACK_X << 4); *to -= Clamp((int)::TileX(*to) - (int)::TileX(tile), -1, 1); @@ -353,7 +355,7 @@ static uint32 SimulateDrag(TileIndex from, TileIndex tile, TileIndex *to) (::TileX(from) == ::TileX(tile) && ::TileX(tile) == ::TileX(to)) || (::TileY(from) == ::TileY(tile) && ::TileY(tile) == ::TileY(to))); - uint32 p2 = SimulateDrag(from, tile, &to) | 1 << 8; + uint32 p2 = SimulateDrag(from, tile, &to) | 1 << 8 | ScriptRail::GetCurrentRailType();; return ScriptObject::DoCommand(tile, to, p2, CMD_BUILD_RAILROAD_TRACK); } @@ -370,7 +372,6 @@ static uint32 SimulateDrag(TileIndex from, TileIndex tile, TileIndex *to) (::TileX(from) == ::TileX(tile) && ::TileX(tile) == ::TileX(to)) || (::TileY(from) == ::TileY(tile) && ::TileY(tile) == ::TileY(to))); - if (!IsRailTypeAvailable(GetCurrentRailType())) SetCurrentRailType(GetRailType(tile)); uint32 p2 = SimulateDrag(from, tile, &to); return ScriptObject::DoCommand(tile, to, p2, CMD_REMOVE_RAILROAD_TRACK); } diff --git a/src/script/api/script_railtypelist.cpp b/src/script/api/script_railtypelist.cpp index 9373ce85c8..016145b764 100644 --- a/src/script/api/script_railtypelist.cpp +++ b/src/script/api/script_railtypelist.cpp @@ -13,6 +13,8 @@ #include "script_railtypelist.hpp" #include "../../rail.h" +#include "../../safeguards.h" + ScriptRailTypeList::ScriptRailTypeList() { for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { diff --git a/src/script/api/script_road.cpp b/src/script/api/script_road.cpp index 137ae76184..3a9a8ca3fd 100644 --- a/src/script/api/script_road.cpp +++ b/src/script/api/script_road.cpp @@ -16,6 +16,8 @@ #include "../../station_base.h" #include "../../script/squirrel_helper_type.hpp" +#include "../../safeguards.h" + /* static */ ScriptRoad::RoadVehicleType ScriptRoad::GetRoadVehicleTypeForCargo(CargoID cargo_type) { return ScriptCargo::HasCargoClass(cargo_type, ScriptCargo::CC_PASSENGERS) ? ROADVEHTYPE_BUS : ROADVEHTYPE_TRUCK; @@ -32,6 +34,7 @@ /* static */ bool ScriptRoad::IsRoadDepotTile(TileIndex tile) { if (!::IsValidTile(tile)) return false; + if (!IsRoadTypeAvailable(GetCurrentRoadType())) return false; return ::IsTileType(tile, MP_ROAD) && ::GetRoadTileType(tile) == ROAD_TILE_DEPOT && (::RoadTypeToRoadTypes((::RoadType)GetCurrentRoadType()) & ::GetRoadTypes(tile)) != 0; @@ -40,6 +43,7 @@ /* static */ bool ScriptRoad::IsRoadStationTile(TileIndex tile) { if (!::IsValidTile(tile)) return false; + if (!IsRoadTypeAvailable(GetCurrentRoadType())) return false; return ::IsRoadStopTile(tile) && (::RoadTypeToRoadTypes((::RoadType)GetCurrentRoadType()) & ::GetRoadTypes(tile)) != 0; } @@ -47,13 +51,14 @@ /* static */ bool ScriptRoad::IsDriveThroughRoadStationTile(TileIndex tile) { if (!::IsValidTile(tile)) return false; + if (!IsRoadTypeAvailable(GetCurrentRoadType())) return false; return ::IsDriveThroughStopTile(tile) && (::RoadTypeToRoadTypes((::RoadType)GetCurrentRoadType()) & ::GetRoadTypes(tile)) != 0; } /* static */ bool ScriptRoad::IsRoadTypeAvailable(RoadType road_type) { - return ::HasRoadTypesAvail(ScriptObject::GetCompany(), ::RoadTypeToRoadTypes((::RoadType)road_type)); + return ::IsValidRoadType((::RoadType)road_type) && ::HasRoadTypesAvail(ScriptObject::GetCompany(), ::RoadTypeToRoadTypes((::RoadType)road_type)); } /* static */ ScriptRoad::RoadType ScriptRoad::GetCurrentRoadType() diff --git a/src/script/api/script_road.hpp b/src/script/api/script_road.hpp index 36290e2ccf..ed4058f973 100644 --- a/src/script/api/script_road.hpp +++ b/src/script/api/script_road.hpp @@ -93,6 +93,7 @@ public: * Checks whether the given tile is actually a tile with a road depot. * @param tile The tile to check. * @pre ScriptMap::IsValidTile(tile). + * @pre IsRoadTypeAvailable(GetCurrentRoadType()). * @return True if and only if the tile has a road depot. */ static bool IsRoadDepotTile(TileIndex tile); @@ -101,6 +102,7 @@ public: * Checks whether the given tile is actually a tile with a road station. * @param tile The tile to check. * @pre ScriptMap::IsValidTile(tile). + * @pre IsRoadTypeAvailable(GetCurrentRoadType()). * @return True if and only if the tile has a road station. */ static bool IsRoadStationTile(TileIndex tile); @@ -110,6 +112,7 @@ public: * road station. * @param tile The tile to check. * @pre ScriptMap::IsValidTile(tile). + * @pre IsRoadTypeAvailable(GetCurrentRoadType()). * @return True if and only if the tile has a drive through road station. */ static bool IsDriveThroughRoadStationTile(TileIndex tile); diff --git a/src/script/api/script_sign.cpp b/src/script/api/script_sign.cpp index 3373800b54..236e1df7ef 100644 --- a/src/script/api/script_sign.cpp +++ b/src/script/api/script_sign.cpp @@ -18,6 +18,8 @@ #include "../../strings_func.h" #include "../../tile_map.h" +#include "../../safeguards.h" + /* static */ bool ScriptSign::IsValidSign(SignID sign_id) { const Sign *si = ::Sign::GetIfValid(sign_id); diff --git a/src/script/api/script_signlist.cpp b/src/script/api/script_signlist.cpp index 5f6c6075bb..61ab9665aa 100644 --- a/src/script/api/script_signlist.cpp +++ b/src/script/api/script_signlist.cpp @@ -14,6 +14,8 @@ #include "script_sign.hpp" #include "../../signs_base.h" +#include "../../safeguards.h" + ScriptSignList::ScriptSignList() { Sign *s; diff --git a/src/script/api/script_station.cpp b/src/script/api/script_station.cpp index bcf5e08ce5..5ed43e0a67 100644 --- a/src/script/api/script_station.cpp +++ b/src/script/api/script_station.cpp @@ -13,10 +13,13 @@ #include "script_station.hpp" #include "script_map.hpp" #include "script_town.hpp" +#include "script_cargo.hpp" #include "../../station_base.h" #include "../../roadstop_base.h" #include "../../town.h" +#include "../../safeguards.h" + /* static */ bool ScriptStation::IsValidStation(StationID station_id) { const Station *st = ::Station::GetIfValid(station_id); @@ -36,12 +39,104 @@ return ::GetStationIndex(tile); } +template +/* static */ bool ScriptStation::IsCargoRequestValid(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) +{ + if (!IsValidStation(station_id)) return false; + if (Tfrom && !IsValidStation(from_station_id) && from_station_id != STATION_INVALID) return false; + if (Tvia && !IsValidStation(via_station_id) && via_station_id != STATION_INVALID) return false; + if (!ScriptCargo::IsValidCargo(cargo_id)) return false; + return true; +} + +template +/* static */ int32 ScriptStation::CountCargoWaiting(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) +{ + if (!ScriptStation::IsCargoRequestValid(station_id, from_station_id, + via_station_id, cargo_id)) { + return -1; + } + + const StationCargoList &cargo_list = ::Station::Get(station_id)->goods[cargo_id].cargo; + if (!Tfrom && !Tvia) return cargo_list.TotalCount(); + + uint16 cargo_count = 0; + std::pair range = Tvia ? + cargo_list.Packets()->equal_range(via_station_id) : + std::make_pair(StationCargoList::ConstIterator(cargo_list.Packets()->begin()), + StationCargoList::ConstIterator(cargo_list.Packets()->end())); + for (StationCargoList::ConstIterator it = range.first; it != range.second; it++) { + const CargoPacket *cp = *it; + if (!Tfrom || cp->SourceStation() == from_station_id) cargo_count += cp->Count(); + } + + return cargo_count; +} + /* static */ int32 ScriptStation::GetCargoWaiting(StationID station_id, CargoID cargo_id) { - if (!IsValidStation(station_id)) return -1; - if (!ScriptCargo::IsValidCargo(cargo_id)) return -1; + return CountCargoWaiting(station_id, STATION_INVALID, STATION_INVALID, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoWaitingFrom(StationID station_id, + StationID from_station_id, CargoID cargo_id) +{ + return CountCargoWaiting(station_id, from_station_id, STATION_INVALID, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoWaitingVia(StationID station_id, + StationID via_station_id, CargoID cargo_id) +{ + return CountCargoWaiting(station_id, STATION_INVALID, via_station_id, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoWaitingFromVia(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) +{ + return CountCargoWaiting(station_id, from_station_id, via_station_id, cargo_id); +} + +template +/* static */ int32 ScriptStation::CountCargoPlanned(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) +{ + if (!ScriptStation::IsCargoRequestValid(station_id, from_station_id, + via_station_id, cargo_id)) { + return -1; + } + + const FlowStatMap &flows = ::Station::Get(station_id)->goods[cargo_id].flows; + if (Tfrom) { + return Tvia ? flows.GetFlowFromVia(from_station_id, via_station_id) : + flows.GetFlowFrom(from_station_id); + } else { + return Tvia ? flows.GetFlowVia(via_station_id) : flows.GetFlow(); + } +} - return ::Station::Get(station_id)->goods[cargo_id].cargo.TotalCount(); +/* static */ int32 ScriptStation::GetCargoPlanned(StationID station_id, CargoID cargo_id) +{ + return CountCargoPlanned(station_id, STATION_INVALID, STATION_INVALID, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoPlannedFrom(StationID station_id, + StationID from_station_id, CargoID cargo_id) +{ + return CountCargoPlanned(station_id, from_station_id, STATION_INVALID, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoPlannedVia(StationID station_id, + StationID via_station_id, CargoID cargo_id) +{ + return CountCargoPlanned(station_id, STATION_INVALID, via_station_id, cargo_id); +} + +/* static */ int32 ScriptStation::GetCargoPlannedFromVia(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) +{ + return CountCargoPlanned(station_id, from_station_id, via_station_id, cargo_id); } /* static */ bool ScriptStation::HasCargoRating(StationID station_id, CargoID cargo_id) @@ -135,7 +230,7 @@ return ::Station::Get(station_id)->town->index; } -/*static */ bool ScriptStation::IsAirportClosed(StationID station_id) +/* static */ bool ScriptStation::IsAirportClosed(StationID station_id) { EnforcePrecondition(false, IsValidStation(station_id)); EnforcePrecondition(false, HasStationType(station_id, STATION_AIRPORT)); @@ -143,7 +238,7 @@ return (::Station::Get(station_id)->airport.flags & AIRPORT_CLOSED_block) != 0; } -/*static */ bool ScriptStation::OpenCloseAirport(StationID station_id) +/* static */ bool ScriptStation::OpenCloseAirport(StationID station_id) { EnforcePrecondition(false, IsValidStation(station_id)); EnforcePrecondition(false, HasStationType(station_id, STATION_AIRPORT)); diff --git a/src/script/api/script_station.hpp b/src/script/api/script_station.hpp index 7614b516c8..8561cd9bdd 100644 --- a/src/script/api/script_station.hpp +++ b/src/script/api/script_station.hpp @@ -86,6 +86,99 @@ public: */ static int32 GetCargoWaiting(StationID station_id, CargoID cargo_id); + /** + * See how much cargo with a specific source station there is waiting on a station. + * @param station_id The station to get the cargo-waiting of. + * @param from_station_id The source station of the cargo. Pass STATION_INVALID to get cargo of which the source has been deleted. + * @param cargo_id The cargo to get the cargo-waiting of. + * @pre IsValidStation(station_id). + * @pre IsValidStation(from_station_id) || from_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of units waiting at the station originating from from_station_id. + * @note source station means, the station where cargo was first loaded. + */ + static int32 GetCargoWaitingFrom(StationID station_id, StationID from_station_id, CargoID cargo_id); + + /** + * See how much cargo with a specific via-station there is waiting on a station. + * @param station_id The station to get the cargo-waiting of. + * @param via_station_id The next station the cargo is going to. Pass STATION_INVALID to get waiting cargo for "via any station". + * @param cargo_id The cargo to get the cargo-waiting of. + * @pre IsValidStation(station_id). + * @pre IsValidStation(via_station_id) || via_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of units waiting at the station with via_station_id as next hop. + * @note if ScriptCargo.GetCargoDistributionType(cargo_id) == ScriptCargo.DT_MANUAL, then all waiting cargo will have STATION_INVALID as next hop. + */ + static int32 GetCargoWaitingVia(StationID station_id, StationID via_station_id, CargoID cargo_id); + + /** + * See how much cargo with a specific via-station and source station there is waiting on a station. + * @param station_id The station to get the cargo-waiting of. + * @param from_station_id The source station of the cargo. Pass STATION_INVALID to get cargo of which the source has been deleted. + * @param via_station_id The next station the cargo is going to. Pass STATION_INVALID to get waiting cargo for "via any station". + * @param cargo_id The cargo to get the cargo-waiting of. + * @pre IsValidStation(station_id). + * @pre IsValidStation(from_station_id) || from_station_id == STATION_INVALID. + * @pre IsValidStation(via_station_id) || via_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of units waiting at the station with from_station_id as source and via_station_id as next hop. + * @note if ScriptCargo.GetCargoDistributionType(cargo_id) == ScriptCargo.DT_MANUAL, then all waiting cargo will have STATION_INVALID as next hop. + */ + static int32 GetCargoWaitingFromVia(StationID station_id, StationID from_station_id, StationID via_station_id, CargoID cargo_id); + + /** + * See how much cargo was planned to pass (including production and consumption) this station per month. + * @param station_id The station to get the planned flow for. + * @param cargo_id The cargo type to get the planned flow for. + * @pre IsValidStation(station_id). + * @pre IsValidCargo(cargo_id). + * @return The amount of cargo units planned to pass the station per month. + */ + static int32 GetCargoPlanned(StationID station_id, CargoID cargo_id); + + /** + * See how much cargo from the specified origin was planned to pass (including production and consumption) this station per month. + * @param station_id The station to get the planned flow for. + * @param from_station_id The station the cargo originates at. + * @param cargo_id The cargo type to get the planned flow for. + * @pre IsValidStation(station_id). + * @pre IsValidStation(from_station_id) || from_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of cargo units from the specified origin planned to pass the station per month. + */ + static int32 GetCargoPlannedFrom(StationID station_id, StationID from_station_id, CargoID cargo_id); + + /** + * See how much cargo was planned to pass (including production and consumption) this station per month, heading for the specified next hop. + * @param station_id The station to get the planned flow for. + * @param via_station_id The next station the cargo will go on to. + * @param cargo_id The cargo type to get the planned flow for. + * @pre IsValidStation(station_id). + * @pre IsValidStation(via_station_id) || via_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of cargo units planned to pass the station per month, going via the specified next hop. + * @note Cargo planned to go "via" the same station that's being queried is actually planned to be consumed there. + */ + static int32 GetCargoPlannedVia(StationID station_id, StationID via_station_id, CargoID cargo_id); + + /** + * See how much cargo from the specified origin was planned to pass this station per month, + * heading for the specified next hop. + * @param station_id The station to get the planned flow for. + * @param from_station_id The station the cargo originates at. + * @param via_station_id The next station the cargo will go on to. + * @param cargo_id The cargo type to get the planned flow for. + * @pre IsValidStation(station_id). + * @pre IsValidStation(from_station_id) || from_station_id == STATION_INVALID. + * @pre IsValidStation(via_station_id) || via_station_id == STATION_INVALID. + * @pre IsValidCargo(cargo_id). + * @return The amount of cargo units from the specified origin planned to pass the station per month, going via the specified next hop. + * @note Cargo planned to go "via" the same station that's being queried is actually planned to be consumed there. + * @note Cargo planned to pass "from" the same station that's being queried is actually produced there. + */ + static int32 GetCargoPlannedFromVia(StationID station_id, StationID from_station_id, StationID via_station_id, CargoID cargo_id); + /** * Check whether the given cargo at the given station a rating. * @param station_id The station to get the cargo-rating state of. @@ -198,9 +291,23 @@ public: * @param station_id The airport to modify. * @pre IsValidStation(station_id). * @pre HasStationType(station_id, STATION_AIRPORT). - * @return True if the state could be toggled. + * @return True if the state was toggled successfully. */ static bool OpenCloseAirport(StationID station_id); + +private: + template + static bool IsCargoRequestValid(StationID station_id, StationID from_station_id, + StationID via_station_id, CargoID cargo_id); + + template + static int32 CountCargoWaiting(StationID station_id, StationID from_station_id, + StationID via_station_id, CargoID cargo_id); + + template + static int32 CountCargoPlanned(StationID station_id, StationID from_station_id, + StationID via_station_id, CargoID cargo_id); + }; DECLARE_ENUM_AS_BIT_SET(ScriptStation::StationType) diff --git a/src/script/api/script_stationlist.cpp b/src/script/api/script_stationlist.cpp index a7269bd249..ab9503a1b5 100644 --- a/src/script/api/script_stationlist.cpp +++ b/src/script/api/script_stationlist.cpp @@ -12,9 +12,12 @@ #include "../../stdafx.h" #include "script_stationlist.hpp" #include "script_vehicle.hpp" +#include "script_cargo.hpp" #include "../../station_base.h" #include "../../vehicle_base.h" +#include "../../safeguards.h" + ScriptStationList::ScriptStationList(ScriptStation::StationType station_type) { Station *st; @@ -33,3 +36,240 @@ ScriptStationList_Vehicle::ScriptStationList_Vehicle(VehicleID vehicle_id) if (o->IsType(OT_GOTO_STATION)) this->AddItem(o->GetDestination()); } } + +ScriptStationList_Cargo::ScriptStationList_Cargo(ScriptStationList_Cargo::CargoMode mode, + ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, + StationID other_station) +{ + switch (mode) { + case CM_WAITING: + ScriptStationList_CargoWaiting(selector, station_id, cargo, other_station).SwapList(this); + break; + case CM_PLANNED: + ScriptStationList_CargoPlanned(selector, station_id, cargo, other_station).SwapList(this); + break; + default: + NOT_REACHED(); + } +} + +ScriptStationList_CargoWaiting::ScriptStationList_CargoWaiting( + ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, + StationID other_station) +{ + switch (selector) { + case CS_BY_FROM: + ScriptStationList_CargoWaitingByFrom(station_id, cargo).SwapList(this); + break; + case CS_VIA_BY_FROM: + ScriptStationList_CargoWaitingViaByFrom(station_id, cargo, other_station).SwapList(this); + break; + case CS_BY_VIA: + ScriptStationList_CargoWaitingByVia(station_id, cargo).SwapList(this); + break; + case CS_FROM_BY_VIA: + ScriptStationList_CargoWaitingFromByVia(station_id, cargo, other_station).SwapList(this); + break; + default: + NOT_REACHED(); + } +} + +ScriptStationList_CargoPlanned::ScriptStationList_CargoPlanned( + ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, + StationID other_station) +{ + switch (selector) { + case CS_BY_FROM: + ScriptStationList_CargoPlannedByFrom(station_id, cargo).SwapList(this); + break; + case CS_VIA_BY_FROM: + ScriptStationList_CargoPlannedViaByFrom(station_id, cargo, other_station).SwapList(this); + break; + case CS_BY_VIA: + ScriptStationList_CargoPlannedByVia(station_id, cargo).SwapList(this); + break; + case CS_FROM_BY_VIA: + ScriptStationList_CargoPlannedFromByVia(station_id, cargo, other_station).SwapList(this); + break; + default: + NOT_REACHED(); + } +} + +class CargoCollector { +public: + CargoCollector(ScriptStationList_Cargo *parent, StationID station_id, CargoID cargo, + StationID other); + ~CargoCollector() ; + + template + void Update(StationID from, StationID via, uint amount); + const GoodsEntry *GE() const { return ge; } + +private: + void SetValue(); + + ScriptStationList_Cargo *list; + const GoodsEntry *ge; + StationID other_station; + + StationID last_key; + uint amount; +}; + +CargoCollector::CargoCollector(ScriptStationList_Cargo *parent, + StationID station_id, CargoID cargo, StationID other) : + list(parent), ge(NULL), other_station(other), last_key(INVALID_STATION), amount(0) +{ + if (!ScriptStation::IsValidStation(station_id)) return; + if (!ScriptCargo::IsValidCargo(cargo)) return; + this->ge = &(Station::Get(station_id)->goods[cargo]); +} + +CargoCollector::~CargoCollector() +{ + this->SetValue(); +} + +void CargoCollector::SetValue() +{ + if (this->amount > 0) { + if (this->list->HasItem(this->last_key)) { + this->list->SetValue(this->last_key, + this->list->GetValue(this->last_key) + this->amount); + } else { + this->list->AddItem(this->last_key, this->amount); + } + } +} + +template +void CargoCollector::Update(StationID from, StationID via, uint amount) +{ + StationID key = INVALID_STATION; + switch (Tselector) { + case ScriptStationList_Cargo::CS_VIA_BY_FROM: + if (via != this->other_station) return; + /* fall through */ + case ScriptStationList_Cargo::CS_BY_FROM: + key = from; + break; + case ScriptStationList_Cargo::CS_FROM_BY_VIA: + if (from != this->other_station) return; + /* fall through */ + case ScriptStationList_Cargo::CS_BY_VIA: + key = via; + break; + } + if (key == this->last_key) { + this->amount += amount; + } else { + this->SetValue(); + this->amount = amount; + this->last_key = key; + } +} + + +template +void ScriptStationList_CargoWaiting::Add(StationID station_id, CargoID cargo, StationID other_station) +{ + CargoCollector collector(this, station_id, cargo, other_station); + if (collector.GE() == NULL) return; + + StationCargoList::ConstIterator iter = collector.GE()->cargo.Packets()->begin(); + StationCargoList::ConstIterator end = collector.GE()->cargo.Packets()->end(); + for (; iter != end; ++iter) { + collector.Update((*iter)->SourceStation(), iter.GetKey(), (*iter)->Count()); + } +} + + +template +void ScriptStationList_CargoPlanned::Add(StationID station_id, CargoID cargo, StationID other_station) +{ + CargoCollector collector(this, station_id, cargo, other_station); + if (collector.GE() == NULL) return; + + FlowStatMap::const_iterator iter = collector.GE()->flows.begin(); + FlowStatMap::const_iterator end = collector.GE()->flows.end(); + for (; iter != end; ++iter) { + const FlowStat::SharesMap *shares = iter->second.GetShares(); + uint prev = 0; + for (FlowStat::SharesMap::const_iterator flow_iter = shares->begin(); + flow_iter != shares->end(); ++flow_iter) { + collector.Update(iter->first, flow_iter->second, flow_iter->first - prev); + prev = flow_iter->first; + } + } +} + +ScriptStationList_CargoWaitingByFrom::ScriptStationList_CargoWaitingByFrom(StationID station_id, + CargoID cargo) +{ + this->Add(station_id, cargo); +} + +ScriptStationList_CargoWaitingViaByFrom::ScriptStationList_CargoWaitingViaByFrom( + StationID station_id, CargoID cargo, StationID via) +{ + CargoCollector collector(this, station_id, cargo, via); + if (collector.GE() == NULL) return; + + std::pair range = + collector.GE()->cargo.Packets()->equal_range(via); + for (StationCargoList::ConstIterator iter = range.first; iter != range.second; ++iter) { + collector.Update((*iter)->SourceStation(), iter.GetKey(), (*iter)->Count()); + } +} + + +ScriptStationList_CargoWaitingByVia::ScriptStationList_CargoWaitingByVia(StationID station_id, + CargoID cargo) +{ + this->Add(station_id, cargo); +} + +ScriptStationList_CargoWaitingFromByVia::ScriptStationList_CargoWaitingFromByVia( + StationID station_id, CargoID cargo, StationID from) +{ + this->Add(station_id, cargo, from); +} + +ScriptStationList_CargoPlannedByFrom::ScriptStationList_CargoPlannedByFrom(StationID station_id, + CargoID cargo) +{ + this->Add(station_id, cargo); +} + +ScriptStationList_CargoPlannedViaByFrom::ScriptStationList_CargoPlannedViaByFrom( + StationID station_id, CargoID cargo, StationID via) +{ + this->Add(station_id, cargo, via); +} + + +ScriptStationList_CargoPlannedByVia::ScriptStationList_CargoPlannedByVia(StationID station_id, + CargoID cargo) +{ + this->Add(station_id, cargo); +} + + +ScriptStationList_CargoPlannedFromByVia::ScriptStationList_CargoPlannedFromByVia( + StationID station_id, CargoID cargo, StationID from) +{ + CargoCollector collector(this, station_id, cargo, from); + if (collector.GE() == NULL) return; + + FlowStatMap::const_iterator iter = collector.GE()->flows.find(from); + if (iter == collector.GE()->flows.end()) return; + const FlowStat::SharesMap *shares = iter->second.GetShares(); + uint prev = 0; + for (FlowStat::SharesMap::const_iterator flow_iter = shares->begin(); + flow_iter != shares->end(); ++flow_iter) { + collector.Update(iter->first, flow_iter->second, flow_iter->first - prev); + prev = flow_iter->first; + } +} diff --git a/src/script/api/script_stationlist.hpp b/src/script/api/script_stationlist.hpp index cd9c98137d..720a43639b 100644 --- a/src/script/api/script_stationlist.hpp +++ b/src/script/api/script_stationlist.hpp @@ -28,6 +28,251 @@ public: ScriptStationList(ScriptStation::StationType station_type); }; +/** + * Creates a list of stations associated with cargo at a station. This is very generic. Use the + * subclasses for all practical purposes. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_Cargo : public ScriptList { +public: + /** + * Criteria of selecting and grouping cargo at a station. + */ + enum CargoSelector { + CS_BY_FROM, ///< Group by origin station. + CS_VIA_BY_FROM, ///< Select by next hop and group by origin station. + CS_BY_VIA, ///< Group by next hop. + CS_FROM_BY_VIA ///< Select by origin station and group by next hop. + }; + + /** + * Ways of associating cargo to stations. + */ + enum CargoMode { + CM_WAITING, ///< Waiting cargo. + CM_PLANNED ///< Planned cargo. + }; + + /** + * Creates a list of stations associated with cargo in the specified way, selected and grouped + * by the chosen criteria. + * @param mode Mode of association, either waiting cargo or planned cargo. + * @param selector Mode of grouping and selecting to be applied. + * @param station_id Station to be queried. + * @param cargo Cargo type to query for. + * @param other_station Other station to restrict the query with. + */ + ScriptStationList_Cargo(ScriptStationList_Cargo::CargoMode mode, ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, StationID other_station); + +protected: + + /** + * Creates an empty list. + */ + ScriptStationList_Cargo() {} +}; + +/** + * Creates a list of stations associated with cargo waiting at a station. This is very generic. Use + * the subclasses for all practical purposes. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoWaiting : public ScriptStationList_Cargo { +protected: + friend class ScriptStationList_Cargo; + + /** + * Creates an empty list. + */ + ScriptStationList_CargoWaiting() {} + + /** + * Add waiting cargo to the list. + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + * @param other_station Other station to restrict the query with. + */ + template + void Add(StationID station_id, CargoID cargo, StationID other_station = INVALID_STATION); + +public: + + /** + * Creates a list of stations associated with waiting cargo, selected and grouped by the chosen + * criteria. + * @param selector Mode of grouping and selecting to be applied. + * @param station_id Station to be queried. + * @param cargo Cargo type to query for. + * @param other_station Other station to restrict the query with. + */ + ScriptStationList_CargoWaiting(ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, StationID other_station); +}; + +/** + * Creates a list of stations associated with cargo planned to pass a station. This is very + * generic. Use the subclasses for all practical purposes. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoPlanned : public ScriptStationList_Cargo { +protected: + friend class ScriptStationList_Cargo; + + /** + * Creates an empty list. + */ + ScriptStationList_CargoPlanned() {} + + /** + * Add planned cargo to the list. + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + * @param other_station Other station to restrict the query with. + */ + template + void Add(StationID station_id, CargoID cargo, StationID other_station = INVALID_STATION); + +public: + + /** + * Creates a list of stations associated with cargo planned to pass the station, selected and + * grouped by the chosen criteria. + * @param selector Mode of grouping and selecting to be applied. + * @param station_id Station to be queried. + * @param cargo Cargo type to query for. + * @param other_station Other station to restrict the query with. + */ + ScriptStationList_CargoPlanned(ScriptStationList_Cargo::CargoSelector selector, StationID station_id, CargoID cargo, StationID other_station); +}; + +/** + * Creates a list of origin stations of waiting cargo at a station, with the amounts of cargo + * waiting from each of those origin stations as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoWaitingByFrom : public ScriptStationList_CargoWaiting { +public: + /** + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + */ + ScriptStationList_CargoWaitingByFrom(StationID station_id, CargoID cargo); +}; + +/** + * Creates a list of origin stations of cargo waiting at a station for a transfer via another + * station, with the amounts of cargo waiting from each of those origin stations as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoWaitingViaByFrom : public ScriptStationList_CargoWaiting { +public: + /** + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + * @param via Next hop to restrict the query with. + */ + ScriptStationList_CargoWaitingViaByFrom(StationID station_id, CargoID cargo, StationID via); +}; + +/** + * Creates a list of next hops of waiting cargo at a station, with the amounts of cargo waiting for + * each of those next hops as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoWaitingByVia : public ScriptStationList_CargoWaiting { +public: + /** + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + */ + ScriptStationList_CargoWaitingByVia(StationID station_id, CargoID cargo); +}; + +/** + * Creates a list of next hops of waiting cargo from a specific station at another station, with + * the amounts of cargo waiting for each of those next hops as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoWaitingFromByVia : public ScriptStationList_CargoWaiting { +public: + /** + * @param station_id Station to query for waiting cargo. + * @param cargo Cargo type to query for. + * @param from Origin station to restrict the query with. + */ + ScriptStationList_CargoWaitingFromByVia(StationID station_id, CargoID cargo, StationID from); +}; + +/** + * Creates a list of origin stations of cargo planned to pass a station, with the monthly amounts + * of cargo planned for each of those origin stations as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoPlannedByFrom : public ScriptStationList_CargoPlanned { +public: + /** + * @param station_id Station to query for planned flows. + * @param cargo Cargo type to query for. + */ + ScriptStationList_CargoPlannedByFrom(StationID station_id, CargoID cargo); +}; + +/** + * Creates a list of origin stations of cargo planned to pass a station going via another station, + * with the monthly amounts of cargo planned for each of those origin stations as values. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoPlannedViaByFrom : public ScriptStationList_CargoPlanned { +public: + /** + * @param station_id Station to query for planned flows. + * @param cargo Cargo type to query for. + * @param via Next hop to restrict the query with. + */ + ScriptStationList_CargoPlannedViaByFrom(StationID station_id, CargoID cargo, StationID via); +}; + +/** + * Creates a list of next hops of cargo planned to pass a station, with the monthly amounts of + * cargo planned for each of those next hops as values. + * Cargo planned to go "via" the station being queried will actually be delivered there. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoPlannedByVia : public ScriptStationList_CargoPlanned { +public: + /** + * @param station_id Station to query for planned flows. + * @param cargo Cargo type to query for. + */ + ScriptStationList_CargoPlannedByVia(StationID station_id, CargoID cargo); +}; + +/** + * Creates a list of next hops of cargo planned to pass a station and originating from another + * station, with the monthly amounts of cargo planned for each of those next hops as values. + * Cargo planned to go "via" the station being queried will actually be delivered there. + * @api ai game + * @ingroup ScriptList + */ +class ScriptStationList_CargoPlannedFromByVia : public ScriptStationList_CargoPlanned { +public: + /** + * @param station_id Station to query for planned flows. + * @param cargo Cargo type to query for. + * @param from Origin station to restrict the query with. + */ + ScriptStationList_CargoPlannedFromByVia(StationID station_id, CargoID cargo, StationID from); +}; + /** * Creates a list of stations which the vehicle has in its orders. * @api ai game diff --git a/src/script/api/script_story_page.cpp b/src/script/api/script_story_page.cpp index 87ae0e3fce..11820ec3f6 100644 --- a/src/script/api/script_story_page.cpp +++ b/src/script/api/script_story_page.cpp @@ -22,6 +22,8 @@ #include "../../string_func.h" #include "../../tile_map.h" +#include "../../safeguards.h" + /* static */ bool ScriptStoryPage::IsValidStoryPage(StoryPageID story_page_id) { return ::StoryPage::IsValidID(story_page_id); @@ -95,8 +97,21 @@ story_page_element_id, type == ::SPET_GOAL ? reference : 0, CMD_UPDATE_STORY_PAGE_ELEMENT, - type == ::SPET_TEXT || type == ::SPET_LOCATION ? text->GetEncodedText() : NULL, - &ScriptInstance::DoCommandReturnStoryPageElementID); + type == ::SPET_TEXT || type == ::SPET_LOCATION ? text->GetEncodedText() : NULL); +} + +/* static */ uint32 ScriptStoryPage::GetPageSortValue(StoryPageID story_page_id) +{ + EnforcePrecondition(false, IsValidStoryPage(story_page_id)); + + return StoryPage::Get(story_page_id)->sort_value; +} + +/* static */ uint32 ScriptStoryPage::GetPageElementSortValue(StoryPageElementID story_page_element_id) +{ + EnforcePrecondition(false, IsValidStoryPageElement(story_page_element_id)); + + return StoryPageElement::Get(story_page_element_id)->sort_value; } /* static */ bool ScriptStoryPage::SetTitle(StoryPageID story_page_id, Text *title) @@ -109,6 +124,33 @@ return ScriptObject::DoCommand(0, story_page_id, 0, CMD_SET_STORY_PAGE_TITLE, title != NULL? title->GetEncodedText() : NULL); } +/* static */ ScriptCompany::CompanyID ScriptStoryPage::GetCompany(StoryPageID story_page_id) +{ + EnforcePrecondition(ScriptCompany::COMPANY_INVALID, IsValidStoryPage(story_page_id)); + + CompanyID c = StoryPage::Get(story_page_id)->company; + ScriptCompany::CompanyID company = c == INVALID_COMPANY ? ScriptCompany::COMPANY_INVALID : (ScriptCompany::CompanyID)c; + + return company; +} + +/* static */ ScriptDate::Date ScriptStoryPage::GetDate(StoryPageID story_page_id) +{ + EnforcePrecondition(ScriptDate::DATE_INVALID, IsValidStoryPage(story_page_id)); + EnforcePrecondition(ScriptDate::DATE_INVALID, ScriptObject::GetCompany() == OWNER_DEITY); + + return (ScriptDate::Date)StoryPage::Get(story_page_id)->date; +} + +/* static */ bool ScriptStoryPage::SetDate(StoryPageID story_page_id, ScriptDate::Date date) +{ + EnforcePrecondition(false, IsValidStoryPage(story_page_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + return ScriptObject::DoCommand(0, story_page_id, date, CMD_SET_STORY_PAGE_DATE, NULL); +} + + /* static */ bool ScriptStoryPage::Show(StoryPageID story_page_id) { EnforcePrecondition(false, IsValidStoryPage(story_page_id)); @@ -125,3 +167,11 @@ return ScriptObject::DoCommand(0, story_page_id, 0, CMD_REMOVE_STORY_PAGE); } +/* static */ bool ScriptStoryPage::RemoveElement(StoryPageElementID story_page_element_id) +{ + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, IsValidStoryPageElement(story_page_element_id)); + + return ScriptObject::DoCommand(0, story_page_element_id, 0, CMD_REMOVE_STORY_PAGE_ELEMENT); +} + diff --git a/src/script/api/script_story_page.hpp b/src/script/api/script_story_page.hpp index d026650be5..c22d4c198e 100644 --- a/src/script/api/script_story_page.hpp +++ b/src/script/api/script_story_page.hpp @@ -13,6 +13,7 @@ #define SCRIPT_STORY_HPP #include "script_company.hpp" +#include "script_date.hpp" #include "../../story_type.h" #include "../../story_base.h" @@ -81,7 +82,7 @@ public: * Create a new story page. * @param company The company to create the story page for, or ScriptCompany::COMPANY_INVALID for all. * @param title Page title (can be either a raw string, a ScriptText object, or null). - * @return The new StoryPageID, or STORY_INVALID if it failed. + * @return The new StoryPageID, or STORY_PAGE_INVALID if it failed. * @pre No ScriptCompanyMode may be in scope. * @pre company == COMPANY_INVALID || ResolveCompanyID(company) != COMPANY_INVALID. */ @@ -93,7 +94,7 @@ public: * @param type Which page element type to create. * @param reference A reference value to the object that is refered to by some page element types. When type is SPET_GOAL, this is the goal ID. When type is SPET_LOCATION, this is the TileIndex. * @param text The body text of page elements that allow custom text. (SPET_TEXT and SPET_LOCATION) - * @return The new StoryPageID, or STORY_INVALID if it failed. + * @return The new StoryPageElementID, or STORY_PAGE_ELEMENT_INVALID if it failed. * @pre No ScriptCompanyMode may be in scope. * @pre IsValidStoryPage(story_page). * @pre (type != SPET_TEXT && type != SPET_LOCATION) || (text != NULL && len(text) != 0). @@ -108,7 +109,7 @@ public: * @param story_page_element_id The page id of the story page which the page element should be appended to. * @param reference A reference value to the object that is refered to by some page element types. See also NewElement. * @param text The body text of page elements that allow custom text. See also NewElement. - * @return The new StoryPageID, or STORY_INVALID if it failed. + * @return True if the action succeeded. * @pre No ScriptCompanyMode may be in scope. * @pre IsValidStoryPage(story_page). * @pre (type != SPET_TEXT && type != SPET_LOCATION) || (text != NULL && len(text) != 0). @@ -118,6 +119,54 @@ public: */ static bool UpdateElement(StoryPageElementID story_page_element_id, uint32 reference, Text *text); + /** + * Get story page sort value. Each page has a sort value that is internally assigned and used + * to sort the pages in the story book. OpenTTD maintains this number so that the sort order + * is perceived. This API exist only so that you can sort ScriptStoryPageList the same order + * as in GUI. You should not use this number for anything else. + * @param story_page_id The story page to get the sort value of. + * @return Page sort value. + */ + static uint32 GetPageSortValue(StoryPageID story_page_id); + + /** + * Get story page element sort value. Each page element has a sort value that is internally + * assigned and used to sort the page elements within a page of the story book. OpenTTD + * maintains this number so that the sort order is perceived. This API exist only so that + * you can sort ScriptStoryPageList the same order as in GUI. You should not use this number + * for anything else. + * @param story_page_element_id The story page element to get the sort value of. + * @return Page element sort value. + */ + static uint32 GetPageElementSortValue(StoryPageElementID story_page_element_id); + + /** + * Get the company which the page belongs to. If the page is global, + * ScriptCompany::COMPANY_INVALID is returned. + * @param story_page_id The story page to get the company for. + * @return owner company or ScriptCompany::COMPANY_INVALID + * @pre IsValidStoryPage(story_page_id). + */ + static ScriptCompany::CompanyID GetCompany(StoryPageID story_page_id); + + /** + * Get the page date which is displayed at the top of each page. + * @param story_page_id The story page to get the date of. + * @return The date + * @pre IsValidStoryPage(story_page_id). + */ + static ScriptDate::Date GetDate(StoryPageID story_page_id); + + /** + * Update date of a story page. The date is shown in the top left of the page + * @param story_page_id The story page to set the date for. + * @param date Date to display at the top of story page or ScriptDate::DATE_INVALID to disable showing date on this page. (also, @see ScriptDate) + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidStoryPage(story_page_id). + */ + static bool SetDate(StoryPageID story_page_id, ScriptDate::Date date); + /** * Update title of a story page. The title is shown in the page selector drop down. * @param story_page_id The story page to update. @@ -140,13 +189,23 @@ public: static bool Show(StoryPageID story_page_id); /** - * Remove a story page from the list. + * Remove a story page and all the page elements + * associated with it. * @param story_page_id The story page to remove. * @return True if the action succeeded. * @pre No ScriptCompanyMode may be in scope. * @pre IsValidStoryPage(story_page_id). */ static bool Remove(StoryPageID story_page_id); + + /** + * Removes a story page element. + * @param story_page_element_id The story page element to remove. + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidStoryPageElement(story_page_element_id). + */ + static bool RemoveElement(StoryPageElementID story_page_element_id); }; #endif /* SCRIPT_STORY_HPP */ diff --git a/src/script/api/script_storypageelementlist.cpp b/src/script/api/script_storypageelementlist.cpp new file mode 100644 index 0000000000..3f1fa4ebbe --- /dev/null +++ b/src/script/api/script_storypageelementlist.cpp @@ -0,0 +1,28 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file script_storypageelementlist.cpp Implementation of ScriptStoryPageElementList and friends. */ + +#include "../../stdafx.h" +#include "script_storypageelementlist.hpp" +#include "../../story_base.h" + +#include "../../safeguards.h" + +ScriptStoryPageElementList::ScriptStoryPageElementList(ScriptStoryPage::StoryPageID story_page_id) +{ + if (!ScriptStoryPage::IsValidStoryPage(story_page_id)) return; + + StoryPageElement *pe; + FOR_ALL_STORY_PAGE_ELEMENTS(pe) { + if (pe->page == story_page_id) { + this->AddItem(pe->index); + } + } +} diff --git a/src/script/api/script_storypageelementlist.hpp b/src/script/api/script_storypageelementlist.hpp new file mode 100644 index 0000000000..6aa2faf2d9 --- /dev/null +++ b/src/script/api/script_storypageelementlist.hpp @@ -0,0 +1,32 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file script_storypageelementlist.hpp List all story page elements. */ + +#ifndef SCRIPT_STORYPAGEELEMENTLIST_HPP +#define SCRIPT_STORYPAGEELEMENTLIST_HPP + +#include "script_list.hpp" +#include "script_company.hpp" +#include "script_story_page.hpp" + +/** + * Create a list of all story page elements. + * @api game + * @ingroup ScriptList + */ +class ScriptStoryPageElementList : public ScriptList { +public: + /** + * @param story_page_id The page id of the story page of which all page elements should be included in the list. + */ + ScriptStoryPageElementList(ScriptStoryPage::StoryPageID story_page_id); +}; + +#endif /* SCRIPT_STORYPAGEELEMENTLIST_HPP */ diff --git a/src/script/api/script_storypagelist.cpp b/src/script/api/script_storypagelist.cpp new file mode 100644 index 0000000000..fc32e80a37 --- /dev/null +++ b/src/script/api/script_storypagelist.cpp @@ -0,0 +1,30 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file script_storypagelist.cpp Implementation of ScriptStoryPageList and friends. */ + +#include "../../stdafx.h" +#include "script_storypagelist.hpp" +#include "script_story_page.hpp" +#include "../../story_base.h" + +#include "../../safeguards.h" + +ScriptStoryPageList::ScriptStoryPageList(ScriptCompany::CompanyID company) +{ + uint8 c = company; + if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; + + StoryPage *p; + FOR_ALL_STORY_PAGES(p) { + if (p->company == c || p->company == INVALID_COMPANY) { + this->AddItem(p->index); + } + } +} diff --git a/src/script/api/script_storypagelist.hpp b/src/script/api/script_storypagelist.hpp new file mode 100644 index 0000000000..7aa3389f32 --- /dev/null +++ b/src/script/api/script_storypagelist.hpp @@ -0,0 +1,31 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file script_storypagelist.hpp List all story pages. */ + +#ifndef SCRIPT_STORYPAGELIST_HPP +#define SCRIPT_STORYPAGELIST_HPP + +#include "script_list.hpp" +#include "script_company.hpp" + +/** + * Create a list of all story pages. + * @api game + * @ingroup ScriptList + */ +class ScriptStoryPageList : public ScriptList { +public: + /** + * @param company The company to list story pages for, or ScriptCompany::COMPANY_INVALID to only show global pages. Global pages are always included independent of this parameter. + */ + ScriptStoryPageList(ScriptCompany::CompanyID company); +}; + +#endif /* SCRIPT_STORYPAGELIST_HPP */ diff --git a/src/script/api/script_subsidy.cpp b/src/script/api/script_subsidy.cpp index 8ec074d4d0..640f7ab0a0 100644 --- a/src/script/api/script_subsidy.cpp +++ b/src/script/api/script_subsidy.cpp @@ -18,6 +18,8 @@ #include "../../subsidy_base.h" #include "../../station_base.h" +#include "../../safeguards.h" + /* static */ bool ScriptSubsidy::IsValidSubsidy(SubsidyID subsidy_id) { return ::Subsidy::IsValidID(subsidy_id); @@ -48,9 +50,9 @@ return (ScriptCompany::CompanyID)((byte)::Subsidy::Get(subsidy_id)->awarded); } -/* static */ int32 ScriptSubsidy::GetExpireDate(SubsidyID subsidy_id) +/* static */ ScriptDate::Date ScriptSubsidy::GetExpireDate(SubsidyID subsidy_id) { - if (!IsValidSubsidy(subsidy_id)) return -1; + if (!IsValidSubsidy(subsidy_id)) return ScriptDate::DATE_INVALID; int year = ScriptDate::GetYear(ScriptDate::GetCurrentDate()); int month = ScriptDate::GetMonth(ScriptDate::GetCurrentDate()); diff --git a/src/script/api/script_subsidy.hpp b/src/script/api/script_subsidy.hpp index 3069ad918f..16a6794409 100644 --- a/src/script/api/script_subsidy.hpp +++ b/src/script/api/script_subsidy.hpp @@ -13,6 +13,7 @@ #define SCRIPT_SUBSIDY_HPP #include "script_company.hpp" +#include "script_date.hpp" /** * Class that handles all subsidy related functions. @@ -83,7 +84,7 @@ public: * @note The return value of this function will change if the subsidy is * awarded. */ - static int32 GetExpireDate(SubsidyID subsidy_id); + static ScriptDate::Date GetExpireDate(SubsidyID subsidy_id); /** * Get the cargo type that has to be transported in order to be awarded this diff --git a/src/script/api/script_subsidylist.cpp b/src/script/api/script_subsidylist.cpp index 68644846f0..fd7d947799 100644 --- a/src/script/api/script_subsidylist.cpp +++ b/src/script/api/script_subsidylist.cpp @@ -13,6 +13,8 @@ #include "script_subsidylist.hpp" #include "../../subsidy_base.h" +#include "../../safeguards.h" + ScriptSubsidyList::ScriptSubsidyList() { const Subsidy *s; diff --git a/src/script/api/script_testmode.cpp b/src/script/api/script_testmode.cpp index 46cc15e054..37f296de0c 100644 --- a/src/script/api/script_testmode.cpp +++ b/src/script/api/script_testmode.cpp @@ -14,6 +14,8 @@ #include "../script_instance.hpp" #include "../script_fatalerror.hpp" +#include "../../safeguards.h" + bool ScriptTestMode::ModeProc() { /* In test mode we only return 'false', telling the DoCommand it diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index f87b2e8b28..e692be0ae2 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -17,18 +17,30 @@ #include "table/strings.h" +#include "../../safeguards.h" + +RawText::RawText(const char *text) : text(stredup(text)) +{ +} + +RawText::~RawText() +{ + free(this->text); +} + + ScriptText::ScriptText(HSQUIRRELVM vm) : ZeroedMemoryAllocator() { int nparam = sq_gettop(vm) - 1; if (nparam < 1) { - throw sq_throwerror(vm, _SC("You need to pass at least a StringID to the constructor")); + throw sq_throwerror(vm, "You need to pass at least a StringID to the constructor"); } /* First resolve the StringID. */ SQInteger sqstring; if (SQ_FAILED(sq_getinteger(vm, 2, &sqstring))) { - throw sq_throwerror(vm, _SC("First argument must be a valid StringID")); + throw sq_throwerror(vm, "First argument must be a valid StringID"); } this->string = sqstring; @@ -39,7 +51,7 @@ ScriptText::ScriptText(HSQUIRRELVM vm) : if (SQ_FAILED(this->_SetParam(i, vm))) { this->~ScriptText(); - throw sq_throwerror(vm, _SC("Invalid parameter")); + throw sq_throwerror(vm, "Invalid parameter"); } /* Pop the parameter again. */ @@ -71,7 +83,7 @@ SQInteger ScriptText::_SetParam(int parameter, HSQUIRRELVM vm) const SQChar *value; sq_getstring(vm, -1, &value); - this->params[parameter] = strdup(SQ2OTTD(value)); + this->params[parameter] = stredup(value); ValidateString(this->params[parameter]); break; } @@ -92,7 +104,7 @@ SQInteger ScriptText::_SetParam(int parameter, HSQUIRRELVM vm) /* Validate if it is a GSText instance */ sq_pushroottable(vm); - sq_pushstring(vm, _SC("GSText"), -1); + sq_pushstring(vm, "GSText", -1); sq_get(vm, -2); sq_pushobject(vm, instance); if (sq_instanceof(vm) != SQTrue) return SQ_ERROR; @@ -145,9 +157,8 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm) int32 k; if (sq_gettype(vm, 2) == OT_STRING) { - const SQChar *key; - sq_getstring(vm, 2, &key); - const char *key_string = SQ2OTTD(key); + const SQChar *key_string; + sq_getstring(vm, 2, &key_string); ValidateString(key_string); if (strncmp(key_string, "param_", 6) != 0 || strlen(key_string) > 8) return SQ_ERROR; @@ -190,7 +201,7 @@ char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count) p = this->paramt[i]->_GetEncodedText(p, lastofp, param_count); continue; } - p += seprintf(p, lastofp,":%X", (uint32)this->parami[i]); + p += seprintf(p, lastofp,":" OTTD_PRINTFHEX64, this->parami[i]); param_count++; } diff --git a/src/script/api/script_text.hpp b/src/script/api/script_text.hpp index 9b75e21c52..21bf3929fb 100644 --- a/src/script/api/script_text.hpp +++ b/src/script/api/script_text.hpp @@ -42,9 +42,8 @@ public: */ class RawText : public Text { public: - RawText(const char *text) : - text(strdup(text)) {} - ~RawText() { free(this->text); } + RawText(const char *text); + ~RawText(); /* virtual */ const char *GetEncodedText() { return this->text; } private: @@ -130,7 +129,7 @@ public: private: StringID string; char *params[SCRIPT_TEXT_MAX_PARAMETERS]; - int parami[SCRIPT_TEXT_MAX_PARAMETERS]; + int64 parami[SCRIPT_TEXT_MAX_PARAMETERS]; ScriptText *paramt[SCRIPT_TEXT_MAX_PARAMETERS]; int paramc; diff --git a/src/script/api/script_tile.cpp b/src/script/api/script_tile.cpp index b14bea649e..db9220acd6 100644 --- a/src/script/api/script_tile.cpp +++ b/src/script/api/script_tile.cpp @@ -20,6 +20,8 @@ #include "../../town.h" #include "../../landscape.h" +#include "../../safeguards.h" + /* static */ bool ScriptTile::IsBuildable(TileIndex tile) { if (!::IsValidTile(tile)) return false; @@ -43,10 +45,11 @@ /* static */ bool ScriptTile::IsBuildableRectangle(TileIndex tile, uint width, uint height) { - uint tx, ty; + /* Check whether we can extract valid X and Y */ + if (!::IsValidTile(tile)) return false; - tx = ScriptMap::GetTileX(tile); - ty = ScriptMap::GetTileY(tile); + uint tx = ScriptMap::GetTileX(tile); + uint ty = ScriptMap::GetTileY(tile); for (uint x = tx; x < width + tx; x++) { for (uint y = ty; y < height + ty; y++) { diff --git a/src/script/api/script_tilelist.cpp b/src/script/api/script_tilelist.cpp index d4fe9f9773..933a92c4cb 100644 --- a/src/script/api/script_tilelist.cpp +++ b/src/script/api/script_tilelist.cpp @@ -15,6 +15,8 @@ #include "../../industry.h" #include "../../station_base.h" +#include "../../safeguards.h" + void ScriptTileList::AddRectangle(TileIndex t1, TileIndex t2) { if (!::IsValidTile(t1)) return; diff --git a/src/script/api/script_tilelist.hpp b/src/script/api/script_tilelist.hpp index 74c3afa52f..788432f783 100644 --- a/src/script/api/script_tilelist.hpp +++ b/src/script/api/script_tilelist.hpp @@ -65,9 +65,10 @@ class ScriptTileList_IndustryAccepting : public ScriptTileList { public: /** * @param industry_id The industry to create the ScriptTileList around. - * @param radius The radius of the station you will be using. + * @param radius The coverage radius of the station type you will be using. * @pre ScriptIndustry::IsValidIndustry(industry_id). * @pre radius > 0. + * @note A station part built on any of the returned tiles will give you coverage. */ ScriptTileList_IndustryAccepting(IndustryID industry_id, int radius); }; @@ -82,9 +83,10 @@ class ScriptTileList_IndustryProducing : public ScriptTileList { public: /** * @param industry_id The industry to create the ScriptTileList around. - * @param radius The radius of the station you will be using. + * @param radius The coverage radius of the station type you will be using. * @pre ScriptIndustry::IsValidIndustry(industry_id). * @pre radius > 0. + * @note A station part built on any of the returned tiles will give you acceptance. */ ScriptTileList_IndustryProducing(IndustryID industry_id, int radius); }; diff --git a/src/script/api/script_town.cpp b/src/script/api/script_town.cpp index b64adab1ac..d81704ae38 100644 --- a/src/script/api/script_town.cpp +++ b/src/script/api/script_town.cpp @@ -14,12 +14,15 @@ #include "script_map.hpp" #include "script_error.hpp" #include "../../town.h" +#include "../../townname_func.h" #include "../../string_func.h" #include "../../strings_func.h" #include "../../station_base.h" #include "../../landscape.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ int32 ScriptTown::GetTownCount() { return (int32)::Town::GetNumItems(); @@ -38,6 +41,21 @@ return GetString(STR_TOWN_NAME); } +/* static */ bool ScriptTown::SetName(TownID town_id, Text *name) +{ + CCountedPtr counter(name); + + const char *text = NULL; + if (name != NULL) { + text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); + EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_TOWN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); + } + EnforcePrecondition(false, IsValidTown(town_id)); + + return ScriptObject::DoCommand(0, town_id, 0, CMD_RENAME_TOWN, text); +} + /* static */ bool ScriptTown::SetText(TownID town_id, Text *text) { CCountedPtr counter(text); @@ -138,22 +156,37 @@ } } -/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint16 days_between_town_growth) +/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint32 days_between_town_growth) { - days_between_town_growth = days_between_town_growth * DAY_TICKS / TOWN_GROWTH_TICKS; - EnforcePrecondition(false, IsValidTown(town_id)); - EnforcePrecondition(false, (days_between_town_growth & TOWN_GROW_RATE_CUSTOM) == 0); + + switch (days_between_town_growth) { + case TOWN_GROWTH_NORMAL: + days_between_town_growth = 0; + break; + + case TOWN_GROWTH_NONE: + days_between_town_growth = TOWN_GROW_RATE_CUSTOM_NONE; + break; + + default: + days_between_town_growth = days_between_town_growth * DAY_TICKS / TOWN_GROWTH_TICKS; + EnforcePrecondition(false, days_between_town_growth < TOWN_GROW_RATE_CUSTOM); + if (days_between_town_growth == 0) days_between_town_growth = 1; // as fast as possible + break; + } return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, days_between_town_growth, CMD_TOWN_GROWTH_RATE); } /* static */ int32 ScriptTown::GetGrowthRate(TownID town_id) { - if (!IsValidTown(town_id)) return false; + if (!IsValidTown(town_id)) return -1; const Town *t = ::Town::Get(town_id); + if (t->growth_rate == TOWN_GROW_RATE_CUSTOM_NONE) return TOWN_GROWTH_NONE; + return ((t->growth_rate & ~TOWN_GROW_RATE_CUSTOM) * TOWN_GROWTH_TICKS + DAY_TICKS) / DAY_TICKS; } @@ -197,6 +230,13 @@ return ::Town::Get(town_id)->road_build_months; } +/* static */ int ScriptTown::GetFundBuildingsDuration(TownID town_id) +{ + if (!IsValidTown(town_id)) return -1; + + return ::Town::Get(town_id)->fund_buildings_months; +} + /* static */ ScriptCompany::CompanyID ScriptTown::GetExclusiveRightsCompany(TownID town_id) { if (ScriptObject::GetCompany() == OWNER_DEITY) return ScriptCompany::COMPANY_INVALID; @@ -238,6 +278,36 @@ return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, houses, CMD_EXPAND_TOWN); } +/* static */ bool ScriptTown::FoundTown(TileIndex tile, TownSize size, bool city, RoadLayout layout, Text *name) +{ + CCountedPtr counter(name); + + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY || _settings_game.economy.found_town != TF_FORBIDDEN); + EnforcePrecondition(false, ::IsValidTile(tile)); + EnforcePrecondition(false, size == TOWN_SIZE_SMALL || size == TOWN_SIZE_MEDIUM || size == TOWN_SIZE_LARGE) + EnforcePrecondition(false, size != TOWN_SIZE_LARGE || ScriptObject::GetCompany() == OWNER_DEITY); + if (ScriptObject::GetCompany() == OWNER_DEITY || _settings_game.economy.found_town == TF_CUSTOM_LAYOUT) { + EnforcePrecondition(false, layout == ROAD_LAYOUT_ORIGINAL || layout == ROAD_LAYOUT_BETTER_ROADS || layout == ROAD_LAYOUT_2x2 || layout == ROAD_LAYOUT_3x3); + } else { + /* The layout parameter is ignored for AIs when custom layouts is disabled. */ + layout = (RoadLayout) (byte)_settings_game.economy.town_layout; + } + + const char *text = NULL; + if (name != NULL) { + text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); + EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_TOWN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); + } + uint32 townnameparts; + if (!GenerateTownName(&townnameparts)) { + ScriptObject::SetLastError(ScriptError::ERR_NAME_IS_NOT_UNIQUE); + return false; + } + + return ScriptObject::DoCommand(tile, size | (city ? 1 << 2 : 0) | layout << 3, townnameparts, CMD_FOUND_TOWN, text); +} + /* static */ ScriptTown::TownRating ScriptTown::GetRating(TownID town_id, ScriptCompany::CompanyID company_id) { if (!IsValidTown(town_id)) return TOWN_RATING_INVALID; diff --git a/src/script/api/script_town.hpp b/src/script/api/script_town.hpp index 1c544ffbed..03868e67a4 100644 --- a/src/script/api/script_town.hpp +++ b/src/script/api/script_town.hpp @@ -105,6 +105,25 @@ public: ROAD_LAYOUT_INVALID = -1, ///< The layout for invalid towns. }; + /** + * Possible town construction sizes. + */ + enum TownSize { + TOWN_SIZE_SMALL = ::TSZ_SMALL, ///< Small town. + TOWN_SIZE_MEDIUM = ::TSZ_MEDIUM, ///< Medium town. + TOWN_SIZE_LARGE = ::TSZ_LARGE, ///< Large town. + + TOWN_SIZE_INVALID = -1, ///< Invalid town size. + }; + + /** + * Special values for SetGrowthRate. + */ + enum TownGrowth { + TOWN_GROWTH_NONE = 0xFFFF, ///< Town does not grow at all. + TOWN_GROWTH_NORMAL = 0x10000, ///< Use default town growth algorithm instead of custom growth rate. + }; + /** * Gets the number of towns. * @return The number of towns. @@ -126,6 +145,16 @@ public: */ static char *GetName(TownID town_id); + /** + * Rename a town. + * @param town_id The town to rename + * @param name The new name of the town. If NULL or an empty string is passed, the town name will be reset to the default name. + * @pre IsValidTown(town_id). + * @return True if the action succeeded. + * @api -ai + */ + static bool SetName(TownID town_id, Text *name); + /** * Set the custom text of a town, shown in the GUI. * @param town_id The town to set the custom text of. @@ -203,10 +232,10 @@ public: /** * Set the goal of a cargo for this town. * @param town_id The index of the town. - * @param towneffect_id The index of the cargo. + * @param towneffect_id The index of the towneffect. * @param goal The new goal. * @pre IsValidTown(town_id). - * @pre ScriptCargo::IsValidTownEffect(cargo_id). + * @pre ScriptCargo::IsValidTownEffect(towneffect_id). * @return True if the action succeeded. * @api -ai */ @@ -218,7 +247,7 @@ public: * @param town_id The index of the town. * @param towneffect_id The index of the towneffect. * @pre IsValidTown(town_id). - * @pre ScriptCargo::IsValidTownEffect(cargo_id). + * @pre ScriptCargo::IsValidTownEffect(towneffect_id). * @return The goal of the cargo. * @note Goals can change over time. For example with a changing snowline, or * with a growing town. @@ -228,19 +257,22 @@ public: /** * Set the amount of days between town growth. * @param town_id The index of the town. - * @param days_between_town_growth The amount of days between town growth. + * @param days_between_town_growth The amount of days between town growth, TOWN_GROWTH_NONE or TOWN_GROWTH_NORMAL. * @pre IsValidTown(town_id). + * @pre days_between_town_growth <= 30000 || days_between_town_growth == TOWN_GROWTH_NONE || days_between_town_growth == TOWN_GROWTH_NORMAL. * @return True if the action succeeded. - * @note If 'Fund Building' and 'economy.town_growth_rate' is active, the game will often set a new GrowthRate. + * @note Even when setting a growth rate, towns only grow when the conditions for growth (SetCargoCoal) are met, + * and the game settings (economy.town_growth_rate) allow town growth at all. + * @note When changing the growth rate, the relative progress is preserved and scaled to the new rate. * @api -ai */ - static bool SetGrowthRate(TownID town_id, uint16 days_between_town_growth); + static bool SetGrowthRate(TownID town_id, uint32 days_between_town_growth); /** * Get the amount of days between town growth. * @param town_id The index of the town. * @pre IsValidTown(town_id). - * @return True if the action succeeded. + * @return Amount of days between town growth, or TOWN_GROWTH_NONE. * @note This function does not indicate when it will grow next. It only tells you the time between growths. */ static int32 GetGrowthRate(TownID town_id); @@ -302,6 +334,15 @@ public: */ static int GetRoadReworkDuration(TownID town_id); + /** + * Find out how long new buildings are still being funded in a town. + * @param town_id The town to check. + * @pre IsValidTown(town_id). + * @return The number of months building construction is still funded. + * The value 0 means that there is currently no funding. + */ + static int GetFundBuildingsDuration(TownID town_id); + /** * Find out which company currently has the exclusive rights of this town. * @param town_id The town to check. @@ -355,6 +396,25 @@ public: */ static bool ExpandTown(TownID town_id, int houses); + /** + * Found a new town. + * @param tile The location of the new town. + * @param size The town size of the new town. + * @param city True if the new town should be a city. + * @param layout The town layout of the new town. + * @param name The name of the new town. Pass NULL to use a random town name. + * @game @pre no company mode in scope || ScriptSettings.GetValue("economy.found_town") != 0. + * @ai @pre ScriptSettings.GetValue("economy.found_town") != 0. + * @game @pre no company mode in scope || size != TOWN_SIZE_LARGE. + * @ai @pre size != TOWN_SIZE_LARGE. + * @pre size != TOWN_SIZE_INVALID. + * @pre layout != ROAD_LAYOUT_INVALID. + * @return True if the action succeeded. + * @game @note Companies are restricted by the advanced setting that controls if funding towns is allowed or not. If custom road layout is forbidden and there is a company mode in scope, the layout parameter will be ignored. + * @ai @note AIs are restricted by the advanced setting that controls if funding towns is allowed or not. If custom road layout is forbidden, the layout parameter will be ignored. + */ + static bool FoundTown(TileIndex tile, TownSize size, bool city, RoadLayout layout, Text *name); + /** * Get the rating of a company within a town. * @param town_id The town to get the rating for. diff --git a/src/script/api/script_townlist.cpp b/src/script/api/script_townlist.cpp index 33a3fc0703..a2e12febe1 100644 --- a/src/script/api/script_townlist.cpp +++ b/src/script/api/script_townlist.cpp @@ -13,6 +13,8 @@ #include "script_townlist.hpp" #include "../../town.h" +#include "../../safeguards.h" + ScriptTownList::ScriptTownList() { Town *t; diff --git a/src/script/api/script_tunnel.cpp b/src/script/api/script_tunnel.cpp index cf228e4152..7b891f28d0 100644 --- a/src/script/api/script_tunnel.cpp +++ b/src/script/api/script_tunnel.cpp @@ -15,6 +15,8 @@ #include "../script_instance.hpp" #include "../../tunnel_map.h" +#include "../../safeguards.h" + /* static */ bool ScriptTunnel::IsTunnelTile(TileIndex tile) { if (!::IsValidTile(tile)) return false; @@ -82,6 +84,7 @@ static void _DoCommandReturnBuildTunnel1(class ScriptInstance *instance) EnforcePrecondition(false, ::IsValidTile(start)); EnforcePrecondition(false, vehicle_type == ScriptVehicle::VT_RAIL || vehicle_type == ScriptVehicle::VT_ROAD); EnforcePrecondition(false, vehicle_type != ScriptVehicle::VT_RAIL || ScriptRail::IsRailTypeAvailable(ScriptRail::GetCurrentRailType())); + EnforcePrecondition(false, vehicle_type != ScriptVehicle::VT_ROAD || ScriptRoad::IsRoadTypeAvailable(ScriptRoad::GetCurrentRoadType())); EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY || vehicle_type == ScriptVehicle::VT_ROAD); uint type = 0; diff --git a/src/script/api/script_tunnel.hpp b/src/script/api/script_tunnel.hpp index 9911361f77..74fdaabc55 100644 --- a/src/script/api/script_tunnel.hpp +++ b/src/script/api/script_tunnel.hpp @@ -85,8 +85,8 @@ public: * @param start Where to start the tunnel. * @param vehicle_type The vehicle-type of tunnel to build. * @pre ScriptMap::IsValidTile(start). - * @pre vehicle_type == ScriptVehicle::VT_ROAD || (vehicle_type == ScriptVehicle::VT_RAIL && - * ScriptRail::IsRailTypeAvailable(ScriptRail::GetCurrentRailType())). + * @pre (vehicle_type == ScriptVehicle::VT_ROAD && ScriptRoad::IsRoadTypeAvailable(ScriptRoad::GetCurrentRoadType())) || + * (vehicle_type == ScriptVehicle::VT_RAIL && ScriptRail::IsRailTypeAvailable(ScriptRail::GetCurrentRailType())). * @game @pre Outside CompanyMode: vehicle_type == ScriptVehicle::VT_ROAD. * @exception ScriptError::ERR_AREA_NOT_CLEAR * @exception ScriptTunnel::ERR_TUNNEL_CANNOT_BUILD_ON_WATER diff --git a/src/script/api/script_vehicle.cpp b/src/script/api/script_vehicle.cpp index 23003ca26e..ca841f7557 100644 --- a/src/script/api/script_vehicle.cpp +++ b/src/script/api/script_vehicle.cpp @@ -24,6 +24,8 @@ #include "../../aircraft.h" #include "table/strings.h" +#include "../../safeguards.h" + /* static */ bool ScriptVehicle::IsValidVehicle(VehicleID vehicle_id) { const Vehicle *v = ::Vehicle::GetIfValid(vehicle_id); diff --git a/src/script/api/script_vehiclelist.cpp b/src/script/api/script_vehiclelist.cpp index 3017266fab..625f0f8c4f 100644 --- a/src/script/api/script_vehiclelist.cpp +++ b/src/script/api/script_vehiclelist.cpp @@ -17,6 +17,8 @@ #include "../../depot_map.h" #include "../../vehicle_base.h" +#include "../../safeguards.h" + ScriptVehicleList::ScriptVehicleList() { const Vehicle *v; diff --git a/src/script/api/script_viewport.cpp b/src/script/api/script_viewport.cpp index 139edb0297..737e7e68da 100644 --- a/src/script/api/script_viewport.cpp +++ b/src/script/api/script_viewport.cpp @@ -15,6 +15,8 @@ #include "script_map.hpp" #include "../../viewport_func.h" +#include "../../safeguards.h" + /* static */ void ScriptViewport::ScrollTo(TileIndex tile) { if (ScriptGame::IsMultiplayer()) return; diff --git a/src/script/api/script_waypoint.cpp b/src/script/api/script_waypoint.cpp index a10b3376be..91733a38e8 100644 --- a/src/script/api/script_waypoint.cpp +++ b/src/script/api/script_waypoint.cpp @@ -15,6 +15,8 @@ #include "script_marine.hpp" #include "../../waypoint_base.h" +#include "../../safeguards.h" + /* static */ bool ScriptWaypoint::IsValidWaypoint(StationID waypoint_id) { const Waypoint *wp = ::Waypoint::GetIfValid(waypoint_id); diff --git a/src/script/api/script_waypointlist.cpp b/src/script/api/script_waypointlist.cpp index b32b3e8b37..dd641a6848 100644 --- a/src/script/api/script_waypointlist.cpp +++ b/src/script/api/script_waypointlist.cpp @@ -15,6 +15,8 @@ #include "../../vehicle_base.h" #include "../../waypoint_base.h" +#include "../../safeguards.h" + ScriptWaypointList::ScriptWaypointList(ScriptWaypoint::WaypointType waypoint_type) { const Waypoint *wp; diff --git a/src/script/api/script_window.cpp b/src/script/api/script_window.cpp index 086e59f639..1252f0fc7e 100644 --- a/src/script/api/script_window.cpp +++ b/src/script/api/script_window.cpp @@ -15,6 +15,8 @@ #include "../../window_func.h" #include "../../window_gui.h" +#include "../../safeguards.h" + /* static */ void ScriptWindow::Close(WindowClass window, uint32 number) { if (ScriptGame::IsMultiplayer()) return; diff --git a/src/script/api/script_window.hpp b/src/script/api/script_window.hpp index 391d3a4e4b..58e114734e 100644 --- a/src/script/api/script_window.hpp +++ b/src/script/api/script_window.hpp @@ -529,7 +529,7 @@ public: /** * Generate landscape (newgame); %Window numbers: * - GLWM_SCENARIO = #CreateScenarioWidgets - * - #GenenerateLandscapeWindowMode = #GenerateLandscapeWidgets + * - #GenerateLandscapeWindowMode = #GenerateLandscapeWidgets */ WC_GENERATE_LANDSCAPE = ::WC_GENERATE_LANDSCAPE, @@ -753,11 +753,17 @@ public: WC_SPRITE_ALIGNER = ::WC_SPRITE_ALIGNER, /** - * Linkgraph legend; Window numbers: + * Linkgraph legend; %Window numbers: * - 0 = #LinkGraphWidgets */ WC_LINKGRAPH_LEGEND = ::WC_LINKGRAPH_LEGEND, + /** + * Save preset; %Window numbers: + * - 0 = #SavePresetWidgets + */ + WC_SAVE_PRESET = ::WC_SAVE_PRESET, + WC_INVALID = ::WC_INVALID, ///< Invalid window. }; @@ -917,6 +923,11 @@ public: enum ReplaceVehicleWidgets { WID_RV_CAPTION = ::WID_RV_CAPTION, ///< Caption of the window. + /* Sort dropdown at the right. */ + WID_RV_SORT_ASCENDING_DESCENDING = ::WID_RV_SORT_ASCENDING_DESCENDING, ///< Ascending/descending sort order button. + WID_RV_SHOW_HIDDEN_ENGINES = ::WID_RV_SHOW_HIDDEN_ENGINES, ///< Toggle whether to display the hidden vehicles. + WID_RV_SORT_DROPDOWN = ::WID_RV_SORT_DROPDOWN, ///< Dropdown for the sort criteria. + /* Left and right matrix + details. */ WID_RV_LEFT_MATRIX = ::WID_RV_LEFT_MATRIX, ///< The matrix on the left. WID_RV_LEFT_SCROLLBAR = ::WID_RV_LEFT_SCROLLBAR, ///< The scrollbar for the matrix on the left. @@ -965,13 +976,15 @@ public: /** Widgets of the #BuildVehicleWindow class. */ enum BuildVehicleWidgets { WID_BV_CAPTION = ::WID_BV_CAPTION, ///< Caption of window. - WID_BV_SORT_ASSENDING_DESCENDING = ::WID_BV_SORT_ASSENDING_DESCENDING, ///< Sort direction. + WID_BV_SORT_ASCENDING_DESCENDING = ::WID_BV_SORT_ASCENDING_DESCENDING, ///< Sort direction. WID_BV_SORT_DROPDOWN = ::WID_BV_SORT_DROPDOWN, ///< Criteria of sorting dropdown. WID_BV_CARGO_FILTER_DROPDOWN = ::WID_BV_CARGO_FILTER_DROPDOWN, ///< Cargo filter dropdown. + WID_BV_SHOW_HIDDEN_ENGINES = ::WID_BV_SHOW_HIDDEN_ENGINES, ///< Toggle whether to display the hidden vehicles. WID_BV_LIST = ::WID_BV_LIST, ///< List of vehicles. WID_BV_SCROLLBAR = ::WID_BV_SCROLLBAR, ///< Scrollbar of list. WID_BV_PANEL = ::WID_BV_PANEL, ///< Button panel. WID_BV_BUILD = ::WID_BV_BUILD, ///< Build panel. + WID_BV_SHOW_HIDE = ::WID_BV_SHOW_HIDE, ///< Button to hide or show the selected engine. WID_BV_BUILD_SEL = ::WID_BV_BUILD_SEL, ///< Build button. WID_BV_RENAME = ::WID_BV_RENAME, ///< Rename button. }; @@ -1278,11 +1291,12 @@ public: WID_GL_TOWN_PULLDOWN = ::WID_GL_TOWN_PULLDOWN, ///< Dropdown 'No. of towns'. WID_GL_INDUSTRY_PULLDOWN = ::WID_GL_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries'. - WID_GL_RANDOM_EDITBOX = ::WID_GL_RANDOM_EDITBOX, ///< 'Random seed' editbox. - WID_GL_RANDOM_BUTTON = ::WID_GL_RANDOM_BUTTON, ///< 'Randomise' button. - WID_GL_GENERATE_BUTTON = ::WID_GL_GENERATE_BUTTON, ///< 'Generate' button. + WID_GL_MAX_HEIGHTLEVEL_DOWN = ::WID_GL_MAX_HEIGHTLEVEL_DOWN, ///< Decrease max. heightlevel + WID_GL_MAX_HEIGHTLEVEL_TEXT = ::WID_GL_MAX_HEIGHTLEVEL_TEXT, ///< Max. heightlevel + WID_GL_MAX_HEIGHTLEVEL_UP = ::WID_GL_MAX_HEIGHTLEVEL_UP, ///< Increase max. heightlevel + WID_GL_START_DATE_DOWN = ::WID_GL_START_DATE_DOWN, ///< Decrease start year. WID_GL_START_DATE_TEXT = ::WID_GL_START_DATE_TEXT, ///< Start year. WID_GL_START_DATE_UP = ::WID_GL_START_DATE_UP, ///< Increase start year. @@ -1558,6 +1572,7 @@ public: /** Widgets of the #TextfileWindow class. */ enum TextfileWidgets { WID_TF_CAPTION = ::WID_TF_CAPTION, ///< The caption of the window. + WID_TF_WRAPTEXT = ::WID_TF_WRAPTEXT, ///< Whether or not to wrap the text. WID_TF_BACKGROUND = ::WID_TF_BACKGROUND, ///< Panel to draw the textfile on. WID_TF_VSCROLLBAR = ::WID_TF_VSCROLLBAR, ///< Vertical scrollbar to scroll through the textfile up-and-down. WID_TF_HSCROLLBAR = ::WID_TF_HSCROLLBAR, ///< Horizontal scrollbar to scroll through the textfile left-to-right. @@ -1767,6 +1782,9 @@ public: enum NewGRFInspectWidgets { WID_NGRFI_CAPTION = ::WID_NGRFI_CAPTION, ///< The caption bar of course. WID_NGRFI_PARENT = ::WID_NGRFI_PARENT, ///< Inspect the parent. + WID_NGRFI_VEH_PREV = ::WID_NGRFI_VEH_PREV, ///< Go to previous vehicle in chain. + WID_NGRFI_VEH_NEXT = ::WID_NGRFI_VEH_NEXT, ///< Go to next vehicle in chain. + WID_NGRFI_VEH_CHAIN = ::WID_NGRFI_VEH_CHAIN, ///< Display for vehicle chain. WID_NGRFI_MAINPANEL = ::WID_NGRFI_MAINPANEL, ///< Panel widget containing the actual data. WID_NGRFI_SCROLLBAR = ::WID_NGRFI_SCROLLBAR, ///< Scrollbar. }; @@ -1782,10 +1800,12 @@ public: WID_SA_RIGHT = ::WID_SA_RIGHT, ///< Move the sprite to the right. WID_SA_DOWN = ::WID_SA_DOWN, ///< Move the sprite down. WID_SA_SPRITE = ::WID_SA_SPRITE, ///< The actual sprite. - WID_SA_OFFSETS = ::WID_SA_OFFSETS, ///< The sprite offsets. + WID_SA_OFFSETS_ABS = ::WID_SA_OFFSETS_ABS, ///< The sprite offsets (absolute). + WID_SA_OFFSETS_REL = ::WID_SA_OFFSETS_REL, ///< The sprite offsets (relative). WID_SA_PICKER = ::WID_SA_PICKER, ///< Sprite picker. WID_SA_LIST = ::WID_SA_LIST, ///< Queried sprite list. WID_SA_SCROLLBAR = ::WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_RESET_REL = ::WID_SA_RESET_REL, ///< Reset relative sprite offset }; /* automatically generated from ../../widgets/newgrf_widget.h */ @@ -1813,6 +1833,7 @@ public: WID_NS_REMOVE = ::WID_NS_REMOVE, ///< Remove NewGRF from active list. WID_NS_MOVE_UP = ::WID_NS_MOVE_UP, ///< Move NewGRF up in active list. WID_NS_MOVE_DOWN = ::WID_NS_MOVE_DOWN, ///< Move NewGRF down in active list. + WID_NS_UPGRADE = ::WID_NS_UPGRADE, ///< Upgrade NewGRFs that have a newer version available. WID_NS_FILTER = ::WID_NS_FILTER, ///< Filter list of available NewGRFs. WID_NS_FILE_LIST = ::WID_NS_FILE_LIST, ///< List window of active NewGRFs. WID_NS_SCROLLBAR = ::WID_NS_SCROLLBAR, ///< Scrollbar for active NewGRF list. @@ -1834,6 +1855,15 @@ public: WID_NS_SHOW_APPLY = ::WID_NS_SHOW_APPLY, ///< Select display of the buttons below the 'details'. }; + /** Widgets of the #SavePresetWindow class. */ + enum SavePresetWidgets { + WID_SVP_PRESET_LIST = ::WID_SVP_PRESET_LIST, ///< List with available preset names. + WID_SVP_SCROLLBAR = ::WID_SVP_SCROLLBAR, ///< Scrollbar for the list available preset names. + WID_SVP_EDITBOX = ::WID_SVP_EDITBOX, ///< Edit box for changing the preset name. + WID_SVP_CANCEL = ::WID_SVP_CANCEL, ///< Button to cancel saving the preset. + WID_SVP_SAVE = ::WID_SVP_SAVE, ///< Button to save the preset. + }; + /** Widgets of the #ScanProgressWindow class. */ enum ScanProgressWidgets { WID_SP_PROGRESS_BAR = ::WID_SP_PROGRESS_BAR, ///< Simple progress bar. @@ -2100,7 +2130,7 @@ public: WID_GO_LANG_DROPDOWN = ::WID_GO_LANG_DROPDOWN, ///< Language dropdown. WID_GO_RESOLUTION_DROPDOWN = ::WID_GO_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution. WID_GO_FULLSCREEN_BUTTON = ::WID_GO_FULLSCREEN_BUTTON, ///< Toggle fullscreen. - WID_GO_SCREENSHOT_DROPDOWN = ::WID_GO_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!. + WID_GO_GUI_ZOOM_DROPDOWN = ::WID_GO_GUI_ZOOM_DROPDOWN, ///< Dropdown for the GUI zoom level. WID_GO_BASE_GRF_DROPDOWN = ::WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_STATUS = ::WID_GO_BASE_GRF_STATUS, ///< Info about missing files etc. WID_GO_BASE_GRF_TEXTFILE = ::WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2). @@ -2122,7 +2152,8 @@ public: WID_GS_HELP_TEXT = ::WID_GS_HELP_TEXT, ///< Information area to display help text of the selected option. WID_GS_EXPAND_ALL = ::WID_GS_EXPAND_ALL, ///< Expand all button. WID_GS_COLLAPSE_ALL = ::WID_GS_COLLAPSE_ALL, ///< Collapse all button. - WID_GS_RESTRICT_LABEL = ::WID_GS_RESTRICT_LABEL, ///< Label upfront to drop down box to restrict the list of settings to show + WID_GS_RESTRICT_CATEGORY = ::WID_GS_RESTRICT_CATEGORY, ///< Label upfront to the category drop-down box to restrict the list of settings to show + WID_GS_RESTRICT_TYPE = ::WID_GS_RESTRICT_TYPE, ///< Label upfront to the type drop-down box to restrict the list of settings to show WID_GS_RESTRICT_DROPDOWN = ::WID_GS_RESTRICT_DROPDOWN, ///< The drop down box to restrict the list of settings WID_GS_TYPE_DROPDOWN = ::WID_GS_TYPE_DROPDOWN, ///< The drop down box to choose client/game/company/all settings }; diff --git a/src/script/api/template/template_cargo.hpp.sq b/src/script/api/template/template_cargo.hpp.sq index 0a80aa7050..b57e5c05aa 100644 --- a/src/script/api/template/template_cargo.hpp.sq +++ b/src/script/api/template/template_cargo.hpp.sq @@ -19,6 +19,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptCargo::TownEffect res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptCargo::SpecialCargoID GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCargo::SpecialCargoID)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptCargo::SpecialCargoID res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptCargo::DistributionType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCargo::DistributionType)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptCargo::DistributionType res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow ScriptCargo to be used as Squirrel parameter */ template <> inline ScriptCargo *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptCargo *)instance; } diff --git a/src/script/api/template/template_company.hpp.sq b/src/script/api/template/template_company.hpp.sq index 5668e893e7..7dc63f24bc 100644 --- a/src/script/api/template/template_company.hpp.sq +++ b/src/script/api/template/template_company.hpp.sq @@ -19,6 +19,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptCompany::CompanyID res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptCompany::Gender GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::Gender)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptCompany::Gender res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptCompany::ExpensesType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::ExpensesType)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptCompany::ExpensesType res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow ScriptCompany to be used as Squirrel parameter */ template <> inline ScriptCompany *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptCompany *)instance; } diff --git a/src/script/api/template/template_date.hpp.sq b/src/script/api/template/template_date.hpp.sq index 976ddb7a50..cca4a258b1 100644 --- a/src/script/api/template/template_date.hpp.sq +++ b/src/script/api/template/template_date.hpp.sq @@ -12,6 +12,10 @@ #include "../script_date.hpp" namespace SQConvert { + /* Allow enums to be used as Squirrel parameters */ + template <> inline ScriptDate::Date GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptDate::Date)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptDate::Date res) { sq_pushinteger(vm, (int32)res); return 1; } + /* Allow ScriptDate to be used as Squirrel parameter */ template <> inline ScriptDate *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptDate *)instance; } template <> inline ScriptDate &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptDate *)instance; } diff --git a/src/script/api/template/template_news.hpp.sq b/src/script/api/template/template_news.hpp.sq index f0a09bb495..445a055e10 100644 --- a/src/script/api/template/template_news.hpp.sq +++ b/src/script/api/template/template_news.hpp.sq @@ -15,6 +15,8 @@ namespace SQConvert { /* Allow enums to be used as Squirrel parameters */ template <> inline ScriptNews::NewsType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptNews::NewsType)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptNews::NewsType res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptNews::NewsReferenceType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptNews::NewsReferenceType)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptNews::NewsReferenceType res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow ScriptNews to be used as Squirrel parameter */ template <> inline ScriptNews *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptNews *)instance; } diff --git a/src/script/api/template/template_stationlist.hpp.sq b/src/script/api/template/template_stationlist.hpp.sq index f9f49a4ef2..5f7bd28129 100644 --- a/src/script/api/template/template_stationlist.hpp.sq +++ b/src/script/api/template/template_stationlist.hpp.sq @@ -20,6 +20,111 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptStationList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList", res, NULL, DefSQDestructorCallback, true); return 1; } } // namespace SQConvert +namespace SQConvert { + /* Allow enums to be used as Squirrel parameters */ + template <> inline ScriptStationList_Cargo::CargoSelector GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptStationList_Cargo::CargoSelector)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_Cargo::CargoSelector res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptStationList_Cargo::CargoMode GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptStationList_Cargo::CargoMode)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_Cargo::CargoMode res) { sq_pushinteger(vm, (int32)res); return 1; } + + /* Allow ScriptStationList_Cargo to be used as Squirrel parameter */ + template <> inline ScriptStationList_Cargo *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_Cargo *)instance; } + template <> inline ScriptStationList_Cargo &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_Cargo *)instance; } + template <> inline const ScriptStationList_Cargo *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_Cargo *)instance; } + template <> inline const ScriptStationList_Cargo &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_Cargo *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_Cargo *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_Cargo", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoWaiting to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoWaiting *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaiting *)instance; } + template <> inline ScriptStationList_CargoWaiting &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaiting *)instance; } + template <> inline const ScriptStationList_CargoWaiting *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaiting *)instance; } + template <> inline const ScriptStationList_CargoWaiting &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaiting *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoWaiting *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoWaiting", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoPlanned to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoPlanned *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlanned *)instance; } + template <> inline ScriptStationList_CargoPlanned &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlanned *)instance; } + template <> inline const ScriptStationList_CargoPlanned *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlanned *)instance; } + template <> inline const ScriptStationList_CargoPlanned &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlanned *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoPlanned *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoPlanned", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoWaitingByFrom to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoWaitingByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingByFrom *)instance; } + template <> inline ScriptStationList_CargoWaitingByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingByFrom *)instance; } + template <> inline const ScriptStationList_CargoWaitingByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingByFrom *)instance; } + template <> inline const ScriptStationList_CargoWaitingByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingByFrom *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoWaitingByFrom *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoWaitingByFrom", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoWaitingViaByFrom to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoWaitingViaByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingViaByFrom *)instance; } + template <> inline ScriptStationList_CargoWaitingViaByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingViaByFrom *)instance; } + template <> inline const ScriptStationList_CargoWaitingViaByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingViaByFrom *)instance; } + template <> inline const ScriptStationList_CargoWaitingViaByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingViaByFrom *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoWaitingViaByFrom *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoWaitingViaByFrom", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoWaitingByVia to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoWaitingByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingByVia *)instance; } + template <> inline ScriptStationList_CargoWaitingByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingByVia *)instance; } + template <> inline const ScriptStationList_CargoWaitingByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingByVia *)instance; } + template <> inline const ScriptStationList_CargoWaitingByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingByVia *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoWaitingByVia *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoWaitingByVia", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoWaitingFromByVia to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoWaitingFromByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingFromByVia *)instance; } + template <> inline ScriptStationList_CargoWaitingFromByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingFromByVia *)instance; } + template <> inline const ScriptStationList_CargoWaitingFromByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoWaitingFromByVia *)instance; } + template <> inline const ScriptStationList_CargoWaitingFromByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoWaitingFromByVia *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoWaitingFromByVia *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoWaitingFromByVia", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoPlannedByFrom to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoPlannedByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedByFrom *)instance; } + template <> inline ScriptStationList_CargoPlannedByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedByFrom *)instance; } + template <> inline const ScriptStationList_CargoPlannedByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedByFrom *)instance; } + template <> inline const ScriptStationList_CargoPlannedByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedByFrom *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoPlannedByFrom *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoPlannedByFrom", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoPlannedViaByFrom to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoPlannedViaByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedViaByFrom *)instance; } + template <> inline ScriptStationList_CargoPlannedViaByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedViaByFrom *)instance; } + template <> inline const ScriptStationList_CargoPlannedViaByFrom *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedViaByFrom *)instance; } + template <> inline const ScriptStationList_CargoPlannedViaByFrom &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedViaByFrom *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoPlannedViaByFrom *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoPlannedViaByFrom", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoPlannedByVia to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoPlannedByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedByVia *)instance; } + template <> inline ScriptStationList_CargoPlannedByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedByVia *)instance; } + template <> inline const ScriptStationList_CargoPlannedByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedByVia *)instance; } + template <> inline const ScriptStationList_CargoPlannedByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedByVia *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoPlannedByVia *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoPlannedByVia", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + +namespace SQConvert { + /* Allow ScriptStationList_CargoPlannedFromByVia to be used as Squirrel parameter */ + template <> inline ScriptStationList_CargoPlannedFromByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedFromByVia *)instance; } + template <> inline ScriptStationList_CargoPlannedFromByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedFromByVia *)instance; } + template <> inline const ScriptStationList_CargoPlannedFromByVia *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_CargoPlannedFromByVia *)instance; } + template <> inline const ScriptStationList_CargoPlannedFromByVia &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStationList_CargoPlannedFromByVia *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStationList_CargoPlannedFromByVia *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StationList_CargoPlannedFromByVia", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert + namespace SQConvert { /* Allow ScriptStationList_Vehicle to be used as Squirrel parameter */ template <> inline ScriptStationList_Vehicle *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStationList_Vehicle *)instance; } diff --git a/src/script/api/template/template_storypageelementlist.hpp.sq b/src/script/api/template/template_storypageelementlist.hpp.sq new file mode 100644 index 0000000000..34d940f928 --- /dev/null +++ b/src/script/api/template/template_storypageelementlist.hpp.sq @@ -0,0 +1,21 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */ + +#include "../script_storypageelementlist.hpp" + +namespace SQConvert { + /* Allow ScriptStoryPageElementList to be used as Squirrel parameter */ + template <> inline ScriptStoryPageElementList *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPageElementList *)instance; } + template <> inline ScriptStoryPageElementList &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPageElementList *)instance; } + template <> inline const ScriptStoryPageElementList *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPageElementList *)instance; } + template <> inline const ScriptStoryPageElementList &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPageElementList *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPageElementList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StoryPageElementList", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert diff --git a/src/script/api/template/template_storypagelist.hpp.sq b/src/script/api/template/template_storypagelist.hpp.sq new file mode 100644 index 0000000000..7325969fdc --- /dev/null +++ b/src/script/api/template/template_storypagelist.hpp.sq @@ -0,0 +1,21 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */ + +#include "../script_storypagelist.hpp" + +namespace SQConvert { + /* Allow ScriptStoryPageList to be used as Squirrel parameter */ + template <> inline ScriptStoryPageList *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPageList *)instance; } + template <> inline ScriptStoryPageList &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPageList *)instance; } + template <> inline const ScriptStoryPageList *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPageList *)instance; } + template <> inline const ScriptStoryPageList &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPageList *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPageList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StoryPageList", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert diff --git a/src/script/api/template/template_town.hpp.sq b/src/script/api/template/template_town.hpp.sq index 8eda7fce3e..0ec1c285d8 100644 --- a/src/script/api/template/template_town.hpp.sq +++ b/src/script/api/template/template_town.hpp.sq @@ -19,6 +19,10 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptTown::TownRating res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptTown::RoadLayout GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptTown::RoadLayout)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptTown::RoadLayout res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptTown::TownSize GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptTown::TownSize)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptTown::TownSize res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptTown::TownGrowth GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptTown::TownGrowth)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptTown::TownGrowth res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow ScriptTown to be used as Squirrel parameter */ template <> inline ScriptTown *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptTown *)instance; } diff --git a/src/script/api/template/template_window.hpp.sq b/src/script/api/template/template_window.hpp.sq index 9f01e42d5a..a21a75ab89 100644 --- a/src/script/api/template/template_window.hpp.sq +++ b/src/script/api/template/template_window.hpp.sq @@ -161,6 +161,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::NewGRFParametersWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::NewGRFStateWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::NewGRFStateWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::NewGRFStateWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptWindow::SavePresetWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::SavePresetWidgets)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::SavePresetWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::ScanProgressWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::ScanProgressWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::ScanProgressWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::NewsWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::NewsWidgets)tmp; } diff --git a/src/script/script_config.cpp b/src/script/script_config.cpp index a46f5f3923..a6e41476e8 100644 --- a/src/script/script_config.cpp +++ b/src/script/script_config.cpp @@ -14,11 +14,14 @@ #include "../core/random_func.hpp" #include "script_info.hpp" #include "../textfile_gui.h" +#include "../string_func.h" + +#include "../safeguards.h" void ScriptConfig::Change(const char *name, int version, bool force_exact_match, bool is_random) { free(this->name); - this->name = (name == NULL) ? NULL : strdup(name); + this->name = (name == NULL) ? NULL : stredup(name); this->info = (name == NULL) ? NULL : this->FindInfo(this->name, version, force_exact_match); this->version = (info == NULL) ? -1 : info->GetVersion(); this->is_random = is_random; @@ -42,14 +45,14 @@ void ScriptConfig::Change(const char *name, int version, bool force_exact_match, ScriptConfig::ScriptConfig(const ScriptConfig *config) { - this->name = (config->name == NULL) ? NULL : strdup(config->name); + this->name = (config->name == NULL) ? NULL : stredup(config->name); this->info = config->info; this->version = config->version; this->config_list = NULL; this->is_random = config->is_random; for (SettingValueList::const_iterator it = config->settings.begin(); it != config->settings.end(); it++) { - this->settings[strdup((*it).first)] = (*it).second; + this->settings[stredup((*it).first)] = (*it).second; } this->AddRandomDeviation(); } @@ -114,7 +117,7 @@ void ScriptConfig::SetSetting(const char *name, int value) if (it != this->settings.end()) { (*it).second = value; } else { - this->settings[strdup(name)] = value; + this->settings[stredup(name)] = value; } } @@ -157,7 +160,7 @@ int ScriptConfig::GetVersion() const void ScriptConfig::StringToSettings(const char *value) { - char *value_copy = strdup(value); + char *value_copy = stredup(value); char *s = value_copy; while (s != NULL) { @@ -181,27 +184,27 @@ void ScriptConfig::StringToSettings(const char *value) free(value_copy); } -void ScriptConfig::SettingsToString(char *string, size_t size) const +void ScriptConfig::SettingsToString(char *string, const char *last) const { - string[0] = '\0'; + char *s = string; + *s = '\0'; for (SettingValueList::const_iterator it = this->settings.begin(); it != this->settings.end(); it++) { char no[10]; - snprintf(no, sizeof(no), "%d", (*it).second); + seprintf(no, lastof(no), "%d", (*it).second); /* Check if the string would fit in the destination */ - size_t needed_size = strlen((*it).first) + 1 + strlen(no) + 1; + size_t needed_size = strlen((*it).first) + 1 + strlen(no); /* If it doesn't fit, skip the next settings */ - if (size <= needed_size) break; - size -= needed_size; + if (string + needed_size > last) break; - strcat(string, (*it).first); - strcat(string, "="); - strcat(string, no); - strcat(string, ","); + s = strecat(s, (*it).first, last); + s = strecat(s, "=", last); + s = strecat(s, no, last); + s = strecat(s, ",", last); } + /* Remove the last ',', but only if at least one setting was saved. */ - size_t len = strlen(string); - if (len > 0) string[len - 1] = '\0'; + if (s != string) s[-1] = '\0'; } const char *ScriptConfig::GetTextfile(TextfileType type, CompanyID slot) const diff --git a/src/script/script_config.hpp b/src/script/script_config.hpp index 0350f8ded9..dfc675473c 100644 --- a/src/script/script_config.hpp +++ b/src/script/script_config.hpp @@ -172,7 +172,7 @@ public: * Convert the custom settings to a string that can be stored in the config * file or savegames. */ - void SettingsToString(char *string, size_t size) const; + void SettingsToString(char *string, const char *last) const; /** * Search a textfile file next to this script. diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp index 8b84966f23..b95c6e366d 100644 --- a/src/script/script_info.cpp +++ b/src/script/script_info.cpp @@ -17,6 +17,8 @@ #include "script_info.hpp" #include "script_scanner.hpp" +#include "../safeguards.h" + ScriptInfo::~ScriptInfo() { /* Free all allocated strings */ @@ -48,7 +50,7 @@ bool ScriptInfo::CheckMethod(const char *name) const { if (!this->engine->MethodExists(*this->SQ_instance, name)) { char error[1024]; - snprintf(error, sizeof(error), "your info.nut/library.nut doesn't have the method '%s'", name); + seprintf(error, lastof(error), "your info.nut/library.nut doesn't have the method '%s'", name); this->engine->ThrowError(error); return false; } @@ -81,9 +83,9 @@ bool ScriptInfo::CheckMethod(const char *name) const } /* Get location information of the scanner */ - info->main_script = strdup(info->scanner->GetMainScript()); + info->main_script = stredup(info->scanner->GetMainScript()); const char *tar_name = info->scanner->GetTarFile(); - if (tar_name != NULL) info->tar_file = strdup(tar_name); + if (tar_name != NULL) info->tar_file = stredup(tar_name); /* Cache the data the info file gives us. */ if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "GetAuthor", &info->author, MAX_GET_OPS)) return SQ_ERROR; @@ -123,15 +125,14 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) /* Read the table, and find all properties we care about */ sq_pushnull(vm); while (SQ_SUCCEEDED(sq_next(vm, -2))) { - const SQChar *sqkey; - if (SQ_FAILED(sq_getstring(vm, -2, &sqkey))) return SQ_ERROR; - const char *key = SQ2OTTD(sqkey); + const SQChar *key; + if (SQ_FAILED(sq_getstring(vm, -2, &key))) return SQ_ERROR; ValidateString(key); if (strcmp(key, "name") == 0) { const SQChar *sqvalue; if (SQ_FAILED(sq_getstring(vm, -1, &sqvalue))) return SQ_ERROR; - char *name = strdup(SQ2OTTD(sqvalue)); + char *name = stredup(sqvalue); char *s; ValidateString(name); @@ -144,7 +145,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) } else if (strcmp(key, "description") == 0) { const SQChar *sqdescription; if (SQ_FAILED(sq_getstring(vm, -1, &sqdescription))) return SQ_ERROR; - config.description = strdup(SQ2OTTD(sqdescription)); + config.description = stredup(sqdescription); ValidateString(config.description); items |= 0x002; } else if (strcmp(key, "min_value") == 0) { @@ -193,7 +194,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) items |= 0x100; } else { char error[1024]; - snprintf(error, sizeof(error), "unknown setting property '%s'", key); + seprintf(error, lastof(error), "unknown setting property '%s'", key); this->engine->ThrowError(error); return SQ_ERROR; } @@ -206,7 +207,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) * be set for the same config item. */ if ((items & 0x200) != 0 && (config.flags & SCRIPTCONFIG_RANDOM) != 0) { char error[1024]; - snprintf(error, sizeof(error), "Setting both random_deviation and SCRIPTCONFIG_RANDOM is not allowed"); + seprintf(error, lastof(error), "Setting both random_deviation and SCRIPTCONFIG_RANDOM is not allowed"); this->engine->ThrowError(error); return SQ_ERROR; } @@ -217,7 +218,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) uint mask = (config.flags & SCRIPTCONFIG_BOOLEAN) ? 0x1F3 : 0x1FF; if (items != mask) { char error[1024]; - snprintf(error, sizeof(error), "please define all properties of a setting (min/max not allowed for booleans)"); + seprintf(error, lastof(error), "please define all properties of a setting (min/max not allowed for booleans)"); this->engine->ThrowError(error); return SQ_ERROR; } @@ -228,9 +229,8 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) { - const SQChar *sq_setting_name; - if (SQ_FAILED(sq_getstring(vm, -2, &sq_setting_name))) return SQ_ERROR; - const char *setting_name = SQ2OTTD(sq_setting_name); + const SQChar *setting_name; + if (SQ_FAILED(sq_getstring(vm, -2, &setting_name))) return SQ_ERROR; ValidateString(setting_name); ScriptConfigItem *config = NULL; @@ -240,7 +240,7 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) if (config == NULL) { char error[1024]; - snprintf(error, sizeof(error), "Trying to add labels for non-defined setting '%s'", setting_name); + seprintf(error, lastof(error), "Trying to add labels for non-defined setting '%s'", setting_name); this->engine->ThrowError(error); return SQ_ERROR; } @@ -251,19 +251,17 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) /* Read the table and find all labels */ sq_pushnull(vm); while (SQ_SUCCEEDED(sq_next(vm, -2))) { - const SQChar *sq_key; - const SQChar *sq_label; - if (SQ_FAILED(sq_getstring(vm, -2, &sq_key))) return SQ_ERROR; - if (SQ_FAILED(sq_getstring(vm, -1, &sq_label))) return SQ_ERROR; + const SQChar *key_string; + const SQChar *label; + if (SQ_FAILED(sq_getstring(vm, -2, &key_string))) return SQ_ERROR; + if (SQ_FAILED(sq_getstring(vm, -1, &label))) return SQ_ERROR; /* Because squirrel doesn't support identifiers starting with a digit, * we skip the first character. */ - const char *key_string = SQ2OTTD(sq_key); int key = atoi(key_string + 1); - const char *label = SQ2OTTD(sq_label); ValidateString(label); - /* !Contains() prevents strdup from leaking. */ - if (!config->labels->Contains(key)) config->labels->Insert(key, strdup(label)); + /* !Contains() prevents stredup from leaking. */ + if (!config->labels->Contains(key)) config->labels->Insert(key, stredup(label)); sq_pop(vm, 2); } diff --git a/src/script/script_info.hpp b/src/script/script_info.hpp index 4ed1607263..ae341a7d82 100644 --- a/src/script/script_info.hpp +++ b/src/script/script_info.hpp @@ -32,6 +32,7 @@ static const int MAX_GET_SETTING_OPS = 100000; class ScriptInfo : public SimpleCountedObject { public: ScriptInfo() : + engine(NULL), SQ_instance(NULL), main_script(NULL), tar_file(NULL), diff --git a/src/script/script_info_dummy.cpp b/src/script/script_info_dummy.cpp index b846303325..e11c631512 100644 --- a/src/script/script_info_dummy.cpp +++ b/src/script/script_info_dummy.cpp @@ -9,12 +9,14 @@ /** @file script_info_dummy.cpp Implementation of a dummy Script. */ -#include #include "../stdafx.h" +#include #include "../string_func.h" #include "../strings_func.h" +#include "../safeguards.h" + /* The reason this exists in C++, is that a user can trash his ai/ or game/ dir, * leaving no Scripts available. The complexity to solve this is insane, and * therefore the alternative is used, and make sure there is always a Script @@ -39,12 +41,12 @@ void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir) dp += seprintf(dp, lastof(dummy_script), "function CreateInstance() { return \"Dummy%s\"; }\n", type); dp += seprintf(dp, lastof(dummy_script), "} RegisterDummy%s(Dummy%s());\n", type, type); - const SQChar *sq_dummy_script = OTTD2SQ(dummy_script); + const SQChar *sq_dummy_script = dummy_script; sq_pushroottable(vm); /* Load and run the script */ - if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, scstrlen(sq_dummy_script), _SC("dummy"), SQTrue))) { + if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, strlen(sq_dummy_script), "dummy", SQTrue))) { sq_push(vm, -2); if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) { sq_pop(vm, 1); @@ -95,11 +97,11 @@ void Script_CreateDummy(HSQUIRRELVM vm, StringID string, const char *type) /* 3) We translate the error message in the character format that Squirrel wants. * We can use the fact that the wchar string printing also uses %s to print * old style char strings, which is what was generated during the script generation. */ - const SQChar *sq_dummy_script = OTTD2SQ(dummy_script); + const SQChar *sq_dummy_script = dummy_script; /* And finally we load and run the script */ sq_pushroottable(vm); - if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, scstrlen(sq_dummy_script), _SC("dummy"), SQTrue))) { + if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, strlen(sq_dummy_script), "dummy", SQTrue))) { sq_push(vm, -2); if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) { sq_pop(vm, 1); diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 33a0c4d101..5df06ad890 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -29,6 +29,8 @@ #include "../company_func.h" #include "../fileio_func.h" +#include "../safeguards.h" + ScriptStorage::~ScriptStorage() { /* Free our pointers */ @@ -44,11 +46,12 @@ ScriptStorage::~ScriptStorage() static void PrintFunc(bool error_msg, const SQChar *message) { /* Convert to OpenTTD internal capable string */ - ScriptController::Print(error_msg, SQ2OTTD(message)); + ScriptController::Print(error_msg, message); } ScriptInstance::ScriptInstance(const char *APIName) : engine(NULL), + versionAPI(NULL), controller(NULL), storage(NULL), instance(NULL), @@ -113,8 +116,8 @@ bool ScriptInstance::LoadCompatibilityScripts(const char *api_version, Subdirect char buf[MAX_PATH]; Searchpath sp; FOR_ALL_SEARCHPATHS(sp) { - FioAppendDirectory(buf, MAX_PATH, sp, dir); - ttd_strlcat(buf, script_name, MAX_PATH); + FioAppendDirectory(buf, lastof(buf), sp, dir); + strecat(buf, script_name, lastof(buf)); if (!FileExists(buf)) continue; if (this->engine->LoadScript(buf)) return true; @@ -364,11 +367,8 @@ static const SaveLoad _script_byte[] = { _script_sl_byte = SQSL_STRING; SlObject(NULL, _script_byte); } - const SQChar *res; - sq_getstring(vm, index, &res); - /* @bug if a string longer than 512 characters is given to SQ2OTTD, the - * internal buffer overflows. */ - const char *buf = SQ2OTTD(res); + const SQChar *buf; + sq_getstring(vm, index, &buf); size_t len = strlen(buf) + 1; if (len >= 255) { ScriptLog::Error("Maximum string length is 254 chars. No data saved."); @@ -566,7 +566,7 @@ bool ScriptInstance::IsPaused() SlObject(NULL, _script_byte); static char buf[256]; SlArray(buf, _script_sl_byte, SLE_CHAR); - if (vm != NULL) sq_pushstring(vm, OTTD2SQ(buf), -1); + if (vm != NULL) sq_pushstring(vm, buf, -1); return true; } @@ -591,7 +591,7 @@ bool ScriptInstance::IsPaused() case SQSL_BOOL: { SlObject(NULL, _script_byte); - if (vm != NULL) sq_pushinteger(vm, (SQBool)(_script_sl_byte != 0)); + if (vm != NULL) sq_pushbool(vm, (SQBool)(_script_sl_byte != 0)); return true; } @@ -655,7 +655,7 @@ bool ScriptInstance::CallLoad() /* Go to the instance-root */ sq_pushobject(vm, *this->instance); /* Find the function-name inside the script */ - sq_pushstring(vm, OTTD2SQ("Load"), -1); + sq_pushstring(vm, "Load", -1); /* Change the "Load" string in a function pointer */ sq_get(vm, -2); /* Push the main instance as "this" object */ diff --git a/src/script/script_scanner.cpp b/src/script/script_scanner.cpp index 2197a55058..57265669f9 100644 --- a/src/script/script_scanner.cpp +++ b/src/script/script_scanner.cpp @@ -18,15 +18,23 @@ #include "script_scanner.hpp" #include "script_info.hpp" +#if defined(ENABLE_NETWORK) +#include "../network/network_content.h" +#include "../3rdparty/md5/md5.h" +#include "../tar_type.h" +#endif /* ENABLE_NETWORK */ + +#include "../safeguards.h" + bool ScriptScanner::AddFile(const char *filename, size_t basepath_length, const char *tar_filename) { free(this->main_script); - this->main_script = strdup(filename); + this->main_script = stredup(filename); if (this->main_script == NULL) return false; free(this->tar_file); if (tar_filename != NULL) { - this->tar_file = strdup(tar_filename); + this->tar_file = stredup(tar_filename); if (this->tar_file == NULL) return false; } else { this->tar_file = NULL; @@ -45,9 +53,9 @@ bool ScriptScanner::AddFile(const char *filename, size_t basepath_length, const if (!FioCheckFileExists(filename, this->subdir) || !FioCheckFileExists(this->main_script, this->subdir)) return false; - /* We don't care if one of the other scripts failed to load. */ - this->engine->ResetCrashed(); + this->ResetEngine(); this->engine->LoadScript(filename); + return true; } @@ -58,17 +66,20 @@ ScriptScanner::ScriptScanner() : { } +void ScriptScanner::ResetEngine() +{ + this->engine->Reset(); + this->engine->SetGlobalPointer(this); + this->RegisterAPI(this->engine); +} + void ScriptScanner::Initialize(const char *name) { this->engine = new Squirrel(name); - /* Mark this class as global pointer */ - this->engine->SetGlobalPointer(this); - - this->RegisterAPI(this->engine); this->RescanDir(); - this->engine->ResetCrashed(); + this->ResetEngine(); } ScriptScanner::~ScriptScanner() @@ -108,11 +119,11 @@ void ScriptScanner::Reset() void ScriptScanner::RegisterScript(ScriptInfo *info) { char script_original_name[1024]; - this->GetScriptName(info, script_original_name, sizeof(script_original_name)); + this->GetScriptName(info, script_original_name, lastof(script_original_name)); strtolower(script_original_name); char script_name[1024]; - snprintf(script_name, sizeof(script_name), "%s.%d", script_original_name, info->GetVersion()); + seprintf(script_name, lastof(script_name), "%s.%d", script_original_name, info->GetVersion()); /* Check if GetShortName follows the rules */ if (strlen(info->GetShortName()) != 4) { @@ -142,13 +153,13 @@ void ScriptScanner::RegisterScript(ScriptInfo *info) return; } - this->info_list[strdup(script_name)] = info; + this->info_list[stredup(script_name)] = info; if (!info->IsDeveloperOnly() || _settings_client.gui.ai_developer_tools) { /* Add the script to the 'unique' script list, where only the highest version * of the script is registered. */ if (this->info_single_list.find(script_original_name) == this->info_single_list.end()) { - this->info_single_list[strdup(script_original_name)] = info; + this->info_single_list[stredup(script_original_name)] = info; } else if (this->info_single_list[script_original_name]->GetVersion() < info->GetVersion()) { this->info_single_list[script_original_name] = info; } @@ -170,9 +181,6 @@ char *ScriptScanner::GetConsoleList(char *p, const char *last, bool newest_only) } #if defined(ENABLE_NETWORK) -#include "../network/network_content.h" -#include "../3rdparty/md5/md5.h" -#include "../tar_type.h" /** Helper for creating a MD5sum of all files within of a script. */ struct ScriptFileChecksumCreator : FileScanner { diff --git a/src/script/script_scanner.hpp b/src/script/script_scanner.hpp index 792d36bae7..50dad02ad2 100644 --- a/src/script/script_scanner.hpp +++ b/src/script/script_scanner.hpp @@ -101,7 +101,7 @@ protected: /** * Get the script name how to store the script in memory. */ - virtual void GetScriptName(ScriptInfo *info, char *name, int len) = 0; + virtual void GetScriptName(ScriptInfo *info, char *name, const char *last) = 0; /** * Get the filename to scan for this type of script. @@ -128,6 +128,10 @@ protected: */ void Reset(); + /** + * Reset the engine to ensure a clean environment for further steps. + */ + void ResetEngine(); }; #endif /* SCRIPT_SCANNER_HPP */ diff --git a/src/script/script_storage.hpp b/src/script/script_storage.hpp index 50e2b8dd53..8fe1e17323 100644 --- a/src/script/script_storage.hpp +++ b/src/script/script_storage.hpp @@ -76,6 +76,9 @@ public: new_vehicle_id (0), new_sign_id (0), new_group_id (0), + new_goal_id (0), + new_story_page_id (0), + new_story_page_element_id(0), /* calback_value (can't be set) */ road_type (INVALID_ROADTYPE), rail_type (INVALID_RAILTYPE), diff --git a/src/script/squirrel.cpp b/src/script/squirrel.cpp index 7c684d4b82..e38067480d 100644 --- a/src/script/squirrel.cpp +++ b/src/script/squirrel.cpp @@ -19,22 +19,20 @@ #include <../squirrel/sqpcheader.h> #include <../squirrel/sqvm.h> +#include "../safeguards.h" + void Squirrel::CompileError(HSQUIRRELVM vm, const SQChar *desc, const SQChar *source, SQInteger line, SQInteger column) { SQChar buf[1024]; -#ifdef _SQ64 - scsnprintf(buf, lengthof(buf), _SC("Error %s:%ld/%ld: %s"), source, line, column, desc); -#else - scsnprintf(buf, lengthof(buf), _SC("Error %s:%d/%d: %s"), source, line, column, desc); -#endif + seprintf(buf, lastof(buf), "Error %s:" OTTD_PRINTF64 "/" OTTD_PRINTF64 ": %s", source, line, column, desc); /* Check if we have a custom print function */ Squirrel *engine = (Squirrel *)sq_getforeignptr(vm); engine->crashed = true; SQPrintFunc *func = engine->print_func; if (func == NULL) { - DEBUG(misc, 0, "[Squirrel] Compile error: %s", SQ2OTTD(buf)); + DEBUG(misc, 0, "[Squirrel] Compile error: %s", buf); } else { (*func)(true, buf); } @@ -46,13 +44,13 @@ void Squirrel::ErrorPrintFunc(HSQUIRRELVM vm, const SQChar *s, ...) SQChar buf[1024]; va_start(arglist, s); - scvsnprintf(buf, lengthof(buf), s, arglist); + vseprintf(buf, lastof(buf), s, arglist); va_end(arglist); /* Check if we have a custom print function */ SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func; if (func == NULL) { - scfprintf(stderr, _SC("%s"), buf); + fprintf(stderr, "%s", buf); } else { (*func)(true, buf); } @@ -66,11 +64,11 @@ void Squirrel::RunError(HSQUIRRELVM vm, const SQChar *error) /* Check if we have a custom print function */ SQChar buf[1024]; - scsnprintf(buf, lengthof(buf), _SC("Your script made an error: %s\n"), error); + seprintf(buf, lastof(buf), "Your script made an error: %s\n", error); Squirrel *engine = (Squirrel *)sq_getforeignptr(vm); SQPrintFunc *func = engine->print_func; if (func == NULL) { - scfprintf(stderr, _SC("%s"), buf); + fprintf(stderr, "%s", buf); } else { (*func)(true, buf); } @@ -92,7 +90,7 @@ SQInteger Squirrel::_RunError(HSQUIRRELVM vm) } } - Squirrel::RunError(vm, _SC("unknown error")); + Squirrel::RunError(vm, "unknown error"); return 0; } @@ -102,14 +100,14 @@ void Squirrel::PrintFunc(HSQUIRRELVM vm, const SQChar *s, ...) SQChar buf[1024]; va_start(arglist, s); - scvsnprintf(buf, lengthof(buf) - 2, s, arglist); + vseprintf(buf, lastof(buf) - 2, s, arglist); va_end(arglist); - scstrcat(buf, _SC("\n")); + strecat(buf, "\n", lastof(buf)); /* Check if we have a custom print function */ SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func; if (func == NULL) { - scprintf(_SC("%s"), buf); + printf("%s", buf); } else { (*func)(false, buf); } @@ -117,7 +115,7 @@ void Squirrel::PrintFunc(HSQUIRRELVM vm, const SQChar *s, ...) void Squirrel::AddMethod(const char *method_name, SQFUNCTION proc, uint nparam, const char *params, void *userdata, int size) { - sq_pushstring(this->vm, OTTD2SQ(method_name), -1); + sq_pushstring(this->vm, method_name, -1); if (size != 0) { void *ptr = sq_newuserdata(vm, size); @@ -125,21 +123,21 @@ void Squirrel::AddMethod(const char *method_name, SQFUNCTION proc, uint nparam, } sq_newclosure(this->vm, proc, size != 0 ? 1 : 0); - if (nparam != 0) sq_setparamscheck(this->vm, nparam, OTTD2SQ(params)); - sq_setnativeclosurename(this->vm, -1, OTTD2SQ(method_name)); + if (nparam != 0) sq_setparamscheck(this->vm, nparam, params); + sq_setnativeclosurename(this->vm, -1, method_name); sq_newslot(this->vm, -3, SQFalse); } void Squirrel::AddConst(const char *var_name, int value) { - sq_pushstring(this->vm, OTTD2SQ(var_name), -1); + sq_pushstring(this->vm, var_name, -1); sq_pushinteger(this->vm, value); sq_newslot(this->vm, -3, SQTrue); } void Squirrel::AddConst(const char *var_name, bool value) { - sq_pushstring(this->vm, OTTD2SQ(var_name), -1); + sq_pushstring(this->vm, var_name, -1); sq_pushbool(this->vm, value); sq_newslot(this->vm, -3, SQTrue); } @@ -147,15 +145,15 @@ void Squirrel::AddConst(const char *var_name, bool value) void Squirrel::AddClassBegin(const char *class_name) { sq_pushroottable(this->vm); - sq_pushstring(this->vm, OTTD2SQ(class_name), -1); + sq_pushstring(this->vm, class_name, -1); sq_newclass(this->vm, SQFalse); } void Squirrel::AddClassBegin(const char *class_name, const char *parent_class) { sq_pushroottable(this->vm); - sq_pushstring(this->vm, OTTD2SQ(class_name), -1); - sq_pushstring(this->vm, OTTD2SQ(parent_class), -1); + sq_pushstring(this->vm, class_name, -1); + sq_pushstring(this->vm, parent_class, -1); if (SQ_FAILED(sq_get(this->vm, -3))) { DEBUG(misc, 0, "[squirrel] Failed to initialize class '%s' based on parent class '%s'", class_name, parent_class); DEBUG(misc, 0, "[squirrel] Make sure that '%s' exists before trying to define '%s'", parent_class, class_name); @@ -177,7 +175,7 @@ bool Squirrel::MethodExists(HSQOBJECT instance, const char *method_name) /* Go to the instance-root */ sq_pushobject(this->vm, instance); /* Find the function-name inside the script */ - sq_pushstring(this->vm, OTTD2SQ(method_name), -1); + sq_pushstring(this->vm, method_name, -1); if (SQ_FAILED(sq_get(this->vm, -2))) { sq_settop(this->vm, top); return false; @@ -228,7 +226,7 @@ bool Squirrel::CallMethod(HSQOBJECT instance, const char *method_name, HSQOBJECT /* Go to the instance-root */ sq_pushobject(this->vm, instance); /* Find the function-name inside the script */ - sq_pushstring(this->vm, OTTD2SQ(method_name), -1); + sq_pushstring(this->vm, method_name, -1); if (SQ_FAILED(sq_get(this->vm, -2))) { DEBUG(misc, 0, "[squirrel] Could not find '%s' in the class", method_name); sq_settop(this->vm, top); @@ -252,7 +250,7 @@ bool Squirrel::CallStringMethodStrdup(HSQOBJECT instance, const char *method_nam HSQOBJECT ret; if (!this->CallMethod(instance, method_name, &ret, suspend)) return false; if (ret._type != OT_STRING) return false; - *res = strdup(ObjectToString(&ret)); + *res = stredup(ObjectToString(&ret)); ValidateString(*res); return true; } @@ -285,12 +283,13 @@ bool Squirrel::CallBoolMethod(HSQOBJECT instance, const char *method_name, bool sq_pushroottable(vm); if (prepend_API_name) { - char *class_name2 = (char *)alloca(strlen(class_name) + strlen(engine->GetAPIName()) + 1); - sprintf(class_name2, "%s%s", engine->GetAPIName(), class_name); + size_t len = strlen(class_name) + strlen(engine->GetAPIName()) + 1; + char *class_name2 = (char *)alloca(len); + seprintf(class_name2, class_name2 + len - 1, "%s%s", engine->GetAPIName(), class_name); - sq_pushstring(vm, OTTD2SQ(class_name2), -1); + sq_pushstring(vm, class_name2, -1); } else { - sq_pushstring(vm, OTTD2SQ(class_name), -1); + sq_pushstring(vm, class_name, -1); } if (SQ_FAILED(sq_get(vm, -2))) { @@ -330,12 +329,17 @@ bool Squirrel::CreateClassInstance(const char *class_name, void *real_instance, } Squirrel::Squirrel(const char *APIName) : - global_pointer(NULL), - print_func(NULL), - crashed(false), - overdrawn_ops(0), APIName(APIName) { + this->Initialize(); +} + +void Squirrel::Initialize() +{ + this->global_pointer = NULL; + this->print_func = NULL; + this->crashed = false; + this->overdrawn_ops = 0; this->vm = sq_open(1024); /* Handle compile-errors ourself, so we can display it nicely */ @@ -376,58 +380,45 @@ public: } }; -static SQInteger _io_file_lexfeed_ASCII(SQUserPointer file) +static WChar _io_file_lexfeed_ASCII(SQUserPointer file) { - char c; + unsigned char c; if (((SQFile *)file)->Read(&c, sizeof(c), 1) > 0) return c; return 0; } -static SQInteger _io_file_lexfeed_UTF8(SQUserPointer file) +static WChar _io_file_lexfeed_UTF8(SQUserPointer file) { - static const SQInteger utf8_lengths[16] = - { - 1, 1, 1, 1, 1, 1, 1, 1, /* 0000 to 0111 : 1 byte (plain ASCII) */ - 0, 0, 0, 0, /* 1000 to 1011 : not valid */ - 2, 2, /* 1100, 1101 : 2 bytes */ - 3, /* 1110 : 3 bytes */ - 4 /* 1111 : 4 bytes */ - }; - static unsigned char byte_masks[5] = {0, 0, 0x1F, 0x0F, 0x07}; - unsigned char inchar; - SQInteger c = 0; - if (((SQFile *)file)->Read(&inchar, sizeof(inchar), 1) != 1) return 0; - c = inchar; - - if (c >= 0x80) { - SQInteger tmp; - SQInteger codelen = utf8_lengths[c >> 4]; - if (codelen == 0) return 0; - - tmp = c & byte_masks[codelen]; - for (SQInteger n = 0; n < codelen - 1; n++) { - tmp <<= 6; - if (((SQFile *)file)->Read(&inchar, sizeof(inchar), 1) != 1) return 0; - tmp |= inchar & 0x3F; - } - c = tmp; - } + char buffer[5]; + + /* Read the first character, and get the length based on UTF-8 specs. If invalid, bail out. */ + if (((SQFile *)file)->Read(buffer, sizeof(buffer[0]), 1) != 1) return 0; + uint len = Utf8EncodedCharLen(buffer[0]); + if (len == 0) return -1; + + /* Read the remaining bits. */ + if (len > 1 && ((SQFile *)file)->Read(buffer + 1, sizeof(buffer[0]), len - 1) != len - 1) return 0; + + /* Convert the character, and when definitely invalid, bail out as well. */ + WChar c; + if (Utf8Decode(&c, buffer) != len) return -1; + return c; } -static SQInteger _io_file_lexfeed_UCS2_no_swap(SQUserPointer file) +static WChar _io_file_lexfeed_UCS2_no_swap(SQUserPointer file) { - wchar_t c; - if (((SQFile *)file)->Read(&c, sizeof(c), 1) > 0) return (SQChar)c; + unsigned short c; + if (((SQFile *)file)->Read(&c, sizeof(c), 1) > 0) return (WChar)c; return 0; } -static SQInteger _io_file_lexfeed_UCS2_swap(SQUserPointer file) +static WChar _io_file_lexfeed_UCS2_swap(SQUserPointer file) { unsigned short c; if (((SQFile *)file)->Read(&c, sizeof(c), 1) > 0) { c = ((c >> 8) & 0x00FF)| ((c << 8) & 0xFF00); - return (SQChar)c; + return (WChar)c; } return 0; } @@ -466,13 +457,16 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer switch (us) { case SQ_BYTECODE_STREAM_TAG: { // BYTECODE - fseek(file, -2, SEEK_CUR); + if (fseek(file, -2, SEEK_CUR) < 0) { + FioFCloseFile(file); + return sq_throwerror(vm, "cannot seek the file"); + } if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) { FioFCloseFile(file); return SQ_OK; } FioFCloseFile(file); - return sq_throwerror(vm, _SC("Couldn't read bytecode")); + return sq_throwerror(vm, "Couldn't read bytecode"); } case 0xFFFE: /* Either this file is encoded as big-endian and we're on a little-endian @@ -485,25 +479,31 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer case 0xEFBB: // UTF-8 on big-endian machine if (fread(&uc, 1, sizeof(uc), file) == 0) { FioFCloseFile(file); - return sq_throwerror(vm, _SC("I/O error")); + return sq_throwerror(vm, "I/O error"); } if (uc != 0xBF) { FioFCloseFile(file); - return sq_throwerror(vm, _SC("Unrecognized encoding")); + return sq_throwerror(vm, "Unrecognized encoding"); } func = _io_file_lexfeed_UTF8; break; - default: func = _io_file_lexfeed_ASCII; fseek(file, -2, SEEK_CUR); break; // ASCII + default: // ASCII + func = _io_file_lexfeed_ASCII; + if (fseek(file, -2, SEEK_CUR) < 0) { + FioFCloseFile(file); + return sq_throwerror(vm, "cannot seek the file"); + } + break; } - if (SQ_SUCCEEDED(sq_compile(vm, func, &f, OTTD2SQ(filename), printerror))) { + if (SQ_SUCCEEDED(sq_compile(vm, func, &f, filename, printerror))) { FioFCloseFile(file); return SQ_OK; } FioFCloseFile(file); return SQ_ERROR; } - return sq_throwerror(vm, _SC("cannot open the file")); + return sq_throwerror(vm, "cannot open the file"); } bool Squirrel::LoadScript(HSQUIRRELVM vm, const char *script, bool in_root) @@ -534,12 +534,23 @@ bool Squirrel::LoadScript(const char *script) } Squirrel::~Squirrel() +{ + this->Uninitialize(); +} + +void Squirrel::Uninitialize() { /* Clean up the stuff */ sq_pop(this->vm, 1); sq_close(this->vm); } +void Squirrel::Reset() +{ + this->Uninitialize(); + this->Initialize(); +} + void Squirrel::InsertResult(bool result) { sq_pushbool(this->vm, result); @@ -573,11 +584,6 @@ bool Squirrel::HasScriptCrashed() return this->crashed; } -void Squirrel::ResetCrashed() -{ - this->crashed = false; -} - void Squirrel::CrashOccurred() { this->crashed = true; diff --git a/src/script/squirrel.hpp b/src/script/squirrel.hpp index 4e31d3247e..9e1d113a80 100644 --- a/src/script/squirrel.hpp +++ b/src/script/squirrel.hpp @@ -41,6 +41,11 @@ private: */ const char *GetAPIName() { return this->APIName; } + /** Perform all initialization steps to create the engine. */ + void Initialize(); + /** Perform all the cleanups for the engine. */ + void Uninitialize(); + protected: /** * The CompileError handler. @@ -194,7 +199,7 @@ public: /** * Convert a Squirrel-object to a string. */ - static const char *ObjectToString(HSQOBJECT *ptr) { return SQ2OTTD(sq_objtostring(ptr)); } + static const char *ObjectToString(HSQOBJECT *ptr) { return sq_objtostring(ptr); } /** * Convert a Squirrel-object to an integer. @@ -225,7 +230,7 @@ public: /** * Throw a Squirrel error that will be nicely displayed to the user. */ - void ThrowError(const char *error) { sq_throwerror(this->vm, OTTD2SQ(error)); } + void ThrowError(const char *error) { sq_throwerror(this->vm, error); } /** * Release a SQ object. @@ -248,11 +253,6 @@ public: */ bool HasScriptCrashed(); - /** - * Reset the crashed status. - */ - void ResetCrashed(); - /** * Set the script status to crashed. */ @@ -267,6 +267,11 @@ public: * How many operations can we execute till suspension? */ SQInteger GetOpsTillSuspend(); + + /** + * Completely reset the engine; start from scratch. + */ + void Reset(); }; #endif /* SQUIRREL_HPP */ diff --git a/src/script/squirrel_helper.hpp b/src/script/squirrel_helper.hpp index 3e37643847..22d738d4f7 100644 --- a/src/script/squirrel_helper.hpp +++ b/src/script/squirrel_helper.hpp @@ -26,7 +26,7 @@ template const char *GetClassName(); namespace SQConvert { /** * Pointers assigned to this class will be free'd when this instance - * comes out of scope. Useful to make sure you can use strdup(), + * comes out of scope. Useful to make sure you can use stredup(), * without leaking memory. */ struct SQAutoFreePointers : SmallVector { @@ -85,11 +85,11 @@ namespace SQConvert { template <> inline int Return (HSQUIRRELVM vm, int8 res) { sq_pushinteger(vm, res); return 1; } template <> inline int Return (HSQUIRRELVM vm, int16 res) { sq_pushinteger(vm, res); return 1; } template <> inline int Return (HSQUIRRELVM vm, int32 res) { sq_pushinteger(vm, res); return 1; } - template <> inline int Return (HSQUIRRELVM vm, int64 res) { sq_pushinteger(vm, ClampToI32(res)); return 1; } - template <> inline int Return (HSQUIRRELVM vm, Money res) { sq_pushinteger(vm, ClampToI32(res)); return 1; } + template <> inline int Return (HSQUIRRELVM vm, int64 res) { sq_pushinteger(vm, res); return 1; } + template <> inline int Return (HSQUIRRELVM vm, Money res) { sq_pushinteger(vm, res); return 1; } template <> inline int Return (HSQUIRRELVM vm, bool res) { sq_pushbool (vm, res); return 1; } - template <> inline int Return (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, OTTD2SQ(res), -1); free(res); } return 1; } - template <> inline int Return(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, OTTD2SQ(res), -1); } return 1; } + template <> inline int Return (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, res, -1); free(res); } return 1; } + template <> inline int Return(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, res, -1); } return 1; } template <> inline int Return (HSQUIRRELVM vm, void *res) { sq_pushuserpointer(vm, res); return 1; } template <> inline int Return (HSQUIRRELVM vm, HSQOBJECT res) { sq_pushobject(vm, res); return 1; } @@ -104,6 +104,8 @@ namespace SQConvert { template <> inline int8 GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; } template <> inline int16 GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; } template <> inline int32 GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; } + template <> inline int64 GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; } + template <> inline Money GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; } template <> inline bool GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQBool tmp; sq_getbool (vm, index, &tmp); return tmp != 0; } template <> inline void *GetParam(ForceType , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer tmp; sq_getuserpointer(vm, index, &tmp); return tmp; } template <> inline const char *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) @@ -113,7 +115,7 @@ namespace SQConvert { const SQChar *tmp; sq_getstring(vm, -1, &tmp); - char *tmp_str = strdup(SQ2OTTD(tmp)); + char *tmp_str = stredup(tmp); sq_poptop(vm); *ptr->Append() = (void *)tmp_str; str_validate(tmp_str, tmp_str + strlen(tmp_str)); @@ -123,7 +125,7 @@ namespace SQConvert { template <> inline Array *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { /* Sanity check of the size. */ - if (sq_getsize(vm, index) > UINT16_MAX) throw sq_throwerror(vm, _SC("an array used as parameter to a function is too large")); + if (sq_getsize(vm, index) > UINT16_MAX) throw sq_throwerror(vm, "an array used as parameter to a function is too large"); SQObject obj; sq_getstackobj(vm, index, &obj); @@ -138,7 +140,7 @@ namespace SQConvert { *data.Append() = (int32)tmp; } else { sq_pop(vm, 4); - throw sq_throwerror(vm, _SC("a member of an array used as parameter to a function is not numeric")); + throw sq_throwerror(vm, "a member of an array used as parameter to a function is not numeric"); } sq_pop(vm, 2); @@ -747,17 +749,17 @@ namespace SQConvert { /* Protect against calls to a non-static method in a static way */ sq_pushroottable(vm); const char *className = GetClassName(); - sq_pushstring(vm, OTTD2SQ(className), -1); + sq_pushstring(vm, className, -1); sq_get(vm, -2); sq_pushobject(vm, instance); - if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, _SC("class method is non-static")); + if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, "class method is non-static"); sq_pop(vm, 3); /* Get the 'real' instance of this class */ sq_getinstanceup(vm, 1, &real_instance, 0); /* Get the real function pointer */ sq_getuserdata(vm, nparam, &ptr, 0); - if (real_instance == NULL) return sq_throwerror(vm, _SC("couldn't detect real instance of class for non-static call")); + if (real_instance == NULL) return sq_throwerror(vm, "couldn't detect real instance of class for non-static call"); /* Remove the userdata from the stack */ sq_pop(vm, 1); @@ -789,17 +791,17 @@ namespace SQConvert { /* Protect against calls to a non-static method in a static way */ sq_pushroottable(vm); const char *className = GetClassName(); - sq_pushstring(vm, OTTD2SQ(className), -1); + sq_pushstring(vm, className, -1); sq_get(vm, -2); sq_pushobject(vm, instance); - if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, _SC("class method is non-static")); + if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, "class method is non-static"); sq_pop(vm, 3); /* Get the 'real' instance of this class */ sq_getinstanceup(vm, 1, &real_instance, 0); /* Get the real function pointer */ sq_getuserdata(vm, nparam, &ptr, 0); - if (real_instance == NULL) return sq_throwerror(vm, _SC("couldn't detect real instance of class for non-static call")); + if (real_instance == NULL) return sq_throwerror(vm, "couldn't detect real instance of class for non-static call"); /* Remove the userdata from the stack */ sq_pop(vm, 1); diff --git a/src/script/squirrel_std.cpp b/src/script/squirrel_std.cpp index 9de119e1e1..96f087a2a7 100644 --- a/src/script/squirrel_std.cpp +++ b/src/script/squirrel_std.cpp @@ -9,13 +9,16 @@ /** @file squirrel_std.cpp Implements the Squirrel Standard Function class */ +#include "../stdafx.h" #include #include -#include "../stdafx.h" #include "../debug.h" #include "squirrel_std.hpp" #include "../core/alloc_func.hpp" #include "../core/math_func.hpp" +#include "../string_func.h" + +#include "../safeguards.h" SQInteger SquirrelStd::min(HSQUIRRELVM vm) @@ -42,7 +45,6 @@ SQInteger SquirrelStd::require(HSQUIRRELVM vm) { SQInteger top = sq_gettop(vm); const SQChar *filename; - SQChar *real_filename; sq_getstring(vm, 2, &filename); @@ -53,31 +55,26 @@ SQInteger SquirrelStd::require(HSQUIRRELVM vm) DEBUG(misc, 0, "[squirrel] Couldn't detect the script-name of the 'require'-caller; this should never happen!"); return SQ_ERROR; } - real_filename = scstrdup(si.source); + + char path[MAX_PATH]; + strecpy(path, si.source, lastof(path)); /* Keep the dir, remove the rest */ - SQChar *s = scstrrchr(real_filename, PATHSEPCHAR); + SQChar *s = strrchr(path, PATHSEPCHAR); if (s != NULL) { /* Keep the PATHSEPCHAR there, remove the rest */ s++; *s = '\0'; } - /* And now we concat, so we are relative from the current script - * First, we have to make sure we have enough space for the full path */ - real_filename = ReallocT(real_filename, scstrlen(real_filename) + scstrlen(filename) + 1); - scstrcat(real_filename, filename); - /* Tars dislike opening files with '/' on Windows.. so convert it to '\\' ;) */ - char *filen = strdup(SQ2OTTD(real_filename)); + strecat(path, filename, lastof(path)); #if (PATHSEPCHAR != '/') - for (char *n = filen; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR; + for (char *n = path; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR; #endif Squirrel *engine = (Squirrel *)sq_getforeignptr(vm); - bool ret = engine->LoadScript(vm, filen); + bool ret = engine->LoadScript(vm, path); /* Reset the top, so the stack stays correct */ sq_settop(vm, top); - free(real_filename); - free(filen); return ret ? 0 : SQ_ERROR; } diff --git a/src/sdl.cpp b/src/sdl.cpp index 91d52d917a..79e9ed2927 100644 --- a/src/sdl.cpp +++ b/src/sdl.cpp @@ -79,6 +79,8 @@ static const char *LoadSdlDLL() #endif /* DYNAMICALLY_LOADED_SDL */ +#include "safeguards.h" + /** * Open the SDL library. * @param x The subsystem to load. diff --git a/src/settings.cpp b/src/settings.cpp index 825e3cbcaa..203dccbea0 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -64,6 +64,8 @@ #include "roadveh.h" #include "fios.h" #include "strings_func.h" +#include "string_func.h" +#include "debug.h" #include "void_map.h" #include "station_base.h" @@ -71,6 +73,11 @@ #include "table/strings.h" #include "table/settings.h" +#include +#include + +#include "safeguards.h" + ClientSettings _settings_client; GameSettings _settings_game; ///< Game settings of a running game or the scenario editor. GameSettings _settings_newgame; ///< Game settings for new games (updated from the intro screen). @@ -484,7 +491,7 @@ static void IniLoadSettings(IniFile *ini, const SettingDesc *sd, const char *grp const SettingDescBase *sdb = &sd->desc; const SaveLoad *sld = &sd->save; - if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to)) continue; + if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to, sld->ext_feature_test)) continue; /* For settings.xx.yy load the settings from [xx] yy = ? */ s = strchr(sdb->name, '.'); @@ -524,13 +531,13 @@ static void IniLoadSettings(IniFile *ini, const SettingDesc *sd, const char *grp switch (GetVarMemType(sld->conv)) { case SLE_VAR_STRB: case SLE_VAR_STRBQ: - if (p != NULL) ttd_strlcpy((char*)ptr, (const char*)p, sld->length); + if (p != NULL) strecpy((char*)ptr, (const char*)p, (char*)ptr + sld->length - 1); break; case SLE_VAR_STR: case SLE_VAR_STRQ: free(*(char**)ptr); - *(char**)ptr = p == NULL ? NULL : strdup((const char*)p); + *(char**)ptr = p == NULL ? NULL : stredup((const char*)p); break; case SLE_VAR_CHAR: if (p != NULL) *(char *)ptr = *(const char *)p; break; @@ -583,7 +590,7 @@ static void IniSaveSettings(IniFile *ini, const SettingDesc *sd, const char *grp /* If the setting is not saved to the configuration * file, just continue with the next setting */ - if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to)) continue; + if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to, sld->ext_feature_test)) continue; if (sld->conv & SLF_NOT_IN_CONFIG) continue; /* XXX - wtf is this?? (group override?) */ @@ -685,7 +692,7 @@ static void IniSaveSettings(IniFile *ini, const SettingDesc *sd, const char *grp /* The value is different, that means we have to write it to the ini */ free(item->value); - item->value = strdup(buf); + item->value = stredup(buf); } } @@ -707,7 +714,7 @@ static void IniLoadSettingList(IniFile *ini, const char *grpname, StringList *li list->Clear(); for (const IniItem *item = group->item; item != NULL; item = item->next) { - if (item->name != NULL) *list->Append() = strdup(item->name); + if (item->name != NULL) *list->Append() = stredup(item->name); } } @@ -869,7 +876,7 @@ static bool UpdateConsists(int32 p1) Train *t; FOR_ALL_TRAINS(t) { /* Update the consist of all trains so the maximum speed is set correctly. */ - if (t->IsFrontEngine() || t->IsFreeWagon()) t->ConsistChanged(true); + if (t->IsFrontEngine() || t->IsFreeWagon()) t->ConsistChanged(CCF_TRACK); } InvalidateWindowClassesData(WC_BUILD_VEHICLE, 0); return true; @@ -1066,6 +1073,12 @@ static bool ZoomMinMaxChanged(int32 p1) extern void ConstrainAllViewportsZoom(); ConstrainAllViewportsZoom(); GfxClearSpriteCache(); + if (_settings_client.gui.zoom_min > _gui_zoom) { + /* Restrict GUI zoom if it is no longer available. */ + _gui_zoom = _settings_client.gui.zoom_min; + UpdateCursorSize(); + LoadStringWidthTable(); + } return true; } @@ -1139,7 +1152,7 @@ static bool InvalidateCompanyWindow(int32 p1) static void ValidateSettings() { /* Do not allow a custom sea level with the original land generator. */ - if (_settings_newgame.game_creation.land_generator == 0 && + if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL && _settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { _settings_newgame.difficulty.quantity_sea_lakes = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; } @@ -1269,12 +1282,40 @@ static bool ChangeDynamicEngines(int32 p1) return true; } +static bool ChangeMaxHeightLevel(int32 p1) +{ + if (_game_mode == GM_NORMAL) return false; + if (_game_mode != GM_EDITOR) return true; + + /* Check if at least one mountain on the map is higher than the new value. + * If yes, disallow the change. */ + for (TileIndex t = 0; t < MapSize(); t++) { + if ((int32)TileHeight(t) > p1) { + ShowErrorMessage(STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN, INVALID_STRING_ID, WL_ERROR); + /* Return old, unchanged value */ + return false; + } + } + + /* The smallmap uses an index from heightlevels to colours. Trigger rebuilding it. */ + InvalidateWindowClassesData(WC_SMALLMAP, 2); + + return true; +} + static bool StationCatchmentChanged(int32 p1) { Station::RecomputeIndustriesNearForAll(); return true; } +static bool MaxVehiclesChanged(int32 p1) +{ + InvalidateWindowClassesData(WC_BUILD_TOOLBAR); + MarkWholeScreenDirty(); + return true; +} + #ifdef ENABLE_NETWORK @@ -1345,7 +1386,7 @@ static void HandleOldDiffCustom(bool savegame) for (uint i = 0; i < options_to_load; i++) { const SettingDesc *sd = &_settings[i]; /* Skip deprecated options */ - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue; void *var = GetVariableAddress(savegame ? &_settings_game : &_settings_newgame, &sd->save); Write_ValidateSetting(var, sd, (int32)((i == 4 ? 1000 : 1) * _old_diff_custom[i])); } @@ -1405,6 +1446,40 @@ static void GameLoadConfig(IniFile *ini, const char *grpname) if (item->value != NULL) config->StringToSettings(item->value); } +/** + * Convert a character to a hex nibble value, or \c -1 otherwise. + * @param c Character to convert. + * @return Hex value of the character, or \c -1 if not a hex digit. + */ +static int DecodeHexNibble(char c) +{ + if (c >= '0' && c <= '9') return c - '0'; + if (c >= 'A' && c <= 'F') return c + 10 - 'A'; + if (c >= 'a' && c <= 'f') return c + 10 - 'a'; + return -1; +} + +/** + * Parse a sequence of characters (supposedly hex digits) into a sequence of bytes. + * After the hex number should be a \c '|' character. + * @param pos First character to convert. + * @param dest [out] Output byte array to write the bytes. + * @param dest_size Number of bytes in \a dest. + * @return Whether reading was successful. + */ +static bool DecodeHexText(char *pos, uint8 *dest, size_t dest_size) +{ + while (dest_size > 0) { + int hi = DecodeHexNibble(pos[0]); + int lo = (hi >= 0) ? DecodeHexNibble(pos[1]) : -1; + if (lo < 0) return false; + *dest++ = (hi << 4) | lo; + pos += 2; + dest_size--; + } + return *pos == '|'; +} + /** * Load a GRF configuration * @param ini The configuration to read from. @@ -1421,16 +1496,41 @@ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_stati if (group == NULL) return NULL; for (item = group->item; item != NULL; item = item->next) { - GRFConfig *c = new GRFConfig(item->name); + GRFConfig *c = NULL; + + uint8 grfid_buf[4], md5sum[16]; + char *filename = item->name; + bool has_grfid = false; + bool has_md5sum = false; + + /* Try reading "|" and on success, "|". */ + has_grfid = DecodeHexText(filename, grfid_buf, lengthof(grfid_buf)); + if (has_grfid) { + filename += 1 + 2 * lengthof(grfid_buf); + has_md5sum = DecodeHexText(filename, md5sum, lengthof(md5sum)); + if (has_md5sum) filename += 1 + 2 * lengthof(md5sum); + + uint32 grfid = grfid_buf[0] | (grfid_buf[1] << 8) | (grfid_buf[2] << 16) | (grfid_buf[3] << 24); + if (has_md5sum) { + const GRFConfig *s = FindGRFConfig(grfid, FGCM_EXACT, md5sum); + if (s != NULL) c = new GRFConfig(*s); + } + if (c == NULL && !FioCheckFileExists(filename, NEWGRF_DIR)) { + const GRFConfig *s = FindGRFConfig(grfid, FGCM_NEWEST_VALID); + if (s != NULL) c = new GRFConfig(*s); + } + } + if (c == NULL) c = new GRFConfig(filename); /* Parse parameters */ if (!StrEmpty(item->value)) { - c->num_params = ParseIntList(item->value, (int*)c->param, lengthof(c->param)); - if (c->num_params == (byte)-1) { - SetDParamStr(0, item->name); + int count = ParseIntList(item->value, (int*)c->param, lengthof(c->param)); + if (count < 0) { + SetDParamStr(0, filename); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_ARRAY, WL_CRITICAL); - c->num_params = 0; + count = 0; } + c->num_params = count; } /* Check if item is valid */ @@ -1447,7 +1547,7 @@ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_stati SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN); } - SetDParamStr(0, item->name); + SetDParamStr(0, StrEmpty(filename) ? item->name : filename); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_GRF, WL_CRITICAL); delete c; continue; @@ -1457,7 +1557,7 @@ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_stati bool duplicate = false; for (const GRFConfig *gc = first; gc != NULL; gc = gc->next) { if (gc->ident.grfid == c->ident.grfid) { - SetDParamStr(0, item->name); + SetDParamStr(0, c->filename); SetDParamStr(1, gc->filename); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_DUPLICATE_GRFID, WL_CRITICAL); duplicate = true; @@ -1491,7 +1591,7 @@ static void AISaveConfig(IniFile *ini, const char *grpname) AIConfig *config = AIConfig::GetConfig(c, AIConfig::SSS_FORCE_NEWGAME); const char *name; char value[1024]; - config->SettingsToString(value, lengthof(value)); + config->SettingsToString(value, lastof(value)); if (config->HasScript()) { name = config->GetName(); @@ -1499,7 +1599,7 @@ static void AISaveConfig(IniFile *ini, const char *grpname) name = "none"; } - IniItem *item = new IniItem(group, name, strlen(name)); + IniItem *item = new IniItem(group, name); item->SetValue(value); } } @@ -1514,7 +1614,7 @@ static void GameSaveConfig(IniFile *ini, const char *grpname) GameConfig *config = GameConfig::GetConfig(AIConfig::SSS_FORCE_NEWGAME); const char *name; char value[1024]; - config->SettingsToString(value, lengthof(value)); + config->SettingsToString(value, lastof(value)); if (config->HasScript()) { name = config->GetName(); @@ -1522,7 +1622,7 @@ static void GameSaveConfig(IniFile *ini, const char *grpname) name = "none"; } - IniItem *item = new IniItem(group, name, strlen(name)); + IniItem *item = new IniItem(group, name); item->SetValue(value); } @@ -1535,7 +1635,7 @@ static void SaveVersionInConfig(IniFile *ini) IniGroup *group = ini->GetGroup("version"); char version[9]; - snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version); + seprintf(version, lastof(version), "%08X", _openttd_newgrf_version); const char * const versions[][2] = { { "version_string", _openttd_revision }, @@ -1555,10 +1655,15 @@ static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *li const GRFConfig *c; for (c = list; c != NULL; c = c->next) { + /* Hex grfid (4 bytes in nibbles), "|", hex md5sum (16 bytes in nibbles), "|", file system path. */ + char key[4 * 2 + 1 + 16 * 2 + 1 + MAX_PATH]; char params[512]; GRFBuildParamList(params, c, lastof(params)); - group->GetItem(c->filename, true)->SetValue(params); + char *pos = key + seprintf(key, lastof(key), "%08X|", BSWAP32(c->ident.grfid)); + pos = md5sumToString(pos, lastof(key), c->ident.md5sum); + seprintf(pos, lastof(key), "|%s", c->filename); + group->GetItem(key, true)->SetValue(params); } } @@ -1657,7 +1762,7 @@ void GetGRFPresetList(GRFPresetList *list) IniGroup *group; for (group = ini->group; group != NULL; group = group->next) { if (strncmp(group->name, "preset-", 7) == 0) { - *list->Append() = strdup(group->name + 7); + *list->Append() = stredup(group->name + 7); } } @@ -1672,8 +1777,9 @@ void GetGRFPresetList(GRFPresetList *list) */ GRFConfig *LoadGRFPresetFromConfig(const char *config_name) { - char *section = (char*)alloca(strlen(config_name) + 8); - sprintf(section, "preset-%s", config_name); + size_t len = strlen(config_name) + 8; + char *section = (char*)alloca(len); + seprintf(section, section + len - 1, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); GRFConfig *config = GRFLoadConfig(ini, section, false); @@ -1690,8 +1796,9 @@ GRFConfig *LoadGRFPresetFromConfig(const char *config_name) */ void SaveGRFPresetToConfig(const char *config_name, GRFConfig *config) { - char *section = (char*)alloca(strlen(config_name) + 8); - sprintf(section, "preset-%s", config_name); + size_t len = strlen(config_name) + 8; + char *section = (char*)alloca(len); + seprintf(section, section + len - 1, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); GRFSaveConfig(ini, section, config); @@ -1705,8 +1812,9 @@ void SaveGRFPresetToConfig(const char *config_name, GRFConfig *config) */ void DeleteGRFPresetFromConfig(const char *config_name) { - char *section = (char*)alloca(strlen(config_name) + 8); - sprintf(section, "preset-%s", config_name); + size_t len = strlen(config_name) + 8; + char *section = (char*)alloca(len); + seprintf(section, section + len - 1, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); ini->RemoveGroup(section); @@ -1736,7 +1844,7 @@ CommandCost CmdChangeSetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uin const SettingDesc *sd = GetSettingDescription(p1); if (sd == NULL) return CMD_ERROR; - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) return CMD_ERROR; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) return CMD_ERROR; if (!sd->IsEditable(true)) return CMD_ERROR; @@ -1924,10 +2032,10 @@ bool SetSettingValue(uint index, const char *value, bool force_newgame) if (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) { char **var = (char**)GetVariableAddress((_game_mode == GM_MENU || force_newgame) ? &_settings_newgame : &_settings_game, &sd->save); free(*var); - *var = strcmp(value, "(null)") == 0 ? NULL : strdup(value); + *var = strcmp(value, "(null)") == 0 ? NULL : stredup(value); } else { char *var = (char*)GetVariableAddress(NULL, &sd->save); - ttd_strlcpy(var, value, sd->save.length); + strecpy(var, value, &var[sd->save.length - 1]); } if (sd->desc.proc != NULL) sd->desc.proc(0); @@ -1947,13 +2055,13 @@ const SettingDesc *GetSettingFromName(const char *name, uint *i) /* First check all full names */ for (*i = 0, sd = _settings; sd->save.cmd != SL_END; sd++, (*i)++) { - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue; if (strcmp(sd->desc.name, name) == 0) return sd; } /* Then check the shortcut variant of the name. */ for (*i = 0, sd = _settings; sd->save.cmd != SL_END; sd++, (*i)++) { - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue; const char *short_name = strchr(sd->desc.name, '.'); if (short_name != NULL) { short_name++; @@ -1964,7 +2072,7 @@ const SettingDesc *GetSettingFromName(const char *name, uint *i) if (strncmp(name, "company.", 8) == 0) name += 8; /* And finally the company-based settings */ for (*i = 0, sd = _company_settings; sd->save.cmd != SL_END; sd++, (*i)++) { - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue; if (strcmp(sd->desc.name, name) == 0) return sd; } @@ -2038,9 +2146,9 @@ void IConsoleGetSetting(const char *name, bool force_newgame) IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s'", name, (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr); } else { if (sd->desc.cmd == SDT_BOOLX) { - snprintf(value, sizeof(value), (*(const bool*)ptr != 0) ? "on" : "off"); + seprintf(value, lastof(value), (*(const bool*)ptr != 0) ? "on" : "off"); } else { - snprintf(value, sizeof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); + seprintf(value, lastof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); } IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s' (min: %s%d, max: %u)", @@ -2058,17 +2166,17 @@ void IConsoleListSettings(const char *prefilter) IConsolePrintF(CC_WARNING, "All settings with their current value:"); for (const SettingDesc *sd = _settings; sd->save.cmd != SL_END; sd++) { - if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; + if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue; if (prefilter != NULL && strstr(sd->desc.name, prefilter) == NULL) continue; char value[80]; const void *ptr = GetVariableAddress(&GetGameSettings(), &sd->save); if (sd->desc.cmd == SDT_BOOLX) { - snprintf(value, lengthof(value), (*(const bool *)ptr != 0) ? "on" : "off"); + seprintf(value, lastof(value), (*(const bool *)ptr != 0) ? "on" : "off"); } else if (sd->desc.cmd == SDT_STRING) { - snprintf(value, sizeof(value), "%s", (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr); + seprintf(value, lastof(value), "%s", (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr); } else { - snprintf(value, lengthof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); + seprintf(value, lastof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); } IConsolePrintF(CC_DEFAULT, "%s = %s", sd->desc.name, value); } @@ -2077,7 +2185,7 @@ void IConsoleListSettings(const char *prefilter) } /** - * Save and load handler for settings + * Save and load handler for settings, except for those which go in the PATX chunk * @param osd SettingDesc struct containing all information * @param object can be either NULL in which case we load global variables or * a pointer to a struct which is getting saved @@ -2085,6 +2193,7 @@ void IConsoleListSettings(const char *prefilter) static void LoadSettings(const SettingDesc *osd, void *object) { for (; osd->save.cmd != SL_END; osd++) { + if (osd->patx_name != NULL) continue; const SaveLoad *sld = &osd->save; void *ptr = GetVariableAddress(object, sld); @@ -2094,7 +2203,7 @@ static void LoadSettings(const SettingDesc *osd, void *object) } /** - * Save and load handler for settings + * Save and load handler for settings, except for those which go in the PATX chunk * @param sd SettingDesc struct containing all information * @param object can be either NULL in which case we load global variables or * a pointer to a struct which is getting saved @@ -2106,16 +2215,195 @@ static void SaveSettings(const SettingDesc *sd, void *object) const SettingDesc *i; size_t length = 0; for (i = sd; i->save.cmd != SL_END; i++) { + if (i->patx_name != NULL) continue; length += SlCalcObjMemberLength(object, &i->save); } SlSetLength(length); for (i = sd; i->save.cmd != SL_END; i++) { + if (i->patx_name != NULL) continue; void *ptr = GetVariableAddress(object, &i->save); SlObjectMember(ptr, &i->save); } } +/** @file + * + * The PATX chunk stores additional settings in an unordered format + * which is tolerant of extra, missing or reordered settings. + * Additional settings generally means those that aren't in trunk. + * + * The PATX chunk contents has the following format: + * + * uint32 chunk flags + * uint32 number of settings + * For each of N settings: + * uint32 setting flags + * SLE_STR setting name + * uint32 length of setting field + * N bytes setting field + */ + +/** Sorted list of PATX settings, generated by MakeSettingsPatxList */ +static std::vector _sorted_patx_settings; + +/** + * Prepare a sorted list of settings to be potentially be loaded out of the PATX chunk + * This is to enable efficient lookup of settings by name + * This is stored in _sorted_patx_settings + */ +static void MakeSettingsPatxList(const SettingDesc *sd) +{ + static const SettingDesc *previous = NULL; + + if (sd == previous) return; + + _sorted_patx_settings.clear(); + for (const SettingDesc *desc = sd; desc->save.cmd != SL_END; desc++) { + if (desc->patx_name == NULL) continue; + _sorted_patx_settings.push_back(desc); + } + + // this makes me miss lambdas :/ + struct StringSorter { + bool operator()(const SettingDesc *a, const SettingDesc *b) + { + return strcmp(a->patx_name, b->patx_name) < 0; + } + }; + std::sort(_sorted_patx_settings.begin(), _sorted_patx_settings.end(), StringSorter()); +} + +/** + * Load handler for settings which go in the PATX chunk + * @param osd SettingDesc struct containing all information + * @param object can be either NULL in which case we load global variables or + * a pointer to a struct which is getting saved + */ +static void LoadSettingsPatx(const SettingDesc *sd, void *object) +{ + MakeSettingsPatxList(sd); + + struct SettingsPatxLoad { + uint32 flags; + char name[256]; + uint32 setting_length; + }; + SettingsPatxLoad current_setting; + + static const SaveLoad _settings_patx_desc[] = { + SLE_VAR(SettingsPatxLoad, flags, SLE_UINT32), + SLE_STR(SettingsPatxLoad, name, SLE_STRB, 256), + SLE_VAR(SettingsPatxLoad, setting_length, SLE_UINT32), + SLE_END() + }; + + uint32 flags = SlReadUint32(); + // flags are not in use yet, reserve for future expansion + if (flags != 0) SlErrorCorruptFmt("PATX chunk: unknown chunk header flags: 0x%X", flags); + + uint32 settings_count = SlReadUint32(); + for (uint32 i = 0; i < settings_count; i++) { + SlObject(¤t_setting, _settings_patx_desc); + + // flags are not in use yet, reserve for future expansion + if (current_setting.flags != 0) SlErrorCorruptFmt("PATX chunk: unknown setting header flags: 0x%X", current_setting.flags); + + // now try to find corresponding setting, this would be much easier with C++11 support... + bool exact_match = false; + struct StringSearcher { + bool &m_exact_match; + + StringSearcher(bool &exact_match) + : m_exact_match(exact_match) { } + + bool operator()(const SettingDesc *a, const char *b) + { + int result = strcmp(a->patx_name, b); + if (result == 0) m_exact_match = true; + return result < 0; + } + }; + std::vector::iterator iter = std::lower_bound(_sorted_patx_settings.begin(), _sorted_patx_settings.end(), current_setting.name, StringSearcher(exact_match)); + + if (exact_match) { + assert(iter != _sorted_patx_settings.end()); + // found setting + const SaveLoad *sld = &((*iter)->save); + size_t read = SlGetBytesRead(); + void *ptr = GetVariableAddress(object, sld); + SlObjectMember(ptr, sld); + if (SlGetBytesRead() != read + current_setting.setting_length) { + SlErrorCorruptFmt("PATX chunk: setting read length mismatch for setting: '%s'", current_setting.name); + } + if (IsNumericType(sld->conv)) Write_ValidateSetting(ptr, *iter, ReadValue(ptr, sld->conv)); + } else { + DEBUG(sl, 1, "PATX chunk: Could not find setting: '%s', ignoring", current_setting.name); + SlSkipBytes(current_setting.setting_length); + } + } +} + +/** + * Save handler for settings which go in the PATX chunk + * @param sd SettingDesc struct containing all information + * @param object can be either NULL in which case we load global variables or + * a pointer to a struct which is getting saved + */ +static void SaveSettingsPatx(const SettingDesc *sd, void *object) +{ + struct SettingsPatxSave { + uint32 flags; + const char *name; + uint32 setting_length; + }; + SettingsPatxSave current_setting; + + static const SaveLoad _settings_patx_desc[] = { + SLE_VAR(SettingsPatxSave, flags, SLE_UINT32), + SLE_STR(SettingsPatxSave, name, SLE_STR, 0), + SLE_VAR(SettingsPatxSave, setting_length, SLE_UINT32), + SLE_END() + }; + + struct SettingToAdd { + const SettingDesc *setting; + uint32 setting_length; + }; + std::vector settings_to_add; + + size_t length = 8; + for (const SettingDesc *desc = sd; desc->save.cmd != SL_END; desc++) { + if (desc->patx_name == NULL) continue; + uint32 setting_length = SlCalcObjMemberLength(object, &desc->save); + if (!setting_length) continue; + + current_setting.name = desc->patx_name; + + // add length of setting header + length += SlCalcObjLength(¤t_setting, _settings_patx_desc); + + // add length of actual setting + length += setting_length; + + settings_to_add.push_back({ desc, setting_length }); + } + SlSetLength(length); + + SlWriteUint32(0); // flags + SlWriteUint32(settings_to_add.size()); // settings count + + for (size_t i = 0; i < settings_to_add.size(); i++) { + const SettingDesc *desc = settings_to_add[i].setting; + current_setting.flags = 0; + current_setting.name = desc->patx_name; + current_setting.setting_length = settings_to_add[i].setting_length; + SlObject(¤t_setting, _settings_patx_desc); + void *ptr = GetVariableAddress(object, &desc->save); + SlObjectMember(ptr, &desc->save); + } +} + static void Load_OPTS() { /* Copy over default setting since some might not get loaded in @@ -2144,6 +2432,21 @@ static void Save_PATS() SaveSettings(_settings, &_settings_game); } +static void Load_PATX() +{ + LoadSettingsPatx(_settings, &_settings_game); +} + +static void Check_PATX() +{ + LoadSettingsPatx(_settings, &_load_check_data.settings); +} + +static void Save_PATX() +{ + SaveSettingsPatx(_settings, &_settings_game); +} + void CheckConfig() { /* @@ -2158,7 +2461,8 @@ void CheckConfig() extern const ChunkHandler _setting_chunk_handlers[] = { { 'OPTS', NULL, Load_OPTS, NULL, NULL, CH_RIFF}, - { 'PATS', Save_PATS, Load_PATS, NULL, Check_PATS, CH_RIFF | CH_LAST}, + { 'PATS', Save_PATS, Load_PATS, NULL, Check_PATS, CH_RIFF}, + { 'PATX', Save_PATX, Load_PATX, NULL, Check_PATX, CH_RIFF | CH_LAST}, }; static bool IsSignedVarMemType(VarType vt) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 76eb032e12..8e08c40d22 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -15,7 +15,6 @@ #include "settings_gui.h" #include "textbuf_gui.h" #include "command_func.h" -#include "screenshot.h" #include "network/network.h" #include "town.h" #include "settings_internal.h" @@ -38,6 +37,10 @@ #include "stringfilter_type.h" #include "querystring_gui.h" +#include + +#include "safeguards.h" + static const StringID _driveside_dropdown[] = { STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT, @@ -54,10 +57,19 @@ static const StringID _autosave_dropdown[] = { INVALID_STRING_ID, }; +static const StringID _gui_zoom_dropdown[] = { + STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL, + STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM, + STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM, + INVALID_STRING_ID, +}; + int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1; ///< Number of original town names. static StringID *_grf_names = NULL; ///< Pointer to town names defined by NewGRFs. static int _nb_grf_names = 0; ///< Number of town names defined by NewGRFs. +static Dimension _circle_size; ///< Dimension of the circle +/- icon. This is here as not all users are within the class of the settings window. + static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd); /** Allocate memory for the NewGRF town names. */ @@ -109,7 +121,7 @@ static DropDownList *BuiltSetDropDownList(int *selected_index) DropDownList *list = new DropDownList(); for (int i = 0; i < n; i++) { - list->push_back(new DropDownListCharStringItem(T::GetSet(i)->name, i, (_game_mode == GM_MENU) ? false : (*selected_index != i))); + *list->Append() = new DropDownListCharStringItem(T::GetSet(i)->name, i, (_game_mode == GM_MENU) ? false : (*selected_index != i)); } return list; @@ -187,13 +199,13 @@ struct GameOptionsWindow : Window { /* Add non-custom currencies; sorted naturally */ for (uint i = 0; i < CURRENCY_END; items++, i++) { if (i == CURRENCY_CUSTOM) continue; - list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i))); + *list->Append() = new DropDownListStringItem(*items, i, HasBit(disabled, i)); } - list->sort(DropDownListStringItem::NatSortFunc); + QSortT(list->Begin(), list->Length(), DropDownListStringItem::NatSortFunc); /* Append custom currency at the end */ - list->push_back(new DropDownListItem(-1, false)); // separator line - list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CUSTOM, CURRENCY_CUSTOM, HasBit(disabled, CURRENCY_CUSTOM))); + *list->Append() = new DropDownListItem(-1, false); // separator line + *list->Append() = new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CUSTOM, CURRENCY_CUSTOM, HasBit(disabled, CURRENCY_CUSTOM)); break; } @@ -211,7 +223,7 @@ struct GameOptionsWindow : Window { } for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) { - list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i))); + *list->Append() = new DropDownListStringItem(*items, i, HasBit(disabled, i)); } break; } @@ -222,25 +234,25 @@ struct GameOptionsWindow : Window { int enabled_item = (_game_mode == GM_MENU || Town::GetNumItems() == 0) ? -1 : *selected_index; - /* Add and sort original townnames generators */ - for (int i = 0; i < _nb_orig_names; i++) { - list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i, i, enabled_item != i && enabled_item >= 0)); - } - list->sort(DropDownListStringItem::NatSortFunc); - /* Add and sort newgrf townnames generators */ - DropDownList newgrf_names; for (int i = 0; i < _nb_grf_names; i++) { int result = _nb_orig_names + i; - newgrf_names.push_back(new DropDownListStringItem(_grf_names[i], result, enabled_item != result && enabled_item >= 0)); + *list->Append() = new DropDownListStringItem(_grf_names[i], result, enabled_item != result && enabled_item >= 0); } - newgrf_names.sort(DropDownListStringItem::NatSortFunc); + QSortT(list->Begin(), list->Length(), DropDownListStringItem::NatSortFunc); + int newgrf_size = list->Length(); /* Insert newgrf_names at the top of the list */ - if (newgrf_names.size() > 0) { - newgrf_names.push_back(new DropDownListItem(-1, false)); // separator line - list->splice(list->begin(), newgrf_names); + if (newgrf_size > 0) { + *list->Append() = new DropDownListItem(-1, false); // separator line + newgrf_size++; + } + + /* Add and sort original townnames generators */ + for (int i = 0; i < _nb_orig_names; i++) { + *list->Append() = new DropDownListStringItem(STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i, i, enabled_item != i && enabled_item >= 0); } + QSortT(list->Begin() + newgrf_size, list->Length() - newgrf_size, DropDownListStringItem::NatSortFunc); break; } @@ -249,7 +261,7 @@ struct GameOptionsWindow : Window { *selected_index = _settings_client.gui.autosave; const StringID *items = _autosave_dropdown; for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) { - list->push_back(new DropDownListStringItem(*items, i, false)); + *list->Append() = new DropDownListStringItem(*items, i, false); } break; } @@ -258,28 +270,31 @@ struct GameOptionsWindow : Window { list = new DropDownList(); for (uint i = 0; i < _languages.Length(); i++) { if (&_languages[i] == _current_language) *selected_index = i; - list->push_back(new DropDownListStringItem(SPECSTR_LANGUAGE_START + i, i, false)); + *list->Append() = new DropDownListStringItem(SPECSTR_LANGUAGE_START + i, i, false); } - list->sort(DropDownListStringItem::NatSortFunc); + QSortT(list->Begin(), list->Length(), DropDownListStringItem::NatSortFunc); break; } case WID_GO_RESOLUTION_DROPDOWN: // Setup resolution dropdown + if (_num_resolutions == 0) break; + list = new DropDownList(); *selected_index = GetCurRes(); for (int i = 0; i < _num_resolutions; i++) { - list->push_back(new DropDownListStringItem(SPECSTR_RESOLUTION_START + i, i, false)); + *list->Append() = new DropDownListStringItem(SPECSTR_RESOLUTION_START + i, i, false); } break; - case WID_GO_SCREENSHOT_DROPDOWN: // Setup screenshot format dropdown + case WID_GO_GUI_ZOOM_DROPDOWN: { list = new DropDownList(); - *selected_index = _cur_screenshot_format; - for (uint i = 0; i < _num_screenshot_formats; i++) { - if (!GetScreenshotFormatSupports_32bpp(i) && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 32) continue; - list->push_back(new DropDownListStringItem(SPECSTR_SCREENSHOT_START + i, i, false)); + *selected_index = ZOOM_LVL_OUT_4X - _gui_zoom; + const StringID *items = _gui_zoom_dropdown; + for (int i = 0; *items != INVALID_STRING_ID; items++, i++) { + *list->Append() = new DropDownListStringItem(*items, i, _settings_client.gui.zoom_min > ZOOM_LVL_OUT_4X - i); } break; + } case WID_GO_BASE_GRF_DROPDOWN: list = BuiltSetDropDownList(selected_index); @@ -309,7 +324,7 @@ struct GameOptionsWindow : Window { case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break; case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break; case WID_GO_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _num_resolutions ? STR_GAME_OPTIONS_RESOLUTION_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break; - case WID_GO_SCREENSHOT_DROPDOWN: SetDParam(0, SPECSTR_SCREENSHOT_START + _cur_screenshot_format); break; + case WID_GO_GUI_ZOOM_DROPDOWN: SetDParam(0, _gui_zoom_dropdown[ZOOM_LVL_OUT_4X - _gui_zoom]); break; case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break; case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break; case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break; @@ -392,14 +407,12 @@ struct GameOptionsWindow : Window { DropDownList *list = this->BuildDropDownList(widget, &selected); if (list != NULL) { /* Find the biggest item for the default size. */ - for (DropDownList::iterator it = list->begin(); it != list->end(); it++) { - static const Dimension extra = {WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM}; + for (const DropDownListItem * const *it = list->Begin(); it != list->End(); it++) { Dimension string_dim; int width = (*it)->Width(); - string_dim.width = width + extra.width; - string_dim.height = (*it)->Height(width) + extra.height; + string_dim.width = width + padding.width; + string_dim.height = (*it)->Height(width) + padding.height; *size = maxdim(*size, string_dim); - delete *it; } delete list; } @@ -442,6 +455,8 @@ struct GameOptionsWindow : Window { DropDownList *list = this->BuildDropDownList(widget, &selected); if (list != NULL) { ShowDropDownList(this, list, selected, widget); + } else { + if (widget == WID_GO_RESOLUTION_DROPDOWN) ShowErrorMessage(STR_ERROR_RESOLUTION_LIST_FAILED, INVALID_STRING_ID, WL_ERROR); } break; } @@ -460,7 +475,7 @@ struct GameOptionsWindow : Window { const char *name = T::GetSet(index)->name; free(T::ini_set); - T::ini_set = strdup(name); + T::ini_set = stredup(name); T::SetSet(name); this->reload = true; @@ -512,9 +527,11 @@ struct GameOptionsWindow : Window { } break; - case WID_GO_SCREENSHOT_DROPDOWN: // Change screenshot format - SetScreenshotFormat(index); - this->SetDirty(); + case WID_GO_GUI_ZOOM_DROPDOWN: + GfxClearSpriteCache(); + _gui_zoom = (ZoomLevel)(ZOOM_LVL_OUT_4X - index); + UpdateCursorSize(); + LoadStringWidthTable(); break; case WID_GO_BASE_GRF_DROPDOWN: @@ -563,9 +580,6 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_GO_BACKGROUND), SetPIP(6, 6, 10), NWidget(NWID_HORIZONTAL), SetPIP(10, 10, 10), NWidget(NWID_VERTICAL), SetPIP(0, 6, 0), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), - EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_ROADSIDE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP), SetFill(1, 0), EndContainer(), @@ -579,6 +593,9 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP), EndContainer(), EndContainer(), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_ZOOM_FRAME, STR_NULL), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_GUI_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0), + EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 6, 0), @@ -588,8 +605,8 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_LANGUAGE, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_LANG_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_LANGUAGE_TOOLTIP), SetFill(1, 0), EndContainer(), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_SCREENSHOT_FORMAT, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_SCREENSHOT_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP), SetFill(1, 0), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 0), SetFill(0, 1), EndContainer(), @@ -664,27 +681,6 @@ enum SettingEntryFlags { SEF_LAST_FIELD = 0x04, ///< This entry is the last one in a (sub-)page SEF_FILTERED = 0x08, ///< Entry is hidden by the string filter - - /* Entry kind */ - SEF_SETTING_KIND = 0x10, ///< Entry kind: Entry is a setting - SEF_SUBTREE_KIND = 0x20, ///< Entry kind: Entry is a sub-tree - SEF_KIND_MASK = (SEF_SETTING_KIND | SEF_SUBTREE_KIND), ///< Bit-mask for fetching entry kind -}; - -struct SettingsPage; // Forward declaration - -/** Data fields for a sub-page (#SEF_SUBTREE_KIND kind)*/ -struct SettingEntrySubtree { - SettingsPage *page; ///< Pointer to the sub-page - bool folded; ///< Sub-page is folded (not visible except for its title) - StringID title; ///< Title of the sub-page -}; - -/** Data fields for a single setting (#SEF_SETTING_KIND kind) */ -struct SettingEntrySetting { - const char *name; ///< Name of the setting - const SettingDesc *setting; ///< Setting description of the setting - uint index; ///< Index of the setting in the settings table }; /** How the list of advanced settings is filtered. */ @@ -696,30 +692,28 @@ enum RestrictionMode { RM_CHANGED_AGAINST_NEW, ///< Show only settings which are different compared to the user's new game setting values. RM_END, ///< End for iteration. }; +DECLARE_POSTFIX_INCREMENT(RestrictionMode) /** Filter for settings list. */ struct SettingFilter { StringFilter string; ///< Filter string. + RestrictionMode min_cat; ///< Minimum category needed to display all filtered strings (#RM_BASIC, #RM_ADVANCED, or #RM_ALL). + bool type_hides; ///< Whether the type hides filtered strings. RestrictionMode mode; ///< Filter based on category. - SettingType type; ///< Filter based on type. + SettingType type; ///< Filter based on type. }; /** Data structure describing a single setting in a tab */ -struct SettingEntry { +struct BaseSettingEntry { byte flags; ///< Flags of the setting entry. @see SettingEntryFlags byte level; ///< Nesting level of this setting entry - union { - SettingEntrySetting entry; ///< Data fields if entry is a setting - SettingEntrySubtree sub; ///< Data fields if entry is a sub-page - } d; ///< Data fields for each kind - SettingEntry(const char *nm); - SettingEntry(SettingsPage *sub, StringID title); + BaseSettingEntry() : flags(0), level(0) {} + virtual ~BaseSettingEntry() {} - void Init(byte level); - void FoldAll(); - void UnFoldAll(); - void SetButtons(byte new_val); + virtual void Init(byte level = 0); + virtual void FoldAll() {} + virtual void UnFoldAll() {} /** * Set whether this is the last visible entry of the parent node. @@ -727,38 +721,70 @@ struct SettingEntry { */ void SetLastField(bool last_field) { if (last_field) SETBITS(this->flags, SEF_LAST_FIELD); else CLRBITS(this->flags, SEF_LAST_FIELD); } - uint Length() const; - void GetFoldingState(bool &all_folded, bool &all_unfolded) const; - bool IsVisible(const SettingEntry *item) const; - SettingEntry *FindEntry(uint row, uint *cur_row); - uint GetMaxHelpHeight(int maxw); + virtual uint Length() const = 0; + virtual void GetFoldingState(bool &all_folded, bool &all_unfolded) const {} + virtual bool IsVisible(const BaseSettingEntry *item) const; + virtual BaseSettingEntry *FindEntry(uint row, uint *cur_row); + virtual uint GetMaxHelpHeight(int maxw) { return 0; } - bool IsFiltered() const; - bool UpdateFilterState(SettingFilter &filter, bool force_visible); + /** + * Check whether an entry is hidden due to filters + * @return true if hidden. + */ + bool IsFiltered() const { return (this->flags & SEF_FILTERED) != 0; } + + virtual bool UpdateFilterState(SettingFilter &filter, bool force_visible) = 0; + + virtual uint Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row = 0, uint parent_last = 0) const; + +protected: + virtual void DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const = 0; +}; - uint Draw(GameSettings *settings_ptr, int base_x, int base_y, int max_x, uint first_row, uint max_row, uint cur_row, uint parent_last, SettingEntry *selected); +/** Standard setting */ +struct SettingEntry : BaseSettingEntry { + const char *name; ///< Name of the setting + const SettingDesc *setting; ///< Setting description of the setting + uint index; ///< Index of the setting in the settings table + + SettingEntry(const char *name); + + virtual void Init(byte level = 0); + virtual uint Length() const; + virtual uint GetMaxHelpHeight(int maxw); + virtual bool UpdateFilterState(SettingFilter &filter, bool force_visible); + + void SetButtons(byte new_val); /** * Get the help text of a single setting. * @return The requested help text. */ - inline StringID GetHelpText() + inline StringID GetHelpText() const { - assert((this->flags & SEF_KIND_MASK) == SEF_SETTING_KIND); - return this->d.entry.setting->desc.str_help; + return this->setting->desc.str_help; } - void SetValueDParams(uint first_param, int32 value); + void SetValueDParams(uint first_param, int32 value) const; + +protected: + virtual void DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const; private: - void DrawSetting(GameSettings *settings_ptr, int x, int y, int max_x, int state, bool highlight); bool IsVisibleByRestrictionMode(RestrictionMode mode) const; }; -/** Data structure describing one page of settings in the settings window. */ -struct SettingsPage { - SettingEntry *entries; ///< Array of setting entries of the page. - byte num; ///< Number of entries on the page (statically filled). +/** Containers for BaseSettingEntry */ +struct SettingsContainer { + typedef std::vector EntryVector; + EntryVector entries; ///< Settings on this page + + template + T *Add(T *item) + { + this->entries.push_back(item); + return item; + } void Init(byte level = 0); void FoldAll(); @@ -766,144 +792,163 @@ struct SettingsPage { uint Length() const; void GetFoldingState(bool &all_folded, bool &all_unfolded) const; - bool IsVisible(const SettingEntry *item) const; - SettingEntry *FindEntry(uint row, uint *cur_row) const; + bool IsVisible(const BaseSettingEntry *item) const; + BaseSettingEntry *FindEntry(uint row, uint *cur_row); uint GetMaxHelpHeight(int maxw); bool UpdateFilterState(SettingFilter &filter, bool force_visible); - uint Draw(GameSettings *settings_ptr, int base_x, int base_y, int max_x, uint first_row, uint max_row, SettingEntry *selected, uint cur_row = 0, uint parent_last = 0) const; + uint Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row = 0, uint parent_last = 0) const; }; +/** Data structure describing one page of settings in the settings window. */ +struct SettingsPage : BaseSettingEntry, SettingsContainer { + StringID title; ///< Title of the sub-page + bool folded; ///< Sub-page is folded (not visible except for its title) -/* == SettingEntry methods == */ + SettingsPage(StringID title); + + virtual void Init(byte level = 0); + virtual void FoldAll(); + virtual void UnFoldAll(); + + virtual uint Length() const; + virtual void GetFoldingState(bool &all_folded, bool &all_unfolded) const; + virtual bool IsVisible(const BaseSettingEntry *item) const; + virtual BaseSettingEntry *FindEntry(uint row, uint *cur_row); + virtual uint GetMaxHelpHeight(int maxw) { return SettingsContainer::GetMaxHelpHeight(maxw); } + + virtual bool UpdateFilterState(SettingFilter &filter, bool force_visible); + + virtual uint Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row = 0, uint parent_last = 0) const; + +protected: + virtual void DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const; +}; + +/* == BaseSettingEntry methods == */ /** - * Constructor for a single setting in the 'advanced settings' window - * @param nm Name of the setting in the setting table + * Initialization of a setting entry + * @param level Page nesting level of this entry */ -SettingEntry::SettingEntry(const char *nm) +void BaseSettingEntry::Init(byte level) { - this->flags = SEF_SETTING_KIND; - this->level = 0; - this->d.entry.name = nm; - this->d.entry.setting = NULL; - this->d.entry.index = 0; + this->level = level; } /** - * Constructor for a sub-page in the 'advanced settings' window - * @param sub Sub-page - * @param title Title of the sub-page + * Check whether an entry is visible and not folded or filtered away. + * Note: This does not consider the scrolling range; it might still require scrolling to make the setting really visible. + * @param item Entry to search for. + * @return true if entry is visible. */ -SettingEntry::SettingEntry(SettingsPage *sub, StringID title) +bool BaseSettingEntry::IsVisible(const BaseSettingEntry *item) const { - this->flags = SEF_SUBTREE_KIND; - this->level = 0; - this->d.sub.page = sub; - this->d.sub.folded = true; - this->d.sub.title = title; + if (this->IsFiltered()) return false; + if (this == item) return true; + return false; } /** - * Initialization of a setting entry - * @param level Page nesting level of this entry + * Find setting entry at row \a row_num + * @param row_num Index of entry to return + * @param cur_row Current row number + * @return The requested setting entry or \c NULL if it not found (folded or filtered) */ -void SettingEntry::Init(byte level) +BaseSettingEntry *BaseSettingEntry::FindEntry(uint row_num, uint *cur_row) { - this->level = level; - - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - this->d.entry.setting = GetSettingFromName(this->d.entry.name, &this->d.entry.index); - assert(this->d.entry.setting != NULL); - break; - case SEF_SUBTREE_KIND: - this->d.sub.page->Init(level + 1); - break; - default: NOT_REACHED(); - } + if (this->IsFiltered()) return NULL; + if (row_num == *cur_row) return this; + (*cur_row)++; + return NULL; } -/** Recursively close all (filtered) folds of sub-pages */ -void SettingEntry::FoldAll() +/** + * Draw a row in the settings panel. + * + * The scrollbar uses rows of the page, while the page data structure is a tree of #SettingsPage and #SettingEntry objects. + * As a result, the drawing routing traverses the tree from top to bottom, counting rows in \a cur_row until it reaches \a first_row. + * Then it enables drawing rows while traversing until \a max_row is reached, at which point drawing is terminated. + * + * The \a parent_last parameter ensures that the vertical lines at the left are + * only drawn when another entry follows, that it prevents output like + * \verbatim + * |-- setting + * |-- (-) - Title + * | |-- setting + * | |-- setting + * \endverbatim + * The left-most vertical line is not wanted. It is prevented by setting the + * appropriate bit in the \a parent_last parameter. + * + * @param settings_ptr Pointer to current values of all settings + * @param left Left-most position in window/panel to start drawing \a first_row + * @param right Right-most x position to draw strings at. + * @param y Upper-most position in window/panel to start drawing \a first_row + * @param first_row First row number to draw + * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw) + * @param selected Selected entry by the user. + * @param cur_row Current row number (internal variable) + * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field) + * @return Row number of the next row to draw + */ +uint BaseSettingEntry::Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row, uint parent_last) const { - if (this->IsFiltered()) return; - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - break; - - case SEF_SUBTREE_KIND: - this->d.sub.folded = true; - this->d.sub.page->FoldAll(); - break; + if (this->IsFiltered()) return cur_row; + if (cur_row >= max_row) return cur_row; - default: NOT_REACHED(); - } -} + bool rtl = _current_text_dir == TD_RTL; + int offset = rtl ? -4 : 4; + int level_width = rtl ? -LEVEL_WIDTH : LEVEL_WIDTH; -/** Recursively open all (filtered) folds of sub-pages */ -void SettingEntry::UnFoldAll() -{ - if (this->IsFiltered()) return; - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - break; + int x = rtl ? right : left; + if (cur_row >= first_row) { + int colour = _colour_gradient[COLOUR_ORANGE][4]; + y += (cur_row - first_row) * SETTING_HEIGHT; // Compute correct y start position - case SEF_SUBTREE_KIND: - this->d.sub.folded = false; - this->d.sub.page->UnFoldAll(); - break; + /* Draw vertical for parent nesting levels */ + for (uint lvl = 0; lvl < this->level; lvl++) { + if (!HasBit(parent_last, lvl)) GfxDrawLine(x + offset, y, x + offset, y + SETTING_HEIGHT - 1, colour); + x += level_width; + } + /* draw own |- prefix */ + int halfway_y = y + SETTING_HEIGHT / 2; + int bottom_y = (flags & SEF_LAST_FIELD) ? halfway_y : y + SETTING_HEIGHT - 1; + GfxDrawLine(x + offset, y, x + offset, bottom_y, colour); + /* Small horizontal line from the last vertical line */ + GfxDrawLine(x + offset, halfway_y, x + level_width - offset, halfway_y, colour); + x += level_width; - default: NOT_REACHED(); + this->DrawSetting(settings_ptr, rtl ? left : x, rtl ? x : right, y, this == selected); } + cur_row++; + + return cur_row; } +/* == SettingEntry methods == */ + /** - * Recursively accumulate the folding state of the (filtered) tree. - * @param[in,out] all_folded Set to false, if one entry is not folded. - * @param[in,out] all_unfolded Set to false, if one entry is folded. + * Constructor for a single setting in the 'advanced settings' window + * @param name Name of the setting in the setting table */ -void SettingEntry::GetFoldingState(bool &all_folded, bool &all_unfolded) const +SettingEntry::SettingEntry(const char *name) { - if (this->IsFiltered()) return; - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - break; - - case SEF_SUBTREE_KIND: - if (this->d.sub.folded) { - all_unfolded = false; - } else { - all_folded = false; - } - this->d.sub.page->GetFoldingState(all_folded, all_unfolded); - break; - - default: NOT_REACHED(); - } + this->name = name; + this->setting = NULL; + this->index = 0; } /** - * Check whether an entry is visible and not folded or filtered away. - * Note: This does not consider the scrolling range; it might still require scrolling to make the setting really visible. - * @param item Entry to search for. - * @return true if entry is visible. + * Initialization of a setting entry + * @param level Page nesting level of this entry */ -bool SettingEntry::IsVisible(const SettingEntry *item) const +void SettingEntry::Init(byte level) { - if (this->IsFiltered()) return false; - if (this == item) return true; - - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - return false; - - case SEF_SUBTREE_KIND: - return !this->d.sub.folded && this->d.sub.page->IsVisible(item); - - default: NOT_REACHED(); - } + BaseSettingEntry::Init(level); + this->setting = GetSettingFromName(this->name, &this->index); + assert(this->setting != NULL); } /** @@ -917,47 +962,10 @@ void SettingEntry::SetButtons(byte new_val) this->flags = (this->flags & ~SEF_BUTTONS_MASK) | new_val; } -/** Return numbers of rows needed to display the (filtered) entry */ +/** Return number of rows needed to display the (filtered) entry */ uint SettingEntry::Length() const { - if (this->IsFiltered()) return 0; - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - return 1; - case SEF_SUBTREE_KIND: - if (this->d.sub.folded) return 1; // Only displaying the title - - return 1 + this->d.sub.page->Length(); // 1 extra row for the title - default: NOT_REACHED(); - } -} - -/** - * Find setting entry at row \a row_num - * @param row_num Index of entry to return - * @param cur_row Current row number - * @return The requested setting entry or \c NULL if it not found (folded or filtered) - */ -SettingEntry *SettingEntry::FindEntry(uint row_num, uint *cur_row) -{ - if (this->IsFiltered()) return NULL; - if (row_num == *cur_row) return this; - - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - (*cur_row)++; - break; - case SEF_SUBTREE_KIND: - (*cur_row)++; // add one for row containing the title - if (this->d.sub.folded) { - break; - } - - /* sub-page is visible => search it too */ - return this->d.sub.page->FindEntry(row_num, cur_row); - default: NOT_REACHED(); - } - return NULL; + return this->IsFiltered() ? 0 : 1; } /** @@ -967,20 +975,7 @@ SettingEntry *SettingEntry::FindEntry(uint row_num, uint *cur_row) */ uint SettingEntry::GetMaxHelpHeight(int maxw) { - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: return GetStringHeight(this->GetHelpText(), maxw); - case SEF_SUBTREE_KIND: return this->d.sub.page->GetMaxHelpHeight(maxw); - default: NOT_REACHED(); - } -} - -/** - * Check whether an entry is hidden due to filters - * @return true if hidden. - */ -bool SettingEntry::IsFiltered() const -{ - return (this->flags & SEF_FILTERED) != 0; + return GetStringHeight(this->GetHelpText(), maxw); } /** @@ -994,11 +989,10 @@ bool SettingEntry::IsVisibleByRestrictionMode(RestrictionMode mode) const if (mode == RM_ALL) return true; GameSettings *settings_ptr = &GetGameSettings(); - assert((this->flags & SEF_KIND_MASK) == SEF_SETTING_KIND); - const SettingDesc *sd = this->d.entry.setting; + const SettingDesc *sd = this->setting; - if (mode == RM_BASIC) return (this->d.entry.setting->desc.cat & SC_BASIC_LIST) != 0; - if (mode == RM_ADVANCED) return (this->d.entry.setting->desc.cat & SC_ADVANCED_LIST) != 0; + if (mode == RM_BASIC) return (this->setting->desc.cat & SC_BASIC_LIST) != 0; + if (mode == RM_ADVANCED) return (this->setting->desc.cat & SC_ADVANCED_LIST) != 0; /* Read the current value. */ const void *var = ResolveVariableAddress(settings_ptr, sd); @@ -1038,35 +1032,30 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible) CLRBITS(this->flags, SEF_FILTERED); bool visible = true; - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: { - const SettingDesc *sd = this->d.entry.setting; - if (!force_visible && !filter.string.IsEmpty()) { - /* Process the search text filter for this item. */ - filter.string.ResetState(); - const SettingDescBase *sdb = &sd->desc; + const SettingDesc *sd = this->setting; + if (!force_visible && !filter.string.IsEmpty()) { + /* Process the search text filter for this item. */ + filter.string.ResetState(); - SetDParam(0, STR_EMPTY); - filter.string.AddLine(sdb->str); - filter.string.AddLine(this->GetHelpText()); + const SettingDescBase *sdb = &sd->desc; - visible = filter.string.GetState(); - } - if (filter.type != ST_ALL) visible = visible && sd->GetType() == filter.type; - visible = visible && this->IsVisibleByRestrictionMode(filter.mode); - break; + SetDParam(0, STR_EMPTY); + filter.string.AddLine(sdb->str); + filter.string.AddLine(this->GetHelpText()); + + visible = filter.string.GetState(); + } + + if (visible) { + if (filter.type != ST_ALL && sd->GetType() != filter.type) { + filter.type_hides = true; + visible = false; } - case SEF_SUBTREE_KIND: { - if (!force_visible && !filter.string.IsEmpty()) { - filter.string.ResetState(); - filter.string.AddLine(this->d.sub.title); - force_visible = filter.string.GetState(); - } - visible = this->d.sub.page->UpdateFilterState(filter, force_visible); - break; + if (!this->IsVisibleByRestrictionMode(filter.mode)) { + while (filter.min_cat < RM_ALL && (filter.min_cat == filter.mode || !this->IsVisibleByRestrictionMode(filter.min_cat))) filter.min_cat++; + visible = false; } - default: NOT_REACHED(); } if (!visible) SETBITS(this->flags, SEF_FILTERED); @@ -1074,113 +1063,27 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible) } - -/** - * Draw a row in the settings panel. - * - * See SettingsPage::Draw() for an explanation about how drawing is performed. - * - * The \a parent_last parameter ensures that the vertical lines at the left are - * only drawn when another entry follows, that it prevents output like - * \verbatim - * |-- setting - * |-- (-) - Title - * | |-- setting - * | |-- setting - * \endverbatim - * The left-most vertical line is not wanted. It is prevented by setting the - * appropriate bit in the \a parent_last parameter. - * - * @param settings_ptr Pointer to current values of all settings - * @param left Left-most position in window/panel to start drawing \a first_row - * @param right Right-most x position to draw strings at. - * @param base_y Upper-most position in window/panel to start drawing \a first_row - * @param first_row First row number to draw - * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw) - * @param cur_row Current row number (internal variable) - * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field) - * @param selected Selected entry by the user. - * @return Row number of the next row to draw - */ -uint SettingEntry::Draw(GameSettings *settings_ptr, int left, int right, int base_y, uint first_row, uint max_row, uint cur_row, uint parent_last, SettingEntry *selected) -{ - if (this->IsFiltered()) return cur_row; - if (cur_row >= max_row) return cur_row; - - bool rtl = _current_text_dir == TD_RTL; - int offset = rtl ? -4 : 4; - int level_width = rtl ? -LEVEL_WIDTH : LEVEL_WIDTH; - - int x = rtl ? right : left; - int y = base_y; - if (cur_row >= first_row) { - int colour = _colour_gradient[COLOUR_ORANGE][4]; - y = base_y + (cur_row - first_row) * SETTING_HEIGHT; // Compute correct y start position - - /* Draw vertical for parent nesting levels */ - for (uint lvl = 0; lvl < this->level; lvl++) { - if (!HasBit(parent_last, lvl)) GfxDrawLine(x + offset, y, x + offset, y + SETTING_HEIGHT - 1, colour); - x += level_width; - } - /* draw own |- prefix */ - int halfway_y = y + SETTING_HEIGHT / 2; - int bottom_y = (flags & SEF_LAST_FIELD) ? halfway_y : y + SETTING_HEIGHT - 1; - GfxDrawLine(x + offset, y, x + offset, bottom_y, colour); - /* Small horizontal line from the last vertical line */ - GfxDrawLine(x + offset, halfway_y, x + level_width - offset, halfway_y, colour); - x += level_width; - } - - switch (this->flags & SEF_KIND_MASK) { - case SEF_SETTING_KIND: - if (cur_row >= first_row) { - this->DrawSetting(settings_ptr, rtl ? left : x, rtl ? x : right, y, this->flags & SEF_BUTTONS_MASK, - this == selected); - } - cur_row++; - break; - case SEF_SUBTREE_KIND: - if (cur_row >= first_row) { - DrawSprite((this->d.sub.folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED), PAL_NONE, rtl ? x - 8 : x, y + (SETTING_HEIGHT - 11) / 2); - DrawString(rtl ? left : x + 12, rtl ? x - 12 : right, y, this->d.sub.title); - } - cur_row++; - if (!this->d.sub.folded) { - if (this->flags & SEF_LAST_FIELD) { - assert(this->level < sizeof(parent_last)); - SetBit(parent_last, this->level); // Add own last-field state - } - - cur_row = this->d.sub.page->Draw(settings_ptr, left, right, base_y, first_row, max_row, selected, cur_row, parent_last); - } - break; - default: NOT_REACHED(); - } - return cur_row; -} - -static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd) -{ - if ((sd->desc.flags & SGF_PER_COMPANY) != 0) { - if (Company::IsValidID(_local_company) && _game_mode != GM_MENU) { - return GetVariableAddress(&Company::Get(_local_company)->settings, &sd->save); - } else { - return GetVariableAddress(&_settings_client.company, &sd->save); - } - } else { - return GetVariableAddress(settings_ptr, &sd->save); - } -} +static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd) +{ + if ((sd->desc.flags & SGF_PER_COMPANY) != 0) { + if (Company::IsValidID(_local_company) && _game_mode != GM_MENU) { + return GetVariableAddress(&Company::Get(_local_company)->settings, &sd->save); + } else { + return GetVariableAddress(&_settings_client.company, &sd->save); + } + } else { + return GetVariableAddress(settings_ptr, &sd->save); + } +} /** * Set the DParams for drawing the value of a setting. * @param first_param First DParam to use * @param value Setting value to set params for. */ -void SettingEntry::SetValueDParams(uint first_param, int32 value) +void SettingEntry::SetValueDParams(uint first_param, int32 value) const { - assert((this->flags & SEF_KIND_MASK) == SEF_SETTING_KIND); - const SettingDescBase *sdb = &this->d.entry.setting->desc; + const SettingDescBase *sdb = &this->setting->desc; if (sdb->cmd == SDT_BOOLX) { SetDParam(first_param++, value != 0 ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF); } else { @@ -1197,19 +1100,19 @@ void SettingEntry::SetValueDParams(uint first_param, int32 value) } /** - * Private function to draw setting value (button + text + current value) + * Function to draw setting value (button + text + current value) * @param settings_ptr Pointer to current values of all settings * @param left Left-most position in window/panel to start drawing * @param right Right-most position in window/panel to draw * @param y Upper-most position in window/panel to start drawing - * @param state State of the left + right arrow buttons to draw for the setting * @param highlight Highlight entry. */ -void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right, int y, int state, bool highlight) +void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const { - const SettingDesc *sd = this->d.entry.setting; + const SettingDesc *sd = this->setting; const SettingDescBase *sdb = &sd->desc; const void *var = ResolveVariableAddress(settings_ptr, sd); + int state = this->flags & SEF_BUTTONS_MASK; bool rtl = _current_text_dir == TD_RTL; uint buttons_left = rtl ? right + 1 - SETTING_BUTTON_WIDTH : left; @@ -1234,36 +1137,35 @@ void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right, editable && value != (sdb->flags & SGF_0ISDISABLED ? 0 : sdb->min), editable && (uint32)value != sdb->max); } this->SetValueDParams(1, value); - DrawString(text_left, text_right, y, sdb->str, highlight ? TC_WHITE : TC_LIGHT_BLUE); + DrawString(text_left, text_right, y + (SETTING_HEIGHT - FONT_HEIGHT_NORMAL) / 2, sdb->str, highlight ? TC_WHITE : TC_LIGHT_BLUE); } - -/* == SettingsPage methods == */ +/* == SettingsContainer methods == */ /** * Initialization of an entire setting page * @param level Nesting level of this page (internal variable, do not provide a value for it when calling) */ -void SettingsPage::Init(byte level) +void SettingsContainer::Init(byte level) { - for (uint field = 0; field < this->num; field++) { - this->entries[field].Init(level); + for (EntryVector::iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + (*it)->Init(level); } } /** Recursively close all folds of sub-pages */ -void SettingsPage::FoldAll() +void SettingsContainer::FoldAll() { - for (uint field = 0; field < this->num; field++) { - this->entries[field].FoldAll(); + for (EntryVector::iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + (*it)->FoldAll(); } } /** Recursively open all folds of sub-pages */ -void SettingsPage::UnFoldAll() +void SettingsContainer::UnFoldAll() { - for (uint field = 0; field < this->num; field++) { - this->entries[field].UnFoldAll(); + for (EntryVector::iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + (*it)->UnFoldAll(); } } @@ -1272,10 +1174,10 @@ void SettingsPage::UnFoldAll() * @param[in,out] all_folded Set to false, if one entry is not folded. * @param[in,out] all_unfolded Set to false, if one entry is folded. */ -void SettingsPage::GetFoldingState(bool &all_folded, bool &all_unfolded) const +void SettingsContainer::GetFoldingState(bool &all_folded, bool &all_unfolded) const { - for (uint field = 0; field < this->num; field++) { - this->entries[field].GetFoldingState(all_folded, all_unfolded); + for (EntryVector::const_iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + (*it)->GetFoldingState(all_folded, all_unfolded); } } @@ -1285,13 +1187,13 @@ void SettingsPage::GetFoldingState(bool &all_folded, bool &all_unfolded) const * @param force_visible Whether to force all items visible, no matter what * @return true if item remains visible */ -bool SettingsPage::UpdateFilterState(SettingFilter &filter, bool force_visible) +bool SettingsContainer::UpdateFilterState(SettingFilter &filter, bool force_visible) { bool visible = false; bool first_visible = true; - for (int field = this->num - 1; field >= 0; field--) { - visible |= this->entries[field].UpdateFilterState(filter, force_visible); - this->entries[field].SetLastField(first_visible); + for (EntryVector::reverse_iterator it = this->entries.rbegin(); it != this->entries.rend(); ++it) { + visible |= (*it)->UpdateFilterState(filter, force_visible); + (*it)->SetLastField(first_visible); if (visible && first_visible) first_visible = false; } return visible; @@ -1300,24 +1202,24 @@ bool SettingsPage::UpdateFilterState(SettingFilter &filter, bool force_visible) /** * Check whether an entry is visible and not folded or filtered away. - * Note: This does not consider the scrolling range; it might still require scrolling ot make the setting really visible. + * Note: This does not consider the scrolling range; it might still require scrolling to make the setting really visible. * @param item Entry to search for. * @return true if entry is visible. */ -bool SettingsPage::IsVisible(const SettingEntry *item) const +bool SettingsContainer::IsVisible(const BaseSettingEntry *item) const { - for (uint field = 0; field < this->num; field++) { - if (this->entries[field].IsVisible(item)) return true; + for (EntryVector::const_iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + if ((*it)->IsVisible(item)) return true; } return false; } /** Return number of rows needed to display the whole page */ -uint SettingsPage::Length() const +uint SettingsContainer::Length() const { uint length = 0; - for (uint field = 0; field < this->num; field++) { - length += this->entries[field].Length(); + for (EntryVector::const_iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + length += (*it)->Length(); } return length; } @@ -1328,12 +1230,11 @@ uint SettingsPage::Length() const * @param cur_row Variable used for keeping track of the current row number. Should point to memory initialized to \c 0 when first called. * @return The requested setting entry or \c NULL if it does not exist */ -SettingEntry *SettingsPage::FindEntry(uint row_num, uint *cur_row) const +BaseSettingEntry *SettingsContainer::FindEntry(uint row_num, uint *cur_row) { - SettingEntry *pe = NULL; - - for (uint field = 0; field < this->num; field++) { - pe = this->entries[field].FindEntry(row_num, cur_row); + BaseSettingEntry *pe = NULL; + for (EntryVector::iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + pe = (*it)->FindEntry(row_num, cur_row); if (pe != NULL) { break; } @@ -1346,367 +1247,507 @@ SettingEntry *SettingsPage::FindEntry(uint row_num, uint *cur_row) const * @param maxw Maximal width of a line help text. * @return Biggest height needed to display any help text of this (sub-)tree. */ -uint SettingsPage::GetMaxHelpHeight(int maxw) +uint SettingsContainer::GetMaxHelpHeight(int maxw) { uint biggest = 0; - for (uint field = 0; field < this->num; field++) { - biggest = max(biggest, this->entries[field].GetMaxHelpHeight(maxw)); + for (EntryVector::const_iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + biggest = max(biggest, (*it)->GetMaxHelpHeight(maxw)); } return biggest; } + /** - * Draw a selected part of the settings page. - * - * The scrollbar uses rows of the page, while the page data structure is a tree of #SettingsPage and #SettingEntry objects. - * As a result, the drawing routing traverses the tree from top to bottom, counting rows in \a cur_row until it reaches \a first_row. - * Then it enables drawing rows while traversing until \a max_row is reached, at which point drawing is terminated. + * Draw a row in the settings panel. * * @param settings_ptr Pointer to current values of all settings - * @param left Left-most position in window/panel to start drawing of each setting row - * @param right Right-most position in window/panel to draw at - * @param base_y Upper-most position in window/panel to start drawing of row number \a first_row - * @param first_row Number of first row to draw + * @param left Left-most position in window/panel to start drawing \a first_row + * @param right Right-most x position to draw strings at. + * @param y Upper-most position in window/panel to start drawing \a first_row + * @param first_row First row number to draw * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw) + * @param selected Selected entry by the user. * @param cur_row Current row number (internal variable) * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field) + * @return Row number of the next row to draw + */ +uint SettingsContainer::Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row, uint parent_last) const +{ + for (EntryVector::const_iterator it = this->entries.begin(); it != this->entries.end(); ++it) { + cur_row = (*it)->Draw(settings_ptr, left, right, y, first_row, max_row, selected, cur_row, parent_last); + if (cur_row >= max_row) { + break; + } + } + return cur_row; +} + +/* == SettingsPage methods == */ + +/** + * Constructor for a sub-page in the 'advanced settings' window + * @param title Title of the sub-page + */ +SettingsPage::SettingsPage(StringID title) +{ + this->title = title; + this->folded = true; +} + +/** + * Initialization of an entire setting page + * @param level Nesting level of this page (internal variable, do not provide a value for it when calling) + */ +void SettingsPage::Init(byte level) +{ + BaseSettingEntry::Init(level); + SettingsContainer::Init(level + 1); +} + +/** Recursively close all (filtered) folds of sub-pages */ +void SettingsPage::FoldAll() +{ + if (this->IsFiltered()) return; + this->folded = true; + + SettingsContainer::FoldAll(); +} + +/** Recursively open all (filtered) folds of sub-pages */ +void SettingsPage::UnFoldAll() +{ + if (this->IsFiltered()) return; + this->folded = false; + + SettingsContainer::UnFoldAll(); +} + +/** + * Recursively accumulate the folding state of the (filtered) tree. + * @param[in,out] all_folded Set to false, if one entry is not folded. + * @param[in,out] all_unfolded Set to false, if one entry is folded. + */ +void SettingsPage::GetFoldingState(bool &all_folded, bool &all_unfolded) const +{ + if (this->IsFiltered()) return; + + if (this->folded) { + all_unfolded = false; + } else { + all_folded = false; + } + + SettingsContainer::GetFoldingState(all_folded, all_unfolded); +} + +/** + * Update the filter state. + * @param filter Filter + * @param force_visible Whether to force all items visible, no matter what (due to filter text; not affected by restriction drop down box). + * @return true if item remains visible + */ +bool SettingsPage::UpdateFilterState(SettingFilter &filter, bool force_visible) +{ + if (!force_visible && !filter.string.IsEmpty()) { + filter.string.ResetState(); + filter.string.AddLine(this->title); + force_visible = filter.string.GetState(); + } + + bool visible = SettingsContainer::UpdateFilterState(filter, force_visible); + if (visible) { + CLRBITS(this->flags, SEF_FILTERED); + } else { + SETBITS(this->flags, SEF_FILTERED); + } + return visible; +} + +/** + * Check whether an entry is visible and not folded or filtered away. + * Note: This does not consider the scrolling range; it might still require scrolling to make the setting really visible. + * @param item Entry to search for. + * @return true if entry is visible. + */ +bool SettingsPage::IsVisible(const BaseSettingEntry *item) const +{ + if (this->IsFiltered()) return false; + if (this == item) return true; + if (this->folded) return false; + + return SettingsContainer::IsVisible(item); +} + +/** Return number of rows needed to display the (filtered) entry */ +uint SettingsPage::Length() const +{ + if (this->IsFiltered()) return 0; + if (this->folded) return 1; // Only displaying the title + + return 1 + SettingsContainer::Length(); +} + +/** + * Find setting entry at row \a row_num + * @param row_num Index of entry to return + * @param cur_row Current row number + * @return The requested setting entry or \c NULL if it not found (folded or filtered) + */ +BaseSettingEntry *SettingsPage::FindEntry(uint row_num, uint *cur_row) +{ + if (this->IsFiltered()) return NULL; + if (row_num == *cur_row) return this; + (*cur_row)++; + if (this->folded) return NULL; + + return SettingsContainer::FindEntry(row_num, cur_row); +} + +/** + * Draw a row in the settings panel. + * + * @param settings_ptr Pointer to current values of all settings + * @param left Left-most position in window/panel to start drawing \a first_row + * @param right Right-most x position to draw strings at. + * @param y Upper-most position in window/panel to start drawing \a first_row + * @param first_row First row number to draw + * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw) * @param selected Selected entry by the user. + * @param cur_row Current row number (internal variable) + * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field) * @return Row number of the next row to draw */ -uint SettingsPage::Draw(GameSettings *settings_ptr, int left, int right, int base_y, uint first_row, uint max_row, SettingEntry *selected, uint cur_row, uint parent_last) const +uint SettingsPage::Draw(GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row, uint parent_last) const { + if (this->IsFiltered()) return cur_row; if (cur_row >= max_row) return cur_row; - for (uint i = 0; i < this->num; i++) { - cur_row = this->entries[i].Draw(settings_ptr, left, right, base_y, first_row, max_row, cur_row, parent_last, selected); - if (cur_row >= max_row) { - break; + cur_row = BaseSettingEntry::Draw(settings_ptr, left, right, y, first_row, max_row, selected, cur_row, parent_last); + + if (!this->folded) { + if (this->flags & SEF_LAST_FIELD) { + assert(this->level < 8 * sizeof(parent_last)); + SetBit(parent_last, this->level); // Add own last-field state } + + cur_row = SettingsContainer::Draw(settings_ptr, left, right, y, first_row, max_row, selected, cur_row, parent_last); } + return cur_row; } +/** + * Function to draw setting value (button + text + current value) + * @param settings_ptr Pointer to current values of all settings + * @param left Left-most position in window/panel to start drawing + * @param right Right-most position in window/panel to draw + * @param y Upper-most position in window/panel to start drawing + * @param highlight Highlight entry. + */ +void SettingsPage::DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const +{ + bool rtl = _current_text_dir == TD_RTL; + DrawSprite((this->folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED), PAL_NONE, rtl ? right - _circle_size.width : left, y + (SETTING_HEIGHT - _circle_size.height) / 2); + DrawString(rtl ? left : left + _circle_size.width + 2, rtl ? right - _circle_size.width - 2 : right, y + (SETTING_HEIGHT - FONT_HEIGHT_NORMAL) / 2, this->title); +} -static SettingEntry _settings_ui_localisation[] = { - SettingEntry("locale.units_velocity"), - SettingEntry("locale.units_power"), - SettingEntry("locale.units_weight"), - SettingEntry("locale.units_volume"), - SettingEntry("locale.units_force"), - SettingEntry("locale.units_height"), -}; -/** Localisation options sub-page */ -static SettingsPage _settings_ui_localisation_page = {_settings_ui_localisation, lengthof(_settings_ui_localisation)}; - -static SettingEntry _settings_ui_display[] = { - SettingEntry("gui.date_format_in_default_names"), - SettingEntry("gui.population_in_label"), - SettingEntry("gui.measure_tooltip"), - SettingEntry("gui.loading_indicators"), - SettingEntry("gui.liveries"), - SettingEntry("gui.show_track_reservation"), - SettingEntry("gui.expenses_layout"), - SettingEntry("gui.smallmap_land_colour"), - SettingEntry("gui.zoom_min"), - SettingEntry("gui.zoom_max"), - SettingEntry("gui.graph_line_thickness"), -}; -/** Display options sub-page */ -static SettingsPage _settings_ui_display_page = {_settings_ui_display, lengthof(_settings_ui_display)}; - -static SettingEntry _settings_ui_interaction[] = { - SettingEntry("gui.window_snap_radius"), - SettingEntry("gui.window_soft_limit"), - SettingEntry("gui.link_terraform_toolbar"), - SettingEntry("gui.prefer_teamchat"), - SettingEntry("gui.auto_scrolling"), - SettingEntry("gui.reverse_scroll"), - SettingEntry("gui.smooth_scroll"), - SettingEntry("gui.left_mouse_btn_scrolling"), - /* While the horizontal scrollwheel scrolling is written as general code, only - * the cocoa (OSX) driver generates input for it. - * Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */ - SettingEntry("gui.scrollwheel_scrolling"), - SettingEntry("gui.scrollwheel_multiplier"), - SettingEntry("gui.osk_activation"), +/** Construct settings tree */ +static SettingsContainer &GetSettingsTree() +{ + static SettingsContainer *main = NULL; + + if (main == NULL) + { + /* Build up the dynamic settings-array only once per OpenTTD session */ + main = new SettingsContainer(); + + SettingsPage *localisation = main->Add(new SettingsPage(STR_CONFIG_SETTING_LOCALISATION)); + { + localisation->Add(new SettingEntry("locale.units_velocity")); + localisation->Add(new SettingEntry("locale.units_power")); + localisation->Add(new SettingEntry("locale.units_weight")); + localisation->Add(new SettingEntry("locale.units_volume")); + localisation->Add(new SettingEntry("locale.units_force")); + localisation->Add(new SettingEntry("locale.units_height")); + localisation->Add(new SettingEntry("gui.date_format_in_default_names")); + } + + SettingsPage *graphics = main->Add(new SettingsPage(STR_CONFIG_SETTING_GRAPHICS)); + { + graphics->Add(new SettingEntry("gui.zoom_min")); + graphics->Add(new SettingEntry("gui.zoom_max")); + graphics->Add(new SettingEntry("gui.smallmap_land_colour")); + graphics->Add(new SettingEntry("gui.graph_line_thickness")); + } + + SettingsPage *sound = main->Add(new SettingsPage(STR_CONFIG_SETTING_SOUND)); + { + sound->Add(new SettingEntry("sound.click_beep")); + sound->Add(new SettingEntry("sound.confirm")); + sound->Add(new SettingEntry("sound.news_ticker")); + sound->Add(new SettingEntry("sound.news_full")); + sound->Add(new SettingEntry("sound.new_year")); + sound->Add(new SettingEntry("sound.disaster")); + sound->Add(new SettingEntry("sound.vehicle")); + sound->Add(new SettingEntry("sound.ambient")); + } + + SettingsPage *interface = main->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE)); + { + SettingsPage *general = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_GENERAL)); + { + general->Add(new SettingEntry("gui.osk_activation")); + general->Add(new SettingEntry("gui.hover_delay_ms")); + general->Add(new SettingEntry("gui.errmsg_duration")); + general->Add(new SettingEntry("gui.window_snap_radius")); + general->Add(new SettingEntry("gui.window_soft_limit")); + } + + SettingsPage *viewports = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_VIEWPORTS)); + { + viewports->Add(new SettingEntry("gui.auto_scrolling")); + viewports->Add(new SettingEntry("gui.reverse_scroll")); + viewports->Add(new SettingEntry("gui.smooth_scroll")); + viewports->Add(new SettingEntry("gui.left_mouse_btn_scrolling")); + /* While the horizontal scrollwheel scrolling is written as general code, only + * the cocoa (OSX) driver generates input for it. + * Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */ + viewports->Add(new SettingEntry("gui.scrollwheel_scrolling")); + viewports->Add(new SettingEntry("gui.scrollwheel_multiplier")); #ifdef __APPLE__ - /* We might need to emulate a right mouse button on mac */ - SettingEntry("gui.right_mouse_btn_emulation"), + /* We might need to emulate a right mouse button on mac */ + viewports->Add(new SettingEntry("gui.right_mouse_btn_emulation")); #endif -}; -/** Interaction sub-page */ -static SettingsPage _settings_ui_interaction_page = {_settings_ui_interaction, lengthof(_settings_ui_interaction)}; - -static SettingEntry _settings_ui_sound[] = { - SettingEntry("sound.click_beep"), - SettingEntry("sound.confirm"), - SettingEntry("sound.news_ticker"), - SettingEntry("sound.news_full"), - SettingEntry("sound.new_year"), - SettingEntry("sound.disaster"), - SettingEntry("sound.vehicle"), - SettingEntry("sound.ambient"), -}; -/** Sound effects sub-page */ -static SettingsPage _settings_ui_sound_page = {_settings_ui_sound, lengthof(_settings_ui_sound)}; - -static SettingEntry _settings_ui_news[] = { - SettingEntry("news_display.arrival_player"), - SettingEntry("news_display.arrival_other"), - SettingEntry("news_display.accident"), - SettingEntry("news_display.company_info"), - SettingEntry("news_display.open"), - SettingEntry("news_display.close"), - SettingEntry("news_display.economy"), - SettingEntry("news_display.production_player"), - SettingEntry("news_display.production_other"), - SettingEntry("news_display.production_nobody"), - SettingEntry("news_display.advice"), - SettingEntry("news_display.new_vehicles"), - SettingEntry("news_display.acceptance"), - SettingEntry("news_display.subsidies"), - SettingEntry("news_display.general"), - SettingEntry("gui.coloured_news_year"), -}; -/** News sub-page */ -static SettingsPage _settings_ui_news_page = {_settings_ui_news, lengthof(_settings_ui_news)}; - -static SettingEntry _settings_ui[] = { - SettingEntry(&_settings_ui_localisation_page, STR_CONFIG_SETTING_LOCALISATION), - SettingEntry(&_settings_ui_display_page, STR_CONFIG_SETTING_DISPLAY_OPTIONS), - SettingEntry(&_settings_ui_interaction_page, STR_CONFIG_SETTING_INTERACTION), - SettingEntry(&_settings_ui_sound_page, STR_CONFIG_SETTING_SOUND), - SettingEntry(&_settings_ui_news_page, STR_CONFIG_SETTING_NEWS), - SettingEntry("gui.show_finances"), - SettingEntry("gui.errmsg_duration"), - SettingEntry("gui.hover_delay"), - SettingEntry("gui.toolbar_pos"), - SettingEntry("gui.statusbar_pos"), - SettingEntry("gui.newgrf_default_palette"), - SettingEntry("gui.pause_on_newgame"), - SettingEntry("gui.advanced_vehicle_list"), - SettingEntry("gui.timetable_in_ticks"), - SettingEntry("gui.timetable_arrival_departure"), - SettingEntry("gui.quick_goto"), - SettingEntry("gui.default_rail_type"), - SettingEntry("gui.disable_unsuitable_building"), - SettingEntry("gui.persistent_buildingtools"), -}; -/** Interface subpage */ -static SettingsPage _settings_ui_page = {_settings_ui, lengthof(_settings_ui)}; - -static SettingEntry _settings_construction_signals[] = { - SettingEntry("construction.train_signal_side"), - SettingEntry("gui.enable_signal_gui"), - SettingEntry("gui.drag_signals_fixed_distance"), - SettingEntry("gui.semaphore_build_before"), - SettingEntry("gui.default_signal_type"), - SettingEntry("gui.cycle_signal_types"), -}; -/** Signals subpage */ -static SettingsPage _settings_construction_signals_page = {_settings_construction_signals, lengthof(_settings_construction_signals)}; - -static SettingEntry _settings_construction[] = { - SettingEntry(&_settings_construction_signals_page, STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS), - SettingEntry("construction.build_on_slopes"), - SettingEntry("construction.autoslope"), - SettingEntry("construction.extra_dynamite"), - SettingEntry("construction.max_bridge_length"), - SettingEntry("construction.max_tunnel_length"), - SettingEntry("station.never_expire_airports"), - SettingEntry("construction.freeform_edges"), - SettingEntry("construction.extra_tree_placement"), - SettingEntry("construction.command_pause_level"), -}; -/** Construction sub-page */ -static SettingsPage _settings_construction_page = {_settings_construction, lengthof(_settings_construction)}; + viewports->Add(new SettingEntry("gui.population_in_label")); + viewports->Add(new SettingEntry("gui.liveries")); + viewports->Add(new SettingEntry("construction.train_signal_side")); + viewports->Add(new SettingEntry("gui.measure_tooltip")); + viewports->Add(new SettingEntry("gui.loading_indicators")); + viewports->Add(new SettingEntry("gui.show_track_reservation")); + } -static SettingEntry _settings_stations_cargo[] = { - SettingEntry("order.improved_load"), - SettingEntry("order.gradual_loading"), - SettingEntry("order.selectgoods"), -}; -/** Cargo handling sub-page */ -static SettingsPage _settings_stations_cargo_page = {_settings_stations_cargo, lengthof(_settings_stations_cargo)}; - -static SettingEntry _settings_stations[] = { - SettingEntry(&_settings_stations_cargo_page, STR_CONFIG_SETTING_STATIONS_CARGOHANDLING), - SettingEntry("station.adjacent_stations"), - SettingEntry("station.distant_join_stations"), - SettingEntry("station.station_spread"), - SettingEntry("economy.station_noise_level"), - SettingEntry("station.modified_catchment"), - SettingEntry("construction.road_stop_on_town_road"), - SettingEntry("construction.road_stop_on_competitor_road"), -}; -/** Stations sub-page */ -static SettingsPage _settings_stations_page = {_settings_stations, lengthof(_settings_stations)}; - -static SettingEntry _settings_economy_towns[] = { - SettingEntry("difficulty.town_council_tolerance"), - SettingEntry("economy.bribe"), - SettingEntry("economy.exclusive_rights"), - SettingEntry("economy.fund_roads"), - SettingEntry("economy.fund_buildings"), - SettingEntry("economy.town_layout"), - SettingEntry("economy.allow_town_roads"), - SettingEntry("economy.allow_town_level_crossings"), - SettingEntry("economy.found_town"), - SettingEntry("economy.mod_road_rebuild"), - SettingEntry("economy.town_growth_rate"), - SettingEntry("economy.larger_towns"), - SettingEntry("economy.initial_city_size"), -}; -/** Towns sub-page */ -static SettingsPage _settings_economy_towns_page = {_settings_economy_towns, lengthof(_settings_economy_towns)}; - -static SettingEntry _settings_economy_industries[] = { - SettingEntry("construction.raw_industry_construction"), - SettingEntry("construction.industry_platform"), - SettingEntry("economy.multiple_industry_per_town"), - SettingEntry("game_creation.oil_refinery_limit"), -}; -/** Industries sub-page */ -static SettingsPage _settings_economy_industries_page = {_settings_economy_industries, lengthof(_settings_economy_industries)}; - - -static SettingEntry _settings_economy[] = { - SettingEntry(&_settings_economy_towns_page, STR_CONFIG_SETTING_ECONOMY_TOWNS), - SettingEntry(&_settings_economy_industries_page, STR_CONFIG_SETTING_ECONOMY_INDUSTRIES), - SettingEntry("economy.inflation"), - SettingEntry("difficulty.initial_interest"), - SettingEntry("difficulty.max_loan"), - SettingEntry("difficulty.subsidy_multiplier"), - SettingEntry("difficulty.economy"), - SettingEntry("economy.smooth_economy"), - SettingEntry("economy.feeder_payment_share"), - SettingEntry("economy.infrastructure_maintenance"), - SettingEntry("difficulty.vehicle_costs"), - SettingEntry("difficulty.construction_cost"), - SettingEntry("difficulty.disasters"), -}; -/** Economy sub-page */ -static SettingsPage _settings_economy_page = {_settings_economy, lengthof(_settings_economy)}; - -static SettingEntry _settings_linkgraph[] = { - SettingEntry("linkgraph.recalc_time"), - SettingEntry("linkgraph.recalc_interval"), - SettingEntry("linkgraph.distribution_pax"), - SettingEntry("linkgraph.distribution_mail"), - SettingEntry("linkgraph.distribution_armoured"), - SettingEntry("linkgraph.distribution_default"), - SettingEntry("linkgraph.accuracy"), - SettingEntry("linkgraph.demand_distance"), - SettingEntry("linkgraph.demand_size"), - SettingEntry("linkgraph.short_path_saturation"), -}; -/** Linkgraph sub-page */ -static SettingsPage _settings_linkgraph_page = {_settings_linkgraph, lengthof(_settings_linkgraph)}; - -static SettingEntry _settings_ai_npc[] = { - SettingEntry("script.settings_profile"), - SettingEntry("script.script_max_opcode_till_suspend"), - SettingEntry("difficulty.competitor_speed"), - SettingEntry("ai.ai_in_multiplayer"), - SettingEntry("ai.ai_disable_veh_train"), - SettingEntry("ai.ai_disable_veh_roadveh"), - SettingEntry("ai.ai_disable_veh_aircraft"), - SettingEntry("ai.ai_disable_veh_ship"), -}; -/** Computer players sub-page */ -static SettingsPage _settings_ai_npc_page = {_settings_ai_npc, lengthof(_settings_ai_npc)}; + SettingsPage *construction = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION)); + { + construction->Add(new SettingEntry("gui.link_terraform_toolbar")); + construction->Add(new SettingEntry("gui.enable_signal_gui")); + construction->Add(new SettingEntry("gui.persistent_buildingtools")); + construction->Add(new SettingEntry("gui.quick_goto")); + construction->Add(new SettingEntry("gui.default_rail_type")); + construction->Add(new SettingEntry("gui.disable_unsuitable_building")); + } -static SettingEntry _settings_ai[] = { - SettingEntry(&_settings_ai_npc_page, STR_CONFIG_SETTING_AI_NPC), - SettingEntry("economy.give_money"), - SettingEntry("economy.allow_shares"), -}; -/** AI sub-page */ -static SettingsPage _settings_ai_page = {_settings_ai, lengthof(_settings_ai)}; - -static SettingEntry _settings_vehicles_routing[] = { - SettingEntry("pf.pathfinder_for_trains"), - SettingEntry("pf.forbid_90_deg"), - SettingEntry("pf.pathfinder_for_roadvehs"), - SettingEntry("pf.roadveh_queue"), - SettingEntry("pf.pathfinder_for_ships"), -}; -/** Autorenew sub-page */ -static SettingsPage _settings_vehicles_routing_page = {_settings_vehicles_routing, lengthof(_settings_vehicles_routing)}; + interface->Add(new SettingEntry("gui.autosave")); + interface->Add(new SettingEntry("gui.toolbar_pos")); + interface->Add(new SettingEntry("gui.statusbar_pos")); + interface->Add(new SettingEntry("gui.prefer_teamchat")); + interface->Add(new SettingEntry("gui.advanced_vehicle_list")); + interface->Add(new SettingEntry("gui.timetable_in_ticks")); + interface->Add(new SettingEntry("gui.timetable_arrival_departure")); + interface->Add(new SettingEntry("gui.expenses_layout")); + } -static SettingEntry _settings_vehicles_autorenew[] = { - SettingEntry("company.engine_renew"), - SettingEntry("company.engine_renew_months"), - SettingEntry("company.engine_renew_money"), -}; -/** Autorenew sub-page */ -static SettingsPage _settings_vehicles_autorenew_page = {_settings_vehicles_autorenew, lengthof(_settings_vehicles_autorenew)}; - -static SettingEntry _settings_vehicles_servicing[] = { - SettingEntry("vehicle.pay_for_repair"), - SettingEntry("vehicle.repair_cost"), - SettingEntry("vehicle.servint_ispercent"), - SettingEntry("vehicle.servint_trains"), - SettingEntry("vehicle.servint_roadveh"), - SettingEntry("vehicle.servint_ships"), - SettingEntry("vehicle.servint_aircraft"), - SettingEntry("difficulty.vehicle_breakdowns"), - SettingEntry("order.no_servicing_if_no_breakdowns"), - SettingEntry("order.serviceathelipad"), -}; -/** Servicing sub-page */ -static SettingsPage _settings_vehicles_servicing_page = {_settings_vehicles_servicing, lengthof(_settings_vehicles_servicing)}; - -static SettingEntry _settings_vehicles_trains[] = { - SettingEntry("difficulty.line_reverse_mode"), - SettingEntry("pf.reverse_at_signals"), - SettingEntry("vehicle.train_acceleration_model"), - SettingEntry("vehicle.train_slope_steepness"), - SettingEntry("vehicle.max_train_length"), - SettingEntry("vehicle.wagon_speed_limits"), - SettingEntry("vehicle.disable_elrails"), - SettingEntry("vehicle.freight_trains"), - SettingEntry("gui.stop_location"), -}; -/** Trains sub-page */ -static SettingsPage _settings_vehicles_trains_page = {_settings_vehicles_trains, lengthof(_settings_vehicles_trains)}; - -static SettingEntry _settings_vehicles[] = { - SettingEntry(&_settings_vehicles_routing_page, STR_CONFIG_SETTING_VEHICLES_ROUTING), - SettingEntry(&_settings_vehicles_autorenew_page, STR_CONFIG_SETTING_VEHICLES_AUTORENEW), - SettingEntry(&_settings_vehicles_servicing_page, STR_CONFIG_SETTING_VEHICLES_SERVICING), - SettingEntry(&_settings_vehicles_trains_page, STR_CONFIG_SETTING_VEHICLES_TRAINS), - SettingEntry("gui.new_nonstop"), - SettingEntry("gui.order_review_system"), - SettingEntry("gui.vehicle_income_warn"), - SettingEntry("gui.lost_vehicle_warn"), - SettingEntry("vehicle.never_expire_vehicles"), - SettingEntry("vehicle.max_trains"), - SettingEntry("vehicle.max_roadveh"), - SettingEntry("vehicle.max_aircraft"), - SettingEntry("vehicle.max_ships"), - SettingEntry("vehicle.plane_speed"), - SettingEntry("vehicle.plane_crashes"), - SettingEntry("vehicle.dynamic_engines"), - SettingEntry("vehicle.roadveh_acceleration_model"), - SettingEntry("vehicle.roadveh_slope_steepness"), - SettingEntry("vehicle.smoke_amount"), -}; -/** Vehicles sub-page */ -static SettingsPage _settings_vehicles_page = {_settings_vehicles, lengthof(_settings_vehicles)}; - -static SettingEntry _settings_main[] = { - SettingEntry(&_settings_ui_page, STR_CONFIG_SETTING_GUI), - SettingEntry(&_settings_construction_page, STR_CONFIG_SETTING_CONSTRUCTION), - SettingEntry(&_settings_vehicles_page, STR_CONFIG_SETTING_VEHICLES), - SettingEntry(&_settings_stations_page, STR_CONFIG_SETTING_STATIONS), - SettingEntry(&_settings_economy_page, STR_CONFIG_SETTING_ECONOMY), - SettingEntry(&_settings_linkgraph_page, STR_CONFIG_SETTING_LINKGRAPH), - SettingEntry(&_settings_ai_page, STR_CONFIG_SETTING_AI), -}; + SettingsPage *advisors = main->Add(new SettingsPage(STR_CONFIG_SETTING_ADVISORS)); + { + advisors->Add(new SettingEntry("gui.coloured_news_year")); + advisors->Add(new SettingEntry("news_display.general")); + advisors->Add(new SettingEntry("news_display.new_vehicles")); + advisors->Add(new SettingEntry("news_display.accident")); + advisors->Add(new SettingEntry("news_display.company_info")); + advisors->Add(new SettingEntry("news_display.acceptance")); + advisors->Add(new SettingEntry("news_display.arrival_player")); + advisors->Add(new SettingEntry("news_display.arrival_other")); + advisors->Add(new SettingEntry("news_display.advice")); + advisors->Add(new SettingEntry("gui.order_review_system")); + advisors->Add(new SettingEntry("gui.vehicle_income_warn")); + advisors->Add(new SettingEntry("gui.lost_vehicle_warn")); + advisors->Add(new SettingEntry("gui.show_finances")); + advisors->Add(new SettingEntry("news_display.economy")); + advisors->Add(new SettingEntry("news_display.subsidies")); + advisors->Add(new SettingEntry("news_display.open")); + advisors->Add(new SettingEntry("news_display.close")); + advisors->Add(new SettingEntry("news_display.production_player")); + advisors->Add(new SettingEntry("news_display.production_other")); + advisors->Add(new SettingEntry("news_display.production_nobody")); + } + + SettingsPage *company = main->Add(new SettingsPage(STR_CONFIG_SETTING_COMPANY)); + { + company->Add(new SettingEntry("gui.semaphore_build_before")); + company->Add(new SettingEntry("gui.default_signal_type")); + company->Add(new SettingEntry("gui.cycle_signal_types")); + company->Add(new SettingEntry("gui.drag_signals_fixed_distance")); + company->Add(new SettingEntry("gui.new_nonstop")); + company->Add(new SettingEntry("gui.stop_location")); + company->Add(new SettingEntry("company.engine_renew")); + company->Add(new SettingEntry("company.engine_renew_months")); + company->Add(new SettingEntry("company.engine_renew_money")); + company->Add(new SettingEntry("vehicle.pay_for_repair")); + company->Add(new SettingEntry("vehicle.repair_cost")); + company->Add(new SettingEntry("vehicle.servint_ispercent")); + company->Add(new SettingEntry("vehicle.servint_trains")); + company->Add(new SettingEntry("vehicle.servint_roadveh")); + company->Add(new SettingEntry("vehicle.servint_ships")); + company->Add(new SettingEntry("vehicle.servint_aircraft")); + } + + SettingsPage *accounting = main->Add(new SettingsPage(STR_CONFIG_SETTING_ACCOUNTING)); + { + accounting->Add(new SettingEntry("economy.inflation")); + accounting->Add(new SettingEntry("difficulty.initial_interest")); + accounting->Add(new SettingEntry("difficulty.max_loan")); + accounting->Add(new SettingEntry("difficulty.subsidy_multiplier")); + accounting->Add(new SettingEntry("economy.feeder_payment_share")); + accounting->Add(new SettingEntry("economy.infrastructure_maintenance")); + accounting->Add(new SettingEntry("difficulty.vehicle_costs")); + accounting->Add(new SettingEntry("difficulty.construction_cost")); + } + + SettingsPage *vehicles = main->Add(new SettingsPage(STR_CONFIG_SETTING_VEHICLES)); + { + SettingsPage *physics = vehicles->Add(new SettingsPage(STR_CONFIG_SETTING_VEHICLES_PHYSICS)); + { + physics->Add(new SettingEntry("vehicle.train_acceleration_model")); + physics->Add(new SettingEntry("vehicle.train_slope_steepness")); + physics->Add(new SettingEntry("vehicle.wagon_speed_limits")); + physics->Add(new SettingEntry("vehicle.freight_trains")); + physics->Add(new SettingEntry("vehicle.roadveh_acceleration_model")); + physics->Add(new SettingEntry("vehicle.roadveh_slope_steepness")); + physics->Add(new SettingEntry("vehicle.smoke_amount")); + physics->Add(new SettingEntry("vehicle.plane_speed")); + } + + SettingsPage *routing = vehicles->Add(new SettingsPage(STR_CONFIG_SETTING_VEHICLES_ROUTING)); + { + routing->Add(new SettingEntry("pf.pathfinder_for_trains")); + routing->Add(new SettingEntry("difficulty.line_reverse_mode")); + routing->Add(new SettingEntry("pf.reverse_at_signals")); + routing->Add(new SettingEntry("pf.forbid_90_deg")); + routing->Add(new SettingEntry("pf.pathfinder_for_roadvehs")); + routing->Add(new SettingEntry("pf.pathfinder_for_ships")); + } + + vehicles->Add(new SettingEntry("order.no_servicing_if_no_breakdowns")); + vehicles->Add(new SettingEntry("order.serviceathelipad")); + } + + SettingsPage *limitations = main->Add(new SettingsPage(STR_CONFIG_SETTING_LIMITATIONS)); + { + limitations->Add(new SettingEntry("construction.command_pause_level")); + limitations->Add(new SettingEntry("construction.autoslope")); + limitations->Add(new SettingEntry("construction.extra_dynamite")); + limitations->Add(new SettingEntry("construction.max_heightlevel")); + limitations->Add(new SettingEntry("construction.max_bridge_length")); + limitations->Add(new SettingEntry("construction.max_bridge_height")); + limitations->Add(new SettingEntry("construction.max_tunnel_length")); + limitations->Add(new SettingEntry("station.never_expire_airports")); + limitations->Add(new SettingEntry("vehicle.never_expire_vehicles")); + limitations->Add(new SettingEntry("vehicle.max_trains")); + limitations->Add(new SettingEntry("vehicle.max_roadveh")); + limitations->Add(new SettingEntry("vehicle.max_aircraft")); + limitations->Add(new SettingEntry("vehicle.max_ships")); + limitations->Add(new SettingEntry("vehicle.max_train_length")); + limitations->Add(new SettingEntry("station.station_spread")); + limitations->Add(new SettingEntry("station.distant_join_stations")); + limitations->Add(new SettingEntry("construction.road_stop_on_town_road")); + limitations->Add(new SettingEntry("construction.road_stop_on_competitor_road")); + limitations->Add(new SettingEntry("vehicle.disable_elrails")); + } + + SettingsPage *disasters = main->Add(new SettingsPage(STR_CONFIG_SETTING_ACCIDENTS)); + { + disasters->Add(new SettingEntry("difficulty.disasters")); + disasters->Add(new SettingEntry("difficulty.economy")); + disasters->Add(new SettingEntry("difficulty.vehicle_breakdowns")); + disasters->Add(new SettingEntry("vehicle.plane_crashes")); + } + + SettingsPage *genworld = main->Add(new SettingsPage(STR_CONFIG_SETTING_GENWORLD)); + { + genworld->Add(new SettingEntry("game_creation.landscape")); + genworld->Add(new SettingEntry("game_creation.land_generator")); + genworld->Add(new SettingEntry("difficulty.terrain_type")); + genworld->Add(new SettingEntry("game_creation.tgen_smoothness")); + genworld->Add(new SettingEntry("game_creation.variety")); + genworld->Add(new SettingEntry("game_creation.snow_line_height")); + genworld->Add(new SettingEntry("game_creation.amount_of_rivers")); + genworld->Add(new SettingEntry("game_creation.tree_placer")); + genworld->Add(new SettingEntry("vehicle.road_side")); + genworld->Add(new SettingEntry("economy.larger_towns")); + genworld->Add(new SettingEntry("economy.initial_city_size")); + genworld->Add(new SettingEntry("economy.town_layout")); + genworld->Add(new SettingEntry("difficulty.industry_density")); + genworld->Add(new SettingEntry("gui.pause_on_newgame")); + } + + SettingsPage *environment = main->Add(new SettingsPage(STR_CONFIG_SETTING_ENVIRONMENT)); + { + SettingsPage *authorities = environment->Add(new SettingsPage(STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES)); + { + authorities->Add(new SettingEntry("difficulty.town_council_tolerance")); + authorities->Add(new SettingEntry("economy.bribe")); + authorities->Add(new SettingEntry("economy.exclusive_rights")); + authorities->Add(new SettingEntry("economy.fund_roads")); + authorities->Add(new SettingEntry("economy.fund_buildings")); + authorities->Add(new SettingEntry("economy.station_noise_level")); + } + + SettingsPage *towns = environment->Add(new SettingsPage(STR_CONFIG_SETTING_ENVIRONMENT_TOWNS)); + { + towns->Add(new SettingEntry("economy.town_growth_rate")); + towns->Add(new SettingEntry("economy.allow_town_roads")); + towns->Add(new SettingEntry("economy.allow_town_level_crossings")); + towns->Add(new SettingEntry("economy.found_town")); + } + + SettingsPage *industries = environment->Add(new SettingsPage(STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES)); + { + industries->Add(new SettingEntry("construction.raw_industry_construction")); + industries->Add(new SettingEntry("construction.industry_platform")); + industries->Add(new SettingEntry("economy.multiple_industry_per_town")); + industries->Add(new SettingEntry("game_creation.oil_refinery_limit")); + industries->Add(new SettingEntry("economy.smooth_economy")); + } + + SettingsPage *cdist = environment->Add(new SettingsPage(STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST)); + { + cdist->Add(new SettingEntry("linkgraph.recalc_time")); + cdist->Add(new SettingEntry("linkgraph.recalc_interval")); + cdist->Add(new SettingEntry("linkgraph.distribution_pax")); + cdist->Add(new SettingEntry("linkgraph.distribution_mail")); + cdist->Add(new SettingEntry("linkgraph.distribution_armoured")); + cdist->Add(new SettingEntry("linkgraph.distribution_default")); + cdist->Add(new SettingEntry("linkgraph.accuracy")); + cdist->Add(new SettingEntry("linkgraph.demand_distance")); + cdist->Add(new SettingEntry("linkgraph.demand_size")); + cdist->Add(new SettingEntry("linkgraph.short_path_saturation")); + } -/** Main page, holding all advanced settings */ -static SettingsPage _settings_main_page = {_settings_main, lengthof(_settings_main)}; + environment->Add(new SettingEntry("station.modified_catchment")); + environment->Add(new SettingEntry("construction.extra_tree_placement")); + } + + SettingsPage *ai = main->Add(new SettingsPage(STR_CONFIG_SETTING_AI)); + { + SettingsPage *npc = ai->Add(new SettingsPage(STR_CONFIG_SETTING_AI_NPC)); + { + npc->Add(new SettingEntry("script.settings_profile")); + npc->Add(new SettingEntry("script.script_max_opcode_till_suspend")); + npc->Add(new SettingEntry("difficulty.competitor_speed")); + npc->Add(new SettingEntry("ai.ai_in_multiplayer")); + npc->Add(new SettingEntry("ai.ai_disable_veh_train")); + npc->Add(new SettingEntry("ai.ai_disable_veh_roadveh")); + npc->Add(new SettingEntry("ai.ai_disable_veh_aircraft")); + npc->Add(new SettingEntry("ai.ai_disable_veh_ship")); + } + + ai->Add(new SettingEntry("economy.give_money")); + ai->Add(new SettingEntry("economy.allow_shares")); + } + + main->Init(); + } + return *main; +} static const StringID _game_settings_restrict_dropdown[] = { STR_CONFIG_SETTING_RESTRICT_BASIC, // RM_BASIC @@ -1717,6 +1758,15 @@ static const StringID _game_settings_restrict_dropdown[] = { }; assert_compile(lengthof(_game_settings_restrict_dropdown) == RM_END); +/** Warnings about hidden search results. */ +enum WarnHiddenResult { + WHR_NONE, ///< Nothing was filtering matches away. + WHR_CATEGORY, ///< Category setting filtered matches away. + WHR_TYPE, ///< Type setting filtered matches away. + WHR_CATEGORY_TYPE, ///< Both category and type settings filtered matches away. +}; + +/** Window to edit settings of the game. */ struct GameSettingsWindow : Window { static const int SETTINGTREE_LEFT_OFFSET = 5; ///< Position of left edge of setting values static const int SETTINGTREE_RIGHT_OFFSET = 5; ///< Position of right edge of setting values @@ -1734,24 +1784,23 @@ struct GameSettingsWindow : Window { SettingFilter filter; ///< Filter for the list. QueryString filter_editbox; ///< Filter editbox; bool manually_changed_folding; ///< Whether the user expanded/collapsed something manually. + WarnHiddenResult warn_missing; ///< Whether and how to warn about missing search results. + int warn_lines; ///< Number of lines used for warning about missing search results. Scrollbar *vscroll; GameSettingsWindow(WindowDesc *desc) : Window(desc), filter_editbox(50) { - static bool first_time = true; + this->warn_missing = WHR_NONE; + this->warn_lines = 0; + this->filter.mode = (RestrictionMode)_settings_client.gui.settings_restriction_mode; + this->filter.min_cat = RM_ALL; + this->filter.type = ST_ALL; + this->filter.type_hides = false; + this->settings_ptr = &GetGameSettings(); - filter.mode = (RestrictionMode)_settings_client.gui.settings_restriction_mode; - filter.type = ST_ALL; - settings_ptr = &GetGameSettings(); - - /* Build up the dynamic settings-array only once per OpenTTD session */ - if (first_time) { - _settings_main_page.Init(); - first_time = false; - } else { - _settings_main_page.FoldAll(); // Close all sub-pages - } + _circle_size = maxdim(GetSpriteSize(SPR_CIRCLE_FOLDED), GetSpriteSize(SPR_CIRCLE_UNFOLDED)); + GetSettingsTree().FoldAll(); // Close all sub-pages this->valuewindow_entry = NULL; // No setting entry for which a entry window is opened this->clicked_entry = NULL; // No numeric setting buttons are depressed @@ -1775,7 +1824,7 @@ struct GameSettingsWindow : Window { { switch (widget) { case WID_GS_OPTIONSPANEL: - resize->height = SETTING_HEIGHT = max(11, FONT_HEIGHT_NORMAL + 1); + resize->height = SETTING_HEIGHT = max(max(_circle_size.height, SETTING_BUTTON_HEIGHT), FONT_HEIGHT_NORMAL) + 1; resize->width = 1; size->height = 5 * resize->height + SETTINGTREE_TOP_OFFSET + SETTINGTREE_BOTTOM_OFFSET; @@ -1792,10 +1841,15 @@ struct GameSettingsWindow : Window { size->width = max(size->width, GetStringBoundingBox(STR_CONFIG_SETTING_TYPE).width); } size->height = 2 * FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL + - max(size->height, _settings_main_page.GetMaxHelpHeight(size->width)); + max(size->height, GetSettingsTree().GetMaxHelpHeight(size->width)); break; } + case WID_GS_RESTRICT_CATEGORY: + case WID_GS_RESTRICT_TYPE: + size->width = max(GetStringBoundingBox(STR_CONFIG_SETTING_RESTRICT_CATEGORY).width, GetStringBoundingBox(STR_CONFIG_SETTING_RESTRICT_TYPE).width); + break; + default: break; } @@ -1809,7 +1863,37 @@ struct GameSettingsWindow : Window { this->valuedropdown_entry->SetButtons(0); this->valuedropdown_entry = NULL; } + + /* Reserve the correct number of lines for the 'some search results are hidden' notice in the central settings display panel. */ + const NWidgetBase *panel = this->GetWidget(WID_GS_OPTIONSPANEL); + StringID warn_str = STR_CONFIG_SETTING_CATEGORY_HIDES - 1 + this->warn_missing; + int new_warn_lines; + if (this->warn_missing == WHR_NONE) { + new_warn_lines = 0; + } else { + SetDParam(0, _game_settings_restrict_dropdown[this->filter.min_cat]); + new_warn_lines = GetStringLineCount(warn_str, panel->current_x); + } + if (this->warn_lines != new_warn_lines) { + this->vscroll->SetCount(this->vscroll->GetCount() - this->warn_lines + new_warn_lines); + this->warn_lines = new_warn_lines; + } + this->DrawWidgets(); + + /* Draw the 'some search results are hidden' notice. */ + if (this->warn_missing != WHR_NONE) { + const int left = panel->pos_x; + const int right = left + panel->current_x - 1; + const int top = panel->pos_y; + SetDParam(0, _game_settings_restrict_dropdown[this->filter.min_cat]); + if (this->warn_lines == 1) { + /* If the warning fits at one line, center it. */ + DrawString(left + WD_FRAMETEXT_LEFT, right - WD_FRAMETEXT_RIGHT, top + WD_FRAMETEXT_TOP, warn_str, TC_FROMSTRING, SA_HOR_CENTER); + } else { + DrawStringMultiLine(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top + WD_FRAMERECT_TOP, INT32_MAX, warn_str); + } + } } virtual void SetStringParameters(int widget) const @@ -1842,16 +1926,16 @@ struct GameSettingsWindow : Window { * we don't want to allow comparing with new game's settings. */ bool disabled = mode == RM_CHANGED_AGAINST_NEW && settings_ptr == &_settings_newgame; - list->push_back(new DropDownListStringItem(_game_settings_restrict_dropdown[mode], mode, disabled)); + *list->Append() = new DropDownListStringItem(_game_settings_restrict_dropdown[mode], mode, disabled); } break; case WID_GS_TYPE_DROPDOWN: list = new DropDownList(); - list->push_back(new DropDownListStringItem(STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL, ST_ALL, false)); - list->push_back(new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME, ST_GAME, false)); - list->push_back(new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME, ST_COMPANY, false)); - list->push_back(new DropDownListStringItem(STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT, ST_CLIENT, false)); + *list->Append() = new DropDownListStringItem(STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL, ST_ALL, false); + *list->Append() = new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME, ST_GAME, false); + *list->Append() = new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME, ST_COMPANY, false); + *list->Append() = new DropDownListStringItem(STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT, ST_CLIENT, false); break; } return list; @@ -1860,14 +1944,18 @@ struct GameSettingsWindow : Window { virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { - case WID_GS_OPTIONSPANEL: - _settings_main_page.Draw(settings_ptr, r.left + SETTINGTREE_LEFT_OFFSET, r.right - SETTINGTREE_RIGHT_OFFSET, r.top + SETTINGTREE_TOP_OFFSET, - this->vscroll->GetPosition(), this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->last_clicked); + case WID_GS_OPTIONSPANEL: { + int top_pos = r.top + SETTINGTREE_TOP_OFFSET + 1 + this->warn_lines * FONT_HEIGHT_NORMAL; + uint last_row = this->vscroll->GetPosition() + this->vscroll->GetCapacity() - this->warn_lines; + int next_row = GetSettingsTree().Draw(settings_ptr, r.left + SETTINGTREE_LEFT_OFFSET, r.right - SETTINGTREE_RIGHT_OFFSET, top_pos, + this->vscroll->GetPosition(), last_row, this->last_clicked); + if (next_row == 0) DrawString(r.left + SETTINGTREE_LEFT_OFFSET, r.right - SETTINGTREE_RIGHT_OFFSET, top_pos, STR_CONFIG_SETTINGS_NONE); break; + } case WID_GS_HELP_TEXT: if (this->last_clicked != NULL) { - const SettingDesc *sd = this->last_clicked->d.entry.setting; + const SettingDesc *sd = this->last_clicked->setting; int y = r.top; switch (sd->GetType()) { @@ -1908,13 +1996,13 @@ struct GameSettingsWindow : Window { switch (widget) { case WID_GS_EXPAND_ALL: this->manually_changed_folding = true; - _settings_main_page.UnFoldAll(); + GetSettingsTree().UnFoldAll(); this->InvalidateData(); break; case WID_GS_COLLAPSE_ALL: this->manually_changed_folding = true; - _settings_main_page.FoldAll(); + GetSettingsTree().FoldAll(); this->InvalidateData(); break; @@ -1938,19 +2026,21 @@ struct GameSettingsWindow : Window { if (widget != WID_GS_OPTIONSPANEL) return; uint btn = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GS_OPTIONSPANEL, SETTINGTREE_TOP_OFFSET); - if (btn == INT_MAX) return; + if (btn == INT_MAX || (int)btn < this->warn_lines) return; + btn -= this->warn_lines; uint cur_row = 0; - SettingEntry *pe = _settings_main_page.FindEntry(btn, &cur_row); + BaseSettingEntry *clicked_entry = GetSettingsTree().FindEntry(btn, &cur_row); - if (pe == NULL) return; // Clicked below the last setting of the page + if (clicked_entry == NULL) return; // Clicked below the last setting of the page - int x = (_current_text_dir == TD_RTL ? this->width - 1 - pt.x : pt.x) - SETTINGTREE_LEFT_OFFSET - (pe->level + 1) * LEVEL_WIDTH; // Shift x coordinate + int x = (_current_text_dir == TD_RTL ? this->width - 1 - pt.x : pt.x) - SETTINGTREE_LEFT_OFFSET - (clicked_entry->level + 1) * LEVEL_WIDTH; // Shift x coordinate if (x < 0) return; // Clicked left of the entry - if ((pe->flags & SEF_KIND_MASK) == SEF_SUBTREE_KIND) { + SettingsPage *clicked_page = dynamic_cast(clicked_entry); + if (clicked_page != NULL) { this->SetDisplayedHelpText(NULL); - pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page + clicked_page->folded = !clicked_page->folded; // Flip 'folded'-ness of the sub-page this->manually_changed_folding = true; @@ -1958,8 +2048,9 @@ struct GameSettingsWindow : Window { return; } - assert((pe->flags & SEF_KIND_MASK) == SEF_SETTING_KIND); - const SettingDesc *sd = pe->d.entry.setting; + SettingEntry *pe = dynamic_cast(clicked_entry); + assert(pe != NULL); + const SettingDesc *sd = pe->setting; /* return if action is only active in network, or only settable by server */ if (!sd->IsEditable()) { @@ -2001,7 +2092,7 @@ struct GameSettingsWindow : Window { DropDownList *list = new DropDownList(); for (int i = sdb->min; i <= (int)sdb->max; i++) { - list->push_back(new DropDownListStringItem(sdb->str_val + i - sdb->min, i, false)); + *list->Append() = new DropDownListStringItem(sdb->str_val + i - sdb->min, i, false); } ShowDropDownListAt(this, list, value, -1, wi_rect, COLOUR_ORANGE, true); @@ -2063,9 +2154,9 @@ struct GameSettingsWindow : Window { if (value != oldvalue) { if ((sd->desc.flags & SGF_PER_COMPANY) != 0) { - SetCompanySetting(pe->d.entry.index, value); + SetCompanySetting(pe->index, value); } else { - SetSettingValue(pe->d.entry.index, value); + SetSettingValue(pe->index, value); } this->SetDirty(); } @@ -2098,8 +2189,7 @@ struct GameSettingsWindow : Window { if (str == NULL) return; assert(this->valuewindow_entry != NULL); - assert((this->valuewindow_entry->flags & SEF_KIND_MASK) == SEF_SETTING_KIND); - const SettingDesc *sd = this->valuewindow_entry->d.entry.setting; + const SettingDesc *sd = this->valuewindow_entry->setting; int32 value; if (!StrEmpty(str)) { @@ -2112,9 +2202,9 @@ struct GameSettingsWindow : Window { } if ((sd->desc.flags & SGF_PER_COMPANY) != 0) { - SetCompanySetting(this->valuewindow_entry->d.entry.index, value); + SetCompanySetting(this->valuewindow_entry->index, value); } else { - SetSettingValue(this->valuewindow_entry->d.entry.index, value); + SetSettingValue(this->valuewindow_entry->index, value); } this->SetDirty(); } @@ -2129,8 +2219,8 @@ struct GameSettingsWindow : Window { if (!this->manually_changed_folding) { /* Expand all when selecting 'changes'. Update the filter state first, in case it becomes less restrictive in some cases. */ - _settings_main_page.UpdateFilterState(this->filter, false); - _settings_main_page.UnFoldAll(); + GetSettingsTree().UpdateFilterState(this->filter, false); + GetSettingsTree().UnFoldAll(); } } else { /* Non-'changes' filter. Save as default. */ @@ -2148,13 +2238,13 @@ struct GameSettingsWindow : Window { if (widget < 0) { /* Deal with drop down boxes on the panel. */ assert(this->valuedropdown_entry != NULL); - const SettingDesc *sd = this->valuedropdown_entry->d.entry.setting; + const SettingDesc *sd = this->valuedropdown_entry->setting; assert(sd->desc.flags & SGF_MULTISTRING); if ((sd->desc.flags & SGF_PER_COMPANY) != 0) { - SetCompanySetting(this->valuedropdown_entry->d.entry.index, index); + SetCompanySetting(this->valuedropdown_entry->index, index); } else { - SetSettingValue(this->valuedropdown_entry->d.entry.index, index); + SetSettingValue(this->valuedropdown_entry->index, index); } this->SetDirty(); @@ -2186,17 +2276,28 @@ struct GameSettingsWindow : Window { { if (!gui_scope) return; - _settings_main_page.UpdateFilterState(this->filter, false); + /* Update which settings are to be visible. */ + RestrictionMode min_level = (this->filter.mode <= RM_ALL) ? this->filter.mode : RM_BASIC; + this->filter.min_cat = min_level; + this->filter.type_hides = false; + GetSettingsTree().UpdateFilterState(this->filter, false); - this->vscroll->SetCount(_settings_main_page.Length()); + if (this->filter.string.IsEmpty()) { + this->warn_missing = WHR_NONE; + } else if (min_level < this->filter.min_cat) { + this->warn_missing = this->filter.type_hides ? WHR_CATEGORY_TYPE : WHR_CATEGORY; + } else { + this->warn_missing = this->filter.type_hides ? WHR_TYPE : WHR_NONE; + } + this->vscroll->SetCount(GetSettingsTree().Length() + this->warn_lines); - if (this->last_clicked != NULL && !_settings_main_page.IsVisible(this->last_clicked)) { + if (this->last_clicked != NULL && !GetSettingsTree().IsVisible(this->last_clicked)) { this->SetDisplayedHelpText(NULL); } bool all_folded = true; bool all_unfolded = true; - _settings_main_page.GetFoldingState(all_folded, all_unfolded); + GetSettingsTree().GetFoldingState(all_folded, all_unfolded); this->SetWidgetDisabledState(WID_GS_EXPAND_ALL, all_unfolded); this->SetWidgetDisabledState(WID_GS_COLLAPSE_ALL, all_folded); } @@ -2208,7 +2309,7 @@ struct GameSettingsWindow : Window { if (!this->filter.string.IsEmpty() && !this->manually_changed_folding) { /* User never expanded/collapsed single pages and entered a filter term. * Expand everything, to save weird expand clicks, */ - _settings_main_page.UnFoldAll(); + GetSettingsTree().UnFoldAll(); } this->InvalidateData(); } @@ -2225,15 +2326,17 @@ GameSettings *GameSettingsWindow::settings_ptr = NULL; static const NWidgetPart _nested_settings_selection_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), - NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_CONFIG_SETTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_CONFIG_SETTING_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(NWID_HORIZONTAL), SetPadding(WD_TEXTPANEL_TOP, 0, WD_TEXTPANEL_BOTTOM, 0), - SetPIP(WD_FRAMETEXT_LEFT, WD_FRAMETEXT_RIGHT, WD_FRAMETEXT_RIGHT), - NWidget(WWT_TEXT, COLOUR_MAUVE, WID_GS_RESTRICT_LABEL), SetDataTip(STR_CONFIG_SETTING_RESTRICT_LABEL, STR_NULL), - NWidget(NWID_VERTICAL), SetPIP(0, WD_PAR_VSEP_NORMAL, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WD_PAR_VSEP_NORMAL, 0), SetPadding(WD_TEXTPANEL_TOP, 0, WD_TEXTPANEL_BOTTOM, 0), + NWidget(NWID_HORIZONTAL), SetPIP(WD_FRAMETEXT_LEFT, WD_FRAMETEXT_RIGHT, WD_FRAMETEXT_RIGHT), + NWidget(WWT_TEXT, COLOUR_MAUVE, WID_GS_RESTRICT_CATEGORY), SetDataTip(STR_CONFIG_SETTING_RESTRICT_CATEGORY, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_MAUVE, WID_GS_RESTRICT_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_BLACK_STRING, STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT), SetFill(1, 0), SetResize(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(WD_FRAMETEXT_LEFT, WD_FRAMETEXT_RIGHT, WD_FRAMETEXT_RIGHT), + NWidget(WWT_TEXT, COLOUR_MAUVE, WID_GS_RESTRICT_TYPE), SetDataTip(STR_CONFIG_SETTING_RESTRICT_TYPE, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_MAUVE, WID_GS_TYPE_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_BLACK_STRING, STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT), SetFill(1, 0), SetResize(1, 0), EndContainer(), EndContainer(), @@ -2246,23 +2349,18 @@ static const NWidgetPart _nested_settings_selection_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_GS_OPTIONSPANEL), SetMinimalSize(400, 174), SetScrollbar(WID_GS_SCROLLBAR), EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GS_SCROLLBAR), - EndContainer(), + NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GS_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE), SetMinimalSize(400, 40), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GS_HELP_TEXT), SetMinimalSize(300, 25), SetFill(1, 1), SetResize(1, 0), SetPadding(WD_FRAMETEXT_TOP, WD_FRAMETEXT_RIGHT, WD_FRAMETEXT_BOTTOM, WD_FRAMETEXT_LEFT), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_EXPAND_ALL), SetDataTip(STR_CONFIG_SETTING_EXPAND_ALL, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_COLLAPSE_ALL), SetDataTip(STR_CONFIG_SETTING_COLLAPSE_ALL, STR_NULL), - NWidget(NWID_SPACER, INVALID_COLOUR), SetFill(1, 1), SetResize(1, 0), - EndContainer(), - EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_MAUVE), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_EXPAND_ALL), SetDataTip(STR_CONFIG_SETTING_EXPAND_ALL, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_COLLAPSE_ALL), SetDataTip(STR_CONFIG_SETTING_COLLAPSE_ALL, STR_NULL), + NWidget(WWT_PANEL, COLOUR_MAUVE), SetFill(1, 0), SetResize(1, 0), EndContainer(), + NWidget(WWT_RESIZEBOX, COLOUR_MAUVE), EndContainer(), }; @@ -2293,19 +2391,20 @@ void ShowGameSettings() void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right) { int colour = _colour_gradient[button_colour][2]; + Dimension dim = NWidgetScrollbar::GetHorizontalDimension(); - DrawFrameRect(x, y, x + SETTING_BUTTON_WIDTH / 2 - 1, y + SETTING_BUTTON_HEIGHT - 1, button_colour, (state == 1) ? FR_LOWERED : FR_NONE); - DrawFrameRect(x + SETTING_BUTTON_WIDTH / 2, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 1, button_colour, (state == 2) ? FR_LOWERED : FR_NONE); + DrawFrameRect(x, y, x + dim.width - 1, y + dim.height - 1, button_colour, (state == 1) ? FR_LOWERED : FR_NONE); + DrawFrameRect(x + dim.width, y, x + dim.width + dim.width - 1, y + dim.height - 1, button_colour, (state == 2) ? FR_LOWERED : FR_NONE); DrawSprite(SPR_ARROW_LEFT, PAL_NONE, x + WD_IMGBTN_LEFT, y + WD_IMGBTN_TOP); - DrawSprite(SPR_ARROW_RIGHT, PAL_NONE, x + WD_IMGBTN_LEFT + SETTING_BUTTON_WIDTH / 2, y + WD_IMGBTN_TOP); + DrawSprite(SPR_ARROW_RIGHT, PAL_NONE, x + WD_IMGBTN_LEFT + dim.width, y + WD_IMGBTN_TOP); /* Grey out the buttons that aren't clickable */ bool rtl = _current_text_dir == TD_RTL; if (rtl ? !clickable_right : !clickable_left) { - GfxFillRect(x + 1, y, x + SETTING_BUTTON_WIDTH / 2 - 1, y + SETTING_BUTTON_HEIGHT - 2, colour, FILLRECT_CHECKER); + GfxFillRect(x + 1, y, x + dim.width - 1, y + dim.height - 2, colour, FILLRECT_CHECKER); } if (rtl ? !clickable_left : !clickable_right) { - GfxFillRect(x + SETTING_BUTTON_WIDTH / 2 + 1, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 2, colour, FILLRECT_CHECKER); + GfxFillRect(x + dim.width + 1, y, x + dim.width + dim.width - 1, y + dim.height - 2, colour, FILLRECT_CHECKER); } } @@ -2319,12 +2418,10 @@ void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clic */ void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable) { - static const char *DOWNARROW = "\xEE\x8A\xAA"; - int colour = _colour_gradient[button_colour][2]; DrawFrameRect(x, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 1, button_colour, state ? FR_LOWERED : FR_NONE); - DrawString(x + (state ? 1 : 0), x + SETTING_BUTTON_WIDTH - (state ? 0 : 1), y + (state ? 2 : 1), DOWNARROW, TC_BLACK, SA_HOR_CENTER); + DrawSprite(SPR_ARROW_DOWN, PAL_NONE, x + (SETTING_BUTTON_WIDTH - NWidgetScrollbar::GetVerticalDimension().width) / 2 + state, y + 2 + state); if (!clickable) { GfxFillRect(x + 1, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 2, colour, FILLRECT_CHECKER); diff --git a/src/settings_gui.h b/src/settings_gui.h index 2ca418b11f..05955aa557 100644 --- a/src/settings_gui.h +++ b/src/settings_gui.h @@ -14,8 +14,10 @@ #include "gfx_type.h" -static const int SETTING_BUTTON_WIDTH = 20; ///< Width of setting buttons -static const int SETTING_BUTTON_HEIGHT = 10; ///< Height of setting buttons +/** Width of setting buttons */ +#define SETTING_BUTTON_WIDTH ((int)NWidgetScrollbar::GetHorizontalDimension().width * 2) +/** Height of setting buttons */ +#define SETTING_BUTTON_HEIGHT ((int)NWidgetScrollbar::GetHorizontalDimension().height) void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right); void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable); diff --git a/src/settings_internal.h b/src/settings_internal.h index 028e977e48..e356e7e5e6 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -111,6 +111,7 @@ struct SettingDescBase { struct SettingDesc { SettingDescBase desc; ///< Settings structure (going to configuration file) SaveLoad save; ///< Internal structure (going to savegame, parts to config) + const char *patx_name; ///< Name to save/load setting from in PATX chunk, if NULL save/load from PATS chunk as normal bool IsEditable(bool do_command = false) const; SettingType GetType() const; diff --git a/src/settings_type.h b/src/settings_type.h index 850120af10..117737f882 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -83,7 +83,7 @@ struct GUISettings { uint8 stop_location; ///< what is the default stop location of trains? uint8 auto_scrolling; ///< scroll when moving mouse to the edge (see #ViewportAutoscrolling) byte errmsg_duration; ///< duration of error message - byte hover_delay; ///< time required to activate a hover event, in seconds + uint16 hover_delay_ms; ///< time required to activate a hover event, in milliseconds bool link_terraform_toolbar; ///< display terraform toolbar when displaying rail, road, water and airport toolbars uint8 smallmap_land_colour; ///< colour used for land and heightmap at the smallmap bool reverse_scroll; ///< right-Click-Scrolling scrolls in the opposite direction @@ -144,7 +144,7 @@ struct GUISettings { uint8 station_gui_sort_by; ///< sort cargo entries in the station gui by station name or amount uint8 station_gui_sort_order; ///< the sort order of entries in the station gui - ascending or descending #ifdef ENABLE_NETWORK - uint16 network_chat_box_width; ///< width of the chat box in pixels + uint16 network_chat_box_width_pct; ///< width of the chat box in percent uint8 network_chat_box_height; ///< height of the chat box in lines uint16 network_chat_timeout; ///< timeout of chat messages in seconds #endif @@ -278,7 +278,7 @@ struct GameCreationSettings { uint8 map_y; ///< Y size of map byte land_generator; ///< the landscape generator byte oil_refinery_limit; ///< distance oil refineries allowed from map edge - byte snow_line_height; ///< a number 0-15 that configured snow line height + byte snow_line_height; ///< the configured snow line height byte tgen_smoothness; ///< how rough is the terrain from 0-3 byte tree_placer; ///< the tree placer algorithm byte heightmap_rotation; ///< rotation director for the heightmap @@ -296,9 +296,11 @@ struct GameCreationSettings { /** Settings related to construction in-game */ struct ConstructionSettings { + uint8 max_heightlevel; ///< maximum allowed heightlevel bool build_on_slopes; ///< allow building on slopes bool autoslope; ///< allow terraforming under things uint16 max_bridge_length; ///< maximum length of bridges + byte max_bridge_height; ///< maximum height of bridges uint16 max_tunnel_length; ///< maximum length of tunnels byte train_signal_side; ///< show signals on left / driving / right side bool extra_dynamite; ///< extra dynamite diff --git a/src/settingsgen/settingsgen.cpp b/src/settingsgen/settingsgen.cpp index d975822477..dd92e2627b 100644 --- a/src/settingsgen/settingsgen.cpp +++ b/src/settingsgen/settingsgen.cpp @@ -30,6 +30,8 @@ #define stderr stdout #endif /* __MORPHOS__ */ +#include "../safeguards.h" + /** * Report a fatal error. * @param s Format string. @@ -40,7 +42,7 @@ void NORETURN CDECL error(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); fprintf(stderr, "FATAL: %s\n", buf); exit(1); diff --git a/src/ship.h b/src/ship.h index 29f4439d49..18f04c8faf 100644 --- a/src/ship.h +++ b/src/ship.h @@ -37,7 +37,7 @@ struct Ship FINAL : public SpecializedVehicle { SpriteID GetImage(Direction direction, EngineImageType image_type) const; int GetDisplaySpeed() const { return this->cur_speed / 2; } int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed / 2; } - int GetCurrentMaxSpeed() const { return min(this->vcache.cached_max_speed, this->current_order.max_speed * 2); } + int GetCurrentMaxSpeed() const { return min(this->vcache.cached_max_speed, this->current_order.GetMaxSpeed() * 2); } Money GetRunningCost() const; bool IsInDepot() const { return this->state == TRACK_BIT_DEPOT; } bool Tick(); diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index bafce981f7..a24fb35104 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -36,6 +36,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Determine the effective #WaterClass for a ship travelling on a tile. * @param tile Tile of interest @@ -57,6 +59,12 @@ WaterClass GetEffectiveWaterClass(TileIndex tile) static const uint16 _ship_sprites[] = {0x0E5D, 0x0E55, 0x0E65, 0x0E6D}; +template <> +bool IsValidImageIndex(uint8 image_index) +{ + return image_index < lengthof(_ship_sprites); +} + static inline TrackBits GetTileShipTrackStatus(TileIndex tile) { return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0)); @@ -74,6 +82,7 @@ static SpriteID GetShipIcon(EngineID engine, EngineImageType image_type) spritenum = e->original_image_index; } + assert(IsValidImageIndex(spritenum)); return DIR_W + _ship_sprites[spritenum]; } @@ -81,7 +90,9 @@ void DrawShipEngine(int left, int right, int preferred_x, int y, EngineID engine { SpriteID sprite = GetShipIcon(engine, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - preferred_x = Clamp(preferred_x, left - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI), right - UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI) - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI)); + preferred_x = Clamp(preferred_x, + left - UnScaleGUI(real_sprite->x_offs), + right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs)); DrawSprite(sprite, pal, preferred_x, y); } @@ -98,10 +109,10 @@ void GetShipSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, i { const Sprite *spr = GetSprite(GetShipIcon(engine, image_type), ST_NORMAL); - width = UnScaleByZoom(spr->width, ZOOM_LVL_GUI); - height = UnScaleByZoom(spr->height, ZOOM_LVL_GUI); - xoffs = UnScaleByZoom(spr->x_offs, ZOOM_LVL_GUI); - yoffs = UnScaleByZoom(spr->y_offs, ZOOM_LVL_GUI); + width = UnScaleGUI(spr->width); + height = UnScaleGUI(spr->height); + xoffs = UnScaleGUI(spr->x_offs); + yoffs = UnScaleGUI(spr->y_offs); } SpriteID Ship::GetImage(Direction direction, EngineImageType image_type) const @@ -115,6 +126,7 @@ SpriteID Ship::GetImage(Direction direction, EngineImageType image_type) const spritenum = this->GetEngine()->original_image_index; } + assert(IsValidImageIndex(spritenum)); return _ship_sprites[spritenum] + direction; } @@ -368,7 +380,7 @@ static bool ShipAccelerate(Vehicle *v) byte t; spd = min(v->cur_speed + 1, v->vcache.cached_max_speed); - spd = min(spd, v->current_order.max_speed * 2); + spd = min(spd, v->current_order.GetMaxSpeed() * 2); /* updates statusbar only if speed have changed to save CPU time */ if (spd != v->cur_speed) { @@ -615,8 +627,8 @@ static void ShipController(Ship *v) if (!IsTileType(gp.new_tile, MP_TUNNELBRIDGE) || !HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) { v->x_pos = gp.x; v->y_pos = gp.y; - VehicleUpdatePosition(v); - if ((v->vehstatus & VS_HIDDEN) == 0) VehicleUpdateViewport(v, true); + v->UpdatePosition(); + if ((v->vehstatus & VS_HIDDEN) == 0) v->Vehicle::UpdateViewport(true); return; } } @@ -628,7 +640,7 @@ static void ShipController(Ship *v) v->z_pos = GetSlopePixelZ(gp.x, gp.y); getout: - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateViewport(true, true); return; @@ -712,7 +724,7 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u v->InvalidateNewGRFCacheOfChain(); - VehicleUpdatePosition(v); + v->UpdatePosition(); } return CommandCost(); diff --git a/src/ship_gui.cpp b/src/ship_gui.cpp index 10cf78922b..7ad2e8473a 100644 --- a/src/ship_gui.cpp +++ b/src/ship_gui.cpp @@ -21,6 +21,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Draws an image of a ship * @param v Front vehicle @@ -36,16 +38,17 @@ void DrawShipImage(const Vehicle *v, int left, int right, int y, VehicleID selec SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - int width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); - int x_offs = UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI); + int width = UnScaleGUI(real_sprite->width); + int x_offs = UnScaleGUI(real_sprite->x_offs); int x = rtl ? right - width - x_offs : left - x_offs; - DrawSprite(sprite, GetVehiclePalette(v), x, y + 10); + y += ScaleGUITrad(10); + DrawSprite(sprite, GetVehiclePalette(v), x, y); if (v->index == selection) { x += x_offs; - y += UnScaleByZoom(real_sprite->y_offs, ZOOM_LVL_GUI) + 10; - DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleByZoom(real_sprite->height, ZOOM_LVL_GUI) + 1, COLOUR_WHITE, FR_BORDERONLY); + y += UnScaleGUI(real_sprite->y_offs); + DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleGUI(real_sprite->height) + 1, COLOUR_WHITE, FR_BORDERONLY); } } diff --git a/src/signal.cpp b/src/signal.cpp index 2d16e9a730..8e870b53db 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -18,6 +18,8 @@ #include "train.h" #include "company_base.h" +#include "safeguards.h" + /** these are the maximums used for updating signal blocks */ static const uint SIG_TBU_SIZE = 64; ///< number of signals entering to block @@ -294,6 +296,7 @@ static SigFlags ExploreSegment(Owner owner) } } + assert(IsValidDiagDirection(enterdir)); TrackBits tracks = GetTrackBits(tile); // trackbits of tile TrackBits tracks_masked = (TrackBits)(tracks & _enterdir_to_trackbits[enterdir]); // only incidating trackbits diff --git a/src/signs.cpp b/src/signs.cpp index 53465fc8a1..2a23a43c9c 100644 --- a/src/signs.cpp +++ b/src/signs.cpp @@ -18,6 +18,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** Initialize the sign-pool */ SignPool _sign_pool("Sign"); INSTANTIATE_POOL_METHODS(Sign) diff --git a/src/signs_cmd.cpp b/src/signs_cmd.cpp index 3109d1ef03..4badd36050 100644 --- a/src/signs_cmd.cpp +++ b/src/signs_cmd.cpp @@ -21,6 +21,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** The last built sign. */ SignID _new_sign_id; @@ -53,7 +55,7 @@ CommandCost CmdPlaceSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 si->y = y; si->z = GetSlopePixelZ(x, y); if (!StrEmpty(text)) { - si->name = strdup(text); + si->name = stredup(text); } si->UpdateVirtCoord(); InvalidateWindowData(WC_SIGN_LIST, 0, 0); @@ -88,7 +90,7 @@ CommandCost CmdRenameSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* Delete the old name */ free(si->name); /* Assign the new one */ - si->name = strdup(text); + si->name = stredup(text); if (_game_mode != GM_EDITOR) si->owner = _current_company; si->UpdateVirtCoord(); diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp index aa2154e491..a34f1db077 100644 --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -33,6 +33,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + struct SignList { /** * A GUIList contains signs and uses a StringFilter for filtering. @@ -158,7 +160,6 @@ struct SignListWindow : Window, SignList { /* Initialize the text edit widget */ this->querystrings[WID_SIL_FILTER_TEXT] = &this->filter_editbox; - this->filter_editbox.ok_button = WID_SIL_FILTER_ENTER_BTN; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; /* Initialize the filtering variables */ @@ -541,7 +542,7 @@ static const NWidgetPart _nested_query_sign_edit_widgets[] = { }; static WindowDesc _query_sign_edit_desc( - WDP_AUTO, "query_sign", 0, 0, + WDP_CENTER, "query_sign", 0, 0, WC_QUERY_STRING, WC_NONE, WDF_CONSTRUCTION, _nested_query_sign_edit_widgets, lengthof(_nested_query_sign_edit_widgets) diff --git a/src/smallmap_gui.cpp b/src/smallmap_gui.cpp index 40109a9079..80d4ae2a89 100644 --- a/src/smallmap_gui.cpp +++ b/src/smallmap_gui.cpp @@ -28,6 +28,10 @@ #include "table/strings.h" +#include + +#include "safeguards.h" + static int _smallmap_industry_count; ///< Number of used industries static int _smallmap_company_count; ///< Number of entries in the owner legend. static int _smallmap_cargo_count; ///< Number of cargos in the link stats legend. @@ -48,7 +52,7 @@ static const uint8 PC_WATER = 0xCA; ///< Dark blue palette colour for #define MK(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} /** Macro for a height legend entry with configurable colour. */ -#define MC(height) {0, STR_TINY_BLACK_HEIGHT, INVALID_INDUSTRYTYPE, height, INVALID_COMPANY, true, false, false} +#define MC(col_break) {0, STR_TINY_BLACK_HEIGHT, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, col_break} /** Macro for non-company owned property entry of LegendAndColour */ #define MO(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} @@ -67,18 +71,27 @@ static const uint8 PC_WATER = 0xCA; ///< Dark blue palette colour for /** Legend text giving the colours to look for on the minimap */ static LegendAndColour _legend_land_contours[] = { - /* The colours for the following values are set at BuildLandLegend() based on each colour scheme. */ - MC(0), - MC(4), - MC(8), - MC(12), - MC(14), - - MS(PC_BLACK, STR_SMALLMAP_LEGENDA_ROADS), + MK(PC_BLACK, STR_SMALLMAP_LEGENDA_ROADS), MK(PC_GREY, STR_SMALLMAP_LEGENDA_RAILROADS), MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS), MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES), MK(PC_WHITE, STR_SMALLMAP_LEGENDA_VEHICLES), + + /* Placeholders for the colours and heights of the legend. + * The following values are set at BuildLandLegend() based + * on each colour scheme and the maximum map height. */ + MC(true), + MC(false), + MC(false), + MC(false), + MC(false), + MC(false), + MC(true), + MC(false), + MC(false), + MC(false), + MC(false), + MC(false), MKEND() }; @@ -164,7 +177,7 @@ void BuildIndustriesLegend() uint j = 0; /* Add each name */ - for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) { + for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) { IndustryType ind = _sorted_industry_types[i]; const IndustrySpec *indsp = GetIndustrySpec(ind); if (indsp->enabled) { @@ -246,80 +259,21 @@ static const LegendAndColour * const _legend_table[] = { #define MKCOLOUR_F00F MKCOLOUR_X00X(0xFF) #define MKCOLOUR_FFFF MKCOLOUR_XXXX(0xFF) -/** Height map colours for the green colour scheme, ordered by height. */ -static const uint32 _green_map_heights[] = { - MKCOLOUR_XXXX(0x5A), - MKCOLOUR_XYXY(0x5A, 0x5B), - MKCOLOUR_XXXX(0x5B), - MKCOLOUR_XYXY(0x5B, 0x5C), - MKCOLOUR_XXXX(0x5C), - MKCOLOUR_XYXY(0x5C, 0x5D), - MKCOLOUR_XXXX(0x5D), - MKCOLOUR_XYXY(0x5D, 0x5E), - MKCOLOUR_XXXX(0x5E), - MKCOLOUR_XYXY(0x5E, 0x5F), - MKCOLOUR_XXXX(0x5F), - MKCOLOUR_XYXY(0x5F, 0x1F), - MKCOLOUR_XXXX(0x1F), - MKCOLOUR_XYXY(0x1F, 0x27), - MKCOLOUR_XXXX(0x27), - MKCOLOUR_XXXX(0x27), -}; -assert_compile(lengthof(_green_map_heights) == MAX_TILE_HEIGHT + 1); - -/** Height map colours for the dark green colour scheme, ordered by height. */ -static const uint32 _dark_green_map_heights[] = { - MKCOLOUR_XXXX(0x60), - MKCOLOUR_XYXY(0x60, 0x61), - MKCOLOUR_XXXX(0x61), - MKCOLOUR_XYXY(0x61, 0x62), - MKCOLOUR_XXXX(0x62), - MKCOLOUR_XYXY(0x62, 0x63), - MKCOLOUR_XXXX(0x63), - MKCOLOUR_XYXY(0x63, 0x64), - MKCOLOUR_XXXX(0x64), - MKCOLOUR_XYXY(0x64, 0x65), - MKCOLOUR_XXXX(0x65), - MKCOLOUR_XYXY(0x65, 0x66), - MKCOLOUR_XXXX(0x66), - MKCOLOUR_XYXY(0x66, 0x67), - MKCOLOUR_XXXX(0x67), - MKCOLOUR_XXXX(0x67), -}; -assert_compile(lengthof(_dark_green_map_heights) == MAX_TILE_HEIGHT + 1); - -/** Height map colours for the violet colour scheme, ordered by height. */ -static const uint32 _violet_map_heights[] = { - MKCOLOUR_XXXX(0x80), - MKCOLOUR_XYXY(0x80, 0x81), - MKCOLOUR_XXXX(0x81), - MKCOLOUR_XYXY(0x81, 0x82), - MKCOLOUR_XXXX(0x82), - MKCOLOUR_XYXY(0x82, 0x83), - MKCOLOUR_XXXX(0x83), - MKCOLOUR_XYXY(0x83, 0x84), - MKCOLOUR_XXXX(0x84), - MKCOLOUR_XYXY(0x84, 0x85), - MKCOLOUR_XXXX(0x85), - MKCOLOUR_XYXY(0x85, 0x86), - MKCOLOUR_XXXX(0x86), - MKCOLOUR_XYXY(0x86, 0x87), - MKCOLOUR_XXXX(0x87), - MKCOLOUR_XXXX(0x87), -}; -assert_compile(lengthof(_violet_map_heights) == MAX_TILE_HEIGHT + 1); +#include "table/heightmap_colours.h" /** Colour scheme of the smallmap. */ struct SmallMapColourScheme { - const uint32 *height_colours; ///< Colour of each level in a heightmap. - uint32 default_colour; ///< Default colour of the land. + uint32 *height_colours; ///< Cached colours for each level in a map. + const uint32 *height_colours_base; ///< Base table for determining the colours + size_t colour_count; ///< The number of colours. + uint32 default_colour; ///< Default colour of the land. }; /** Available colour schemes for height maps. */ -static const SmallMapColourScheme _heightmap_schemes[] = { - {_green_map_heights, MKCOLOUR_XXXX(0x54)}, ///< Green colour scheme. - {_dark_green_map_heights, MKCOLOUR_XXXX(0x62)}, ///< Dark green colour scheme. - {_violet_map_heights, MKCOLOUR_XXXX(0x82)}, ///< Violet colour scheme. +static SmallMapColourScheme _heightmap_schemes[] = { + {NULL, _green_map_heights, lengthof(_green_map_heights), MKCOLOUR_XXXX(0x54)}, ///< Green colour scheme. + {NULL, _dark_green_map_heights, lengthof(_dark_green_map_heights), MKCOLOUR_XXXX(0x62)}, ///< Dark green colour scheme. + {NULL, _violet_map_heights, lengthof(_violet_map_heights), MKCOLOUR_XXXX(0x82)}, ///< Violet colour scheme. }; /** @@ -327,9 +281,50 @@ static const SmallMapColourScheme _heightmap_schemes[] = { */ void BuildLandLegend() { - for (LegendAndColour *lc = _legend_land_contours; lc->legend == STR_TINY_BLACK_HEIGHT; lc++) { - lc->colour = _heightmap_schemes[_settings_client.gui.smallmap_land_colour].height_colours[lc->height]; + /* The smallmap window has never been initialized, so no need to change the legend. */ + if (_heightmap_schemes[0].height_colours == NULL) return; + + /* + * The general idea of this function is to fill the legend with an appropriate evenly spaced + * selection of height levels. All entries with STR_TINY_BLACK_HEIGHT are reserved for this. + * At the moment there are twelve of these. + * + * The table below defines up to which height level a particular delta in the legend should be + * used. One could opt for just dividing the maximum height and use that as delta, but that + * creates many "ugly" legend labels, e.g. once every 950 meter. As a result, this table will + * reduce the number of deltas to 7: every 100m, 200m, 300m, 500m, 750m, 1000m and 1250m. The + * deltas are closer together at the lower numbers because going from 12 entries to just 4, as + * would happen when replacing 200m and 300m by 250m, would mean the legend would be short and + * that might not be considered appropriate. + * + * The current method yields at least 7 legend entries and at most 12. It can be increased to + * 8 by adding a 150m and 400m option, but especially 150m creates ugly heights. + * + * It tries to evenly space the legend items over the two columns that are there for the legend. + */ + + /* Table for delta; if max_height is less than the first column, use the second column as value. */ + uint deltas[][2] = { { 24, 2 }, { 48, 4 }, { 72, 6 }, { 120, 10 }, { 180, 15 }, { 240, 20 }, { MAX_TILE_HEIGHT + 1, 25 }}; + uint i = 0; + for (; _settings_game.construction.max_heightlevel >= deltas[i][0]; i++) { + /* Nothing to do here. */ } + uint delta = deltas[i][1]; + + int total_entries = (_settings_game.construction.max_heightlevel / delta) + 1; + int rows = CeilDiv(total_entries, 2); + int j = 0; + + for (i = 0; i < lengthof(_legend_land_contours) - 1 && j < total_entries; i++) { + if (_legend_land_contours[i].legend != STR_TINY_BLACK_HEIGHT) continue; + + _legend_land_contours[i].col_break = j % rows == 0; + _legend_land_contours[i].end = false; + _legend_land_contours[i].height = j * delta; + _legend_land_contours[i].colour = _heightmap_schemes[_settings_client.gui.smallmap_land_colour].height_colours[j * delta]; + j++; + } + _legend_land_contours[i].end = true; } /** @@ -715,6 +710,7 @@ void SmallMapWindow::SetZoomLevel(ZoomLevelChange change, const Point *zoom_pt) case ZLC_INITIALIZE: cur_index = - 1; // Definitely different from new_index. new_index = MIN_ZOOM_INDEX; + tile.x = tile.y = 0; break; case ZLC_ZOOM_IN: @@ -853,7 +849,7 @@ void SmallMapWindow::DrawVehicles(const DrawPixelInfo *dpi, Blitter *blitter) co if (v->vehstatus & (VS_HIDDEN | VS_UNCLICKABLE)) continue; /* Remap into flat coordinates. */ - Point pt = this->RemapTile(v->x_pos / TILE_SIZE, v->y_pos / TILE_SIZE); + Point pt = this->RemapTile(v->x_pos / (int)TILE_SIZE, v->y_pos / (int)TILE_SIZE); int y = pt.y - dpi->top; if (!IsInsideMM(y, 0, dpi->height)) continue; // y is out of bounds. @@ -913,19 +909,20 @@ void SmallMapWindow::DrawMapIndicators() const /* Find main viewport. */ const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; - Point tile = InverseRemapCoords(vp->virtual_left, vp->virtual_top); - Point tl = this->RemapTile(tile.x >> 4, tile.y >> 4); - tl.x -= this->subscroll; + Point upper_left_smallmap_coord = TranslateXYToTileCoord(vp, vp->left, vp->top, false); + Point lower_right_smallmap_coord = TranslateXYToTileCoord(vp, vp->left + vp->width - 1, vp->top + vp->height - 1, false); - tile = InverseRemapCoords(vp->virtual_left + vp->virtual_width, vp->virtual_top + vp->virtual_height); - Point br = this->RemapTile(tile.x >> 4, tile.y >> 4); - br.x -= this->subscroll; + Point upper_left = this->RemapTile(upper_left_smallmap_coord.x / (int)TILE_SIZE, upper_left_smallmap_coord.y / (int)TILE_SIZE); + upper_left.x -= this->subscroll; - SmallMapWindow::DrawVertMapIndicator(tl.x, tl.y, br.y); - SmallMapWindow::DrawVertMapIndicator(br.x, tl.y, br.y); + Point lower_right = this->RemapTile(lower_right_smallmap_coord.x / (int)TILE_SIZE, lower_right_smallmap_coord.y / (int)TILE_SIZE); + lower_right.x -= this->subscroll; - SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, tl.y); - SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, br.y); + SmallMapWindow::DrawVertMapIndicator(upper_left.x, upper_left.y, lower_right.y); + SmallMapWindow::DrawVertMapIndicator(lower_right.x, upper_left.y, lower_right.y); + + SmallMapWindow::DrawHorizMapIndicator(upper_left.x, lower_right.x, upper_left.y); + SmallMapWindow::DrawHorizMapIndicator(upper_left.x, lower_right.x, lower_right.y); } /** @@ -941,7 +938,7 @@ void SmallMapWindow::DrawMapIndicators() const */ void SmallMapWindow::DrawSmallMap(DrawPixelInfo *dpi) const { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); DrawPixelInfo *old_dpi; old_dpi = _cur_dpi; @@ -1048,11 +1045,12 @@ void SmallMapWindow::SetupWidgetData() SmallMapWindow::SmallMapWindow(WindowDesc *desc, int window_number) : Window(desc), refresh(FORCE_REFRESH_PERIOD) { _smallmap_industry_highlight = INVALID_INDUSTRYTYPE; - this->overlay = new LinkGraphOverlay(this, WID_SM_MAP); + this->overlay = new LinkGraphOverlay(this, WID_SM_MAP, 0, this->GetOverlayCompanyMask(), 1); this->InitNested(window_number); this->LowerWidget(this->map_type + WID_SM_CONTOUR); - BuildLandLegend(); + this->RebuildColourIndexIfNecessary(); + this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); @@ -1064,6 +1062,31 @@ SmallMapWindow::SmallMapWindow(WindowDesc *desc, int window_number) : Window(des this->SetOverlayCargoMask(); } +/** + * Rebuilds the colour indices used for fast access to the smallmap contour colours based on the heightlevel. + */ +void SmallMapWindow::RebuildColourIndexIfNecessary() +{ + /* Rebuild colour indices if necessary. */ + if (SmallMapWindow::max_heightlevel == _settings_game.construction.max_heightlevel) return; + + for (uint n = 0; n < lengthof(_heightmap_schemes); n++) { + /* The heights go from 0 up to and including maximum. */ + int heights = _settings_game.construction.max_heightlevel + 1; + _heightmap_schemes[n].height_colours = ReallocT(_heightmap_schemes[n].height_colours, heights); + + for (int z = 0; z < heights; z++) { + uint access_index = (_heightmap_schemes[n].colour_count * z) / heights; + + /* Choose colour by mapping the range (0..max heightlevel) on the complete colour table. */ + _heightmap_schemes[n].height_colours[z] = _heightmap_schemes[n].height_colours_base[access_index]; + } + } + + SmallMapWindow::max_heightlevel = _settings_game.construction.max_heightlevel; + BuildLandLegend(); +} + /* virtual */ void SmallMapWindow::SetStringParameters(int widget) const { switch (widget) { @@ -1308,7 +1331,6 @@ void SmallMapWindow::SetOverlayCargoMask() if (_legend_linkstats[i].show_on_map) SetBit(cargo_mask, _legend_linkstats[i].type); } this->overlay->SetCargoMask(cargo_mask); - this->overlay->RebuildCache(); } /** @@ -1370,12 +1392,7 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) Window *w = FindWindowById(WC_MAIN_WINDOW, 0); int sub; pt = this->PixelToTile(pt.x - wid->pos_x, pt.y - wid->pos_y, &sub); - pt = RemapCoords(this->scroll_x + pt.x * TILE_SIZE + this->zoom * (TILE_SIZE - sub * TILE_SIZE / 4), - this->scroll_y + pt.y * TILE_SIZE + sub * this->zoom * TILE_SIZE / 4, 0); - - w->viewport->follow_vehicle = INVALID_VEHICLE; - w->viewport->dest_scrollpos_x = pt.x - (w->viewport->virtual_width >> 1); - w->viewport->dest_scrollpos_y = pt.y - (w->viewport->virtual_height >> 1); + ScrollWindowTo(this->scroll_x + pt.x * TILE_SIZE, this->scroll_y + pt.y * TILE_SIZE, -1, w); this->SetDirty(); break; @@ -1418,10 +1435,12 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) case WID_SM_LEGEND: // Legend if (this->map_type == SMT_INDUSTRY || this->map_type == SMT_LINKSTATS || this->map_type == SMT_OWNER) { int click_pos = this->GetPositionOnLegend(pt); + if (click_pos < 0) break; + /* If industry type small map*/ if (this->map_type == SMT_INDUSTRY) { /* If click on industries label, find right industry type and enable/disable it. */ - if (click_pos >= 0 && click_pos < _smallmap_industry_count) { + if (click_pos < _smallmap_industry_count) { this->SelectLegendItem(click_pos, _legend_from_industries, _smallmap_industry_count); } } else if (this->map_type == SMT_LINKSTATS) { @@ -1476,11 +1495,13 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) * @param data Information about the changed data. * - data = 0: Displayed industries at the industry chain window have changed. * - data = 1: Companies have changed. + * - data = 2: Cheat changing the maximum heightlevel has been used, rebuild our heightlevel-to-colour index * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ /* virtual */ void SmallMapWindow::OnInvalidateData(int data, bool gui_scope) { if (!gui_scope) return; + switch (data) { case 1: /* The owner legend has already been rebuilt. */ @@ -1488,15 +1509,19 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) break; case 0: { - extern uint64 _displayed_industries; + extern std::bitset _displayed_industries; if (this->map_type != SMT_INDUSTRY) this->SwitchMapType(SMT_INDUSTRY); for (int i = 0; i != _smallmap_industry_count; i++) { - _legend_from_industries[i].show_on_map = HasBit(_displayed_industries, _legend_from_industries[i].type); + _legend_from_industries[i].show_on_map = _displayed_industries.test(_legend_from_industries[i].type); } break; } + case 2: + this->RebuildColourIndexIfNecessary(); + break; + default: NOT_REACHED(); } this->SetDirty(); @@ -1528,7 +1553,14 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) /* Update the window every now and then */ if (--this->refresh != 0) return; - if (this->map_type == SMT_LINKSTATS) this->overlay->RebuildCache(); + if (this->map_type == SMT_LINKSTATS) { + uint32 company_mask = this->GetOverlayCompanyMask(); + if (this->overlay->GetCompanyMask() != company_mask) { + this->overlay->SetCompanyMask(company_mask); + } else { + this->overlay->RebuildCache(); + } + } _smallmap_industry_highlight_state = !_smallmap_industry_highlight_state; this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; @@ -1584,14 +1616,18 @@ void SmallMapWindow::SetNewScroll(int sx, int sy, int sub) this->SetDirty(); } +/** + * Center the small map on the current center of the viewport. + */ void SmallMapWindow::SmallMapCenterOnCurrentPos() { const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; - Point pt = InverseRemapCoords(vp->virtual_left + vp->virtual_width / 2, vp->virtual_top + vp->virtual_height / 2); + Point viewport_center = TranslateXYToTileCoord(vp, vp->left + vp->width / 2, vp->top + vp->height / 2); int sub; const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); - Point sxy = this->ComputeScroll(pt.x / TILE_SIZE, pt.y / TILE_SIZE, max(0, (int)wid->current_x / 2 - 2), wid->current_y / 2, &sub); + Point sxy = this->ComputeScroll(viewport_center.x / (int)TILE_SIZE, viewport_center.y / (int)TILE_SIZE, + max(0, (int)wid->current_x / 2 - 2), wid->current_y / 2, &sub); this->SetNewScroll(sxy.x, sxy.y, sub); this->SetDirty(); } @@ -1616,6 +1652,7 @@ Point SmallMapWindow::GetStationMiddle(const Station *st) const SmallMapWindow::SmallMapType SmallMapWindow::map_type = SMT_CONTOUR; bool SmallMapWindow::show_towns = true; +int SmallMapWindow::max_heightlevel = -1; /** * Custom container class for displaying smallmap with a vertically resizing legend panel. @@ -1642,6 +1679,7 @@ public: bar->SetupSmallestSize(w, init_array); this->smallmap_window = dynamic_cast(w); + assert(this->smallmap_window != NULL); this->smallest_x = max(display->smallest_x, bar->smallest_x + smallmap_window->GetMinLegendWidth()); this->smallest_y = display->smallest_y + max(bar->smallest_y, smallmap_window->GetLegendHeight(smallmap_window->min_number_of_columns)); this->fill_x = max(display->fill_x, bar->fill_x); @@ -1725,7 +1763,7 @@ static const NWidgetPart _nested_smallmap_bar[] = { NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_TOGGLETOWNNAME), SetDataTip(SPR_IMG_TOWN, STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_LINKSTATS), - SetDataTip(SPR_IMG_GRAPHS, STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP), SetFill(1, 1), + SetDataTip(SPR_IMG_CARGOFLOW, STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_ROUTES), SetDataTip(SPR_IMG_SHOW_ROUTES, STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_VEGETATION), @@ -1760,17 +1798,15 @@ static const NWidgetPart _nested_smallmap_widgets[] = { NWidgetFunction(SmallMapDisplay), // Smallmap display and legend bar + image buttons. /* Bottom button row and resize box. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SM_SELECT_BUTTONS), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_ENABLE_ALL), SetDataTip(STR_SMALLMAP_ENABLE_ALL, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_DISABLE_ALL), SetDataTip(STR_SMALLMAP_DISABLE_ALL, STR_NULL), - NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_SM_SHOW_HEIGHT), SetDataTip(STR_SMALLMAP_SHOW_HEIGHT, STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT), - EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 1), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SM_SELECT_BUTTONS), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_ENABLE_ALL), SetDataTip(STR_SMALLMAP_ENABLE_ALL, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_DISABLE_ALL), SetDataTip(STR_SMALLMAP_DISABLE_ALL, STR_NULL), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_SM_SHOW_HEIGHT), SetDataTip(STR_SMALLMAP_SHOW_HEIGHT, STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT), + NWidget(WWT_PANEL, COLOUR_BROWN), SetFill(1, 0), SetResize(1, 0), EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_BROWN), SetFill(1, 0), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), diff --git a/src/smallmap_gui.h b/src/smallmap_gui.h index 4b180f547f..2903544a69 100644 --- a/src/smallmap_gui.h +++ b/src/smallmap_gui.h @@ -13,6 +13,7 @@ #define SMALLMAP_GUI_H #include "industry_type.h" +#include "company_base.h" #include "window_gui.h" #include "strings_func.h" #include "blitter/factory.hpp" @@ -62,6 +63,7 @@ protected: static SmallMapType map_type; ///< Currently displayed legends. static bool show_towns; ///< Display town names in the smallmap. + static int max_heightlevel; ///< Currently used/cached maximum heightlevel. static const uint LEGEND_BLOB_WIDTH = 8; ///< Width of the coloured blob in front of a line text in the #WID_SM_LEGEND widget. static const uint INDUSTRY_MIN_NUMBER_OF_COLUMNS = 2; ///< Minimal number of columns in the #WID_SM_LEGEND widget for the #SMT_INDUSTRY legend. @@ -135,6 +137,17 @@ protected: this->GetNumberRowsLegend(num_columns) * FONT_HEIGHT_SMALL; } + /** + * Get a bitmask for company links to be displayed. Usually this will be + * the _local_company. Spectators get to see all companies' links. + * @return Company mask. + */ + inline uint32 GetOverlayCompanyMask() const + { + return Company::IsValidID(_local_company) ? 1U << _local_company : 0xffffffff; + } + + void RebuildColourIndexIfNecessary(); uint GetNumberRowsLegend(uint columns) const; void SelectLegendItem(int click_pos, LegendAndColour *legend, int end_legend_item, int begin_legend_item = 0); void SwitchMapType(SmallMapType map_type); diff --git a/src/sound.cpp b/src/sound.cpp index 9bad9d6bd2..79dd988bfa 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -21,6 +21,8 @@ #define SET_TYPE "sounds" #include "base_media_func.h" +#include "safeguards.h" + static SoundEntry _original_sounds[ORIGINAL_SAMPLE_COUNT]; static void OpenBankFile(const char *filename) diff --git a/src/sound/allegro_s.cpp b/src/sound/allegro_s.cpp index 76a1e1e91d..88a723ff85 100644 --- a/src/sound/allegro_s.cpp +++ b/src/sound/allegro_s.cpp @@ -18,6 +18,8 @@ #include "allegro_s.h" #include +#include "../safeguards.h" + static FSoundDriver_Allegro iFSoundDriver_Allegro; /** The stream we are writing too */ static AUDIOSTREAM *_stream = NULL; diff --git a/src/sound/allegro_s.h b/src/sound/allegro_s.h index 315bad2a83..e0a247f7b3 100644 --- a/src/sound/allegro_s.h +++ b/src/sound/allegro_s.h @@ -15,7 +15,7 @@ #include "sound_driver.hpp" /** Implementation of the allegro sound driver. */ -class SoundDriver_Allegro: public SoundDriver { +class SoundDriver_Allegro : public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -26,12 +26,10 @@ public: }; /** Factory for the allegro sound driver. */ -class FSoundDriver_Allegro: public SoundDriverFactory { +class FSoundDriver_Allegro : public DriverFactoryBase { public: - static const int priority = 4; - /* virtual */ const char *GetName() { return "allegro"; } - /* virtual */ const char *GetDescription() { return "Allegro Sound Driver"; } - /* virtual */ Driver *CreateInstance() { return new SoundDriver_Allegro(); } + FSoundDriver_Allegro() : DriverFactoryBase(Driver::DT_SOUND, 4, "allegro", "Allegro Sound Driver") {} + /* virtual */ Driver *CreateInstance() const { return new SoundDriver_Allegro(); } }; #endif /* SOUND_ALLEGRO_H */ diff --git a/src/sound/cocoa_s.cpp b/src/sound/cocoa_s.cpp index 1dc2a25d4a..8cf4a632bc 100644 --- a/src/sound/cocoa_s.cpp +++ b/src/sound/cocoa_s.cpp @@ -30,6 +30,8 @@ #undef Rect #undef Point +#include "../safeguards.h" + static FSoundDriver_Cocoa iFSoundDriver_Cocoa; static AudioUnit _outputAudioUnit; diff --git a/src/sound/cocoa_s.h b/src/sound/cocoa_s.h index 7492164c5c..7010914258 100644 --- a/src/sound/cocoa_s.h +++ b/src/sound/cocoa_s.h @@ -14,7 +14,7 @@ #include "sound_driver.hpp" -class SoundDriver_Cocoa: public SoundDriver { +class SoundDriver_Cocoa : public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -22,12 +22,10 @@ public: /* virtual */ const char *GetName() const { return "cocoa"; } }; -class FSoundDriver_Cocoa: public SoundDriverFactory { +class FSoundDriver_Cocoa : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "cocoa"; } - /* virtual */ const char *GetDescription() { return "Cocoa Sound Driver"; } - /* virtual */ Driver *CreateInstance() { return new SoundDriver_Cocoa(); } + FSoundDriver_Cocoa() : DriverFactoryBase(Driver::DT_SOUND, 10, "cocoa", "Cocoa Sound Driver") {} + /* virtual */ Driver *CreateInstance() const { return new SoundDriver_Cocoa(); } }; #endif /* SOUND_COCOA_H */ diff --git a/src/sound/null_s.cpp b/src/sound/null_s.cpp index 953bf5764a..3dc95c46ff 100644 --- a/src/sound/null_s.cpp +++ b/src/sound/null_s.cpp @@ -12,5 +12,7 @@ #include "../stdafx.h" #include "null_s.h" +#include "../safeguards.h" + /** The factory for the null sound driver. */ static FSoundDriver_Null iFSoundDriver_Null; diff --git a/src/sound/null_s.h b/src/sound/null_s.h index 5951842cb7..b2acd90937 100644 --- a/src/sound/null_s.h +++ b/src/sound/null_s.h @@ -15,7 +15,7 @@ #include "sound_driver.hpp" /** Implementation of the null sound driver. */ -class SoundDriver_Null: public SoundDriver { +class SoundDriver_Null : public SoundDriver { public: /* virtual */ const char *Start(const char * const *param) { return NULL; } @@ -24,12 +24,10 @@ public: }; /** Factory for the null sound driver. */ -class FSoundDriver_Null: public SoundDriverFactory { +class FSoundDriver_Null : public DriverFactoryBase { public: - static const int priority = 1; - /* virtual */ const char *GetName() { return "null"; } - /* virtual */ const char *GetDescription() { return "Null Sound Driver"; } - /* virtual */ Driver *CreateInstance() { return new SoundDriver_Null(); } + FSoundDriver_Null() : DriverFactoryBase(Driver::DT_SOUND, 1, "null", "Null Sound Driver") {} + /* virtual */ Driver *CreateInstance() const { return new SoundDriver_Null(); } }; #endif /* SOUND_NULL_H */ diff --git a/src/sound/sdl_s.cpp b/src/sound/sdl_s.cpp index 7e1c3e9936..e3fb99eaa7 100644 --- a/src/sound/sdl_s.cpp +++ b/src/sound/sdl_s.cpp @@ -18,6 +18,8 @@ #include "sdl_s.h" #include +#include "../safeguards.h" + /** Factory for the SDL sound driver. */ static FSoundDriver_SDL iFSoundDriver_SDL; diff --git a/src/sound/sdl_s.h b/src/sound/sdl_s.h index 6733ee6a76..544ce2070d 100644 --- a/src/sound/sdl_s.h +++ b/src/sound/sdl_s.h @@ -15,7 +15,7 @@ #include "sound_driver.hpp" /** Implementation of the SDL sound driver. */ -class SoundDriver_SDL: public SoundDriver { +class SoundDriver_SDL : public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -24,12 +24,10 @@ public: }; /** Factory for the SDL sound driver. */ -class FSoundDriver_SDL: public SoundDriverFactory { +class FSoundDriver_SDL : public DriverFactoryBase { public: - static const int priority = 5; - /* virtual */ const char *GetName() { return "sdl"; } - /* virtual */ const char *GetDescription() { return "SDL Sound Driver"; } - /* virtual */ Driver *CreateInstance() { return new SoundDriver_SDL(); } + FSoundDriver_SDL() : DriverFactoryBase(Driver::DT_SOUND, 5, "sdl", "SDL Sound Driver") {} + /* virtual */ Driver *CreateInstance() const { return new SoundDriver_SDL(); } }; #endif /* SOUND_SDL_H */ diff --git a/src/sound/sound_driver.hpp b/src/sound/sound_driver.hpp index 56664e6ad9..0df69b8b45 100644 --- a/src/sound/sound_driver.hpp +++ b/src/sound/sound_driver.hpp @@ -15,32 +15,19 @@ #include "../driver.h" /** Base for all sound drivers. */ -class SoundDriver: public Driver { +class SoundDriver : public Driver { public: /** Called once every tick */ virtual void MainLoop() {} -}; - -/** Base of the factory for the sound drivers. */ -class SoundDriverFactoryBase: public DriverFactoryBase { -}; - -/** - * Factory for the sound drivers. - * @tparam T The type of the sound factory to register. - */ -template -class SoundDriverFactory: public SoundDriverFactoryBase { -public: - SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND, ((T *)this)->priority); } /** - * Get the long, human readable, name for the Driver-class. + * Get the currently active instance of the sound driver. */ - const char *GetName(); + static SoundDriver *GetInstance() { + return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_SOUND)); + } }; -extern SoundDriver *_sound_driver; extern char *_ini_sounddriver; #endif /* SOUND_SOUND_DRIVER_HPP */ diff --git a/src/sound/win32_s.cpp b/src/sound/win32_s.cpp index d241f45c81..0cd632714c 100644 --- a/src/sound/win32_s.cpp +++ b/src/sound/win32_s.cpp @@ -20,6 +20,8 @@ #include #include +#include "../safeguards.h" + static FSoundDriver_Win32 iFSoundDriver_Win32; static HWAVEOUT _waveout; diff --git a/src/sound/win32_s.h b/src/sound/win32_s.h index 03af04a534..77906c88a3 100644 --- a/src/sound/win32_s.h +++ b/src/sound/win32_s.h @@ -15,7 +15,7 @@ #include "sound_driver.hpp" /** Implementation of the sound driver for Windows. */ -class SoundDriver_Win32: public SoundDriver { +class SoundDriver_Win32 : public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -24,12 +24,10 @@ public: }; /** Factory for the sound driver for Windows. */ -class FSoundDriver_Win32: public SoundDriverFactory { +class FSoundDriver_Win32 : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "win32"; } - /* virtual */ const char *GetDescription() { return "Win32 WaveOut Driver"; } - /* virtual */ Driver *CreateInstance() { return new SoundDriver_Win32(); } + FSoundDriver_Win32() : DriverFactoryBase(Driver::DT_SOUND, 10, "win32", "Win32 WaveOut Sound Driver") {} + /* virtual */ Driver *CreateInstance() const { return new SoundDriver_Win32(); } }; #endif /* SOUND_WIN32_H */ diff --git a/src/sound_type.h b/src/sound_type.h index b014c26943..72486dcac9 100644 --- a/src/sound_type.h +++ b/src/sound_type.h @@ -24,9 +24,21 @@ struct SoundEntry { byte grf_container_ver; ///< NewGRF container version if the sound is from a NewGRF. }; +/** + * Sound effects from baseset. + * + * This enum contains the sound effects from the sound baseset. + * For hysterical raisins the order of sound effects in the baseset + * is different to the order they are referenced in TTD/NewGRF. + * - The first two sound effects from the baseset are inserted at position 39. + * (see translation table _sound_idx) + * - The order in the enum is the order using in TTD/NewGRF. + * - The naming of the enum values includes the position in the baseset. + * That is, for sound effects 0x02 to 0x28 the naming is off-by-two. + */ enum SoundFx { SND_BEGIN = 0, - SND_02_SPLAT = 0, // 0 == 0x00 ! + SND_02_SPLAT_WATER = 0, ///< Water construction. SND_03_FACTORY_WHISTLE, SND_04_TRAIN, SND_05_TRAIN_THROUGH_TUNNEL, @@ -55,8 +67,8 @@ enum SoundFx { SND_1C_TRUCK_START_2, SND_1D_APPLAUSE, SND_1E_OOOOH, - SND_1F_SPLAT, // 29 == 0x1D - SND_20_SPLAT_2, // 30 == 0x1E + SND_1F_SPLAT_OTHER, ///< Non-water non-rail construction. + SND_20_SPLAT_RAIL, ///< Rail construction. SND_21_JACKHAMMER, SND_22_CAR_HORN, SND_23_CAR_HORN_2, diff --git a/src/sprite.cpp b/src/sprite.cpp index 513ca014fa..22210712a9 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -16,6 +16,8 @@ #include "spritecache.h" #include "zoom_func.h" +#include "safeguards.h" + /** * Draws a tile sprite sequence. @@ -117,15 +119,15 @@ void DrawCommonTileSeqInGUI(int x, int y, const DrawTileSprites *dts, int32 orig if (dtss->IsParentSprite()) { Point pt = RemapCoords(dtss->delta_x, dtss->delta_y, dtss->delta_z); - DrawSprite(image, pal, x + UnScaleByZoom(pt.x, ZOOM_LVL_GUI), y + UnScaleByZoom(pt.y, ZOOM_LVL_GUI)); + DrawSprite(image, pal, x + UnScaleGUI(pt.x), y + UnScaleGUI(pt.y)); const Sprite *spr = GetSprite(image & SPRITE_MASK, ST_NORMAL); - child_offset.x = UnScaleByZoom(pt.x + spr->x_offs, ZOOM_LVL_GUI); - child_offset.y = UnScaleByZoom(pt.y + spr->y_offs, ZOOM_LVL_GUI); + child_offset.x = UnScaleGUI(pt.x + spr->x_offs); + child_offset.y = UnScaleGUI(pt.y + spr->y_offs); } else { int offs_x = child_offset_is_unsigned ? (uint8)dtss->delta_x : dtss->delta_x; int offs_y = child_offset_is_unsigned ? (uint8)dtss->delta_y : dtss->delta_y; - DrawSprite(image, pal, x + child_offset.x + offs_x, y + child_offset.y + offs_y); + DrawSprite(image, pal, x + child_offset.x + ScaleGUITrad(offs_x), y + child_offset.y + ScaleGUITrad(offs_y)); } } } diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 3ddcaaf36b..908e7599ab 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -24,6 +24,8 @@ #include "table/strings.h" #include "table/palette_convert.h" +#include "safeguards.h" + /* Default of 4MB spritecache */ uint _sprite_cache_size = 4; @@ -118,9 +120,10 @@ bool SkipSpriteData(byte type, uint16 num) /* Check if the given Sprite ID exists */ bool SpriteExists(SpriteID id) { + if (id >= _spritecache_items) return false; + /* Special case for Sprite ID zero -- its position is also 0... */ if (id == 0) return true; - if (id >= _spritecache_items) return false; return !(GetSpriteCache(id)->file_pos == 0 && GetSpriteCache(id)->file_slot == 0); } @@ -161,7 +164,7 @@ uint GetMaxSpriteID() static bool ResizeSpriteIn(SpriteLoader::Sprite *sprite, ZoomLevel src, ZoomLevel tgt) { - uint8 scaled_1 = UnScaleByZoom(1, (ZoomLevel)(tgt - src)); + uint8 scaled_1 = ScaleByZoom(1, (ZoomLevel)(src - tgt)); /* Check for possible memory overflow. */ if (sprite[src].width * scaled_1 > UINT16_MAX || sprite[src].height * scaled_1 > UINT16_MAX) return false; @@ -393,7 +396,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty sprite[ZOOM_LVL_NORMAL].type = sprite_type; SpriteLoaderGrf sprite_loader(sc->container_ver); - if (sprite_type != ST_MAPGEN && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 32) { + if (sprite_type != ST_MAPGEN && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 32) { /* Try for 32bpp sprites first. */ sprite_avail = sprite_loader.LoadSprite(sprite, file_slot, file_pos, sprite_type, true); } @@ -435,13 +438,21 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty return s; } - if (sprite_type == ST_NORMAL) { - if (!ResizeSprites(sprite, sprite_avail, file_slot, sc->id)) { - if (id == SPR_IMG_QUERY) usererror("Okay... something went horribly wrong. I couldn't resize the fallback sprite. What should I do?"); - return (void*)GetRawSprite(SPR_IMG_QUERY, ST_NORMAL, allocator); - } + if (!ResizeSprites(sprite, sprite_avail, file_slot, sc->id)) { + if (id == SPR_IMG_QUERY) usererror("Okay... something went horribly wrong. I couldn't resize the fallback sprite. What should I do?"); + return (void*)GetRawSprite(SPR_IMG_QUERY, ST_NORMAL, allocator); + } + + if (sprite->type == ST_FONT && ZOOM_LVL_GUI != ZOOM_LVL_NORMAL) { + /* Make ZOOM_LVL_GUI be ZOOM_LVL_NORMAL */ + sprite[ZOOM_LVL_NORMAL].width = sprite[ZOOM_LVL_GUI].width; + sprite[ZOOM_LVL_NORMAL].height = sprite[ZOOM_LVL_GUI].height; + sprite[ZOOM_LVL_NORMAL].x_offs = sprite[ZOOM_LVL_GUI].x_offs; + sprite[ZOOM_LVL_NORMAL].y_offs = sprite[ZOOM_LVL_GUI].y_offs; + sprite[ZOOM_LVL_NORMAL].data = sprite[ZOOM_LVL_GUI].data; } - return BlitterFactoryBase::GetCurrentBlitter()->Encode(sprite, allocator); + + return BlitterFactory::GetCurrentBlitter()->Encode(sprite, allocator); } @@ -846,7 +857,7 @@ void *GetRawSprite(SpriteID sprite, SpriteType type, AllocatorProc *allocator) static void GfxInitSpriteCache() { /* initialize sprite cache heap */ - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); uint target_size = (bpp > 0 ? _sprite_cache_size * bpp / 8 : 1) * 1024 * 1024; /* Remember 'target_size' from the previous allocation attempt, so we do not try to reach the target_size multiple times in case of failure. */ diff --git a/src/spriteloader/grf.cpp b/src/spriteloader/grf.cpp index 2de58dc6fe..b21e70b1db 100644 --- a/src/spriteloader/grf.cpp +++ b/src/spriteloader/grf.cpp @@ -21,6 +21,8 @@ #include "../core/bitmath_func.hpp" #include "grf.hpp" +#include "../safeguards.h" + extern const byte _palmap_w2d[]; /** The different colour components a sprite can have. */ @@ -228,13 +230,18 @@ uint8 LoadSpriteV1(SpriteLoader::Sprite *sprite, uint8 file_slot, size_t file_po /* Type 0xFF indicates either a colourmap or some other non-sprite info; we do not handle them here */ if (type == 0xFF) return 0; - ZoomLevel zoom_lvl = (sprite_type == ST_NORMAL) ? ZOOM_LVL_OUT_4X : ZOOM_LVL_NORMAL; + ZoomLevel zoom_lvl = (sprite_type != ST_MAPGEN) ? ZOOM_LVL_OUT_4X : ZOOM_LVL_NORMAL; sprite[zoom_lvl].height = FioReadByte(); sprite[zoom_lvl].width = FioReadWord(); sprite[zoom_lvl].x_offs = FioReadWord(); sprite[zoom_lvl].y_offs = FioReadWord(); + if (sprite[zoom_lvl].width > INT16_MAX) { + WarnCorruptSprite(file_slot, file_pos, __LINE__); + return 0; + } + /* 0x02 indicates it is a compressed sprite, so we can't rely on 'num' to be valid. * In case it is uncompressed, the size is 'num' - 8 (header-size). */ num = (type & 0x02) ? sprite[zoom_lvl].width * sprite[zoom_lvl].height : num - 8; @@ -268,8 +275,8 @@ uint8 LoadSpriteV2(SpriteLoader::Sprite *sprite, uint8 file_slot, size_t file_po byte colour = type & SCC_MASK; byte zoom = FioReadByte(); - if (colour != 0 && (load_32bpp ? colour != SCC_PAL : colour == SCC_PAL) && (sprite_type == ST_NORMAL ? zoom < lengthof(zoom_lvl_map) : zoom == 0)) { - ZoomLevel zoom_lvl = (sprite_type == ST_NORMAL) ? zoom_lvl_map[zoom] : ZOOM_LVL_NORMAL; + if (colour != 0 && (load_32bpp ? colour != SCC_PAL : colour == SCC_PAL) && (sprite_type != ST_MAPGEN ? zoom < lengthof(zoom_lvl_map) : zoom == 0)) { + ZoomLevel zoom_lvl = (sprite_type != ST_MAPGEN) ? zoom_lvl_map[zoom] : ZOOM_LVL_NORMAL; if (HasBit(loaded_sprites, zoom_lvl)) { /* We already have this zoom level, skip sprite. */ @@ -283,6 +290,11 @@ uint8 LoadSpriteV2(SpriteLoader::Sprite *sprite, uint8 file_slot, size_t file_po sprite[zoom_lvl].x_offs = FioReadWord(); sprite[zoom_lvl].y_offs = FioReadWord(); + if (sprite[zoom_lvl].width > INT16_MAX || sprite[zoom_lvl].height > INT16_MAX) { + WarnCorruptSprite(file_slot, file_pos, __LINE__); + return 0; + } + /* Mask out colour information. */ type = type & ~SCC_MASK; diff --git a/src/station.cpp b/src/station.cpp index 00c6a6d2ae..456262dea4 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -29,10 +29,15 @@ #include "table/strings.h" +#include "safeguards.h" + /** The pool of stations. */ StationPool _station_pool("Station"); INSTANTIATE_POOL_METHODS(Station) +typedef StationIDStack::SmallStackPool StationIDStackPool; +template<> StationIDStackPool StationIDStack::_pool = StationIDStackPool(); + BaseStation::~BaseStation() { free(this->name); @@ -40,13 +45,10 @@ BaseStation::~BaseStation() if (CleaningPool()) return; - Owner owner = this->owner; - if (!Company::IsValidID(owner)) owner = _local_company; - if (!Company::IsValidID(owner)) return; // Spectators - DeleteWindowById(WC_TRAINS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_TRAIN, owner, this->index).Pack()); - DeleteWindowById(WC_ROADVEH_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_ROAD, owner, this->index).Pack()); - DeleteWindowById(WC_SHIPS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_SHIP, owner, this->index).Pack()); - DeleteWindowById(WC_AIRCRAFT_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_AIRCRAFT, owner, this->index).Pack()); + DeleteWindowById(WC_TRAINS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_TRAIN, this->owner, this->index).Pack()); + DeleteWindowById(WC_ROADVEH_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_ROAD, this->owner, this->index).Pack()); + DeleteWindowById(WC_SHIPS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_SHIP, this->owner, this->index).Pack()); + DeleteWindowById(WC_AIRCRAFT_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_AIRCRAFT, this->owner, this->index).Pack()); this->sign.MarkDirty(); } @@ -95,15 +97,16 @@ Station::~Station() if (lg == NULL) continue; for (NodeID node = 0; node < lg->Size(); ++node) { + Station *st = Station::Get((*lg)[node].Station()); + st->goods[c].flows.erase(this->index); if ((*lg)[node][this->goods[c].node].LastUpdate() != INVALID_DATE) { - Station *st = Station::Get((*lg)[node].Station()); st->goods[c].flows.DeleteFlows(this->index); RerouteCargo(st, c, this->index, st->index); } } lg->RemoveNode(this->goods[c].node); if (lg->Size() == 0) { - LinkGraphSchedule::Instance()->Unqueue(lg); + LinkGraphSchedule::instance.Unqueue(lg); delete lg; } } diff --git a/src/station_base.h b/src/station_base.h index 280df69d75..af4d206ba0 100644 --- a/src/station_base.h +++ b/src/station_base.h @@ -37,6 +37,8 @@ class FlowStat { public: typedef std::map SharesMap; + static const SharesMap empty_sharesmap; + /** * Invalid constructor. This can't be called as a FlowStat must not be * empty. However, the constructor must be defined and reachable for @@ -48,11 +50,13 @@ public: * Create a FlowStat with an initial entry. * @param st Station the initial entry refers to. * @param flow Amount of flow for the initial entry. + * @param restricted If the flow to be added is restricted. */ - inline FlowStat(StationID st, uint flow) + inline FlowStat(StationID st, uint flow, bool restricted = false) { assert(flow > 0); this->shares[flow] = st; + this->unrestricted = restricted ? 0 : flow; } /** @@ -61,17 +65,25 @@ public: * inconsistencies. * @param st Remote station. * @param flow Amount of flow to be added. + * @param restricted If the flow to be added is restricted. */ - inline void AppendShare(StationID st, uint flow) + inline void AppendShare(StationID st, uint flow, bool restricted = false) { assert(flow > 0); this->shares[(--this->shares.end())->first + flow] = st; + if (!restricted) this->unrestricted += flow; } uint GetShare(StationID st) const; void ChangeShare(StationID st, int flow); + void RestrictShare(StationID st); + + void ReleaseShare(StationID st); + + void ScaleToMonthly(uint runtime); + /** * Get the actual shares as a const pointer so that they can be iterated * over. @@ -79,24 +91,52 @@ public: */ inline const SharesMap *GetShares() const { return &this->shares; } + /** + * Return total amount of unrestricted shares. + * @return Amount of unrestricted shares. + */ + inline uint GetUnrestricted() const { return this->unrestricted; } + /** * Swap the shares maps, and thus the content of this FlowStat with the * other one. * @param other FlowStat to swap with. */ - inline void SwapShares(FlowStat &other) { this->shares.swap(other.shares); } + inline void SwapShares(FlowStat &other) + { + this->shares.swap(other.shares); + Swap(this->unrestricted, other.unrestricted); + } /** * Get a station a package can be routed to. This done by drawing a * random number between 0 and sum_shares and then looking that up in * the map with lower_bound. So each share gets selected with a - * probability dependent on its flow. + * probability dependent on its flow. Do include restricted flows here. + * @param is_restricted Output if a restricted flow was chosen. + * @return A station ID from the shares map. + */ + inline StationID GetViaWithRestricted(bool &is_restricted) const + { + assert(!this->shares.empty()); + uint rand = RandomRange((--this->shares.end())->first); + is_restricted = rand >= this->unrestricted; + return this->shares.upper_bound(rand)->second; + } + + /** + * Get a station a package can be routed to. This done by drawing a + * random number between 0 and sum_shares and then looking that up in + * the map with lower_bound. So each share gets selected with a + * probability dependent on its flow. Don't include restricted flows. * @return A station ID from the shares map. */ inline StationID GetVia() const { assert(!this->shares.empty()); - return this->shares.upper_bound(RandomRange((--this->shares.end())->first - 1))->second; + return this->unrestricted > 0 ? + this->shares.upper_bound(RandomRange(this->unrestricted))->second : + INVALID_STATION; } StationID GetVia(StationID excluded, StationID excluded2 = INVALID_STATION) const; @@ -105,14 +145,22 @@ public: private: SharesMap shares; ///< Shares of flow to be sent via specified station (or consumed locally). + uint unrestricted; ///< Limit for unrestricted shares. }; /** Flow descriptions by origin stations. */ class FlowStatMap : public std::map { public: + uint GetFlow() const; + uint GetFlowVia(StationID via) const; + uint GetFlowFrom(StationID from) const; + uint GetFlowFromVia(StationID from, StationID via) const; + void AddFlow(StationID origin, StationID via, uint amount); void PassOnFlow(StationID origin, StationID via, uint amount); - void DeleteFlows(StationID via); + StationIDStack DeleteFlows(StationID via); + void RestrictFlows(StationID via); + void ReleaseFlows(StationID via); void FinalizeLocalConsumption(StationID self); }; @@ -129,13 +177,14 @@ struct GoodsEntry { GES_ACCEPTANCE, /** - * Set when the cargo was ever waiting at the station. + * This indicates whether a cargo has a rating at the station. + * Set when cargo was ever waiting at the station. * It is set when cargo supplied by surrounding tiles is moved to the station, or when * arriving vehicles unload/transfer cargo without it being a final delivery. - * This also indicates, whether a cargo has a rating at the station. - * This flag is never cleared. + * + * This flag is cleared after 255 * STATION_RATING_TICKS of not having seen a pickup. */ - GES_PICKUP, + GES_RATING, /** * Set when a vehicle ever delivered cargo to the station for final delivery. @@ -163,17 +212,18 @@ struct GoodsEntry { }; GoodsEntry() : - acceptance_pickup(0), + status(0), time_since_pickup(255), rating(INITIAL_STATION_RATING), last_speed(0), last_age(255), + amount_fract(0), link_graph(INVALID_LINK_GRAPH), node(INVALID_NODE), max_waiting_cargo(0) {} - byte acceptance_pickup; ///< Status of this cargo, see #GoodsEntryStatus. + byte status; ///< Status of this cargo, see #GoodsEntryStatus. /** * Number of rating-intervals (up to 255) since the last vehicle tried to load this cargo. @@ -211,22 +261,20 @@ struct GoodsEntry { /** * Reports whether a vehicle has ever tried to load the cargo at this station. - * This does not imply that there was cargo available for loading. Refer to GES_PICKUP for that. + * This does not imply that there was cargo available for loading. Refer to GES_RATING for that. * @return true if vehicle tried to load. */ bool HasVehicleEverTriedLoading() const { return this->last_speed != 0; } /** * Does this cargo have a rating at this station? - * @return true if the cargo has a rating, i.e. pickup has been attempted. + * @return true if the cargo has a rating, i.e. cargo has been moved to the station. */ inline bool HasRating() const { - return HasBit(this->acceptance_pickup, GES_PICKUP); + return HasBit(this->status, GES_RATING); } - uint GetSumFlowVia(StationID via) const; - /** * Get the best next hop for a cargo packet from station source. * @param source Source of the packet. @@ -260,7 +308,7 @@ struct Airport : public TileArea { uint64 flags; ///< stores which blocks on the airport are taken. was 16 bit earlier on, then 32 byte type; ///< Type of this airport, @see AirportTypes byte layout; ///< Airport layout number. - Direction rotation; ///< How this airport is rotated. + DirectionByte rotation; ///< How this airport is rotated. PersistentStorage *psa; ///< Persistent storage for NewGRF airports. @@ -453,11 +501,9 @@ public: return IsAirportTile(tile) && GetStationIndex(tile) == this->index; } - /* virtual */ uint32 GetNewGRFVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) const; + /* virtual */ uint32 GetNewGRFVariable(const ResolverObject &object, byte variable, byte parameter, bool *available) const; /* virtual */ void GetTileArea(TileArea *ta, StationType type) const; - - void RunAverages(); }; #define FOR_ALL_STATIONS(var) FOR_ALL_BASE_STATIONS_OF_TYPE(Station, var) diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index c57e4382de..eb90c29ab5 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -51,10 +51,20 @@ #include "newgrf_house.h" #include "company_gui.h" #include "linkgraph/linkgraph_base.h" +#include "linkgraph/refresh.h" #include "widgets/station_widget.h" #include "table/strings.h" +#include "safeguards.h" + +/** + * Static instance of FlowStat::SharesMap. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. + */ +/* static */ const FlowStat::SharesMap FlowStat::empty_sharesmap; + /** * Check whether the given tile is a hangar. * @param t the tile to of whether it is a hangar. @@ -246,6 +256,14 @@ static StringID GenerateStationName(Station *st, TileIndex tile, StationNaming n if (s != st && s->town == t) { if (s->indtype != IT_INVALID) { indtypes[s->indtype] = true; + StringID name = GetIndustrySpec(s->indtype)->station_name; + if (name != STR_UNDEFINED) { + /* Filter for other industrytypes with the same name */ + for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { + const IndustrySpec *indsp = GetIndustrySpec(it); + if (indsp->enabled && indsp->station_name == name) indtypes[it] = true; + } + } continue; } uint str = M(s->string_id); @@ -427,7 +445,7 @@ static uint GetAcceptanceMask(const Station *st) uint mask = 0; for (CargoID i = 0; i < NUM_CARGO; i++) { - if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::GES_ACCEPTANCE)) mask |= 1 << i; + if (HasBit(st->goods[i].status, GoodsEntry::GES_ACCEPTANCE)) mask |= 1 << i; } return mask; } @@ -570,7 +588,7 @@ void UpdateStationAcceptance(Station *st, bool show_msg) } GoodsEntry &ge = st->goods[i]; - SB(ge.acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, amt >= 8); + SB(ge.status, GoodsEntry::GES_ACCEPTANCE, 1, amt >= 8); if (LinkGraph::IsValidID(ge.link_graph)) { (*LinkGraph::Get(ge.link_graph))[ge.node].SetDemand(amt / 8); } @@ -632,6 +650,14 @@ static void UpdateStationSignCoord(BaseStation *st) /* clamp sign coord to be inside the station rect */ st->xy = TileXY(ClampU(TileX(st->xy), r->left, r->right), ClampU(TileY(st->xy), r->top, r->bottom)); st->UpdateVirtCoord(); + + if (!Station::IsExpected(st)) return; + Station *full_station = Station::From(st); + for (CargoID c = 0; c < NUM_CARGO; ++c) { + LinkGraphID lg = full_station->goods[c].link_graph; + if (!LinkGraph::IsValidID(lg)) continue; + (*LinkGraph::Get(lg))[full_station->goods[c].node].UpdateLocation(st->xy); + } } /** @@ -641,7 +667,7 @@ static void UpdateStationSignCoord(BaseStation *st) * @param reuse Whether to try to reuse a deleted station (gray sign) if possible * @param area Area occupied by the new part * @param name_class Station naming class to use to generate the new station's name - * @return Command error that occured, if any + * @return Command error that occurred, if any */ static CommandCost BuildStationPart(Station **st, DoCommandFlag flags, bool reuse, TileArea area, StationNaming name_class) { @@ -702,7 +728,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags); */ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z, bool allow_steep, bool check_bridge = true) { - if (check_bridge && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) { + if (check_bridge && IsBridgeAbove(tile)) { return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } @@ -937,7 +963,11 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags /* There is a tram, check if we can build road+tram stop over it. */ if (HasBit(cur_rts, ROADTYPE_TRAM)) { Owner tram_owner = GetRoadOwner(cur_tile, ROADTYPE_TRAM); - if (!_settings_game.construction.road_stop_on_competitor_road && tram_owner != OWNER_NONE) { + if (Company::IsValidID(tram_owner) && + (!_settings_game.construction.road_stop_on_competitor_road || + /* Disallow breaking end-of-line of someone else + * so trams can still reverse on this tile. */ + HasExactlyOneBit(GetRoadBits(cur_tile, ROADTYPE_TRAM)))) { CommandCost ret = CheckOwnership(tram_owner); if (ret.Failed()) return ret; } @@ -1204,7 +1234,7 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 /* Perform NewStation checks */ /* Check if the station size is permitted */ - if (HasBit(statspec->disallowed_platforms, numtracks - 1) || HasBit(statspec->disallowed_lengths, plat_len - 1)) { + if (HasBit(statspec->disallowed_platforms, min(numtracks - 1, 7)) || HasBit(statspec->disallowed_lengths, min(plat_len - 1, 7))) { return CMD_ERROR; } @@ -1597,11 +1627,12 @@ CommandCost CmdRemoveFromRailWaypoint(TileIndex start, DoCommandFlag flags, uint * Remove a rail station/waypoint * @param st The station/waypoint to remove the rail part from * @param flags operation to perform + * @param removal_cost the cost for removing a tile * @tparam T the type of station to remove * @return cost or failure of operation */ template -CommandCost RemoveRailStation(T *st, DoCommandFlag flags) +CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost) { /* Current company owns the station? */ if (_current_company != OWNER_WATER) { @@ -1618,49 +1649,14 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags) /* clear all areas of the station */ TILE_AREA_LOOP(tile, ta) { /* only remove tiles that are actually train station tiles */ - if (!st->TileBelongsToRailStation(tile)) continue; - - CommandCost ret = EnsureNoVehicleOnGround(tile); - if (ret.Failed()) return ret; - - cost.AddCost(_price[PR_CLEAR_STATION_RAIL]); - if (flags & DC_EXEC) { - /* read variables before the station tile is removed */ - Track track = GetRailStationTrack(tile); - Owner owner = GetTileOwner(tile); // _current_company can be OWNER_WATER - Train *v = NULL; - if (HasStationReservation(tile)) { - v = GetTrainForReservation(tile, track); - if (v != NULL) FreeTrainTrackReservation(v); - } - if (!IsStationTileBlocked(tile)) Company::Get(owner)->infrastructure.rail[GetRailType(tile)]--; - Company::Get(owner)->infrastructure.station--; - DoClearSquare(tile); - DeleteNewGRFInspectWindow(GSF_STATIONS, tile); - AddTrackToSignalBuffer(tile, track, owner); - YapfNotifyTrackLayoutChange(tile, track); - if (v != NULL) TryPathReserve(v, true); + if (st->TileBelongsToRailStation(tile)) { + SmallVector affected_stations; // dummy + CommandCost ret = RemoveFromRailBaseStation(TileArea(tile, 1, 1), affected_stations, flags, removal_cost, false); + if (ret.Failed()) return ret; + cost.AddCost(ret); } } - if (flags & DC_EXEC) { - st->rect.AfterRemoveRect(st, st->train_station); - - st->train_station.Clear(); - - st->facilities &= ~FACIL_TRAIN; - - free(st->speclist); - st->num_specs = 0; - st->speclist = NULL; - st->cached_anim_triggers = 0; - - DirtyCompanyInfrastructureWindows(st->owner); - SetWindowWidgetDirty(WC_STATION_VIEW, st->index, WID_SV_TRAINS); - st->UpdateVirtCoord(); - DeleteStationIfEmpty(st); - } - return cost; } @@ -1678,7 +1674,7 @@ static CommandCost RemoveRailStation(TileIndex tile, DoCommandFlag flags) } Station *st = Station::GetByTile(tile); - CommandCost cost = RemoveRailStation(st, flags); + CommandCost cost = RemoveRailStation(st, flags, _price[PR_CLEAR_STATION_RAIL]); if (flags & DC_EXEC) st->RecomputeIndustriesNear(); @@ -1698,7 +1694,7 @@ static CommandCost RemoveRailWaypoint(TileIndex tile, DoCommandFlag flags) return DoCommand(tile, 0, 0, DC_EXEC, CMD_REMOVE_FROM_RAIL_WAYPOINT); } - return RemoveRailStation(Waypoint::GetByTile(tile), flags); + return RemoveRailStation(Waypoint::GetByTile(tile), flags, _price[PR_CLEAR_WAYPOINT_RAIL]); } @@ -1748,7 +1744,8 @@ static CommandCost FindJoiningRoadStop(StationID existing_stop, StationID statio * bit 1: 0 For normal stops, 1 for drive-through. * bit 2..3: The roadtypes. * bit 5: Allow stations directly adjacent to other stations. - * bit 6..7: Entrance direction (#DiagDirection). + * bit 6..7: Entrance direction (#DiagDirection) for normal stops. + * bit 6: #Axis of the road for drive-through stops. * bit 16..31: Station ID to join (NEW_STATION if build new one). * @param text Unused. * @return The cost of this operation or an error. @@ -1782,12 +1779,17 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin /* Trams only have drive through stops */ if (!is_drive_through && HasBit(rts, ROADTYPE_TRAM)) return CMD_ERROR; - DiagDirection ddir = Extract(p2); - - /* Safeguard the parameters. */ - if (!IsValidDiagDirection(ddir)) return CMD_ERROR; - /* If it is a drive-through stop, check for valid axis. */ - if (is_drive_through && !IsValidAxis((Axis)ddir)) return CMD_ERROR; + DiagDirection ddir; + Axis axis; + if (is_drive_through) { + /* By definition axis is valid, due to there being 2 axes and reading 1 bit. */ + axis = Extract(p2); + ddir = AxisToDiagDir(axis); + } else { + /* By definition ddir is valid, due to there being 4 diagonal directions and reading 2 bits. */ + ddir = Extract(p2); + axis = DiagDirToAxis(ddir); + } CommandCost ret = CheckIfAuthorityAllowsNewStation(tile, flags); if (ret.Failed()) return ret; @@ -1795,7 +1797,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin /* Total road stop cost. */ CommandCost cost(EXPENSES_CONSTRUCTION, roadstop_area.w * roadstop_area.h * _price[type ? PR_BUILD_STATION_TRUCK : PR_BUILD_STATION_BUS]); StationID est = INVALID_STATION; - ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 5 << ddir : 1 << ddir, is_drive_through, type, DiagDirToAxis(ddir), &est, rts); + ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 5 << axis : 1 << ddir, is_drive_through, type, axis, &est, rts); if (ret.Failed()) return ret; cost.AddCost(ret); @@ -1849,7 +1851,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin } } - MakeDriveThroughRoadStop(cur_tile, st->owner, road_owner, tram_owner, st->index, rs_type, rts | cur_rts, DiagDirToAxis(ddir)); + MakeDriveThroughRoadStop(cur_tile, st->owner, road_owner, tram_owner, st->index, rs_type, rts | cur_rts, axis); road_stop->MakeDriveThrough(); } else { /* Non-drive-through stop never overbuild and always count as two road bits. */ @@ -1955,6 +1957,7 @@ static CommandCost RemoveRoadStop(TileIndex tile, DoCommandFlag flags) } } Company::Get(st->owner)->infrastructure.station--; + DirtyCompanyInfrastructureWindows(st->owner); if (IsDriveThroughStopTile(tile)) { /* Clears the tile for us */ @@ -2001,6 +2004,7 @@ static CommandCost RemoveRoadStop(TileIndex tile, DoCommandFlag flags) * @param p1 bit 0..7: Width of the removal area. * bit 8..15: Height of the removal area. * @param p2 bit 0: 0 For bus stops, 1 for truck stops. + * @param p2 bit 1: 0 to keep roads of all drive-through stops, 1 to remove them. * @param text Unused. * @return The cost of this operation or an error. */ @@ -2008,38 +2012,52 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui { uint8 width = (uint8)GB(p1, 0, 8); uint8 height = (uint8)GB(p1, 8, 8); + bool keep_drive_through_roads = !HasBit(p2, 1); /* Check for incorrect width / height. */ if (width == 0 || height == 0) return CMD_ERROR; /* Check if the first tile and the last tile are valid */ if (!IsValidTile(tile) || TileAddWrap(tile, width - 1, height - 1) == INVALID_TILE) return CMD_ERROR; + /* Bankrupting company is not supposed to remove roads, there may be road vehicles. */ + if (!keep_drive_through_roads && (flags & DC_BANKRUPT)) return CMD_ERROR; TileArea roadstop_area(tile, width, height); - int quantity = 0; CommandCost cost(EXPENSES_CONSTRUCTION); + CommandCost last_error(STR_ERROR_THERE_IS_NO_STATION); + bool had_success = false; + TILE_AREA_LOOP(cur_tile, roadstop_area) { /* Make sure the specified tile is a road stop of the correct type */ if (!IsTileType(cur_tile, MP_STATION) || !IsRoadStop(cur_tile) || (uint32)GetRoadStopType(cur_tile) != GB(p2, 0, 1)) continue; - /* Save the stop info before it is removed */ - bool is_drive_through = IsDriveThroughStopTile(cur_tile); - RoadTypes rts = GetRoadTypes(cur_tile); - RoadBits road_bits = IsDriveThroughStopTile(cur_tile) ? - ((GetRoadStopDir(cur_tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y) : - DiagDirToRoadBits(GetRoadStopDir(cur_tile)); + /* Save information on to-be-restored roads before the stop is removed. */ + RoadTypes rts = ROADTYPES_NONE; + RoadBits road_bits = ROAD_NONE; + Owner road_owner[] = { OWNER_NONE, OWNER_NONE }; + assert_compile(lengthof(road_owner) == ROADTYPE_END); + if (IsDriveThroughStopTile(cur_tile)) { + RoadType rt; + FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(cur_tile)) { + road_owner[rt] = GetRoadOwner(cur_tile, rt); + /* If we don't want to preserve our roads then restore only roads of others. */ + if (keep_drive_through_roads || road_owner[rt] != _current_company) SetBit(rts, rt); + } + road_bits = AxisToRoadBits(DiagDirToAxis(GetRoadStopDir(cur_tile))); + } - Owner road_owner = GetRoadOwner(cur_tile, ROADTYPE_ROAD); - Owner tram_owner = GetRoadOwner(cur_tile, ROADTYPE_TRAM); CommandCost ret = RemoveRoadStop(cur_tile, flags); - if (ret.Failed()) return ret; + if (ret.Failed()) { + last_error = ret; + continue; + } cost.AddCost(ret); + had_success = true; - quantity++; - /* If the stop was a drive-through stop replace the road */ - if ((flags & DC_EXEC) && is_drive_through) { + /* Restore roads. */ + if ((flags & DC_EXEC) && rts != ROADTYPES_NONE) { MakeRoadNormal(cur_tile, road_bits, rts, ClosestTownFromTile(cur_tile, UINT_MAX)->index, - road_owner, tram_owner); + road_owner[ROADTYPE_ROAD], road_owner[ROADTYPE_TRAM]); /* Update company infrastructure counts. */ RoadType rt; @@ -2053,9 +2071,7 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui } } - if (quantity == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_STATION); - - return cost; + return had_success ? cost : last_error; } /** @@ -2464,18 +2480,18 @@ CommandCost CmdBuildDock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 CommandCost ret = CheckIfAuthorityAllowsNewStation(tile, flags); if (ret.Failed()) return ret; - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; TileIndex tile_cur = tile + TileOffsByDiagDir(direction); - if (!IsTileType(tile_cur, MP_WATER) || GetTileSlope(tile_cur) != SLOPE_FLAT) { + if (!IsTileType(tile_cur, MP_WATER) || !IsTileFlat(tile_cur)) { return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } - if (MayHaveBridgeAbove(tile_cur) && IsBridgeAbove(tile_cur)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile_cur)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); /* Get the water class of the water tile before it is cleared.*/ WaterClass wc = GetWaterClass(tile_cur); @@ -2484,7 +2500,7 @@ CommandCost CmdBuildDock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (ret.Failed()) return ret; tile_cur += TileOffsByDiagDir(direction); - if (!IsTileType(tile_cur, MP_WATER) || GetTileSlope(tile_cur) != SLOPE_FLAT) { + if (!IsTileType(tile_cur, MP_WATER) || !IsTileFlat(tile_cur)) { return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } @@ -3069,7 +3085,7 @@ static void TileLoop_Station(TileIndex tile) break; case STATION_DOCK: - if (GetTileSlope(tile) != SLOPE_FLAT) break; // only handle water part + if (!IsTileFlat(tile)) break; // only handle water part /* FALL THROUGH */ case STATION_OILRIG: //(station part) case STATION_BUOY: @@ -3136,11 +3152,13 @@ static VehicleEnterTileStatus VehicleEnter_Station(Vehicle *v, TileIndex tile, i if (dir != DIAGDIR_SE && dir != DIAGDIR_SW) x = TILE_SIZE - 1 - x; stop &= TILE_SIZE - 1; - if (x >= stop) return VETSB_ENTERED_STATION | (VehicleEnterTileStatus)(station_id << VETS_STATION_ID_OFFSET); // enter station - - v->vehstatus |= VS_TRAIN_SLOWING; - uint16 spd = max(0, (stop - x) * 20 - 15); - if (spd < v->cur_speed) v->cur_speed = spd; + if (x == stop) { + return VETSB_ENTERED_STATION | (VehicleEnterTileStatus)(station_id << VETS_STATION_ID_OFFSET); // enter station + } else if (x < stop) { + v->vehstatus |= VS_TRAIN_SLOWING; + uint16 spd = max(0, (stop - x) * 20 - 15); + if (spd < v->cur_speed) v->cur_speed = spd; + } } } else if (v->type == VEH_ROAD) { RoadVehicle *rv = RoadVehicle::From(v); @@ -3164,7 +3182,7 @@ void TriggerWatchedCargoCallbacks(Station *st) /* Collect cargoes accepted since the last big tick. */ uint cargoes = 0; for (CargoID cid = 0; cid < NUM_CARGO; cid++) { - if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK)) SetBit(cargoes, cid); + if (HasBit(st->goods[cid].status, GoodsEntry::GES_ACCEPTED_BIGTICK)) SetBit(cargoes, cid); } /* Anything to do? */ @@ -3197,7 +3215,7 @@ static bool StationHandleBigTick(BaseStation *st) TriggerWatchedCargoCallbacks(Station::From(st)); for (CargoID i = 0; i < NUM_CARGO; i++) { - ClrBit(Station::From(st)->goods[i].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK); + ClrBit(Station::From(st)->goods[i].status, GoodsEntry::GES_ACCEPTED_BIGTICK); } } @@ -3213,6 +3231,28 @@ static inline void byte_inc_sat(byte *p) if (b != 0) *p = b; } +/** + * Truncate the cargo by a specific amount. + * @param cs The type of cargo to perform the truncation for. + * @param ge The goods entry, of the station, to truncate. + * @param amount The amount to truncate the cargo by. + */ +static void TruncateCargo(const CargoSpec *cs, GoodsEntry *ge, uint amount = UINT_MAX) +{ + /* If truncating also punish the source stations' ratings to + * decrease the flow of incoming cargo. */ + + StationCargoAmountMap waiting_per_source; + ge->cargo.Truncate(amount, &waiting_per_source); + for (StationCargoAmountMap::iterator i(waiting_per_source.begin()); i != waiting_per_source.end(); ++i) { + Station *source_station = Station::GetIfValid(i->first); + if (source_station == NULL) continue; + + GoodsEntry &source_ge = source_station->goods[cs->Index()]; + source_ge.max_waiting_cargo = max(source_ge.max_waiting_cargo, i->second); + } +} + static void UpdateStationRating(Station *st) { bool waiting_changed = false; @@ -3233,10 +3273,17 @@ static void UpdateStationRating(Station *st) /* Only change the rating if we are moving this cargo */ if (ge->HasRating()) { byte_inc_sat(&ge->time_since_pickup); + if (ge->time_since_pickup == 255 && _settings_game.order.selectgoods) { + ClrBit(ge->status, GoodsEntry::GES_RATING); + ge->last_speed = 0; + TruncateCargo(cs, ge); + waiting_changed = true; + continue; + } bool skip = false; int rating = 0; - uint waiting = ge->cargo.TotalCount(); + uint waiting = ge->cargo.AvailableCount(); /* num_dests is at least 1 if there is any cargo as * INVALID_STATION is also a destination. @@ -3346,18 +3393,7 @@ static void UpdateStationRating(Station *st) * next rating calculation. */ ge->max_waiting_cargo = 0; - /* If truncating also punish the source stations' ratings to - * decrease the flow of incoming cargo. */ - - StationCargoAmountMap waiting_per_source; - ge->cargo.Truncate(ge->cargo.AvailableCount() - waiting, &waiting_per_source); - for (StationCargoAmountMap::iterator i(waiting_per_source.begin()); i != waiting_per_source.end(); ++i) { - Station *source_station = Station::GetIfValid(i->first); - if (source_station == NULL) continue; - - GoodsEntry &source_ge = source_station->goods[cs->Index()]; - source_ge.max_waiting_cargo = max(source_ge.max_waiting_cargo, i->second); - } + TruncateCargo(cs, ge, ge->cargo.AvailableCount() - waiting); } else { /* If the average number per next hop is low, be more forgiving. */ ge->max_waiting_cargo = waiting_avg; @@ -3417,13 +3453,52 @@ void DeleteStaleLinks(Station *from) Edge edge = it->second; Station *to = Station::Get((*lg)[it->first].Station()); assert(to->goods[c].node == it->first); - ++it; // Do that before removing the node. Anything else may crash. + ++it; // Do that before removing the edge. Anything else may crash. assert(_date >= edge.LastUpdate()); - if ((uint)(_date - edge.LastUpdate()) > LinkGraph::MIN_TIMEOUT_DISTANCE + - (DistanceManhattan(from->xy, to->xy) >> 2)) { - node.RemoveEdge(to->goods[c].node); - ge.flows.DeleteFlows(to->index); + uint timeout = LinkGraph::MIN_TIMEOUT_DISTANCE + (DistanceManhattan(from->xy, to->xy) >> 3); + if ((uint)(_date - edge.LastUpdate()) > timeout) { + /* Have all vehicles refresh their next hops before deciding to + * remove the node. */ + bool updated = false; + OrderList *l; + FOR_ALL_ORDER_LISTS(l) { + bool found_from = false; + bool found_to = false; + for (Order *order = l->GetFirstOrder(); order != NULL; order = order->next) { + if (!order->IsType(OT_GOTO_STATION) && !order->IsType(OT_IMPLICIT)) continue; + if (order->GetDestination() == from->index) { + found_from = true; + if (found_to) break; + } else if (order->GetDestination() == to->index) { + found_to = true; + if (found_from) break; + } + } + if (!found_to || !found_from) continue; + for (Vehicle *v = l->GetFirstSharedVehicle(); !updated && v != NULL; v = v->NextShared()) { + /* There is potential for optimization here: + * - Usually consists of the same order list are the same. It's probably better to + * first check the first of each list, then the second of each list and so on. + * - We could try to figure out if we've seen a consist with the same cargo on the + * same list already and if the consist can actually carry the cargo we're looking + * for. With conditional and refit orders this is not quite trivial, though. */ + LinkRefresher::Run(v, false); // Don't allow merging. Otherwise lg might get deleted. + if (edge.LastUpdate() == _date) updated = true; + } + if (updated) break; + } + if (!updated) { + /* If it's still considered dead remove it. */ + node.RemoveEdge(to->goods[c].node); + ge.flows.DeleteFlows(to->index); + RerouteCargo(from, c, to->index, from->index); + } + } else if (edge.LastUnrestrictedUpdate() != INVALID_DATE && (uint)(_date - edge.LastUnrestrictedUpdate()) > timeout) { + edge.Restrict(); + ge.flows.RestrictFlows(to->index); RerouteCargo(from, c, to->index, from->index); + } else if (edge.LastRestrictedUpdate() != INVALID_DATE && (uint)(_date - edge.LastRestrictedUpdate()) > timeout) { + edge.Release(); } } assert(_date >= lg->LastCompression()); @@ -3439,9 +3514,10 @@ void DeleteStaleLinks(Station *from) * @param cargo Cargo to increase stat for. * @param next_station_id Station the consist will be travelling to next. * @param capacity Capacity to add to link stat. - * @param usage Usage to add to link stat. If UINT_MAX refresh the link instead of increasing. + * @param usage Usage to add to link stat. + * @param mode Update mode to be applied. */ -void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint capacity, uint usage) +void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint capacity, uint usage, EdgeUpdateMode mode) { GoodsEntry &ge1 = st->goods[cargo]; Station *st2 = Station::Get(next_station_id); @@ -3451,7 +3527,7 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge2.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(cargo); - LinkGraphSchedule::Instance()->Queue(lg); + LinkGraphSchedule::instance.Queue(lg); ge2.link_graph = lg->index; ge2.node = lg->AddNode(st2); } else { @@ -3473,17 +3549,17 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge1.link_graph != ge2.link_graph) { LinkGraph *lg2 = LinkGraph::Get(ge2.link_graph); if (lg->Size() < lg2->Size()) { - LinkGraphSchedule::Instance()->Unqueue(lg); + LinkGraphSchedule::instance.Unqueue(lg); lg2->Merge(lg); // Updates GoodsEntries of lg lg = lg2; } else { - LinkGraphSchedule::Instance()->Unqueue(lg2); + LinkGraphSchedule::instance.Unqueue(lg2); lg->Merge(lg2); // Updates GoodsEntries of lg2 } } } if (lg != NULL) { - (*lg)[ge1.node].UpdateEdge(ge2.node, capacity, usage); + (*lg)[ge1.node].UpdateEdge(ge2.node, capacity, usage, mode); } } @@ -3504,7 +3580,7 @@ void IncreaseStats(Station *st, const Vehicle *front, StationID next_station_id) * As usage is not such an important figure anyway we just * ignore the additional cargo then.*/ IncreaseStats(st, v->cargo_type, next_station_id, v->refit_cap, - min(v->refit_cap, v->cargo.StoredCount())); + min(v->refit_cap, v->cargo.StoredCount()), EUM_INCREASE); } } } @@ -3554,8 +3630,8 @@ void StationMonthlyLoop() FOR_ALL_STATIONS(st) { for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; - SB(ge->acceptance_pickup, GoodsEntry::GES_LAST_MONTH, 1, GB(ge->acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH, 1)); - ClrBit(ge->acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH); + SB(ge->status, GoodsEntry::GES_LAST_MONTH, 1, GB(ge->status, GoodsEntry::GES_CURRENT_MONTH, 1)); + ClrBit(ge->status, GoodsEntry::GES_CURRENT_MONTH); } } } @@ -3571,7 +3647,7 @@ void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint rad for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; - if (ge->acceptance_pickup != 0) { + if (ge->status != 0) { ge->rating = Clamp(ge->rating + amount, 0, 255); } } @@ -3599,7 +3675,7 @@ static uint UpdateStationWaiting(Station *st, CargoID type, uint amount, SourceT if (ge.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(type); - LinkGraphSchedule::Instance()->Queue(lg); + LinkGraphSchedule::instance.Queue(lg); ge.link_graph = lg->index; ge.node = lg->AddNode(st); } else { @@ -3612,7 +3688,7 @@ static uint UpdateStationWaiting(Station *st, CargoID type, uint amount, SourceT if (!ge.HasRating()) { InvalidateWindowData(WC_STATION_LIST, st->index); - SetBit(ge.acceptance_pickup, GoodsEntry::GES_PICKUP); + SetBit(ge.status, GoodsEntry::GES_RATING); } TriggerStationRandomisation(st, st->xy, SRT_NEW_CARGO, type); @@ -3661,7 +3737,7 @@ CommandCost CmdRenameStation(TileIndex tile, DoCommandFlag flags, uint32 p1, uin if (flags & DC_EXEC) { free(st->name); - st->name = reset ? NULL : strdup(text); + st->name = reset ? NULL : stredup(text); st->UpdateVirtCoord(); InvalidateWindowData(WC_STATION_LIST, st->owner, 1); @@ -4057,16 +4133,17 @@ uint FlowStat::GetShare(StationID st) const } /** - * Get a station a package can be routed to, but exclude the given one. + * Get a station a package can be routed to, but exclude the given ones. * @param excluded StationID not to be selected. + * @param excluded2 Another StationID not to be selected. * @return A station ID from the shares map. */ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const { + if (this->unrestricted == 0) return INVALID_STATION; assert(!this->shares.empty()); - uint max = (--this->shares.end())->first - 1; - SharesMap::const_iterator it = this->shares.upper_bound(RandomRange(max)); - assert(it != this->shares.end()); + SharesMap::const_iterator it = this->shares.upper_bound(RandomRange(this->unrestricted)); + assert(it != this->shares.end() && it->first <= this->unrestricted); if (it->second != excluded && it->second != excluded2) return it->second; /* We've hit one of the excluded stations. @@ -4075,12 +4152,12 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const uint end = it->first; uint begin = (it == this->shares.begin() ? 0 : (--it)->first); uint interval = end - begin; - if (interval > max) return INVALID_STATION; // Only one station in the map. - uint new_max = max - interval; + if (interval >= this->unrestricted) return INVALID_STATION; // Only one station in the map. + uint new_max = this->unrestricted - interval; uint rand = RandomRange(new_max); SharesMap::const_iterator it2 = (rand < begin) ? this->shares.upper_bound(rand) : this->shares.upper_bound(rand + interval); - assert(it2 != this->shares.end()); + assert(it2 != this->shares.end() && it2->first <= this->unrestricted); if (it2->second != excluded && it2->second != excluded2) return it2->second; /* We've hit the second excluded station. @@ -4089,7 +4166,7 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const uint end2 = it2->first; uint begin2 = (it2 == this->shares.begin() ? 0 : (--it2)->first); uint interval2 = end2 - begin2; - if (interval2 > new_max) return INVALID_STATION; // Only the two excluded stations in the map. + if (interval2 >= new_max) return INVALID_STATION; // Only the two excluded stations in the map. new_max -= interval2; if (begin > begin2) { Swap(begin, begin2); @@ -4097,7 +4174,7 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const Swap(interval, interval2); } rand = RandomRange(new_max); - SharesMap::const_iterator it3 = this->shares.end(); + SharesMap::const_iterator it3 = this->shares.upper_bound(this->unrestricted); if (rand < begin) { it3 = this->shares.upper_bound(rand); } else if (rand < begin2 - interval) { @@ -4105,7 +4182,7 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const } else { it3 = this->shares.upper_bound(rand + interval + interval2); } - assert(it3 != this->shares.end()); + assert(it3 != this->shares.end() && it3->first <= this->unrestricted); return it3->second; } @@ -4121,14 +4198,15 @@ void FlowStat::Invalidate() uint i = 0; for (SharesMap::iterator it(this->shares.begin()); it != this->shares.end(); ++it) { new_shares[++i] = it->second; + if (it->first == this->unrestricted) this->unrestricted = i; } this->shares.swap(new_shares); - assert(!this->shares.empty()); + assert(!this->shares.empty() && this->unrestricted <= (--this->shares.end())->first); } /** * Change share for specified station. By specifing INT_MIN as parameter you - * can erase a share. + * can erase a share. Newly added flows will be unrestricted. * @param st Next Hop to be removed. * @param flow Share to be added or removed. */ @@ -4148,6 +4226,7 @@ void FlowStat::ChangeShare(StationID st, int flow) uint share = it->first - last_share; if (flow == INT_MIN || (uint)(-flow) >= share) { removed_shares += share; + if (it->first <= this->unrestricted) this->unrestricted -= share; if (flow != INT_MIN) flow += share; last_share = it->first; continue; // remove the whole share @@ -4156,6 +4235,7 @@ void FlowStat::ChangeShare(StationID st, int flow) } else { added_shares += (uint)(flow); } + if (it->first <= this->unrestricted) this->unrestricted += flow; /* If we don't continue above the whole flow has been added or * removed. */ @@ -4164,7 +4244,100 @@ void FlowStat::ChangeShare(StationID st, int flow) new_shares[it->first + added_shares - removed_shares] = it->second; last_share = it->first; } - if (flow > 0) new_shares[last_share + (uint)flow] = st; + if (flow > 0) { + new_shares[last_share + (uint)flow] = st; + if (this->unrestricted < last_share) { + this->ReleaseShare(st); + } else { + this->unrestricted += flow; + } + } + this->shares.swap(new_shares); +} + +/** + * Restrict a flow by moving it to the end of the map and decreasing the amount + * of unrestricted flow. + * @param st Station of flow to be restricted. + */ +void FlowStat::RestrictShare(StationID st) +{ + assert(!this->shares.empty()); + uint flow = 0; + uint last_share = 0; + SharesMap new_shares; + for (SharesMap::iterator it(this->shares.begin()); it != this->shares.end(); ++it) { + if (flow == 0) { + if (it->first > this->unrestricted) return; // Not present or already restricted. + if (it->second == st) { + flow = it->first - last_share; + this->unrestricted -= flow; + } else { + new_shares[it->first] = it->second; + } + } else { + new_shares[it->first - flow] = it->second; + } + last_share = it->first; + } + if (flow == 0) return; + new_shares[last_share + flow] = st; + this->shares.swap(new_shares); + assert(!this->shares.empty()); +} + +/** + * Release ("unrestrict") a flow by moving it to the begin of the map and + * increasing the amount of unrestricted flow. + * @param st Station of flow to be released. + */ +void FlowStat::ReleaseShare(StationID st) +{ + assert(!this->shares.empty()); + uint flow = 0; + uint next_share = 0; + bool found = false; + for (SharesMap::reverse_iterator it(this->shares.rbegin()); it != this->shares.rend(); ++it) { + if (it->first < this->unrestricted) return; // Note: not <= as the share may hit the limit. + if (found) { + flow = next_share - it->first; + this->unrestricted += flow; + break; + } else { + if (it->first == this->unrestricted) return; // !found -> Limit not hit. + if (it->second == st) found = true; + } + next_share = it->first; + } + if (flow == 0) return; + SharesMap new_shares; + new_shares[flow] = st; + for (SharesMap::iterator it(this->shares.begin()); it != this->shares.end(); ++it) { + if (it->second != st) { + new_shares[flow + it->first] = it->second; + } else { + flow = 0; + } + } + this->shares.swap(new_shares); + assert(!this->shares.empty()); +} + +/** + * Scale all shares from link graph's runtime to monthly values. + * @param runtime Time the link graph has been running without compression. + * @pre runtime must be greater than 0 as we don't want infinite flow values. + */ +void FlowStat::ScaleToMonthly(uint runtime) +{ + assert(runtime > 0); + SharesMap new_shares; + uint share = 0; + for (SharesMap::iterator i = this->shares.begin(); i != this->shares.end(); ++i) { + share = max(share + 1, i->first * 30 / runtime); + new_shares[share] = i->second; + if (this->unrestricted == i->first) this->unrestricted = share; + } this->shares.swap(new_shares); } @@ -4233,34 +4406,99 @@ void FlowStatMap::FinalizeLocalConsumption(StationID self) /** * Delete all flows at a station for specific cargo and destination. * @param via Remote station of flows to be deleted. + * @return IDs of source stations for which the complete FlowStat, not only a + * share, has been erased. */ -void FlowStatMap::DeleteFlows(StationID via) +StationIDStack FlowStatMap::DeleteFlows(StationID via) { + StationIDStack ret; for (FlowStatMap::iterator f_it = this->begin(); f_it != this->end();) { FlowStat &s_flows = f_it->second; s_flows.ChangeShare(via, INT_MIN); if (s_flows.GetShares()->empty()) { + ret.Push(f_it->first); this->erase(f_it++); } else { ++f_it; } } + return ret; } /** - * Get the sum of flows via a specific station from this GoodsEntry. + * Restrict all flows at a station for specific cargo and destination. + * @param via Remote station of flows to be restricted. + */ +void FlowStatMap::RestrictFlows(StationID via) +{ + for (FlowStatMap::iterator it = this->begin(); it != this->end(); ++it) { + it->second.RestrictShare(via); + } +} + +/** + * Release all flows at a station for specific cargo and destination. + * @param via Remote station of flows to be released. + */ +void FlowStatMap::ReleaseFlows(StationID via) +{ + for (FlowStatMap::iterator it = this->begin(); it != this->end(); ++it) { + it->second.ReleaseShare(via); + } +} + +/** + * Get the sum of all flows from this FlowStatMap. + * @return sum of all flows. + */ +uint FlowStatMap::GetFlow() const +{ + uint ret = 0; + for (FlowStatMap::const_iterator i = this->begin(); i != this->end(); ++i) { + ret += (--(i->second.GetShares()->end()))->first; + } + return ret; +} + +/** + * Get the sum of flows via a specific station from this FlowStatMap. * @param via Remote station to look for. - * @return a FlowStat with all flows for 'via' added up. + * @return all flows for 'via' added up. */ -uint GoodsEntry::GetSumFlowVia(StationID via) const +uint FlowStatMap::GetFlowVia(StationID via) const { uint ret = 0; - for (FlowStatMap::const_iterator i = this->flows.begin(); i != this->flows.end(); ++i) { + for (FlowStatMap::const_iterator i = this->begin(); i != this->end(); ++i) { ret += i->second.GetShare(via); } return ret; } +/** + * Get the sum of flows from a specific station from this FlowStatMap. + * @param from Origin station to look for. + * @return all flows from 'from' added up. + */ +uint FlowStatMap::GetFlowFrom(StationID from) const +{ + FlowStatMap::const_iterator i = this->find(from); + if (i == this->end()) return 0; + return (--(i->second.GetShares()->end()))->first; +} + +/** + * Get the flow from a specific station via a specific other station. + * @param from Origin station to look for. + * @param via Remote station to look for. + * @return flow share originating at 'from' and going to 'via'. + */ +uint FlowStatMap::GetFlowFromVia(StationID from, StationID via) const +{ + FlowStatMap::const_iterator i = this->find(from); + if (i == this->end()) return 0; + return i->second.GetShare(via); +} + extern const TileTypeProcs _tile_type_station_procs = { DrawTile_Station, // draw_tile_proc GetSlopePixelZ_Station, // get_slope_z_proc diff --git a/src/station_func.h b/src/station_func.h index 39b8f5bb3d..f33dbd21fb 100644 --- a/src/station_func.h +++ b/src/station_func.h @@ -18,6 +18,7 @@ #include "vehicle_type.h" #include "economy_func.h" #include "rail.h" +#include "linkgraph/linkgraph_type.h" void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius); @@ -49,7 +50,7 @@ void UpdateAirportsNoise(); bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset); void IncreaseStats(Station *st, const Vehicle *v, StationID next_station_id); -void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint capacity, uint usage); +void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint capacity, uint usage, EdgeUpdateMode mode); void RerouteCargo(Station *st, CargoID c, StationID avoid, StationID avoid2); /** diff --git a/src/station_gui.cpp b/src/station_gui.cpp index 12774c1142..666e66d8b5 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -19,6 +19,7 @@ #include "cargotype.h" #include "station_gui.h" #include "strings_func.h" +#include "string_func.h" #include "window_func.h" #include "viewport_func.h" #include "widgets/dropdown_func.h" @@ -31,6 +32,7 @@ #include "vehiclelist.h" #include "town.h" #include "linkgraph/linkgraph.h" +#include "zoom_func.h" #include "widgets/station_widget.h" @@ -39,6 +41,8 @@ #include #include +#include "safeguards.h" + /** * Calculates and draws the accepted or supplied cargo around the selected tile(s) * @param left x position where the string is to be drawn @@ -219,7 +223,9 @@ protected: GetString(buf_cache, STR_STATION_NAME, lastof(buf_cache)); } - return strcmp(buf, buf_cache); + int r = strnatcmp(buf, buf_cache); // Sort by name (natural sorting). + if (r == 0) return (*a)->index - (*b)->index; + return r; } /** Sort stations by their type */ @@ -336,7 +342,7 @@ public: switch (widget) { case WID_STL_SORTBY: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -800,15 +806,16 @@ static const NWidgetPart _nested_station_view_widgets[] = { */ static void DrawCargoIcons(CargoID i, uint waiting, int left, int right, int y) { - uint num = min((waiting + 5) / 10, (right - left) / 10); // maximum is width / 10 icons so it won't overflow + int width = ScaleGUITrad(10); + uint num = min((waiting + (width / 2)) / width, (right - left) / width); // maximum is width / 10 icons so it won't overflow if (num == 0) return; SpriteID sprite = CargoSpec::Get(i)->GetCargoIcon(); - int x = _current_text_dir == TD_RTL ? left : right - num * 10; + int x = _current_text_dir == TD_RTL ? left : right - num * width; do { DrawSprite(sprite, PAL_NONE, x, y); - x += 10; + x += width; } while (--num); } @@ -1182,7 +1189,7 @@ bool CargoSorter::SortStation(StationID st1, StationID st2) const SetDParam(0, st2); GetString(buf2, STR_STATION_NAME, lastof(buf2)); - int res = strcmp(buf1, buf2); + int res = strnatcmp(buf1, buf2); // Sort by name (natural sorting). if (res == 0) { return this->SortId(st1, st2); } else { @@ -1299,17 +1306,15 @@ struct StationViewWindow : public Window { this->SelectSortBy(_settings_client.gui.station_gui_sort_by); this->sort_orders[0] = SO_ASCENDING; this->SelectSortOrder((SortOrder)_settings_client.gui.station_gui_sort_order); - Owner owner = Station::Get(window_number)->owner; - if (owner != OWNER_NONE) this->owner = owner; + this->owner = Station::Get(window_number)->owner; } ~StationViewWindow() { - Owner owner = Station::Get(this->window_number)->owner; - DeleteWindowById(WC_TRAINS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_TRAIN, owner, this->window_number).Pack(), false); - DeleteWindowById(WC_ROADVEH_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_ROAD, owner, this->window_number).Pack(), false); - DeleteWindowById(WC_SHIPS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_SHIP, owner, this->window_number).Pack(), false); - DeleteWindowById(WC_AIRCRAFT_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_AIRCRAFT, owner, this->window_number).Pack(), false); + DeleteWindowById(WC_TRAINS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_TRAIN, this->owner, this->window_number).Pack(), false); + DeleteWindowById(WC_ROADVEH_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_ROAD, this->owner, this->window_number).Pack(), false); + DeleteWindowById(WC_SHIPS_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_SHIP, this->owner, this->window_number).Pack(), false); + DeleteWindowById(WC_AIRCRAFT_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_AIRCRAFT, this->owner, this->window_number).Pack(), false); } /** @@ -1796,7 +1801,7 @@ struct StationViewWindow : public Window { uint32 cargo_mask = 0; for (CargoID i = 0; i < NUM_CARGO; i++) { - if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::GES_ACCEPTANCE)) SetBit(cargo_mask, i); + if (HasBit(st->goods[i].status, GoodsEntry::GES_ACCEPTANCE)) SetBit(cargo_mask, i); } SetDParam(0, cargo_mask); int bottom = DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, INT32_MAX, STR_STATION_VIEW_ACCEPTS_CARGO); @@ -2234,7 +2239,7 @@ struct SelectStationWindow : Window { TileArea area; ///< Location of new station Scrollbar *vscroll; - SelectStationWindow(WindowDesc *desc, CommandContainer cmd, TileArea ta) : + SelectStationWindow(WindowDesc *desc, const CommandContainer &cmd, TileArea ta) : Window(desc), select_station_cmd(cmd), area(ta) @@ -2351,7 +2356,7 @@ static WindowDesc _select_station_desc( * @return whether we need to show the station selection window. */ template -static bool StationJoinerNeeded(CommandContainer cmd, TileArea ta) +static bool StationJoinerNeeded(const CommandContainer &cmd, TileArea ta) { /* Only show selection if distant join is enabled in the settings */ if (!_settings_game.station.distant_join_stations) return false; @@ -2385,7 +2390,7 @@ static bool StationJoinerNeeded(CommandContainer cmd, TileArea ta) * @tparam the class to find stations for */ template -void ShowSelectBaseStationIfNeeded(CommandContainer cmd, TileArea ta) +void ShowSelectBaseStationIfNeeded(const CommandContainer &cmd, TileArea ta) { if (StationJoinerNeeded(cmd, ta)) { if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); @@ -2400,7 +2405,7 @@ void ShowSelectBaseStationIfNeeded(CommandContainer cmd, TileArea ta) * @param cmd Command to build the station. * @param ta Area to build the station in */ -void ShowSelectStationIfNeeded(CommandContainer cmd, TileArea ta) +void ShowSelectStationIfNeeded(const CommandContainer &cmd, TileArea ta) { ShowSelectBaseStationIfNeeded(cmd, ta); } @@ -2410,7 +2415,7 @@ void ShowSelectStationIfNeeded(CommandContainer cmd, TileArea ta) * @param cmd Command to build the waypoint. * @param ta Area to build the waypoint in */ -void ShowSelectWaypointIfNeeded(CommandContainer cmd, TileArea ta) +void ShowSelectWaypointIfNeeded(const CommandContainer &cmd, TileArea ta) { ShowSelectBaseStationIfNeeded(cmd, ta); } diff --git a/src/station_gui.h b/src/station_gui.h index 155dccfee4..6640856246 100644 --- a/src/station_gui.h +++ b/src/station_gui.h @@ -27,7 +27,7 @@ enum StationCoverageType { int DrawStationCoverageAreaText(int left, int right, int top, StationCoverageType sct, int rad, bool supplies); void CheckRedrawStationCoverage(const Window *w); -void ShowSelectStationIfNeeded(CommandContainer cmd, TileArea ta); -void ShowSelectWaypointIfNeeded(CommandContainer cmd, TileArea ta); +void ShowSelectStationIfNeeded(const CommandContainer &cmd, TileArea ta); +void ShowSelectWaypointIfNeeded(const CommandContainer &cmd, TileArea ta); #endif /* STATION_GUI_H */ diff --git a/src/station_map.h b/src/station_map.h index 67f41f1d75..7ca9bd7204 100644 --- a/src/station_map.h +++ b/src/station_map.h @@ -45,7 +45,7 @@ static const int GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET = 4; ///< The offset for the static inline StationType GetStationType(TileIndex t) { assert(IsTileType(t, MP_STATION)); - return (StationType)GB(_m[t].m6, 3, 3); + return (StationType)GB(_me[t].m6, 3, 3); } /** @@ -394,7 +394,7 @@ static inline bool IsCompatibleTrainStationTile(TileIndex test_tile, TileIndex s static inline bool HasStationReservation(TileIndex t) { assert(HasStationRail(t)); - return HasBit(_m[t].m6, 2); + return HasBit(_me[t].m6, 2); } /** @@ -406,7 +406,7 @@ static inline bool HasStationReservation(TileIndex t) static inline void SetRailStationReservation(TileIndex t, bool b) { assert(HasStationRail(t)); - SB(_m[t].m6, 2, 1, b ? 1 : 0); + SB(_me[t].m6, 2, 1, b ? 1 : 0); } /** @@ -539,8 +539,8 @@ static inline void MakeStation(TileIndex t, Owner o, StationID sid, StationType _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = section; - SB(_m[t].m6, 2, 1, 0); - SB(_m[t].m6, 3, 3, st); + SB(_me[t].m6, 2, 1, 0); + SB(_me[t].m6, 3, 3, st); _me[t].m7 = 0; } diff --git a/src/station_type.h b/src/station_type.h index 82ee0ae259..952a683d74 100644 --- a/src/station_type.h +++ b/src/station_type.h @@ -13,6 +13,7 @@ #define STATION_TYPE_H #include "core/smallvec_type.hpp" +#include "core/smallstack_type.hpp" #include "tilearea_type.h" #include @@ -28,6 +29,8 @@ struct Waypoint; static const StationID NEW_STATION = 0xFFFE; static const StationID INVALID_STATION = 0xFFFF; +typedef SmallStack StationIDStack; + /** Station types */ enum StationType { STATION_RAIL, diff --git a/src/statusbar_gui.cpp b/src/statusbar_gui.cpp index 62799e18bf..25efa6bb1c 100644 --- a/src/statusbar_gui.cpp +++ b/src/statusbar_gui.cpp @@ -24,6 +24,7 @@ #include "saveload/saveload.h" #include "window_func.h" #include "statusbar_gui.h" +#include "toolbar_gui.h" #include "core/geometry_func.hpp" #include "widgets/statusbar_widget.h" @@ -31,6 +32,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + static bool DrawScrollingStatusText(const NewsItem *ni, int scroll_pos, int left, int right, int top, int bottom) { CopyInDParam(0, ni->params, lengthof(ni->params)); @@ -99,6 +102,11 @@ struct StatusBarWindow : Window { return pt; } + virtual void FindWindowPlacementAndResize(int def_width, int def_height) + { + Window::FindWindowPlacementAndResize(_toolbar_width, def_height); + } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { Dimension d; @@ -236,7 +244,7 @@ static const NWidgetPart _nested_main_status_widgets[] = { }; static WindowDesc _main_status_desc( - WDP_MANUAL, NULL, 640, 12, + WDP_MANUAL, NULL, 0, 0, WC_STATUS_BAR, WC_NONE, WDF_NO_FOCUS, _nested_main_status_widgets, lengthof(_nested_main_status_widgets) diff --git a/src/stdafx.h b/src/stdafx.h index 5464c59fa0..d68605c196 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -21,6 +21,7 @@ #include #define _GNU_SOURCE #define TROUBLED_INTS + #include #elif defined(__NDS__) #include #define TROUBLED_INTS @@ -215,6 +216,11 @@ #pragma warning(disable: 6255) // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead #pragma warning(disable: 6246) // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ... + #if (_MSC_VER == 1500) // Addresses item #13 on http://blogs.msdn.com/b/vcblog/archive/2008/08/11/tr1-fixes-in-vc9-sp1.aspx, for Visual Studio 2008 + #define _DO_NOT_DECLARE_INTERLOCKED_INTRINSICS_IN_MEMORY + #include + #endif + #include // alloca() #define NORETURN __declspec(noreturn) #define inline __forceinline @@ -227,7 +233,6 @@ #define WARN_FORMAT(string, args) #define FINAL sealed - int CDECL snprintf(char *str, size_t size, const char *format, ...) WARN_FORMAT(3, 4); #if defined(WINCE) int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap); #endif @@ -261,6 +266,8 @@ #define strncasecmp strnicmp #endif + #define strtoull _strtoui64 + /* MSVC doesn't have these :( */ #define S_ISDIR(mode) (mode & S_IFDIR) #define S_ISREG(mode) (mode & S_IFREG) @@ -277,7 +284,7 @@ #endif #if defined(WINCE) - #define strdup _strdup + #define stredup _stredup #endif /* WINCE */ /* NOTE: the string returned by these functions is only valid until the next @@ -297,14 +304,10 @@ const char *FS2OTTD(const TCHAR *name); const TCHAR *OTTD2FS(const char *name, bool console_cp = false); - #define SQ2OTTD(name) FS2OTTD(name) - #define OTTD2SQ(name) OTTD2FS(name) #else #define fopen(file, mode) fopen(OTTD2FS(file), mode) const char *FS2OTTD(const char *name); const char *OTTD2FS(const char *name); - #define SQ2OTTD(name) (name) - #define OTTD2SQ(name) (name) #endif /* WIN32 */ #endif /* STRGEN || SETTINGSGEN */ @@ -490,4 +493,25 @@ static inline void free(const void *ptr) */ #define MAX_UVALUE(type) ((type)~(type)0) +#if defined(_MSC_VER) && !defined(_DEBUG) + #define IGNORE_UNINITIALIZED_WARNING_START __pragma(warning(push)) __pragma(warning(disable:4700)) + #define IGNORE_UNINITIALIZED_WARNING_STOP __pragma(warning(pop)) +#elif defined(__GNUC__) && !defined(_DEBUG) + #define HELPER0(x) #x + #define HELPER1(x) HELPER0(GCC diagnostic ignored x) + #define HELPER2(y) HELPER1(#y) +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) + #define IGNORE_UNINITIALIZED_WARNING_START \ + _Pragma("GCC diagnostic push") \ + _Pragma(HELPER2(-Wuninitialized)) \ + _Pragma(HELPER2(-Wmaybe-uninitialized)) + #define IGNORE_UNINITIALIZED_WARNING_STOP _Pragma("GCC diagnostic pop") +#endif +#endif + +#ifndef IGNORE_UNINITIALIZED_WARNING_START + #define IGNORE_UNINITIALIZED_WARNING_START + #define IGNORE_UNINITIALIZED_WARNING_STOP +#endif + #endif /* STDAFX_H */ diff --git a/src/story.cpp b/src/story.cpp index b85ce20ac3..b74842f41a 100644 --- a/src/story.cpp +++ b/src/story.cpp @@ -24,6 +24,8 @@ #include "window_func.h" #include "gui.h" +#include "safeguards.h" + StoryPageElementID _new_story_page_element_id; StoryPageID _new_story_page_id; @@ -79,10 +81,10 @@ static void UpdateElement(StoryPageElement &pe, TileIndex tile, uint32 reference { switch (pe.type) { case SPET_TEXT: - pe.text = strdup(text); + pe.text = stredup(text); break; case SPET_LOCATION: - pe.text = strdup(text); + pe.text = stredup(text); pe.referenced_id = tile; break; case SPET_GOAL: @@ -124,10 +126,11 @@ CommandCost CmdCreateStoryPage(TileIndex tile, DoCommandFlag flags, uint32 p1, u if (StrEmpty(text)) { s->title = NULL; } else { - s->title = strdup(text); + s->title = stredup(text); } InvalidateWindowClassesData(WC_STORY_BOOK, -1); + if (StoryPage::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0); _new_story_page_id = s->index; _story_page_next_sort_value++; @@ -240,7 +243,7 @@ CommandCost CmdSetStoryPageTitle(TileIndex tile, DoCommandFlag flags, uint32 p1, if (StrEmpty(text)) { p->title = NULL; } else { - p->title = strdup(text); + p->title = stredup(text); } InvalidateWindowClassesData(WC_STORY_BOOK, page_id); @@ -249,6 +252,32 @@ CommandCost CmdSetStoryPageTitle(TileIndex tile, DoCommandFlag flags, uint32 p1, return CommandCost(); } +/** + * Update date of a story page. + * @param tile unused. + * @param flags type of operation + * @param p1 = (bit 0 - 15) - StoryPageID to update. + * @param p2 = (bit 0 - 31) - date + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdSetStoryPageDate(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + StoryPageID page_id = (StoryPageID)GB(p1, 0, 16); + if (!StoryPage::IsValidID(page_id)) return CMD_ERROR; + Date date = (Date)p2; + + if (flags & DC_EXEC) { + StoryPage *p = StoryPage::Get(page_id); + p->date = date; + + InvalidateWindowClassesData(WC_STORY_BOOK, page_id); + } + + return CommandCost(); +} + /** * Display a story page for all clients that are allowed to * view the story page. @@ -300,6 +329,34 @@ CommandCost CmdRemoveStoryPage(TileIndex tile, DoCommandFlag flags, uint32 p1, u delete p; InvalidateWindowClassesData(WC_STORY_BOOK, -1); + if (StoryPage::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0); + } + + return CommandCost(); +} + +/** + * Remove a story page element + * @param tile unused. + * @param flags type of operation + * @param p1 = (bit 0 - 15) - StoryPageElementID to remove. + * @param p2 unused. + * @param text unused. + * @return the cost of this operation or an error + */ +CommandCost CmdRemoveStoryPageElement(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + StoryPageElementID page_element_id = (StoryPageElementID)p1; + if (!StoryPageElement::IsValidID(page_element_id)) return CMD_ERROR; + + if (flags & DC_EXEC) { + StoryPageElement *pe = StoryPageElement::Get(page_element_id); + StoryPageID page_id = pe->page; + + delete pe; + + InvalidateWindowClassesData(WC_STORY_BOOK, page_id); } return CommandCost(); diff --git a/src/story_gui.cpp b/src/story_gui.cpp index e2a325911f..003843310e 100644 --- a/src/story_gui.cpp +++ b/src/story_gui.cpp @@ -31,6 +31,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + typedef GUIList GUIStoryPageList; typedef GUIList GUIStoryPageElementList; @@ -177,7 +179,7 @@ protected: this->story_page_elements.ForceRebuild(); this->BuildStoryPageElementList(); - this->vscroll->SetCount(this->CountLines()); + this->vscroll->SetCount(this->GetContentHeight()); this->SetWidgetDirty(WID_SB_SCROLLBAR); this->SetWidgetDirty(WID_SB_SEL_PAGE); this->SetWidgetDirty(WID_SB_PAGE_PANEL); @@ -246,13 +248,13 @@ protected: item = str_item; } - list->push_back(item); + *list->Append() = item; page_num++; } /* Check if list is empty. */ - if (list->size() == 0) { - free(list); + if (list->Length() == 0) { + delete list; list = NULL; } @@ -268,24 +270,24 @@ protected: } /** - * Counts how many lines that are used by Date and Title + * Counts how many pixels of height that are used by Date and Title * (excluding marginal after Title, as each body element has * an empty row before the elment). * @param max_width Available width to display content. - * @return the number of lines. + * @return the height in pixels. */ - uint CountHeadLines(int max_width) + uint GetHeadHeight(int max_width) const { StoryPage *page = this->GetSelPage(); if (page == NULL) return 0; - int num_lines = 0; + int height = 0; /* Title lines */ - num_lines += 1; // Date always use exactly one line. + height += FONT_HEIGHT_NORMAL; // Date always use exactly one line. SetDParamStr(0, page->title != NULL ? page->title : this->selected_generic_title); - num_lines += GetStringLineCount(STR_STORY_BOOK_TITLE, max_width); + height += GetStringHeight(STR_STORY_BOOK_TITLE, max_width); - return num_lines; + return height; } /** @@ -310,54 +312,54 @@ protected: } /** - * Count the number of lines used by a given page element. + * Get the height in pixels used by a page element. * @param pe The story page element. * @param max_width Available width to display content. - * @return the number of lines. + * @return the height in pixels. */ - uint CountPageElementLines(const StoryPageElement &pe, int max_width) + uint GetPageElementHeight(const StoryPageElement &pe, int max_width) { switch (pe.type) { case SPET_TEXT: SetDParamStr(0, pe.text); - return GetStringLineCount(STR_BLACK_RAW_STRING, max_width); + return GetStringHeight(STR_BLACK_RAW_STRING, max_width); break; case SPET_GOAL: case SPET_LOCATION: { Dimension sprite_dim = GetSpriteSize(GetPageElementSprite(pe)); - int line_height = GetStringHeight(STR_JUST_NOTHING, INT_MAX); - if (line_height == 0) return 1; - return max((uint)1, sprite_dim.height / (uint)line_height); + return sprite_dim.height; break; } default: NOT_REACHED(); } + return 0; } /** - * Count the number of lines in this window. - * @return the number of lines. + * Get the total height of the content displayed + * in this window. + * @return the height in pixels */ - uint CountLines() + uint GetContentHeight() { StoryPage *page = this->GetSelPage(); if (page == NULL) return 0; int max_width = GetAvailablePageContentWidth(); + uint element_vertical_dist = FONT_HEIGHT_NORMAL; - /* Head lines */ - int num_lines = CountHeadLines(max_width); + /* Head */ + uint height = GetHeadHeight(max_width); - /* Body lines */ + /* Body */ for (const StoryPageElement **iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) { const StoryPageElement *pe = *iter; - num_lines += 1; // For the space between previous element and current element. - - num_lines += CountPageElementLines(*pe, max_width); + height += element_vertical_dist; + height += GetPageElementHeight(*pe, max_width); } - return num_lines; + return height; } /** @@ -368,18 +370,19 @@ protected: * @param width Width of the region available for drawing. * @param line_height Height of one line of text. * @param action_sprite The sprite to draw. + * @param string_id The string id to draw. * @return the number of lines. */ - void DrawActionElement(int &y_offset, int width, int line_height, SpriteID action_sprite) const + void DrawActionElement(int &y_offset, int width, int line_height, SpriteID action_sprite, StringID string_id = STR_JUST_RAW_STRING) const { Dimension sprite_dim = GetSpriteSize(action_sprite); - uint element_height = max((uint)1, sprite_dim.height / (uint)line_height) * line_height; + uint element_height = max(sprite_dim.height, (uint)line_height); uint sprite_top = y_offset + (element_height - sprite_dim.height) / 2; uint text_top = y_offset + (element_height - line_height) / 2; DrawSprite(action_sprite, PAL_NONE, 0, sprite_top); - DrawString(sprite_dim.width + WD_FRAMETEXT_LEFT, width, text_top, STR_JUST_RAW_STRING, TC_BLACK); + DrawString(sprite_dim.width + WD_FRAMETEXT_LEFT, width, text_top, string_id, TC_BLACK); y_offset += element_height; } @@ -417,6 +420,7 @@ public: { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SB_SCROLLBAR); + this->vscroll->SetStepSize(FONT_HEIGHT_NORMAL); /* Initalize page sort. */ this->story_pages.SetSortFuncs(StoryBookWindow::page_sorter_funcs); @@ -426,6 +430,7 @@ public: /* story_page_elements will get built by SetSelectedPage */ this->FinishInitNested(window_number); + this->owner = (Owner)this->window_number; /* Initialize selected vars. */ this->selected_generic_title[0] = '\0'; @@ -477,6 +482,21 @@ public: } } + virtual void OnPaint() + { + /* Detect if content has changed height. This can happen if a + * multi-line text contains eg. {COMPANY} and that company is + * renamed. + */ + if (this->vscroll->GetCount() != this->GetContentHeight()) { + this->vscroll->SetCount(this->GetContentHeight()); + this->SetWidgetDirty(WID_SB_SCROLLBAR); + this->SetWidgetDirty(WID_SB_PAGE_PANEL); + } + + this->DrawWidgets(); + } + virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_SB_PAGE_PANEL) return; @@ -491,18 +511,20 @@ public: /* Set up a clipping region for the panel. */ DrawPixelInfo tmp_dpi; - if (!FillDrawPixelInfo(&tmp_dpi, x, y, right - x + 1, r.bottom - y + 1)) return; + if (!FillDrawPixelInfo(&tmp_dpi, x, y, right - x + 1, bottom - y + 1)) return; DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; /* Draw content (now coordinates given to Draw** are local to the new clipping region). */ - int line_height = GetStringHeight(STR_JUST_NOTHING, INT_MAX); - int y_offset = - this->vscroll->GetPosition() * line_height; + int line_height = FONT_HEIGHT_NORMAL; + int y_offset = - this->vscroll->GetPosition(); /* Date */ - SetDParam(0, page->date); - DrawString(0, right - x, y_offset, STR_JUST_DATE_LONG, TC_BLACK); + if (page->date != INVALID_DATE) { + SetDParam(0, page->date); + DrawString(0, right - x, y_offset, STR_JUST_DATE_LONG, TC_BLACK); + } y_offset += line_height; /* Title */ @@ -522,12 +544,9 @@ public: case SPET_GOAL: { Goal *g = Goal::Get((GoalID) pe->referenced_id); - if (g != NULL) { - SetDParamStr(0, g->text); - DrawActionElement(y_offset, right - x, line_height, GetPageElementSprite(*pe)); - } else { - y_offset += line_height; - } + StringID string_id = g == NULL ? STR_STORY_BOOK_INVALID_GOAL_REF : STR_JUST_RAW_STRING; + if (g != NULL) SetDParamStr(0, g->text); + DrawActionElement(y_offset, right - x, line_height, GetPageElementSprite(*pe), string_id); break; } @@ -548,10 +567,11 @@ public: { if (widget != WID_SB_SEL_PAGE && widget != WID_SB_PAGE_PANEL) return; - Dimension d = GetStringBoundingBox(STR_JUST_NOTHING); + Dimension d; + d.height = FONT_HEIGHT_NORMAL; d.width = 0; - switch(widget) { + switch (widget) { case WID_SB_SEL_PAGE: { /* Get max title width. */ @@ -570,15 +590,13 @@ public: } } - d.width += padding.width + WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT; - d.height += padding.height + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; + d.width += padding.width; + d.height += padding.height; *size = maxdim(*size, d); break; } case WID_SB_PAGE_PANEL: { - resize->height = d.height; - d.height *= 5; d.height += padding.height + WD_FRAMETEXT_TOP + WD_FRAMETEXT_BOTTOM; *size = maxdim(*size, d); @@ -591,7 +609,7 @@ public: virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SB_PAGE_PANEL, WD_FRAMETEXT_TOP + WD_FRAMETEXT_BOTTOM); - this->vscroll->SetCount(this->CountLines()); + this->vscroll->SetCount(this->GetContentHeight()); } virtual void OnClick(Point pt, int widget, int click_count) @@ -622,27 +640,28 @@ public: break; case WID_SB_PAGE_PANEL: { - uint clicked_row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SB_PAGE_PANEL, WD_FRAMETEXT_TOP); + uint clicked_y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SB_PAGE_PANEL, WD_FRAMETEXT_TOP); uint max_width = GetAvailablePageContentWidth(); /* Skip head rows. */ - uint n_head_rows = this->CountHeadLines(max_width); - if (clicked_row < n_head_rows) return; + uint head_height = this->GetHeadHeight(max_width); + if (clicked_y < head_height) return; /* Detect if a page element was clicked. */ - uint row = n_head_rows; + uint y = head_height; + uint element_vertical_dist = FONT_HEIGHT_NORMAL; for (const StoryPageElement *const*iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) { const StoryPageElement *const pe = *iter; - row += 1; // margin row + y += element_vertical_dist; // margin row - uint content_rows = CountPageElementLines(*pe, max_width); - if (clicked_row >= row && clicked_row < row + content_rows) { + uint content_height = GetPageElementHeight(*pe, max_width); + if (clicked_y >= y && clicked_y < y + content_height) { this->OnPageElementClick(*pe); return; } - row += content_rows; + y += content_height; } } } @@ -739,13 +758,15 @@ static WindowDesc _story_book_desc( _nested_story_book_widgets, lengthof(_nested_story_book_widgets) ); +/** + * Raise or create the story book window for \a company, at page \a page_id. + * @param company 'Owner' of the story book, may be #INVALID_COMPANY. + * @param page_id Page to open, may be #INVALID_STORY_PAGE. + */ void ShowStoryBook(CompanyID company, uint16 page_id) { if (!Company::IsValidID(company)) company = (CompanyID)INVALID_COMPANY; - StoryBookWindow *w = AllocateWindowDescFront(&_story_book_desc, company); - if (page_id != INVALID_STORY_PAGE) { - if (w == NULL) w = (StoryBookWindow *)FindWindowById(WC_STORY_BOOK, company); - w->SetSelectedPage(page_id); - } + StoryBookWindow *w = AllocateWindowDescFront(&_story_book_desc, company, true); + if (page_id != INVALID_STORY_PAGE) w->SetSelectedPage(page_id); } diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index 909427b562..85b83f2b57 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -39,6 +39,8 @@ #include "../table/strgen_tables.h" +#include "../safeguards.h" + #ifdef _MSC_VER # define LINE_NUM_FMT(s) "%s (%d): warning: %s (" s ")\n" @@ -51,7 +53,7 @@ void CDECL strgen_warning(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("warning"), _file, _cur_line, buf); _warnings++; @@ -62,7 +64,7 @@ void CDECL strgen_error(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("error"), _file, _cur_line, buf); _errors++; @@ -73,7 +75,7 @@ void NORETURN CDECL strgen_fatal(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("FATAL"), _file, _cur_line, buf); #ifdef _MSC_VER @@ -87,7 +89,7 @@ void NORETURN CDECL error(const char *s, ...) char buf[1024]; va_list va; va_start(va, s); - vsnprintf(buf, lengthof(buf), s, va); + vseprintf(buf, lastof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("FATAL"), _file, _cur_line, buf); #ifdef _MSC_VER @@ -120,9 +122,9 @@ struct FileStringReader : StringReader { fclose(this->fh); } - /* virtual */ char *ReadLine(char *buffer, size_t size) + /* virtual */ char *ReadLine(char *buffer, const char *last) { - return fgets(buffer, size, this->fh); + return fgets(buffer, ClampToU16(last - buffer + 1), this->fh); } /* virtual */ void HandlePragma(char *str); @@ -245,7 +247,7 @@ struct FileWriter { */ FileWriter(const char *filename) { - this->filename = strdup(filename); + this->filename = stredup(filename); this->fh = fopen(this->filename, "wb"); if (this->fh == NULL) { @@ -283,13 +285,19 @@ struct HeaderFileWriter : HeaderWriter, FileWriter { * @param filename The file to open. */ HeaderFileWriter(const char *filename) : FileWriter("tmp.xxx"), - real_filename(strdup(filename)), prev(0) + real_filename(stredup(filename)), prev(0) { fprintf(this->fh, "/* This file is automatically generated. Do not modify */\n\n"); fprintf(this->fh, "#ifndef TABLE_STRINGS_H\n"); fprintf(this->fh, "#define TABLE_STRINGS_H\n"); } + /** Free the filename. */ + ~HeaderFileWriter() + { + free(real_filename); + } + void WriteStringID(const char *name, int stringid) { if (prev + 1 != stringid) fprintf(this->fh, "\n"); @@ -347,7 +355,9 @@ struct LanguageFileWriter : LanguageWriter, FileWriter { void Finalise() { - fputc(0, this->fh); + if (fputc(0, this->fh) == EOF) { + error("Could not write to %s", this->filename); + } this->FileWriter::Finalise(); } @@ -362,10 +372,12 @@ struct LanguageFileWriter : LanguageWriter, FileWriter { /** Multi-OS mkdirectory function */ static inline void ottd_mkdir(const char *directory) { + /* Ignore directory creation errors; they'll surface later on, and most + * of the time they are 'directory already exists' errors anyhow. */ #if defined(WIN32) || defined(__WATCOMC__) - mkdir(directory); + mkdir(directory); #else - mkdir(directory, 0755); + mkdir(directory, 0755); #endif } @@ -374,13 +386,13 @@ static inline void ottd_mkdir(const char *directory) * path separator and the filename. The separator is only appended if the path * does not already end with a separator */ -static inline char *mkpath(char *buf, size_t buflen, const char *path, const char *file) +static inline char *mkpath(char *buf, const char *last, const char *path, const char *file) { - ttd_strlcpy(buf, path, buflen); // copy directory into buffer + strecpy(buf, path, last); // copy directory into buffer char *p = strchr(buf, '\0'); // add path separator if necessary - if (p[-1] != PATHSEPCHAR && (size_t)(p - buf) + 1 < buflen) *p++ = PATHSEPCHAR; - ttd_strlcpy(p, file, buflen - (size_t)(p - buf)); // concatenate filename at end of buffer + if (p[-1] != PATHSEPCHAR && p != last) *p++ = PATHSEPCHAR; + strecpy(p, file, last); // concatenate filename at end of buffer return buf; } @@ -510,7 +522,7 @@ int CDECL main(int argc, char *argv[]) * with a (free) parameter the program will translate that language to destination * directory. As input english.txt is parsed from the source directory */ if (mgo.numleft == 0) { - mkpath(pathbuf, lengthof(pathbuf), src_dir, "english.txt"); + mkpath(pathbuf, lastof(pathbuf), src_dir, "english.txt"); /* parse master file */ StringData data(TAB_COUNT); @@ -520,7 +532,7 @@ int CDECL main(int argc, char *argv[]) /* write strings.h */ ottd_mkdir(dest_dir); - mkpath(pathbuf, lengthof(pathbuf), dest_dir, "strings.h"); + mkpath(pathbuf, lastof(pathbuf), dest_dir, "strings.h"); HeaderFileWriter writer(pathbuf); writer.WriteHeader(data); @@ -528,7 +540,7 @@ int CDECL main(int argc, char *argv[]) } else if (mgo.numleft >= 1) { char *r; - mkpath(pathbuf, lengthof(pathbuf), src_dir, "english.txt"); + mkpath(pathbuf, lastof(pathbuf), src_dir, "english.txt"); StringData data(TAB_COUNT); /* parse master file and check if target file is correct */ @@ -546,12 +558,12 @@ int CDECL main(int argc, char *argv[]) /* get the targetfile, strip any directories and append to destination path */ r = strrchr(mgo.argv[i], PATHSEPCHAR); - mkpath(pathbuf, lengthof(pathbuf), dest_dir, (r != NULL) ? &r[1] : mgo.argv[i]); + mkpath(pathbuf, lastof(pathbuf), dest_dir, (r != NULL) ? &r[1] : mgo.argv[i]); /* rename the .txt (input-extension) to .lng */ r = strrchr(pathbuf, '.'); if (r == NULL || strcmp(r, ".txt") != 0) r = strchr(pathbuf, '\0'); - ttd_strlcpy(r, ".lng", (size_t)(r - pathbuf)); + strecpy(r, ".lng", lastof(pathbuf)); LanguageFileWriter writer(pathbuf); writer.WriteLang(data); diff --git a/src/strgen/strgen.h b/src/strgen/strgen.h index 22b24a2660..ecae71a72a 100644 --- a/src/strgen/strgen.h +++ b/src/strgen/strgen.h @@ -72,10 +72,10 @@ struct StringReader { /** * Read a single line from the source of strings. * @param buffer The buffer to read the data in to. - * @param size The size of the buffer. + * @param last The last element in the buffer. * @return The buffer, or NULL if at the end of the file. */ - virtual char *ReadLine(char *buffer, size_t size) = 0; + virtual char *ReadLine(char *buffer, const char *last) = 0; /** * Handle the pragma of the file. diff --git a/src/strgen/strgen_base.cpp b/src/strgen/strgen_base.cpp index 8539b49b8c..c41f3d9b40 100644 --- a/src/strgen/strgen_base.cpp +++ b/src/strgen/strgen_base.cpp @@ -19,6 +19,8 @@ #include "../table/strgen_tables.h" +#include "../safeguards.h" + /* Compiles a list of strings into a compiled string list */ static bool _translated; ///< Whether the current language is not the master language @@ -38,7 +40,7 @@ static const CmdStruct *ParseCommandString(const char **str, char *param, int *a * @param next The next chained case. */ Case::Case(int caseidx, const char *string, Case *next) : - caseidx(caseidx), string(strdup(string)), next(next) + caseidx(caseidx), string(stredup(string)), next(next) { } @@ -57,7 +59,7 @@ Case::~Case() * @param line The line this string was found on. */ LangString::LangString(const char *name, const char *english, int index, int line) : - name(strdup(name)), english(strdup(english)), translated(NULL), + name(stredup(name)), english(stredup(english)), translated(NULL), hash_next(0), index(index), line(line), translated_case(NULL) { } @@ -386,15 +388,25 @@ static void EmitWordList(Buffer *buffer, const char * const *words, uint nw) void EmitPlural(Buffer *buffer, char *buf, int value) { int argidx = _cur_argidx; - int offset = 0; - const char *words[5]; + int offset = -1; + int expected = _plural_forms[_lang.plural_form].plural_count; + const char **words = AllocaM(const char *, max(expected, MAX_PLURALS)); int nw = 0; /* Parse out the number, if one exists. Otherwise default to prev arg. */ if (!ParseRelNum(&buf, &argidx, &offset)) argidx--; + const CmdStruct *cmd = _cur_pcs.cmd[argidx]; + if (offset == -1) { + /* Use default offset */ + if (cmd == NULL || cmd->default_plural_offset < 0) { + strgen_fatal("Command '%s' has no (default) plural position", cmd == NULL ? "" : cmd->cmd); + } + offset = cmd->default_plural_offset; + } + /* Parse each string */ - for (nw = 0; nw < 5; nw++) { + for (nw = 0; nw < MAX_PLURALS; nw++) { words[nw] = ParseWord(&buf); if (words[nw] == NULL) break; } @@ -403,16 +415,16 @@ void EmitPlural(Buffer *buffer, char *buf, int value) strgen_fatal("%s: No plural words", _cur_ident); } - if (_plural_forms[_lang.plural_form].plural_count != nw) { + if (expected != nw) { if (_translated) { strgen_fatal("%s: Invalid number of plural forms. Expecting %d, found %d.", _cur_ident, - _plural_forms[_lang.plural_form].plural_count, nw); + expected, nw); } else { if ((_show_todo & 2) != 0) strgen_warning("'%s' is untranslated. Tweaking english string to allow compilation for plural forms", _cur_ident); - if (nw > _plural_forms[_lang.plural_form].plural_count) { - nw = _plural_forms[_lang.plural_form].plural_count; + if (nw > expected) { + nw = expected; } else { - for (; nw < _plural_forms[_lang.plural_form].plural_count; nw++) { + for (; nw < expected; nw++) { words[nw] = words[nw - 1]; } } @@ -574,7 +586,7 @@ static const CmdStruct *ParseCommandString(const char **str, char *param, int *a * @param translation Are we reading a translation? */ StringReader::StringReader(StringData &data, const char *file, bool master, bool translation) : - data(data), file(strdup(file)), master(master), translation(translation) + data(data), file(stredup(file)), master(master), translation(translation) { } @@ -611,7 +623,7 @@ static void ExtractCommandString(ParsedCommandStruct *p, const char *s, bool war } else if (!(ar->flags & C_DONTCOUNT)) { // Ignore some of them if (p->np >= lengthof(p->pairs)) strgen_fatal("too many commands in string, max " PRINTF_SIZE, lengthof(p->pairs)); p->pairs[p->np].a = ar; - p->pairs[p->np].v = param[0] != '\0' ? strdup(param) : ""; + p->pairs[p->np].v = param[0] != '\0' ? stredup(param) : ""; p->np++; } } @@ -775,7 +787,7 @@ void StringReader::HandleString(char *str) if (casep != NULL) { ent->translated_case = new Case(ResolveCaseName(casep, strlen(casep)), s, ent->translated_case); } else { - ent->translated = strdup(s); + ent->translated = stredup(s); /* If the string was translated, use the line from the * translated language so errors in the translated file * are properly referenced to. */ @@ -818,7 +830,7 @@ void StringReader::ParseFile() strecpy(_lang.digit_decimal_separator, ".", lastof(_lang.digit_decimal_separator)); _cur_line = 1; - while (this->ReadLine(buf, sizeof(buf)) != NULL) { + while (this->ReadLine(buf, lastof(buf)) != NULL) { rstrip(buf); this->HandleString(buf); _cur_line++; diff --git a/src/string.cpp b/src/string.cpp index ada9f9022a..4bcd0cf805 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -32,6 +32,11 @@ #include "gfx_func.h" #endif /* WITH_ICU */ +/* The function vsnprintf is used internally to perform the required formatting + * tasks. As such this one must be allowed, and makes sure it's terminated. */ +#include "safeguards.h" +#undef vsnprintf + /** * Safer implementation of vsnprintf; same as vsnprintf except: * - last instead of size, i.e. replace sizeof with lastof. @@ -42,63 +47,13 @@ * @param ap the list of arguments for the format * @return the number of added characters */ -static int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) +int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) { ptrdiff_t diff = last - str; if (diff < 0) return 0; return min((int)diff, vsnprintf(str, diff + 1, format, ap)); } -/** - * Appends characters from one string to another. - * - * Appends the source string to the destination string with respect of the - * terminating null-character and the maximum size of the destination - * buffer. - * - * @note usage ttd_strlcat(dst, src, lengthof(dst)); - * @note lengthof() applies only to fixed size arrays - * - * @param dst The buffer containing the target string - * @param src The buffer containing the string to append - * @param size The maximum size of the destination buffer - */ -void ttd_strlcat(char *dst, const char *src, size_t size) -{ - assert(size > 0); - while (size > 0 && *dst != '\0') { - size--; - dst++; - } - - ttd_strlcpy(dst, src, size); -} - - -/** - * Copies characters from one buffer to another. - * - * Copies the source string to the destination buffer with respect of the - * terminating null-character and the maximum size of the destination - * buffer. - * - * @note usage ttd_strlcpy(dst, src, lengthof(dst)); - * @note lengthof() applies only to fixed size arrays - * - * @param dst The destination buffer - * @param src The buffer containing the string to copy - * @param size The maximum size of the destination buffer - */ -void ttd_strlcpy(char *dst, const char *src, size_t size) -{ - assert(size > 0); - while (--size > 0 && *src != '\0') { - *dst++ = *src++; - } - *dst = '\0'; -} - - /** * Appends characters from one string to another. * @@ -161,6 +116,31 @@ char *strecpy(char *dst, const char *src, const char *last) return dst; } +/** + * Create a duplicate of the given string. + * @param s The string to duplicate. + * @param last The last character that is safe to duplicate. If NULL, the whole string is duplicated. + * @note The maximum length of the resulting string might therefore be last - s + 1. + * @return The duplicate of the string. + */ +char *stredup(const char *s, const char *last) +{ + size_t len = last == NULL ? strlen(s) : ttd_strnlen(s, last - s + 1); + char *tmp = CallocT(len + 1); + memcpy(tmp, s, len); + return tmp; +} + +char *str_vfmt(const char *str, va_list va) +{ + char buf[4096]; + + int len = vseprintf(buf, lastof(buf), str, va); + char *p = MallocT(len + 1); + memcpy(p, buf, len + 1); + return p; +} + /** * Format, "printf", into a newly allocated string. * @param str The formatting string. @@ -168,15 +148,11 @@ char *strecpy(char *dst, const char *src, const char *last) */ char *CDECL str_fmt(const char *str, ...) { - char buf[4096]; va_list va; - va_start(va, str); - int len = vseprintf(buf, lastof(buf), str, va); + char *output = str_vfmt(str, va); va_end(va); - char *p = MallocT(len + 1); - memcpy(p, buf, len + 1); - return p; + return output; } /** @@ -379,20 +355,6 @@ bool IsValidChar(WChar key, CharSetFilter afilter) } #ifdef WIN32 -/* Since version 3.14, MinGW Runtime has snprintf() and vsnprintf() conform to C99 but it's not the case for older versions */ -#if (__MINGW32_MAJOR_VERSION < 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 14)) -int CDECL snprintf(char *str, size_t size, const char *format, ...) -{ - va_list ap; - int ret; - - va_start(ap, format); - ret = vsnprintf(str, size, format, ap); - va_end(ap); - return ret; -} -#endif /* MinGW Runtime < 3.14 */ - #ifdef _MSC_VER /** * Almost POSIX compliant implementation of \c vsnprintf for VC compiler. @@ -572,16 +534,6 @@ size_t Utf8TrimString(char *s, size_t maxlen) return length; } -#ifdef DEFINE_STRNDUP -char *strndup(const char *s, size_t len) -{ - len = ttd_strnlen(s, len); - char *tmp = CallocT(len + 1); - memcpy(tmp, s, len); - return tmp; -} -#endif /* DEFINE_STRNDUP */ - #ifdef DEFINE_STRCASESTR char *strcasestr(const char *haystack, const char *needle) { @@ -608,7 +560,7 @@ char *strcasestr(const char *haystack, const char *needle) */ static const char *SkipGarbage(const char *str) { - while (*str != '\0' && (*str < 'A' || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++; + while (*str != '\0' && (*str < '0' || IsInsideMM(*str, ';', '@' + 1) || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++; return str; } @@ -662,7 +614,6 @@ class IcuStringIterator : public StringIterator { icu::BreakIterator *char_itr; ///< ICU iterator for characters. icu::BreakIterator *word_itr; ///< ICU iterator for words. - const char *string; ///< Iteration string in UTF-8. SmallVector utf16_str; ///< UTF-16 copy of the string. SmallVector utf16_to_utf8; ///< Mapping from UTF-16 code point position to index in the UTF-8 source string. @@ -686,7 +637,7 @@ public: virtual void SetString(const char *s) { - this->string = s; + const char *string_base = s; /* Unfortunately current ICU versions only provide rudimentary support * for word break iterators (especially for CJK languages) in combination @@ -696,10 +647,10 @@ public: this->utf16_to_utf8.Clear(); while (*s != '\0') { - size_t idx = s - this->string; + size_t idx = s - string_base; WChar c = Utf8Consume(&s); - if (c < 0x10000) { + if (c < 0x10000) { *this->utf16_str.Append() = (UChar)c; } else { /* Make a surrogate pair. */ @@ -710,7 +661,7 @@ public: *this->utf16_to_utf8.Append() = idx; } *this->utf16_str.Append() = '\0'; - *this->utf16_to_utf8.Append() = s - this->string; + *this->utf16_to_utf8.Append() = s - string_base; UText text = UTEXT_INITIALIZER; UErrorCode status = U_ZERO_ERROR; @@ -752,7 +703,14 @@ public: /* The ICU word iterator considers both the start and the end of a word a valid * break point, but we only want word starts. Move to the next location in * case the new position points to whitespace. */ - while (pos != icu::BreakIterator::DONE && IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) pos = this->word_itr->next(); + while (pos != icu::BreakIterator::DONE && + IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) { + int32_t new_pos = this->word_itr->next(); + /* Don't set it to DONE if it was valid before. Otherwise we'll return END + * even though the iterator wasn't at the end of the string before. */ + if (new_pos == icu::BreakIterator::DONE) break; + pos = new_pos; + } this->char_itr->isBoundary(pos); break; @@ -777,7 +735,14 @@ public: /* The ICU word iterator considers both the start and the end of a word a valid * break point, but we only want word starts. Move to the previous location in * case the new position points to whitespace. */ - while (pos != icu::BreakIterator::DONE && IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) pos = this->word_itr->previous(); + while (pos != icu::BreakIterator::DONE && + IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) { + int32_t new_pos = this->word_itr->previous(); + /* Don't set it to DONE if it was valid before. Otherwise we'll return END + * even though the iterator wasn't at the start of the string before. */ + if (new_pos == icu::BreakIterator::DONE) break; + pos = new_pos; + } this->char_itr->isBoundary(pos); break; @@ -805,7 +770,7 @@ class DefaultStringIterator : public StringIterator size_t cur_pos; ///< Current iteration position. public: - DefaultStringIterator() : string(NULL) + DefaultStringIterator() : string(NULL), len(0), cur_pos(0) { } diff --git a/src/string_func.h b/src/string_func.h index d7056f1be1..dd9b42600d 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -26,18 +26,20 @@ #ifndef STRING_FUNC_H #define STRING_FUNC_H +#include + #include "core/bitmath_func.hpp" #include "string_type.h" -void ttd_strlcat(char *dst, const char *src, size_t size); -void ttd_strlcpy(char *dst, const char *src, size_t size); - char *strecat(char *dst, const char *src, const char *last); char *strecpy(char *dst, const char *src, const char *last); +char *stredup(const char *src, const char *last = NULL); int CDECL seprintf(char *str, const char *last, const char *format, ...) WARN_FORMAT(3, 4); +int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap); char *CDECL str_fmt(const char *str, ...) WARN_FORMAT(1, 2); +char *str_vfmt(const char *str, va_list ap); void str_validate(char *str, const char *last, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); void ValidateString(const char *str); @@ -248,14 +250,6 @@ static inline bool IsWhitespace(WChar c) #include #endif -/* strndup is a GNU extension */ -#if defined(_GNU_SOURCE) || (defined(__NetBSD_Version__) && 400000000 <= __NetBSD_Version__) || (defined(__FreeBSD_version) && 701101 <= __FreeBSD_version) || (defined(__DARWIN_C_LEVEL) && __DARWIN_C_LEVEL >= 200809L) -# undef DEFINE_STRNDUP -#else -# define DEFINE_STRNDUP -char *strndup(const char *s, size_t len); -#endif /* strndup is available */ - /* strcasestr is available for _GNU_SOURCE, BSD and some Apple */ #if defined(_GNU_SOURCE) || (defined(__BSD_VISIBLE) && __BSD_VISIBLE) || (defined(__APPLE__) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))) || defined(_NETBSD_SOURCE) # undef DEFINE_STRCASESTR diff --git a/src/stringfilter.cpp b/src/stringfilter.cpp index e021c57b57..6045c19ef4 100644 --- a/src/stringfilter.cpp +++ b/src/stringfilter.cpp @@ -15,6 +15,8 @@ #include "stringfilter_type.h" #include "gfx_func.h" +#include "safeguards.h" + static const WChar STATE_WHITESPACE = ' '; static const WChar STATE_WORD = 'w'; static const WChar STATE_QUOTE1 = '\''; @@ -32,7 +34,7 @@ void StringFilter::SetFilterTerm(const char *str) assert(str != NULL); - char *dest = (char *)malloc(strlen(str) + 1); + char *dest = MallocT(strlen(str) + 1); this->filter_buffer = dest; WChar state = STATE_WHITESPACE; diff --git a/src/strings.cpp b/src/strings.cpp index bf65faf8c0..9c88b70c77 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -13,7 +13,6 @@ #include "currency.h" #include "station_base.h" #include "town.h" -#include "screenshot.h" #include "waypoint_base.h" #include "depot_base.h" #include "industry.h" @@ -36,11 +35,14 @@ #include "window_func.h" #include "debug.h" #include "game/game_text.hpp" +#include "network/network_content_gui.h" #include #include "table/strings.h" #include "table/control_codes.h" +#include "safeguards.h" + char _config_language_file[MAX_PATH]; ///< The file (name) stored in the configuration. LanguageList _languages; ///< The actual list of language meta data. const LanguageMetadata *_current_language = NULL; ///< The currently loaded language. @@ -163,7 +165,7 @@ void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num) MemCpyT(dst, _global_string_params.GetPointerToOffset(0), num); for (int i = 0; i < num; i++) { if (_global_string_params.HasTypeInformation() && _global_string_params.GetTypeAtOffset(i) == SCC_RAW_STRING_POINTER) { - strings[i] = strdup((const char *)(size_t)_global_string_params.GetParam(i)); + strings[i] = stredup((const char *)(size_t)_global_string_params.GetParam(i)); dst[i] = (size_t)strings[i]; } else { strings[i] = NULL; @@ -192,8 +194,8 @@ const char *GetStringPtr(StringID string) { switch (GB(string, TAB_COUNT_OFFSET, TAB_COUNT_BITS)) { case GAME_TEXT_TAB: return GetGameStringPtr(GB(string, TAB_SIZE_OFFSET, TAB_SIZE_BITS)); - /* GetGRFStringPtr doesn't handle 0xD4xx ids, we need to convert those to 0xD0xx. */ - case 26: return GetStringPtr(GetGRFStringID(0, 0xD000 + GB(string, TAB_SIZE_OFFSET, 10))); + /* 0xD0xx and 0xD4xx IDs have been converted earlier. */ + case 26: NOT_REACHED(); case 28: return GetGRFStringPtr(GB(string, TAB_SIZE_OFFSET, TAB_SIZE_BITS)); case 29: return GetGRFStringPtr(GB(string, TAB_SIZE_OFFSET, TAB_SIZE_BITS) + 0x0800); case 30: return GetGRFStringPtr(GB(string, TAB_SIZE_OFFSET, TAB_SIZE_BITS) + 0x1000); @@ -233,18 +235,16 @@ char *GetStringWithArgs(char *buffr, StringID string, StringParameters *args, co case 15: /* Old table for custom names. This is no longer used */ - error("Incorrect conversion of custom name string."); + if (!game_script) { + error("Incorrect conversion of custom name string."); + } + break; case GAME_TEXT_TAB: return FormatString(buffr, GetGameStringPtr(index), args, last, case_index, true); case 26: - /* Include string within newgrf text (format code 81) */ - if (HasBit(index, 10)) { - StringID string = GetGRFStringID(0, 0xD000 + GB(index, 0, 10)); - return GetStringWithArgs(buffr, string, args, last, case_index); - } - break; + NOT_REACHED(); case 28: return FormatString(buffr, GetGRFStringPtr(index), args, last, case_index); @@ -254,9 +254,6 @@ char *GetStringWithArgs(char *buffr, StringID string, StringParameters *args, co case 30: return FormatString(buffr, GetGRFStringPtr(index + 0x1000), args, last, case_index); - - case 31: - NOT_REACHED(); } if (index >= _langtab_num[tab]) { @@ -277,14 +274,6 @@ char *GetString(char *buffr, StringID string, const char *last) } -char *InlineString(char *buf, StringID string) -{ - buf += Utf8Encode(buf, SCC_STRING_ID); - buf += Utf8Encode(buf, string); - return buf; -} - - /** * This function is used to "bind" a C string to a OpenTTD dparam slot. * @param n slot of the string @@ -411,7 +400,7 @@ static char *FormatBytes(char *buff, int64 number, const char *last) } assert(id < lengthof(iec_prefixes)); - buff += seprintf(buff, last, " %sB", iec_prefixes[id]); + buff += seprintf(buff, last, NBSP "%sB", iec_prefixes[id]); return buff; } @@ -421,7 +410,7 @@ static char *FormatYmdString(char *buff, Date date, const char *last, uint case_ YearMonthDay ymd; ConvertDateToYMD(date, &ymd); - int64 args[] = {ymd.day + STR_ORDINAL_NUMBER_1ST - 1, STR_MONTH_ABBREV_JAN + ymd.month, ymd.year}; + int64 args[] = {ymd.day + STR_DAY_NUMBER_1ST - 1, STR_MONTH_ABBREV_JAN + ymd.month, ymd.year}; StringParameters tmp_params(args); return FormatString(buff, GetStringPtr(STR_FORMAT_DATE_LONG), &tmp_params, last, case_index); } @@ -444,8 +433,8 @@ static char *FormatTinyOrISODate(char *buff, Date date, StringID str, const char char day[3]; char month[3]; /* We want to zero-pad the days and months */ - snprintf(day, lengthof(day), "%02i", ymd.day); - snprintf(month, lengthof(month), "%02i", ymd.month + 1); + seprintf(day, lastof(day), "%02i", ymd.day); + seprintf(month, lastof(month), "%02i", ymd.month + 1); int64 args[] = {(int64)(size_t)day, (int64)(size_t)month, ymd.year}; StringParameters tmp_params(args); @@ -480,10 +469,10 @@ static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, Money n * and 1 000 M is inconsistent, so always use 1 000 M. */ if (number >= 1000000000 - 500) { number = (number + 500000) / 1000000; - multiplier = "M"; + multiplier = NBSP "M"; } else if (number >= 1000000) { number = (number + 500) / 1000; - multiplier = "k"; + multiplier = NBSP "k"; } } @@ -801,7 +790,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg /* We have to restore the original offset here to to read the correct values. */ args->offset = orig_offset; } - WChar b; + WChar b = '\0'; uint next_substr_case_index = 0; char *buf_start = buff; std::stack str_stack; @@ -817,7 +806,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { /* We need to pass some stuff as it might be modified; oh boy. */ //todo: should argve be passed here too? - b = RemapNewGRFStringControlCode(b, buf_start, &buff, &str, (int64 *)args->GetDataPointer(), dry_run); + b = RemapNewGRFStringControlCode(b, buf_start, &buff, &str, (int64 *)args->GetDataPointer(), args->GetDataLeft(), dry_run); if (b == 0) continue; } @@ -886,7 +875,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg bool lookup = (l == SCC_ENCODED); if (lookup) s += len; - param = (int32)strtoul(s, &p, 16); + param = strtoull(s, &p, 16); if (lookup) { if (param >= TAB_SIZE) { @@ -900,7 +889,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg sub_args.SetParam(i++, param); } else { - char *g = strdup(s); + char *g = stredup(s); g[p - s] = '\0'; sub_args_need_free[i] = true; @@ -1017,11 +1006,6 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg buff = strecpy(buff, _openttd_revision, last); break; - case SCC_STRING_ID: // {STRINL} - if (game_script) break; - buff = GetStringWithArgs(buff, Utf8Consume(&str), args, last); - break; - case SCC_RAW_STRING_POINTER: { // {RAW_STRING} if (game_script) break; const char *str = (const char *)(size_t)args->GetInt64(SCC_RAW_STRING_POINTER); @@ -1035,7 +1019,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg /* WARNING. It's prohibited for the included string to consume any arguments. * For included strings that consume argument, you should use STRING1, STRING2 etc. * To debug stuff you can set argv to NULL and it will tell you */ - StringParameters tmp_params(args->GetDataPointer(), args->num_param - args->offset, NULL); + StringParameters tmp_params(args->GetDataPointer(), args->GetDataLeft(), NULL); buff = GetStringWithArgs(buff, str, &tmp_params, last, next_substr_case_index, game_script); next_substr_case_index = 0; break; @@ -1052,7 +1036,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg StringID str = args->GetInt32(b); if (game_script && GB(str, TAB_COUNT_OFFSET, TAB_COUNT_BITS) != GAME_TEXT_TAB) break; uint size = b - SCC_STRING1 + 1; - if (game_script && size > args->num_param - args->offset) { + if (game_script && size > args->GetDataLeft()) { buff = strecat(buff, "(too many parameters)", last); } else { StringParameters sub_args(*args, size); @@ -1489,7 +1473,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg StringID str; switch (v->type) { - default: NOT_REACHED(); + default: str = STR_INVALID_VEHICLE; break; case VEH_TRAIN: str = STR_SV_TRAIN_NAME; break; case VEH_ROAD: str = STR_SV_ROAD_VEHICLE_NAME; break; case VEH_SHIP: str = STR_SV_SHIP_NAME; break; @@ -1698,12 +1682,6 @@ static char *GetSpecialNameString(char *buff, int ind, StringParameters *args, c return buff; } - /* screenshot format name? */ - if (IsInsideMM(ind, (SPECSTR_SCREENSHOT_START - 0x70E4), (SPECSTR_SCREENSHOT_END - 0x70E4) + 1)) { - int i = ind - (SPECSTR_SCREENSHOT_START - 0x70E4); - return strecpy(buff, GetScreenshotFormatDesc(i), last); - } - NOT_REACHED(); } @@ -1763,7 +1741,12 @@ bool ReadLanguagePack(const LanguageMetadata *lang) uint count = 0; for (uint i = 0; i < TAB_COUNT; i++) { - uint num = lang_pack->offsets[i]; + uint16 num = lang_pack->offsets[i]; + if (num > TAB_SIZE) { + free(lang_pack); + return false; + } + _langtab_start[i] = count; _langtab_num[i] = num; count += num; @@ -1832,6 +1815,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang) SortIndustryTypes(); BuildIndustriesLegend(); SortNetworkLanguages(); + BuildContentTypeStringList(); InvalidateWindowClassesData(WC_BUILD_VEHICLE); // Build vehicle window. InvalidateWindowClassesData(WC_TRAINS_LIST); // Train group window. InvalidateWindowClassesData(WC_ROADVEH_LIST); // Road vehicle group window. @@ -1882,7 +1866,7 @@ int CDECL StringIDSorter(const StringID *a, const StringID *b) GetString(stra, *a, lastof(stra)); GetString(strb, *b, lastof(strb)); - return strcmp(stra, strb); + return strnatcmp(stra, strb); } /** @@ -1965,7 +1949,7 @@ void InitializeLanguagePacks() FOR_ALL_SEARCHPATHS(sp) { char path[MAX_PATH]; - FioAppendDirectory(path, lengthof(path), sp, LANG_DIR); + FioAppendDirectory(path, lastof(path), sp, LANG_DIR); GetLanguageList(path); } if (_languages.Length() == 0) usererror("No available language packs (invalid versions?)"); @@ -2135,7 +2119,7 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher) * properly we have to set the colour of the string, otherwise we end up with a lot of artifacts. * The colour 'character' might change in the future, so for safety we just Utf8 Encode it into * the string, which takes exactly three characters, so it replaces the "XXX" with the colour marker. */ - static char *err_str = strdup("XXXThe current font is missing some of the characters used in the texts for this language. Read the readme to see how to solve this."); + static char *err_str = stredup("XXXThe current font is missing some of the characters used in the texts for this language. Read the readme to see how to solve this."); Utf8Encode(err_str, SCC_YELLOW); SetDParamStr(0, err_str); ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_WARNING); @@ -2163,7 +2147,7 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher) * the colour marker. */ if (_current_text_dir != TD_LTR) { - static char *err_str = strdup("XXXThis version of OpenTTD does not support right-to-left languages. Recompile with icu enabled."); + static char *err_str = stredup("XXXThis version of OpenTTD does not support right-to-left languages. Recompile with icu enabled."); Utf8Encode(err_str, SCC_YELLOW); SetDParamStr(0, err_str); ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_ERROR); diff --git a/src/strings_func.h b/src/strings_func.h index dbdbf2842e..2c7809d020 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -56,7 +56,7 @@ public: offset(0), num_param(size) { - assert(size <= parent.num_param - parent.offset); + assert(size <= parent.GetDataLeft()); if (parent.type == NULL) { this->type = NULL; } else { @@ -89,6 +89,12 @@ public: return &this->data[this->offset]; } + /** Return the amount of elements which can still be read. */ + uint GetDataLeft() const + { + return this->num_param - this->offset; + } + /** Get a pointer to a specific element in the data array. */ uint64 *GetPointerToOffset(uint offset) const { @@ -124,7 +130,6 @@ public: }; extern StringParameters _global_string_params; -char *InlineString(char *buf, StringID string); char *GetString(char *buffr, StringID string, const char *last); char *GetStringWithArgs(char *buffr, StringID string, StringParameters *args, const char *last, uint case_index = 0, bool game_script = false); const char *GetStringPtr(StringID string); diff --git a/src/strings_type.h b/src/strings_type.h index 35f22e5fc2..c6eebd54d8 100644 --- a/src/strings_type.h +++ b/src/strings_type.h @@ -69,10 +69,6 @@ enum SpecialStrings { /* reserve 32 strings for various screen resolutions */ SPECSTR_RESOLUTION_START = SPECSTR_LANGUAGE_END + 1, SPECSTR_RESOLUTION_END = SPECSTR_RESOLUTION_START + 0x1F, - - /* reserve 32 strings for screenshot formats */ - SPECSTR_SCREENSHOT_START = SPECSTR_RESOLUTION_END + 1, - SPECSTR_SCREENSHOT_END = SPECSTR_SCREENSHOT_START + 0x1F, }; #endif /* STRINGS_TYPE_H */ diff --git a/src/subsidy.cpp b/src/subsidy.cpp index c69b2b23df..62b463ced3 100644 --- a/src/subsidy.cpp +++ b/src/subsidy.cpp @@ -24,9 +24,12 @@ #include "core/random_func.hpp" #include "game/game.hpp" #include "command_func.h" +#include "string_func.h" #include "table/strings.h" +#include "safeguards.h" + SubsidyPool _subsidy_pool("Subsidy"); ///< Pool for the subsidies. INSTANTIATE_POOL_METHODS(Subsidy) @@ -45,7 +48,7 @@ void Subsidy::AwardTo(CompanyID company) SetDParam(0, company); GetString(company_name, STR_COMPANY_NAME, lastof(company_name)); - char *cn = strdup(company_name); + char *cn = stredup(company_name); /* Add a news item */ Pair reftype = SetupSubsidyDecodeParam(this, false); @@ -348,7 +351,10 @@ bool FindSubsidyTownCargoRoute() } /* Avoid using invalid NewGRF cargoes. */ - if (!CargoSpec::Get(cid)->IsValid()) return false; + if (!CargoSpec::Get(cid)->IsValid() || + _settings_game.linkgraph.GetDistributionType(cid) != DT_MANUAL) { + return false; + } /* Quit if the percentage transported is large enough. */ if (src_town->GetPercentTransported(cid) > SUBSIDY_MAX_PCT_TRANSPORTED) return false; @@ -388,8 +394,13 @@ bool FindSubsidyIndustryCargoRoute() } /* Quit if no production in this industry - * or if the pct transported is already large enough */ - if (total == 0 || trans > SUBSIDY_MAX_PCT_TRANSPORTED || cid == CT_INVALID) return false; + * or if the pct transported is already large enough + * or if the cargo is automatically distributed */ + if (total == 0 || trans > SUBSIDY_MAX_PCT_TRANSPORTED || + cid == CT_INVALID || + _settings_game.linkgraph.GetDistributionType(cid) != DT_MANUAL) { + return false; + } SourceID src = src_ind->index; @@ -480,7 +491,16 @@ void SubsidyMonthlyLoop() } } - if (modified) RebuildSubsidisedSourceAndDestinationCache(); + if (modified) { + RebuildSubsidisedSourceAndDestinationCache(); + } else if (_settings_game.linkgraph.distribution_pax != DT_MANUAL && + _settings_game.linkgraph.distribution_mail != DT_MANUAL && + _settings_game.linkgraph.distribution_armoured != DT_MANUAL && + _settings_game.linkgraph.distribution_default != DT_MANUAL) { + /* Return early if there are no manually distributed cargoes and if we + * don't need to invalidate the subsidies window. */ + return; + } bool passenger_subsidy = false; bool town_subsidy = false; @@ -488,7 +508,7 @@ void SubsidyMonthlyLoop() int random_chance = RandomRange(16); - if (random_chance < 2) { + if (random_chance < 2 && _settings_game.linkgraph.distribution_pax == DT_MANUAL) { /* There is a 1/8 chance each month of generating a passenger subsidy. */ int n = 1000; diff --git a/src/subsidy_gui.cpp b/src/subsidy_gui.cpp index 298a8bb571..04e5ae262b 100644 --- a/src/subsidy_gui.cpp +++ b/src/subsidy_gui.cpp @@ -25,6 +25,8 @@ #include "table/strings.h" +#include "safeguards.h" + struct SubsidyListWindow : Window { Scrollbar *vscroll; diff --git a/src/table/build_industry.h b/src/table/build_industry.h index 9c9a28d48f..5ae93bc7ed 100644 --- a/src/table/build_industry.h +++ b/src/table/build_industry.h @@ -254,7 +254,6 @@ static const IndustryTileTable _tile_table_oil_rig_0[] = { MK(1, 0, 26), MK(1, 1, 27), MK(1, 2, 28), - MK(-4, -5, 255), MK(-4, -4, 255), MK(-4, -3, 255), MK(-4, -2, 255), @@ -265,9 +264,10 @@ static const IndustryTileTable _tile_table_oil_rig_0[] = { MK(-4, 3, 255), MK(-4, 4, 255), MK(-4, 5, 255), - MK(-3, 5, 255), - MK(-2, 5, 255), - MK(-1, 5, 255), + MK(-4, 6, 255), + MK(-3, 6, 255), + MK(-2, 6, 255), + MK(-1, 6, 255), MK(0, 6, 255), MK(1, 6, 255), MK(2, 6, 255), @@ -289,9 +289,9 @@ static const IndustryTileTable _tile_table_oil_rig_0[] = { MK(2, -4, 255), MK(1, -4, 255), MK(0, -4, 255), - MK(-1, -5, 255), - MK(-2, -5, 255), - MK(-3, -5, 255), + MK(-1, -4, 255), + MK(-2, -4, 255), + MK(-3, -4, 255), MK(2, 0, 255), MKEND }; diff --git a/src/table/company_settings.ini b/src/table/company_settings.ini index 71b95cc393..5c839c2af7 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -18,8 +18,8 @@ static const SettingDesc _company_settings[] = { [post-amble] }; [templates] -SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDT_END = SDT_END() [defaults] @@ -34,6 +34,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} diff --git a/src/table/control_codes.h b/src/table/control_codes.h index 2c616ab9d5..81f9950d5f 100644 --- a/src/table/control_codes.h +++ b/src/table/control_codes.h @@ -85,7 +85,6 @@ enum StringControlCode { SCC_HEX, SCC_BYTES, - SCC_STRING_ID, SCC_RAW_STRING_POINTER, SCC_PLURAL_LIST, SCC_GENDER_LIST, @@ -141,6 +140,9 @@ enum StringControlCode { SCC_NEWGRF_PRINT_WORD_POWER, ///< Read 2 bytes from the stack as unsigned power SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT, ///< Read 2 bytes from the stack as short signed volume SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT, ///< Read 2 bytes from the stack as short unsigned weight + SCC_NEWGRF_PRINT_WORD_CARGO_LONG, ///< Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount + SCC_NEWGRF_PRINT_WORD_CARGO_SHORT, ///< Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount + SCC_NEWGRF_PRINT_WORD_CARGO_TINY, ///< Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount SCC_NEWGRF_PUSH_WORD, ///< Pushes 2 bytes onto the stack SCC_NEWGRF_UNPRINT, ///< "Unprints" the given number of bytes from the string SCC_NEWGRF_DISCARD_WORD, ///< Discard the next two bytes diff --git a/src/table/currency_settings.ini b/src/table/currency_settings.ini index dede8b0fb7..3c476ee5df 100644 --- a/src/table/currency_settings.ini +++ b/src/table/currency_settings.ini @@ -11,9 +11,9 @@ static const SettingDesc _currency_settings[] = { [post-amble] }; [templates] -SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_CHR = SDT_CHR($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_CHR = SDT_CHR($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDT_END = SDT_END() [defaults] @@ -28,6 +28,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} diff --git a/src/table/gameopt_settings.ini b/src/table/gameopt_settings.ini index baf7c35423..9e5fa3d0ff 100644 --- a/src/table/gameopt_settings.ini +++ b/src/table/gameopt_settings.ini @@ -29,25 +29,25 @@ static const char *_settings_profiles = "easy|medium|hard"; static const char *_news_display = "off|summarized|full"; static const SettingDesc _gameopt_settings[] = { - /* In version 4 a new difficulty setting has been added to the difficulty settings, - * town attitude towards demolishing. Needs special handling because some dimwit thought - * it funny to have the GameDifficulty struct be an array while it is a struct of - * same-sized members - * XXX - To save file-space and since values are never bigger than about 10? only - * save the first 16 bits in the savegame. Question is why the values are still int32 - * and why not byte for example? - * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack - * for savegames version 0 - though it is an array, it has to go through the byteswap process */ +/* In version 4 a new difficulty setting has been added to the difficulty settings, + * town attitude towards demolishing. Needs special handling because some dimwit thought + * it funny to have the GameDifficulty struct be an array while it is a struct of + * same-sized members + * XXX - To save file-space and since values are never bigger than about 10? only + * save the first 16 bits in the savegame. Question is why the values are still int32 + * and why not byte for example? + * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack + * for savegames version 0 - though it is an array, it has to go through the byteswap process */ [post-amble] }; [templates] -SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, $var, $length, $def, $min, $max, $interval, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_NULL = SDT_NULL($length, $from, $to), -SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat), -SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, $var, $length, $def, $min, $max, $interval, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_NULL = SDT_NULL($length, $from, $to, $extver), +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat, $extver, NULL), +SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDT_END = SDT_END() [defaults] @@ -62,6 +62,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} diff --git a/src/table/heightmap_colours.h b/src/table/heightmap_colours.h new file mode 100644 index 0000000000..42b99eeca1 --- /dev/null +++ b/src/table/heightmap_colours.h @@ -0,0 +1,344 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file heightmap_colours.h The colour tables for heightmaps. + */ + +/** Height map colours for the green colour scheme, ordered by height. */ +static const uint32 _green_map_heights[] = { + MKCOLOUR(0x59595958), + MKCOLOUR(0x59595958), + MKCOLOUR(0x59595959), + MKCOLOUR(0x5959595A), + MKCOLOUR(0x59595A59), + MKCOLOUR(0x59595A5A), + MKCOLOUR(0x595A5959), + MKCOLOUR(0x595A595A), + MKCOLOUR(0x595A5A59), + MKCOLOUR(0x595A5A5A), + MKCOLOUR(0x5A595959), + MKCOLOUR(0x5A59595A), + MKCOLOUR(0x5A595A59), + MKCOLOUR(0x5A595A5A), + MKCOLOUR(0x5A5A5959), + MKCOLOUR(0x5A5A595A), + MKCOLOUR(0x5A5A5A59), + MKCOLOUR(0x5A5A5A5A), + MKCOLOUR(0x5A5A5A5B), + MKCOLOUR(0x5A5A5B5A), + MKCOLOUR(0x5A5A5B5B), + MKCOLOUR(0x5A5B5A5A), + MKCOLOUR(0x5A5B5A5B), + MKCOLOUR(0x5A5B5B5A), + MKCOLOUR(0x5A5B5B5B), + MKCOLOUR(0x5B5A5A5A), + MKCOLOUR(0x5B5A5A5B), + MKCOLOUR(0x5B5A5B5A), + MKCOLOUR(0x5B5A5B5B), + MKCOLOUR(0x5B5B5A5A), + MKCOLOUR(0x5B5B5A5B), + MKCOLOUR(0x5B5B5B5B), + MKCOLOUR(0x5B5B5B5C), + MKCOLOUR(0x5B5B5C5B), + MKCOLOUR(0x5B5B5C5C), + MKCOLOUR(0x5B5C5B5B), + MKCOLOUR(0x5B5C5B5C), + MKCOLOUR(0x5B5C5C5B), + MKCOLOUR(0x5B5C5C5C), + MKCOLOUR(0x5C5B5B5B), + MKCOLOUR(0x5C5B5B5C), + MKCOLOUR(0x5C5B5C5B), + MKCOLOUR(0x5C5B5C5C), + MKCOLOUR(0x5C5C5B5B), + MKCOLOUR(0x5C5C5B5C), + MKCOLOUR(0x5C5C5C5C), + MKCOLOUR(0x5C5C5C5D), + MKCOLOUR(0x5C5C5D5C), + MKCOLOUR(0x5C5C5D5D), + MKCOLOUR(0x5C5D5C5C), + MKCOLOUR(0x5C5D5C5D), + MKCOLOUR(0x5C5D5D5C), + MKCOLOUR(0x5C5D5D5D), + MKCOLOUR(0x5D5C5C5C), + MKCOLOUR(0x5D5C5C5D), + MKCOLOUR(0x5D5C5D5C), + MKCOLOUR(0x5D5C5D5D), + MKCOLOUR(0x5D5D5C5C), + MKCOLOUR(0x5D5D5C5D), + MKCOLOUR(0x5D5D5D5D), + MKCOLOUR(0x5D5D5D5E), + MKCOLOUR(0x5D5D5E5D), + MKCOLOUR(0x5D5D5E5E), + MKCOLOUR(0x5D5E5D5D), + MKCOLOUR(0x5D5E5D5E), + MKCOLOUR(0x5D5E5E5D), + MKCOLOUR(0x5D5E5E5E), + MKCOLOUR(0x5E5D5D5D), + MKCOLOUR(0x5E5D5D5E), + MKCOLOUR(0x5E5D5E5D), + MKCOLOUR(0x5E5D5E5E), + MKCOLOUR(0x5E5D5D5D), + MKCOLOUR(0x5E5D5D5E), + MKCOLOUR(0x5E5E5E5E), + MKCOLOUR(0x5E5E5E5F), + MKCOLOUR(0x5E5E5F5E), + MKCOLOUR(0x5E5E5F5F), + MKCOLOUR(0x5E5F5E5E), + MKCOLOUR(0x5E5F5E5F), + MKCOLOUR(0x5E5F5F5E), + MKCOLOUR(0x5E5F5F5F), + MKCOLOUR(0x5F5E5E5E), + MKCOLOUR(0x5F5E5E5F), + MKCOLOUR(0x5F5E5F5E), + MKCOLOUR(0x5F5E5F5F), + MKCOLOUR(0x5F5F5E5E), + MKCOLOUR(0x5F5F5E5F), + MKCOLOUR(0x5F5F5F5F), + MKCOLOUR(0x5F5F5F1F), + MKCOLOUR(0x5F5F1F5F), + MKCOLOUR(0x5F5F1F1F), + MKCOLOUR(0x5F1F5F1F), + MKCOLOUR(0x5F1F1F1F), + MKCOLOUR(0x1F5F5F5F), + MKCOLOUR(0x1F5F5F1F), + MKCOLOUR(0x1F5F1F5F), + MKCOLOUR(0x1F5F1F1F), + MKCOLOUR(0x1F1F5F5F), + MKCOLOUR(0x1F1F5F1F), + MKCOLOUR(0x1F1F1F5F), + MKCOLOUR(0x1F1F1F1F), + MKCOLOUR(0x1F1F1F27), + MKCOLOUR(0x1F1F271F), + MKCOLOUR(0x1F1F2727), + MKCOLOUR(0x1F271F1F), + MKCOLOUR(0x1F271F27), + MKCOLOUR(0x1F272727), + MKCOLOUR(0x271F1F1F), + MKCOLOUR(0x271F1F27), + MKCOLOUR(0x271F271F), + MKCOLOUR(0x271F2727), + MKCOLOUR(0x27271F1F), + MKCOLOUR(0x27271F27), + MKCOLOUR(0x2727271F), + MKCOLOUR(0x27272727), +}; + +/** Height map colours for the dark green colour scheme, ordered by height. */ +static const uint32 _dark_green_map_heights[] = { + MKCOLOUR(0x60606060), + MKCOLOUR(0x60606061), + MKCOLOUR(0x60606160), + MKCOLOUR(0x60606161), + MKCOLOUR(0x60616060), + MKCOLOUR(0x60616061), + MKCOLOUR(0x60616160), + MKCOLOUR(0x60616161), + MKCOLOUR(0x61606060), + MKCOLOUR(0x61606061), + MKCOLOUR(0x61606160), + MKCOLOUR(0x61606161), + MKCOLOUR(0x61616060), + MKCOLOUR(0x61616061), + MKCOLOUR(0x61616160), + MKCOLOUR(0x61616161), + MKCOLOUR(0x61616162), + MKCOLOUR(0x61616261), + MKCOLOUR(0x61616262), + MKCOLOUR(0x61626161), + MKCOLOUR(0x61626162), + MKCOLOUR(0x61626261), + MKCOLOUR(0x61626262), + MKCOLOUR(0x62616161), + MKCOLOUR(0x62616162), + MKCOLOUR(0x62616261), + MKCOLOUR(0x62616262), + MKCOLOUR(0x62626161), + MKCOLOUR(0x62626162), + MKCOLOUR(0x62626261), + MKCOLOUR(0x62626262), + MKCOLOUR(0x62626263), + MKCOLOUR(0x62626362), + MKCOLOUR(0x62626363), + MKCOLOUR(0x62636262), + MKCOLOUR(0x62636263), + MKCOLOUR(0x62636362), + MKCOLOUR(0x62636363), + MKCOLOUR(0x63626262), + MKCOLOUR(0x63626263), + MKCOLOUR(0x63626362), + MKCOLOUR(0x63626363), + MKCOLOUR(0x63636262), + MKCOLOUR(0x63636263), + MKCOLOUR(0x63636362), + MKCOLOUR(0x63636363), + MKCOLOUR(0x63636364), + MKCOLOUR(0x63636463), + MKCOLOUR(0x63636464), + MKCOLOUR(0x63646363), + MKCOLOUR(0x63646364), + MKCOLOUR(0x63646463), + MKCOLOUR(0x63646464), + MKCOLOUR(0x64636363), + MKCOLOUR(0x64636364), + MKCOLOUR(0x64636463), + MKCOLOUR(0x64636464), + MKCOLOUR(0x64646363), + MKCOLOUR(0x64646364), + MKCOLOUR(0x64646463), + MKCOLOUR(0x64646464), + MKCOLOUR(0x64646465), + MKCOLOUR(0x64646564), + MKCOLOUR(0x64646565), + MKCOLOUR(0x64656464), + MKCOLOUR(0x64656465), + MKCOLOUR(0x64656564), + MKCOLOUR(0x64656565), + MKCOLOUR(0x65646464), + MKCOLOUR(0x65646465), + MKCOLOUR(0x65646564), + MKCOLOUR(0x65646565), + MKCOLOUR(0x65656464), + MKCOLOUR(0x65656465), + MKCOLOUR(0x65656564), + MKCOLOUR(0x65656565), + MKCOLOUR(0x65656566), + MKCOLOUR(0x65656665), + MKCOLOUR(0x65656666), + MKCOLOUR(0x65666565), + MKCOLOUR(0x65666566), + MKCOLOUR(0x65666665), + MKCOLOUR(0x65666666), + MKCOLOUR(0x66656565), + MKCOLOUR(0x66656566), + MKCOLOUR(0x66656665), + MKCOLOUR(0x66656666), + MKCOLOUR(0x66666565), + MKCOLOUR(0x66666566), + MKCOLOUR(0x66666665), + MKCOLOUR(0x66666666), + MKCOLOUR(0x66666667), + MKCOLOUR(0x66666766), + MKCOLOUR(0x66666767), + MKCOLOUR(0x66676666), + MKCOLOUR(0x66676667), + MKCOLOUR(0x66676766), + MKCOLOUR(0x66676767), + MKCOLOUR(0x67676767), +}; + +/** Height map colours for the violet colour scheme, ordered by height. */ +static const uint32 _violet_map_heights[] = { + MKCOLOUR(0x80808080), + MKCOLOUR(0x80808081), + MKCOLOUR(0x80808180), + MKCOLOUR(0x80808181), + MKCOLOUR(0x80818080), + MKCOLOUR(0x80818081), + MKCOLOUR(0x80818180), + MKCOLOUR(0x80818181), + MKCOLOUR(0x81808080), + MKCOLOUR(0x81808081), + MKCOLOUR(0x81808180), + MKCOLOUR(0x81808181), + MKCOLOUR(0x81818080), + MKCOLOUR(0x81818081), + MKCOLOUR(0x81818180), + MKCOLOUR(0x81818181), + MKCOLOUR(0x81818182), + MKCOLOUR(0x81818281), + MKCOLOUR(0x81818282), + MKCOLOUR(0x81828181), + MKCOLOUR(0x81828182), + MKCOLOUR(0x81828281), + MKCOLOUR(0x81828282), + MKCOLOUR(0x82818181), + MKCOLOUR(0x82818182), + MKCOLOUR(0x82818281), + MKCOLOUR(0x82818282), + MKCOLOUR(0x82828181), + MKCOLOUR(0x82828182), + MKCOLOUR(0x82828281), + MKCOLOUR(0x82828282), + MKCOLOUR(0x82828283), + MKCOLOUR(0x82828382), + MKCOLOUR(0x82828383), + MKCOLOUR(0x82838282), + MKCOLOUR(0x82838283), + MKCOLOUR(0x82838382), + MKCOLOUR(0x82838383), + MKCOLOUR(0x83828282), + MKCOLOUR(0x83828283), + MKCOLOUR(0x83828382), + MKCOLOUR(0x83828383), + MKCOLOUR(0x83838282), + MKCOLOUR(0x83838283), + MKCOLOUR(0x83838382), + MKCOLOUR(0x83838383), + MKCOLOUR(0x83838384), + MKCOLOUR(0x83838483), + MKCOLOUR(0x83838484), + MKCOLOUR(0x83848383), + MKCOLOUR(0x83848384), + MKCOLOUR(0x83848483), + MKCOLOUR(0x83848484), + MKCOLOUR(0x84838383), + MKCOLOUR(0x84838384), + MKCOLOUR(0x84838483), + MKCOLOUR(0x84838484), + MKCOLOUR(0x84848383), + MKCOLOUR(0x84848384), + MKCOLOUR(0x84848483), + MKCOLOUR(0x84848484), + MKCOLOUR(0x84848485), + MKCOLOUR(0x84848584), + MKCOLOUR(0x84848585), + MKCOLOUR(0x84858484), + MKCOLOUR(0x84858485), + MKCOLOUR(0x84858584), + MKCOLOUR(0x84858585), + MKCOLOUR(0x85848484), + MKCOLOUR(0x85848485), + MKCOLOUR(0x85848584), + MKCOLOUR(0x85848585), + MKCOLOUR(0x85858484), + MKCOLOUR(0x85858485), + MKCOLOUR(0x85858584), + MKCOLOUR(0x85858585), + MKCOLOUR(0x85858586), + MKCOLOUR(0x85858685), + MKCOLOUR(0x85858686), + MKCOLOUR(0x85868585), + MKCOLOUR(0x85868586), + MKCOLOUR(0x85868685), + MKCOLOUR(0x85868686), + MKCOLOUR(0x85868585), + MKCOLOUR(0x85868586), + MKCOLOUR(0x85868685), + MKCOLOUR(0x85868686), + MKCOLOUR(0x86868585), + MKCOLOUR(0x86868586), + MKCOLOUR(0x86868685), + MKCOLOUR(0x86868686), + MKCOLOUR(0x86868687), + MKCOLOUR(0x86868786), + MKCOLOUR(0x86868787), + MKCOLOUR(0x86878686), + MKCOLOUR(0x86878687), + MKCOLOUR(0x86878786), + MKCOLOUR(0x86878787), + MKCOLOUR(0x87868686), + MKCOLOUR(0x87868687), + MKCOLOUR(0x87868786), + MKCOLOUR(0x87868787), + MKCOLOUR(0x87878686), + MKCOLOUR(0x87878687), + MKCOLOUR(0x87878786), + MKCOLOUR(0x87878787), +}; diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini index 1a2b5ef6b8..11197692c8 100644 --- a/src/table/misc_settings.ini +++ b/src/table/misc_settings.ini @@ -9,15 +9,18 @@ [pre-amble] extern char _config_language_file[MAX_PATH]; +static const char *_support8bppmodes = "no|system|hardware"; + static const SettingDescGlobVarList _misc_settings[] = { [post-amble] }; [templates] -SDTG_LIST = SDTG_LIST($name, $type, $length, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $guiflags, $var, $def, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_STR = SDTG_STR($name, $type, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDTG_LIST = SDTG_LIST($name, $type, $length, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $guiflags, $var, $def, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_STR = SDTG_STR($name, $type, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDTG_END = SDTG_END() [defaults] @@ -32,6 +35,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} @@ -48,6 +52,15 @@ var = _fullscreen def = false cat = SC_BASIC +[SDTG_OMANY] +name = ""support8bpp"" +type = SLE_UINT8 +var = _support8bpp +def = 0 +max = 2 +full = _support8bppmodes +cat = SC_BASIC + [SDTG_STR] name = ""graphicsset"" type = SLE_STRQ @@ -287,5 +300,14 @@ min = 0 max = UINT32_MAX cat = SC_EXPERT +[SDTG_VAR] +name = ""gui_zoom"" +type = SLE_UINT8 +var = _gui_zoom +def = ZOOM_LVL_OUT_4X +min = ZOOM_LVL_MIN +max = ZOOM_LVL_OUT_4X +cat = SC_BASIC + [SDTG_END] diff --git a/src/table/newgrf_debug_data.h b/src/table/newgrf_debug_data.h index 2f02b14043..c731409341 100644 --- a/src/table/newgrf_debug_data.h +++ b/src/table/newgrf_debug_data.h @@ -59,7 +59,12 @@ static const NIVariable _niv_vehicles[] = { NIV(0x48, "vehicle type info"), NIV(0x49, "year of construction"), NIV(0x4A, "current rail type info"), + NIV(0x4B, "long date of last service"), + NIV(0x4C, "current max speed"), + NIV(0x4D, "position in articulated vehicle"), NIV(0x60, "count vehicle id occurrences"), + // 0x61 not useful, since it requires register 0x10F + NIV(0x62, "Curvature/position difference to other vehicle"), NIV_END() }; @@ -74,7 +79,7 @@ class NIHVehicle : public NIHelper { /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { Vehicle *v = Vehicle::Get(index); - VehicleResolverObject ro(v->engine_type, v); + VehicleResolverObject ro(v->engine_type, v, VehicleResolverObject::WO_CACHED); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; @@ -92,8 +97,8 @@ static const NIFeature _nif_vehicle = { #define NICS(cb_id, bit) NIC(cb_id, StationSpec, callback_mask, bit) static const NICallback _nic_stations[] = { NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL), - NICS(CBID_STATION_SPRITE_LAYOUT, CBM_NO_BIT), - NICS(CBID_STATION_TILE_LAYOUT, CBM_STATION_SPRITE_LAYOUT), + NICS(CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT), + NICS(CBID_STATION_TILE_LAYOUT, CBM_NO_BIT), NICS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT), NICS(CBID_STATION_ANIM_NEXT_FRAME, CBM_STATION_ANIMATION_NEXT_FRAME), NICS(CBID_STATION_ANIMATION_SPEED, CBM_STATION_ANIMATION_SPEED), @@ -407,6 +412,8 @@ static const NIVariable _niv_railtypes[] = { NIV(0x40, "terrain type"), NIV(0x41, "enhanced tunnels"), NIV(0x42, "level crossing status"), + NIV(0x43, "construction date"), + NIV(0x44, "town zone"), NIV_END() }; @@ -422,7 +429,7 @@ class NIHRailType : public NIHelper { { /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype. * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */ - RailTypeResolverObject ro(index, TCX_NORMAL, NULL); + RailTypeResolverObject ro(NULL, index, TCX_NORMAL, RTSG_END); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; diff --git a/src/table/object_land.h b/src/table/object_land.h index ed15a11bfe..a19b2cb089 100644 --- a/src/table/object_land.h +++ b/src/table/object_land.h @@ -123,15 +123,28 @@ static const DrawTileSprites _object_hq[] = { #undef TILE_SPRITE_LINE -#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, 0xF, size, 0, 0, build_cost_multiplier, clear_cost_multiplier, flags, {0, 0, 0, 0}, 0, height, 1, true } - +#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, MAX_DAY + 1, flags, {0, 0, 0, 0}, 0, height, 1, gen_amount, true } + +/* Climates + * T = Temperate + * A = Sub-Arctic + * S = Sub-Tropic + * Y = Toyland */ +#define T 1 +#define A 2 +#define S 4 +#define Y 8 /** Specification of the original object structures. */ extern const ObjectSpec _original_objects[] = { - M(STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER, 0x11, 0, 0, 10, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT), - M(STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE, 0x11, 0, 0, 8, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT), - M(STR_TOWN_BUILDING_NAME_STATUE_1, 0x11, 0, 0, 5, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_ONLY_IN_SCENEDIT), // Yes, we disallow building this everywhere. Happens in "special" case! - M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND, 0x11, 10, 10, 0, OBJECT_FLAG_AUTOREMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_CLEAR_INCOME | OBJECT_FLAG_HAS_NO_FOUNDATION ), // Only non-silly use case is to use it when you cannot build a station, so disallow bridges - M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS, 0x22, 0, 0, 7, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME), + M(STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER, 0x11, 0, 0, 10, T|A|S , 15, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT), + M(STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE, 0x11, 0, 0, 8, T|A , 8, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT | OBJECT_FLAG_SCALE_BY_WATER), + M(STR_TOWN_BUILDING_NAME_STATUE_1, 0x11, 0, 0, 5, T|S|A|Y, 0, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_ONLY_IN_SCENEDIT), // Yes, we disallow building this everywhere. Happens in "special" case! + M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND, 0x11, 10, 10, 0, T|S|A|Y, 0, OBJECT_FLAG_AUTOREMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_CLEAR_INCOME | OBJECT_FLAG_HAS_NO_FOUNDATION ), // Only non-silly use case is to use it when you cannot build a station, so disallow bridges + M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS, 0x22, 0, 0, 7, T|S|A|Y, 0, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME), }; #undef M +#undef Y +#undef S +#undef A +#undef T diff --git a/src/table/palettes.h b/src/table/palettes.h index e190134c9b..93cb7385e1 100644 --- a/src/table/palettes.h +++ b/src/table/palettes.h @@ -147,24 +147,3 @@ static const ExtraPaletteValues _extra_palette_values = { M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) } }; #undef M - -/** Colour mapping for the TextColours. */ -static const byte _string_colourmap[17] = { - 150, // TC_BLUE - 12, // TC_SILVER - 189, // TC_GOLD - 184, // TC_RED - 174, // TC_PURPLE - 30, // TC_LIGHT_BROWN - 195, // TC_ORANGE - 209, // TC_GREEN - 68, // TC_YELLOW - 95, // TC_DARK_GREEN - 79, // TC_CREAM - 116, // TC_BROWN - 15, // TC_WHITE - 152, // TC_LIGHT_BLUE - 6, // TC_GREY - 133, // TC_DARK_BLUE - 1, // TC_BLACK -}; diff --git a/src/table/settings.h.preamble b/src/table/settings.h.preamble index 33345bb713..ed67d43c30 100644 --- a/src/table/settings.h.preamble +++ b/src/table/settings.h.preamble @@ -61,76 +61,76 @@ static size_t ConvertLandscape(const char *value); /* Macros for various objects to go in the configuration file. * This section is for global variables */ -#define SDTG_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, var, length, def, min, max, interval, full, str, strhelp, strval, proc, from, to, cat)\ - {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, NULL, cat), SLEG_GENERAL(sle_cmd, var, type | flags, length, from, to)} +#define SDTG_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, var, length, def, min, max, interval, full, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, NULL, cat), SLEG_GENERAL_X(sle_cmd, var, type | flags, length, from, to, extver), patxname} -#define SDTG_VAR(name, type, flags, guiflags, var, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_NUMX, SL_VAR, type, flags, guiflags, var, 0, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTG_VAR(name, type, flags, guiflags, var, def, min, max, interval, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_NUMX, SL_VAR, type, flags, guiflags, var, 0, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_BOOL(name, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTG_BOOL(name, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_LIST(name, type, length, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_INTLIST, SL_ARR, type, flags, guiflags, var, length, def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTG_LIST(name, type, length, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_INTLIST, SL_ARR, type, flags, guiflags, var, length, def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_STR(name, type, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_STRING, SL_STR, type, flags, guiflags, var, lengthof(var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTG_STR(name, type, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_STRING, SL_STR, type, flags, guiflags, var, lengthof(var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_OMANY(name, type, flags, guiflags, var, def, max, full, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat) +#define SDTG_OMANY(name, type, flags, guiflags, var, def, max, full, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_MMANY(name, type, flags, guiflags, var, def, full, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(name, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, 0, 0, full, str, strhelp, strval, proc, from, to, cat) +#define SDTG_MMANY(name, type, flags, guiflags, var, def, full, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(name, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, 0, 0, full, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTG_NULL(length, from, to)\ - {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_NULL(length, from, to)} +#define SDTG_NULL(length, from, to, extver)\ + {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_NULL_X(length, from, to, extver), NULL} -#define SDTG_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_END()} +#define SDTG_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_END(), NULL} /* Macros for various objects to go in the configuration file. * This section is for structures where their various members are saved */ -#define SDT_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, base, var, length, def, min, max, interval, full, str, strhelp, strval, proc, load, from, to, cat)\ - {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, load, cat), SLE_GENERAL(sle_cmd, base, var, type | flags, length, from, to)} +#define SDT_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, base, var, length, def, min, max, interval, full, str, strhelp, strval, proc, load, from, to, cat, extver, patxname)\ + {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, load, cat), SLE_GENERAL_X(sle_cmd, base, var, type | flags, length, from, to, extver), patxname} -#define SDT_VAR(base, var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ - SDT_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, base, var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_VAR(base, var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, base, var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_BOOL(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDT_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, base, var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_BOOL(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, base, var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_LIST(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDT_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_LIST(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_STR(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDT_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_STR(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_CHR(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDT_GENERAL(#var, SDT_STRING, SL_VAR, SLE_CHAR, flags, guiflags, base, var, 1, def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_CHR(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_STRING, SL_VAR, SLE_CHAR, flags, guiflags, base, var, 1, def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_OMANY(base, var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, load, cat)\ - SDT_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, load, from, to, cat) +#define SDT_OMANY(base, var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, load, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, load, from, to, cat, extver, patxname) -#define SDT_MMANY(base, var, type, flags, guiflags, def, full, str, proc, strhelp, strval, from, to, cat)\ - SDT_GENERAL(#var, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, 0, 0, full, str, strhelp, strval, proc, NULL, from, to, cat) +#define SDT_MMANY(base, var, type, flags, guiflags, def, full, str, proc, strhelp, strval, from, to, cat, extver, patxname)\ + SDT_GENERAL(#var, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, 0, 0, full, str, strhelp, strval, proc, NULL, from, to, cat, extver, patxname) -#define SDT_NULL(length, from, to)\ - {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_CONDNULL(length, from, to)} +#define SDT_NULL(length, from, to, extver)\ + {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_CONDNULL_X(length, from, to, extver), NULL} -#define SDTC_VAR(var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTC_VAR(var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTC_BOOL(var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, _settings_client.var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTC_BOOL(var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, _settings_client.var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTC_LIST(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTC_LIST(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTC_STR(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) +#define SDTC_STR(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDTC_OMANY(var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, cat)\ - SDTG_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat) +#define SDTC_OMANY(var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, cat, extver, patxname)\ + SDTG_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat, extver, patxname) -#define SDT_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_END()} +#define SDT_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_END(), NULL} diff --git a/src/table/settings.ini b/src/table/settings.ini index ae9ef79cfa..e5473374b8 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -28,6 +28,7 @@ static bool TownFoundingChanged(int32 p1); static bool DifficultyNoiseChange(int32 i); static bool MaxNoAIsChange(int32 i); static bool CheckRoadSide(int p1); +static bool ChangeMaxHeightLevel(int32 p1); static bool CheckFreeformEdges(int32 p1); static bool ChangeDynamicEngines(int32 p1); static bool StationCatchmentChanged(int32 p1); @@ -40,6 +41,7 @@ static bool RedrawTownAuthority(int32 p1); static bool InvalidateCompanyInfrastructureWindow(int32 p1); static bool InvalidateCompanyWindow(int32 p1); static bool ZoomMinMaxChanged(int32 p1); +static bool MaxVehiclesChanged(int32 p1); #ifdef ENABLE_NETWORK static bool UpdateClientName(int32 p1); @@ -62,19 +64,19 @@ const SettingDesc _settings[] = { [post-amble] }; [templates] -SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTC_BOOL = SDTC_BOOL( $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTC_LIST = SDTC_LIST( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTC_STR = SDTC_STR( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTC_VAR = SDTC_VAR( $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat), -SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_NULL = SDT_NULL($length, $from, $to), +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTC_BOOL = SDTC_BOOL( $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTC_LIST = SDTC_LIST( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTC_STR = SDTC_STR( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDTC_VAR = SDTC_VAR( $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat, $extver, $patxname), +SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, $patxname), +SDT_NULL = SDT_NULL($length, $from, $to, $extver), SDT_END = SDT_END() [defaults] @@ -89,6 +91,8 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} +patxname = NULL @@ -129,11 +133,13 @@ base = GameSettings var = difficulty.industry_density type = SLE_UINT8 from = 97 -guiflags = SGF_NEWGAME_ONLY +guiflags = SGF_MULTISTRING def = ID_END - 1 min = 0 max = ID_END - 1 interval = 1 +str = STR_CONFIG_SETTING_INDUSTRY_DENSITY +strhelp = STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT strval = STR_FUNDING_ONLY cat = SC_BASIC @@ -250,11 +256,13 @@ base = GameSettings var = difficulty.terrain_type type = SLE_UINT8 from = 97 -guiflags = SGF_NEWGAME_ONLY +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 min = 0 -max = 3 +max = 4 interval = 1 +str = STR_CONFIG_SETTING_TERRAIN_TYPE +strhelp = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT strval = STR_TERRAIN_TYPE_VERY_FLAT cat = SC_BASIC @@ -341,11 +349,14 @@ base = GameSettings var = game_creation.landscape type = SLE_UINT8 from = 97 -guiflags = SGF_NO_NETWORK +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 max = 3 full = _climates load = ConvertLandscape +str = STR_CONFIG_SETTING_LANDSCAPE +strhelp = STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT +strval = STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE cat = SC_BASIC ; Snow line (or snow_line_height * TILE_HEIGHT) @@ -359,21 +370,38 @@ base = GameSettings var = vehicle.road_side type = SLE_UINT8 from = 97 -guiflags = SGF_NO_NETWORK +guiflags = SGF_MULTISTRING | SGF_NO_NETWORK def = 1 max = 1 full = _roadsides +str = STR_CONFIG_SETTING_ROAD_SIDE +strhelp = STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT +strval = STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT proc = CheckRoadSide ; Construction +[SDT_VAR] +base = GameSettings +var = construction.max_heightlevel +type = SLE_UINT8 +from = 194 +guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO +def = DEF_MAX_HEIGHTLEVEL +min = MIN_MAX_HEIGHTLEVEL +max = MAX_MAX_HEIGHTLEVEL +interval = 1 +str = STR_CONFIG_SETTING_MAX_HEIGHTLEVEL +strhelp = STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT +strval = STR_JUST_INT +proc = ChangeMaxHeightLevel +cat = SC_BASIC + [SDT_BOOL] base = GameSettings var = construction.build_on_slopes guiflags = SGF_NO_NETWORK def = true -str = STR_CONFIG_SETTING_BUILDONSLOPES -strhelp = STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT cat = SC_EXPERT [SDT_VAR] @@ -480,12 +508,27 @@ from = 159 guiflags = SGF_NO_NETWORK def = 64 min = 1 -max = 2048 +max = MAX_MAP_SIZE interval = 1 str = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH +[SDT_VAR] +base = GameSettings +var = construction.max_bridge_height +type = SLE_UINT8 +from = 194 +guiflags = SGF_NO_NETWORK +def = 12 +min = 1 +max = MAX_TILE_HEIGHT +interval = 1 +str = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT +strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT +strval = STR_JUST_COMMA +cat = SC_EXPERT + [SDT_VAR] base = GameSettings var = construction.max_tunnel_length @@ -494,7 +537,7 @@ from = 159 guiflags = SGF_NO_NETWORK def = 64 min = 1 -max = 2048 +max = MAX_MAP_SIZE interval = 1 str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT @@ -824,8 +867,6 @@ to = 158 base = GameSettings var = pf.roadveh_queue def = true -str = STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING -strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT cat = SC_EXPERT [SDT_BOOL] @@ -923,7 +964,7 @@ max = 5000 str = STR_CONFIG_SETTING_MAX_TRAINS strhelp = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT strval = STR_JUST_COMMA -proc = RedrawScreen +proc = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] @@ -936,7 +977,7 @@ max = 5000 str = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT strval = STR_JUST_COMMA -proc = RedrawScreen +proc = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] @@ -949,7 +990,7 @@ max = 5000 str = STR_CONFIG_SETTING_MAX_AIRCRAFT strhelp = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT strval = STR_JUST_COMMA -proc = RedrawScreen +proc = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] @@ -962,7 +1003,7 @@ max = 5000 str = STR_CONFIG_SETTING_MAX_SHIPS strhelp = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT strval = STR_JUST_COMMA -proc = RedrawScreen +proc = MaxVehiclesChanged cat = SC_BASIC [SDTG_BOOL] @@ -1079,8 +1120,6 @@ var = vehicle.dynamic_engines from = 95 guiflags = SGF_NO_NETWORK def = true -str = STR_CONFIG_SETTING_DYNAMIC_ENGINES -strhelp = STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT proc = ChangeDynamicEngines cat = SC_EXPERT @@ -1115,16 +1154,13 @@ base = GameSettings var = order.improved_load guiflags = SGF_NO_NETWORK def = true -str = STR_CONFIG_SETTING_IMPROVEDLOAD -strhelp = STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = order.selectgoods def = true -str = STR_CONFIG_SETTING_SELECTGOODS -strhelp = STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT +cat = SC_EXPERT [SDTC_BOOL] var = gui.sg_new_nonstop @@ -1173,8 +1209,6 @@ var = order.gradual_loading from = 40 guiflags = SGF_NO_NETWORK def = true -str = STR_CONFIG_SETTING_GRADUAL_LOADING -strhelp = STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT cat = SC_EXPERT [SDT_BOOL] @@ -1200,8 +1234,6 @@ base = GameSettings var = station.adjacent_stations from = 62 def = true -str = STR_CONFIG_SETTING_ADJACENT_STATIONS -strhelp = STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT cat = SC_EXPERT [SDT_BOOL] @@ -1322,10 +1354,12 @@ cat = SC_BASIC base = GameSettings var = game_creation.snow_line_height type = SLE_UINT8 +guiflags = SGF_NO_NETWORK def = DEF_SNOWLINE_HEIGHT min = MIN_SNOWLINE_HEIGHT max = MAX_SNOWLINE_HEIGHT str = STR_CONFIG_SETTING_SNOWLINE_HEIGHT +strhelp = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT strval = STR_JUST_COMMA cat = SC_BASIC @@ -1424,8 +1458,6 @@ base = GameSettings var = economy.mod_road_rebuild from = 77 def = true -str = STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD -strhelp = STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT cat = SC_EXPERT ; previously ai-new setting. @@ -2121,11 +2153,12 @@ base = GameSettings var = game_creation.land_generator type = SLE_UINT8 from = 30 -guiflags = SGF_MULTISTRING +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 min = 0 max = 1 str = STR_CONFIG_SETTING_LAND_GENERATOR +strhelp = STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT strval = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL [SDT_VAR] @@ -2145,11 +2178,12 @@ base = GameSettings var = game_creation.tgen_smoothness type = SLE_UINT8 from = 30 -guiflags = SGF_MULTISTRING +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 -min = 0 -max = 3 +min = TGEN_SMOOTHNESS_BEGIN +max = TGEN_SMOOTHNESS_END - 1 str = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN +strhelp = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT strval = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH cat = SC_BASIC @@ -2158,9 +2192,13 @@ base = GameSettings var = game_creation.variety type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 min = 0 max = 5 +str = STR_CONFIG_SETTING_VARIETY +strhelp = STR_CONFIG_SETTING_VARIETY_HELPTEXT +strval = STR_VARIETY_NONE [SDT_VAR] base = GameSettings @@ -2177,11 +2215,12 @@ base = GameSettings var = game_creation.tree_placer type = SLE_UINT8 from = 30 -guiflags = SGF_MULTISTRING +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO def = 2 min = 0 max = 2 str = STR_CONFIG_SETTING_TREE_PLACER +strhelp = STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT strval = STR_CONFIG_SETTING_TREE_PLACER_NONE [SDT_VAR] @@ -2235,8 +2274,6 @@ base = GameSettings var = construction.freeform_edges from = 111 def = true -str = STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES -strhelp = STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT proc = CheckFreeformEdges cat = SC_EXPERT @@ -2308,9 +2345,13 @@ base = GameSettings var = game_creation.amount_of_rivers type = SLE_UINT8 from = 163 +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 2 min = 0 max = 3 +str = STR_CONFIG_SETTING_RIVER_AMOUNT +strhelp = STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT +strval = STR_RIVERS_NONE ; locale @@ -2473,9 +2514,13 @@ cat = SC_BASIC var = gui.autosave type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING def = 1 max = 4 full = _autosave_interval +str = STR_CONFIG_SETTING_AUTOSAVE +strhelp = STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT +strval = STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF cat = SC_BASIC [SDTC_BOOL] @@ -2560,13 +2605,14 @@ strhelp = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT strval = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE [SDTC_VAR] -var = gui.hover_delay -type = SLE_UINT8 +var = gui.hover_delay_ms +type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED -def = 2 -min = 1 -max = 5 +def = 250 +min = 50 +max = 6000 +interval = 50 str = STR_CONFIG_SETTING_HOVER_DELAY strhelp = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT strval = STR_CONFIG_SETTING_HOVER_DELAY_VALUE @@ -2647,7 +2693,7 @@ flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = ZOOM_LVL_MIN min = ZOOM_LVL_MIN -max = ZOOM_LVL_GUI +max = ZOOM_LVL_OUT_4X str = STR_CONFIG_SETTING_ZOOM_MIN strhelp = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT strval = STR_CONFIG_SETTING_ZOOM_LVL_MIN @@ -3153,9 +3199,6 @@ guiflags = SGF_MULTISTRING def = 1 min = 0 max = 1 -str = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE -strhelp = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT -strval = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS proc = UpdateNewGRFConfigPalette cat = SC_EXPERT @@ -3469,12 +3512,12 @@ strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_VAR] ifdef = ENABLE_NETWORK -var = gui.network_chat_box_width +var = gui.network_chat_box_width_pct type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC -def = 620 -min = 200 -max = 65535 +def = 40 +min = 10 +max = 100 cat = SC_EXPERT [SDTC_VAR] diff --git a/src/table/sprites.h b/src/table/sprites.h index 576ffb88c5..81d5388f99 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -56,7 +56,7 @@ static const SpriteID SPR_LARGE_SMALL_WINDOW = 682; /** Extra graphic spritenumbers */ static const SpriteID SPR_OPENTTD_BASE = 4896; -static const uint16 OPENTTD_SPRITE_COUNT = 174; +static const uint16 OPENTTD_SPRITE_COUNT = 175; /* Halftile-selection sprites */ static const SpriteID SPR_HALFTILE_SELECTION_FLAT = SPR_OPENTTD_BASE; @@ -85,6 +85,8 @@ static const SpriteID SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 50; static const SpriteID SPR_PIN_UP = SPR_OPENTTD_BASE + 51; // pin icon static const SpriteID SPR_PIN_DOWN = SPR_OPENTTD_BASE + 52; +static const SpriteID SPR_CLOSEBOX = 143; + static const SpriteID SPR_CIRCLE_FOLDED = SPR_OPENTTD_BASE + 147; // (+) icon static const SpriteID SPR_CIRCLE_UNFOLDED = SPR_OPENTTD_BASE + 148; // (-) icon @@ -159,6 +161,8 @@ static const SpriteID SPR_IMG_DELETE_RIGHT = SPR_OPENTTD_BASE + 167; static const SpriteID SPR_WINDOW_DEFSIZE = SPR_OPENTTD_BASE + 168; +static const SpriteID SPR_IMG_CARGOFLOW = SPR_OPENTTD_BASE + 174; + static const SpriteID SPR_SIGNALS_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITE_COUNT; static const uint16 PRESIGNAL_SPRITE_COUNT = 48; static const uint16 PRESIGNAL_AND_SEMAPHORE_SPRITE_COUNT = 112; @@ -288,8 +292,12 @@ static const uint16 RAILTYPE_TUNNEL_BASE_COUNT = 16; static const SpriteID SPR_EMPTY_BOUNDING_BOX = SPR_RAILTYPE_TUNNEL_BASE + RAILTYPE_TUNNEL_BASE_COUNT; static const uint16 EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1; +/* Black palette sprite, needed for painting (fictive) tiles outside map */ +static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT; +static const uint16 PALETTE_SPRITE_COUNT = 1; + /* From where can we start putting NewGRFs? */ -static const SpriteID SPR_NEWGRFS_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT; +static const SpriteID SPR_NEWGRFS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT; /* Manager face sprites */ static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face @@ -991,10 +999,10 @@ static const SpriteID SPR_CNST1_TOWNHOUSE_06_V1 = 1444; static const SpriteID SPR_CNST2_TOWNHOUSE_06_V1 = 1445; static const SpriteID SPR_BUILD_TOWNHOUSE_06_V1 = 1446; // 1st variation static const SpriteID SPR_GRND_TOWNHOUSE_06_V1 = 1447; -static const SpriteID SPR_GRND_STADIUM_N = 1479; //stadium ground at north -static const SpriteID SPR_GRND_STADIUM_E = 1480; //stadium ground at east -static const SpriteID SPR_GRND_STADIUM_W = 1481; //stadium ground at west -static const SpriteID SPR_GRND_STADIUM_S = 1482; //stadium ground at south +static const SpriteID SPR_GRND_STADIUM_N = 1479; // stadium ground at north +static const SpriteID SPR_GRND_STADIUM_E = 1480; // stadium ground at east +static const SpriteID SPR_GRND_STADIUM_W = 1481; // stadium ground at west +static const SpriteID SPR_GRND_STADIUM_S = 1482; // stadium ground at south static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2 = 1501; // used as ground, but is stage1 static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2_P = 1502; // pipes extensions for previous static const SpriteID SPR_CNST2_TOWNHOUSE_06_V2_G = 1503; // Ground of cnst stage 2 @@ -1473,11 +1481,15 @@ static const CursorID ANIMCURSOR_BUILDSIGNALS = ANIMCURSOR_FLAG | 4; ///< 1292 - * bits used for the recolouring process. For transparency, it must be 0x322. */ enum SpriteSetup { + /* These bits are applied to sprite ID */ TRANSPARENT_BIT = 31, ///< toggles transparency in the sprite RECOLOUR_BIT = 30, ///< toggles recolouring in the sprite CUSTOM_BIT = 29, OPAQUE_BIT = 28, + /* This bit is applied to palette ID */ + PALETTE_TEXT_RECOLOUR = 31, ///< Set if palette is actually a magic text recolour + PALETTE_WIDTH = 24, ///< number of bits of the sprite containing the recolour palette SPRITE_WIDTH = 24, ///< number of bits for the sprite number }; @@ -1560,4 +1572,6 @@ static const PaletteID PALETTE_CRASH = 804; ///< Recolour sprite static const PaletteID PALETTE_CHURCH_RED = 1438; ///< Recolour sprite for reddish churches static const PaletteID PALETTE_CHURCH_CREAM = 1439; ///< Recolour sprite for white churches +static const PaletteID PALETTE_ALL_BLACK = SPR_PALETTE_BASE; ///< Exchange any color by black, needed for painting fictive tiles outside map + #endif /* SPRITES_H */ diff --git a/src/table/strgen_tables.h b/src/table/strgen_tables.h index 811a8ffdae..322f1bc6bf 100644 --- a/src/table/strgen_tables.h +++ b/src/table/strgen_tables.h @@ -27,6 +27,7 @@ struct CmdStruct { ParseCmdProc proc; long value; uint8 consumes; + int8 default_plural_offset; CmdFlags flags; }; @@ -36,115 +37,115 @@ extern void EmitGender(Buffer *buffer, char *buf, int value); static const CmdStruct _cmd_structs[] = { /* Font size */ - {"TINY_FONT", EmitSingleChar, SCC_TINYFONT, 0, C_NONE}, - {"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, C_NONE}, + {"TINY_FONT", EmitSingleChar, SCC_TINYFONT, 0, -1, C_NONE}, + {"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, -1, C_NONE}, /* Colours */ - {"BLUE", EmitSingleChar, SCC_BLUE, 0, C_DONTCOUNT}, - {"SILVER", EmitSingleChar, SCC_SILVER, 0, C_DONTCOUNT}, - {"GOLD", EmitSingleChar, SCC_GOLD, 0, C_DONTCOUNT}, - {"RED", EmitSingleChar, SCC_RED, 0, C_DONTCOUNT}, - {"PURPLE", EmitSingleChar, SCC_PURPLE, 0, C_DONTCOUNT}, - {"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, C_DONTCOUNT}, - {"ORANGE", EmitSingleChar, SCC_ORANGE, 0, C_DONTCOUNT}, - {"GREEN", EmitSingleChar, SCC_GREEN, 0, C_DONTCOUNT}, - {"YELLOW", EmitSingleChar, SCC_YELLOW, 0, C_DONTCOUNT}, - {"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, C_DONTCOUNT}, - {"CREAM", EmitSingleChar, SCC_CREAM, 0, C_DONTCOUNT}, - {"BROWN", EmitSingleChar, SCC_BROWN, 0, C_DONTCOUNT}, - {"WHITE", EmitSingleChar, SCC_WHITE, 0, C_DONTCOUNT}, - {"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, C_DONTCOUNT}, - {"GRAY", EmitSingleChar, SCC_GRAY, 0, C_DONTCOUNT}, - {"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, C_DONTCOUNT}, - {"BLACK", EmitSingleChar, SCC_BLACK, 0, C_DONTCOUNT}, - - {"REV", EmitSingleChar, SCC_REVISION, 0, C_NONE}, // openttd revision string - - {"STRING1", EmitSingleChar, SCC_STRING1, 2, C_CASE | C_GENDER}, // included string that consumes the string id and ONE argument - {"STRING2", EmitSingleChar, SCC_STRING2, 3, C_CASE | C_GENDER}, // included string that consumes the string id and TWO arguments - {"STRING3", EmitSingleChar, SCC_STRING3, 4, C_CASE | C_GENDER}, // included string that consumes the string id and THREE arguments - {"STRING4", EmitSingleChar, SCC_STRING4, 5, C_CASE | C_GENDER}, // included string that consumes the string id and FOUR arguments - {"STRING5", EmitSingleChar, SCC_STRING5, 6, C_CASE | C_GENDER}, // included string that consumes the string id and FIVE arguments - {"STRING6", EmitSingleChar, SCC_STRING6, 7, C_CASE | C_GENDER}, // included string that consumes the string id and SIX arguments - {"STRING7", EmitSingleChar, SCC_STRING7, 8, C_CASE | C_GENDER}, // included string that consumes the string id and SEVEN arguments - - {"STATION_FEATURES", EmitSingleChar, SCC_STATION_FEATURES, 1, C_NONE}, // station features string, icons of the features - {"INDUSTRY", EmitSingleChar, SCC_INDUSTRY_NAME, 1, C_CASE | C_GENDER}, // industry, takes an industry #, can have cases - {"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, C_NONE | C_GENDER}, - {"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, C_NONE}, // short cargo description, only ### tons, or ### litres - {"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name - {"CARGO_LIST", EmitSingleChar, SCC_CARGO_LIST, 1, C_CASE}, - {"POWER", EmitSingleChar, SCC_POWER, 1, C_NONE}, - {"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, C_NONE}, - {"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, C_NONE}, - {"WEIGHT_LONG", EmitSingleChar, SCC_WEIGHT_LONG, 1, C_NONE}, - {"WEIGHT_SHORT", EmitSingleChar, SCC_WEIGHT_SHORT, 1, C_NONE}, - {"FORCE", EmitSingleChar, SCC_FORCE, 1, C_NONE}, - {"VELOCITY", EmitSingleChar, SCC_VELOCITY, 1, C_NONE}, - {"HEIGHT", EmitSingleChar, SCC_HEIGHT, 1, C_NONE}, - - {"P", EmitPlural, 0, 0, C_DONTCOUNT}, // plural specifier - {"G", EmitGender, 0, 0, C_DONTCOUNT}, // gender specifier - - {"DATE_TINY", EmitSingleChar, SCC_DATE_TINY, 1, C_NONE}, - {"DATE_SHORT", EmitSingleChar, SCC_DATE_SHORT, 1, C_CASE}, - {"DATE_LONG", EmitSingleChar, SCC_DATE_LONG, 1, C_CASE}, - {"DATE_ISO", EmitSingleChar, SCC_DATE_ISO, 1, C_NONE}, - - {"STRING", EmitSingleChar, SCC_STRING, 1, C_CASE | C_GENDER}, - {"RAW_STRING", EmitSingleChar, SCC_RAW_STRING_POINTER, 1, C_NONE | C_GENDER}, + {"BLUE", EmitSingleChar, SCC_BLUE, 0, -1, C_DONTCOUNT}, + {"SILVER", EmitSingleChar, SCC_SILVER, 0, -1, C_DONTCOUNT}, + {"GOLD", EmitSingleChar, SCC_GOLD, 0, -1, C_DONTCOUNT}, + {"RED", EmitSingleChar, SCC_RED, 0, -1, C_DONTCOUNT}, + {"PURPLE", EmitSingleChar, SCC_PURPLE, 0, -1, C_DONTCOUNT}, + {"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, -1, C_DONTCOUNT}, + {"ORANGE", EmitSingleChar, SCC_ORANGE, 0, -1, C_DONTCOUNT}, + {"GREEN", EmitSingleChar, SCC_GREEN, 0, -1, C_DONTCOUNT}, + {"YELLOW", EmitSingleChar, SCC_YELLOW, 0, -1, C_DONTCOUNT}, + {"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, -1, C_DONTCOUNT}, + {"CREAM", EmitSingleChar, SCC_CREAM, 0, -1, C_DONTCOUNT}, + {"BROWN", EmitSingleChar, SCC_BROWN, 0, -1, C_DONTCOUNT}, + {"WHITE", EmitSingleChar, SCC_WHITE, 0, -1, C_DONTCOUNT}, + {"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, -1, C_DONTCOUNT}, + {"GRAY", EmitSingleChar, SCC_GRAY, 0, -1, C_DONTCOUNT}, + {"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, -1, C_DONTCOUNT}, + {"BLACK", EmitSingleChar, SCC_BLACK, 0, -1, C_DONTCOUNT}, + + {"REV", EmitSingleChar, SCC_REVISION, 0, -1, C_NONE}, // openttd revision string + + {"STRING1", EmitSingleChar, SCC_STRING1, 2, -1, C_CASE | C_GENDER}, // included string that consumes the string id and ONE argument + {"STRING2", EmitSingleChar, SCC_STRING2, 3, -1, C_CASE | C_GENDER}, // included string that consumes the string id and TWO arguments + {"STRING3", EmitSingleChar, SCC_STRING3, 4, -1, C_CASE | C_GENDER}, // included string that consumes the string id and THREE arguments + {"STRING4", EmitSingleChar, SCC_STRING4, 5, -1, C_CASE | C_GENDER}, // included string that consumes the string id and FOUR arguments + {"STRING5", EmitSingleChar, SCC_STRING5, 6, -1, C_CASE | C_GENDER}, // included string that consumes the string id and FIVE arguments + {"STRING6", EmitSingleChar, SCC_STRING6, 7, -1, C_CASE | C_GENDER}, // included string that consumes the string id and SIX arguments + {"STRING7", EmitSingleChar, SCC_STRING7, 8, -1, C_CASE | C_GENDER}, // included string that consumes the string id and SEVEN arguments + + {"STATION_FEATURES", EmitSingleChar, SCC_STATION_FEATURES, 1, -1, C_NONE}, // station features string, icons of the features + {"INDUSTRY", EmitSingleChar, SCC_INDUSTRY_NAME, 1, -1, C_CASE | C_GENDER}, // industry, takes an industry #, can have cases + {"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, 1, C_NONE | C_GENDER}, + {"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, 1, C_NONE}, // short cargo description, only ### tons, or ### litres + {"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, 1, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name + {"CARGO_LIST", EmitSingleChar, SCC_CARGO_LIST, 1, -1, C_CASE}, + {"POWER", EmitSingleChar, SCC_POWER, 1, 0, C_NONE}, + {"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, 0, C_NONE}, + {"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, 0, C_NONE}, + {"WEIGHT_LONG", EmitSingleChar, SCC_WEIGHT_LONG, 1, 0, C_NONE}, + {"WEIGHT_SHORT", EmitSingleChar, SCC_WEIGHT_SHORT, 1, 0, C_NONE}, + {"FORCE", EmitSingleChar, SCC_FORCE, 1, 0, C_NONE}, + {"VELOCITY", EmitSingleChar, SCC_VELOCITY, 1, 0, C_NONE}, + {"HEIGHT", EmitSingleChar, SCC_HEIGHT, 1, 0, C_NONE}, + + {"P", EmitPlural, 0, 0, -1, C_DONTCOUNT}, // plural specifier + {"G", EmitGender, 0, 0, -1, C_DONTCOUNT}, // gender specifier + + {"DATE_TINY", EmitSingleChar, SCC_DATE_TINY, 1, -1, C_NONE}, + {"DATE_SHORT", EmitSingleChar, SCC_DATE_SHORT, 1, -1, C_CASE}, + {"DATE_LONG", EmitSingleChar, SCC_DATE_LONG, 1, -1, C_CASE}, + {"DATE_ISO", EmitSingleChar, SCC_DATE_ISO, 1, -1, C_NONE}, + + {"STRING", EmitSingleChar, SCC_STRING, 1, -1, C_CASE | C_GENDER}, + {"RAW_STRING", EmitSingleChar, SCC_RAW_STRING_POINTER, 1, -1, C_NONE | C_GENDER}, /* Numbers */ - {"COMMA", EmitSingleChar, SCC_COMMA, 1, C_NONE}, // Number with comma - {"DECIMAL", EmitSingleChar, SCC_DECIMAL, 2, C_NONE}, // Number with comma and fractional part. Second parameter is number of fractional digits, first parameter is number times 10**(second parameter). - {"NUM", EmitSingleChar, SCC_NUM, 1, C_NONE}, // Signed number - {"ZEROFILL_NUM", EmitSingleChar, SCC_ZEROFILL_NUM, 2, C_NONE}, // Unsigned number with zero fill, e.g. "02". First parameter is number, second minimum length - {"BYTES", EmitSingleChar, SCC_BYTES, 1, C_NONE}, // Unsigned number with "bytes", i.e. "1.02 MiB or 123 KiB" - {"HEX", EmitSingleChar, SCC_HEX, 1, C_NONE}, // Hexadecimally printed number - - {"CURRENCY_LONG", EmitSingleChar, SCC_CURRENCY_LONG, 1, C_NONE}, - {"CURRENCY_SHORT", EmitSingleChar, SCC_CURRENCY_SHORT, 1, C_NONE}, // compact currency - - {"WAYPOINT", EmitSingleChar, SCC_WAYPOINT_NAME, 1, C_NONE | C_GENDER}, // waypoint name - {"STATION", EmitSingleChar, SCC_STATION_NAME, 1, C_NONE | C_GENDER}, - {"DEPOT", EmitSingleChar, SCC_DEPOT_NAME, 2, C_NONE | C_GENDER}, - {"TOWN", EmitSingleChar, SCC_TOWN_NAME, 1, C_NONE | C_GENDER}, - {"GROUP", EmitSingleChar, SCC_GROUP_NAME, 1, C_NONE | C_GENDER}, - {"SIGN", EmitSingleChar, SCC_SIGN_NAME, 1, C_NONE | C_GENDER}, - {"ENGINE", EmitSingleChar, SCC_ENGINE_NAME, 1, C_NONE | C_GENDER}, - {"VEHICLE", EmitSingleChar, SCC_VEHICLE_NAME, 1, C_NONE | C_GENDER}, - {"COMPANY", EmitSingleChar, SCC_COMPANY_NAME, 1, C_NONE | C_GENDER}, - {"COMPANY_NUM", EmitSingleChar, SCC_COMPANY_NUM, 1, C_NONE}, - {"PRESIDENT_NAME", EmitSingleChar, SCC_PRESIDENT_NAME, 1, C_NONE | C_GENDER}, - - {"", EmitSingleChar, '\n', 0, C_DONTCOUNT}, - {"{", EmitSingleChar, '{', 0, C_DONTCOUNT}, - {"UP_ARROW", EmitSingleChar, SCC_UP_ARROW, 0, C_DONTCOUNT}, - {"SMALL_UP_ARROW", EmitSingleChar, SCC_SMALL_UP_ARROW, 0, C_DONTCOUNT}, - {"SMALL_DOWN_ARROW", EmitSingleChar, SCC_SMALL_DOWN_ARROW, 0, C_DONTCOUNT}, - {"TRAIN", EmitSingleChar, SCC_TRAIN, 0, C_DONTCOUNT}, - {"LORRY", EmitSingleChar, SCC_LORRY, 0, C_DONTCOUNT}, - {"BUS", EmitSingleChar, SCC_BUS, 0, C_DONTCOUNT}, - {"PLANE", EmitSingleChar, SCC_PLANE, 0, C_DONTCOUNT}, - {"SHIP", EmitSingleChar, SCC_SHIP, 0, C_DONTCOUNT}, - {"NBSP", EmitSingleChar, 0xA0, 0, C_DONTCOUNT}, - {"COPYRIGHT", EmitSingleChar, 0xA9, 0, C_DONTCOUNT}, - {"DOWN_ARROW", EmitSingleChar, SCC_DOWN_ARROW, 0, C_DONTCOUNT}, - {"CHECKMARK", EmitSingleChar, SCC_CHECKMARK, 0, C_DONTCOUNT}, - {"CROSS", EmitSingleChar, SCC_CROSS, 0, C_DONTCOUNT}, - {"RIGHT_ARROW", EmitSingleChar, SCC_RIGHT_ARROW, 0, C_DONTCOUNT}, - {"SMALL_LEFT_ARROW", EmitSingleChar, SCC_LESS_THAN, 0, C_DONTCOUNT}, - {"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN, 0, C_DONTCOUNT}, + {"COMMA", EmitSingleChar, SCC_COMMA, 1, 0, C_NONE}, // Number with comma + {"DECIMAL", EmitSingleChar, SCC_DECIMAL, 2, 0, C_NONE}, // Number with comma and fractional part. Second parameter is number of fractional digits, first parameter is number times 10**(second parameter). + {"NUM", EmitSingleChar, SCC_NUM, 1, 0, C_NONE}, // Signed number + {"ZEROFILL_NUM", EmitSingleChar, SCC_ZEROFILL_NUM, 2, 0, C_NONE}, // Unsigned number with zero fill, e.g. "02". First parameter is number, second minimum length + {"BYTES", EmitSingleChar, SCC_BYTES, 1, 0, C_NONE}, // Unsigned number with "bytes", i.e. "1.02 MiB or 123 KiB" + {"HEX", EmitSingleChar, SCC_HEX, 1, 0, C_NONE}, // Hexadecimally printed number + + {"CURRENCY_LONG", EmitSingleChar, SCC_CURRENCY_LONG, 1, 0, C_NONE}, + {"CURRENCY_SHORT", EmitSingleChar, SCC_CURRENCY_SHORT, 1, 0, C_NONE}, // compact currency + + {"WAYPOINT", EmitSingleChar, SCC_WAYPOINT_NAME, 1, -1, C_NONE | C_GENDER}, // waypoint name + {"STATION", EmitSingleChar, SCC_STATION_NAME, 1, -1, C_NONE | C_GENDER}, + {"DEPOT", EmitSingleChar, SCC_DEPOT_NAME, 2, -1, C_NONE | C_GENDER}, + {"TOWN", EmitSingleChar, SCC_TOWN_NAME, 1, -1, C_NONE | C_GENDER}, + {"GROUP", EmitSingleChar, SCC_GROUP_NAME, 1, -1, C_NONE | C_GENDER}, + {"SIGN", EmitSingleChar, SCC_SIGN_NAME, 1, -1, C_NONE | C_GENDER}, + {"ENGINE", EmitSingleChar, SCC_ENGINE_NAME, 1, -1, C_NONE | C_GENDER}, + {"VEHICLE", EmitSingleChar, SCC_VEHICLE_NAME, 1, -1, C_NONE | C_GENDER}, + {"COMPANY", EmitSingleChar, SCC_COMPANY_NAME, 1, -1, C_NONE | C_GENDER}, + {"COMPANY_NUM", EmitSingleChar, SCC_COMPANY_NUM, 1, -1, C_NONE}, + {"PRESIDENT_NAME", EmitSingleChar, SCC_PRESIDENT_NAME, 1, -1, C_NONE | C_GENDER}, + + {"", EmitSingleChar, '\n', 0, -1, C_DONTCOUNT}, + {"{", EmitSingleChar, '{', 0, -1, C_DONTCOUNT}, + {"UP_ARROW", EmitSingleChar, SCC_UP_ARROW, 0, -1, C_DONTCOUNT}, + {"SMALL_UP_ARROW", EmitSingleChar, SCC_SMALL_UP_ARROW, 0, -1, C_DONTCOUNT}, + {"SMALL_DOWN_ARROW", EmitSingleChar, SCC_SMALL_DOWN_ARROW, 0, -1, C_DONTCOUNT}, + {"TRAIN", EmitSingleChar, SCC_TRAIN, 0, -1, C_DONTCOUNT}, + {"LORRY", EmitSingleChar, SCC_LORRY, 0, -1, C_DONTCOUNT}, + {"BUS", EmitSingleChar, SCC_BUS, 0, -1, C_DONTCOUNT}, + {"PLANE", EmitSingleChar, SCC_PLANE, 0, -1, C_DONTCOUNT}, + {"SHIP", EmitSingleChar, SCC_SHIP, 0, -1, C_DONTCOUNT}, + {"NBSP", EmitSingleChar, 0xA0, 0, -1, C_DONTCOUNT}, + {"COPYRIGHT", EmitSingleChar, 0xA9, 0, -1, C_DONTCOUNT}, + {"DOWN_ARROW", EmitSingleChar, SCC_DOWN_ARROW, 0, -1, C_DONTCOUNT}, + {"CHECKMARK", EmitSingleChar, SCC_CHECKMARK, 0, -1, C_DONTCOUNT}, + {"CROSS", EmitSingleChar, SCC_CROSS, 0, -1, C_DONTCOUNT}, + {"RIGHT_ARROW", EmitSingleChar, SCC_RIGHT_ARROW, 0, -1, C_DONTCOUNT}, + {"SMALL_LEFT_ARROW", EmitSingleChar, SCC_LESS_THAN, 0, -1, C_DONTCOUNT}, + {"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN, 0, -1, C_DONTCOUNT}, /* The following are directional formatting codes used to get the RTL strings right: * http://www.unicode.org/unicode/reports/tr9/#Directional_Formatting_Codes */ - {"LRM", EmitSingleChar, CHAR_TD_LRM, 0, C_DONTCOUNT}, - {"RLM", EmitSingleChar, CHAR_TD_RLM, 0, C_DONTCOUNT}, - {"LRE", EmitSingleChar, CHAR_TD_LRE, 0, C_DONTCOUNT}, - {"RLE", EmitSingleChar, CHAR_TD_RLE, 0, C_DONTCOUNT}, - {"LRO", EmitSingleChar, CHAR_TD_LRO, 0, C_DONTCOUNT}, - {"RLO", EmitSingleChar, CHAR_TD_RLO, 0, C_DONTCOUNT}, - {"PDF", EmitSingleChar, CHAR_TD_PDF, 0, C_DONTCOUNT}, + {"LRM", EmitSingleChar, CHAR_TD_LRM, 0, -1, C_DONTCOUNT}, + {"RLM", EmitSingleChar, CHAR_TD_RLM, 0, -1, C_DONTCOUNT}, + {"LRE", EmitSingleChar, CHAR_TD_LRE, 0, -1, C_DONTCOUNT}, + {"RLE", EmitSingleChar, CHAR_TD_RLE, 0, -1, C_DONTCOUNT}, + {"LRO", EmitSingleChar, CHAR_TD_LRO, 0, -1, C_DONTCOUNT}, + {"RLO", EmitSingleChar, CHAR_TD_RLO, 0, -1, C_DONTCOUNT}, + {"PDF", EmitSingleChar, CHAR_TD_PDF, 0, -1, C_DONTCOUNT}, }; /** Description of a plural form */ @@ -154,6 +155,9 @@ struct PluralForm { const char *names; ///< Plural names }; +/** The maximum number of plurals. */ +static const int MAX_PLURALS = 5; + /** All plural forms used */ static const PluralForm _plural_forms[] = { { 2, "Two forms: special case for 1.", "\"1\" \"other\"" }, diff --git a/src/table/string_colours.h b/src/table/string_colours.h new file mode 100644 index 0000000000..1e3b02bd64 --- /dev/null +++ b/src/table/string_colours.h @@ -0,0 +1,31 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file string_colours.h The colour translation of GRF's strings. */ + +/** Colour mapping for the TextColours. */ +static const byte _string_colourmap[17] = { + 150, // TC_BLUE + 12, // TC_SILVER + 189, // TC_GOLD + 184, // TC_RED + 174, // TC_PURPLE + 30, // TC_LIGHT_BROWN + 195, // TC_ORANGE + 209, // TC_GREEN + 68, // TC_YELLOW + 95, // TC_DARK_GREEN + 79, // TC_CREAM + 116, // TC_BROWN + 15, // TC_WHITE + 152, // TC_LIGHT_BLUE + 6, // TC_GREY + 133, // TC_DARK_BLUE + 1, // TC_BLACK +}; diff --git a/src/table/townname.h b/src/table/townname.h index 6e572b5c07..25c997d255 100644 --- a/src/table/townname.h +++ b/src/table/townname.h @@ -627,9 +627,9 @@ static const char * const _name_spanish_real[] = { "Morrocoy", "Cata", "Cataito", - "Ciudad Bolivar", + "Ciudad Bol\xC3\xADvar", "Barquisimeto", - "Merida", + "M\xC3\xA9rida", "Puerto Ordaz", "Santa Elena", "San Juan", @@ -638,12 +638,12 @@ static const char * const _name_spanish_real[] = { "Santiago", "Barcelona", "Barinas", - "San Cristobal", + "San Crist\xC3\xB3""bal", "San Fransisco", - "San Martin", + "San Mart\xC3\xADn", "Guayana", "San Carlos", - "El Limon", + "El Lim\xC3\xB3n", "Coro", "Corocoro", "Puerto Ayacucho", @@ -663,7 +663,7 @@ static const char * const _name_spanish_real[] = { "Quito", "Cuenca", "Huacho", - "Tulcan", + "Tulc\xC3\xA1n", "Esmeraldas", "Ibarra", "San Lorenzo", @@ -674,20 +674,20 @@ static const char * const _name_spanish_real[] = { "Latacunga", "Tena", "Cochabamba", - "Ascension", + "Ascensi\xC3\xB3n", "Magdalena", "Santa Ana", "Manoa", "Sucre", "Oruro", "Uyuni", - "Potosi", + "Potos\xC3\xAD", "Tupiza", "La Quiaca", "Yacuiba", "San Borja", "Fuerte Olimpio", - "Fortin Esteros", + "Fort\xC3\xADn Esteros", "Campo Grande", "Bogota", "El Banco", @@ -2612,7 +2612,7 @@ static const char * const _name_swiss_real[] = { "Sursee", "Schwyz", "Thalwil", - "Thônex", + "Th\xC3\xB4nex", "Thun", "Uster", "Uzwil", @@ -3149,7 +3149,7 @@ static const char * const _name_italian_river2[] = { static const char * const _name_catalan_real[] = { "Barcelona", - "Hospitalet", + "L'Hospitalet de Llobregat", "Cerdanyola", "Martorell", "Badalona", @@ -3161,7 +3161,7 @@ static const char * const _name_catalan_real[] = { "Reus", "Valls", "Vic", - "Vielha", + "Vielha e Mijaran", "Amposta", "Tortosa", "Berga", @@ -3171,12 +3171,12 @@ static const char * const _name_catalan_real[] = { "Figueres", "Balaguer", "Vilafranca del Pened\xC3\xA8s", - "La seu d'Urgell", - "Pont de Suert", + "La Seu d'Urgell", + "El Pont de Suert", "Igualada", "Manresa", "Solsona", - "Les borges blanques", + "Les Borges Blanques", "Tremp", "Sort", "Colera", @@ -3194,21 +3194,21 @@ static const char * const _name_catalan_real[] = { "Campdev\xC3\xA0nol", "Cambrils", "Begur", - "Set Cases", + "Setcases", "Palafrugell", "Begues", "El Bruc", "Cadaqu\xC3\xA9s", "Collbat\xC3\xB3", "Cervell\xC3\xB3", - "Esparraguera", + "Esparreguera", "Abrera", "Alp", "Das", "Cercs", "Manlleu", - "Masnou", - "Molins de rei", + "El Masnou", + "Molins de Rei", "Monistrol", "Rocallaura", "Rub\xC3\xAD", @@ -3218,15 +3218,15 @@ static const char * const _name_catalan_real[] = { }; static const char * const _name_catalan_pref[] = { - "Pont de ", + "El Pont de ", "Parets de ", "Canet de ", "Castellar de ", "Corbera de ", "Arenys de ", "Calella de ", - "La seu de ", - "La bisbal de ", + "La Seu de ", + "La Bisbal de ", "Torroella de ", "Port de ", "Vilafranca de ", @@ -3262,13 +3262,13 @@ static const char * const _name_catalan_1m[] = { }; static const char * const _name_catalan_1f[] = { - "Aigua", - "Selva ", + "Pala", + "Selva", "Vall", "Serra", "Torre", "Riba", - "Vall", + "Cova", "Terra", }; @@ -3280,7 +3280,7 @@ static const char * const _name_catalan_2m[] = { "vent\xC3\xB3s", "negre", "roig", - "gris", + "gr\xC3\xADs", }; static const char * const _name_catalan_2f[] = { @@ -3295,16 +3295,16 @@ static const char * const _name_catalan_2f[] = { }; static const char * const _name_catalan_3[] = { - " desp\xC3\xAD", - " desvern", - " del cam\xC3\xAD", + " Desp\xC3\xAD", + " Desvern", + " del Cam\xC3\xAD", " de Mar", " de Dalt", " de Baix", " del Vall\xC3\xA8s", " de Bergued\xC3\xA0", " de Conflent", - " de la plana", + " de la Plana", }; static const char * const _name_catalan_river1[] = { diff --git a/src/table/train_cmd.h b/src/table/train_cmd.h index ec92069fc1..15ac6f2aab 100644 --- a/src/table/train_cmd.h +++ b/src/table/train_cmd.h @@ -64,3 +64,7 @@ static const byte _wagon_full_adder[] = { 0, 0, 24, 24, 24, 24, 0, 0, 32, 32 }; + +assert_compile(lengthof(_engine_sprite_base) == lengthof(_engine_sprite_and)); +assert_compile(lengthof(_engine_sprite_base) == lengthof(_engine_sprite_add)); +assert_compile(lengthof(_engine_sprite_base) == lengthof(_wagon_full_adder)); diff --git a/src/table/win32_settings.ini b/src/table/win32_settings.ini index 282c132725..6f62db63f6 100644 --- a/src/table/win32_settings.ini +++ b/src/table/win32_settings.ini @@ -10,15 +10,15 @@ /* win32_v.cpp only settings */ #if defined(WIN32) && !defined(DEDICATED) extern bool _force_full_redraw, _window_maximize; -extern uint _display_hz, _fullscreen_bpp; +extern uint _display_hz; static const SettingDescGlobVarList _win32_settings[] = { [post-amble] }; #endif /* WIN32 */ [templates] -SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDTG_END = SDTG_END() [defaults] @@ -33,6 +33,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} @@ -51,15 +52,6 @@ var = _force_full_redraw def = false cat = SC_EXPERT -[SDTG_VAR] -name = ""fullscreen_bpp"" -type = SLE_UINT -var = _fullscreen_bpp -def = 8 -min = 8 -max = 32 -cat = SC_EXPERT - [SDTG_BOOL] name = ""window_maximize"" var = _window_maximize diff --git a/src/table/window_settings.ini b/src/table/window_settings.ini index ad77423d9d..4565d9b35f 100644 --- a/src/table/window_settings.ini +++ b/src/table/window_settings.ini @@ -12,8 +12,8 @@ static const SettingDesc _window_settings[] = { [post-amble] }; [templates] -SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), -SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), +SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), +SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extver, NULL), SDT_END = SDT_END() [defaults] @@ -29,6 +29,7 @@ load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED +extver = {} diff --git a/src/terraform_cmd.cpp b/src/terraform_cmd.cpp index 8c0c63ac07..68ebafab94 100644 --- a/src/terraform_cmd.cpp +++ b/src/terraform_cmd.cpp @@ -21,38 +21,20 @@ #include "table/strings.h" -/* - * In one terraforming command all four corners of a initial tile can be raised/lowered (though this is not available to the player). - * The maximal amount of height modifications is achieved when raising a complete flat land from sea level to MAX_TILE_HEIGHT or vice versa. - * This affects all corners with a manhatten distance smaller than MAX_TILE_HEIGHT to one of the initial 4 corners. - * Their maximal amount is computed to 4 * \sum_{i=1}^{h_max} i = 2 * h_max * (h_max + 1). - */ -static const int TERRAFORMER_MODHEIGHT_SIZE = 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 1); +#include +#include -/* - * The maximal amount of affected tiles (i.e. the tiles that incident with one of the corners above, is computed similar to - * 1 + 4 * \sum_{i=1}^{h_max} (i+1) = 1 + 2 * h_max + (h_max + 3). - */ -static const int TERRAFORMER_TILE_TABLE_SIZE = 1 + 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 3); +#include "safeguards.h" -struct TerraformerHeightMod { - TileIndex tile; ///< Referenced tile. - byte height; ///< New TileHeight (height of north corner) of the tile. -}; +/** Set of tiles. */ +typedef std::set TileIndexSet; +/** Mapping of tiles to their height. */ +typedef std::map TileIndexToHeightMap; +/** State of the terraforming. */ struct TerraformerState { - int modheight_count; ///< amount of entries in "modheight". - int tile_table_count; ///< amount of entries in "tile_table". - - /** - * Dirty tiles, i.e.\ at least one corner changed. - * - * This array contains the tiles which are or will be marked as dirty. - * - * @ingroup dirty - */ - TileIndex tile_table[TERRAFORMER_TILE_TABLE_SIZE]; - TerraformerHeightMod modheight[TERRAFORMER_MODHEIGHT_SIZE]; ///< Height modifications. + TileIndexSet dirty_tiles; ///< The tiles that need to be redrawn. + TileIndexToHeightMap tile_to_new_height; ///< The tiles for which the height has changed. }; TileIndex _terraform_err_tile; ///< first tile we couldn't terraform @@ -66,14 +48,8 @@ TileIndex _terraform_err_tile; ///< first tile we couldn't terraform */ static int TerraformGetHeightOfTile(const TerraformerState *ts, TileIndex tile) { - const TerraformerHeightMod *mod = ts->modheight; - - for (int count = ts->modheight_count; count != 0; count--, mod++) { - if (mod->tile == tile) return mod->height; - } - - /* TileHeight unchanged so far, read value from map. */ - return TileHeight(tile); + TileIndexToHeightMap::const_iterator it = ts->tile_to_new_height.find(tile); + return it != ts->tile_to_new_height.end() ? it->second : TileHeight(tile); } /** @@ -85,26 +61,7 @@ static int TerraformGetHeightOfTile(const TerraformerState *ts, TileIndex tile) */ static void TerraformSetHeightOfTile(TerraformerState *ts, TileIndex tile, int height) { - /* Find tile in the "modheight" table. - * Note: In a normal user-terraform command the tile will not be found in the "modheight" table. - * But during house- or industry-construction multiple corners can be terraformed at once. */ - TerraformerHeightMod *mod = ts->modheight; - int count = ts->modheight_count; - - while ((count > 0) && (mod->tile != tile)) { - mod++; - count--; - } - - /* New entry? */ - if (count == 0) { - assert(ts->modheight_count < TERRAFORMER_MODHEIGHT_SIZE); - ts->modheight_count++; - } - - /* Finally store the new value */ - mod->tile = tile; - mod->height = (byte)height; + ts->tile_to_new_height[tile] = height; } /** @@ -116,15 +73,7 @@ static void TerraformSetHeightOfTile(TerraformerState *ts, TileIndex tile, int h */ static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile) { - int count = ts->tile_table_count; - - for (TileIndex *t = ts->tile_table; count != 0; count--, t++) { - if (*t == tile) return; - } - - assert(ts->tile_table_count < TERRAFORMER_TILE_TABLE_SIZE); - - ts->tile_table[ts->tile_table_count++] = tile; + ts->dirty_tiles.insert(tile); } /** @@ -157,7 +106,7 @@ static CommandCost TerraformTileHeight(TerraformerState *ts, TileIndex tile, int /* Check range of destination height */ if (height < 0) return_cmd_error(STR_ERROR_ALREADY_AT_SEA_LEVEL); - if (height > (int)MAX_TILE_HEIGHT) return_cmd_error(STR_ERROR_TOO_HIGH); + if (height > _settings_game.construction.max_heightlevel) return_cmd_error(STR_ERROR_TOO_HIGH); /* * Check if the terraforming has any effect. @@ -245,8 +194,6 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin int direction = (p2 != 0 ? 1 : -1); TerraformerState ts; - ts.modheight_count = ts.tile_table_count = 0; - /* Compute the costs and the terraforming result in a model of the landscape */ if ((p1 & SLOPE_W) != 0 && tile + TileDiffXY(1, 0) < MapSize()) { TileIndex t = tile + TileDiffXY(1, 0); @@ -280,10 +227,8 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin * Pass == 0: Collect tileareas which are caused to be auto-cleared. * Pass == 1: Collect the actual cost. */ for (int pass = 0; pass < 2; pass++) { - TileIndex *ti = ts.tile_table; - - for (int count = ts.tile_table_count; count != 0; count--, ti++) { - TileIndex tile = *ti; + for (TileIndexSet::const_iterator it = ts.dirty_tiles.begin(); it != ts.dirty_tiles.end(); it++) { + TileIndex tile = *it; assert(tile < MapSize()); /* MP_VOID tiles can be terraformed but as tunnels and bridges @@ -309,10 +254,20 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin if (pass == 0) { /* Check if bridge would take damage */ - if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && - GetBridgeHeight(GetSouthernBridgeEnd(tile)) <= z_max) { - _terraform_err_tile = tile; // highlight the tile under the bridge - return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) { + int bridge_height = GetBridgeHeight(GetSouthernBridgeEnd(tile)); + + /* Check if bridge would take damage. */ + if (direction == 1 && bridge_height <= z_max) { + _terraform_err_tile = tile; // highlight the tile under the bridge + return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + } + + /* Is the bridge above not too high afterwards? */ + if (direction == -1 && bridge_height > (z_min + _settings_game.construction.max_bridge_height)) { + _terraform_err_tile = tile; + return_cmd_error(STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND); + } } /* Check if tunnel would take damage */ if (direction == -1 && IsTunnelInWay(tile, z_min)) { @@ -349,34 +304,106 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin } Company *c = Company::GetIfValid(_current_company); - if (c != NULL && (int)GB(c->terraform_limit, 16, 16) < ts.modheight_count) { + if (c != NULL && GB(c->terraform_limit, 16, 16) < ts.tile_to_new_height.size()) { return_cmd_error(STR_ERROR_TERRAFORM_LIMIT_REACHED); } if (flags & DC_EXEC) { /* change the height */ - { - int count; - TerraformerHeightMod *mod; + for (TileIndexToHeightMap::const_iterator it = ts.tile_to_new_height.begin(); + it != ts.tile_to_new_height.end(); it++) { + TileIndex tile = it->first; + int height = it->second; - mod = ts.modheight; - for (count = ts.modheight_count; count != 0; count--, mod++) { - TileIndex til = mod->tile; - - SetTileHeight(til, mod->height); - } + SetTileHeight(tile, (uint)height); } - /* finally mark the dirty tiles dirty */ - { - int count; - TileIndex *ti = ts.tile_table; - for (count = ts.tile_table_count; count != 0; count--, ti++) { - MarkTileDirtyByTile(*ti); + /* Finally mark the dirty tiles dirty */ + for (TileIndexSet::const_iterator it = ts.dirty_tiles.begin(); it != ts.dirty_tiles.end(); it++) { + MarkTileDirtyByTile(*it); + + int height = TerraformGetHeightOfTile(&ts, *it); + + /* Now, if we alter the height of the map edge, we need to take care + * about repainting the affected areas outside map as well. + * Remember: + * Outside map, we assume that our landscape descends to + * height zero as fast as possible. + * Those simulated tiles (they don't exist as datastructure, + * only as concept in code) need to be repainted properly, + * otherwise we will get ugly glitches. + * + * Furthermore, note that we have to take care about the possibility, + * that landscape was higher before the change, + * so also tiles a bit outside need to be repainted. + */ + int x = TileX(*it); + int y = TileY(*it); + if (x == 0) { + if (y == 0) { + /* Height of the northern corner is altered. */ + for (int cx = 0; cx >= -height - 1; cx--) { + for (int cy = 0; cy >= -height - 1; cy--) { + /* This means, tiles in the sector north of that + * corner need to be repainted. + */ + if (cx + cy >= -height - 2) { + /* But only tiles that actually might have changed. */ + MarkTileDirtyByTileOutsideMap(cx, cy); + } + } + } + } else if (y < (int)MapMaxY()) { + for (int cx = 0; cx >= -height - 1; cx--) { + MarkTileDirtyByTileOutsideMap(cx, y); + } + } else { + for (int cx = 0; cx >= -height - 1; cx--) { + for (int cy = (int)MapMaxY(); cy <= (int)MapMaxY() + height + 1; cy++) { + if (cx + ((int)MapMaxY() - cy) >= -height - 2) { + MarkTileDirtyByTileOutsideMap(cx, cy); + } + } + } + } + } else if (x < (int)MapMaxX()) { + if (y == 0) { + for (int cy = 0; cy >= -height - 1; cy--) { + MarkTileDirtyByTileOutsideMap(x, cy); + } + } else if (y < (int)MapMaxY()) { + /* Nothing to be done here, we are inside the map. */ + } else { + for (int cy = (int)MapMaxY(); cy <= (int)MapMaxY() + height + 1; cy++) { + MarkTileDirtyByTileOutsideMap(x, cy); + } + } + } else { + if (y == 0) { + for (int cx = (int)MapMaxX(); cx <= (int)MapMaxX() + height + 1; cx++) { + for (int cy = 0; cy >= -height - 1; cy--) { + if (((int)MapMaxX() - cx) + cy >= -height - 2) { + MarkTileDirtyByTileOutsideMap(cx, cy); + } + } + } + } else if (y < (int)MapMaxY()) { + for (int cx = (int)MapMaxX(); cx <= (int)MapMaxX() + height + 1; cx++) { + MarkTileDirtyByTileOutsideMap(cx, y); + } + } else { + for (int cx = (int)MapMaxX(); cx <= (int)MapMaxX() + height + 1; cx++) { + for (int cy = (int)MapMaxY(); cy <= (int)MapMaxY() + height + 1; cy++) { + if (((int)MapMaxX() - cx) + ((int)MapMaxY() - cy) >= -height - 2) { + MarkTileDirtyByTileOutsideMap(cx, cy); + } + } + } + } } } - if (c != NULL) c->terraform_limit -= ts.modheight_count << 16; + if (c != NULL) c->terraform_limit -= ts.tile_to_new_height.size() << 16; } return total_cost; } @@ -413,7 +440,7 @@ CommandCost CmdLevelLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 } /* Check range of destination height */ - if (h > MAX_TILE_HEIGHT) return_cmd_error((oldh == 0) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH); + if (h > _settings_game.construction.max_heightlevel) return_cmd_error((oldh == 0) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH); Money money = GetAvailableMoneyForCommand(); CommandCost cost(EXPENSES_CONSTRUCTION); @@ -424,8 +451,7 @@ CommandCost CmdLevelLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 int limit = (c == NULL ? INT32_MAX : GB(c->terraform_limit, 16, 16)); if (limit == 0) return_cmd_error(STR_ERROR_TERRAFORM_LIMIT_REACHED); - TileArea ta(tile, p1); - TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta); + TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(tile, p1); for (; *iter != INVALID_TILE; ++(*iter)) { TileIndex t = *iter; uint curh = TileHeight(t); diff --git a/src/terraform_gui.cpp b/src/terraform_gui.cpp index d1815ca9b2..acc277249c 100644 --- a/src/terraform_gui.cpp +++ b/src/terraform_gui.cpp @@ -32,15 +32,18 @@ #include "hotkeys.h" #include "engine_base.h" #include "terraform_gui.h" +#include "zoom_func.h" #include "widgets/terraform_widget.h" #include "table/strings.h" +#include "safeguards.h" + void CcTerraform(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); } else { extern TileIndex _terraform_err_tile; SetRedErrorSquare(_terraform_err_tile); @@ -88,7 +91,7 @@ static void GenerateRockyArea(TileIndex end, TileIndex start) success = true; } - if (success && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, end); + if (success && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, end); } /** @@ -207,12 +210,7 @@ struct TerraformToolbarWindow : Window { break; case WID_TT_PLACE_OBJECT: // Place object button - /* Don't show the place object button when there are no objects to place. */ - if (ObjectClass::GetUIClassCount() == 0) return; - if (HandlePlacePushButton(this, WID_TT_PLACE_OBJECT, SPR_CURSOR_TRANSMITTER, HT_RECT)) { - ShowBuildObjectPicker(this); - this->last_user_action = widget; - } + ShowBuildObjectPicker(); break; default: NOT_REACHED(); @@ -246,10 +244,6 @@ struct TerraformToolbarWindow : Window { PlaceProc_Sign(tile); break; - case WID_TT_PLACE_OBJECT: // Place object button - PlaceProc_Object(tile); - break; - default: NOT_REACHED(); } } @@ -283,7 +277,6 @@ struct TerraformToolbarWindow : Window { virtual void OnPlaceObjectAbort() { - DeleteWindowById(WC_BUILD_OBJECT, 0); this->RaiseButtons(); } @@ -341,7 +334,7 @@ static const NWidgetPart _nested_terraform_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_PLACE_SIGN), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_SIGN, STR_SCENEDIT_TOOLBAR_PLACE_SIGN), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_TT_SHOW_PLACE_OBJECT), - NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_PLACE_OBJECT), SetMinimalSize(22, 22), + NWidget(WWT_PUSHIMGBTN, COLOUR_DARK_GREEN, WID_TT_PLACE_OBJECT), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_SCENEDIT_TOOLBAR_PLACE_OBJECT), EndContainer(), EndContainer(), @@ -358,7 +351,7 @@ static WindowDesc _terraform_desc( /** * Show the toolbar for terraforming in the game. * @param link The toolbar we might want to link to. - * @return The allocated toolbar. + * @return The allocated toolbar if the window was newly opened, else \c NULL. */ Window *ShowTerraformToolbar(Window *link) { @@ -409,7 +402,7 @@ static void CommonRaiseLowerBigLand(TileIndex tile, int mode) if (ta.w == 0 || ta.h == 0) return; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); uint h; if (mode != 0) { @@ -552,6 +545,14 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { } } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (widget != WID_ETT_DOTS) return; + + size->width = max(size->width, ScaleGUITrad(59)); + size->height = max(size->height, ScaleGUITrad(31)); + } + virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_ETT_DOTS) return; @@ -564,7 +565,7 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { assert(n != 0); do { - DrawSprite(SPR_WHITE_POINT, PAL_NONE, center_x + coords[0], center_y + coords[1]); + DrawSprite(SPR_WHITE_POINT, PAL_NONE, center_x + ScaleGUITrad(coords[0]), center_y + ScaleGUITrad(coords[1])); coords += 2; } while (--n); } @@ -605,10 +606,7 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { break; case WID_ETT_PLACE_OBJECT: // Place transmitter button - if (HandlePlacePushButton(this, WID_ETT_PLACE_OBJECT, SPR_CURSOR_TRANSMITTER, HT_RECT)) { - ShowBuildObjectPicker(this); - this->last_user_action = widget; - } + ShowBuildObjectPicker(); break; case WID_ETT_INCREASE_SIZE: @@ -676,10 +674,6 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT); break; - case WID_ETT_PLACE_OBJECT: // Place transmitter button - PlaceProc_Object(tile); - break; - default: NOT_REACHED(); } } @@ -752,7 +746,7 @@ static WindowDesc _scen_edit_land_gen_desc( /** * Show the toolbar for terraforming in the scenario editor. - * @return The allocated toolbar. + * @return The allocated toolbar if the window was newly opened, else \c NULL. */ Window *ShowEditorTerraformToolbar() { diff --git a/src/textbuf.cpp b/src/textbuf.cpp index 766396fc66..3d219e916d 100644 --- a/src/textbuf.cpp +++ b/src/textbuf.cpp @@ -20,13 +20,17 @@ #include "window_func.h" #include "core/alloc_func.hpp" +#include "safeguards.h" + /** * Try to retrieve the current clipboard contents. * * @note OS-specific function. + * @param buffer Clipboard content. + * @param last The pointer to the last element of the destination buffer * @return True if some text could be retrieved. */ -bool GetClipboardContents(char *buffer, size_t buff_len); +bool GetClipboardContents(char *buffer, const char *last); int _caret_timer; @@ -224,7 +228,7 @@ bool Textbuf::InsertClipboard() { char utf8_buf[512]; - if (!GetClipboardContents(utf8_buf, lengthof(utf8_buf))) return false; + if (!GetClipboardContents(utf8_buf, lastof(utf8_buf))) return false; return this->InsertString(utf8_buf, false); } @@ -404,7 +408,7 @@ void Textbuf::Assign(StringID string) */ void Textbuf::Assign(const char *text) { - ttd_strlcpy(this->buf, text, this->max_bytes); + strecpy(this->buf, text, &this->buf[this->max_bytes - 1]); this->UpdateSize(); } @@ -415,7 +419,7 @@ void Textbuf::Print(const char *format, ...) { va_list va; va_start(va, format); - vsnprintf(this->buf, this->max_bytes, format, va); + vseprintf(this->buf, &this->buf[this->max_bytes - 1], format, va); va_end(va); this->UpdateSize(); } @@ -473,16 +477,10 @@ HandleKeyPressResult Textbuf::HandleKeyPress(WChar key, uint16 keycode) case WKC_RETURN: case WKC_NUM_ENTER: return HKPR_CONFIRM; -#ifdef WITH_COCOA - case (WKC_META | 'V'): -#endif case (WKC_CTRL | 'V'): edited = this->InsertClipboard(); break; -#ifdef WITH_COCOA - case (WKC_META | 'U'): -#endif case (WKC_CTRL | 'U'): this->DeleteAll(); edited = true; diff --git a/src/texteff.cpp b/src/texteff.cpp index fd20017161..cdb8b8ce6a 100644 --- a/src/texteff.cpp +++ b/src/texteff.cpp @@ -17,6 +17,8 @@ #include "viewport_func.h" #include "settings_type.h" +#include "safeguards.h" + /** Container for all information about a text effect */ struct TextEffect : public ViewportSign { uint64 params_1; ///< DParam parameter @@ -112,7 +114,7 @@ void DrawTextEffects(DrawPixelInfo *dpi) for (TextEffect *te = _text_effects.Begin(); te != end; te++) { if (te->string_id == INVALID_STRING_ID) continue; if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { - ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, 0, te->params_1, te->params_2); + ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, STR_NULL, te->params_1, te->params_2); } } } diff --git a/src/textfile_gui.cpp b/src/textfile_gui.cpp index 987fa09cd1..3efd98497e 100644 --- a/src/textfile_gui.cpp +++ b/src/textfile_gui.cpp @@ -21,12 +21,22 @@ #include "table/strings.h" +#if defined(WITH_ZLIB) +#include +#endif + +#if defined(WITH_LZMA) +#include +#endif + +#include "safeguards.h" /** Widgets for the textfile window. */ static const NWidgetPart _nested_textfile_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_TF_CAPTION), SetDataTip(STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_TEXTBTN, COLOUR_MAUVE, WID_TF_WRAPTEXT), SetDataTip(STR_TEXTFILE_WRAP_TEXT, STR_TEXTFILE_WRAP_TEXT_TOOLTIP), NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -57,6 +67,9 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) this->hscroll = this->GetScrollbar(WID_TF_HSCROLLBAR); this->FinishInitNested(); this->GetWidget(WID_TF_CAPTION)->SetDataTip(STR_TEXTFILE_README_CAPTION + file_type, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS); + + this->hscroll->SetStepSize(10); // Speed up horizontal scrollbar + this->vscroll->SetStepSize(FONT_HEIGHT_MONO); } /* virtual */ TextfileWindow::~TextfileWindow() @@ -64,12 +77,27 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) free(this->text); } +/** + * Get the total height of the content displayed in this window, if wrapping is disabled. + * @return the height in pixels + */ +uint TextfileWindow::GetContentHeight() +{ + int max_width = this->GetWidget(WID_TF_BACKGROUND)->current_x - WD_FRAMETEXT_LEFT - WD_FRAMERECT_RIGHT; + + uint height = 0; + for (uint i = 0; i < this->lines.Length(); i++) { + height += GetStringHeight(this->lines[i], max_width, FS_MONO); + } + + return height; +} + /* virtual */ void TextfileWindow::UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_TF_BACKGROUND: - this->line_height = FONT_HEIGHT_MONO + 2; - resize->height = this->line_height; + resize->height = 1; size->height = 4 * resize->height + TOP_SPACING + BOTTOM_SPACING; // At least 4 lines are visible. size->width = max(200u, size->width); // At least 200 pixels wide. @@ -77,29 +105,60 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) } } +/** Set scrollbars to the right lengths. */ +void TextfileWindow::SetupScrollbars() +{ + if (IsWidgetLowered(WID_TF_WRAPTEXT)) { + this->vscroll->SetCount(this->GetContentHeight()); + this->hscroll->SetCount(0); + } else { + uint max_length = 0; + for (uint i = 0; i < this->lines.Length(); i++) { + max_length = max(max_length, GetStringBoundingBox(this->lines[i], FS_MONO).width); + } + this->vscroll->SetCount(this->lines.Length() * FONT_HEIGHT_MONO); + this->hscroll->SetCount(max_length + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT); + } + + this->SetWidgetDisabledState(WID_TF_HSCROLLBAR, IsWidgetLowered(WID_TF_WRAPTEXT)); +} + +/* virtual */ void TextfileWindow::OnClick(Point pt, int widget, int click_count) +{ + switch (widget) { + case WID_TF_WRAPTEXT: + this->ToggleWidgetLoweredState(WID_TF_WRAPTEXT); + this->SetupScrollbars(); + this->InvalidateData(); + break; + } +} + /* virtual */ void TextfileWindow::DrawWidget(const Rect &r, int widget) const { if (widget != WID_TF_BACKGROUND) return; - int width = r.right - r.left + 1 - WD_BEVEL_LEFT - WD_BEVEL_RIGHT; - int height = r.bottom - r.top + 1 - WD_BEVEL_LEFT - WD_BEVEL_RIGHT; + const int x = r.left + WD_FRAMETEXT_LEFT; + const int y = r.top + WD_FRAMETEXT_TOP; + const int right = r.right - WD_FRAMETEXT_RIGHT; + const int bottom = r.bottom - WD_FRAMETEXT_BOTTOM; DrawPixelInfo new_dpi; - if (!FillDrawPixelInfo(&new_dpi, r.left + WD_BEVEL_LEFT, r.top, width, height)) return; + if (!FillDrawPixelInfo(&new_dpi, x, y, right - x + 1, bottom - y + 1)) return; DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &new_dpi; - int left, right; - if (_current_text_dir == TD_RTL) { - left = width + WD_BEVEL_RIGHT - WD_FRAMETEXT_RIGHT - this->hscroll->GetCount(); - right = width + WD_BEVEL_RIGHT - WD_FRAMETEXT_RIGHT - 1 + this->hscroll->GetPosition(); - } else { - left = WD_FRAMETEXT_LEFT - WD_BEVEL_LEFT - this->hscroll->GetPosition(); - right = WD_FRAMETEXT_LEFT - WD_BEVEL_LEFT + this->hscroll->GetCount() - 1; - } - int top = TOP_SPACING; - for (uint i = 0; i < this->vscroll->GetCapacity() && i + this->vscroll->GetPosition() < this->lines.Length(); i++) { - DrawString(left, right, top + i * this->line_height, this->lines[i + this->vscroll->GetPosition()], TC_WHITE, SA_LEFT, false, FS_MONO); + /* Draw content (now coordinates given to DrawString* are local to the new clipping region). */ + int line_height = FONT_HEIGHT_MONO; + int y_offset = -this->vscroll->GetPosition(); + + for (uint i = 0; i < this->lines.Length(); i++) { + if (IsWidgetLowered(WID_TF_WRAPTEXT)) { + y_offset = DrawStringMultiLine(0, right - x, y_offset, bottom - y, this->lines[i], TC_WHITE, SA_TOP | SA_LEFT, false, FS_MONO); + } else { + DrawString(-this->hscroll->GetPosition(), right - x, y_offset, this->lines[i], TC_WHITE, SA_TOP | SA_LEFT, false, FS_MONO); + y_offset += line_height; // margin to previous element + } } _cur_dpi = old_dpi; @@ -109,6 +168,8 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) { this->vscroll->SetCapacityFromWidget(this, WID_TF_BACKGROUND, TOP_SPACING + BOTTOM_SPACING); this->hscroll->SetCapacityFromWidget(this, WID_TF_BACKGROUND); + + this->SetupScrollbars(); } /* virtual */ void TextfileWindow::Reset() @@ -140,8 +201,119 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) #endif /* WITH_FREETYPE */ } +#if defined(WITH_ZLIB) + /** - * Loads the textfile text from file, and setup #lines, #max_length, and both scrollbars. + * Do an in-memory gunzip operation. This works on a raw deflate stream, + * or a file with gzip or zlib header. + * @param bufp A pointer to a buffer containing the input data. This + * buffer will be freed and replaced by a buffer containing + * the uncompressed data. + * @param sizep A pointer to the buffer size. Before the call, the value + * pointed to should contain the size of the input buffer. + * After the call, it contains the size of the uncompressed + * data. + * + * When decompressing fails, *bufp is set to NULL and *sizep to 0. The + * compressed buffer passed in is still freed in this case. + */ +static void Gunzip(byte **bufp, size_t *sizep) +{ + static const int BLOCKSIZE = 8192; + byte *buf = NULL; + size_t alloc_size = 0; + z_stream z; + int res; + + memset(&z, 0, sizeof(z)); + z.next_in = *bufp; + z.avail_in = *sizep; + + /* window size = 15, add 32 to enable gzip or zlib header processing */ + res = inflateInit2(&z, 15 + 32); + /* Z_BUF_ERROR just means we need more space */ + while (res == Z_OK || (res == Z_BUF_ERROR && z.avail_out == 0)) { + /* When we get here, we're either just starting, or + * inflate is out of output space - allocate more */ + alloc_size += BLOCKSIZE; + z.avail_out += BLOCKSIZE; + buf = ReallocT(buf, alloc_size); + z.next_out = buf + alloc_size - z.avail_out; + res = inflate(&z, Z_FINISH); + } + + free(*bufp); + inflateEnd(&z); + + if (res == Z_STREAM_END) { + *bufp = buf; + *sizep = alloc_size - z.avail_out; + } else { + /* Something went wrong */ + *bufp = NULL; + *sizep = 0; + free(buf); + } +} +#endif + +#if defined(WITH_LZMA) + +/** + * Do an in-memory xunzip operation. This works on a .xz or (legacy) + * .lzma file. + * @param bufp A pointer to a buffer containing the input data. This + * buffer will be freed and replaced by a buffer containing + * the uncompressed data. + * @param sizep A pointer to the buffer size. Before the call, the value + * pointed to should contain the size of the input buffer. + * After the call, it contains the size of the uncompressed + * data. + * + * When decompressing fails, *bufp is set to NULL and *sizep to 0. The + * compressed buffer passed in is still freed in this case. + */ +static void Xunzip(byte **bufp, size_t *sizep) +{ + static const int BLOCKSIZE = 8192; + byte *buf = NULL; + size_t alloc_size = 0; + lzma_stream z = LZMA_STREAM_INIT; + int res; + + z.next_in = *bufp; + z.avail_in = *sizep; + + res = lzma_auto_decoder(&z, UINT64_MAX, LZMA_CONCATENATED); + /* Z_BUF_ERROR just means we need more space */ + while (res == LZMA_OK || (res == LZMA_BUF_ERROR && z.avail_out == 0)) { + /* When we get here, we're either just starting, or + * inflate is out of output space - allocate more */ + alloc_size += BLOCKSIZE; + z.avail_out += BLOCKSIZE; + buf = ReallocT(buf, alloc_size); + z.next_out = buf + alloc_size - z.avail_out; + res = lzma_code(&z, LZMA_FINISH); + } + + free(*bufp); + lzma_end(&z); + + if (res == LZMA_STREAM_END) { + *bufp = buf; + *sizep = alloc_size - z.avail_out; + } else { + /* Something went wrong */ + *bufp = NULL; + *sizep = 0; + free(buf); + } +} +#endif + + +/** + * Loads the textfile text from file and setup #lines. */ /* virtual */ void TextfileWindow::LoadTextfile(const char *textfile, Subdirectory dir) { @@ -154,12 +326,31 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) FILE *handle = FioFOpenFile(textfile, "rb", dir, &filesize); if (handle == NULL) return; - this->text = ReallocT(this->text, filesize + 1); + this->text = ReallocT(this->text, filesize); size_t read = fread(this->text, 1, filesize, handle); fclose(handle); if (read != filesize) return; +#if defined(WITH_ZLIB) || defined(WITH_LZMA) + const char *suffix = strrchr(textfile, '.'); + if (suffix == NULL) return; +#endif + +#if defined(WITH_ZLIB) + /* In-place gunzip */ + if (strcmp(suffix, ".gz") == 0) Gunzip((byte**)&this->text, &filesize); +#endif + +#if defined(WITH_LZMA) + /* In-place xunzip */ + if (strcmp(suffix, ".xz") == 0) Xunzip((byte**)&this->text, &filesize); +#endif + + if (!this->text) return; + + /* Add space for trailing \0 */ + this->text = ReallocT(this->text, filesize + 1); this->text[filesize] = '\0'; /* Replace tabs and line feeds with a space since str_validate removes those. */ @@ -183,16 +374,6 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc) } CheckForMissingGlyphs(true, this); - - /* Initialize scrollbars */ - this->vscroll->SetCount(this->lines.Length()); - - this->max_length = 0; - for (uint i = 0; i < this->lines.Length(); i++) { - this->max_length = max(this->max_length, GetStringBoundingBox(this->lines[i], FS_MONO).width); - } - this->hscroll->SetCount(this->max_length + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT); - this->hscroll->SetStepSize(10); // Speed up horizontal scrollbar } /** @@ -221,12 +402,25 @@ const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filenam char *slash = strrchr(file_path, PATHSEPCHAR); if (slash == NULL) return NULL; - seprintf(slash + 1, lastof(file_path), "%s_%s.txt", prefix, GetCurrentLanguageIsoCode()); - if (FioCheckFileExists(file_path, dir)) return file_path; + static const char * const exts[] = { + "txt", +#if defined(WITH_ZLIB) + "txt.gz", +#endif +#if defined(WITH_LZMA) + "txt.xz", +#endif + }; + + for (size_t i = 0; i < lengthof(exts); i++) { + seprintf(slash + 1, lastof(file_path), "%s_%s.%s", prefix, GetCurrentLanguageIsoCode(), exts[i]); + if (FioCheckFileExists(file_path, dir)) return file_path; - seprintf(slash + 1, lastof(file_path), "%s_%.2s.txt", prefix, GetCurrentLanguageIsoCode()); - if (FioCheckFileExists(file_path, dir)) return file_path; + seprintf(slash + 1, lastof(file_path), "%s_%.2s.%s", prefix, GetCurrentLanguageIsoCode(), exts[i]); + if (FioCheckFileExists(file_path, dir)) return file_path; - seprintf(slash + 1, lastof(file_path), "%s.txt", prefix); - return FioCheckFileExists(file_path, dir) ? file_path : NULL; + seprintf(slash + 1, lastof(file_path), "%s.%s", prefix, exts[i]); + if (FioCheckFileExists(file_path, dir)) return file_path; + } + return NULL; } diff --git a/src/textfile_gui.h b/src/textfile_gui.h index a2d2af8f92..9495fa3f08 100644 --- a/src/textfile_gui.h +++ b/src/textfile_gui.h @@ -22,12 +22,10 @@ const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filenam /** Window for displaying a textfile */ struct TextfileWindow : public Window, MissingGlyphSearcher { TextfileType file_type; ///< Type of textfile to view. - int line_height; ///< Height of a line in the display widget. Scrollbar *vscroll; ///< Vertical scrollbar. Scrollbar *hscroll; ///< Horizontal scrollbar. char *text; ///< Lines of text from the NewGRF's textfile. SmallVector lines; ///< #text, split into lines in a table with lines. - uint max_length; ///< The longest line in the textfile (in pixels). uint search_iterator; ///< Iterator for the font check search. static const int TOP_SPACING = WD_FRAMETEXT_TOP; ///< Additional spacing at the top of the #WID_TF_BACKGROUND widget. @@ -36,6 +34,7 @@ struct TextfileWindow : public Window, MissingGlyphSearcher { TextfileWindow(TextfileType file_type); virtual ~TextfileWindow(); virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize); + virtual void OnClick(Point pt, int widget, int click_count); virtual void DrawWidget(const Rect &r, int widget) const; virtual void OnResize(); virtual void Reset(); @@ -44,6 +43,9 @@ struct TextfileWindow : public Window, MissingGlyphSearcher { virtual bool Monospace(); virtual void SetFontNames(FreeTypeSettings *settings, const char *font_name); virtual void LoadTextfile(const char *textfile, Subdirectory dir); +private: + uint GetContentHeight(); + void SetupScrollbars(); }; #endif /* TEXTFILE_GUI_H */ diff --git a/src/tgp.cpp b/src/tgp.cpp index 6d17fd8534..436870b412 100644 --- a/src/tgp.cpp +++ b/src/tgp.cpp @@ -17,6 +17,8 @@ #include "core/random_func.hpp" #include "landscape_type.h" +#include "safeguards.h" + /* * * Quickie guide to Perlin Noise @@ -153,7 +155,6 @@ /** Fixed point type for heights */ typedef int16 height_t; static const int height_decimal_bits = 4; -static const height_t _invalid_height = -32768; /** Fixed point array for amplitudes (and percent values) */ typedef int amplitude_t; @@ -163,10 +164,12 @@ static const int amplitude_decimal_bits = 10; struct HeightMap { height_t *h; //< array of heights - uint dim_x; //< height map size_x MapSizeX() + 1 - uint total_size; //< height map total size - uint size_x; //< MapSizeX() - uint size_y; //< MapSizeY() + /* Even though the sizes are always positive, there are many cases where + * X and Y need to be signed integers due to subtractions. */ + int dim_x; //< height map size_x MapSizeX() + 1 + int total_size; //< height map total size + int size_x; //< MapSizeX() + int size_y; //< MapSizeY() /** * Height map accessor @@ -200,35 +203,89 @@ static HeightMap _height_map = {NULL, 0, 0, 0, 0}; /** Walk through all items of _height_map.h */ #define FOR_ALL_TILES_IN_HEIGHT(h) for (h = _height_map.h; h < &_height_map.h[_height_map.total_size]; h++) -/** Maximum index into array of noise amplitudes */ -static const int TGP_FREQUENCY_MAX = 6; +/** Maximum number of TGP noise frequencies. */ +static const int MAX_TGP_FREQUENCIES = 10; + +/** Desired water percentage (100% == 1024) - indexed by _settings_game.difficulty.quantity_sea_lakes */ +static const amplitude_t _water_percent[4] = {70, 170, 270, 420}; /** - * Noise amplitudes (multiplied by 1024) - * - indexed by "smoothness setting" and log2(frequency) + * Gets the maximum allowed height while generating a map based on + * mapsize, terraintype, and the maximum height level. + * @return The maximum height for the map generation. + * @note Values should never be lower than 3 since the minimum snowline height is 2. */ -static const amplitude_t _amplitudes_by_smoothness_and_frequency[4][TGP_FREQUENCY_MAX + 1] = { - /* lowest frequncy.... ...highest (every corner) */ - /* Very smooth */ - {16000, 5600, 1968, 688, 240, 16, 16}, - /* Smooth */ - {16000, 16000, 6448, 3200, 1024, 128, 16}, - /* Rough */ - {16000, 19200, 12800, 8000, 3200, 256, 64}, - /* Very Rough */ - {24000, 16000, 19200, 16000, 8000, 512, 320}, -}; +static height_t TGPGetMaxHeight() +{ + /** + * Desired maximum height - indexed by: + * - _settings_game.difficulty.terrain_type + * - min(MapLogX(), MapLogY()) - MIN_MAP_SIZE_BITS + * + * It is indexed by map size as well as terrain type since the map size limits the height of + * a usable mountain. For example, on a 64x64 map a 24 high single peak mountain (as if you + * raised land 24 times in the center of the map) will leave only a ring of about 10 tiles + * around the mountain to build on. On a 4096x4096 map, it won't cover any major part of the map. + */ + static const int max_height[5][MAX_MAP_SIZE_BITS - MIN_MAP_SIZE_BITS + 1] = { + /* 64 128 256 512 1024 2048 4096 */ + { 3, 3, 3, 3, 4, 5, 7 }, ///< Very flat + { 5, 7, 8, 9, 14, 19, 31 }, ///< Flat + { 8, 9, 10, 15, 23, 37, 61 }, ///< Hilly + { 10, 11, 17, 19, 49, 63, 73 }, ///< Mountainous + { 12, 19, 25, 31, 67, 75, 87 }, ///< Alpinist + }; + + int max_height_from_table = max_height[_settings_game.difficulty.terrain_type][min(MapLogX(), MapLogY()) - MIN_MAP_SIZE_BITS]; + return I2H(min(max_height_from_table, _settings_game.construction.max_heightlevel)); +} -/** Desired water percentage (100% == 1024) - indexed by _settings_game.difficulty.quantity_sea_lakes */ -static const amplitude_t _water_percent[4] = {20, 80, 250, 400}; - -/** Desired maximum height - indexed by _settings_game.difficulty.terrain_type */ -static const int8 _max_height[4] = { - 6, ///< Very flat - 9, ///< Flat - 12, ///< Hilly - 15, ///< Mountainous -}; +/** + * Get the amplitude associated with the currently selected + * smoothness and maximum height level. + * @param frequency The frequency to get the amplitudes for + * @return The amplitudes to apply to the map. + */ +static amplitude_t GetAmplitude(int frequency) +{ + /* Base noise amplitudes (multiplied by 1024) and indexed by "smoothness setting" and log2(frequency). */ + static const amplitude_t amplitudes[][7] = { + /* lowest frequency ...... highest (every corner) */ + {16000, 5600, 1968, 688, 240, 16, 16}, ///< Very smooth + {24000, 12800, 6400, 2700, 1024, 128, 16}, ///< Smooth + {32000, 19200, 12800, 8000, 3200, 256, 64}, ///< Rough + {48000, 24000, 19200, 16000, 8000, 512, 320}, ///< Very rough + }; + /* + * Extrapolation factors for ranges before the table. + * The extrapolation is needed to account for the higher map heights. They need larger + * areas with a particular gradient so that we are able to create maps without too + * many steep slopes up to the wanted height level. It's definitely not perfect since + * it will bring larger rectangles with similar slopes which makes the rectangular + * behaviour of TGP more noticable. However, these height differentiations cannot + * happen over much smaller areas; we basically double the "range" to give a similar + * slope for every doubling of map height. + */ + static const double extrapolation_factors[] = { 3.3, 2.8, 2.3, 1.8 }; + + int smoothness = _settings_game.game_creation.tgen_smoothness; + + /* Get the table index, and return that value if possible. */ + int index = frequency - MAX_TGP_FREQUENCIES + lengthof(amplitudes[smoothness]); + amplitude_t amplitude = amplitudes[smoothness][max(0, index)]; + if (index >= 0) return amplitude; + + /* We need to extrapolate the amplitude. */ + double extrapolation_factor = extrapolation_factors[smoothness]; + int height_range = I2H(16); + do { + amplitude = (amplitude_t)(extrapolation_factor * (double)amplitude); + height_range <<= 1; + index++; + } while (index < 0); + + return Clamp((TGPGetMaxHeight() - height_range) / height_range, 0, 1) * amplitude; +} /** * Check if a X/Y set are within the map. @@ -236,9 +293,9 @@ static const int8 _max_height[4] = { * @param y coordinate y * @return true if within the map */ -static inline bool IsValidXY(uint x, uint y) +static inline bool IsValidXY(int x, int y) { - return ((int)x) >= 0 && x < _height_map.size_x && ((int)y) >= 0 && y < _height_map.size_y; + return x >= 0 && x < _height_map.size_x && y >= 0 && y < _height_map.size_y; } @@ -258,8 +315,8 @@ static inline bool AllocHeightMap() _height_map.dim_x = _height_map.size_x + 1; _height_map.h = CallocT(_height_map.total_size); - /* Iterate through height map initialize values */ - FOR_ALL_TILES_IN_HEIGHT(h) *h = _invalid_height; + /* Iterate through height map and initialise values. */ + FOR_ALL_TILES_IN_HEIGHT(h) *h = 0; return true; } @@ -267,7 +324,6 @@ static inline bool AllocHeightMap() /** Free height map */ static inline void FreeHeightMap() { - if (_height_map.h == NULL) return; free(_height_map.h); _height_map.h = NULL; } @@ -279,117 +335,74 @@ static inline void FreeHeightMap() */ static inline height_t RandomHeight(amplitude_t rMax) { - amplitude_t ra = (Random() << 16) | (Random() & 0x0000FFFF); - height_t rh; /* Spread height into range -rMax..+rMax */ - rh = A2H(ra % (2 * rMax + 1) - rMax); - return rh; + return A2H(RandomRange(2 * rMax + 1) - rMax); } /** - * One interpolation and noise round - * - * The heights on the map are generated in an iterative process. - * We start off with a frequency of 1 (log_frequency == 0), and generate heights only for corners on the most coarsest mesh - * (i.e. only for x/y coordinates which are multiples of the minimum edge length). - * - * After this initial step the frequency is doubled (log_frequency incremented) each iteration to generate corners on the next finer mesh. - * The heights of the newly added corners are first set by interpolating the heights from the previous iteration. - * Finally noise with the given amplitude is applied to all corners of the new mesh. - * - * Generation terminates, when the frequency has reached the map size. I.e. the mesh is as fine as the map, and every corner height - * has been set. + * Base Perlin noise generator - fills height map with raw Perlin noise. * - * @param log_frequency frequency (logarithmic) to apply noise for - * @param amplitude Amplitude for the noise - * @return false if we are finished (reached the minimal step size / highest frequency) + * This runs several iterations with increasing precision; the last iteration looks at areas + * of 1 by 1 tiles, the second to last at 2 by 2 tiles and the initial 2**MAX_TGP_FREQUENCIES + * by 2**MAX_TGP_FREQUENCIES tiles. */ -static bool ApplyNoise(uint log_frequency, amplitude_t amplitude) +static void HeightMapGenerate() { - uint size_min = min(_height_map.size_x, _height_map.size_y); - uint step = size_min >> log_frequency; - uint x, y; - /* Trying to apply noise to uninitialized height map */ assert(_height_map.h != NULL); - /* Are we finished? */ - if (step == 0) return false; + int start = max(MAX_TGP_FREQUENCIES - (int)min(MapLogX(), MapLogY()), 0); + bool first = true; + + for (int frequency = start; frequency < MAX_TGP_FREQUENCIES; frequency++) { + const amplitude_t amplitude = GetAmplitude(frequency); + + /* Ignore zero amplitudes; it means our map isn't height enough for this + * amplitude, so ignore it and continue with the next set of amplitude. */ + if (amplitude == 0) continue; - if (log_frequency == 0) { - /* This is first round, we need to establish base heights with step = size_min */ - for (y = 0; y <= _height_map.size_y; y += step) { - for (x = 0; x <= _height_map.size_x; x += step) { - height_t height = (amplitude > 0) ? RandomHeight(amplitude) : 0; - _height_map.height(x, y) = height; + const int step = 1 << (MAX_TGP_FREQUENCIES - frequency - 1); + + if (first) { + /* This is first round, we need to establish base heights with step = size_min */ + for (int y = 0; y <= _height_map.size_y; y += step) { + for (int x = 0; x <= _height_map.size_x; x += step) { + height_t height = (amplitude > 0) ? RandomHeight(amplitude) : 0; + _height_map.height(x, y) = height; + } } + first = false; + continue; } - return true; - } - /* It is regular iteration round. - * Interpolate height values at odd x, even y tiles */ - for (y = 0; y <= _height_map.size_y; y += 2 * step) { - for (x = 0; x < _height_map.size_x; x += 2 * step) { - height_t h00 = _height_map.height(x + 0 * step, y); - height_t h02 = _height_map.height(x + 2 * step, y); - height_t h01 = (h00 + h02) / 2; - _height_map.height(x + 1 * step, y) = h01; + /* It is regular iteration round. + * Interpolate height values at odd x, even y tiles */ + for (int y = 0; y <= _height_map.size_y; y += 2 * step) { + for (int x = 0; x <= _height_map.size_x - 2 * step; x += 2 * step) { + height_t h00 = _height_map.height(x + 0 * step, y); + height_t h02 = _height_map.height(x + 2 * step, y); + height_t h01 = (h00 + h02) / 2; + _height_map.height(x + 1 * step, y) = h01; + } } - } - /* Interpolate height values at odd y tiles */ - for (y = 0; y < _height_map.size_y; y += 2 * step) { - for (x = 0; x <= _height_map.size_x; x += step) { - height_t h00 = _height_map.height(x, y + 0 * step); - height_t h20 = _height_map.height(x, y + 2 * step); - height_t h10 = (h00 + h20) / 2; - _height_map.height(x, y + 1 * step) = h10; + /* Interpolate height values at odd y tiles */ + for (int y = 0; y <= _height_map.size_y - 2 * step; y += 2 * step) { + for (int x = 0; x <= _height_map.size_x; x += step) { + height_t h00 = _height_map.height(x, y + 0 * step); + height_t h20 = _height_map.height(x, y + 2 * step); + height_t h10 = (h00 + h20) / 2; + _height_map.height(x, y + 1 * step) = h10; + } } - } - /* Add noise for next higher frequency (smaller steps) */ - for (y = 0; y <= _height_map.size_y; y += step) { - for (x = 0; x <= _height_map.size_x; x += step) { - _height_map.height(x, y) += RandomHeight(amplitude); + /* Add noise for next higher frequency (smaller steps) */ + for (int y = 0; y <= _height_map.size_y; y += step) { + for (int x = 0; x <= _height_map.size_x; x += step) { + _height_map.height(x, y) += RandomHeight(amplitude); + } } } - - return (step > 1); -} - -/** Base Perlin noise generator - fills height map with raw Perlin noise */ -static void HeightMapGenerate() -{ - uint size_min = min(_height_map.size_x, _height_map.size_y); - uint iteration_round = 0; - amplitude_t amplitude; - bool continue_iteration; - int log_size_min, log_frequency_min; - int log_frequency; - - /* Find first power of two that fits, so that later log_frequency == TGP_FREQUENCY_MAX in the last iteration */ - for (log_size_min = TGP_FREQUENCY_MAX; (1U << log_size_min) < size_min; log_size_min++) { } - log_frequency_min = log_size_min - TGP_FREQUENCY_MAX; - - /* Zero must be part of the iteration, else initialization will fail. */ - assert(log_frequency_min >= 0); - - /* Keep increasing the frequency until we reach the step size equal to one tile */ - do { - log_frequency = iteration_round - log_frequency_min; - if (log_frequency >= 0) { - /* Apply noise for the next frequency */ - assert(log_frequency <= TGP_FREQUENCY_MAX); - amplitude = _amplitudes_by_smoothness_and_frequency[_settings_game.game_creation.tgen_smoothness][log_frequency]; - } else { - /* Amplitude for the low frequencies on big maps is 0, i.e. initialise with zero height */ - amplitude = 0; - } - continue_iteration = ApplyNoise(iteration_round, amplitude); - iteration_round++; - } while (continue_iteration); - assert(log_frequency == TGP_FREQUENCY_MAX); } /** Returns min, max and average height from height map */ @@ -507,7 +520,8 @@ static void HeightMapSineTransform(height_t h_min, height_t h_max) } } -/* Additional map variety is provided by applying different curve maps +/** + * Additional map variety is provided by applying different curve maps * to different parts of the map. A randomized low resolution grid contains * which curve map to use on each part of the make. This filtered non-linearly * to smooth out transitions between curves, so each tile could have between @@ -520,61 +534,55 @@ static void HeightMapSineTransform(height_t h_min, height_t h_max) * The level parameter dictates the resolution of the grid. A low resolution * grid will result in larger continuous areas of a land style, a higher * resolution grid splits the style into smaller areas. - * - * At this point in map generation, all height data has been normalized to 0 - * to 239. + * @param level Rough indication of the size of the grid sections to style. Small level means large grid sections. */ -struct control_point_t { - height_t x; - height_t y; -}; - -struct control_point_list_t { - size_t length; - const control_point_t *list; -}; - -static const control_point_t _curve_map_1[] = { - { 0, 0 }, { 48, 24 }, { 192, 32 }, { 240, 96 } -}; - -static const control_point_t _curve_map_2[] = { - { 0, 0 }, { 16, 24 }, { 128, 32 }, { 192, 64 }, { 240, 144 } -}; - -static const control_point_t _curve_map_3[] = { - { 0, 0 }, { 16, 24 }, { 128, 64 }, { 192, 144 }, { 240, 192 } -}; - -static const control_point_t _curve_map_4[] = { - { 0, 0 }, { 16, 24 }, { 96, 72 }, { 160, 192 }, { 220, 239 }, { 240, 239 } -}; - -static const control_point_list_t _curve_maps[] = { - { lengthof(_curve_map_1), _curve_map_1 }, - { lengthof(_curve_map_2), _curve_map_2 }, - { lengthof(_curve_map_3), _curve_map_3 }, - { lengthof(_curve_map_4), _curve_map_4 }, -}; - static void HeightMapCurves(uint level) { - height_t ht[lengthof(_curve_maps)]; - - /* Set up a grid to choose curve maps based on location */ - uint sx = Clamp(1 << level, 2, 32); - uint sy = Clamp(1 << level, 2, 32); - byte *c = (byte *)alloca(sx * sy); + height_t mh = TGPGetMaxHeight() - I2H(1); // height levels above sea level only + + /** Basically scale height X to height Y. Everything in between is interpolated. */ + struct control_point_t { + height_t x; ///< The height to scale from. + height_t y; ///< The height to scale to. + }; + /* Scaled curve maps; value is in height_ts. */ +#define F(fraction) ((height_t)(fraction * mh)) + const control_point_t curve_map_1[] = { { F(0.0), F(0.0) }, { F(0.8), F(0.13) }, { F(1.0), F(0.4) } }; + const control_point_t curve_map_2[] = { { F(0.0), F(0.0) }, { F(0.53), F(0.13) }, { F(0.8), F(0.27) }, { F(1.0), F(0.6) } }; + const control_point_t curve_map_3[] = { { F(0.0), F(0.0) }, { F(0.53), F(0.27) }, { F(0.8), F(0.57) }, { F(1.0), F(0.8) } }; + const control_point_t curve_map_4[] = { { F(0.0), F(0.0) }, { F(0.4), F(0.3) }, { F(0.7), F(0.8) }, { F(0.92), F(0.99) }, { F(1.0), F(0.99) } }; +#undef F + + /** Helper structure to index the different curve maps. */ + struct control_point_list_t { + size_t length; ///< The length of the curve map. + const control_point_t *list; ///< The actual curve map. + }; + const control_point_list_t curve_maps[] = { + { lengthof(curve_map_1), curve_map_1 }, + { lengthof(curve_map_2), curve_map_2 }, + { lengthof(curve_map_3), curve_map_3 }, + { lengthof(curve_map_4), curve_map_4 }, + }; + + height_t ht[lengthof(curve_maps)]; + MemSetT(ht, 0, lengthof(ht)); + + /* Set up a grid to choose curve maps based on location; attempt to get a somewhat square grid */ + float factor = sqrt((float)_height_map.size_x / (float)_height_map.size_y); + uint sx = Clamp((int)(((1 << level) * factor) + 0.5), 1, 128); + uint sy = Clamp((int)(((1 << level) / factor) + 0.5), 1, 128); + byte *c = AllocaM(byte, sx * sy); for (uint i = 0; i < sx * sy; i++) { - c[i] = Random() % lengthof(_curve_maps); + c[i] = Random() % lengthof(curve_maps); } /* Apply curves */ - for (uint x = 0; x < _height_map.size_x; x++) { + for (int x = 0; x < _height_map.size_x; x++) { /* Get our X grid positions and bi-linear ratio */ - float fx = (float)(sx * x) / _height_map.size_x + 0.5f; + float fx = (float)(sx * x) / _height_map.size_x + 1.0f; uint x1 = (uint)fx; uint x2 = x1; float xr = 2.0f * (fx - x1) - 1.0f; @@ -588,10 +596,10 @@ static void HeightMapCurves(uint level) if (x2 >= sx) x2--; } - for (uint y = 0; y < _height_map.size_y; y++) { + for (int y = 0; y < _height_map.size_y; y++) { /* Get our Y grid position and bi-linear ratio */ - float fy = (float)(sy * y) / _height_map.size_y + 0.5f; + float fy = (float)(sy * y) / _height_map.size_y + 1.0f; uint y1 = (uint)fy; uint y2 = y1; float yr = 2.0f * (fy - y1) - 1.0f; @@ -620,24 +628,36 @@ static void HeightMapCurves(uint level) height_t *h = &_height_map.height(x, y); + /* Do not touch sea level */ + if (*h < I2H(1)) continue; + + /* Only scale above sea level */ + *h -= I2H(1); + /* Apply all curve maps that are used on this tile. */ - for (uint t = 0; t < lengthof(_curve_maps); t++) { + for (uint t = 0; t < lengthof(curve_maps); t++) { if (!HasBit(corner_bits, t)) continue; - const control_point_t *cm = _curve_maps[t].list; - for (uint i = 0; i < _curve_maps[t].length - 1; i++) { + bool found = false; + const control_point_t *cm = curve_maps[t].list; + for (uint i = 0; i < curve_maps[t].length - 1; i++) { const control_point_t &p1 = cm[i]; const control_point_t &p2 = cm[i + 1]; if (*h >= p1.x && *h < p2.x) { ht[t] = p1.y + (*h - p1.x) * (p2.y - p1.y) / (p2.x - p1.x); + found = true; break; } } + assert(found); } /* Apply interpolation of curve map results. */ *h = (height_t)((ht[corner_a] * yri + ht[corner_b] * yr) * xri + (ht[corner_c] * yri + ht[corner_d] * yr) * xr); + + /* Readd sea level */ + *h += I2H(1); } } } @@ -670,7 +690,7 @@ static void HeightMapAdjustWaterLevel(amplitude_t water_percent, height_t h_max_ * Transform the height map into new (normalized) height map: * values from range: h_min..h_water_level will become negative so it will be clamped to 0 * values from range: h_water_level..h_max are transformed into 0..h_max_new - * where h_max_new is 4, 8, 12 or 16 depending on terrain type (very flat, flat, hilly, mountains) + * where h_max_new is depending on terrain type and map size. */ FOR_ALL_TILES_IN_HEIGHT(h) { /* Transform height from range h_water_level..h_max into 0..h_max_new range */ @@ -709,7 +729,7 @@ static void HeightMapCoastLines(uint8 water_borders) { int smallest_size = min(_settings_game.game_creation.map_x, _settings_game.game_creation.map_y); const int margin = 4; - uint y, x; + int y, x; double max_x; double max_y; @@ -718,7 +738,7 @@ static void HeightMapCoastLines(uint8 water_borders) if (HasBit(water_borders, BORDER_NE)) { /* Top right */ max_x = abs((perlin_coast_noise_2D(_height_map.size_y - y, y, 0.9, 53) + 0.25) * 5 + (perlin_coast_noise_2D(y, y, 0.35, 179) + 1) * 12); - max_x = max((smallest_size * smallest_size / 16) + max_x, (smallest_size * smallest_size / 16) + margin - max_x); + max_x = max((smallest_size * smallest_size / 64) + max_x, (smallest_size * smallest_size / 64) + margin - max_x); if (smallest_size < 8 && max_x > 5) max_x /= 1.5; for (x = 0; x < max_x; x++) { _height_map.height(x, y) = 0; @@ -728,7 +748,7 @@ static void HeightMapCoastLines(uint8 water_borders) if (HasBit(water_borders, BORDER_SW)) { /* Bottom left */ max_x = abs((perlin_coast_noise_2D(_height_map.size_y - y, y, 0.85, 101) + 0.3) * 6 + (perlin_coast_noise_2D(y, y, 0.45, 67) + 0.75) * 8); - max_x = max((smallest_size * smallest_size / 16) + max_x, (smallest_size * smallest_size / 16) + margin - max_x); + max_x = max((smallest_size * smallest_size / 64) + max_x, (smallest_size * smallest_size / 64) + margin - max_x); if (smallest_size < 8 && max_x > 5) max_x /= 1.5; for (x = _height_map.size_x; x > (_height_map.size_x - 1 - max_x); x--) { _height_map.height(x, y) = 0; @@ -741,7 +761,7 @@ static void HeightMapCoastLines(uint8 water_borders) if (HasBit(water_borders, BORDER_NW)) { /* Top left */ max_y = abs((perlin_coast_noise_2D(x, _height_map.size_y / 2, 0.9, 167) + 0.4) * 5 + (perlin_coast_noise_2D(x, _height_map.size_y / 3, 0.4, 211) + 0.7) * 9); - max_y = max((smallest_size * smallest_size / 16) + max_y, (smallest_size * smallest_size / 16) + margin - max_y); + max_y = max((smallest_size * smallest_size / 64) + max_y, (smallest_size * smallest_size / 64) + margin - max_y); if (smallest_size < 8 && max_y > 5) max_y /= 1.5; for (y = 0; y < max_y; y++) { _height_map.height(x, y) = 0; @@ -751,7 +771,7 @@ static void HeightMapCoastLines(uint8 water_borders) if (HasBit(water_borders, BORDER_SE)) { /* Bottom right */ max_y = abs((perlin_coast_noise_2D(x, _height_map.size_y / 3, 0.85, 71) + 0.25) * 6 + (perlin_coast_noise_2D(x, _height_map.size_y / 3, 0.35, 193) + 0.75) * 12); - max_y = max((smallest_size * smallest_size / 16) + max_y, (smallest_size * smallest_size / 16) + margin - max_y); + max_y = max((smallest_size * smallest_size / 64) + max_y, (smallest_size * smallest_size / 64) + margin - max_y); if (smallest_size < 8 && max_y > 5) max_y /= 1.5; for (y = _height_map.size_y; y > (_height_map.size_y - 1 - max_y); y--) { _height_map.height(x, y) = 0; @@ -770,7 +790,7 @@ static void HeightMapSmoothCoastInDirection(int org_x, int org_y, int dir_x, int int ed; // coast distance from edge int depth; - height_t h_prev = 16; + height_t h_prev = I2H(1); height_t h; assert(IsValidXY(org_x, org_y)); @@ -778,7 +798,7 @@ static void HeightMapSmoothCoastInDirection(int org_x, int org_y, int dir_x, int /* Search for the coast (first non-water tile) */ for (x = org_x, y = org_y, ed = 0; IsValidXY(x, y) && ed < max_coast_dist_from_edge; x += dir_x, y += dir_y, ed++) { /* Coast found? */ - if (_height_map.height(x, y) > 15) break; + if (_height_map.height(x, y) >= I2H(1)) break; /* Coast found in the neighborhood? */ if (IsValidXY(x + dir_y, y + dir_x) && _height_map.height(x + dir_y, y + dir_x) > 0) break; @@ -800,7 +820,7 @@ static void HeightMapSmoothCoastInDirection(int org_x, int org_y, int dir_x, int /** Smooth coasts by modulating height of tiles close to map edges with cosine of distance from edge */ static void HeightMapSmoothCoasts(uint8 water_borders) { - uint x, y; + int x, y; /* First Smooth NW and SE coasts (y close to 0 and y close to size_y) */ for (x = 0; x < _height_map.size_x; x++) { if (HasBit(water_borders, BORDER_NW)) HeightMapSmoothCoastInDirection(x, 0, 0, 1); @@ -822,16 +842,15 @@ static void HeightMapSmoothCoasts(uint8 water_borders) */ static void HeightMapSmoothSlopes(height_t dh_max) { - int x, y; - for (y = 0; y <= (int)_height_map.size_y; y++) { - for (x = 0; x <= (int)_height_map.size_x; x++) { + for (int y = 0; y <= (int)_height_map.size_y; y++) { + for (int x = 0; x <= (int)_height_map.size_x; x++) { height_t h_max = min(_height_map.height(x > 0 ? x - 1 : x, y), _height_map.height(x, y > 0 ? y - 1 : y)) + dh_max; if (_height_map.height(x, y) > h_max) _height_map.height(x, y) = h_max; } } - for (y = _height_map.size_y; y >= 0; y--) { - for (x = _height_map.size_x; x >= 0; x--) { - height_t h_max = min(_height_map.height((uint)x < _height_map.size_x ? x + 1 : x, y), _height_map.height(x, (uint)y < _height_map.size_y ? y + 1 : y)) + dh_max; + for (int y = _height_map.size_y; y >= 0; y--) { + for (int x = _height_map.size_x; x >= 0; x--) { + height_t h_max = min(_height_map.height(x < _height_map.size_x ? x + 1 : x, y), _height_map.height(x, y < _height_map.size_y ? y + 1 : y)) + dh_max; if (_height_map.height(x, y) > h_max) _height_map.height(x, y) = h_max; } } @@ -848,7 +867,7 @@ static void HeightMapNormalize() { int sea_level_setting = _settings_game.difficulty.quantity_sea_lakes; const amplitude_t water_percent = sea_level_setting != (int)CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY ? _water_percent[sea_level_setting] : _settings_game.game_creation.custom_sea_level * 1024 / 100; - const height_t h_max_new = I2H(_max_height[_settings_game.difficulty.terrain_type]); + const height_t h_max_new = TGPGetMaxHeight(); const height_t roughness = 7 + 3 * _settings_game.game_creation.tgen_smoothness; HeightMapAdjustWaterLevel(water_percent, h_max_new); @@ -862,13 +881,13 @@ static void HeightMapNormalize() HeightMapSmoothCoasts(water_borders); HeightMapSmoothSlopes(roughness); - HeightMapSineTransform(12, h_max_new); + HeightMapSineTransform(I2H(1), h_max_new); if (_settings_game.game_creation.variety > 0) { HeightMapCurves(_settings_game.game_creation.variety); } - HeightMapSmoothSlopes(16); + HeightMapSmoothSlopes(I2H(1)); } /** @@ -931,9 +950,8 @@ static double interpolated_noise(const double x, const double y, const int prime static double perlin_coast_noise_2D(const double x, const double y, const double p, const int prime) { double total = 0.0; - int i; - for (i = 0; i < 6; i++) { + for (int i = 0; i < 6; i++) { const double frequency = (double)(1 << i); const double amplitude = pow(p, (double)i); @@ -950,8 +968,7 @@ static void TgenSetTileHeight(TileIndex tile, int height) SetTileHeight(tile, height); /* Only clear the tiles within the map area. */ - if (TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY() && - (!_settings_game.construction.freeform_edges || (TileX(tile) != 0 && TileY(tile) != 0))) { + if (IsInnerTile(tile)) { MakeClear(tile, CLEAR_GRASS, 3); } } @@ -965,8 +982,6 @@ static void TgenSetTileHeight(TileIndex tile, int height) */ void GenerateTerrainPerlin() { - uint x, y; - if (!AllocHeightMap()) return; GenerateWorldSetAbortCallback(FreeHeightMap); @@ -980,17 +995,16 @@ void GenerateTerrainPerlin() /* First make sure the tiles at the north border are void tiles if needed. */ if (_settings_game.construction.freeform_edges) { - for (y = 0; y < _height_map.size_y - 1; y++) MakeVoid(_height_map.size_x * y); - for (x = 0; x < _height_map.size_x; x++) MakeVoid(x); + for (int y = 0; y < _height_map.size_y - 1; y++) MakeVoid(_height_map.size_x * y); + for (int x = 0; x < _height_map.size_x; x++) MakeVoid(x); } + int max_height = H2I(TGPGetMaxHeight()); + /* Transfer height map into OTTD map */ - for (y = 0; y < _height_map.size_y; y++) { - for (x = 0; x < _height_map.size_x; x++) { - int height = H2I(_height_map.height(x, y)); - if (height < 0) height = 0; - if (height > 15) height = 15; - TgenSetTileHeight(TileXY(x, y), height); + for (int y = 0; y < _height_map.size_y; y++) { + for (int x = 0; x < _height_map.size_x; x++) { + TgenSetTileHeight(TileXY(x, y), Clamp(H2I(_height_map.height(x, y)), 0, max_height)); } } diff --git a/src/thread/thread.h b/src/thread/thread.h index edb7d474ec..b944a53b96 100644 --- a/src/thread/thread.h +++ b/src/thread/thread.h @@ -66,13 +66,19 @@ public: /** * Begin the critical section + * @param allow_recursive Whether recursive locking is intentional. + * If false, NOT_REACHED() will be called when the mutex is already locked + * by the current thread. */ - virtual void BeginCritical() = 0; + virtual void BeginCritical(bool allow_recursive = false) = 0; /** * End of the critical section + * @param allow_recursive Whether recursive unlocking is intentional. + * If false, NOT_REACHED() will be called when the mutex was locked more + * than once by the current thread. */ - virtual void EndCritical() = 0; + virtual void EndCritical(bool allow_recursive = false) = 0; /** * Wait for a signal to be send. @@ -88,6 +94,28 @@ public: virtual void SendSignal() = 0; }; +/** + * Simple mutex locker to keep a mutex locked until the locker goes out of scope. + */ +class ThreadMutexLocker { +public: + /** + * Lock the mutex and keep it locked for the life time of this object. + * @param mutex Mutex to be locked. + */ + ThreadMutexLocker(ThreadMutex *mutex) : mutex(mutex) { mutex->BeginCritical(); } + + /** + * Unlock the mutex. + */ + ~ThreadMutexLocker() { this->mutex->EndCritical(); } + +private: + ThreadMutexLocker(const ThreadMutexLocker &) { NOT_REACHED(); } + ThreadMutexLocker &operator=(const ThreadMutexLocker &) { NOT_REACHED(); return *this; } + ThreadMutex *mutex; +}; + /** * Get number of processor cores in the system, including HyperThreading or similar. * @return Total number of processor cores. diff --git a/src/thread/thread_morphos.cpp b/src/thread/thread_morphos.cpp index abf2cf0ccc..cc6b2f9d3d 100644 --- a/src/thread/thread_morphos.cpp +++ b/src/thread/thread_morphos.cpp @@ -23,6 +23,8 @@ #include #include +#include "../safeguards.h" + /** * avoid name clashes with MorphOS API functions */ diff --git a/src/thread/thread_none.cpp b/src/thread/thread_none.cpp index 67679bc819..afa799b239 100644 --- a/src/thread/thread_none.cpp +++ b/src/thread/thread_none.cpp @@ -12,6 +12,8 @@ #include "../stdafx.h" #include "thread.h" +#include "../safeguards.h" + /* static */ bool ThreadObject::New(OTTDThreadFunc proc, void *param, ThreadObject **thread) { if (thread != NULL) *thread = NULL; @@ -21,8 +23,8 @@ /** Mutex that doesn't do locking because it ain't needed when there're no threads */ class ThreadMutex_None : public ThreadMutex { public: - virtual void BeginCritical() {} - virtual void EndCritical() {} + virtual void BeginCritical(bool allow_recursive = false) {} + virtual void EndCritical(bool allow_recursive = false) {} virtual void WaitForSignal() {} virtual void SendSignal() {} }; diff --git a/src/thread/thread_os2.cpp b/src/thread/thread_os2.cpp index 903ea0ebe3..2dcb8288f4 100644 --- a/src/thread/thread_os2.cpp +++ b/src/thread/thread_os2.cpp @@ -16,6 +16,8 @@ #include #include +#include "../safeguards.h" + /** * OS/2 version for ThreadObject. */ @@ -36,7 +38,7 @@ public: param(param), self_destruct(self_destruct) { - thread = _beginthread(stThreadProc, NULL, 32768, this); + thread = _beginthread(stThreadProc, NULL, 1048576, this); } /* virtual */ bool Exit() @@ -95,9 +97,10 @@ class ThreadMutex_OS2 : public ThreadMutex { private: HMTX mutex; ///< The mutex. HEV event; ///< Event for waiting. + uint recursive_count; ///< Recursive lock count. public: - ThreadMutex_OS2() + ThreadMutex_OS2() : recursive_count(0) { DosCreateMutexSem(NULL, &mutex, 0, FALSE); DosCreateEventSem(NULL, &event, 0, FALSE); @@ -109,18 +112,24 @@ public: DosCloseEventSem(event); } - /* virtual */ void BeginCritical() + /* virtual */ void BeginCritical(bool allow_recursive = false) { + /* os2 mutex is recursive by itself */ DosRequestMutexSem(mutex, (unsigned long) SEM_INDEFINITE_WAIT); + this->recursive_count++; + if (!allow_recursive && this->recursive_count != 1) NOT_REACHED(); } - /* virtual */ void EndCritical() + /* virtual */ void EndCritical(bool allow_recursive = false) { + if (!allow_recursive && this->recursive_count != 1) NOT_REACHED(); + this->recursive_count--; DosReleaseMutexSem(mutex); } /* virtual */ void WaitForSignal() { + assert(this->recursive_count == 1); // Do we need to call Begin/EndCritical multiple times otherwise? this->EndCritical(); DosWaitEventSem(event, SEM_INDEFINITE_WAIT); this->BeginCritical(); diff --git a/src/thread/thread_pthread.cpp b/src/thread/thread_pthread.cpp index 11cd3accd7..ce407fd941 100644 --- a/src/thread/thread_pthread.cpp +++ b/src/thread/thread_pthread.cpp @@ -14,6 +14,8 @@ #include #include +#include "../safeguards.h" + /** * POSIX pthread version for ThreadObject. */ @@ -98,9 +100,11 @@ private: pthread_mutex_t mutex; ///< The actual mutex. pthread_cond_t condition; ///< Data for conditional waiting. pthread_mutexattr_t attr; ///< Attributes set for the mutex. + pthread_t owner; ///< Owning thread of the mutex. + uint recursive_count; ///< Recursive lock count. public: - ThreadMutex_pthread() + ThreadMutex_pthread() : owner(0), recursive_count(0) { pthread_mutexattr_init(&this->attr); pthread_mutexattr_settype(&this->attr, PTHREAD_MUTEX_ERRORCHECK); @@ -116,22 +120,45 @@ public: assert(err != EBUSY); } - /* virtual */ void BeginCritical() + bool IsOwnedByCurrentThread() const { - int err = pthread_mutex_lock(&this->mutex); - assert(err == 0); + return this->owner == pthread_self(); + } + + /* virtual */ void BeginCritical(bool allow_recursive = false) + { + /* pthread mutex is not recursive by itself */ + if (this->IsOwnedByCurrentThread()) { + if (!allow_recursive) NOT_REACHED(); + } else { + int err = pthread_mutex_lock(&this->mutex); + assert(err == 0); + assert(this->recursive_count == 0); + this->owner = pthread_self(); + } + this->recursive_count++; } - /* virtual */ void EndCritical() + /* virtual */ void EndCritical(bool allow_recursive = false) { + assert(this->IsOwnedByCurrentThread()); + if (!allow_recursive && this->recursive_count != 1) NOT_REACHED(); + this->recursive_count--; + if (this->recursive_count != 0) return; + this->owner = 0; int err = pthread_mutex_unlock(&this->mutex); assert(err == 0); } /* virtual */ void WaitForSignal() { + uint old_recursive_count = this->recursive_count; + this->recursive_count = 0; + this->owner = 0; int err = pthread_cond_wait(&this->condition, &this->mutex); assert(err == 0); + this->owner = pthread_self(); + this->recursive_count = old_recursive_count; } /* virtual */ void SendSignal() diff --git a/src/thread/thread_win32.cpp b/src/thread/thread_win32.cpp index 1e7d0731e8..c37baf7c36 100644 --- a/src/thread/thread_win32.cpp +++ b/src/thread/thread_win32.cpp @@ -17,6 +17,8 @@ #include #include +#include "../safeguards.h" + /** * Win32 thread version for ThreadObject. */ @@ -108,9 +110,10 @@ class ThreadMutex_Win32 : public ThreadMutex { private: CRITICAL_SECTION critical_section; ///< The critical section we would enter. HANDLE event; ///< Event for signalling. + uint recursive_count; ///< Recursive lock count. public: - ThreadMutex_Win32() + ThreadMutex_Win32() : recursive_count(0) { InitializeCriticalSection(&this->critical_section); this->event = CreateEvent(NULL, FALSE, FALSE, NULL); @@ -122,18 +125,24 @@ public: CloseHandle(this->event); } - /* virtual */ void BeginCritical() + /* virtual */ void BeginCritical(bool allow_recursive = false) { + /* windows mutex is recursive by itself */ EnterCriticalSection(&this->critical_section); + this->recursive_count++; + if (!allow_recursive && this->recursive_count != 1) NOT_REACHED(); } - /* virtual */ void EndCritical() + /* virtual */ void EndCritical(bool allow_recursive = false) { + if (!allow_recursive && this->recursive_count != 1) NOT_REACHED(); + this->recursive_count--; LeaveCriticalSection(&this->critical_section); } /* virtual */ void WaitForSignal() { + assert(this->recursive_count == 1); // Do we need to call Begin/EndCritical multiple times otherwise? this->EndCritical(); WaitForSingleObject(this->event, INFINITE); this->BeginCritical(); diff --git a/src/tile_cmd.h b/src/tile_cmd.h index 7dae7a1cab..966694bfb9 100644 --- a/src/tile_cmd.h +++ b/src/tile_cmd.h @@ -62,7 +62,8 @@ struct TileDesc { StringID airport_tile_name; ///< Name of the airport tile const char *grf; ///< newGRF used for the tile contents uint64 dparam[2]; ///< Parameters of the \a str string - uint16 rail_speed; ///< Speed limit of rail + uint16 rail_speed; ///< Speed limit of rail (bridges and track) + uint16 road_speed; ///< Speed limit of road (bridges) }; /** diff --git a/src/tile_map.cpp b/src/tile_map.cpp index 017bb5c56d..c566ad02cd 100644 --- a/src/tile_map.cpp +++ b/src/tile_map.cpp @@ -12,8 +12,102 @@ #include "stdafx.h" #include "tile_map.h" +#include "safeguards.h" + +/** + * Returns the tile height for a coordinate outside map. Such a height is + * needed for painting the area outside map using completely black tiles. + * The idea is descending to heightlevel 0 as fast as possible. + * @param x The X-coordinate (same unit as TileX). + * @param y The Y-coordinate (same unit as TileY). + * @return The height in the same unit as TileHeight. + */ +uint TileHeightOutsideMap(int x, int y) +{ + /* In all cases: Descend to heightlevel 0 as fast as possible. + * So: If we are at the 0-side of the map (x<0 or y<0), we must + * subtract the distance to coordinate 0 from the heightlevel at + * coordinate 0. + * In other words: Subtract e.g. -x. If we are at the MapMax + * side of the map, we also need to subtract the distance to + * the edge of map, e.g. MapMaxX - x. + * + * NOTE: Assuming constant heightlevel outside map would be + * simpler here. However, then we run into painting problems, + * since whenever a heightlevel change at the map border occurs, + * we would need to repaint anything outside map. + * In contrast, by doing it this way, we can localize this change, + * which means we may assume constant heightlevel for all tiles + * at more than distance from the + * map border. + */ + if (x < 0) { + if (y < 0) { + return max((int)TileHeight(TileXY(0, 0)) - (-x) - (-y), 0); + } else if (y < (int)MapMaxY()) { + return max((int)TileHeight(TileXY(0, y)) - (-x), 0); + } else { + return max((int)TileHeight(TileXY(0, (int)MapMaxY())) - (-x) - (y - (int)MapMaxY()), 0); + } + } else if (x < (int)MapMaxX()) { + if (y < 0) { + return max((int)TileHeight(TileXY(x, 0)) - (-y), 0); + } else if (y < (int)MapMaxY()) { + return TileHeight(TileXY(x, y)); + } else { + return max((int)TileHeight(TileXY(x, (int)MapMaxY())) - (y - (int)MapMaxY()), 0); + } + } else { + if (y < 0) { + return max((int)TileHeight(TileXY((int)MapMaxX(), 0)) - (x - (int)MapMaxX()) - (-y), 0); + } else if (y < (int)MapMaxY()) { + return max((int)TileHeight(TileXY((int)MapMaxX(), y)) - (x - (int)MapMaxX()), 0); + } else { + return max((int)TileHeight(TileXY((int)MapMaxX(), (int)MapMaxY())) - (x - (int)MapMaxX()) - (y - (int)MapMaxY()), 0); + } + } +} + +/** + * Get a tile's slope given the heigh of its four corners. + * @param hnorth The height at the northern corner in the same unit as TileHeight. + * @param hwest The height at the western corner in the same unit as TileHeight. + * @param heast The height at the eastern corner in the same unit as TileHeight. + * @param hsouth The height at the southern corner in the same unit as TileHeight. + * @param [out] h The lowest height of the four corners. + * @return The slope. + */ +static Slope GetTileSlopeGivenHeight(int hnorth, int hwest, int heast, int hsouth, int *h) +{ + /* Due to the fact that tiles must connect with each other without leaving gaps, the + * biggest difference in height between any corner and 'min' is between 0, 1, or 2. + * + * Also, there is at most 1 corner with height difference of 2. + */ + int hminnw = min(hnorth, hwest); + int hmines = min(heast, hsouth); + int hmin = min(hminnw, hmines); + + if (h != NULL) *h = hmin; + + int hmaxnw = max(hnorth, hwest); + int hmaxes = max(heast, hsouth); + int hmax = max(hmaxnw, hmaxes); + + Slope r = SLOPE_FLAT; + + if (hnorth != hmin) r |= SLOPE_N; + if (hwest != hmin) r |= SLOPE_W; + if (heast != hmin) r |= SLOPE_E; + if (hsouth != hmin) r |= SLOPE_S; + + if (hmax - hmin == 2) r |= SLOPE_STEEP; + + return r; +} + /** - * Return the slope of a given tile + * Return the slope of a given tile inside the map. * @param tile Tile to compute slope of * @param h If not \c NULL, pointer to storage of z height * @return Slope of the tile, except for the HALFTILE part @@ -24,42 +118,60 @@ Slope GetTileSlope(TileIndex tile, int *h) uint x = TileX(tile); uint y = TileY(tile); - - if (x == MapMaxX() || y == MapMaxY() || - ((x == 0 || y == 0) && _settings_game.construction.freeform_edges)) { + if (x == MapMaxX() || y == MapMaxY()) { if (h != NULL) *h = TileHeight(tile); return SLOPE_FLAT; } - int a = TileHeight(tile); // Height of the N corner - int min = a; // Minimal height of all corners examined so far - int b = TileHeight(tile + TileDiffXY(1, 0)); // Height of the W corner - if (min > b) min = b; - int c = TileHeight(tile + TileDiffXY(0, 1)); // Height of the E corner - if (min > c) min = c; - int d = TileHeight(tile + TileDiffXY(1, 1)); // Height of the S corner - if (min > d) min = d; + int hnorth = TileHeight(tile); // Height of the North corner. + int hwest = TileHeight(tile + TileDiffXY(1, 0)); // Height of the West corner. + int heast = TileHeight(tile + TileDiffXY(0, 1)); // Height of the East corner. + int hsouth = TileHeight(tile + TileDiffXY(1, 1)); // Height of the South corner. - /* Due to the fact that tiles must connect with each other without leaving gaps, the - * biggest difference in height between any corner and 'min' is between 0, 1, or 2. - * - * Also, there is at most 1 corner with height difference of 2. - */ + return GetTileSlopeGivenHeight(hnorth, hwest, heast, hsouth, h); +} + +/** + * Return the slope of a given tile outside the map. + * + * @param tile Tile outside the map to compute slope of. + * @param h If not \c NULL, pointer to storage of z height. + * @return Slope of the tile outside map, except for the HALFTILE part. + */ +Slope GetTilePixelSlopeOutsideMap(int x, int y, int *h) +{ + int hnorth = TileHeightOutsideMap(x, y); // N corner. + int hwest = TileHeightOutsideMap(x + 1, y); // W corner. + int heast = TileHeightOutsideMap(x, y + 1); // E corner. + int hsouth = TileHeightOutsideMap(x + 1, y + 1); // S corner. + + Slope s = GetTileSlopeGivenHeight(hnorth, hwest, heast, hsouth, h); + if (h != NULL) *h *= TILE_HEIGHT; + return s; +} - uint r = SLOPE_FLAT; // Computed slope of the tile +/** + * Check if a given tile is flat + * @param tile Tile to check + * @param h If not \c NULL, pointer to storage of z height (only if tile is flat) + * @return Whether the tile is flat + */ +bool IsTileFlat(TileIndex tile, int *h) +{ + assert(tile < MapSize()); - /* For each corner if not equal to minimum height: - * - set the SLOPE_STEEP flag if the difference is 2 - * - add the corresponding SLOPE_X constant to the computed slope - */ - if ((a -= min) != 0) r += (--a << 4) + SLOPE_N; - if ((c -= min) != 0) r += (--c << 4) + SLOPE_E; - if ((d -= min) != 0) r += (--d << 4) + SLOPE_S; - if ((b -= min) != 0) r += (--b << 4) + SLOPE_W; + if (!IsInnerTile(tile)) { + if (h != NULL) *h = TileHeight(tile); + return true; + } - if (h != NULL) *h = min; + uint z = TileHeight(tile); + if (TileHeight(tile + TileDiffXY(1, 0)) != z) return false; + if (TileHeight(tile + TileDiffXY(0, 1)) != z) return false; + if (TileHeight(tile + TileDiffXY(1, 1)) != z) return false; - return (Slope)r; + if (h != NULL) *h = z; + return true; } /** @@ -71,7 +183,7 @@ int GetTileZ(TileIndex tile) { if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) return 0; - int h = TileHeight(tile); // N corner + int h = TileHeight(tile); // N corner h = min(h, TileHeight(tile + TileDiffXY(1, 0))); // W corner h = min(h, TileHeight(tile + TileDiffXY(0, 1))); // E corner h = min(h, TileHeight(tile + TileDiffXY(1, 1))); // S corner @@ -80,18 +192,52 @@ int GetTileZ(TileIndex tile) } /** - * Get top height of the tile + * Get bottom height of the tile outside map. + * + * @param tile Tile outside the map to compute height of. + * @return Minimum height of the tile outside the map. + */ +int GetTilePixelZOutsideMap(int x, int y) +{ + uint h = TileHeightOutsideMap(x, y); // N corner. + h = min(h, TileHeightOutsideMap(x + 1, y)); // W corner. + h = min(h, TileHeightOutsideMap(x, y + 1)); // E corner. + h = min(h, TileHeightOutsideMap(x + 1, y + 1)); // S corner + + return h * TILE_HEIGHT; +} + +/** + * Get top height of the tile inside the map. * @param t Tile to compute height of * @return Maximum height of the tile */ int GetTileMaxZ(TileIndex t) { - if (TileX(t) == MapMaxX() || TileY(t) == MapMaxY()) return 0; + if (TileX(t) == MapMaxX() || TileY(t) == MapMaxY()) return TileHeightOutsideMap(TileX(t), TileY(t)); - int h = TileHeight(t); // N corner + int h = TileHeight(t); // N corner h = max(h, TileHeight(t + TileDiffXY(1, 0))); // W corner h = max(h, TileHeight(t + TileDiffXY(0, 1))); // E corner h = max(h, TileHeight(t + TileDiffXY(1, 1))); // S corner return h; } + +/** + * Get top height of the tile outside the map. + * + * @see Detailed description in header. + * + * @param tile Tile outside to compute height of. + * @return Maximum height of the tile. + */ +int GetTileMaxPixelZOutsideMap(int x, int y) +{ + uint h = TileHeightOutsideMap(x, y); + h = max(h, TileHeightOutsideMap(x + 1, y)); + h = max(h, TileHeightOutsideMap(x, y + 1)); + h = max(h, TileHeightOutsideMap(x + 1, y + 1)); + + return h * TILE_HEIGHT; +} diff --git a/src/tile_map.h b/src/tile_map.h index 2c5cfffbf2..4d5891d7ba 100644 --- a/src/tile_map.h +++ b/src/tile_map.h @@ -31,9 +31,11 @@ static inline uint TileHeight(TileIndex tile) { assert(tile < MapSize()); - return GB(_m[tile].type_height, 0, 4); + return _m[tile].height; } +uint TileHeightOutsideMap(int x, int y); + /** * Sets the height of a tile. * @@ -48,7 +50,7 @@ static inline void SetTileHeight(TileIndex tile, uint height) { assert(tile < MapSize()); assert(height <= MAX_TILE_HEIGHT); - SB(_m[tile].type_height, 0, 4, height); + _m[tile].height = height; } /** @@ -64,6 +66,19 @@ static inline uint TilePixelHeight(TileIndex tile) return TileHeight(tile) * TILE_HEIGHT; } +/** + * Returns the tile height for a coordinate outside map. Such a height is + * needed for painting the area outside map using completely black tiles. + * The idea is descending to heightlevel 0 as fast as possible. + * @param x The X-coordinate (same unit as TileX). + * @param y The Y-coordinate (same unit as TileY). + * @return The height in pixels in the same unit as TilePixelHeight. + */ +static inline uint TilePixelHeightOutsideMap(int x, int y) +{ + return TileHeightOutsideMap(x, y) * TILE_HEIGHT; +} + /** * Get the tiletype of a given tile. * @@ -74,7 +89,24 @@ static inline uint TilePixelHeight(TileIndex tile) static inline TileType GetTileType(TileIndex tile) { assert(tile < MapSize()); - return (TileType)GB(_m[tile].type_height, 4, 4); + return (TileType)GB(_m[tile].type, 4, 4); +} + +/** + * Check if a tile is within the map (not a border) + * + * @param tile The tile to check + * @return Whether the tile is in the interior of the map + * @pre tile < MapSize() + */ +static inline bool IsInnerTile(TileIndex tile) +{ + assert(tile < MapSize()); + + uint x = TileX(tile); + uint y = TileY(tile); + + return x < MapMaxX() && y < MapMaxY() && ((x > 0 && y > 0) || !_settings_game.construction.freeform_edges); } /** @@ -95,8 +127,8 @@ static inline void SetTileType(TileIndex tile, TileType type) /* VOID tiles (and no others) are exactly allowed at the lower left and right * edges of the map. If _settings_game.construction.freeform_edges is true, * the upper edges of the map are also VOID tiles. */ - assert((TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY() || (_settings_game.construction.freeform_edges && (TileX(tile) == 0 || TileY(tile) == 0))) == (type == MP_VOID)); - SB(_m[tile].type_height, 4, 4, type); + assert(IsInnerTile(tile) == (type != MP_VOID)); + SB(_m[tile].type, 4, 4, type); } /** @@ -187,7 +219,7 @@ static inline void SetTropicZone(TileIndex tile, TropicZone type) { assert(tile < MapSize()); assert(!IsTileType(tile, MP_VOID) || type == TROPICZONE_NORMAL); - SB(_m[tile].m6, 0, 2, type); + SB(_m[tile].type, 0, 2, type); } /** @@ -199,7 +231,7 @@ static inline void SetTropicZone(TileIndex tile, TropicZone type) static inline TropicZone GetTropicZone(TileIndex tile) { assert(tile < MapSize()); - return (TropicZone)GB(_m[tile].m6, 0, 2); + return (TropicZone)GB(_m[tile].type, 0, 2); } /** @@ -230,6 +262,8 @@ Slope GetTileSlope(TileIndex tile, int *h = NULL); int GetTileZ(TileIndex tile); int GetTileMaxZ(TileIndex tile); +bool IsTileFlat(TileIndex tile, int *h = NULL); + /** * Return the slope of a given tile * @param tile Tile to compute slope of @@ -243,6 +277,8 @@ static inline Slope GetTilePixelSlope(TileIndex tile, int *h) return s; } +Slope GetTilePixelSlopeOutsideMap(int x, int y, int *h); + /** * Get bottom height of the tile * @param tile Tile to compute height of @@ -253,6 +289,8 @@ static inline int GetTilePixelZ(TileIndex tile) return GetTileZ(tile) * TILE_HEIGHT; } +int GetTilePixelZOutsideMap(int x, int y); + /** * Get top height of the tile * @param t Tile to compute height of @@ -263,6 +301,8 @@ static inline int GetTileMaxPixelZ(TileIndex tile) return GetTileMaxZ(tile) * TILE_HEIGHT; } +int GetTileMaxPixelZOutsideMap(int x, int y); + /** * Calculate a hash value from a tile position diff --git a/src/tile_type.h b/src/tile_type.h index 34543eb93e..0d720925da 100644 --- a/src/tile_type.h +++ b/src/tile_type.h @@ -12,15 +12,21 @@ #ifndef TILE_TYPE_H #define TILE_TYPE_H -static const uint TILE_SIZE = 16; ///< Tiles are 16x16 "units" in size -static const uint TILE_UNIT_MASK = TILE_SIZE - 1; ///< For masking in/out the inner-tile units. -static const uint TILE_PIXELS = 32; ///< a tile is 32x32 pixels -static const uint TILE_HEIGHT = 8; ///< The standard height-difference between tiles on two levels is 8 (z-diff 8) +static const uint TILE_SIZE = 16; ///< Tile size in world coordinates. +static const uint TILE_UNIT_MASK = TILE_SIZE - 1; ///< For masking in/out the inner-tile world coordinate units. +static const uint TILE_PIXELS = 32; ///< Pixel distance between tile columns/rows in #ZOOM_LVL_BASE. +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_TILE_HEIGHT = 15; ///< Maximum allowed tile height +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 uint MAX_TILE_HEIGHT = 255; ///< Maximum allowed tile height + +static const uint MIN_MAX_HEIGHTLEVEL = 15; ///< Lower bound of maximum allowed heightlevel (in the construction settings) +static const uint DEF_MAX_HEIGHTLEVEL = 30; ///< Default maximum allowed heightlevel (in the construction settings) +static const uint MAX_MAX_HEIGHTLEVEL = MAX_TILE_HEIGHT; ///< Upper bound of maximum allowed heightlevel (in the construction settings) static const uint MIN_SNOWLINE_HEIGHT = 2; ///< Minimum snowline height -static const uint DEF_SNOWLINE_HEIGHT = 7; ///< Default snowline height +static const uint DEF_SNOWLINE_HEIGHT = 15; ///< Default snowline height static const uint MAX_SNOWLINE_HEIGHT = (MAX_TILE_HEIGHT - 2); ///< Maximum allowed snowline height diff --git a/src/tilearea.cpp b/src/tilearea.cpp index 7572f9f633..ec3b9aafbb 100644 --- a/src/tilearea.cpp +++ b/src/tilearea.cpp @@ -13,13 +13,18 @@ #include "tilearea_type.h" +#include "safeguards.h" + /** * Construct this tile area based on two points. * @param start the start of the area * @param end the end of the area */ -TileArea::TileArea(TileIndex start, TileIndex end) +OrthogonalTileArea::OrthogonalTileArea(TileIndex start, TileIndex end) { + assert(start < MapSize()); + assert(end < MapSize()); + uint sx = TileX(start); uint sy = TileY(start); uint ex = TileX(end); @@ -37,7 +42,7 @@ TileArea::TileArea(TileIndex start, TileIndex end) * Add a single tile to a tile area; enlarge if needed. * @param to_add The tile to add */ -void TileArea::Add(TileIndex to_add) +void OrthogonalTileArea::Add(TileIndex to_add) { if (this->tile == INVALID_TILE) { this->tile = to_add; @@ -69,7 +74,7 @@ void TileArea::Add(TileIndex to_add) * @param ta the other tile area to check against. * @return true if they intersect. */ -bool TileArea::Intersects(const TileArea &ta) const +bool OrthogonalTileArea::Intersects(const OrthogonalTileArea &ta) const { if (ta.w == 0 || this->w == 0) return false; @@ -98,7 +103,7 @@ bool TileArea::Intersects(const TileArea &ta) const * @param tile Tile to test for. * @return True if the tile is inside the area. */ -bool TileArea::Contains(TileIndex tile) const +bool OrthogonalTileArea::Contains(TileIndex tile) const { if (this->w == 0) return false; @@ -115,7 +120,7 @@ bool TileArea::Contains(TileIndex tile) const /** * Clamp the tile area to map borders. */ -void TileArea::ClampToMap() +void OrthogonalTileArea::ClampToMap() { assert(this->tile < MapSize()); this->w = min(this->w, MapSizeX() - TileX(this->tile)); @@ -123,39 +128,67 @@ void TileArea::ClampToMap() } /** - * Construct the iterator. - * @param corner1 Tile from where to begin iterating. - * @param corner2 Tile where to end the iterating. + * Create a diagonal tile area from two corners. + * @param start First corner of the area. + * @param end Second corner of the area. */ -DiagonalTileIterator::DiagonalTileIterator(TileIndex corner1, TileIndex corner2) : TileIterator(corner2), base_x(TileX(corner2)), base_y(TileY(corner2)), a_cur(0), b_cur(0) +DiagonalTileArea::DiagonalTileArea(TileIndex start, TileIndex end) : tile(start) { - assert(corner1 < MapSize()); - assert(corner2 < MapSize()); - - int dist_x = TileX(corner1) - TileX(corner2); - int dist_y = TileY(corner1) - TileY(corner2); - this->a_max = dist_x + dist_y; - this->b_max = dist_y - dist_x; + assert(start < MapSize()); + assert(end < MapSize()); /* Unfortunately we can't find a new base and make all a and b positive because * the new base might be a "flattened" corner where there actually is no single * tile. If we try anyway the result is either inaccurate ("one off" half of the * time) or the code gets much more complex; * - * We also need to increment here to have equality as marker for the end of a row or - * column. Like that it's shorter than having another if/else in operator++ - */ - if (this->a_max > 0) { - this->a_max++; + * We also need to increment/decrement a and b here to have one-past-end semantics + * for a and b, just the way the orthogonal tile area does it for w and h. */ + + this->a = TileY(end) + TileX(end) - TileY(start) - TileX(start); + this->b = TileY(end) - TileX(end) - TileY(start) + TileX(start); + if (this->a > 0) { + this->a++; } else { - this->a_max--; + this->a--; } - if (this->b_max > 0) { - this->b_max++; + if (this->b > 0) { + this->b++; } else { - this->b_max--; + this->b--; + } +} + +/** + * Does this tile area contain a tile? + * @param tile Tile to test for. + * @return True if the tile is inside the area. + */ +bool DiagonalTileArea::Contains(TileIndex tile) const +{ + int a = TileY(tile) + TileX(tile); + int b = TileY(tile) - TileX(tile); + + int start_a = TileY(this->tile) + TileX(this->tile); + int start_b = TileY(this->tile) - TileX(this->tile); + + int end_a = start_a + this->a; + int end_b = start_b + this->b; + + /* Swap if necessary, preserving the "one past end" semantics. */ + if (start_a > end_a) { + int tmp = start_a; + start_a = end_a + 1; + end_a = tmp + 1; } + if (start_b > end_b) { + int tmp = start_b; + start_b = end_b + 1; + end_b = tmp + 1; + } + + return (a >= start_a && a < end_a && b >= start_b && b < end_b); } /** diff --git a/src/tilearea_type.h b/src/tilearea_type.h index 62d3d75dfc..45bfb3d4c0 100644 --- a/src/tilearea_type.h +++ b/src/tilearea_type.h @@ -15,24 +15,22 @@ #include "map_func.h" /** Represents the covered area of e.g. a rail station */ -struct TileArea { +struct OrthogonalTileArea { TileIndex tile; ///< The base tile of the area uint16 w; ///< The width of the area uint16 h; ///< The height of the area - /** Just construct this tile area */ - TileArea() {} - /** * Construct this tile area with some set values * @param tile the base tile * @param w the width * @param h the height */ - TileArea(TileIndex tile, uint8 w, uint8 h) : tile(tile), w(w), h(h) {} - - TileArea(TileIndex start, TileIndex end); + OrthogonalTileArea(TileIndex tile = INVALID_TILE, uint8 w = 0, uint8 h = 0) : tile(tile), w(w), h(h) + { + } + OrthogonalTileArea(TileIndex start, TileIndex end); void Add(TileIndex to_add); @@ -46,7 +44,7 @@ struct TileArea { this->h = 0; } - bool Intersects(const TileArea &ta) const; + bool Intersects(const OrthogonalTileArea &ta) const; bool Contains(TileIndex tile) const; @@ -62,6 +60,41 @@ struct TileArea { } }; +/** Represents a diagonal tile area. */ +struct DiagonalTileArea { + + TileIndex tile; ///< Base tile of the area + int16 a; ///< Extent in diagonal "x" direction (may be negative to signify the area stretches to the left) + int16 b; ///< Extent in diagonal "y" direction (may be negative to signify the area stretches upwards) + + /** + * Construct this tile area with some set values. + * @param tile The base tile. + * @param a The "x" extent. + * @param b The "y" estent. + */ + DiagonalTileArea(TileIndex tile = INVALID_TILE, int8 a = 0, int8 b = 0) : tile(tile), a(a), b(b) + { + } + + DiagonalTileArea(TileIndex start, TileIndex end); + + /** + * Clears the TileArea by making the tile invalid and setting a and b to 0. + */ + void Clear() + { + this->tile = INVALID_TILE; + this->a = 0; + this->b = 0; + } + + bool Contains(TileIndex tile) const; +}; + +/** Shorthand for the much more common orthogonal tile area. */ +typedef OrthogonalTileArea TileArea; + /** Base class for tile iterators. */ class TileIterator { protected: @@ -71,7 +104,7 @@ protected: * Initialise the iterator starting at this tile. * @param tile The tile we start iterating from. */ - TileIterator(TileIndex tile) : tile(tile) + TileIterator(TileIndex tile = INVALID_TILE) : tile(tile) { } @@ -113,8 +146,18 @@ public: * Construct the iterator. * @param ta Area, i.e. begin point and width/height of to-be-iterated area. */ - OrthogonalTileIterator(const TileArea &ta) : TileIterator(ta.w == 0 || ta.h == 0 ? INVALID_TILE : ta.tile), w(ta.w), x(ta.w), y(ta.h) + OrthogonalTileIterator(const OrthogonalTileArea &ta) : TileIterator(ta.w == 0 || ta.h == 0 ? INVALID_TILE : ta.tile), w(ta.w), x(ta.w), y(ta.h) + { + } + + /** + * Construct the iterator. + * @param corner1 Tile from where to begin iterating. + * @param corner2 Tile where to end the iterating. + */ + OrthogonalTileIterator(TileIndex corner1, TileIndex corner2) { + *this = OrthogonalTileIterator(OrthogonalTileArea(corner1, corner2)); } /** @@ -152,7 +195,25 @@ private: int b_max; ///< The (rotated) y coordinate of the end of the iteration. public: - DiagonalTileIterator(TileIndex begin, TileIndex end); + + /** + * Construct the iterator. + * @param ta Area, i.e. begin point and (diagonal) width/height of to-be-iterated area. + */ + DiagonalTileIterator(const DiagonalTileArea &ta) : + TileIterator(ta.tile), base_x(TileX(ta.tile)), base_y(TileY(ta.tile)), a_cur(0), b_cur(0), a_max(ta.a), b_max(ta.b) + { + } + + /** + * Construct the iterator. + * @param corner1 Tile from where to begin iterating. + * @param corner2 Tile where to end the iterating. + */ + DiagonalTileIterator(TileIndex corner1, TileIndex corner2) + { + *this = DiagonalTileIterator(DiagonalTileArea(corner1, corner2)); + } TileIterator& operator ++(); diff --git a/src/timetable_cmd.cpp b/src/timetable_cmd.cpp index 5b7a69d8ea..29986c353d 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -20,51 +20,62 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Change/update a particular timetable entry. * @param v The vehicle to change the timetable of. * @param order_number The index of the timetable in the order list. * @param val The new data of the timetable entry. * @param mtf Which part of the timetable entry to change. + * @param timetabled If the new value is explicitly timetabled. */ -static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val, ModifyTimetableFlags mtf) +static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val, ModifyTimetableFlags mtf, bool timetabled) { Order *order = v->GetOrder(order_number); - int delta = 0; + int total_delta = 0; + int timetable_delta = 0; switch (mtf) { case MTF_WAIT_TIME: - delta = val - order->wait_time; - order->wait_time = val; + total_delta = val - order->GetWaitTime(); + timetable_delta = (timetabled ? val : 0) - order->GetTimetabledWait(); + order->SetWaitTime(val); + order->SetWaitTimetabled(timetabled); break; case MTF_TRAVEL_TIME: - delta = val - order->travel_time; - order->travel_time = val; + total_delta = val - order->GetTravelTime(); + timetable_delta = (timetabled ? val : 0) - order->GetTimetabledTravel(); + order->SetTravelTime(val); + order->SetTravelTimetabled(timetabled); break; case MTF_TRAVEL_SPEED: - order->max_speed = val; + order->SetMaxSpeed(val); break; default: NOT_REACHED(); } - v->orders.list->UpdateOrderTimetable(delta); + v->orders.list->UpdateTotalDuration(total_delta); + v->orders.list->UpdateTimetableDuration(timetable_delta); for (v = v->FirstShared(); v != NULL; v = v->NextShared()) { if (v->cur_real_order_index == order_number && v->current_order.Equals(*order)) { switch (mtf) { case MTF_WAIT_TIME: - v->current_order.wait_time = val; + v->current_order.SetWaitTime(val); + v->current_order.SetWaitTimetabled(timetabled); break; case MTF_TRAVEL_TIME: - v->current_order.travel_time = val; + v->current_order.SetTravelTime(val); + v->current_order.SetTravelTimetabled(timetabled); break; case MTF_TRAVEL_SPEED: - v->current_order.max_speed = val; + v->current_order.SetMaxSpeed(val); break; default: @@ -85,6 +96,7 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val, * - p1 = (bit 28-29) - Timetable data to change (@see ModifyTimetableFlags) * @param p2 The amount of time to wait. * - p2 = (bit 0-15) - The data to modify as specified by p1 bits 28-29. + * 0 to clear times, UINT16_MAX to clear speed limit. * @param text unused * @return the cost of this operation or an error */ @@ -105,9 +117,9 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u ModifyTimetableFlags mtf = Extract(p1); if (mtf >= MTF_END) return CMD_ERROR; - int wait_time = order->wait_time; - int travel_time = order->travel_time; - int max_speed = order->max_speed; + int wait_time = order->GetWaitTime(); + int travel_time = order->GetTravelTime(); + int max_speed = order->GetMaxSpeed(); switch (mtf) { case MTF_WAIT_TIME: wait_time = GB(p2, 0, 16); @@ -126,7 +138,7 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u NOT_REACHED(); } - if (wait_time != order->wait_time) { + if (wait_time != order->GetWaitTime()) { switch (order->GetType()) { case OT_GOTO_STATION: if (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) return_cmd_error(STR_ERROR_TIMETABLE_NOT_STOPPING_HERE); @@ -139,13 +151,34 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u } } - if (travel_time != order->travel_time && order->IsType(OT_CONDITIONAL)) return CMD_ERROR; - if (max_speed != order->max_speed && (order->IsType(OT_CONDITIONAL) || v->type == VEH_AIRCRAFT)) return CMD_ERROR; + if (travel_time != order->GetTravelTime() && order->IsType(OT_CONDITIONAL)) return CMD_ERROR; + if (max_speed != order->GetMaxSpeed() && (order->IsType(OT_CONDITIONAL) || v->type == VEH_AIRCRAFT)) return CMD_ERROR; if (flags & DC_EXEC) { - if (wait_time != order->wait_time) ChangeTimetable(v, order_number, wait_time, MTF_WAIT_TIME); - if (travel_time != order->travel_time) ChangeTimetable(v, order_number, travel_time, MTF_TRAVEL_TIME); - if (max_speed != order->max_speed) ChangeTimetable(v, order_number, max_speed, MTF_TRAVEL_SPEED); + switch (mtf) { + case MTF_WAIT_TIME: + /* Set time if changing the value or confirming an estimated time as timetabled. */ + if (wait_time != order->GetWaitTime() || (wait_time > 0 && !order->IsWaitTimetabled())) { + ChangeTimetable(v, order_number, wait_time, MTF_WAIT_TIME, wait_time > 0); + } + break; + + case MTF_TRAVEL_TIME: + /* Set time if changing the value or confirming an estimated time as timetabled. */ + if (travel_time != order->GetTravelTime() || (travel_time > 0 && !order->IsTravelTimetabled())) { + ChangeTimetable(v, order_number, travel_time, MTF_TRAVEL_TIME, travel_time > 0); + } + break; + + case MTF_TRAVEL_SPEED: + if (max_speed != order->GetMaxSpeed()) { + ChangeTimetable(v, order_number, max_speed, MTF_TRAVEL_SPEED, max_speed != UINT16_MAX); + } + break; + + default: + break; + } } return CommandCost(); @@ -345,13 +378,15 @@ CommandCost CmdAutofillTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, */ void UpdateVehicleTimetable(Vehicle *v, bool travelling) { - uint timetabled = travelling ? v->current_order.travel_time : v->current_order.wait_time; uint time_taken = v->current_order_time; v->current_order_time = 0; if (v->current_order.IsType(OT_IMPLICIT)) return; // no timetabling of auto orders + if (v->cur_real_order_index >= v->GetNumOrders()) return; + Order *real_current_order = v->GetOrder(v->cur_real_order_index); + VehicleOrderID first_manual_order = 0; for (Order *o = v->GetFirstOrder(); o != NULL && o->IsType(OT_IMPLICIT); o = o->next) { ++first_manual_order; @@ -378,42 +413,51 @@ void UpdateVehicleTimetable(Vehicle *v, bool travelling) if (!HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) return; - if (HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)) { - if (travelling && !HasBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)) { - /* Need to clear that now as otherwise we are not able to reduce the wait time */ - v->current_order.wait_time = 0; - } + bool autofilling = HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); + bool remeasure_wait_time = !real_current_order->IsWaitTimetabled() || + (autofilling && !HasBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)); - if (just_started) return; - - /* Modify station waiting time only if our new value is larger (this is - * always the case when we cleared the timetable). */ - if (!v->current_order.IsType(OT_CONDITIONAL) && (travelling || time_taken > v->current_order.wait_time)) { - /* Round the time taken up to the nearest day, as this will avoid - * confusion for people who are timetabling in days, and can be - * adjusted later by people who aren't. - * For trains/aircraft multiple movement cycles are done in one - * tick. This makes it possible to leave the station and process - * e.g. a depot order in the same tick, causing it to not fill - * the timetable entry like is done for road vehicles/ships. - * Thus always make sure at least one tick is used between the - * processing of different orders when filling the timetable. */ - time_taken = CeilDiv(max(time_taken, 1U), DAY_TICKS) * DAY_TICKS; - - ChangeTimetable(v, v->cur_real_order_index, time_taken, travelling ? MTF_TRAVEL_TIME : MTF_WAIT_TIME); - } + if (travelling && remeasure_wait_time) { + /* We just finished travelling and want to remeasure the loading time, + * so do not apply any restrictions for the loading to finish. */ + v->current_order.SetWaitTime(0); + } - if (v->cur_real_order_index == first_manual_order && travelling) { - /* If we just started we would have returned earlier and have not reached - * this code. So obviously, we have completed our round: So turn autofill - * off again. */ - ClrBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); - ClrBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); + if (just_started) return; + + /* Before modifying waiting times, check whether we want to preserve bigger ones. */ + if (!real_current_order->IsType(OT_CONDITIONAL) && + (travelling || time_taken > real_current_order->GetWaitTime() || remeasure_wait_time)) { + /* Round the time taken up to the nearest day, as this will avoid + * confusion for people who are timetabling in days, and can be + * adjusted later by people who aren't. + * For trains/aircraft multiple movement cycles are done in one + * tick. This makes it possible to leave the station and process + * e.g. a depot order in the same tick, causing it to not fill + * the timetable entry like is done for road vehicles/ships. + * Thus always make sure at least one tick is used between the + * processing of different orders when filling the timetable. */ + uint time_to_set = CeilDiv(max(time_taken, 1U), DAY_TICKS) * DAY_TICKS; + + if (travelling && (autofilling || !real_current_order->IsTravelTimetabled())) { + ChangeTimetable(v, v->cur_real_order_index, time_to_set, MTF_TRAVEL_TIME, autofilling); + } else if (!travelling && (autofilling || !real_current_order->IsWaitTimetabled())) { + ChangeTimetable(v, v->cur_real_order_index, time_to_set, MTF_WAIT_TIME, autofilling); } - return; } - if (just_started) return; + if (v->cur_real_order_index == first_manual_order && travelling) { + /* If we just started we would have returned earlier and have not reached + * this code. So obviously, we have completed our round: So turn autofill + * off again. */ + ClrBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); + ClrBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); + } + + if (autofilling) return; + + uint timetabled = travelling ? real_current_order->GetTimetabledTravel() : + real_current_order->GetTimetabledWait(); /* Vehicles will wait at stations if they arrive early even if they are not * timetabled to wait there, so make sure the lateness counter is updated diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index 0a846915fa..ffea9a8642 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -30,6 +30,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + /** Container for the arrival/departure dates of a vehicle */ struct TimetableArrivalDeparture { Ticks arrival; ///< The arrival time @@ -53,18 +55,6 @@ void SetTimetableParams(int param1, int param2, Ticks ticks) } } -/** - * Sets the arrival or departure string and parameters. - * @param param1 the first DParam to fill - * @param param2 the second DParam to fill - * @param ticks the number of ticks to 'draw' - */ -static void SetArrivalDepartParams(int param1, int param2, Ticks ticks) -{ - SetDParam(param1, STR_JUST_DATE_TINY); - SetDParam(param2, _date + (ticks / DAY_TICKS)); -} - /** * Check whether it is possible to determine how long the order takes. * @param order the order to check. @@ -76,9 +66,12 @@ static bool CanDetermineTimeTaken(const Order *order, bool travelling) /* Current order is conditional */ if (order->IsType(OT_CONDITIONAL) || order->IsType(OT_IMPLICIT)) return false; /* No travel time and we have not already finished travelling */ - if (travelling && order->travel_time == 0) return false; + if (travelling && !order->IsTravelTimetabled()) return false; /* No wait time but we are loading at this timetabled station */ - if (!travelling && order->wait_time == 0 && order->IsType(OT_GOTO_STATION) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) return false; + if (!travelling && !order->IsWaitTimetabled() && order->IsType(OT_GOTO_STATION) && + !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) { + return false; + } return true; } @@ -116,12 +109,12 @@ static void FillTimetableArrivalDepartureTable(const Vehicle *v, VehicleOrderID if (!order->IsType(OT_IMPLICIT)) { if (travelling || i != start) { if (!CanDetermineTimeTaken(order, true)) return; - sum += order->travel_time; + sum += order->GetTimetabledTravel(); table[i].arrival = sum; } if (!CanDetermineTimeTaken(order, false)) return; - sum += order->wait_time; + sum += order->GetTimetabledWait(); table[i].departure = sum; } @@ -138,7 +131,7 @@ static void FillTimetableArrivalDepartureTable(const Vehicle *v, VehicleOrderID * travelling part of the first order. */ if (!travelling) { if (!CanDetermineTimeTaken(order, true)) return; - sum += order->travel_time; + sum += order->GetTimetabledTravel(); table[i].arrival = sum; } } @@ -396,13 +389,23 @@ struct TimetableWindow : Window { } else if (order->IsType(OT_IMPLICIT)) { string = STR_TIMETABLE_NOT_TIMETABLEABLE; colour = ((i == selected) ? TC_SILVER : TC_GREY) | TC_NO_SHADE; - } else if (order->travel_time == 0) { - string = order->max_speed != UINT16_MAX ? STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED : STR_TIMETABLE_TRAVEL_NOT_TIMETABLED; + } else if (!order->IsTravelTimetabled()) { + if (order->GetTravelTime() > 0) { + SetTimetableParams(0, 1, order->GetTravelTime()); + string = order->GetMaxSpeed() != UINT16_MAX ? + STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED : + STR_TIMETABLE_TRAVEL_FOR_ESTIMATED; + } else { + string = order->GetMaxSpeed() != UINT16_MAX ? + STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED : + STR_TIMETABLE_TRAVEL_NOT_TIMETABLED; + } } else { - SetTimetableParams(0, 1, order->travel_time); - string = order->max_speed != UINT16_MAX ? STR_TIMETABLE_TRAVEL_FOR_SPEED : STR_TIMETABLE_TRAVEL_FOR; + SetTimetableParams(0, 1, order->GetTimetabledTravel()); + string = order->GetMaxSpeed() != UINT16_MAX ? + STR_TIMETABLE_TRAVEL_FOR_SPEED : STR_TIMETABLE_TRAVEL_FOR; } - SetDParam(2, order->max_speed); + SetDParam(2, order->GetMaxSpeed()); DrawString(rtl ? r.left + WD_FRAMERECT_LEFT : middle, rtl ? middle : r.right - WD_FRAMERECT_LEFT, y, string, colour); @@ -447,18 +450,20 @@ struct TimetableWindow : Window { if (arr_dep[i / 2].arrival != INVALID_TICKS) { DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_ARRIVAL_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); if (this->show_expected && i / 2 == earlyID) { - SetArrivalDepartParams(0, 1, arr_dep[i / 2].arrival); - DrawString(time_left, time_right, y, STR_GREEN_STRING, i == selected ? TC_WHITE : TC_BLACK); + SetDParam(0, _date + arr_dep[i / 2].arrival / DAY_TICKS); + DrawString(time_left, time_right, y, STR_JUST_DATE_TINY, TC_GREEN); } else { - SetArrivalDepartParams(0, 1, arr_dep[i / 2].arrival + offset); - DrawString(time_left, time_right, y, show_late ? STR_RED_STRING : STR_JUST_STRING, i == selected ? TC_WHITE : TC_BLACK); + SetDParam(0, _date + (arr_dep[i / 2].arrival + offset) / DAY_TICKS); + DrawString(time_left, time_right, y, STR_JUST_DATE_TINY, + show_late ? TC_RED : i == selected ? TC_WHITE : TC_BLACK); } } } else { if (arr_dep[i / 2].departure != INVALID_TICKS) { DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_DEPARTURE_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); - SetArrivalDepartParams(0, 1, arr_dep[i/2].departure + offset); - DrawString(time_left, time_right, y, show_late ? STR_RED_STRING : STR_JUST_STRING, i == selected ? TC_WHITE : TC_BLACK); + SetDParam(0, _date + (arr_dep[i/2].departure + offset) / DAY_TICKS); + DrawString(time_left, time_right, y, STR_JUST_DATE_TINY, + show_late ? TC_RED : i == selected ? TC_WHITE : TC_BLACK); } } y += FONT_HEIGHT_NORMAL; @@ -538,7 +543,7 @@ struct TimetableWindow : Window { StringID current = STR_EMPTY; if (order != NULL) { - uint time = (selected % 2 == 1) ? order->travel_time : order->wait_time; + uint time = (selected % 2 == 1) ? order->GetTravelTime() : order->GetWaitTime(); if (!_settings_client.gui.timetable_in_ticks) time /= DAY_TICKS; if (time != 0) { @@ -548,7 +553,7 @@ struct TimetableWindow : Window { } this->query_is_speed_query = false; - ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_NONE); + ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_ACCEPT_UNCHANGED); break; } @@ -561,8 +566,8 @@ struct TimetableWindow : Window { StringID current = STR_EMPTY; const Order *order = v->GetOrder(real); if (order != NULL) { - if (order->max_speed != UINT16_MAX) { - SetDParam(0, ConvertKmhishSpeedToDisplaySpeed(order->max_speed)); + if (order->GetMaxSpeed() != UINT16_MAX) { + SetDParam(0, ConvertKmhishSpeedToDisplaySpeed(order->GetMaxSpeed())); current = STR_JUST_INT; } } diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 7a66deb619..45d751dc56 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -44,6 +44,9 @@ #include "engine_base.h" #include "highscore.h" #include "game/game.hpp" +#include "goal_base.h" +#include "story_base.h" +#include "toolbar_gui.h" #include "widgets/toolbar_widget.h" @@ -51,6 +54,11 @@ #include "network/network_gui.h" #include "network/network_func.h" +#include "safeguards.h" + + +/** Width of the toolbar, shared by statusbar. */ +uint _toolbar_width = 0; RailType _last_built_railtype; RoadType _last_built_roadtype; @@ -183,7 +191,7 @@ static void PopupMainToolbMenu(Window *w, int widget, StringID string, int count { DropDownList *list = new DropDownList(); for (int i = 0; i < count; i++) { - list->push_back(new DropDownListStringItem(string + i, i, false)); + *list->Append() = new DropDownListStringItem(string + i, i, false); } PopupMainToolbMenu(w, widget, list, 0); } @@ -192,30 +200,43 @@ static void PopupMainToolbMenu(Window *w, int widget, StringID string, int count static const int CTMN_CLIENT_LIST = -1; ///< Show the client list static const int CTMN_NEW_COMPANY = -2; ///< Create a new company static const int CTMN_SPECTATE = -3; ///< Become spectator +static const int CTMN_SPECTATOR = -4; ///< Show a company window as spectator /** * Pop up a generic company list menu. + * @param w The toolbar window. + * @param widget The button widget id. + * @param grey A bitbask of which items to mark as disabled. + * @param include_spectator If true, a spectator option is included in the list. */ -static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0) +static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0, bool include_spectator = false) { DropDownList *list = new DropDownList(); #ifdef ENABLE_NETWORK - if (widget == WID_TN_COMPANIES && _networking) { - /* Add the client list button for the companies menu */ - list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_CLIENT_LIST, CTMN_CLIENT_LIST, false)); + if (_networking) { + if (widget == WID_TN_COMPANIES) { + /* Add the client list button for the companies menu */ + *list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_CLIENT_LIST, CTMN_CLIENT_LIST, false); + } - if (_local_company == COMPANY_SPECTATOR) { - list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_NEW_COMPANY, CTMN_NEW_COMPANY, NetworkMaxCompaniesReached())); - } else { - list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_SPECTATE, CTMN_SPECTATE, NetworkMaxSpectatorsReached())); + if (include_spectator) { + if (widget == WID_TN_COMPANIES) { + if (_local_company == COMPANY_SPECTATOR) { + *list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_NEW_COMPANY, CTMN_NEW_COMPANY, NetworkMaxCompaniesReached()); + } else { + *list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_SPECTATE, CTMN_SPECTATE, NetworkMaxSpectatorsReached()); + } + } else { + *list->Append() = new DropDownListStringItem(STR_NETWORK_TOOLBAR_LIST_SPECTATOR, CTMN_SPECTATOR, false); + } } } #endif /* ENABLE_NETWORK */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (!Company::IsValidID(c)) continue; - list->push_back(new DropDownListCompanyItem(c, false, HasBit(grey, c))); + *list->Append() = new DropDownListCompanyItem(c, false, HasBit(grey, c)); } PopupMainToolbMenu(w, widget, list, _local_company == COMPANY_SPECTATOR ? CTMN_CLIENT_LIST : (int)_local_company); @@ -289,24 +310,24 @@ enum OptionMenuEntries { static CallBackFunction ToolbarOptionsClick(Window *w) { DropDownList *list = new DropDownList(); - list->push_back(new DropDownListStringItem(STR_SETTINGS_MENU_GAME_OPTIONS, OME_GAMEOPTIONS, false)); - list->push_back(new DropDownListStringItem(STR_SETTINGS_MENU_CONFIG_SETTINGS, OME_SETTINGS, false)); + *list->Append() = new DropDownListStringItem(STR_SETTINGS_MENU_GAME_OPTIONS, OME_GAMEOPTIONS, false); + *list->Append() = new DropDownListStringItem(STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE, OME_SETTINGS, false); /* Changes to the per-AI settings don't get send from the server to the clients. Clients get * the settings once they join but never update it. As such don't show the window at all * to network clients. */ - if (!_networking || _network_server) list->push_back(new DropDownListStringItem(STR_SETTINGS_MENU_SCRIPT_SETTINGS, OME_SCRIPT_SETTINGS, false)); - list->push_back(new DropDownListStringItem(STR_SETTINGS_MENU_NEWGRF_SETTINGS, OME_NEWGRFSETTINGS, false)); - list->push_back(new DropDownListStringItem(STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS, OME_TRANSPARENCIES, false)); - list->push_back(new DropDownListItem(-1, false)); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED, OME_SHOW_TOWNNAMES, false, HasBit(_display_opt, DO_SHOW_TOWN_NAMES))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED, OME_SHOW_STATIONNAMES, false, HasBit(_display_opt, DO_SHOW_STATION_NAMES))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED, OME_SHOW_WAYPOINTNAMES, false, HasBit(_display_opt, DO_SHOW_WAYPOINT_NAMES))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_SIGNS_DISPLAYED, OME_SHOW_SIGNS, false, HasBit(_display_opt, DO_SHOW_SIGNS))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS, OME_SHOW_COMPETITOR_SIGNS, false, HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_FULL_ANIMATION, OME_FULL_ANIMATION, false, HasBit(_display_opt, DO_FULL_ANIMATION))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_FULL_DETAIL, OME_FULL_DETAILS, false, HasBit(_display_opt, DO_FULL_DETAIL))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS, OME_TRANSPARENTBUILDINGS, false, IsTransparencySet(TO_HOUSES))); - list->push_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_SIGNS, OME_SHOW_STATIONSIGNS, false, IsTransparencySet(TO_SIGNS))); + if (!_networking || _network_server) *list->Append() = new DropDownListStringItem(STR_SETTINGS_MENU_SCRIPT_SETTINGS, OME_SCRIPT_SETTINGS, false); + *list->Append() = new DropDownListStringItem(STR_SETTINGS_MENU_NEWGRF_SETTINGS, OME_NEWGRFSETTINGS, false); + *list->Append() = new DropDownListStringItem(STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS, OME_TRANSPARENCIES, false); + *list->Append() = new DropDownListItem(-1, false); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED, OME_SHOW_TOWNNAMES, false, HasBit(_display_opt, DO_SHOW_TOWN_NAMES)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED, OME_SHOW_STATIONNAMES, false, HasBit(_display_opt, DO_SHOW_STATION_NAMES)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED, OME_SHOW_WAYPOINTNAMES, false, HasBit(_display_opt, DO_SHOW_WAYPOINT_NAMES)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_SIGNS_DISPLAYED, OME_SHOW_SIGNS, false, HasBit(_display_opt, DO_SHOW_SIGNS)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS, OME_SHOW_COMPETITOR_SIGNS, false, HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_FULL_ANIMATION, OME_FULL_ANIMATION, false, HasBit(_display_opt, DO_FULL_ANIMATION)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_FULL_DETAIL, OME_FULL_DETAILS, false, HasBit(_display_opt, DO_FULL_DETAIL)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS, OME_TRANSPARENTBUILDINGS, false, IsTransparencySet(TO_HOUSES)); + *list->Append() = new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_SIGNS, OME_SHOW_STATIONSIGNS, false, IsTransparencySet(TO_SIGNS)); ShowDropDownList(w, list, 0, WID_TN_SETTINGS, 140, true, true); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); @@ -336,7 +357,7 @@ static CallBackFunction MenuClickSettings(int index) ToggleBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS); InvalidateWindowClassesData(WC_SIGN_LIST, -1); break; - case OME_FULL_ANIMATION: ToggleBit(_display_opt, DO_FULL_ANIMATION); break; + case OME_FULL_ANIMATION: ToggleBit(_display_opt, DO_FULL_ANIMATION); CheckBlitter(); break; case OME_FULL_DETAILS: ToggleBit(_display_opt, DO_FULL_DETAIL); break; case OME_TRANSPARENTBUILDINGS: ToggleTransparency(TO_HOUSES); break; case OME_SHOW_STATIONSIGNS: ToggleTransparency(TO_SIGNS); break; @@ -435,10 +456,10 @@ enum MapMenuEntries { static CallBackFunction ToolbarMapClick(Window *w) { DropDownList *list = new DropDownList(); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_MAP_OF_WORLD, MME_SHOW_SMALLMAP, false)); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_EXTRA_VIEW_PORT, MME_SHOW_EXTRAVIEWPORTS, false)); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_LINGRAPH_LEGEND, MME_SHOW_LINKGRAPH, false)); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_SIGN_LIST, MME_SHOW_SIGNLISTS, false)); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_MAP_OF_WORLD, MME_SHOW_SMALLMAP, false); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_EXTRA_VIEW_PORT, MME_SHOW_EXTRAVIEWPORTS, false); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_LINGRAPH_LEGEND, MME_SHOW_LINKGRAPH, false); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_SIGN_LIST, MME_SHOW_SIGNLISTS, false); PopupMainToolbMenu(w, WID_TN_SMALL_MAP, list, 0); return CBF_NONE; } @@ -446,11 +467,11 @@ static CallBackFunction ToolbarMapClick(Window *w) static CallBackFunction ToolbarScenMapTownDir(Window *w) { DropDownList *list = new DropDownList(); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_MAP_OF_WORLD, MME_SHOW_SMALLMAP, false)); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_EXTRA_VIEW_PORT, MME_SHOW_EXTRAVIEWPORTS, false)); - list->push_back(new DropDownListStringItem(STR_MAP_MENU_SIGN_LIST, MME_SHOW_SIGNLISTS, false)); - list->push_back(new DropDownListStringItem(STR_TOWN_MENU_TOWN_DIRECTORY, MME_SHOW_TOWNDIRECTORY, false)); - list->push_back(new DropDownListStringItem(STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY, MME_SHOW_INDUSTRYDIRECTORY, false)); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_MAP_OF_WORLD, MME_SHOW_SMALLMAP, false); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_EXTRA_VIEW_PORT, MME_SHOW_EXTRAVIEWPORTS, false); + *list->Append() = new DropDownListStringItem(STR_MAP_MENU_SIGN_LIST, MME_SHOW_SIGNLISTS, false); + *list->Append() = new DropDownListStringItem(STR_TOWN_MENU_TOWN_DIRECTORY, MME_SHOW_TOWNDIRECTORY, false); + *list->Append() = new DropDownListStringItem(STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY, MME_SHOW_INDUSTRYDIRECTORY, false); PopupMainToolbMenu(w, WID_TE_SMALL_MAP, list, 0); return CBF_NONE; } @@ -565,7 +586,7 @@ static CallBackFunction MenuClickFinances(int index) static CallBackFunction ToolbarCompaniesClick(Window *w) { - PopupMainCompanyToolbMenu(w, WID_TN_COMPANIES); + PopupMainCompanyToolbMenu(w, WID_TN_COMPANIES, 0, true); return CBF_NONE; } @@ -611,7 +632,7 @@ static CallBackFunction MenuClickCompany(int index) static CallBackFunction ToolbarStoryClick(Window *w) { - PopupMainCompanyToolbMenu(w, WID_TN_STORY); + PopupMainCompanyToolbMenu(w, WID_TN_STORY, 0, true); return CBF_NONE; } @@ -623,7 +644,7 @@ static CallBackFunction ToolbarStoryClick(Window *w) */ static CallBackFunction MenuClickStory(int index) { - ShowStoryBook((CompanyID)index); + ShowStoryBook(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index); return CBF_NONE; } @@ -631,7 +652,7 @@ static CallBackFunction MenuClickStory(int index) static CallBackFunction ToolbarGoalClick(Window *w) { - PopupMainCompanyToolbMenu(w, WID_TN_GOAL); + PopupMainCompanyToolbMenu(w, WID_TN_GOAL, 0, true); return CBF_NONE; } @@ -643,7 +664,7 @@ static CallBackFunction ToolbarGoalClick(Window *w) */ static CallBackFunction MenuClickGoal(int index) { - ShowGoalsList((CompanyID)index); + ShowGoalsList(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index); return CBF_NONE; } @@ -870,7 +891,7 @@ static CallBackFunction ToolbarBuildRoadClick(Window *w) DropDownList *list = new DropDownList(); /* Road is always visible and available. */ - list->push_back(new DropDownListStringItem(STR_ROAD_MENU_ROAD_CONSTRUCTION, ROADTYPE_ROAD, false)); + *list->Append() = new DropDownListStringItem(STR_ROAD_MENU_ROAD_CONSTRUCTION, ROADTYPE_ROAD, false); /* Tram is only visible when there will be a tram, and available when that has been introduced. */ Engine *e; @@ -878,7 +899,7 @@ static CallBackFunction ToolbarBuildRoadClick(Window *w) if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue; if (!HasBit(e->info.misc_flags, EF_ROAD_TRAM)) continue; - list->push_back(new DropDownListStringItem(STR_ROAD_MENU_TRAM_CONSTRUCTION, ROADTYPE_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM))); + *list->Append() = new DropDownListStringItem(STR_ROAD_MENU_TRAM_CONSTRUCTION, ROADTYPE_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM)); break; } ShowDropDownList(w, list, _last_built_roadtype, WID_TN_ROADS, 140, true, true); @@ -1049,14 +1070,14 @@ static void MenuClickLargeWorldScreenshot(ScreenshotType t) { ViewPort vp; SetupScreenshotViewport(t, &vp); - if (vp.width * vp.height > 8192 * 8192) { + if ((uint64)vp.width * (uint64)vp.height > 8192 * 8192) { /* Ask for confirmation */ SetDParam(0, vp.width); SetDParam(1, vp.height); _confirmed_screenshot_type = t; ShowQuery(STR_WARNING_SCREENSHOT_SIZE_CAPTION, STR_WARNING_SCREENSHOT_SIZE_MESSAGE, NULL, ScreenshotConfirmCallback); } else { - /* Less than 4M pixels, just do it */ + /* Less than 64M pixels, just do it */ MakeScreenshot(t, NULL); } } @@ -1095,6 +1116,19 @@ void ToggleDirtyBlocks() } } +/** + * Set the starting year for a scenario. + * @param year New starting year. + */ +void SetStartingYear(Year year) +{ + _settings_game.game_creation.starting_year = Clamp(year, MIN_YEAR, MAX_YEAR); + Date new_date = ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1); + /* If you open a savegame as scenario there may already be link graphs.*/ + LinkGraphSchedule::instance.ShiftDates(new_date - _date); + SetDate(new_date, 0); +} + /** * Choose the proper callback function for the main toolbar's help menu. * @param index The menu index which was selected. @@ -1154,8 +1188,7 @@ static CallBackFunction ToolbarScenDateBackward(Window *w) w->HandleButtonClick(WID_TE_DATE_BACKWARD); w->SetDirty(); - _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year - 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(_settings_game.game_creation.starting_year - 1); } _left_button_clicked = false; return CBF_NONE; @@ -1168,8 +1201,7 @@ static CallBackFunction ToolbarScenDateForward(Window *w) w->HandleButtonClick(WID_TE_DATE_FORWARD); w->SetDirty(); - _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year + 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(_settings_game.game_creation.starting_year + 1); } _left_button_clicked = false; return CBF_NONE; @@ -1322,7 +1354,7 @@ public: child_wid->current_x = child_wid->smallest_x; } } - w->window_desc->default_width = nbuttons * this->smallest_x; + _toolbar_width = nbuttons * this->smallest_x; } void AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) @@ -1433,7 +1465,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { /* virtual */ const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const { static const uint SMALLEST_ARRANGEMENT = 14; - static const uint BIGGEST_ARRANGEMENT = 19; + static const uint BIGGEST_ARRANGEMENT = 20; static const byte arrange14[] = { 0, 1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 29, @@ -1458,6 +1490,10 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { 0, 1, 2, 4, 5, 6, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 19, 20, 29, 0, 1, 3, 4, 7, 8, 9, 12, 14, 27, 21, 22, 23, 24, 25, 28, 19, 20, 29, }; + static const byte arrange20[] = { + 0, 1, 2, 4, 5, 6, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 11, 19, 20, 29, + 0, 1, 3, 4, 7, 8, 9, 12, 14, 27, 21, 22, 23, 24, 25, 10, 28, 19, 20, 29, + }; static const byte arrange_all[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 }; @@ -1471,7 +1507,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { } /* Introduce the split toolbar */ - static const byte * const arrangements[] = { arrange14, arrange15, arrange16, arrange17, arrange18, arrange19 }; + static const byte * const arrangements[] = { arrange14, arrange15, arrange16, arrange17, arrange18, arrange19, arrange20 }; button_count = arrangable_count = full_buttons; spacer_count = this->spacers; @@ -1494,7 +1530,7 @@ class NWidgetScenarioToolbarContainer : public NWidgetToolbarContainer { assert(i < lengthof(this->panel_widths)); this->panel_widths[i++] = child_wid->current_x; - w->window_desc->default_width += child_wid->current_x; + _toolbar_width += child_wid->current_x; } } @@ -1634,6 +1670,11 @@ struct MainToolbarWindow : Window { DoZoomInOutWindow(ZOOM_NONE, this); } + virtual void FindWindowPlacementAndResize(int def_width, int def_height) + { + Window::FindWindowPlacementAndResize(_toolbar_width, def_height); + } + virtual void OnPaint() { /* If spectator, disable all construction buttons @@ -1641,7 +1682,10 @@ struct MainToolbarWindow : Window { * Since enabled state is the default, just disable when needed */ this->SetWidgetsDisabledState(_local_company == COMPANY_SPECTATOR, WID_TN_RAILS, WID_TN_ROADS, WID_TN_WATER, WID_TN_AIR, WID_TN_LANDSCAPE, WIDGET_LIST_END); /* disable company list drop downs, if there are no companies */ - this->SetWidgetsDisabledState(Company::GetNumItems() == 0, WID_TN_STATIONS, WID_TN_FINANCES, WID_TN_TRAINS, WID_TN_ROADVEHS, WID_TN_SHIPS, WID_TN_AIRCRAFTS, WID_TN_STORY, WID_TN_GOAL, WIDGET_LIST_END); + this->SetWidgetsDisabledState(Company::GetNumItems() == 0, WID_TN_STATIONS, WID_TN_FINANCES, WID_TN_TRAINS, WID_TN_ROADVEHS, WID_TN_SHIPS, WID_TN_AIRCRAFTS, WIDGET_LIST_END); + + this->SetWidgetDisabledState(WID_TN_GOAL, Goal::GetNumItems() == 0); + this->SetWidgetDisabledState(WID_TN_STORY, StoryPage::GetNumItems() == 0); this->SetWidgetDisabledState(WID_TN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN)); this->SetWidgetDisabledState(WID_TN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)); @@ -1865,7 +1909,7 @@ static const NWidgetPart _nested_toolbar_normal_widgets[] = { }; static WindowDesc _toolb_normal_desc( - WDP_MANUAL, NULL, 640, 22, + WDP_MANUAL, NULL, 0, 0, WC_MAIN_TOOLBAR, WC_NONE, WDF_NO_FOCUS, _nested_toolbar_normal_widgets, lengthof(_nested_toolbar_normal_widgets), @@ -1946,6 +1990,11 @@ struct ScenarioEditorToolbarWindow : Window { DoZoomInOutWindow(ZOOM_NONE, this); } + virtual void FindWindowPlacementAndResize(int def_width, int def_height) + { + Window::FindWindowPlacementAndResize(_toolbar_width, def_height); + } + virtual void OnPaint() { this->SetWidgetDisabledState(WID_TE_DATE_BACKWARD, _settings_game.game_creation.starting_year <= MIN_YEAR); @@ -2097,8 +2146,7 @@ struct ScenarioEditorToolbarWindow : Window { /* An empty string means revert to the default */ value = DEF_START_YEAR; } - _settings_game.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(value); this->SetDirty(); } @@ -2177,7 +2225,7 @@ static const NWidgetPart _nested_toolb_scen_widgets[] = { }; static WindowDesc _toolb_scen_desc( - WDP_MANUAL, NULL, 640, 22, + WDP_MANUAL, NULL, 0, 0, WC_MAIN_TOOLBAR, WC_NONE, WDF_NO_FOCUS, _nested_toolb_scen_widgets, lengthof(_nested_toolb_scen_widgets), diff --git a/src/toolbar_gui.h b/src/toolbar_gui.h index d3eba5b272..37fc8f0e9f 100644 --- a/src/toolbar_gui.h +++ b/src/toolbar_gui.h @@ -16,4 +16,6 @@ void AllocateToolbar(); void ToggleBoundingBoxes(); void ToggleDirtyBlocks(); +extern uint _toolbar_width; + #endif /* TOOLBAR_GUI_H */ diff --git a/src/town.h b/src/town.h index a672c2ceeb..010c7c2168 100644 --- a/src/town.h +++ b/src/town.h @@ -22,7 +22,7 @@ template struct BuildingCounts { - T id_count[HOUSE_MAX]; + T id_count[NUM_HOUSES]; T class_count[HOUSE_CLASS_MAX]; }; @@ -35,7 +35,8 @@ static const uint INVALID_TOWN = 0xFFFF; static const uint TOWN_GROWTH_WINTER = 0xFFFFFFFE; ///< The town only needs this cargo in the winter (any amount) static const uint TOWN_GROWTH_DESERT = 0xFFFFFFFF; ///< The town needs the cargo for growth when on desert (any amount) -static const uint16 TOWN_GROW_RATE_CUSTOM = 0x8000; ///< If this mask is applied to Town::grow_counter, the grow_counter will not be calculated by the system (but assumed to be set by scripts) +static const uint16 TOWN_GROW_RATE_CUSTOM = 0x8000; ///< If this mask is applied to Town::growth_rate, the grow_counter will not be calculated by the system (but assumed to be set by scripts) +static const uint16 TOWN_GROW_RATE_CUSTOM_NONE = 0xFFFF; ///< Special value for Town::growth_rate to disable town growth. typedef Pool TownPool; extern TownPool _town_pool; @@ -60,13 +61,9 @@ struct Town : TownPool::PoolItem<&_town_pool> { uint32 townnamegrfid; uint16 townnametype; uint32 townnameparts; - char *name; + char *name; ///< Custom town name. If NULL, the town was not renamed and uses the generated name. - /* Makes sure we don't build certain house types twice. - * bit 0 = Building funds received - * bit 1 = CHURCH - * bit 2 = STADIUM */ - byte flags; + byte flags; ///< See #TownFlags. uint16 noise_reached; ///< level of noise that all the airports are generating @@ -94,7 +91,7 @@ struct Town : TownPool::PoolItem<&_town_pool> { uint16 time_until_rebuild; ///< time until we rebuild a house - uint16 grow_counter; ///< counter to count when to grow + uint16 grow_counter; ///< counter to count when to grow, value is smaller than or equal to growth_rate uint16 growth_rate; ///< town growth rate byte fund_buildings_months; ///< fund buildings program in action? @@ -165,7 +162,7 @@ enum TownRatingCheckType { * And there are 5 more bits available on flags... */ enum TownFlags { - TOWN_IS_FUNDED = 0, ///< Town has received some funds for + TOWN_IS_GROWING = 0, ///< Conditions for town growth are met. Grow according to Town::growth_rate. TOWN_HAS_CHURCH = 1, ///< There can be only one church by town. TOWN_HAS_STADIUM = 2, ///< There can be only one stadium by town. }; diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 7297692129..ea44603b0c 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -50,6 +50,8 @@ #include "table/strings.h" #include "table/town_land.h" +#include "safeguards.h" + TownID _new_town_id; uint32 _town_cargoes_accepted; ///< Bitmap of all cargoes accepted by houses. @@ -169,7 +171,7 @@ Money HouseSpec::GetRemovalCost() const return (_price[PR_CLEAR_HOUSE] * this->removal_cost) >> 8; } -// Local +/* Local */ static int _grow_town_result; /* Describe the possible states */ @@ -339,6 +341,24 @@ static void AnimateTile_Town(TileIndex tile) */ static bool IsCloseToTown(TileIndex tile, uint dist) { + /* On a large map with many towns, it may be faster to check the surroundings of the tile. + * An iteration in TILE_AREA_LOOP() is generally 2 times faster than one in FOR_ALL_TOWNS(). */ + if (Town::GetNumItems() > (size_t) (dist * dist * 2)) { + const int tx = TileX(tile); + const int ty = TileY(tile); + TileArea tile_area = TileArea( + TileXY(max(0, tx - (int) dist), max(0, ty - (int) dist)), + TileXY(min(MapMaxX(), tx + (int) dist), min(MapMaxY(), ty + (int) dist)) + ); + TILE_AREA_LOOP(atile, tile_area) { + if (GetTileType(atile) == MP_HOUSE) { + Town *t = Town::GetByTile(atile); + if (DistanceManhattan(tile, t->xy) < dist) return true; + } + } + return false; + } + const Town *t; FOR_ALL_TOWNS(t) { @@ -357,7 +377,8 @@ void Town::UpdateVirtCoord() SetDParam(0, this->index); SetDParam(1, this->cache.population); this->cache.sign.UpdatePosition(pt.x, pt.y - 24 * ZOOM_LVL_BASE, - _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN); + _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN, + STR_VIEWPORT_TOWN); SetWindowDirty(WC_TOWN_VIEW, this->index); } @@ -510,7 +531,7 @@ static void TileLoop_Town(TileIndex tile) Backup cur_company(_current_company, OWNER_TOWN, FILE_LINE); if ((hs->building_flags & BUILDING_HAS_1_TILE) && - HasBit(t->flags, TOWN_IS_FUNDED) && + HasBit(t->flags, TOWN_IS_GROWING) && CanDeleteHouse(tile) && GetHouseAge(tile) >= hs->minimum_life && --t->time_until_rebuild == 0) { @@ -758,7 +779,7 @@ static bool GrowTown(Town *t); static void TownTickHandler(Town *t) { - if (HasBit(t->flags, TOWN_IS_FUNDED)) { + if (HasBit(t->flags, TOWN_IS_GROWING)) { int i = t->grow_counter - 1; if (i < 0) { if (GrowTown(t)) { @@ -848,7 +869,7 @@ static bool IsRoadAllowedHere(Town *t, TileIndex tile, DiagDirection dir) if (DistanceFromEdge(tile) == 0) return false; /* Prevent towns from building roads under bridges along the bridge. Looks silly. */ - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && GetBridgeAxis(tile) == DiagDirToAxis(dir)) return false; + if (IsBridgeAbove(tile) && GetBridgeAxis(tile) == DiagDirToAxis(dir)) return false; /* Check if there already is a road at this point? */ if (GetTownRoadBits(tile) == ROAD_NONE) { @@ -1276,13 +1297,56 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t GrowTownWithRoad(t1, tile, rcmd); } +/** + * Checks whether a road can be followed or is a dead end, that can not be extended to the next tile. + * This only checks trivial but often cases. + * @param tile Start tile for road. + * @param dir Direction for road to follow or build. + * @return true If road is or can be connected in the specified direction. + */ +static bool CanFollowRoad(TileIndex tile, DiagDirection dir) +{ + TileIndex target_tile = tile + TileOffsByDiagDir(dir); + if (!IsValidTile(target_tile)) return false; + if (HasTileWaterGround(target_tile)) return false; + + RoadBits target_rb = GetTownRoadBits(target_tile); + if (_settings_game.economy.allow_town_roads || _generating_world) { + /* Check whether a road connection exists or can be build. */ + switch (GetTileType(target_tile)) { + case MP_ROAD: + return target_rb != ROAD_NONE; + + case MP_STATION: + return IsDriveThroughStopTile(target_tile); + + case MP_TUNNELBRIDGE: + return GetTunnelBridgeTransportType(target_tile) == TRANSPORT_ROAD; + + case MP_HOUSE: + case MP_INDUSTRY: + case MP_OBJECT: + return false; + + default: + /* Checked for void and water earlier */ + return true; + } + } else { + /* Check whether a road connection already exists, + * and it leads somewhere else. */ + RoadBits back_rb = DiagDirToRoadBits(ReverseDiagDir(dir)); + return (target_rb & back_rb) != 0 && (target_rb & ~back_rb) != 0; + } +} + /** * Returns "growth" if a house was built, or no if the build failed. * @param t town to inquiry * @param tile to inquiry - * @return something other than zero(0)if town expansion was possible + * @return true if town expansion was possible */ -static int GrowTownAtRoad(Town *t, TileIndex tile) +static bool GrowTownAtRoad(Town *t, TileIndex tile) { /* Special case. * @see GrowTownInTile Check the else if @@ -1317,9 +1381,9 @@ static int GrowTownAtRoad(Town *t, TileIndex tile) /* Exclude the source position from the bitmask * and return if no more road blocks available */ - cur_rb &= ~DiagDirToRoadBits(ReverseDiagDir(target_dir)); + if (IsValidDiagDirection(target_dir)) cur_rb &= ~DiagDirToRoadBits(ReverseDiagDir(target_dir)); if (cur_rb == ROAD_NONE) { - return _grow_town_result; + return _grow_town_result == GROWTH_SUCCEED; } if (IsTileType(tile, MP_TUNNELBRIDGE)) { @@ -1328,14 +1392,22 @@ static int GrowTownAtRoad(Town *t, TileIndex tile) } else { /* Select a random bit from the blockmask, walk a step * and continue the search from there. */ - do target_dir = RandomDiagDir(); while (!(cur_rb & DiagDirToRoadBits(target_dir))); + do { + if (cur_rb == ROAD_NONE) return false; + RoadBits target_bits; + do { + target_dir = RandomDiagDir(); + target_bits = DiagDirToRoadBits(target_dir); + } while (!(cur_rb & target_bits)); + cur_rb &= ~target_bits; + } while (!CanFollowRoad(tile, target_dir)); } tile = TileAddByDiagDir(tile, target_dir); if (IsTileType(tile, MP_ROAD) && !IsRoadDepot(tile) && HasTileRoadType(tile, ROADTYPE_ROAD)) { /* Don't allow building over roads of other cities */ if (IsRoadOwner(tile, ROADTYPE_ROAD, OWNER_TOWN) && Town::GetByTile(tile) != t) { - _grow_town_result = GROWTH_SUCCEED; + return false; } else if (IsRoadOwner(tile, ROADTYPE_ROAD, OWNER_NONE) && _game_mode == GM_EDITOR) { /* If we are in the SE, and this road-piece has no town owner yet, it just found an * owner :) (happy happy happy road now) */ @@ -1347,7 +1419,7 @@ static int GrowTownAtRoad(Town *t, TileIndex tile) /* Max number of times is checked. */ } while (--_grow_town_result >= 0); - return (_grow_town_result == -2); + return _grow_town_result == GROWTH_SUCCEED - 1; } /** @@ -1369,7 +1441,7 @@ static RoadBits GenRandomRoadBits() /** * Grow the town * @param t town to grow - * @return true iff a house was built + * @return true iff something (house, road, bridge, ...) was built */ static bool GrowTown(Town *t) { @@ -1398,9 +1470,9 @@ static bool GrowTown(Town *t) const TileIndexDiffC *ptr; for (ptr = _town_coord_mod; ptr != endof(_town_coord_mod); ++ptr) { if (GetTownRoadBits(tile) != ROAD_NONE) { - int r = GrowTownAtRoad(t, tile); + bool success = GrowTownAtRoad(t, tile); cur_company.Restore(); - return r != 0; + return success; } tile = TILE_ADD(tile, ToTileIndexDiff(*ptr)); } @@ -1411,7 +1483,7 @@ static bool GrowTown(Town *t) tile = t->xy; for (ptr = _town_coord_mod; ptr != endof(_town_coord_mod); ++ptr) { /* Only work with plain land that not already has a house */ - if (!IsTileType(tile, MP_HOUSE) && GetTileSlope(tile) == SLOPE_FLAT) { + if (!IsTileType(tile, MP_HOUSE) && IsTileFlat(tile)) { if (DoCommand(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR).Succeeded()) { DoCommand(tile, GenRandomRoadBits(), t->index, DC_EXEC | DC_AUTO, CMD_BUILD_ROAD); cur_company.Restore(); @@ -1574,7 +1646,7 @@ static CommandCost TownCanBePlacedHere(TileIndex tile) } /* Can only build on clear flat areas, possibly with trees. */ - if ((!IsTileType(tile, MP_CLEAR) && !IsTileType(tile, MP_TREES)) || GetTileSlope(tile) != SLOPE_FLAT) { + if ((!IsTileType(tile, MP_CLEAR) && !IsTileType(tile, MP_TREES)) || !IsTileFlat(tile)) { return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } @@ -1621,14 +1693,17 @@ CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (size >= TSZ_END) return CMD_ERROR; if (layout >= NUM_TLS) return CMD_ERROR; - /* Some things are allowed only in the scenario editor */ - if (_game_mode != GM_EDITOR) { + /* Some things are allowed only in the scenario editor and for game scripts. */ + if (_game_mode != GM_EDITOR && _current_company != OWNER_DEITY) { if (_settings_game.economy.found_town == TF_FORBIDDEN) return CMD_ERROR; if (size == TSZ_LARGE) return CMD_ERROR; if (random) return CMD_ERROR; if (_settings_game.economy.found_town != TF_CUSTOM_LAYOUT && layout != _settings_game.economy.town_layout) { return CMD_ERROR; } + } else if (_current_company == OWNER_DEITY && random) { + /* Random parameter is not allowed for Game Scripts. */ + return CMD_ERROR; } if (StrEmpty(text)) { @@ -1664,7 +1739,7 @@ CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 return CommandCost(EXPENSES_OTHER); } - _generating_world = true; + Backup old_generating_world(_generating_world, true, FILE_LINE); UpdateNearestTownForRoadTiles(true); Town *t; if (random) { @@ -1679,10 +1754,10 @@ CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 DoCreateTown(t, tile, townnameparts, size, city, layout, true); } UpdateNearestTownForRoadTiles(false); - _generating_world = false; + old_generating_world.Restore(); if (t != NULL && !StrEmpty(text)) { - t->name = strdup(text); + t->name = stredup(text); t->UpdateVirtCoord(); } @@ -1693,7 +1768,7 @@ CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 SetDParam(0, _current_company); GetString(company_name, STR_COMPANY_NAME, lastof(company_name)); - char *cn = strdup(company_name); + char *cn = stredup(company_name); SetDParamStr(0, cn); SetDParam(1, t->index); @@ -1772,7 +1847,7 @@ static bool FindFurthestFromWater(TileIndex tile, void *user_data) uint dist = GetClosestWaterDistance(tile, true); if (IsTileType(tile, MP_CLEAR) && - GetTileSlope(tile) == SLOPE_FLAT && + IsTileFlat(tile) && IsTileAlignedToGrid(tile, sp->layout) && dist > sp->max_dist) { sp->tile = tile; @@ -1877,7 +1952,9 @@ bool GenerateTowns(TownLayout layout) uint current_number = 0; uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.number_towns : 0; uint total = (difficulty == (uint)CUSTOM_TOWN_NUMBER_DIFFICULTY) ? _settings_game.game_creation.custom_town_number : ScaleByMapSize(_num_initial_towns[difficulty] + (Random() & 7)); + total = min(TownPool::MAX_SIZE, total); uint32 townnameparts; + TownNames town_names; SetGeneratingWorldProgress(GWP_TOWN, total); @@ -1888,11 +1965,13 @@ bool GenerateTowns(TownLayout layout) bool city = (_settings_game.economy.larger_towns != 0 && Chance16(1, _settings_game.economy.larger_towns)); IncreaseGeneratingWorldProgress(GWP_TOWN); /* Get a unique name for the town. */ - if (!GenerateTownName(&townnameparts)) continue; + if (!GenerateTownName(&townnameparts, &town_names)) continue; /* try 20 times to create a random-sized town for the first loop. */ if (CreateRandomTown(20, townnameparts, TSZ_RANDOM, city, layout) != NULL) current_number++; // If creation was successful, raise a flag. } while (--total); + town_names.clear(); + if (current_number != 0) return true; /* If current_number is still zero at this point, it means that not a single town has been created. @@ -1991,7 +2070,7 @@ static inline bool CanBuildHouseHere(TileIndex tile, TownID town, bool noslope) if ((noslope && slope != SLOPE_FLAT) || IsSteepSlope(slope)) return false; /* building under a bridge? */ - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return false; + if (IsBridgeAbove(tile)) return false; /* do not try to build over house owned by another town */ if (IsTileType(tile, MP_HOUSE) && GetTownIndex(tile) != town) return false; @@ -2191,13 +2270,13 @@ static bool BuildTownHouse(Town *t, TileIndex tile) /* bits 0-4 are used * bits 11-15 are used * bits 5-10 are not used. */ - HouseID houses[HOUSE_MAX]; + HouseID houses[NUM_HOUSES]; uint num = 0; - uint probs[HOUSE_MAX]; + uint probs[NUM_HOUSES]; uint probability_max = 0; /* Generate a list of all possible houses that can be built. */ - for (uint i = 0; i < HOUSE_MAX; i++) { + for (uint i = 0; i < NUM_HOUSES; i++) { const HouseSpec *hs = HouseSpec::Get(i); /* Verify that the candidate house spec matches the current tile status */ @@ -2421,7 +2500,7 @@ CommandCost CmdRenameTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (flags & DC_EXEC) { free(t->name); - t->name = reset ? NULL : strdup(text); + t->name = reset ? NULL : stredup(text); t->UpdateVirtCoord(); InvalidateWindowData(WC_TOWN_DIRECTORY, 0, 1); @@ -2462,7 +2541,7 @@ CommandCost CmdTownCargoGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uin if (_current_company != OWNER_DEITY) return CMD_ERROR; TownEffect te = (TownEffect)GB(p1, 16, 8); - if (te < TE_BEGIN || te > TE_END) return CMD_ERROR; + if (te < TE_BEGIN || te >= TE_END) return CMD_ERROR; uint16 index = GB(p1, 0, 16); Town *t = Town::GetIfValid(index); @@ -2498,7 +2577,7 @@ CommandCost CmdTownSetText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 if (flags & DC_EXEC) { free(t->text); - t->text = StrEmpty(text) ? NULL : strdup(text); + t->text = StrEmpty(text) ? NULL : stredup(text); InvalidateWindowData(WC_TOWN_VIEW, p1); } @@ -2510,21 +2589,34 @@ CommandCost CmdTownSetText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 * @param tile Unused. * @param flags Type of operation. * @param p1 Town ID to cargo game of. - * @param p2 Amount of days between growth. + * @param p2 Amount of days between growth, or TOWN_GROW_RATE_CUSTOM_NONE, or 0 to reset custom growth rate. * @param text Unused. * @return Empty cost or an error. */ CommandCost CmdTownGrowthRate(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (_current_company != OWNER_DEITY) return CMD_ERROR; - if ((p2 & TOWN_GROW_RATE_CUSTOM) != 0) return CMD_ERROR; + if ((p2 & TOWN_GROW_RATE_CUSTOM) != 0 && p2 != TOWN_GROW_RATE_CUSTOM_NONE) return CMD_ERROR; if (GB(p2, 16, 16) != 0) return CMD_ERROR; Town *t = Town::GetIfValid(p1); if (t == NULL) return CMD_ERROR; if (flags & DC_EXEC) { - t->growth_rate = (p2 == 0) ? 0 : p2 | TOWN_GROW_RATE_CUSTOM; + if (p2 == 0) { + /* Clear TOWN_GROW_RATE_CUSTOM, UpdateTownGrowRate will determine a proper value */ + t->growth_rate = 0; + } else { + uint old_rate = t->growth_rate & ~TOWN_GROW_RATE_CUSTOM; + if (t->grow_counter >= old_rate) { + /* This also catches old_rate == 0 */ + t->grow_counter = p2; + } else { + /* Scale grow_counter, so half finished houses stay half finished */ + t->grow_counter = t->grow_counter * p2 / old_rate; + } + t->growth_rate = p2 | TOWN_GROW_RATE_CUSTOM; + } UpdateTownGrowRate(t); InvalidateWindowData(WC_TOWN_VIEW, p1); } @@ -2632,7 +2724,7 @@ CommandCost CmdDeleteTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 } else { Object *o = Object::GetByTile(tile); if (o->town == t) { - if (GetObjectType(tile) == OBJECT_STATUE) { + if (o->type == OBJECT_STATUE) { /* Statue... always remove. */ try_clear = true; } else { @@ -2702,7 +2794,7 @@ static CommandCost TownActionRoadRebuild(Town *t, DoCommandFlag flags) SetDParam(0, _current_company); GetString(company_name, STR_COMPANY_NAME, lastof(company_name)); - char *cn = strdup(company_name); + char *cn = stredup(company_name); SetDParam(0, t->index); SetDParamStr(1, cn); @@ -2750,7 +2842,7 @@ static bool SearchTileForStatue(TileIndex tile, void *user_data) /* Statues can be build on slopes, just like houses. Only the steep slopes is a no go. */ if (IsSteepSlope(GetTileSlope(tile))) return false; /* Don't build statues under bridges. */ - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return false; + if (IsBridgeAbove(tile)) return false; /* A clear-able open space is always preferred. */ if ((IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES)) && TryClearTile(tile)) { @@ -2810,11 +2902,12 @@ static CommandCost TownActionFundBuildings(Town *t, DoCommandFlag flags) if (flags & DC_EXEC) { /* Build next tick */ t->grow_counter = 1; - /* If we were not already growing */ - SetBit(t->flags, TOWN_IS_FUNDED); /* And grow for 3 months */ t->fund_buildings_months = 3; + /* Enable growth (also checking GameScript's opinion) */ + UpdateTownGrowRate(t); + SetWindowDirty(WC_TOWN_VIEW, t->index); } return CommandCost(); @@ -3009,7 +3102,7 @@ static void UpdateTownRating(Town *t) static void UpdateTownGrowRate(Town *t) { - ClrBit(t->flags, TOWN_IS_FUNDED); + ClrBit(t->flags, TOWN_IS_GROWING); SetWindowDirty(WC_TOWN_VIEW, t->index); if (_settings_game.economy.town_growth_rate == 0 && t->fund_buildings_months == 0) return; @@ -3032,7 +3125,7 @@ static void UpdateTownGrowRate(Town *t) } if ((t->growth_rate & TOWN_GROW_RATE_CUSTOM) != 0) { - SetBit(t->flags, TOWN_IS_FUNDED); + if (t->growth_rate != TOWN_GROW_RATE_CUSTOM_NONE) SetBit(t->flags, TOWN_IS_GROWING); SetWindowDirty(WC_TOWN_VIEW, t->index); return; } @@ -3074,11 +3167,9 @@ static void UpdateTownGrowRate(Town *t) if (t->larger_town) m /= 2; t->growth_rate = m / (t->cache.num_houses / 50 + 1); - if (m <= t->grow_counter) { - t->grow_counter = m; - } + t->grow_counter = min(t->growth_rate, t->grow_counter); - SetBit(t->flags, TOWN_IS_FUNDED); + SetBit(t->flags, TOWN_IS_GROWING); SetWindowDirty(WC_TOWN_VIEW, t->index); } @@ -3375,7 +3466,7 @@ extern const TileTypeProcs _tile_type_town_procs = { }; -HouseSpec _house_specs[HOUSE_MAX]; +HouseSpec _house_specs[NUM_HOUSES]; void ResetHouses() { diff --git a/src/town_gui.cpp b/src/town_gui.cpp index 1ac6fd4f95..222549ff73 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -37,6 +37,8 @@ #include "table/strings.h" +#include "safeguards.h" + typedef GUIList GUITownList; static const NWidgetPart _nested_town_authority_widgets[] = { @@ -388,7 +390,7 @@ public: DrawString(cargo_text_left, cargo_text_right, y += FONT_HEIGHT_NORMAL, string); } - if (HasBit(this->town->flags, TOWN_IS_FUNDED)) { + if (HasBit(this->town->flags, TOWN_IS_GROWING)) { SetDParam(0, ((this->town->growth_rate & (~TOWN_GROW_RATE_CUSTOM)) * TOWN_GROWTH_TICKS + DAY_TICKS) / DAY_TICKS); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, this->town->fund_buildings_months == 0 ? STR_TOWN_VIEW_TOWN_GROWS_EVERY : STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED); } else { @@ -404,7 +406,7 @@ public: if (this->town->text != NULL) { SetDParamStr(0, this->town->text); - DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK); + DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y += FONT_HEIGHT_NORMAL, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK); } } @@ -482,7 +484,7 @@ public: if (this->town->text != NULL) { SetDParamStr(0, this->town->text); - aimed_height += GetStringHeight(STR_JUST_RAW_STRING, width); + aimed_height += GetStringHeight(STR_JUST_RAW_STRING, width - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT); } return aimed_height; @@ -795,7 +797,7 @@ public: switch (widget) { case WID_TD_SORT_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -958,7 +960,7 @@ void CcFoundTown(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2 { if (result.Failed()) return; - if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); + if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } @@ -1111,7 +1113,8 @@ public: bool success = DoCommandP(tile, this->town_size | this->city << 2 | this->town_layout << 3 | random << 6, townnameparts, CMD_FOUND_TOWN | CMD_MSG(errstr), cc, name); - if (success) this->RandomTownName(); + /* Rerandomise name, if success and no cost-estimation. */ + if (success && !_shift_pressed) this->RandomTownName(); } virtual void OnClick(Point pt, int widget, int click_count) diff --git a/src/town_map.h b/src/town_map.h index 41505871de..016ff9a6d2 100644 --- a/src/town_map.h +++ b/src/town_map.h @@ -126,7 +126,7 @@ static inline void HaltLift(TileIndex t) */ static inline byte GetLiftPosition(TileIndex t) { - return GB(_m[t].m6, 2, 6); + return GB(_me[t].m6, 2, 6); } /** @@ -136,7 +136,7 @@ static inline byte GetLiftPosition(TileIndex t) */ static inline void SetLiftPosition(TileIndex t, byte pos) { - SB(_m[t].m6, 2, 6, pos); + SB(_me[t].m6, 2, 6, pos); } /** @@ -315,7 +315,7 @@ static inline byte GetHouseTriggers(TileIndex t) static inline byte GetHouseProcessingTime(TileIndex t) { assert(IsTileType(t, MP_HOUSE)); - return GB(_m[t].m6, 2, 6); + return GB(_me[t].m6, 2, 6); } /** @@ -327,7 +327,7 @@ static inline byte GetHouseProcessingTime(TileIndex t) static inline void SetHouseProcessingTime(TileIndex t, byte time) { assert(IsTileType(t, MP_HOUSE)); - SB(_m[t].m6, 2, 6, time); + SB(_me[t].m6, 2, 6, time); } /** @@ -338,7 +338,7 @@ static inline void SetHouseProcessingTime(TileIndex t, byte time) static inline void DecHouseProcessingTime(TileIndex t) { assert(IsTileType(t, MP_HOUSE)); - _m[t].m6 -= 1 << 2; + _me[t].m6 -= 1 << 2; } /** diff --git a/src/townname.cpp b/src/townname.cpp index 495fde4b45..2067fa1bb3 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -16,9 +16,12 @@ #include "strings_func.h" #include "core/random_func.hpp" #include "genworld.h" +#include "gfx_layout.h" #include "table/townname.h" +#include "safeguards.h" + /** * Initializes this struct from town data @@ -75,9 +78,10 @@ char *GetTownName(char *buff, const Town *t, const char *last) * Verifies the town name is valid and unique. * @param r random bits * @param par town name parameters + * @param town_names if a name is generated, check its uniqueness with the set * @return true iff name is valid and unique */ -bool VerifyTownName(uint32 r, const TownNameParams *par) +bool VerifyTownName(uint32 r, const TownNameParams *par, TownNames *town_names) { /* reserve space for extra unicode character and terminating '\0' */ char buf1[(MAX_LENGTH_TOWN_NAME_CHARS + 1) * MAX_CHAR_LENGTH]; @@ -88,16 +92,21 @@ bool VerifyTownName(uint32 r, const TownNameParams *par) /* Check size and width */ if (Utf8StringLength(buf1) >= MAX_LENGTH_TOWN_NAME_CHARS) return false; - const Town *t; - FOR_ALL_TOWNS(t) { - /* We can't just compare the numbers since - * several numbers may map to a single name. */ - const char *buf = t->name; - if (buf == NULL) { - GetTownName(buf2, t, lastof(buf2)); - buf = buf2; + if (town_names != NULL) { + if (town_names->find(buf1) != town_names->end()) return false; + town_names->insert(buf1); + } else { + const Town *t; + FOR_ALL_TOWNS(t) { + /* We can't just compare the numbers since + * several numbers may map to a single name. */ + const char *buf = t->name; + if (buf == NULL) { + GetTownName(buf2, t, lastof(buf2)); + buf = buf2; + } + if (strcmp(buf1, buf) == 0) return false; } - if (strcmp(buf1, buf) == 0) return false; } return true; @@ -107,9 +116,10 @@ bool VerifyTownName(uint32 r, const TownNameParams *par) /** * Generates valid town name. * @param townnameparts if a name is generated, it's stored there + * @param town_names if a name is generated, check its uniqueness with the set * @return true iff a name was generated */ -bool GenerateTownName(uint32 *townnameparts) +bool GenerateTownName(uint32 *townnameparts, TownNames *town_names) { /* Do not set too low tries, since when we run out of names, we loop * for #tries only one time anyway - then we stop generating more @@ -118,9 +128,13 @@ bool GenerateTownName(uint32 *townnameparts) * too much). */ TownNameParams par(_settings_game.game_creation.town_name); + /* This function is called very often without entering the gameloop + * inbetween. So reset layout cache to prevent it from growing too big. */ + Layouter::ReduceLineCache(); + for (int i = 1000; i != 0; i--) { uint32 r = _generating_world ? Random() : InteractiveRandom(); - if (!VerifyTownName(r, &par)) continue; + if (!VerifyTownName(r, &par, town_names)) continue; *townnameparts = r; return true; @@ -188,7 +202,8 @@ static inline int32 SeedChanceBias(byte shift_by, int max, uint32 seed, int bias */ static void ReplaceWords(const char *org, const char *rep, char *buf) { - if (strncmp(buf, org, 4) == 0) strncpy(buf, rep, 4); // Safe as the string in buf is always more than 4 characters long. + assert(strlen(org) == 4 && strlen(rep) == 4 && strlen(buf) >= 4); + if (strncmp(buf, org, 4) == 0) memcpy(buf, rep, 4); // Safe as the string in buf is always more than 4 characters long. } @@ -620,7 +635,7 @@ static char *MakeCzechTownName(char *buf, const char *last, uint32 seed) choose = _name_czech_subst_full[stem].choose; allow = _name_czech_subst_full[stem].allow; } else { - unsigned int map[lengthof(_name_czech_subst_ending)]; + uint map[lengthof(_name_czech_subst_ending)]; int ending_start = -1, ending_stop = -1; /* Load the substantive */ diff --git a/src/townname_func.h b/src/townname_func.h index 0925569786..409993e42a 100644 --- a/src/townname_func.h +++ b/src/townname_func.h @@ -17,7 +17,7 @@ char *GenerateTownNameString(char *buf, const char *last, size_t lang, uint32 seed); char *GetTownName(char *buff, const TownNameParams *par, uint32 townnameparts, const char *last); char *GetTownName(char *buff, const Town *t, const char *last); -bool VerifyTownName(uint32 r, const TownNameParams *par); -bool GenerateTownName(uint32 *townnameparts); +bool VerifyTownName(uint32 r, const TownNameParams *par, TownNames *town_names = NULL); +bool GenerateTownName(uint32 *townnameparts, TownNames *town_names = NULL); #endif /* TOWNNAME_FUNC_H */ diff --git a/src/townname_type.h b/src/townname_type.h index 8a4b12b8bf..0177294d99 100644 --- a/src/townname_type.h +++ b/src/townname_type.h @@ -17,6 +17,10 @@ #include "newgrf_townname.h" #include "town_type.h" +#include +#include + +typedef std::set TownNames; /** * Struct holding a parameters used to generate town name. diff --git a/src/track_func.h b/src/track_func.h index 0cd3dcf316..6896792374 100644 --- a/src/track_func.h +++ b/src/track_func.h @@ -14,6 +14,7 @@ #include "core/bitmath_func.hpp" #include "track_type.h" +#include "direction_func.h" #include "slope_func.h" /** @@ -27,6 +28,42 @@ */ #define FOR_EACH_SET_TRACK(var, track_bits) FOR_EACH_SET_BIT_EX(Track, var, TrackBits, track_bits) +/** + * Checks if a Track is valid. + * + * @param track The value to check + * @return true if the given value is a valid track. + * @note Use this in an assert() + */ +static inline bool IsValidTrack(Track track) +{ + return track < TRACK_END; +} + +/** + * Checks if a Trackdir is valid for road vehicles. + * + * @param trackdir The value to check + * @return true if the given value is a valid Trackdir + * @note Use this in an assert() + */ +static inline bool IsValidTrackdirForRoadVehicle(Trackdir trackdir) +{ + return trackdir < TRACKDIR_END; +} + +/** + * Checks if a Trackdir is valid for non-road vehicles. + * + * @param trackdir The value to check + * @return true if the given value is a valid Trackdir + * @note Use this in an assert() + */ +static inline bool IsValidTrackdir(Trackdir trackdir) +{ + return (1 << trackdir & TRACKDIR_BIT_MASK) != 0; +} + /** * Convert an Axis to the corresponding Track * AXIS_X -> TRACK_X @@ -38,6 +75,7 @@ */ static inline Track AxisToTrack(Axis a) { + assert(IsValidAxis(a)); return (Track)a; } @@ -48,6 +86,7 @@ static inline Track AxisToTrack(Axis a) */ static inline TrackBits TrackToTrackBits(Track track) { + assert(IsValidTrack(track)); return (TrackBits)(1 << track); } @@ -74,8 +113,6 @@ static inline TrackBits CornerToTrackBits(Corner corner) return _corner_to_trackbits[corner]; } - - /** * Maps a Trackdir to the corresponding TrackdirBits value * @param trackdir the track direction to convert @@ -83,6 +120,7 @@ static inline TrackBits CornerToTrackBits(Corner corner) */ static inline TrackdirBits TrackdirToTrackdirBits(Trackdir trackdir) { + assert(IsValidTrackdir(trackdir)); return (TrackdirBits)(1 << trackdir); } @@ -103,6 +141,7 @@ static inline TrackdirBits TrackdirToTrackdirBits(Trackdir trackdir) static inline Track RemoveFirstTrack(TrackBits *tracks) { if (*tracks != TRACK_BIT_NONE && *tracks != INVALID_TRACK_BIT) { + assert((*tracks & ~TRACK_BIT_MASK) == TRACK_BIT_NONE); Track first = (Track)FIND_FIRST_BIT(*tracks); ClrBit(*tracks, first); return first; @@ -127,6 +166,7 @@ static inline Track RemoveFirstTrack(TrackBits *tracks) static inline Trackdir RemoveFirstTrackdir(TrackdirBits *trackdirs) { if (*trackdirs != TRACKDIR_BIT_NONE && *trackdirs != INVALID_TRACKDIR_BIT) { + assert((*trackdirs & ~TRACKDIR_BIT_MASK) == TRACKDIR_BIT_NONE); Trackdir first = (Trackdir)FindFirstBit2x64(*trackdirs); ClrBit(*trackdirs, first); return first; @@ -184,31 +224,6 @@ static inline Trackdir FindFirstTrackdir(TrackdirBits trackdirs) return (trackdirs != TRACKDIR_BIT_NONE) ? (Trackdir)FindFirstBit2x64(trackdirs) : INVALID_TRACKDIR; } -/** - * Checks if a Track is valid. - * - * @param track The value to check - * @return true if the given value is a valid track. - * @note Use this in an assert() - */ -static inline bool IsValidTrack(Track track) -{ - return track < TRACK_END; -} - -/** - * Checks if a Trackdir is valid. - * - * @param trackdir The value to check - * @return true if the given value is a valid Trackdir - * @note Use this in an assert() - */ -static inline bool IsValidTrackdir(Trackdir trackdir) -{ - return (TrackdirToTrackdirBits(trackdir) & TRACKDIR_BIT_MASK) != 0; -} - - /* * Functions describing logical relations between Tracks, TrackBits, Trackdirs * TrackdirBits, Direction and DiagDirections. @@ -225,7 +240,7 @@ static inline bool IsValidTrackdir(Trackdir trackdir) */ static inline Track TrackToOppositeTrack(Track t) { - assert(t != INVALID_TRACK); + assert(IsValidTrack(t)); return (Track)(t ^ 1); } @@ -241,7 +256,7 @@ static inline Track TrackToOppositeTrack(Track t) */ static inline Trackdir ReverseTrackdir(Trackdir trackdir) { - assert(trackdir != INVALID_TRACKDIR); + assert(IsValidTrackdirForRoadVehicle(trackdir)); return (Trackdir)(trackdir ^ 8); } @@ -256,6 +271,7 @@ static inline Trackdir ReverseTrackdir(Trackdir trackdir) */ static inline Track TrackdirToTrack(Trackdir trackdir) { + assert(IsValidTrackdir(trackdir)); return (Track)(trackdir & 0x7); } @@ -272,6 +288,7 @@ static inline Track TrackdirToTrack(Trackdir trackdir) */ static inline Trackdir TrackToTrackdir(Track track) { + assert(IsValidTrack(track)); return (Trackdir)track; } @@ -373,6 +390,7 @@ static inline TrackStatus CombineTrackStatus(TrackdirBits trackdirbits, Trackdir */ static inline Trackdir NextTrackdir(Trackdir trackdir) { + assert(IsValidTrackdir(trackdir)); extern const Trackdir _next_trackdir[TRACKDIR_END]; return _next_trackdir[trackdir]; } @@ -389,6 +407,7 @@ static inline Trackdir NextTrackdir(Trackdir trackdir) */ static inline TrackBits TrackCrossesTracks(Track track) { + assert(IsValidTrack(track)); extern const TrackBits _track_crosses_tracks[TRACK_END]; return _track_crosses_tracks[track]; } @@ -407,6 +426,7 @@ static inline TrackBits TrackCrossesTracks(Track track) */ static inline DiagDirection TrackdirToExitdir(Trackdir trackdir) { + assert(IsValidTrackdirForRoadVehicle(trackdir)); extern const DiagDirection _trackdir_to_exitdir[TRACKDIR_END]; return _trackdir_to_exitdir[trackdir]; } @@ -428,6 +448,8 @@ static inline DiagDirection TrackdirToExitdir(Trackdir trackdir) */ static inline Trackdir TrackExitdirToTrackdir(Track track, DiagDirection diagdir) { + assert(IsValidTrack(track)); + assert(IsValidDiagDirection(diagdir)); extern const Trackdir _track_exitdir_to_trackdir[TRACK_END][DIAGDIR_END]; return _track_exitdir_to_trackdir[track][diagdir]; } @@ -451,6 +473,8 @@ static inline Trackdir TrackExitdirToTrackdir(Track track, DiagDirection diagdir */ static inline Trackdir TrackEnterdirToTrackdir(Track track, DiagDirection diagdir) { + assert(IsValidTrack(track)); + assert(IsValidDiagDirection(diagdir)); extern const Trackdir _track_enterdir_to_trackdir[TRACK_END][DIAGDIR_END]; return _track_enterdir_to_trackdir[track][diagdir]; } @@ -461,6 +485,8 @@ static inline Trackdir TrackEnterdirToTrackdir(Track track, DiagDirection diagdi */ static inline Trackdir TrackDirectionToTrackdir(Track track, Direction dir) { + assert(IsValidTrack(track)); + assert(IsValidDirection(dir)); extern const Trackdir _track_direction_to_trackdir[TRACK_END][DIR_END]; return _track_direction_to_trackdir[track][dir]; } @@ -473,6 +499,7 @@ static inline Trackdir TrackDirectionToTrackdir(Track track, Direction dir) */ static inline Track DiagDirToDiagTrack(DiagDirection diagdir) { + assert(IsValidDiagDirection(diagdir)); return (Track)(diagdir & 1); } @@ -484,6 +511,7 @@ static inline Track DiagDirToDiagTrack(DiagDirection diagdir) */ static inline TrackBits DiagDirToDiagTrackBits(DiagDirection diagdir) { + assert(IsValidDiagDirection(diagdir)); return TrackToTrackBits(DiagDirToDiagTrack(diagdir)); } @@ -496,6 +524,7 @@ static inline TrackBits DiagDirToDiagTrackBits(DiagDirection diagdir) */ static inline Trackdir DiagDirToDiagTrackdir(DiagDirection diagdir) { + assert(IsValidDiagDirection(diagdir)); extern const Trackdir _dir_to_diag_trackdir[DIAGDIR_END]; return _dir_to_diag_trackdir[diagdir]; } @@ -513,6 +542,7 @@ static inline Trackdir DiagDirToDiagTrackdir(DiagDirection diagdir) */ static inline TrackdirBits DiagdirReachesTrackdirs(DiagDirection diagdir) { + assert(IsValidDiagDirection(diagdir)); extern const TrackdirBits _exitdir_reaches_trackdirs[DIAGDIR_END]; return _exitdir_reaches_trackdirs[diagdir]; } @@ -541,6 +571,7 @@ static inline TrackBits DiagdirReachesTracks(DiagDirection diagdir) { return Tra */ static inline TrackdirBits TrackdirReachesTrackdirs(Trackdir trackdir) { + assert(IsValidTrackdir(trackdir)); extern const TrackdirBits _exitdir_reaches_trackdirs[DIAGDIR_END]; return _exitdir_reaches_trackdirs[TrackdirToExitdir(trackdir)]; } @@ -562,6 +593,7 @@ static inline TrackdirBits TrackdirReachesTrackdirs(Trackdir trackdir) */ static inline TrackdirBits TrackdirCrossesTrackdirs(Trackdir trackdir) { + assert(IsValidTrackdirForRoadVehicle(trackdir)); extern const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END]; return _track_crosses_trackdirs[TrackdirToTrack(trackdir)]; } @@ -574,6 +606,7 @@ static inline TrackdirBits TrackdirCrossesTrackdirs(Trackdir trackdir) */ static inline bool IsDiagonalTrack(Track track) { + assert(IsValidTrack(track)); return (track == TRACK_X) || (track == TRACK_Y); } @@ -585,6 +618,7 @@ static inline bool IsDiagonalTrack(Track track) */ static inline bool IsDiagonalTrackdir(Trackdir trackdir) { + assert(IsValidTrackdir(trackdir)); return IsDiagonalTrack(TrackdirToTrack(trackdir)); } @@ -626,6 +660,7 @@ static inline bool TrackOverlapsTracks(TrackBits tracks, Track track) */ static inline bool IsReversingRoadTrackdir(Trackdir dir) { + assert(IsValidTrackdirForRoadVehicle(dir)); return (dir & 0x07) >= 6; } @@ -636,6 +671,7 @@ static inline bool IsReversingRoadTrackdir(Trackdir dir) */ static inline bool IsStraightRoadTrackdir(Trackdir dir) { + assert(IsValidTrackdirForRoadVehicle(dir)); return (dir & 0x06) == 0; } @@ -651,6 +687,7 @@ static inline bool IsStraightRoadTrackdir(Trackdir dir) */ static inline bool IsUphillTrackdir(Slope slope, Trackdir dir) { + assert(IsValidTrackdirForRoadVehicle(dir)); extern const TrackdirBits _uphill_trackdirs[]; return HasBit(_uphill_trackdirs[RemoveHalftileSlope(slope)], dir); } diff --git a/src/train.h b/src/train.h index 8f4bc2a9b8..280d59ebdd 100644 --- a/src/train.h +++ b/src/train.h @@ -12,6 +12,8 @@ #ifndef TRAIN_H #define TRAIN_H +#include "core/enum_type.hpp" + #include "newgrf_engine.h" #include "cargotype.h" #include "rail.h" @@ -41,6 +43,20 @@ enum TrainForceProceeding { }; typedef SimpleTinyEnumT TrainForceProceedingByte; +/** Flags for Train::ConsistChanged */ +enum ConsistChangeFlags { + CCF_LENGTH = 0x01, ///< Allow vehicles to change length. + CCF_CAPACITY = 0x02, ///< Allow vehicles to change capacity. + + CCF_TRACK = 0, ///< Valid changes while vehicle is driving, and possibly changing tracks. + CCF_LOADUNLOAD = 0, ///< Valid changes while vehicle is loading/unloading. + CCF_AUTOREFIT = CCF_CAPACITY, ///< Valid changes for autorefitting in stations. + CCF_REFIT = CCF_LENGTH | CCF_CAPACITY, ///< Valid changes for refitting in a depot. + CCF_ARRANGE = CCF_LENGTH | CCF_CAPACITY, ///< Valid changes for arranging the consist in a depot. + CCF_SAVELOAD = CCF_LENGTH, ///< Valid changes when loading a savegame. (Everything that is not stored in the save.) +}; +DECLARE_ENUM_AS_BIT_SET(ConsistChangeFlags) + byte FreightWagonMult(CargoID cargo); void CheckTrainsLengths(); @@ -115,7 +131,7 @@ struct Train FINAL : public GroundVehicle { int GetCurveSpeedLimit() const; - void ConsistChanged(bool same_length); + void ConsistChanged(ConsistChangeFlags allowed_changes); int UpdateSpeed(); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index b61a9116c8..8f20973b35 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -34,10 +34,13 @@ #include "newgrf.h" #include "order_backup.h" #include "zoom_func.h" +#include "newgrf_debug.h" #include "table/strings.h" #include "table/train_cmd.h" +#include "safeguards.h" + static Track ChooseTrainTrack(Train *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool force_res, bool *got_reservation, bool mark_stuck); static bool TrainCheckIfLineEnds(Train *v, bool reverse = true); bool TrainController(Train *v, Vehicle *nomove, bool reverse = true); // Also used in vehicle_sl.cpp. @@ -48,6 +51,11 @@ static void CheckNextTrainTile(Train *v); static const byte _vehicle_initial_x_fract[4] = {10, 8, 4, 8}; static const byte _vehicle_initial_y_fract[4] = { 8, 4, 8, 10}; +template <> +bool IsValidImageIndex(uint8 image_index) +{ + return image_index < lengthof(_engine_sprite_base); +} /** * Determine the side in which the train will leave the tile @@ -116,9 +124,9 @@ void CheckTrainsLengths() * Recalculates the cached stuff of a train. Should be called each time a vehicle is added * to/removed from the chain, and when the game is loaded. * Note: this needs to be called too for 'wagon chains' (in the depot, without an engine) - * @param same_length should length of vehicles stay the same? + * @param allowed_changes Stuff that is allowed to change. */ -void Train::ConsistChanged(bool same_length) +void Train::ConsistChanged(ConsistChangeFlags allowed_changes) { uint16 max_speed = UINT16_MAX; @@ -165,6 +173,9 @@ void Train::ConsistChanged(bool same_length) /* Cache wagon override sprite group. NULL is returned if there is none */ u->tcache.cached_override = GetWagonOverrideSpriteSet(u->engine_type, u->cargo_type, u->gcache.first_engine); + /* Reset colour map */ + u->colourmap = PAL_NONE; + /* Update powered-wagon-status and visual effect */ u->UpdateVisualEffect(true); @@ -198,8 +209,15 @@ void Train::ConsistChanged(bool same_length) } uint16 new_cap = e_u->DetermineCapacity(u); - u->refit_cap = min(new_cap, u->refit_cap); - u->cargo_cap = new_cap; + if (allowed_changes & CCF_CAPACITY) { + /* Update vehicle capacity. */ + if (u->cargo_cap > new_cap) u->cargo.Truncate(new_cap); + u->refit_cap = min(new_cap, u->refit_cap); + u->cargo_cap = new_cap; + } else { + /* Verify capacity hasn't changed. */ + if (new_cap != u->cargo_cap) ShowNewGrfVehicleError(u->engine_type, STR_NEWGRF_BROKEN, STR_NEWGRF_BROKEN_CAPACITY, GBUG_VEH_CAPACITY, true); + } u->vcache.cached_cargo_age_period = GetVehicleProperty(u, PROP_TRAIN_CARGO_AGE_PERIOD, e_u->info.cargo_age_period); /* check the vehicle length (callback) */ @@ -218,11 +236,13 @@ void Train::ConsistChanged(bool same_length) if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor; veh_len = VEHICLE_LENGTH - Clamp(veh_len, 0, VEHICLE_LENGTH - 1); - /* verify length hasn't changed */ - if (same_length && veh_len != u->gcache.cached_veh_length) VehicleLengthChanged(u); - - /* update vehicle length? */ - if (!same_length) u->gcache.cached_veh_length = veh_len; + if (allowed_changes & CCF_LENGTH) { + /* Update vehicle length. */ + u->gcache.cached_veh_length = veh_len; + } else { + /* Verify length hasn't changed. */ + if (veh_len != u->gcache.cached_veh_length) VehicleLengthChanged(u); + } this->gcache.cached_total_length += u->gcache.cached_veh_length; this->InvalidateNewGRFCache(); @@ -242,6 +262,7 @@ void Train::ConsistChanged(bool same_length) SetWindowDirty(WC_VEHICLE_DETAILS, this->index); InvalidateWindowData(WC_VEHICLE_REFIT, this->index, VIWD_CONSIST_CHANGED); InvalidateWindowData(WC_VEHICLE_ORDERS, this->index, VIWD_CONSIST_CHANGED); + InvalidateNewGRFInspectWindow(GSF_TRAINS, this->index); } } @@ -411,7 +432,7 @@ int Train::GetCurrentMaxSpeed() const } } - max_speed = min(max_speed, this->current_order.max_speed); + max_speed = min(max_speed, this->current_order.GetMaxSpeed()); return min(max_speed, this->gcache.cached_max_track_speed); } @@ -443,14 +464,15 @@ int Train::GetDisplayImageWidth(Point *offset) const } if (offset != NULL) { - offset->x = reference_width / 2; - offset->y = vehicle_pitch; + offset->x = ScaleGUITrad(reference_width) / 2; + offset->y = ScaleGUITrad(vehicle_pitch); } - return this->gcache.cached_veh_length * reference_width / VEHICLE_LENGTH; + return ScaleGUITrad(this->gcache.cached_veh_length * reference_width / VEHICLE_LENGTH); } static SpriteID GetDefaultTrainSprite(uint8 spritenum, Direction direction) { + assert(IsValidImageIndex(spritenum)); return ((direction + _engine_sprite_add[spritenum]) & _engine_sprite_and[spritenum]) + _engine_sprite_base[spritenum]; } @@ -474,6 +496,7 @@ SpriteID Train::GetImage(Direction direction, EngineImageType image_type) const spritenum = this->GetEngine()->original_image_index; } + assert(IsValidImageIndex(spritenum)); sprite = GetDefaultTrainSprite(spritenum, direction); if (this->cargo.StoredCount() >= this->cargo_cap / 2U) sprite += _wagon_full_adder[spritenum]; @@ -491,7 +514,7 @@ static SpriteID GetRailIcon(EngineID engine, bool rear_head, int &y, EngineImage SpriteID sprite = GetCustomVehicleIcon(engine, dir, image_type); if (sprite != 0) { if (e->GetGRF() != NULL) { - y += e->GetGRF()->traininfo_vehicle_pitch; + y += ScaleGUITrad(e->GetGRF()->traininfo_vehicle_pitch); } return sprite; } @@ -515,14 +538,18 @@ void DrawTrainEngine(int left, int right, int preferred_x, int y, EngineID engin const Sprite *real_spritef = GetSprite(spritef, ST_NORMAL); const Sprite *real_spriter = GetSprite(spriter, ST_NORMAL); - preferred_x = Clamp(preferred_x, left - UnScaleByZoom(real_spritef->x_offs, ZOOM_LVL_GUI) + 14, right - UnScaleByZoom(real_spriter->width, ZOOM_LVL_GUI) - UnScaleByZoom(real_spriter->x_offs, ZOOM_LVL_GUI) - 15); + preferred_x = Clamp(preferred_x, + left - UnScaleGUI(real_spritef->x_offs) + ScaleGUITrad(14), + right - UnScaleGUI(real_spriter->width) - UnScaleGUI(real_spriter->x_offs) - ScaleGUITrad(15)); - DrawSprite(spritef, pal, preferred_x - 14, yf); - DrawSprite(spriter, pal, preferred_x + 15, yr); + DrawSprite(spritef, pal, preferred_x - ScaleGUITrad(14), yf); + DrawSprite(spriter, pal, preferred_x + ScaleGUITrad(15), yr); } else { SpriteID sprite = GetRailIcon(engine, false, y, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - preferred_x = Clamp(preferred_x, left - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI), right - UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI) - UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI)); + preferred_x = Clamp(preferred_x, + left - UnScaleGUI(real_sprite->x_offs), + right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs)); DrawSprite(sprite, pal, preferred_x, y); } } @@ -543,20 +570,20 @@ void GetTrainSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, SpriteID sprite = GetRailIcon(engine, false, y, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); - height = UnScaleByZoom(real_sprite->height, ZOOM_LVL_GUI); - xoffs = UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI); - yoffs = UnScaleByZoom(real_sprite->y_offs, ZOOM_LVL_GUI); + width = UnScaleGUI(real_sprite->width); + height = UnScaleGUI(real_sprite->height); + xoffs = UnScaleGUI(real_sprite->x_offs); + yoffs = UnScaleGUI(real_sprite->y_offs); if (RailVehInfo(engine)->railveh_type == RAILVEH_MULTIHEAD) { sprite = GetRailIcon(engine, true, y, image_type); real_sprite = GetSprite(sprite, ST_NORMAL); /* Calculate values relative to an imaginary center between the two sprites. */ - width = TRAININFO_DEFAULT_VEHICLE_WIDTH + UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI) + UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI) - xoffs; - height = max(height, UnScaleByZoom(real_sprite->height, ZOOM_LVL_GUI)); - xoffs = xoffs - TRAININFO_DEFAULT_VEHICLE_WIDTH / 2; - yoffs = min(yoffs, UnScaleByZoom(real_sprite->y_offs, ZOOM_LVL_GUI)); + width = ScaleGUITrad(TRAININFO_DEFAULT_VEHICLE_WIDTH) + UnScaleGUI(real_sprite->width) + UnScaleGUI(real_sprite->x_offs) - xoffs; + height = max(height, UnScaleGUI(real_sprite->height)); + xoffs = xoffs - ScaleGUITrad(TRAININFO_DEFAULT_VEHICLE_WIDTH) / 2; + yoffs = min(yoffs, UnScaleGUI(real_sprite->y_offs)); } } @@ -619,8 +646,8 @@ static CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const _new_vehicle_id = v->index; - VehicleUpdatePosition(v); - v->First()->ConsistChanged(false); + v->UpdatePosition(); + v->First()->ConsistChanged(CCF_ARRANGE); UpdateTrainGroupID(v->First()); CheckConsistencyOfArticulatedVehicle(v); @@ -682,7 +709,7 @@ static void AddRearEngineToMultiheadedTrain(Train *v) v->SetMultiheaded(); u->SetMultiheaded(); v->SetNext(u); - VehicleUpdatePosition(u); + u->UpdatePosition(); /* Now we need to link the front and rear engines together */ v->other_multiheaded_part = u; @@ -754,7 +781,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->SetFrontEngine(); v->SetEngine(); - VehicleUpdatePosition(v); + v->UpdatePosition(); if (rvi->railveh_type == RAILVEH_MULTIHEAD) { AddRearEngineToMultiheadedTrain(v); @@ -762,7 +789,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin AddArticulatedParts(v); } - v->ConsistChanged(false); + v->ConsistChanged(CCF_ARRANGE); UpdateTrainGroupID(v); if (!HasBit(data, 0) && !(flags & DC_AUTOREPLACE)) { // check if the cars should be added to the new vehicle @@ -1108,7 +1135,7 @@ static void NormaliseTrainHead(Train *head) if (head == NULL) return; /* Tell the 'world' the train changed. */ - head->ConsistChanged(false); + head->ConsistChanged(CCF_ARRANGE); UpdateTrainGroupID(head); /* Not a front engine, i.e. a free wagon chain. No need to do more. */ @@ -1214,8 +1241,10 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, u Train *original_src_head = src_head; Train *original_dst_head = (dst_head == src_head ? NULL : dst_head); - /* We want this information from before the rearrangement, but execute this after the validation. */ - bool original_src_head_front_engine = original_src_head != NULL && original_src_head->IsFrontEngine(); + /* We want this information from before the rearrangement, but execute this after the validation. + * original_src_head can't be NULL; src is by definition != NULL, so src_head can't be NULL as + * src->GetFirst() always yields non-NULL, so eventually original_src_head != NULL as well. */ + bool original_src_head_front_engine = original_src_head->IsFrontEngine(); bool original_dst_head_front_engine = original_dst_head != NULL && original_dst_head->IsFrontEngine(); /* (Re)arrange the trains in the wanted arrangement. */ @@ -1271,6 +1300,7 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, u DeleteWindowById(WC_VEHICLE_REFIT, src->index); DeleteWindowById(WC_VEHICLE_DETAILS, src->index); DeleteWindowById(WC_VEHICLE_TIMETABLE, src->index); + DeleteNewGRFInspectWindow(GSF_TRAINS, src->index); SetWindowDirty(WC_COMPANY, _current_company); /* Delete orders, group stuff and the unit number as we're not the @@ -1300,6 +1330,9 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, u CheckCargoCapacity(dst_head); } + if (src_head != NULL) src_head->First()->MarkDirty(); + if (dst_head != NULL) dst_head->First()->MarkDirty(); + /* We are undoubtedly changing something in the depot and train list. */ InvalidateWindowData(WC_VEHICLE_DEPOT, src->tile); InvalidateWindowClassesData(WC_TRAINS_LIST, 0); @@ -1325,9 +1358,6 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, u */ CommandCost CmdSellRailWagon(DoCommandFlag flags, Vehicle *t, uint16 data, uint32 user) { - /* Check if we deleted a vehicle window */ - Window *w = NULL; - /* Sell a chain of vehicles or not? */ bool sell_chain = HasBit(data, 0); @@ -1378,9 +1408,6 @@ CommandCost CmdSellRailWagon(DoCommandFlag flags, Vehicle *t, uint16 data, uint3 /* Copy other important data from the front engine */ new_head->CopyVehicleConfigAndStatistics(first); GroupStatistics::CountVehicle(new_head, 1); // after copying over the profit - - /* If we deleted a window then open a new one for the 'new' train */ - if (IsLocalCompany() && w != NULL) ShowVehicleViewWindow(new_head); } else if (v->IsPrimaryVehicle() && data & (MAKE_ORDER_BACKUP_FLAG >> 20)) { OrderBackup::Backup(v, user); } @@ -1416,7 +1443,7 @@ void Train::UpdateDeltaXY(Direction direction) if (!IsDiagonalDirection(direction)) { static const int _sign_table[] = { - // x, y + /* x, y */ -1, -1, // DIR_N -1, 1, // DIR_E 1, 1, // DIR_S @@ -1542,14 +1569,14 @@ static void UpdateStatusAfterSwap(Train *v) /* We have just left the wormhole, possibly set the * "goingdown" bit. UpdateInclination() can be used * because we are at the border of the tile. */ - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateInclination(true, true); return; } } } - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateViewport(true, true); } @@ -1812,7 +1839,7 @@ void ReverseTrainDirection(Train *v) ClrBit(v->flags, VRF_REVERSING); /* recalculate cached data */ - v->ConsistChanged(true); + v->ConsistChanged(CCF_TRACK); /* update all images */ for (Train *u = v; u != NULL; u = u->Next()) u->UpdateViewport(false, false); @@ -1896,7 +1923,7 @@ CommandCost CmdReverseTrainDirection(TileIndex tile, DoCommandFlag flags, uint32 if (flags & DC_EXEC) { ToggleBit(v->flags, VRF_REVERSE_DIRECTION); - front->ConsistChanged(false); + front->ConsistChanged(CCF_ARRANGE); SetWindowDirty(WC_VEHICLE_DEPOT, front->tile); SetWindowDirty(WC_VEHICLE_DETAILS, front->index); SetWindowDirty(WC_VEHICLE_VIEW, front->index); @@ -2160,7 +2187,7 @@ static bool CheckTrainStayInDepot(Train *v) v->cur_speed = 0; v->UpdateViewport(true, true); - VehicleUpdatePosition(v); + v->UpdatePosition(); UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner); v->UpdateAcceleration(); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); @@ -2189,8 +2216,12 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ SetTunnelBridgeReservation(end, false); if (_settings_client.gui.show_track_reservation) { - MarkTileDirtyByTile(tile); - MarkTileDirtyByTile(end); + if (IsBridge(tile)) { + MarkBridgeDirty(tile); + } else { + MarkTileDirtyByTile(tile); + MarkTileDirtyByTile(end); + } } } } @@ -3143,8 +3174,9 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) * this to one, then if we reach the next signal it is * decreased to zero and we won't pass that new signal. */ Trackdir dir = FindFirstTrackdir(trackdirbits); - if (GetSignalType(gp.new_tile, TrackdirToTrack(dir)) != SIGTYPE_PBS || - !HasSignalOnTrackdir(gp.new_tile, ReverseTrackdir(dir))) { + if (HasSignalOnTrackdir(gp.new_tile, dir) || + (HasSignalOnTrackdir(gp.new_tile, ReverseTrackdir(dir)) && + GetSignalType(gp.new_tile, TrackdirToTrack(dir)) != SIGTYPE_PBS)) { /* However, we do not want to be stopped by PBS signals * entered via the back. */ v->force_proceed = (v->force_proceed == TFP_SIGNAL) ? TFP_STUCK : TFP_NONE; @@ -3258,7 +3290,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) v->tile = gp.new_tile; if (GetTileRailType(gp.new_tile) != GetTileRailType(gp.old_tile)) { - v->First()->ConsistChanged(true); + v->First()->ConsistChanged(CCF_TRACK); } v->track = chosen_track; @@ -3310,8 +3342,8 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) } else { v->x_pos = gp.x; v->y_pos = gp.y; - VehicleUpdatePosition(v); - if ((v->vehstatus & VS_HIDDEN) == 0) VehicleUpdateViewport(v, true); + v->UpdatePosition(); + if ((v->vehstatus & VS_HIDDEN) == 0) v->Vehicle::UpdateViewport(true); continue; } } @@ -3321,7 +3353,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) v->x_pos = gp.x; v->y_pos = gp.y; - VehicleUpdatePosition(v); + v->UpdatePosition(); /* update the Z position of the vehicle */ int old_z = v->UpdateInclination(gp.new_tile != gp.old_tile, false); @@ -3424,7 +3456,7 @@ static void DeleteLastWagon(Train *v) if (first != v) { /* Recalculate cached train properties */ - first->ConsistChanged(false); + first->ConsistChanged(CCF_ARRANGE); /* Update the depot window if the first vehicle is in depot - * if v == first, then it is updated in PreDestructor() */ if (first->track == TRACK_BIT_DEPOT) { @@ -3491,7 +3523,7 @@ static void ChangeTrainDirRandomly(Train *v) * a bridge, because UpdateInclination() will put the vehicle under * the bridge in that case */ if (v->track != TRACK_BIT_WORMHOLE) { - VehicleUpdatePosition(v); + v->UpdatePosition(); v->UpdateInclination(false, false); } } diff --git a/src/train_gui.cpp b/src/train_gui.cpp index 24cecd5f1c..d9da097017 100644 --- a/src/train_gui.cpp +++ b/src/train_gui.cpp @@ -15,9 +15,12 @@ #include "train.h" #include "strings_func.h" #include "vehicle_func.h" +#include "zoom_func.h" #include "table/strings.h" +#include "safeguards.h" + /** * Callback for building wagons. * @param result The result of the command. @@ -71,7 +74,7 @@ static int HighlightDragPosition(int px, int max_width, VehicleID selection) if (drag_hlight_width > 0) { GfxFillRect(drag_hlight_left + WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP + 1, - drag_hlight_right - WD_FRAMERECT_RIGHT, 13 - WD_FRAMERECT_BOTTOM, _colour_gradient[COLOUR_GREY][7]); + drag_hlight_right - WD_FRAMERECT_RIGHT, ScaleGUITrad(13) - WD_FRAMERECT_BOTTOM, _colour_gradient[COLOUR_GREY][7]); } return drag_hlight_width; @@ -97,8 +100,9 @@ void DrawTrainImage(const Train *v, int left, int right, int y, VehicleID select int highlight_l = 0; int highlight_r = 0; int max_width = right - left + 1; + int height = ScaleGUITrad(14); - if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, 14)) return; + if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, height)) return; old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; @@ -119,7 +123,7 @@ void DrawTrainImage(const Train *v, int left, int right, int y, VehicleID select if (rtl ? px + width > 0 : px - width < max_width) { PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); - DrawSprite(v->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), 7 + offset.y); + DrawSprite(v->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), height / 2 + offset.y); } if (!v->IsArticulatedPart()) sel_articulated = false; @@ -148,7 +152,7 @@ void DrawTrainImage(const Train *v, int left, int right, int y, VehicleID select if (highlight_l != highlight_r) { /* Draw the highlight. Now done after drawing all the engines, as * the next engine after the highlight could overlap it. */ - DrawFrameRect(highlight_l, 0, highlight_r, 13, COLOUR_WHITE, FR_BORDERONLY); + DrawFrameRect(highlight_l, 0, highlight_r, height - 1, COLOUR_WHITE, FR_BORDERONLY); } _cur_dpi = old_dpi; @@ -348,13 +352,19 @@ int GetTrainDetailsWndVScroll(VehicleID veh_id, TrainDetailsWindowTabs det_tab) */ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_pos, uint16 vscroll_cap, TrainDetailsWindowTabs det_tab) { + /* get rid of awkward offset */ + y -= WD_MATRIX_TOP; + + int sprite_height = ScaleGUITrad(GetVehicleHeight(VEH_TRAIN)); + int line_height = max(sprite_height, WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM); + int sprite_y_offset = line_height / 2; + int text_y_offset = (line_height - FONT_HEIGHT_NORMAL) / 2; + /* draw the first 3 details tabs */ if (det_tab != TDW_TAB_TOTALS) { bool rtl = _current_text_dir == TD_RTL; Direction dir = rtl ? DIR_E : DIR_W; int x = rtl ? right : left; - int sprite_y_offset = 4 + (FONT_HEIGHT_NORMAL - 10) / 2; - int line_height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; for (; v != NULL && vscroll_pos > -vscroll_cap; v = v->GetNextVehicle()) { GetCargoSummaryOfArticulatedVehicle(v, &_cargo_summary); @@ -366,15 +376,20 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po Point offset; int width = u->GetDisplayImageWidth(&offset); if (vscroll_pos <= 0 && vscroll_pos > -vscroll_cap) { + int pitch = 0; + const Engine *e = Engine::Get(v->engine_type); + if (e->GetGRF() != NULL) { + pitch = ScaleGUITrad(e->GetGRF()->traininfo_vehicle_pitch); + } PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); - DrawSprite(u->GetImage(dir, EIT_IN_DETAILS), pal, px + (rtl ? -offset.x : offset.x), y - line_height * vscroll_pos + sprite_y_offset + offset.y); + DrawSprite(u->GetImage(dir, EIT_IN_DETAILS), pal, px + (rtl ? -offset.x : offset.x), y - line_height * vscroll_pos + sprite_y_offset + pitch); } px += rtl ? -width : width; dx += width; u = u->Next(); } while (u != NULL && u->IsArticulatedPart()); - bool separate_sprite_row = (dx > TRAIN_DETAILS_MAX_INDENT); + bool separate_sprite_row = (dx > (uint)ScaleGUITrad(TRAIN_DETAILS_MAX_INDENT)); if (separate_sprite_row) { vscroll_pos--; dx = 0; @@ -382,11 +397,11 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po uint num_lines = max(1u, _cargo_summary.Length()); for (uint i = 0; i < num_lines; i++) { - int sprite_width = max(dx, TRAIN_DETAILS_MIN_INDENT) + 3; + int sprite_width = max(dx, ScaleGUITrad(TRAIN_DETAILS_MIN_INDENT)) + 3; int data_left = left + (rtl ? 0 : sprite_width); int data_right = right - (rtl ? sprite_width : 0); if (vscroll_pos <= 0 && vscroll_pos > -vscroll_cap) { - int py = y - line_height * vscroll_pos; + int py = y - line_height * vscroll_pos + text_y_offset; if (i > 0 || separate_sprite_row) { if (vscroll_pos != 0) GfxFillRect(left, py - WD_MATRIX_TOP - 1, right, py - WD_MATRIX_TOP, _colour_gradient[COLOUR_GREY][5]); } @@ -430,8 +445,8 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po } /* draw total cargo tab */ - DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT); - y += WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; + DrawString(left, right, y + text_y_offset, STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT); + y += line_height; for (CargoID i = 0; i < NUM_CARGO; i++) { if (max_cargo[i] > 0 && --vscroll_pos < 0 && vscroll_pos > -vscroll_cap) { @@ -440,11 +455,11 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po SetDParam(2, i); // {SHORTCARGO} #1 SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2 SetDParam(4, _settings_game.vehicle.freight_trains); - DrawString(left, right, y, FreightWagonMult(i) > 1 ? STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT : STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY); - y += WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; + DrawString(left, right, y + text_y_offset, FreightWagonMult(i) > 1 ? STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT : STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY); + y += line_height; } } SetDParam(0, feeder_share); - DrawString(left, right, y, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE); + DrawString(left, right, y + text_y_offset, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE); } } diff --git a/src/transparency_gui.cpp b/src/transparency_gui.cpp index 9e00552b68..4bad2b0561 100644 --- a/src/transparency_gui.cpp +++ b/src/transparency_gui.cpp @@ -20,6 +20,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + TransparencyOptionBits _transparency_opt; ///< The bits that should be transparent. TransparencyOptionBits _transparency_lock; ///< Prevent these bits from flipping with X. TransparencyOptionBits _invisibility_opt; ///< The bits that should be invisible. diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index c30609e782..4fcda82d81 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -29,6 +29,8 @@ #include "table/tree_land.h" #include "table/clear_land.h" +#include "safeguards.h" + /** * List of tree placer algorithm. * diff --git a/src/tree_gui.cpp b/src/tree_gui.cpp index d1429d1443..f21eeaef2e 100644 --- a/src/tree_gui.cpp +++ b/src/tree_gui.cpp @@ -25,6 +25,8 @@ #include "table/strings.h" #include "table/tree_land.h" +#include "safeguards.h" + void PlaceTreesRandomly(); /** Tree Sprites with their palettes */ @@ -100,11 +102,6 @@ public: } } - virtual void OnPaint() - { - this->DrawWidgets(); - } - virtual void DrawWidget(const Rect &r, int widget) const { if (widget < WID_BT_TYPE_11 || widget > WID_BT_TYPE_34 || widget - WID_BT_TYPE_11 >= this->count) return; diff --git a/src/tree_map.h b/src/tree_map.h index 105eb8dca4..e614099fc9 100644 --- a/src/tree_map.h +++ b/src/tree_map.h @@ -279,7 +279,7 @@ static inline void MakeTree(TileIndex t, TreeType type, uint count, uint growth, _m[t].m3 = type; _m[t].m4 = 0 << 5 | 0 << 2; _m[t].m5 = count << 6 | growth; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/tunnel_map.cpp b/src/tunnel_map.cpp index 7639fa9491..4e6d5a7e13 100644 --- a/src/tunnel_map.cpp +++ b/src/tunnel_map.cpp @@ -12,6 +12,8 @@ #include "stdafx.h" #include "tunnelbridge_map.h" +#include "safeguards.h" + /** * Gets the other end of the tunnel. Where a vehicle would reappear when it diff --git a/src/tunnel_map.h b/src/tunnel_map.h index c4f68f7296..e200a1275e 100644 --- a/src/tunnel_map.h +++ b/src/tunnel_map.h @@ -56,7 +56,7 @@ static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d, RoadTyp _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = TRANSPORT_ROAD << 2 | d; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; SetRoadOwner(t, ROADTYPE_ROAD, o); if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o); @@ -78,7 +78,7 @@ static inline void MakeRailTunnel(TileIndex t, Owner o, DiagDirection d, RailTyp _m[t].m3 = r; _m[t].m4 = 0; _m[t].m5 = TRANSPORT_RAIL << 2 | d; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/tunnelbridge.h b/src/tunnelbridge.h index ab8891f621..0a2c2293d5 100644 --- a/src/tunnelbridge.h +++ b/src/tunnelbridge.h @@ -14,6 +14,9 @@ #include "map_func.h" +void MarkBridgeDirty(TileIndex begin, TileIndex end, DiagDirection direction, uint bridge_height); +void MarkBridgeDirty(TileIndex tile); + /** * Calculates the length of a tunnel or a bridge (without end tiles) * @param begin The begin of the tunnel or bridge. diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index b0a4c6ad8c..5f2534b58c 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -44,12 +44,41 @@ #include "table/strings.h" #include "table/bridge_land.h" +#include "safeguards.h" + BridgeSpec _bridge[MAX_BRIDGES]; ///< The specification of all bridges. TileIndex _build_tunnel_endtile; ///< The end of a tunnel; as hidden return from the tunnel build command for GUI purposes. /** Z position of the bridge sprites relative to bridge height (downwards) */ static const int BRIDGE_Z_START = 3; + +/** + * Mark bridge tiles dirty. + * Note: The bridge does not need to exist, everything is passed via parameters. + * @param begin Start tile. + * @param end End tile. + * @param direction Direction from \a begin to \a end. + * @param bridge_height Bridge height level. + */ +void MarkBridgeDirty(TileIndex begin, TileIndex end, DiagDirection direction, uint bridge_height) +{ + TileIndexDiff delta = TileOffsByDiagDir(direction); + for (TileIndex t = begin; t != end; t += delta) { + MarkTileDirtyByTile(t, bridge_height - TileHeight(t)); + } + MarkTileDirtyByTile(end); +} + +/** + * Mark bridge tiles dirty. + * @param tile Bridge head. + */ +void MarkBridgeDirty(TileIndex tile) +{ + MarkBridgeDirty(tile, GetOtherTunnelBridgeEnd(tile), GetTunnelBridgeDirection(tile), GetBridgeHeight(tile)); +} + /** Reset the data been eventually changed by the grf loaded. */ void ResetBridges() { @@ -374,15 +403,13 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u const TileIndex heads[] = {tile_start, tile_end}; for (int i = 0; i < 2; i++) { - if (MayHaveBridgeAbove(heads[i])) { - if (IsBridgeAbove(heads[i])) { - TileIndex north_head = GetNorthernBridgeEnd(heads[i]); + if (IsBridgeAbove(heads[i])) { + TileIndex north_head = GetNorthernBridgeEnd(heads[i]); - if (direction == GetBridgeAxis(heads[i])) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (direction == GetBridgeAxis(heads[i])) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); - if (z_start + 1 == GetBridgeHeight(north_head)) { - return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); - } + if (z_start + 1 == GetBridgeHeight(north_head)) { + return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } } } @@ -391,7 +418,17 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u for (TileIndex tile = tile_start + delta; tile != tile_end; tile += delta) { if (GetTileMaxZ(tile) > z_start) return_cmd_error(STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN); - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) { + if (z_start >= (GetTileZ(tile) + _settings_game.construction.max_bridge_height)) { + /* + * Disallow too high bridges. + * Properly rendering a map where very high bridges (might) exist is expensive. + * See http://www.tt-forums.net/viewtopic.php?f=33&t=40844&start=980#p1131762 + * for a detailed discussion. z_start here is one heightlevel below the bridge level. + */ + return_cmd_error(STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN); + } + + if (IsBridgeAbove(tile)) { /* Disallow crossing bridges for the time being */ return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } @@ -450,7 +487,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u if (flags & DC_EXEC) { DiagDirection dir = AxisToDiagDir(direction); - Company *c = Company::GetIfValid(owner); + Company *c = Company::GetIfValid(company); switch (transport_type) { case TRANSPORT_RAIL: /* Add to company infrastructure count if required. */ @@ -473,13 +510,11 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u RoadType new_rt; FOR_EACH_SET_ROADTYPE(new_rt, roadtypes ^ prev_roadtypes) { /* A full diagonal road tile has two road bits. */ - Company::Get(owner)->infrastructure.road[new_rt] += (bridge_len + 2) * 2 * TUNNELBRIDGE_TRACKBIT_FACTOR; + c->infrastructure.road[new_rt] += (bridge_len + 2) * 2 * TUNNELBRIDGE_TRACKBIT_FACTOR; } } - Owner owner_road = owner; - Owner owner_tram = owner; - if (HasBit(prev_roadtypes, ROADTYPE_ROAD)) owner_road = GetRoadOwner(tile_start, ROADTYPE_ROAD); - if (HasBit(prev_roadtypes, ROADTYPE_TRAM)) owner_tram = GetRoadOwner(tile_start, ROADTYPE_TRAM); + Owner owner_road = HasBit(prev_roadtypes, ROADTYPE_ROAD) ? GetRoadOwner(tile_start, ROADTYPE_ROAD) : company; + Owner owner_tram = HasBit(prev_roadtypes, ROADTYPE_TRAM) ? GetRoadOwner(tile_start, ROADTYPE_TRAM) : company; MakeRoadBridgeRamp(tile_start, owner, owner_road, owner_tram, bridge_type, dir, roadtypes); MakeRoadBridgeRamp(tile_end, owner, owner_road, owner_tram, bridge_type, ReverseDiagDir(dir), roadtypes); break; @@ -496,11 +531,8 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u } /* Mark all tiles dirty */ - TileIndexDiff delta = (direction == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); - for (TileIndex tile = tile_start; tile <= tile_end; tile += delta) { - MarkTileDirtyByTile(tile); - } - DirtyCompanyInfrastructureWindows(owner); + MarkBridgeDirty(tile_start, tile_end, AxisToDiagDir(direction), z_start); + DirtyCompanyInfrastructureWindows(company); } if ((flags & DC_EXEC) && transport_type == TRANSPORT_RAIL) { @@ -680,7 +712,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1, switch (transport_type) { case TRANSPORT_ROAD: cost.AddCost((tiles + 2) * _price[PR_BUILD_ROAD] * 2); break; case TRANSPORT_RAIL: cost.AddCost((tiles + 2) * RailBuildCost(railtype)); break; - default: break; + default: NOT_REACHED(); } if (flags & DC_EXEC) { @@ -916,7 +948,7 @@ static CommandCost DoClearBridge(TileIndex tile, DoCommandFlag flags) if (height < minz) SetRoadside(c, ROADSIDE_PAVED); } ClearBridgeMiddle(c); - MarkTileDirtyByTile(c); + MarkTileDirtyByTile(c, height - TileHeight(c)); } if (rail) { @@ -1176,7 +1208,12 @@ static void DrawTile_TunnelBridge(TileInfo *ti) /* PBS debugging, draw reserved tracks darker */ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasTunnelBridgeReservation(ti->tile)) { - DrawGroundSprite(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_x : rti->base_sprites.single_y, PALETTE_CRASH); + if (rti->UsesOverlay()) { + SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); + DrawGroundSprite(overlay + RTO_X + DiagDirToAxis(tunnelbridge_direction), PALETTE_CRASH); + } else { + DrawGroundSprite(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_x : rti->base_sprites.single_y, PALETTE_CRASH); + } } if (HasCatenaryDrawn(GetRailType(ti->tile))) { @@ -1223,10 +1260,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti) /* HACK Wizardry to convert the bridge ramp direction into a sprite offset */ base_offset += (6 - tunnelbridge_direction) % 4; - if (ti->tileh == SLOPE_FLAT) base_offset += 4; // sloped bridge head - /* Table number BRIDGE_PIECE_HEAD always refers to the bridge heads for any bridge type */ if (transport_type != TRANSPORT_WATER) { + if (ti->tileh == SLOPE_FLAT) base_offset += 4; // sloped bridge head psid = &GetBridgeSpriteTable(GetBridgeType(ti->tile), BRIDGE_PIECE_HEAD)[base_offset]; } else { psid = _aqueduct_sprites + base_offset; @@ -1287,11 +1323,20 @@ static void DrawTile_TunnelBridge(TileInfo *ti) } /* PBS debugging, draw reserved tracks darker */ - if (_game_mode != GM_MENU &&_settings_client.gui.show_track_reservation && HasTunnelBridgeReservation(ti->tile)) { - if (HasBridgeFlatRamp(ti->tileh, DiagDirToAxis(tunnelbridge_direction))) { - AddSortableSpriteToDraw(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_x : rti->base_sprites.single_y, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 8); + if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasTunnelBridgeReservation(ti->tile)) { + if (rti->UsesOverlay()) { + SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); + if (HasBridgeFlatRamp(ti->tileh, DiagDirToAxis(tunnelbridge_direction))) { + AddSortableSpriteToDraw(overlay + RTO_X + DiagDirToAxis(tunnelbridge_direction), PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 8); + } else { + AddSortableSpriteToDraw(overlay + RTO_SLOPE_NE + tunnelbridge_direction, PALETTE_CRASH, ti->x, ti->y, 16, 16, 8, ti->z); + } } else { - AddSortableSpriteToDraw(rti->base_sprites.single_sloped + tunnelbridge_direction, PALETTE_CRASH, ti->x, ti->y, 16, 16, 8, ti->z); + if (HasBridgeFlatRamp(ti->tileh, DiagDirToAxis(tunnelbridge_direction))) { + AddSortableSpriteToDraw(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_x : rti->base_sprites.single_y, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 8); + } else { + AddSortableSpriteToDraw(rti->base_sprites.single_sloped + tunnelbridge_direction, PALETTE_CRASH, ti->x, ti->y, 16, 16, 8, ti->z); + } } } @@ -1434,6 +1479,16 @@ void DrawBridgeMiddle(const TileInfo *ti) AddSortableSpriteToDraw(surface + axis, PAL_NONE, x, y, 16, 16, 0, bridge_z, IsTransparencySet(TO_BRIDGES)); } } + + if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && !IsInvisibilitySet(TO_BRIDGES) && HasTunnelBridgeReservation(rampnorth)) { + if (rti->UsesOverlay()) { + SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); + AddSortableSpriteToDraw(overlay + RTO_X + axis, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, bridge_z, IsTransparencySet(TO_BRIDGES)); + } else { + AddSortableSpriteToDraw(axis == AXIS_X ? rti->base_sprites.single_x : rti->base_sprites.single_y, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, bridge_z, IsTransparencySet(TO_BRIDGES)); + } + } + EndSpriteCombine(); if (HasCatenaryDrawn(GetRailType(rampsouth))) { @@ -1564,6 +1619,8 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td) td->rail_speed = spd; } } + } else if (tt == TRANSPORT_ROAD && !IsTunnel(tile)) { + td->road_speed = GetBridgeSpec(GetBridgeType(tile))->speed; } } diff --git a/src/vehicle.cpp b/src/vehicle.cpp index a0bfc7cd8a..afe884eafc 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -50,9 +50,13 @@ #include "tunnel_map.h" #include "depot_map.h" #include "gamelog.h" +#include "linkgraph/linkgraph.h" +#include "linkgraph/refresh.h" #include "table/strings.h" +#include "safeguards.h" + #define GEN_HASH(x, y) ((GB((y), 6 + ZOOM_LVL_SHIFT, 6) << 6) + GB((x), 7 + ZOOM_LVL_SHIFT, 6)) VehicleID _new_vehicle_id; @@ -233,7 +237,7 @@ uint Vehicle::Crash(bool flooded) /* We do not transfer reserver cargo back, so TotalCount() instead of StoredCount() */ if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo.TotalCount(); v->vehstatus |= VS_CRASHED; - MarkSingleVehicleDirty(v); + v->MarkAllViewportsDirty(); } /* Dirty some windows */ @@ -262,6 +266,9 @@ void ShowNewGrfVehicleError(EngineID engine, StringID part1, StringID part2, GRF const Engine *e = Engine::Get(engine); GRFConfig *grfconfig = GetGRFConfig(e->GetGRFID()); + /* Missing GRF. Nothing useful can be done in this situation. */ + if (grfconfig == NULL) return; + if (!HasBit(grfconfig->grf_bugs, bug_type)) { SetBit(grfconfig->grf_bugs, bug_type); SetDParamStr(0, grfconfig->GetName()); @@ -833,7 +840,7 @@ Vehicle::~Vehicle() /* sometimes, eg. for disaster vehicles, when company bankrupts, when removing crashed/flooded vehicles, * it may happen that vehicle chain is deleted when visible */ - if (!(this->vehstatus & VS_HIDDEN)) MarkSingleVehicleDirty(this); + if (!(this->vehstatus & VS_HIDDEN)) this->MarkAllViewportsDirty(); Vehicle *v = this->Next(); this->SetNext(NULL); @@ -1233,9 +1240,10 @@ bool Vehicle::HandleBreakdown() this->cur_speed = 0; if (!PlayVehicleSound(this, VSE_BREAKDOWN)) { + bool train_or_ship = this->type == VEH_TRAIN || this->type == VEH_SHIP; SndPlayVehicleFx((_settings_game.game_creation.landscape != LT_TOYLAND) ? - (this->type == VEH_TRAIN ? SND_10_TRAIN_BREAKDOWN : SND_0F_VEHICLE_BREAKDOWN) : - (this->type == VEH_TRAIN ? SND_3A_COMEDY_BREAKDOWN_2 : SND_35_COMEDY_BREAKDOWN), this); + (train_or_ship ? SND_10_TRAIN_BREAKDOWN : SND_0F_VEHICLE_BREAKDOWN) : + (train_or_ship ? SND_3A_COMEDY_BREAKDOWN_2 : SND_35_COMEDY_BREAKDOWN), this); } if (!(this->vehstatus & VS_HIDDEN) && !HasBit(EngInfo(this->engine_type)->misc_flags, EF_NO_BREAKDOWN_SMOKE)) { @@ -1387,7 +1395,7 @@ void VehicleEnterDepot(Vehicle *v) t->wait_counter = 0; t->force_proceed = TFP_NONE; ClrBit(t->flags, VRF_TOGGLE_REVERSE); - t->ConsistChanged(true); + t->ConsistChanged(CCF_ARRANGE); break; } @@ -1433,21 +1441,19 @@ void VehicleEnterDepot(Vehicle *v) SetWindowDirty(WC_VEHICLE_VIEW, v->index); const Order *real_order = v->GetOrder(v->cur_real_order_index); - Order t = v->current_order; - v->current_order.MakeDummy(); /* Test whether we are heading for this depot. If not, do nothing. * Note: The target depot for nearest-/manual-depot-orders is only updated on junctions, but we want to accept every depot. */ - if ((t.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) && + if ((v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) && real_order != NULL && !(real_order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) && - (v->type == VEH_AIRCRAFT ? t.GetDestination() != GetStationIndex(v->tile) : v->dest_tile != v->tile)) { + (v->type == VEH_AIRCRAFT ? v->current_order.GetDestination() != GetStationIndex(v->tile) : v->dest_tile != v->tile)) { /* We are heading for another depot, keep driving. */ return; } - if (t.IsRefit()) { + if (v->current_order.IsRefit()) { Backup cur_company(_current_company, v->owner, FILE_LINE); - CommandCost cost = DoCommand(v->tile, v->index, t.GetRefitCargo() | 0xFF << 8, DC_EXEC, GetCmdRefitVeh(v)); + CommandCost cost = DoCommand(v->tile, v->index, v->current_order.GetRefitCargo() | 0xFF << 8, DC_EXEC, GetCmdRefitVeh(v)); cur_company.Restore(); if (cost.Failed()) { @@ -1465,13 +1471,13 @@ void VehicleEnterDepot(Vehicle *v) } } - if (t.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) { + if (v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) { /* Part of orders */ v->DeleteUnreachedImplicitOrders(); UpdateVehicleTimetable(v, true); v->IncrementImplicitOrderIndex(); } - if (t.GetDepotActionType() & ODATFB_HALT) { + if (v->current_order.GetDepotActionType() & ODATFB_HALT) { /* Vehicles are always stopped on entering depots. Do not restart this one. */ _vehicles_to_autoreplace[v] = false; /* Invalidate last_loading_station. As the link from the station @@ -1484,6 +1490,7 @@ void VehicleEnterDepot(Vehicle *v) } AI::NewEvent(v->owner, new ScriptEventVehicleWaitingInDepot(v->index)); } + v->current_order.MakeDummy(); } } @@ -1491,67 +1498,62 @@ void VehicleEnterDepot(Vehicle *v) /** * Update the position of the vehicle. This will update the hash that tells * which vehicles are on a tile. - * @param v The vehicle to update. */ -void VehicleUpdatePosition(Vehicle *v) +void Vehicle::UpdatePosition() { - UpdateVehicleTileHash(v, false); + UpdateVehicleTileHash(this, false); } /** * Update the vehicle on the viewport, updating the right hash and setting the * new coordinates. - * @param v The vehicle to update. * @param dirty Mark the (new and old) coordinates of the vehicle as dirty. */ -void VehicleUpdateViewport(Vehicle *v, bool dirty) +void Vehicle::UpdateViewport(bool dirty) { - int img = v->cur_image; - Point pt = RemapCoords(v->x_pos + v->x_offs, v->y_pos + v->y_offs, v->z_pos); + int img = this->cur_image; + Point pt = RemapCoords(this->x_pos + this->x_offs, this->y_pos + this->y_offs, this->z_pos); const Sprite *spr = GetSprite(img, ST_NORMAL); pt.x += spr->x_offs; pt.y += spr->y_offs; - UpdateVehicleViewportHash(v, pt.x, pt.y); + UpdateVehicleViewportHash(this, pt.x, pt.y); - Rect old_coord = v->coord; - v->coord.left = pt.x; - v->coord.top = pt.y; - v->coord.right = pt.x + spr->width + 2 * ZOOM_LVL_BASE; - v->coord.bottom = pt.y + spr->height + 2 * ZOOM_LVL_BASE; + Rect old_coord = this->coord; + this->coord.left = pt.x; + this->coord.top = pt.y; + this->coord.right = pt.x + spr->width + 2 * ZOOM_LVL_BASE; + this->coord.bottom = pt.y + spr->height + 2 * ZOOM_LVL_BASE; if (dirty) { if (old_coord.left == INVALID_COORD) { - MarkSingleVehicleDirty(v); + this->MarkAllViewportsDirty(); } else { - MarkAllViewportsDirty( - min(old_coord.left, v->coord.left), - min(old_coord.top, v->coord.top), - max(old_coord.right, v->coord.right) + 1 * ZOOM_LVL_BASE, - max(old_coord.bottom, v->coord.bottom) + 1 * ZOOM_LVL_BASE - ); + ::MarkAllViewportsDirty( + min(old_coord.left, this->coord.left), + min(old_coord.top, this->coord.top), + max(old_coord.right, this->coord.right), + max(old_coord.bottom, this->coord.bottom)); } } } /** * Update the position of the vehicle, and update the viewport. - * @param v The vehicle to update. */ -void VehicleUpdatePositionAndViewport(Vehicle *v) +void Vehicle::UpdatePositionAndViewport() { - VehicleUpdatePosition(v); - VehicleUpdateViewport(v, true); + this->UpdatePosition(); + this->UpdateViewport(true); } /** * Marks viewports dirty where the vehicle's image is. - * @param v vehicle to mark dirty */ -void MarkSingleVehicleDirty(const Vehicle *v) +void Vehicle::MarkAllViewportsDirty() const { - MarkAllViewportsDirty(v->coord.left, v->coord.top, v->coord.right + 1 * ZOOM_LVL_BASE, v->coord.bottom + 1 * ZOOM_LVL_BASE); + ::MarkAllViewportsDirty(this->coord.left, this->coord.top, this->coord.right, this->coord.bottom); } /** @@ -1977,13 +1979,12 @@ void Vehicle::BeginLoading() } else { /* We weren't scheduled to stop here. Insert an implicit order - * to show that we are stopping here, but only do that if the order - * list isn't empty. + * to show that we are stopping here. * While only groundvehicles have implicit orders, e.g. aircraft might still enter * the 'wrong' terminal when skipping orders etc. */ Order *in_list = this->GetOrder(this->cur_implicit_order_index); - if (this->IsGroundVehicle() && in_list != NULL && - (!in_list->IsType(OT_IMPLICIT) || + if (this->IsGroundVehicle() && + (in_list == NULL || !in_list->IsType(OT_IMPLICIT) || in_list->GetDestination() != this->last_station_visited)) { bool suppress_implicit_orders = HasBit(this->GetGroundVehicleFlags(), GVF_SUPPRESS_IMPLICIT_ORDERS); /* Do not create consecutive duplicates of implicit orders */ @@ -1993,18 +1994,28 @@ void Vehicle::BeginLoading() prev_order->GetDestination() != this->last_station_visited) { /* Prefer deleting implicit orders instead of inserting new ones, - * so test whether the right order follows later */ + * so test whether the right order follows later. In case of only + * implicit orders treat the last order in the list like an + * explicit one, except if the overall number of orders surpasses + * IMPLICIT_ORDER_ONLY_CAP. */ int target_index = this->cur_implicit_order_index; bool found = false; - while (target_index != this->cur_real_order_index) { + while (target_index != this->cur_real_order_index || this->GetNumManualOrders() == 0) { const Order *order = this->GetOrder(target_index); + if (order == NULL) break; // No orders. if (order->IsType(OT_IMPLICIT) && order->GetDestination() == this->last_station_visited) { found = true; break; } target_index++; - if (target_index >= this->orders.list->GetNumOrders()) target_index = 0; - assert(target_index != this->cur_implicit_order_index); // infinite loop? + if (target_index >= this->orders.list->GetNumOrders()) { + if (this->GetNumManualOrders() == 0 && + this->GetNumOrders() < IMPLICIT_ORDER_ONLY_CAP) { + break; + } + target_index = 0; + } + if (target_index == this->cur_implicit_order_index) break; // Avoid infinite loop. } if (found) { @@ -2034,7 +2045,9 @@ void Vehicle::BeginLoading() assert(order != NULL); } } - } else if (!suppress_implicit_orders && this->orders.list->GetNumOrders() < MAX_VEH_ORDER_ID && Order::CanAllocateItem()) { + } else if (!suppress_implicit_orders && + ((this->orders.list == NULL ? OrderList::CanAllocateItem() : this->orders.list->GetNumOrders() < MAX_VEH_ORDER_ID)) && + Order::CanAllocateItem()) { /* Insert new implicit order */ Order *implicit_order = new Order(); implicit_order->MakeImplicit(this->last_station_visited); @@ -2108,7 +2121,7 @@ void Vehicle::LeaveStation() * during the stop and that refit_cap == cargo_cap for each vehicle in * the consist. */ this->ResetRefitCaps(); - this->RefreshNextHopsStats(); + LinkRefresher::Run(this); /* if the vehicle could load here or could stop with cargo loaded set the last loading station */ this->last_loading_station = this->last_station_visited; @@ -2135,6 +2148,8 @@ void Vehicle::LeaveStation() SetBit(Train::From(this)->flags, VRF_LEAVING_STATION); } + + this->MarkDirty(); } /** @@ -2145,158 +2160,6 @@ void Vehicle::ResetRefitCaps() for (Vehicle *v = this; v != NULL; v = v->Next()) v->refit_cap = v->cargo_cap; } -/** - * Simulated cargo type and capacity for prediction of future links. - */ -struct RefitDesc { - CargoID cargo; ///< Cargo type the vehicle will be carrying. - uint16 capacity; ///< Capacity the vehicle will have. - uint16 remaining; ///< Capacity remaining from before the previous refit. - RefitDesc(CargoID cargo, uint16 capacity, uint16 remaining) : - cargo(cargo), capacity(capacity), remaining(remaining) {} -}; - -typedef std::list RefitList; -typedef std::map CapacitiesMap; - -/** - * Predict a vehicle's course from its current state and refresh all links it - * will visit. - */ -void Vehicle::RefreshNextHopsStats() -{ - /* Assemble list of capacities and set last loading stations to 0. */ - CapacitiesMap capacities; - RefitList refit_capacities; - for (Vehicle *v = this; v != NULL; v = v->Next()) { - refit_capacities.push_back(RefitDesc(v->cargo_type, v->cargo_cap, v->refit_cap)); - if (v->refit_cap > 0) capacities[v->cargo_type] += v->refit_cap; - } - - /* If orders were deleted while loading, we're done here.*/ - if (this->orders.list == NULL) return; - - const Order *first = this->GetOrder(this->cur_implicit_order_index); - - /* Make sure the first order is a station order. */ - first = this->orders.list->GetNextStoppingOrder(this, first, 0); - if (first == NULL) return; - - const Order *cur = first; - const Order *next = first; - bool has_cargo = this->last_loading_station != INVALID_STATION; - bool was_refit = false; - uint hops = 0; - - while (next != NULL) { - - /* If the refit cargo is CT_AUTO_REFIT, we're optimistic and assume the - * cargo will stay the same. The point of this method is to avoid - * deadlocks due to vehicles waiting for cargo that isn't being routed, - * yet. That situation will not occur if the vehicle is actually - * carrying a different cargo in the end. */ - if ((next->IsType(OT_GOTO_DEPOT) || next->IsType(OT_GOTO_STATION)) && - next->IsRefit() && !next->IsAutoRefit()) { - was_refit = true; - CargoID new_cid = next->GetRefitCargo(); - RefitList::iterator refit_it = refit_capacities.begin(); - for (Vehicle *v = this; v != NULL; v = v->Next()) { - const Engine *e = Engine::Get(v->engine_type); - if (!HasBit(e->info.refit_mask, new_cid)) { - ++refit_it; - continue; - } - - /* Back up the vehicle's cargo type */ - CargoID temp_cid = v->cargo_type; - byte temp_subtype = v->cargo_subtype; - v->cargo_type = new_cid; - v->cargo_subtype = GetBestFittingSubType(v, v, new_cid); - - uint16 mail_capacity = 0; - uint amount = e->DetermineCapacity(v, &mail_capacity); - - /* Restore the original cargo type */ - v->cargo_type = temp_cid; - v->cargo_subtype = temp_subtype; - - /* Skip on next refit. */ - if (new_cid != refit_it->cargo && refit_it->remaining > 0) { - capacities[refit_it->cargo] -= refit_it->remaining; - refit_it->remaining = 0; - } else if (amount < refit_it->remaining) { - capacities[refit_it->cargo] -= refit_it->remaining - amount; - refit_it->remaining = amount; - } - refit_it->capacity = amount; - refit_it->cargo = new_cid; - - ++refit_it; - - /* Special case for aircraft with mail. */ - if (v->type == VEH_AIRCRAFT) { - if (mail_capacity < refit_it->remaining) { - capacities[refit_it->cargo] -= refit_it->remaining - mail_capacity; - refit_it->remaining = mail_capacity; - } - refit_it->capacity = mail_capacity; - break; // aircraft have only one vehicle - } - } - } - - /* Only reset the refit capacities if the "previous" next is a station, - * meaning that either the vehicle was refit at the previous station or - * it wasn't at all refit during the current hop. */ - bool reset_refit = was_refit && (next->IsType(OT_GOTO_STATION) || next->IsType(OT_IMPLICIT)); - - /* Reassign next with the following stop. This can be a station or a - * depot. Allow the order list to be walked twice so that we can - * reassign "first" below without afterwards terminating early here. */ - next = this->orders.list->GetNextStoppingOrder(this, - this->orders.list->GetNext(next), hops++ / 2); - if (next == NULL) break; - - if (next->IsType(OT_GOTO_STATION) || next->IsType(OT_IMPLICIT)) { - if (reset_refit) { - /* Restore remaining capacities as vehicle might have been able to load now. */ - for (RefitList::iterator it(refit_capacities.begin()); it != refit_capacities.end(); ++it) { - if (it->remaining == it->capacity) continue; - capacities[it->cargo] += it->capacity - it->remaining; - it->remaining = it->capacity; - } - reset_refit = false; - was_refit = false; - } - - if (cur->IsType(OT_GOTO_STATION) || cur->IsType(OT_IMPLICIT)) { - has_cargo = cur->CanLeaveWithCargo(has_cargo); - if (has_cargo) { - StationID next_station = next->GetDestination(); - Station *st = Station::GetIfValid(cur->GetDestination()); - if (st != NULL && next_station != INVALID_STATION && next_station != st->index) { - for (CapacitiesMap::const_iterator i = capacities.begin(); i != capacities.end(); ++i) { - /* Refresh the link and give it a minimum capacity. */ - if (i->second > 0) IncreaseStats(st, i->first, next_station, i->second, UINT_MAX); - } - } - } - } - - /* "cur" is only assigned here if the stop is a station so that - * whenever stats are to be increased two stations can be found. - * However, "first" can be a depot stop. If that is the case - * reassign it to make sure we end up with a station for the last - * link. */ - cur = next; - if (cur == first) break; - if (!first->IsType(OT_GOTO_STATION) && !first->IsType(OT_IMPLICIT)) { - first = cur; - } - } - } -} - /** * Handle the loading of the vehicle; when not it skips through dummy * orders and does nothing in all other cases. @@ -2306,7 +2169,7 @@ void Vehicle::HandleLoading(bool mode) { switch (this->current_order.GetType()) { case OT_LOADING: { - uint wait_time = max(this->current_order.wait_time - this->lateness_counter, 0); + uint wait_time = max(this->current_order.GetTimetabledWait() - this->lateness_counter, 0); /* Not the first call for this tick, or still loading */ if (mode || !HasBit(this->vehicle_flags, VF_LOADING_FINISHED) || this->current_order_time < wait_time) return; @@ -2415,7 +2278,7 @@ CommandCost Vehicle::SendToDepot(DoCommandFlag flags, DepotCommand command) if (flags & DC_EXEC) { if (this->current_order.IsType(OT_LOADING)) this->LeaveStation(); - if (this->IsGroundVehicle()) { + if (this->IsGroundVehicle() && this->GetNumManualOrders() > 0) { uint16 &gv_flags = this->GetGroundVehicleFlags(); SetBit(gv_flags, GVF_SUPPRESS_IMPLICIT_ORDERS); } @@ -2510,6 +2373,61 @@ static const int8 _vehicle_smoke_pos[8] = { 1, 1, 1, 0, -1, -1, -1, 0 }; +/** + * Call CBID_VEHICLE_SPAWN_VISUAL_EFFECT and spawn requested effects. + * @param v Vehicle to create effects for. + */ +static void SpawnAdvancedVisualEffect(const Vehicle *v) +{ + uint16 callback = GetVehicleCallback(CBID_VEHICLE_SPAWN_VISUAL_EFFECT, 0, Random(), v->engine_type, v); + if (callback == CALLBACK_FAILED) return; + + uint count = GB(callback, 0, 2); + bool auto_center = HasBit(callback, 13); + bool auto_rotate = !HasBit(callback, 14); + + int8 l_center = 0; + if (auto_center) { + /* For road vehicles: Compute offset from vehicle position to vehicle center */ + if (v->type == VEH_ROAD) l_center = -(int)(VEHICLE_LENGTH - RoadVehicle::From(v)->gcache.cached_veh_length) / 2; + } else { + /* For trains: Compute offset from vehicle position to sprite position */ + if (v->type == VEH_TRAIN) l_center = (VEHICLE_LENGTH - Train::From(v)->gcache.cached_veh_length) / 2; + } + + Direction l_dir = v->direction; + if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION)) l_dir = ReverseDir(l_dir); + Direction t_dir = ChangeDir(l_dir, DIRDIFF_90RIGHT); + + int8 x_center = _vehicle_smoke_pos[l_dir] * l_center; + int8 y_center = _vehicle_smoke_pos[t_dir] * l_center; + + for (uint i = 0; i < count; i++) { + uint32 reg = GetRegister(0x100 + i); + uint type = GB(reg, 0, 8); + int8 x = GB(reg, 8, 8); + int8 y = GB(reg, 16, 8); + int8 z = GB(reg, 24, 8); + + if (auto_rotate) { + int8 l = x; + int8 t = y; + x = _vehicle_smoke_pos[l_dir] * l + _vehicle_smoke_pos[t_dir] * t; + y = _vehicle_smoke_pos[t_dir] * l - _vehicle_smoke_pos[l_dir] * t; + } + + if (type >= 0xF0) { + switch (type) { + case 0xF1: CreateEffectVehicleRel(v, x_center + x, y_center + y, z, EV_STEAM_SMOKE); break; + case 0xF2: CreateEffectVehicleRel(v, x_center + x, y_center + y, z, EV_DIESEL_SMOKE); break; + case 0xF3: CreateEffectVehicleRel(v, x_center + x, y_center + y, z, EV_ELECTRIC_SPARK); break; + case 0xFA: CreateEffectVehicleRel(v, x_center + x, y_center + y, z, EV_BREAKDOWN_SMOKE_AIRCRAFT); break; + default: break; + } + } + } +} + /** * Draw visual effects (smoke and/or sparks) for a vehicle chain. * @pre this->IsPrimaryVehicle() @@ -2530,7 +2448,9 @@ void Vehicle::ShowVisualEffect() const return; } - uint max_speed = this->vcache.cached_max_speed; + /* Use the speed as limited by underground and orders. */ + uint max_speed = this->GetCurrentMaxSpeed(); + if (this->type == VEH_TRAIN) { const Train *t = Train::From(this); /* For trains, do not show any smoke when: @@ -2539,21 +2459,28 @@ void Vehicle::ShowVisualEffect() const */ if (HasBit(t->flags, VRF_REVERSING) || (IsRailStationTile(t->tile) && t->IsFrontEngine() && t->current_order.ShouldStopAtStation(t, GetStationIndex(t->tile)) && - t->cur_speed >= t->Train::GetCurrentMaxSpeed())) { + t->cur_speed >= max_speed)) { return; } - - max_speed = min(max_speed, t->gcache.cached_max_track_speed); - max_speed = min(max_speed, this->current_order.max_speed); } - if (this->type == VEH_ROAD || this->type == VEH_SHIP) max_speed = min(max_speed, this->current_order.max_speed * 2); const Vehicle *v = this; do { + bool advanced = HasBit(v->vcache.cached_vis_effect, VE_ADVANCED_EFFECT); int effect_offset = GB(v->vcache.cached_vis_effect, VE_OFFSET_START, VE_OFFSET_COUNT) - VE_OFFSET_CENTRE; - byte effect_type = GB(v->vcache.cached_vis_effect, VE_TYPE_START, VE_TYPE_COUNT); - bool disable_effect = HasBit(v->vcache.cached_vis_effect, VE_DISABLE_EFFECT); + VisualEffectSpawnModel effect_model = VESM_NONE; + if (advanced) { + effect_offset = VE_OFFSET_CENTRE; + effect_model = (VisualEffectSpawnModel)GB(v->vcache.cached_vis_effect, 0, VE_ADVANCED_EFFECT); + if (effect_model >= VESM_END) effect_model = VESM_NONE; // unknown spawning model + } else { + effect_model = (VisualEffectSpawnModel)GB(v->vcache.cached_vis_effect, VE_TYPE_START, VE_TYPE_COUNT); + assert(effect_model != (VisualEffectSpawnModel)VE_TYPE_DEFAULT); // should have been resolved by UpdateVisualEffect + assert_compile((uint)VESM_STEAM == (uint)VE_TYPE_STEAM); + assert_compile((uint)VESM_DIESEL == (uint)VE_TYPE_DIESEL); + assert_compile((uint)VESM_ELECTRIC == (uint)VE_TYPE_ELECTRIC); + } /* Show no smoke when: * - Smoke has been disabled for this vehicle @@ -2562,9 +2489,9 @@ void Vehicle::ShowVisualEffect() const * - The vehicle is on a depot tile * - The vehicle is on a tunnel tile * - The vehicle is a train engine that is currently unpowered */ - if (disable_effect || + if (effect_model == VESM_NONE || v->vehstatus & VS_HIDDEN || - (MayHaveBridgeAbove(v->tile) && IsBridgeAbove(v->tile)) || + IsBridgeAbove(v->tile) || IsDepotTile(v->tile) || IsTunnelTile(v->tile) || (v->type == VEH_TRAIN && @@ -2572,33 +2499,20 @@ void Vehicle::ShowVisualEffect() const continue; } - /* The effect offset is relative to a point 4 units behind the vehicle's - * front (which is the center of an 8/8 vehicle). Shorter vehicles need a - * correction factor. */ - if (v->type == VEH_TRAIN) effect_offset += (VEHICLE_LENGTH - Train::From(v)->gcache.cached_veh_length) / 2; - - int x = _vehicle_smoke_pos[v->direction] * effect_offset; - int y = _vehicle_smoke_pos[(v->direction + 2) % 8] * effect_offset; - - if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION)) { - x = -x; - y = -y; - } - - switch (effect_type) { - case VE_TYPE_STEAM: + EffectVehicleType evt = EV_END; + switch (effect_model) { + case VESM_STEAM: /* Steam smoke - amount is gradually falling until vehicle reaches its maximum speed, after that it's normal. * Details: while vehicle's current speed is gradually increasing, steam plumes' density decreases by one third each * third of its maximum speed spectrum. Steam emission finally normalises at very close to vehicle's maximum speed. * REGULATION: * - instead of 1, 4 / 2^smoke_amount (max. 2) is used to provide sufficient regulation to steam puffs' amount. */ if (GB(v->tick_counter, 0, ((4 >> _settings_game.vehicle.smoke_amount) + ((this->cur_speed * 3) / max_speed))) == 0) { - CreateEffectVehicleRel(v, x, y, 10, EV_STEAM_SMOKE); - sound = true; + evt = EV_STEAM_SMOKE; } break; - case VE_TYPE_DIESEL: { + case VESM_DIESEL: { /* Diesel smoke - thicker when vehicle is starting, gradually subsiding till it reaches its maximum speed * when smoke emission stops. * Details: Vehicle's (max.) speed spectrum is divided into 32 parts. When max. speed is reached, chance for smoke @@ -2616,13 +2530,12 @@ void Vehicle::ShowVisualEffect() const } if (this->cur_speed < (max_speed >> (2 >> _settings_game.vehicle.smoke_amount)) && Chance16((64 - ((this->cur_speed << 5) / max_speed) + power_weight_effect), (512 >> _settings_game.vehicle.smoke_amount))) { - CreateEffectVehicleRel(v, x, y, 10, EV_DIESEL_SMOKE); - sound = true; + evt = EV_DIESEL_SMOKE; } break; } - case VE_TYPE_ELECTRIC: + case VESM_ELECTRIC: /* Electric train's spark - more often occurs when train is departing (more load) * Details: Electric locomotives are usually at least twice as powerful as their diesel counterparts, so spark * emissions are kept simple. Only when starting, creating huge force are sparks more likely to happen, but when @@ -2631,13 +2544,34 @@ void Vehicle::ShowVisualEffect() const * - in Chance16 the last value is 360 / 2^smoke_amount (max. sparks when 90 = smoke_amount of 2). */ if (GB(v->tick_counter, 0, 2) == 0 && Chance16((6 - ((this->cur_speed << 2) / max_speed)), (360 >> _settings_game.vehicle.smoke_amount))) { - CreateEffectVehicleRel(v, x, y, 10, EV_ELECTRIC_SPARK); - sound = true; + evt = EV_ELECTRIC_SPARK; } break; default: - break; + NOT_REACHED(); + } + + if (evt != EV_END && advanced) { + sound = true; + SpawnAdvancedVisualEffect(v); + } else if (evt != EV_END) { + sound = true; + + /* The effect offset is relative to a point 4 units behind the vehicle's + * front (which is the center of an 8/8 vehicle). Shorter vehicles need a + * correction factor. */ + if (v->type == VEH_TRAIN) effect_offset += (VEHICLE_LENGTH - Train::From(v)->gcache.cached_veh_length) / 2; + + int x = _vehicle_smoke_pos[v->direction] * effect_offset; + int y = _vehicle_smoke_pos[(v->direction + 2) % 8] * effect_offset; + + if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION)) { + x = -x; + y = -y; + } + + CreateEffectVehicleRel(v, x, y, 10, evt); } } while ((v = v->Next()) != NULL); diff --git a/src/vehicle_base.h b/src/vehicle_base.h index 431692a32d..a28e886467 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -23,6 +23,8 @@ #include "transport_type.h" #include "group_type.h" #include "base_consist.h" +#include +#include /** Vehicle status bits in #Vehicle::vehstatus. */ enum VehStatus { @@ -56,6 +58,7 @@ enum NewGRFCacheValidValues { NCVV_POSITION_SAME_ID_LENGTH = 1, ///< This bit will be set if the NewGRF var 41 currently stored is valid. NCVV_CONSIST_CARGO_INFORMATION = 2, ///< This bit will be set if the NewGRF var 42 currently stored is valid. NCVV_COMPANY_INFORMATION = 3, ///< This bit will be set if the NewGRF var 43 currently stored is valid. + NCVV_POSITION_IN_VEHICLE = 4, ///< This bit will be set if the NewGRF var 4D currently stored is valid. NCVV_END, ///< End of the bits. }; @@ -66,6 +69,7 @@ struct NewGRFCache { uint32 position_same_id_length; ///< Cache for NewGRF var 41. uint32 consist_cargo_information; ///< Cache for NewGRF var 42. (Note: The cargotype is untranslated in the cache because the accessing GRF is yet unknown.) uint32 company_information; ///< Cache for NewGRF var 43. + uint32 position_in_vehicle; ///< Cache for NewGRF var 4D. uint8 cache_valid; ///< Bitset that indicates which cache values are valid. }; @@ -83,11 +87,22 @@ enum VisualEffect { VE_TYPE_ELECTRIC = 3, ///< Electric sparks VE_DISABLE_EFFECT = 6, ///< Flag to disable visual effect + VE_ADVANCED_EFFECT = VE_DISABLE_EFFECT, ///< Flag for advanced effects VE_DISABLE_WAGON_POWER = 7, ///< Flag to disable wagon power VE_DEFAULT = 0xFF, ///< Default value to indicate that visual effect should be based on engine class }; +/** Models for spawning visual effects. */ +enum VisualEffectSpawnModel { + VESM_NONE = 0, ///< No visual effect + VESM_STEAM, ///< Steam model + VESM_DIESEL, ///< Diesel model + VESM_ELECTRIC, ///< Electric model + + VESM_END +}; + /** * Enum to handle ground vehicle subtypes. * This is defined here instead of at #GroundVehicle because some common function require access to these flags. @@ -124,15 +139,30 @@ extern void FixOldVehicles(); struct GRFFile; +/** + * Simulated cargo type and capacity for prediction of future links. + */ +struct RefitDesc { + CargoID cargo; ///< Cargo type the vehicle will be carrying. + uint16 capacity; ///< Capacity the vehicle will have. + uint16 remaining; ///< Capacity remaining from before the previous refit. + RefitDesc(CargoID cargo, uint16 capacity, uint16 remaining) : + cargo(cargo), capacity(capacity), remaining(remaining) {} +}; + /** %Vehicle data structure. */ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist { private: + typedef std::list RefitList; + typedef std::map CapacitiesMap; + Vehicle *next; ///< pointer to the next vehicle in the chain Vehicle *previous; ///< NOSAVE: pointer to the previous vehicle in the chain Vehicle *first; ///< NOSAVE: pointer to the first vehicle in the chain Vehicle *next_shared; ///< pointer to the next vehicle that shares the order Vehicle *previous_shared; ///< NOSAVE: pointer to the previous vehicle in the shared order chain + public: friend const SaveLoad *GetVehicleDescription(VehicleType vt); ///< So we can use private/protected variables in the saveload code friend void FixOldVehicles(); @@ -609,15 +639,13 @@ public: * Get the next station the vehicle will stop at. * @return ID of the next station the vehicle will stop at or INVALID_STATION. */ - inline StationID GetNextStoppingStation() const + inline StationIDStack GetNextStoppingStation() const { return (this->orders.list == NULL) ? INVALID_STATION : this->orders.list->GetNextStoppingStation(this); } void ResetRefitCaps(); - void RefreshNextHopsStats(); - /** * Copy certain configurations and statistics of a vehicle after successful autoreplace/renew * The function shall copy everything that cannot be copied by a command (like orders / group etc), @@ -669,6 +697,11 @@ public: void UpdateVisualEffect(bool allow_power_change = true); void ShowVisualEffect() const; + void UpdatePosition(); + void UpdateViewport(bool dirty); + void UpdatePositionAndViewport(); + void MarkAllViewportsDirty() const; + inline uint16 GetServiceInterval() const { return this->service_interval; } inline void SetServiceInterval(uint16 interval) { this->service_interval = interval; } @@ -1040,14 +1073,12 @@ struct SpecializedVehicle : public Vehicle { */ inline void UpdateViewport(bool force_update, bool update_delta) { - extern void VehicleUpdateViewport(Vehicle *v, bool dirty); - /* Explicitly choose method to call to prevent vtable dereference - * it gives ~3% runtime improvements in games with many vehicles */ if (update_delta) ((T *)this)->T::UpdateDeltaXY(this->direction); SpriteID old_image = this->cur_image; this->cur_image = ((T *)this)->T::GetImage(this->direction, EIT_ON_MAP); - if (force_update || this->cur_image != old_image) VehicleUpdateViewport(this, true); + if (force_update || this->cur_image != old_image) this->Vehicle::UpdateViewport(true); } }; @@ -1058,28 +1089,6 @@ struct SpecializedVehicle : public Vehicle { */ #define FOR_ALL_VEHICLES_OF_TYPE(name, var) FOR_ALL_ITEMS_FROM(name, vehicle_index, var, 0) if (var->type == name::EXPECTED_TYPE) -/** - * Disasters, like submarines, skyrangers and their shadows, belong to this class. - */ -struct DisasterVehicle FINAL : public SpecializedVehicle { - SpriteID image_override; ///< Override for the default disaster vehicle sprite. - VehicleID big_ufo_destroyer_target; ///< The big UFO that this destroyer is supposed to bomb. - - /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ - DisasterVehicle() : SpecializedVehicleBase() {} - /** We want to 'destruct' the right class. */ - virtual ~DisasterVehicle() {} - - void UpdateDeltaXY(Direction direction); - bool Tick(); -}; - -/** - * Iterate over disaster vehicles. - * @param var The variable used to iterate over. - */ -#define FOR_ALL_DISASTERVEHICLES(var) FOR_ALL_VEHICLES_OF_TYPE(DisasterVehicle, var) - /** Generates sequence of free UnitID numbers */ struct FreeUnitIDGenerator { bool *cache; ///< array of occupied unit id numbers diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index 62c032111a..610699dd20 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -34,6 +34,8 @@ #include "table/strings.h" +#include "safeguards.h" + /* Tables used in vehicle.h to find the right command for a certain vehicle type */ const uint32 _veh_build_proc_table[] = { CMD_BUILD_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN), @@ -85,14 +87,7 @@ CommandCost CmdBuildVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint /* Elementary check for valid location. */ if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_company)) return CMD_ERROR; - VehicleType type; - switch (GetTileType(tile)) { - case MP_RAILWAY: type = VEH_TRAIN; break; - case MP_ROAD: type = VEH_ROAD; break; - case MP_WATER: type = VEH_SHIP; break; - case MP_STATION: type = VEH_AIRCRAFT; break; - default: NOT_REACHED(); // Safe due to IsDepotTile() - } + VehicleType type = GetDepotVehicleType(tile); /* Validate the engine type. */ EngineID eid = GB(p1, 0, 16); @@ -471,7 +466,7 @@ CommandCost CmdRefitVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint /* Update the cached variables */ switch (v->type) { case VEH_TRAIN: - Train::From(front)->ConsistChanged(auto_refit); + Train::From(front)->ConsistChanged(auto_refit ? CCF_AUTOREFIT : CCF_REFIT); break; case VEH_ROAD: RoadVehUpdateCache(RoadVehicle::From(front), auto_refit); @@ -757,7 +752,7 @@ static void CloneVehicleName(const Vehicle *src, Vehicle *dst) /* Check the name is unique. */ if (IsUniqueVehicleName(buf)) { - dst->name = strdup(buf); + dst->name = stredup(buf); break; } } @@ -1035,7 +1030,7 @@ CommandCost CmdRenameVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uin if (flags & DC_EXEC) { free(v->name); - v->name = reset ? NULL : strdup(text); + v->name = reset ? NULL : stredup(text); InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 1); MarkWholeScreenDirty(); } diff --git a/src/vehicle_func.h b/src/vehicle_func.h index 758ad83050..9eb6b91219 100644 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -29,6 +29,15 @@ static const int VEHICLE_PROFIT_MIN_AGE = DAYS_IN_YEAR * 2; ///< Only vehicles older than this have a meaningful profit. static const Money VEHICLE_PROFIT_THRESHOLD = 10000; ///< Threshold for a vehicle to be considered making good profit. +/** + * Helper to check whether an image index is valid for a particular vehicle. + * @param The type of vehicle. + * @param image_index The image index to check. + * @return True iff the image index is valid. + */ +template +bool IsValidImageIndex(uint8 image_index); + typedef Vehicle *VehicleFromPosProc(Vehicle *v, void *data); void VehicleServiceInDepot(Vehicle *v); @@ -58,11 +67,6 @@ void CheckVehicleBreakdown(Vehicle *v); void AgeVehicle(Vehicle *v); void VehicleEnteredDepotThisTick(Vehicle *v); -void VehicleUpdatePosition(Vehicle *v); -void VehicleUpdateViewport(Vehicle *v, bool dirty); -void VehicleUpdatePositionAndViewport(Vehicle *v); -void MarkSingleVehicleDirty(const Vehicle *v); - UnitID GetFreeUnitNumber(VehicleType type); void VehicleEnterDepot(Vehicle *v); diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index ff8719c071..4ace090dda 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -39,6 +39,8 @@ #include "tilehighlight_func.h" #include "zoom_func.h" +#include "safeguards.h" + Sorting _sorting; @@ -96,6 +98,30 @@ const StringID BaseVehicleListWindow::vehicle_depot_name[] = { STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR }; +/** + * Get the number of digits the biggest unit number of a set of vehicles has. + * @param vehicles The list of vehicles. + * @return The number of digits to allocate space for. + */ +uint GetUnitNumberDigits(VehicleList &vehicles) +{ + uint unitnumber = 0; + for (const Vehicle **v = vehicles.Begin(); v != vehicles.End(); v++) { + unitnumber = max(unitnumber, (*v)->unitnumber); + } + + if (unitnumber >= 10000) return 5; + if (unitnumber >= 1000) return 4; + if (unitnumber >= 100) return 3; + + /* + * When the smallest unit number is less than 10, it is + * quite likely that it will expand to become more than + * 10 quite soon. + */ + return 2; +} + void BaseVehicleListWindow::BuildVehicleList() { if (!this->vehicles.NeedRebuild()) return; @@ -104,21 +130,7 @@ void BaseVehicleListWindow::BuildVehicleList() GenerateVehicleSortList(&this->vehicles, this->vli); - uint unitnumber = 0; - for (const Vehicle **v = this->vehicles.Begin(); v != this->vehicles.End(); v++) { - unitnumber = max(unitnumber, (*v)->unitnumber); - } - - /* Because 111 is much less wide than e.g. 999 we use the - * wider numbers to determine the width instead of just - * the random number that it seems to be. */ - if (unitnumber >= 1000) { - this->unitnumber_digits = 4; - } else if (unitnumber >= 100) { - this->unitnumber_digits = 3; - } else { - this->unitnumber_digits = 2; - } + this->unitnumber_digits = GetUnitNumberDigits(this->vehicles); this->vehicles.RebuildDone(); this->vscroll->SetCount(this->vehicles.Length()); @@ -156,13 +168,13 @@ DropDownList *BaseVehicleListWindow::BuildActionDropdownList(bool show_autorepla { DropDownList *list = new DropDownList(); - if (show_autoreplace) list->push_back(new DropDownListStringItem(STR_VEHICLE_LIST_REPLACE_VEHICLES, ADI_REPLACE, false)); - list->push_back(new DropDownListStringItem(STR_VEHICLE_LIST_SEND_FOR_SERVICING, ADI_SERVICE, false)); - list->push_back(new DropDownListStringItem(this->vehicle_depot_name[this->vli.vtype], ADI_DEPOT, false)); + if (show_autoreplace) *list->Append() = new DropDownListStringItem(STR_VEHICLE_LIST_REPLACE_VEHICLES, ADI_REPLACE, false); + *list->Append() = new DropDownListStringItem(STR_VEHICLE_LIST_SEND_FOR_SERVICING, ADI_SERVICE, false); + *list->Append() = new DropDownListStringItem(this->vehicle_depot_name[this->vli.vtype], ADI_DEPOT, false); if (show_group) { - list->push_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, ADI_ADD_SHARED, false)); - list->push_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, ADI_REMOVE_ALL, false)); + *list->Append() = new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, ADI_ADD_SHARED, false); + *list->Append() = new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, ADI_REMOVE_ALL, false); } return list; @@ -653,7 +665,7 @@ struct RefitWindow : public Window { break; case WID_VR_VEHICLE_PANEL_DISPLAY: - size->height = GetVehicleHeight(Vehicle::Get(this->window_number)->type); + size->height = ScaleGUITrad(GetVehicleHeight(Vehicle::Get(this->window_number)->type)); break; case WID_VR_INFO: @@ -750,7 +762,7 @@ struct RefitWindow : public Window { } if (left != right) { - DrawFrameRect(left, r.top + WD_FRAMERECT_TOP, right, r.top + WD_FRAMERECT_TOP + 13, COLOUR_WHITE, FR_BORDERONLY); + DrawFrameRect(left, r.top + WD_FRAMERECT_TOP, right, r.top + WD_FRAMERECT_TOP + ScaleGUITrad(14) - 1, COLOUR_WHITE, FR_BORDERONLY); } left = INT32_MIN; @@ -1276,6 +1288,9 @@ static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, Veh const Order *order = v->GetOrder(start); if (order == NULL) return; + bool rtl = _current_text_dir == TD_RTL; + int l_offset = rtl ? 0 : ScaleGUITrad(6); + int r_offset = rtl ? ScaleGUITrad(6) : 0; int i = 0; VehicleOrderID oid = start; @@ -1284,7 +1299,7 @@ static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, Veh if (order->IsType(OT_GOTO_STATION)) { SetDParam(0, order->GetDestination()); - DrawString(left + 6, right - 6, y, STR_TINY_BLACK_STATION); + DrawString(left + l_offset, right - r_offset, y, STR_TINY_BLACK_STATION); y += FONT_HEIGHT_SMALL; if (++i == 4) break; @@ -1328,7 +1343,7 @@ void DrawVehicleImage(const Vehicle *v, int left, int right, int y, VehicleID se uint GetVehicleListHeight(VehicleType type, uint divisor) { /* Name + vehicle + profit */ - uint base = GetVehicleHeight(type) + 2 * FONT_HEIGHT_SMALL; + uint base = ScaleGUITrad(GetVehicleHeight(type)) + 2 * FONT_HEIGHT_SMALL; /* Drawing of the 4 small orders + profit*/ if (type >= VEH_SHIP) base = max(base, 5U * FONT_HEIGHT_SMALL); @@ -1352,13 +1367,13 @@ void BaseVehicleListWindow::DrawVehicleListItems(VehicleID selected_vehicle, int int width = right - left; bool rtl = _current_text_dir == TD_RTL; - int text_offset = GetDigitWidth() * this->unitnumber_digits + WD_FRAMERECT_RIGHT; + int text_offset = max(GetSpriteSize(SPR_PROFIT_LOT).width, GetDigitWidth() * this->unitnumber_digits) + WD_FRAMERECT_RIGHT; int text_left = left + (rtl ? 0 : text_offset); int text_right = right - (rtl ? text_offset : 0); bool show_orderlist = this->vli.vtype >= VEH_SHIP; - int orderlist_left = left + (rtl ? 0 : max(100 + text_offset, width / 2)); - int orderlist_right = right - (rtl ? max(100 + text_offset, width / 2) : 0); + int orderlist_left = left + (rtl ? 0 : max(ScaleGUITrad(100) + text_offset, width / 2)); + int orderlist_right = right - (rtl ? max(ScaleGUITrad(100) + text_offset, width / 2) : 0); int image_left = (rtl && show_orderlist) ? orderlist_right : text_left; int image_right = (!rtl && show_orderlist) ? orderlist_left : text_right; @@ -1484,7 +1499,7 @@ public: case WID_VL_SORT_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); - d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. + d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; @@ -1708,7 +1723,7 @@ static WindowDesc _vehicle_list_train_desc( _nested_vehicle_list, lengthof(_nested_vehicle_list) ); -static void ShowVehicleListWindowLocal(CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint16 unique_number) +static void ShowVehicleListWindowLocal(CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint32 unique_number) { if (!Company::IsValidID(company) && company != OWNER_NONE) return; @@ -1894,7 +1909,7 @@ struct VehicleDetailsWindow : Window { uint desired_height; if (v->HasArticulatedPart()) { /* An articulated RV has its text drawn under the sprite instead of after it, hence 15 pixels extra. */ - desired_height = WD_FRAMERECT_TOP + 15 + 3 * FONT_HEIGHT_NORMAL + 2 + WD_FRAMERECT_BOTTOM; + desired_height = WD_FRAMERECT_TOP + ScaleGUITrad(15) + 3 * FONT_HEIGHT_NORMAL + 2 + WD_FRAMERECT_BOTTOM; /* Add space for the cargo amount for each part. */ for (const Vehicle *u = v; u != NULL; u = u->Next()) { if (u->cargo_cap != 0) desired_height += FONT_HEIGHT_NORMAL + 1; @@ -1951,7 +1966,7 @@ struct VehicleDetailsWindow : Window { } case WID_VD_MATRIX: - resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; + resize->height = max(ScaleGUITrad(14), WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM); size->height = 4 * resize->height; break; @@ -2078,7 +2093,9 @@ struct VehicleDetailsWindow : Window { case WID_VD_MIDDLE_DETAILS: { /* For other vehicles, at the place of the matrix. */ bool rtl = _current_text_dir == TD_RTL; - uint sprite_width = max(UnScaleByZoom(GetSprite(v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DETAILS), ST_NORMAL)->width, ZOOM_LVL_GUI), 70U) + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; + uint sprite_width = UnScaleGUI( + max(GetSprite(v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DETAILS), ST_NORMAL)->width, 70U)) + + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; uint text_left = r.left + (rtl ? 0 : sprite_width); uint text_right = r.right - (rtl ? sprite_width : 0); @@ -2490,6 +2507,10 @@ public: { const Vehicle *v = Vehicle::Get(this->window_number); switch (widget) { + case WID_VV_START_STOP: + size->height = max(size->height, max(GetSpriteSize(SPR_FLAG_VEH_STOPPED).height, GetSpriteSize(SPR_FLAG_VEH_RUNNING).height) + WD_IMGBTN_TOP + WD_IMGBTN_BOTTOM); + break; + case WID_VV_FORCE_PROCEED: if (v->type != VEH_TRAIN) { size->height = 0; @@ -2619,9 +2640,16 @@ public: } } - /* draw the flag plus orders */ - DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP); - DrawString(r.left + WD_FRAMERECT_LEFT + 6, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); + /* Draw the flag plus orders. */ + bool rtl = (_current_text_dir == TD_RTL); + uint text_offset = max(GetSpriteSize(SPR_FLAG_VEH_STOPPED).width, GetSpriteSize(SPR_FLAG_VEH_RUNNING).width) + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT; + int text_left = r.left + (rtl ? (uint)WD_FRAMERECT_LEFT : text_offset); + int text_right = r.right - (rtl ? text_offset : (uint)WD_FRAMERECT_RIGHT); + int image_left = (rtl ? text_right + 1 : r.left) + WD_IMGBTN_LEFT; + int image = ((v->vehstatus & VS_STOPPED) != 0) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING; + int lowered = this->IsWidgetLowered(WID_VV_START_STOP) ? 1 : 0; + DrawSprite(image, PAL_NONE, image_left + lowered, r.top + WD_IMGBTN_TOP + lowered); + DrawString(text_left + lowered, text_right + lowered, r.top + WD_FRAMERECT_TOP + lowered, str, TC_FROMSTRING, SA_HOR_CENTER); } virtual void OnClick(Point pt, int widget, int click_count) @@ -2819,7 +2847,7 @@ int GetVehicleWidth(Vehicle *v, EngineImageType image_type) bool rtl = _current_text_dir == TD_RTL; SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); - vehicle_width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); + vehicle_width = UnScaleGUI(real_sprite->width); break; } diff --git a/src/vehiclelist.cpp b/src/vehiclelist.cpp index b15f05571b..7e42b25aa2 100644 --- a/src/vehiclelist.cpp +++ b/src/vehiclelist.cpp @@ -12,18 +12,22 @@ #include "stdafx.h" #include "train.h" #include "vehiclelist.h" +#include "group.h" + +#include "safeguards.h" /** * Pack a VehicleListIdentifier in a single uint32. * @return The packed identifier. */ -uint32 VehicleListIdentifier::Pack() +uint32 VehicleListIdentifier::Pack() const { byte c = this->company == OWNER_NONE ? 0xF : (byte)this->company; assert(c < (1 << 4)); - assert(this->type < (1 << 3)); assert(this->vtype < (1 << 2)); assert(this->index < (1 << 20)); + assert(this->type < VLT_END); + assert_compile(VLT_END <= (1 << 3)); return c << 28 | this->type << 23 | this->vtype << 26 | this->index; } @@ -144,7 +148,7 @@ bool GenerateVehicleSortList(VehicleList *list, const VehicleListIdentifier &vli if (vli.index != ALL_GROUP) { FOR_ALL_VEHICLES(v) { if (v->type == vli.vtype && v->IsPrimaryVehicle() && - v->owner == vli.company && v->group_id == vli.index) { + v->owner == vli.company && GroupIsInGroup(v->group_id, vli.index)) { *list->Append() = v; } } diff --git a/src/vehiclelist.h b/src/vehiclelist.h index 73c3de6b78..c96fb692ae 100644 --- a/src/vehiclelist.h +++ b/src/vehiclelist.h @@ -34,7 +34,7 @@ struct VehicleListIdentifier { CompanyID company; ///< The company associated with this list. uint32 index; ///< A vehicle list type specific index. - uint32 Pack(); + uint32 Pack() const; bool Unpack(uint32 data); /** @@ -47,10 +47,7 @@ struct VehicleListIdentifier { VehicleListIdentifier(VehicleListType type, VehicleType vtype, CompanyID company, uint index = 0) : type(type), vtype(vtype), company(company), index(index) {} - VehicleListIdentifier(uint32 data); - - /** Simple empty constructor. In this case you must set everything! */ - VehicleListIdentifier() {} + VehicleListIdentifier(uint32 data = 0); }; /** A list of vehicles. */ @@ -58,5 +55,6 @@ typedef SmallVector VehicleList; bool GenerateVehicleSortList(VehicleList *list, const VehicleListIdentifier &identifier); void BuildDepotVehicleList(VehicleType type, TileIndex tile, VehicleList *engine_list, VehicleList *wagon_list, bool individual_wagons = false); +uint GetUnitNumberDigits(VehicleList &vehicles); #endif /* VEHICLELIST_H */ diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index 963353f0de..01628f99cd 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -27,6 +27,8 @@ #include "allegro_v.h" #include +#include "../safeguards.h" + #ifdef _DEBUG /* Allegro replaces SEGV/ABRT signals meaning that the debugger will never * be triggered, so rereplace the signals and make the debugger useful. */ @@ -92,7 +94,7 @@ static void InitPalette() static void CheckPaletteAnim() { if (_cur_palette.count_dirty != 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); switch (blitter->UsePaletteAnimation()) { case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: @@ -191,7 +193,7 @@ static void GetAvailableVideoMode(uint *w, uint *h) static bool CreateMainSurface(uint w, uint h) { - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); if (bpp == 0) usererror("Can't use a blitter that blits 0 bpp for normal visuals"); set_color_depth(bpp); @@ -217,12 +219,12 @@ static bool CreateMainSurface(uint w, uint h) _cursor.pos.x = mouse_x; _cursor.pos.y = mouse_y; - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); InitPalette(); char caption[32]; - snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision); + seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision); set_window_title(caption); enable_hardware_cursor(); @@ -386,22 +388,10 @@ static void PollEvent() } /* Mouse movement */ - int dx = mouse_x - _cursor.pos.x; - int dy = mouse_y - _cursor.pos.y; - if (dx != 0 || dy != 0) { - if (_cursor.fix_at) { - _cursor.delta.x = dx; - _cursor.delta.y = dy; - position_mouse(_cursor.pos.x, _cursor.pos.y); - } else { - _cursor.delta.x = dx; - _cursor.delta.y = dy; - _cursor.pos.x = mouse_x; - _cursor.pos.y = mouse_y; - _cursor.dirty = true; - } - mouse_action = true; + if (_cursor.UpdateCursorPosition(mouse_x, mouse_y, false)) { + position_mouse(_cursor.pos.x, _cursor.pos.y); } + if (_cursor.delta.x != 0 || _cursor.delta.y) mouse_action = true; static int prev_mouse_z = 0; if (prev_mouse_z != mouse_z) { diff --git a/src/video/allegro_v.h b/src/video/allegro_v.h index da95269ce3..a770635da0 100644 --- a/src/video/allegro_v.h +++ b/src/video/allegro_v.h @@ -15,7 +15,7 @@ #include "video_driver.hpp" /** The allegro video driver. */ -class VideoDriver_Allegro: public VideoDriver { +class VideoDriver_Allegro : public VideoDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -37,12 +37,10 @@ public: }; /** Factory for the allegro video driver. */ -class FVideoDriver_Allegro: public VideoDriverFactory { +class FVideoDriver_Allegro : public DriverFactoryBase { public: - static const int priority = 4; - /* virtual */ const char *GetName() { return "allegro"; } - /* virtual */ const char *GetDescription() { return "Allegro Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_Allegro(); } + FVideoDriver_Allegro() : DriverFactoryBase(Driver::DT_VIDEO, 4, "allegro", "Allegro Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_Allegro(); } }; #endif /* VIDEO_ALLEGRO_H */ diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h index e70a33b152..86085da62e 100644 --- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -14,7 +14,7 @@ #include "../video_driver.hpp" -class VideoDriver_Cocoa: public VideoDriver { +class VideoDriver_Cocoa : public VideoDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -61,12 +61,10 @@ public: /* virtual */ const char *GetName() const { return "cocoa"; } }; -class FVideoDriver_Cocoa: public VideoDriverFactory { +class FVideoDriver_Cocoa : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "cocoa"; } - /* virtual */ const char *GetDescription() { return "Cocoa Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_Cocoa(); } + FVideoDriver_Cocoa() : DriverFactoryBase(Driver::DT_VIDEO, 10, "cocoa", "Cocoa Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_Cocoa(); } }; diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 13264d6b1a..4df7cb0035 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -225,6 +225,80 @@ static void setupApplication() [ NSApp setDelegate:_ottd_main ]; } + +static int CDECL ModeSorter(const OTTD_Point *p1, const OTTD_Point *p2) +{ + if (p1->x < p2->x) return -1; + if (p1->x > p2->x) return +1; + if (p1->y < p2->y) return -1; + if (p1->y > p2->y) return +1; + return 0; +} + +uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int device_depth) +{ + CFArrayRef mode_list = CGDisplayAvailableModes(display_id); + CFIndex num_modes = CFArrayGetCount(mode_list); + + /* Build list of modes with the requested bpp */ + uint count = 0; + for (CFIndex i = 0; i < num_modes && count < max_modes; i++) { + int intvalue, bpp; + uint16 width, height; + + CFDictionaryRef onemode = (const __CFDictionary*)CFArrayGetValueAtIndex(mode_list, i); + CFNumberRef number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayBitsPerPixel); + CFNumberGetValue(number, kCFNumberSInt32Type, &bpp); + + if (bpp != device_depth) continue; + + number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayWidth); + CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue); + width = (uint16)intvalue; + + number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayHeight); + CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue); + height = (uint16)intvalue; + + /* Check if mode is already in the list */ + bool hasMode = false; + for (uint i = 0; i < count; i++) { + if (modes[i].x == width && modes[i].y == height) { + hasMode = true; + break; + } + } + + if (hasMode) continue; + + /* Add mode to the list */ + modes[count].x = width; + modes[count].y = height; + count++; + } + + /* Sort list smallest to largest */ + QSortT(modes, count, &ModeSorter); + + return count; +} + +/** Small function to test if the main display can display 8 bpp in fullscreen */ +bool QZ_CanDisplay8bpp() +{ + /* 8bpp modes are deprecated starting in 10.5. CoreGraphics will return them + * as available in the display list, but many features (e.g. palette animation) + * will be broken. */ + if (MacOSVersionIsAtLeast(10, 5, 0)) return false; + + OTTD_Point p; + + /* We want to know if 8 bpp is possible in fullscreen and not anything about + * resolutions. Because of this we want to fill a list of 1 resolution of 8 bpp + * on display 0 (main) and return if we found one. */ + return QZ_ListModes(&p, 1, 0, 8); +} + /** * Update the video modus. * @@ -259,7 +333,7 @@ void QZ_GameSizeChanged() _screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer(); _fullscreen = _cocoa_subdriver->IsFullscreen(); - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); GameSizeChanged(); } @@ -321,18 +395,15 @@ static CocoaSubdriver *QZ_CreateSubdriver(int width, int height, int bpp, bool f /* OSX 10.7 allows to toggle fullscreen mode differently */ if (MacOSVersionIsAtLeast(10, 7, 0)) { ret = QZ_CreateWindowSubdriver(width, height, bpp); - } else { - ret = fullscreen ? QZ_CreateFullscreenSubdriver(width, height, bpp) : QZ_CreateWindowSubdriver(width, height, bpp); + if (ret != NULL && fullscreen) ret->ToggleFullscreen(); } - - if (ret != NULL) { - /* We cannot set any fullscreen mode on OSX 10.7 when not compiled against SDK 10.7 */ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (fullscreen) { ret->ToggleFullscreen(); } -#endif - return ret; +#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9) + else { + ret = fullscreen ? QZ_CreateFullscreenSubdriver(width, height, bpp) : QZ_CreateWindowSubdriver(width, height, bpp); } +#endif /* (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9) */ + if (ret != NULL) return ret; if (!fallback) return NULL; /* Try again in 640x480 windowed */ @@ -340,7 +411,7 @@ static CocoaSubdriver *QZ_CreateSubdriver(int width, int height, int bpp, bool f ret = QZ_CreateWindowSubdriver(640, 480, bpp); if (ret != NULL) return ret; -#ifdef _DEBUG +#if defined(_DEBUG) && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9) /* This Fullscreen mode crashes on OSX 10.7 */ if (!MacOSVersionIsAtLeast(10, 7, 0)) { /* Try fullscreen too when in debug mode */ @@ -348,7 +419,7 @@ static CocoaSubdriver *QZ_CreateSubdriver(int width, int height, int bpp, bool f ret = QZ_CreateFullscreenSubdriver(640, 480, bpp); if (ret != NULL) return ret; } -#endif +#endif /* defined(_DEBUG) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9) */ return NULL; } @@ -390,7 +461,7 @@ const char *VideoDriver_Cocoa::Start(const char * const *parm) int width = _cur_resolution.width; int height = _cur_resolution.height; - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); _cocoa_subdriver = QZ_CreateSubdriver(width, height, bpp, _fullscreen, true); if (_cocoa_subdriver == NULL) { @@ -443,7 +514,7 @@ bool VideoDriver_Cocoa::ChangeResolution(int w, int h) { assert(_cocoa_subdriver != NULL); - bool ret = _cocoa_subdriver->ChangeResolution(w, h, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth()); + bool ret = _cocoa_subdriver->ChangeResolution(w, h, BlitterFactory::GetCurrentBlitter()->GetScreenDepth()); QZ_GameSizeChanged(); QZ_UpdateVideoModes(); @@ -468,7 +539,7 @@ bool VideoDriver_Cocoa::ToggleFullscreen(bool full_screen) if (full_screen != oldfs) { int width = _cocoa_subdriver->GetWidth(); int height = _cocoa_subdriver->GetHeight(); - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); delete _cocoa_subdriver; _cocoa_subdriver = NULL; @@ -502,12 +573,14 @@ bool VideoDriver_Cocoa::AfterBlitterChange() void VideoDriver_Cocoa::EditBoxLostFocus() { if (_cocoa_subdriver != NULL) { - if ([ _cocoa_subdriver->cocoaview respondsToSelector:@selector(inputContext) ]) { + if ([ _cocoa_subdriver->cocoaview respondsToSelector:@selector(inputContext) ] && [ [ _cocoa_subdriver->cocoaview performSelector:@selector(inputContext) ] respondsToSelector:@selector(discardMarkedText) ]) { [ [ _cocoa_subdriver->cocoaview performSelector:@selector(inputContext) ] performSelector:@selector(discardMarkedText) ]; } else { [ [ NSInputManager currentInputManager ] markedTextAbandoned:_cocoa_subdriver->cocoaview ]; } } + /* Clear any marked string from the current edit box. */ + HandleTextInput(NULL, true); } /** @@ -524,16 +597,16 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel _cocoa_video_dialog = true; bool wasstarted = _cocoa_video_started; - if (_video_driver == NULL) { + if (VideoDriver::GetInstance() == NULL) { setupApplication(); // Setup application before showing dialog - } else if (!_cocoa_video_started && _video_driver->Start(NULL) != NULL) { + } else if (!_cocoa_video_started && VideoDriver::GetInstance()->Start(NULL) != NULL) { fprintf(stderr, "%s: %s\n", title, message); return; } NSRunAlertPanel([ NSString stringWithUTF8String:title ], [ NSString stringWithUTF8String:message ], [ NSString stringWithUTF8String:buttonLabel ], nil, nil); - if (!wasstarted && _video_driver != NULL) _video_driver->Stop(); + if (!wasstarted && VideoDriver::GetInstance() != NULL) VideoDriver::GetInstance()->Stop(); _cocoa_video_dialog = false; } @@ -548,8 +621,8 @@ void cocoaSetApplicationBundleDir() char tmp[MAXPATHLEN]; CFURLRef url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); if (CFURLGetFileSystemRepresentation(url, true, (unsigned char*)tmp, MAXPATHLEN)) { - AppendPathSeparator(tmp, lengthof(tmp)); - _searchpaths[SP_APPLICATION_BUNDLE_DIR] = strdup(tmp); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_APPLICATION_BUNDLE_DIR] = stredup(tmp); } else { _searchpaths[SP_APPLICATION_BUNDLE_DIR] = NULL; } @@ -1015,6 +1088,140 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count) return 0; } +/** Delete single character left of the cursor. */ +- (void)deleteBackward:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_BACKSPACE, 0); +} + +/** Delete word left of the cursor. */ +- (void)deleteWordBackward:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_BACKSPACE | WKC_CTRL, 0); +} + +/** Delete single character right of the cursor. */ +- (void)deleteForward:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_DELETE, 0); +} + +/** Delete word right of the cursor. */ +- (void)deleteWordForward:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_DELETE | WKC_CTRL, 0); +} + +/** Move cursor one character left. */ +- (void)moveLeft:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_LEFT, 0); +} + +/** Move cursor one word left. */ +- (void)moveWordLeft:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_LEFT | WKC_CTRL, 0); +} + +/** Move cursor one character right. */ +- (void)moveRight:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_RIGHT, 0); +} + +/** Move cursor one word right. */ +- (void)moveWordRight:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_RIGHT | WKC_CTRL, 0); +} + +/** Move cursor one line up. */ +- (void)moveUp:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_UP, 0); +} + +/** Move cursor one line down. */ +- (void)moveDown:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_DOWN, 0); +} + +/** MScroll one line up. */ +- (void)moveUpAndModifySelection:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_UP | WKC_SHIFT, 0); +} + +/** Scroll one line down. */ +- (void)moveDownAndModifySelection:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_DOWN | WKC_SHIFT, 0); +} + +/** Move cursor to the start of the line. */ +- (void)moveToBeginningOfLine:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_HOME, 0); +} + +/** Move cursor to the end of the line. */ +- (void)moveToEndOfLine:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_END, 0); +} + +/** Scroll one page up. */ +- (void)scrollPageUp:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_PAGEUP, 0); +} + +/** Scroll one page down. */ +- (void)scrollPageDown:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_PAGEDOWN, 0); +} + +/** Move cursor (and selection) one page up. */ +- (void)pageUpAndModifySelection:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_PAGEUP | WKC_SHIFT, 0); +} + +/** Move cursor (and selection) one page down. */ +- (void)pageDownAndModifySelection:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_PAGEDOWN | WKC_SHIFT, 0); +} + +/** Scroll to the beginning of the document. */ +- (void)scrollToBeginningOfDocument:(id)sender +{ + /* For compatibility with OTTD on Win/Linux. */ + [ self moveToBeginningOfLine:sender ]; +} + +/** Scroll to the end of the document. */ +- (void)scrollToEndOfDocument:(id)sender +{ + /* For compatibility with OTTD on Win/Linux. */ + [ self moveToEndOfLine:sender ]; +} + +/** Return was pressed. */ +- (void)insertNewline:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_RETURN, '\r'); +} + +/** Escape was pressed. */ +- (void)cancelOperation:(id)sender +{ + if (EditBoxInGlobalFocus()) HandleKeypress(WKC_ESC, 0); +} + /** Invoke the selector if we implement it. */ - (void)doCommandBySelector:(SEL)aSelector { diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm index 81b9db1d24..c8d10717e3 100644 --- a/src/video/cocoa/event.mm +++ b/src/video/cocoa/event.mm @@ -34,6 +34,7 @@ #include "../../gfx_func.h" #include "../../network/network.h" #include "../../core/random_func.hpp" +#include "../../core/math_func.hpp" #include "../../texteff.hpp" #include "../../window_func.h" @@ -70,7 +71,7 @@ static uint32 _tEvent; /* Support for touch gestures is only available starting with the * 10.6 SDK, even if it says that support starts in fact with 10.5.2. * Replicate the needed stuff for older SDKs. */ -#if MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5 +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6) static const NSUInteger NSEventTypeMagnify = 30; static const NSUInteger NSEventTypeEndGesture = 20; @@ -109,7 +110,7 @@ static void QZ_WarpCursor(int x, int y) static void QZ_CheckPaletteAnim() { if (_cur_palette.count_dirty != 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); switch (blitter->UsePaletteAnimation()) { case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: @@ -271,8 +272,10 @@ static uint32 QZ_MapKey(unsigned short sym) return key; } -static void QZ_KeyEvent(unsigned short keycode, unsigned short unicode, BOOL down) +static bool QZ_KeyEvent(unsigned short keycode, unsigned short unicode, BOOL down) { + bool interpret_keys = true; + switch (keycode) { case QZ_UP: SB(_dirkeys, 1, 1, down); break; case QZ_DOWN: SB(_dirkeys, 3, 1, down); break; @@ -284,18 +287,50 @@ static void QZ_KeyEvent(unsigned short keycode, unsigned short unicode, BOOL dow case QZ_RETURN: case QZ_f: if (down && (_current_mods & NSCommandKeyMask)) { - _video_driver->ToggleFullscreen(!_fullscreen); + VideoDriver::GetInstance()->ToggleFullscreen(!_fullscreen); + } + break; + + case QZ_v: + if (down && EditBoxInGlobalFocus() && (_current_mods & (NSCommandKeyMask | NSControlKeyMask))) { + HandleKeypress(WKC_CTRL | 'V', unicode); + } + break; + case QZ_u: + if (down && EditBoxInGlobalFocus() && (_current_mods & (NSCommandKeyMask | NSControlKeyMask))) { + HandleKeypress(WKC_CTRL | 'U', unicode); } break; } if (down) { uint32 pressed_key = QZ_MapKey(keycode); - HandleKeypress(pressed_key, unicode); + + static bool console = false; + + /* The second backquote may have a character, which we don't want to interpret. */ + if (pressed_key == WKC_BACKQUOTE && (console || unicode == 0)) { + if (!console) { + /* Backquote is a dead key, require a double press for hotkey behaviour (i.e. console). */ + console = true; + return true; + } else { + /* Second backquote, don't interpret as text input. */ + interpret_keys = false; + } + } + console = false; + + /* Don't handle normal characters if an edit box has the focus. */ + if (!EditBoxInGlobalFocus() || IsInsideMM(pressed_key & ~WKC_SPECIAL_KEYS, WKC_F1, WKC_PAUSE + 1)) { + HandleKeypress(pressed_key, unicode); + } DEBUG(driver, 2, "cocoa_v: QZ_KeyEvent: %x (%x), down, mapping: %x", keycode, unicode, pressed_key); } else { DEBUG(driver, 2, "cocoa_v: QZ_KeyEvent: %x (%x), up", keycode, unicode); } + + return interpret_keys; } static void QZ_DoUnsidedModifiers(unsigned int newMods) @@ -327,22 +362,8 @@ static void QZ_DoUnsidedModifiers(unsigned int newMods) static void QZ_MouseMovedEvent(int x, int y) { - if (_cursor.fix_at) { - int dx = x - _cursor.pos.x; - int dy = y - _cursor.pos.y; - - if (dx != 0 || dy != 0) { - _cursor.delta.x += dx; - _cursor.delta.y += dy; - - QZ_WarpCursor(_cursor.pos.x, _cursor.pos.y); - } - } else { - _cursor.delta.x = x - _cursor.pos.x; - _cursor.delta.y = y - _cursor.pos.y; - _cursor.pos.x = x; - _cursor.pos.y = y; - _cursor.dirty = true; + if (_cursor.UpdateCursorPosition(x, y, false)) { + QZ_WarpCursor(_cursor.pos.x, _cursor.pos.y); } HandleMouseEvents(); } @@ -504,7 +525,7 @@ static bool QZ_PollEvent() break; #endif - case NSKeyDown: + case NSKeyDown: { /* Quit, hide and minimize */ switch ([ event keyCode ]) { case QZ_q: @@ -516,21 +537,20 @@ static bool QZ_PollEvent() break; } + chars = [ event characters ]; + unsigned short unicode = [ chars length ] > 0 ? [ chars characterAtIndex:0 ] : 0; if (EditBoxInGlobalFocus()) { - [ _cocoa_subdriver->cocoaview interpretKeyEvents:[ NSArray arrayWithObject:event ] ]; - QZ_KeyEvent([ event keyCode ], 0, YES); + if (QZ_KeyEvent([ event keyCode ], unicode, YES)) { + [ _cocoa_subdriver->cocoaview interpretKeyEvents:[ NSArray arrayWithObject:event ] ]; + } } else { - chars = [ event characters ]; - if ([ chars length ] == 0) { - QZ_KeyEvent([ event keyCode ], 0, YES); - } else { - QZ_KeyEvent([ event keyCode ], [ chars characterAtIndex:0 ], YES); - for (uint i = 1; i < [ chars length ]; i++) { - QZ_KeyEvent(0, [ chars characterAtIndex:i ], YES); - } + QZ_KeyEvent([ event keyCode ], unicode, YES); + for (uint i = 1; i < [ chars length ]; i++) { + QZ_KeyEvent(0, [ chars characterAtIndex:i ], YES); } } break; + } case NSKeyUp: /* Quit, hide and minimize */ diff --git a/src/video/cocoa/fullscreen.mm b/src/video/cocoa/fullscreen.mm index e066adfb40..860866b336 100644 --- a/src/video/cocoa/fullscreen.mm +++ b/src/video/cocoa/fullscreen.mm @@ -17,6 +17,8 @@ #include "../../stdafx.h" +#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9) + #define Rect OTTDRect #define Point OTTDPoint #import @@ -68,87 +70,13 @@ struct OTTD_QuartzGammaTable { - (void) setFrame:(NSRect)frame { /* The 64 bits libraries don't seem to know about _frame, so this hack won't work. */ -#if !__LP64__ +#ifndef __LP64__ _frame = frame; #endif } @end - -static int CDECL ModeSorter(const OTTD_Point *p1, const OTTD_Point *p2) -{ - if (p1->x < p2->x) return -1; - if (p1->x > p2->x) return +1; - if (p1->y < p2->y) return -1; - if (p1->y > p2->y) return +1; - return 0; -} - -uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int device_depth) -{ - CFArrayRef mode_list = CGDisplayAvailableModes(display_id); - CFIndex num_modes = CFArrayGetCount(mode_list); - - /* Build list of modes with the requested bpp */ - uint count = 0; - for (CFIndex i = 0; i < num_modes && count < max_modes; i++) { - int intvalue, bpp; - uint16 width, height; - - CFDictionaryRef onemode = (const __CFDictionary*)CFArrayGetValueAtIndex(mode_list, i); - CFNumberRef number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayBitsPerPixel); - CFNumberGetValue(number, kCFNumberSInt32Type, &bpp); - - if (bpp != device_depth) continue; - - number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayWidth); - CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue); - width = (uint16)intvalue; - - number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayHeight); - CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue); - height = (uint16)intvalue; - - /* Check if mode is already in the list */ - bool hasMode = false; - for (uint i = 0; i < count; i++) { - if (modes[i].x == width && modes[i].y == height) { - hasMode = true; - break; - } - } - - if (hasMode) continue; - - /* Add mode to the list */ - modes[count].x = width; - modes[count].y = height; - count++; - } - - /* Sort list smallest to largest */ - QSortT(modes, count, &ModeSorter); - - return count; -} - -/** Small function to test if the main display can display 8 bpp in fullscreen */ -bool QZ_CanDisplay8bpp() -{ - /* 8bpp modes are deprecated starting in 10.5. CoreGraphics will return them - * as available in the display list, but many features (e.g. palette animation) - * will be broken. */ - if (MacOSVersionIsAtLeast(10, 5, 0)) return false; - - OTTD_Point p; - - /* We want to know if 8 bpp is possible in fullscreen and not anything about - * resolutions. Because of this we want to fill a list of 1 resolution of 8 bpp - * on display 0 (main) and return if we found one. */ - return QZ_ListModes(&p, 1, 0, 8); -} - -class FullscreenSubdriver: public CocoaSubdriver { +class FullscreenSubdriver : public CocoaSubdriver { CGDirectDisplayID display_id; ///< 0 == main display (only support single display) CFDictionaryRef cur_mode; ///< current mode of the display CFDictionaryRef save_mode; ///< original mode of the display @@ -592,4 +520,5 @@ CocoaSubdriver *QZ_CreateFullscreenSubdriver(int width, int height, int bpp) return ret; } +#endif /* (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9) */ #endif /* WITH_COCOA */ diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm index 12021631d4..c93a1f6fb3 100644 --- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -57,7 +57,7 @@ class WindowQuartzSubdriver; - (void)drawRect:(NSRect)invalidRect; @end -class WindowQuartzSubdriver: public CocoaSubdriver { +class WindowQuartzSubdriver : public CocoaSubdriver { private: /** * This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode. diff --git a/src/video/cocoa/wnd_quickdraw.mm b/src/video/cocoa/wnd_quickdraw.mm index 17ac21c46a..df10d87739 100644 --- a/src/video/cocoa/wnd_quickdraw.mm +++ b/src/video/cocoa/wnd_quickdraw.mm @@ -45,7 +45,7 @@ class WindowQuickdrawSubdriver; -class WindowQuickdrawSubdriver: public CocoaSubdriver { +class WindowQuickdrawSubdriver : public CocoaSubdriver { private: /** * This function copies 32bpp pixels from the screen buffer in 16bpp windowed mode. diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index 4dcfbbe053..bfe853e9a0 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -99,6 +99,9 @@ static void WINAPI CheckForConsoleInput() HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); for (;;) { ReadFile(hStdin, _win_console_thread_buffer, lengthof(_win_console_thread_buffer), &nb, NULL); + if (nb >= lengthof(_win_console_thread_buffer)) nb = lengthof(_win_console_thread_buffer) - 1; + _win_console_thread_buffer[nb] = '\0'; + /* Signal input waiting that input is read and wait for it being handled * SignalObjectAndWait() should be used here, but it's unsupported in Win98< */ SetEvent(_hInputReady); @@ -131,6 +134,8 @@ static void CloseWindowsConsoleThread() #endif +#include "../safeguards.h" + static void *_dedicated_video_mem; @@ -144,14 +149,14 @@ static FVideoDriver_Dedicated iFVideoDriver_Dedicated; const char *VideoDriver_Dedicated::Start(const char * const *parm) { - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); _dedicated_video_mem = (bpp == 0) ? NULL : MallocT(_cur_resolution.width * _cur_resolution.height * (bpp / 8)); _screen.width = _screen.pitch = _cur_resolution.width; _screen.height = _cur_resolution.height; _screen.dst_ptr = _dedicated_video_mem; ScreenSizeChanged(); - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); #if defined(WINCE) /* WinCE doesn't support console stuff */ @@ -243,9 +248,7 @@ static void DedicatedHandleKeyInput() SetEvent(_hWaitForInputHandling); #endif - /* strtok() does not 'forget' \r\n if the string starts with it, - * so we have to manually remove that! */ - strtok(input_line, "\r\n"); + /* Remove trailing \r or \n */ for (char *c = input_line; *c != '\0'; c++) { if (*c == '\n' || *c == '\r' || c == lastof(input_line)) { *c = '\0'; @@ -316,7 +319,15 @@ void VideoDriver_Dedicated::MainLoop() } /* Don't sleep when fast forwarding (for desync debugging) */ - if (!_ddc_fastforward) CSleep(1); + if (!_ddc_fastforward) { + /* Sleep longer on a dedicated server, if the game is paused and no clients connected. + * That can allow the CPU to better use deep sleep states. */ + if (_pause_mode != 0 && !HasClients()) { + CSleep(100); + } else { + CSleep(1); + } + } } } diff --git a/src/video/dedicated_v.h b/src/video/dedicated_v.h index 7d449d159f..0c1477d66d 100644 --- a/src/video/dedicated_v.h +++ b/src/video/dedicated_v.h @@ -15,7 +15,7 @@ #include "video_driver.hpp" /** The dedicated server video driver. */ -class VideoDriver_Dedicated: public VideoDriver { +class VideoDriver_Dedicated : public VideoDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -33,18 +33,17 @@ public: }; /** Factory for the dedicated server video driver. */ -class FVideoDriver_Dedicated: public VideoDriverFactory { +class FVideoDriver_Dedicated : public DriverFactoryBase { public: #ifdef DEDICATED /* Automatically select this dedicated driver when making a dedicated * server build. */ - static const int priority = 10; + static const int PRIORITY = 10; #else - static const int priority = 0; + static const int PRIORITY = 0; #endif - /* virtual */ const char *GetName() { return "dedicated"; } - /* virtual */ const char *GetDescription() { return "Dedicated Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_Dedicated(); } + FVideoDriver_Dedicated() : DriverFactoryBase(Driver::DT_VIDEO, PRIORITY, "dedicated", "Dedicated Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_Dedicated(); } }; #endif /* VIDEO_DEDICATED_H */ diff --git a/src/video/null_v.cpp b/src/video/null_v.cpp index 6fdb87648d..5037814e5b 100644 --- a/src/video/null_v.cpp +++ b/src/video/null_v.cpp @@ -14,6 +14,8 @@ #include "../blitter/factory.hpp" #include "null_v.h" +#include "../safeguards.h" + /** Factory for the null video driver. */ static FVideoDriver_Null iFVideoDriver_Null; @@ -32,7 +34,7 @@ const char *VideoDriver_Null::Start(const char * const *parm) /* Do not render, nor blit */ DEBUG(misc, 1, "Forcing blitter 'null'..."); - BlitterFactoryBase::SelectBlitter("null"); + BlitterFactory::SelectBlitter("null"); return NULL; } diff --git a/src/video/null_v.h b/src/video/null_v.h index 9bc26c4ef0..9e04e177ef 100644 --- a/src/video/null_v.h +++ b/src/video/null_v.h @@ -15,7 +15,7 @@ #include "video_driver.hpp" /** The null video driver. */ -class VideoDriver_Null: public VideoDriver { +class VideoDriver_Null : public VideoDriver { private: uint ticks; ///< Amount of ticks to run. @@ -36,12 +36,10 @@ public: }; /** Factory the null video driver. */ -class FVideoDriver_Null: public VideoDriverFactory { +class FVideoDriver_Null : public DriverFactoryBase { public: - static const int priority = 0; - /* virtual */ const char *GetName() { return "null"; } - /* virtual */ const char *GetDescription() { return "Null Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_Null(); } + FVideoDriver_Null() : DriverFactoryBase(Driver::DT_VIDEO, 0, "null", "Null Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_Null(); } }; #endif /* VIDEO_NULL_H */ diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index a95e863320..ea68c21656 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -26,6 +26,8 @@ #include "sdl_v.h" #include +#include "../safeguards.h" + static FVideoDriver_SDL iFVideoDriver_SDL; static SDL_Surface *_sdl_screen; @@ -123,7 +125,7 @@ static void InitPalette() static void CheckPaletteAnim() { if (_cur_palette.count_dirty != 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); switch (blitter->UsePaletteAnimation()) { case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: @@ -270,7 +272,7 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) { SDL_Surface *newscreen, *icon; char caption[50]; - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); bool want_hwpalette; GetAvailableVideoMode(&w, &h); @@ -280,7 +282,7 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) if (bpp == 0) usererror("Can't use a blitter that blits 0 bpp for normal visuals"); char icon_path[MAX_PATH]; - if (FioFindFullPath(icon_path, lengthof(icon_path), BASESET_DIR, "openttd.32.bmp") != NULL) { + if (FioFindFullPath(icon_path, lastof(icon_path), BASESET_DIR, "openttd.32.bmp") != NULL) { /* Give the application an icon */ icon = SDL_CALL SDL_LoadBMP(icon_path); if (icon != NULL) { @@ -315,7 +317,7 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) * (which we can't force in 8bpp on 8bpp mode, * unfortunately). */ - want_hwpalette = (bpp == 8 && _fullscreen); + want_hwpalette = bpp == 8 && _fullscreen && _support8bpp == S8BPP_HARDWARE; } else { /* User specified a value manually */ want_hwpalette = _use_hwpalette; @@ -398,7 +400,7 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) * appropriate event to know this. */ if (_fullscreen) _cursor.in_window = true; - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); blitter->PostResize(); InitPalette(); @@ -409,14 +411,14 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) break; case Blitter::PALETTE_ANIMATION_BLITTER: - if (_video_driver != NULL) blitter->PaletteAnimate(_local_palette); + if (VideoDriver::GetInstance() != NULL) blitter->PaletteAnimate(_local_palette); break; default: NOT_REACHED(); } - snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision); + seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision); SDL_CALL SDL_WM_SetCaption(caption, caption); GameSizeChanged(); @@ -543,20 +545,8 @@ int VideoDriver_SDL::PollEvent() switch (ev.type) { case SDL_MOUSEMOTION: - if (_cursor.fix_at) { - int dx = ev.motion.x - _cursor.pos.x; - int dy = ev.motion.y - _cursor.pos.y; - if (dx != 0 || dy != 0) { - _cursor.delta.x = dx; - _cursor.delta.y = dy; - SDL_CALL SDL_WarpMouse(_cursor.pos.x, _cursor.pos.y); - } - } else { - _cursor.delta.x = ev.motion.x - _cursor.pos.x; - _cursor.delta.y = ev.motion.y - _cursor.pos.y; - _cursor.pos.x = ev.motion.x; - _cursor.pos.y = ev.motion.y; - _cursor.dirty = true; + if (_cursor.UpdateCursorPosition(ev.motion.x, ev.motion.y, true)) { + SDL_CALL SDL_WarpMouse(_cursor.pos.x, _cursor.pos.y); } HandleMouseEvents(); break; @@ -817,27 +807,34 @@ void VideoDriver_SDL::MainLoop() bool VideoDriver_SDL::ChangeResolution(int w, int h) { - if (_draw_mutex != NULL) _draw_mutex->BeginCritical(); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); bool ret = CreateMainSurface(w, h); - if (_draw_mutex != NULL) _draw_mutex->EndCritical(); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); return ret; } bool VideoDriver_SDL::ToggleFullscreen(bool fullscreen) { + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); _fullscreen = fullscreen; GetVideoModes(); // get the list of available video modes - if (_num_resolutions == 0 || !CreateMainSurface(_cur_resolution.width, _cur_resolution.height)) { + bool ret = _num_resolutions != 0 && CreateMainSurface(_cur_resolution.width, _cur_resolution.height); + + if (!ret) { /* switching resolution failed, put back full_screen to original status */ _fullscreen ^= true; - return false; } - return true; + + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); + return ret; } bool VideoDriver_SDL::AfterBlitterChange() { - return this->ChangeResolution(_screen.width, _screen.height); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); + bool ret = CreateMainSurface(_screen.width, _screen.height); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); + return ret; } #endif /* WITH_SDL */ diff --git a/src/video/sdl_v.h b/src/video/sdl_v.h index 66f8bf8564..730f82b93f 100644 --- a/src/video/sdl_v.h +++ b/src/video/sdl_v.h @@ -15,7 +15,7 @@ #include "video_driver.hpp" /** The SDL video driver. */ -class VideoDriver_SDL: public VideoDriver { +class VideoDriver_SDL : public VideoDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -41,12 +41,10 @@ private: }; /** Factory for the SDL video driver. */ -class FVideoDriver_SDL: public VideoDriverFactory { +class FVideoDriver_SDL : public DriverFactoryBase { public: - static const int priority = 5; - /* virtual */ const char *GetName() { return "sdl"; } - /* virtual */ const char *GetDescription() { return "SDL Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_SDL(); } + FVideoDriver_SDL() : DriverFactoryBase(Driver::DT_VIDEO, 5, "sdl", "SDL Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_SDL(); } }; #endif /* VIDEO_SDL_H */ diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp index d8249b1f77..916044d358 100644 --- a/src/video/video_driver.hpp +++ b/src/video/video_driver.hpp @@ -16,7 +16,7 @@ #include "../core/geometry_type.hpp" /** The base of all video drivers. */ -class VideoDriver: public Driver { +class VideoDriver : public Driver { public: /** * Mark a particular area dirty. @@ -78,28 +78,15 @@ public: * An edit box lost the input focus. Abort character compositing if necessary. */ virtual void EditBoxLostFocus() {} -}; - -/** Base of the factory for the video drivers. */ -class VideoDriverFactoryBase: public DriverFactoryBase { -}; - -/** - * Factory for the video drivers. - * @tparam T The type of the video factory to register. - */ -template -class VideoDriverFactory: public VideoDriverFactoryBase { -public: - VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO, ((T *)this)->priority); } /** - * Get the long, human readable, name for the Driver-class. + * Get the currently active instance of the video driver. */ - const char *GetName(); + static VideoDriver *GetInstance() { + return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_VIDEO)); + } }; -extern VideoDriver *_video_driver; extern char *_ini_videodriver; extern int _num_resolutions; extern Dimension _resolutions[32]; diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 2e7b409027..4dcc9eb703 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -27,6 +27,8 @@ #include #include +#include "../safeguards.h" + /* Missing define in MinGW headers. */ #ifndef MAPVK_VK_TO_CHAR #define MAPVK_VK_TO_CHAR (2) @@ -50,7 +52,6 @@ static struct { bool _force_full_redraw; bool _window_maximize; uint _display_hz; -uint _fullscreen_bpp; static Dimension _bck_resolution; #if !defined(WINCE) || _WIN32_WCE >= 0x400 DWORD _imm_props; @@ -62,6 +63,8 @@ static bool _draw_threaded; static ThreadObject *_draw_thread = NULL; /** Mutex to keep the access to the shared memory controlled. */ static ThreadMutex *_draw_mutex = NULL; +/** Event that is signaled when the drawing thread has finished initializing. */ +static HANDLE _draw_thread_initialized = NULL; /** Should we keep continue drawing? */ static volatile bool _draw_continue; /** Local copy of the palette for use in the drawing thread. */ @@ -184,23 +187,14 @@ static void ClientSizeChanged(int w, int h) { /* allocate new dib section of the new size */ if (AllocateDibSection(w, h)) { - if (_draw_mutex != NULL) _draw_mutex->BeginCritical(); /* mark all palette colours dirty */ _cur_palette.first_dirty = 0; _cur_palette.count_dirty = 256; _local_palette = _cur_palette; - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); GameSizeChanged(); - - /* redraw screen */ - if (_wnd.running) { - _screen.dst_ptr = _wnd.buffer_bits; - UpdateWindows(); - } - - if (_draw_mutex != NULL) _draw_mutex->EndCritical(); } } @@ -214,7 +208,6 @@ int RedrawScreenDebug() HBITMAP old_bmp; HPALETTE old_palette; - _screen.dst_ptr = _wnd.buffer_bits; UpdateWindows(); dc = GetDC(_wnd.main_wnd); @@ -278,23 +271,21 @@ bool VideoDriver_Win32::MakeWindow(bool full_screen) if (full_screen) { DEVMODE settings; - /* Make sure we are always at least the screen-depth of the blitter */ - if (_fullscreen_bpp < BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth()) _fullscreen_bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); - memset(&settings, 0, sizeof(settings)); settings.dmSize = sizeof(settings); settings.dmFields = - (_fullscreen_bpp != 0 ? DM_BITSPERPEL : 0) | + DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | (_display_hz != 0 ? DM_DISPLAYFREQUENCY : 0); - settings.dmBitsPerPel = _fullscreen_bpp; + settings.dmBitsPerPel = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); settings.dmPelsWidth = _wnd.width_org; settings.dmPelsHeight = _wnd.height_org; settings.dmDisplayFrequency = _display_hz; /* Check for 8 bpp support. */ - if (settings.dmBitsPerPel != 32 && ChangeDisplaySettings(&settings, CDS_FULLSCREEN | CDS_TEST) != DISP_CHANGE_SUCCESSFUL) { + if (settings.dmBitsPerPel == 8 && + (_support8bpp != S8BPP_HARDWARE || ChangeDisplaySettings(&settings, CDS_FULLSCREEN | CDS_TEST) != DISP_CHANGE_SUCCESSFUL)) { settings.dmBitsPerPel = 32; } @@ -360,7 +351,7 @@ bool VideoDriver_Win32::MakeWindow(bool full_screen) } } - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); GameSizeChanged(); // invalidate all windows, force redraw return true; // the request succeeded @@ -374,7 +365,7 @@ static void PaintWindow(HDC dc) HPALETTE old_palette = SelectPalette(dc, _wnd.gdi_palette, FALSE); if (_cur_palette.count_dirty != 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); switch (blitter->UsePaletteAnimation()) { case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: @@ -404,11 +395,7 @@ static void PaintWindowThread(void *) { /* First tell the main thread we're started */ _draw_mutex->BeginCritical(); - _draw_mutex->SendSignal(); - - /* Do our best to make sure the main thread is the one that - * gets the signal, and not our wait below. */ - Sleep(0); + SetEvent(_draw_thread_initialized); /* Now wait for the first thing to draw! */ _draw_mutex->WaitForSignal(); @@ -758,29 +745,13 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP if (!_cursor.in_window) { _cursor.in_window = true; SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, (TIMERPROC)TrackMouseTimerProc); - - DrawMouseCursor(); } - if (_cursor.fix_at) { - int dx = x - _cursor.pos.x; - int dy = y - _cursor.pos.y; - if (dx != 0 || dy != 0) { - _cursor.delta.x = dx; - _cursor.delta.y = dy; - - pt.x = _cursor.pos.x; - pt.y = _cursor.pos.y; - - ClientToScreen(hwnd, &pt); - SetCursorPos(pt.x, pt.y); - } - } else { - _cursor.delta.x = x - _cursor.pos.x; - _cursor.delta.y = y - _cursor.pos.y; - _cursor.pos.x = x; - _cursor.pos.y = y; - _cursor.dirty = true; + if (_cursor.UpdateCursorPosition(x, y, true)) { + pt.x = _cursor.pos.x; + pt.y = _cursor.pos.y; + ClientToScreen(hwnd, &pt); + SetCursorPos(pt.x, pt.y); } MyShowCursor(false); HandleMouseEvents(); @@ -852,7 +823,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP case WM_KEYDOWN: { /* No matter the keyboard layout, we will map the '~' to the console. */ uint scancode = GB(lParam, 16, 8); - keycode = scancode == 41 ? WKC_BACKQUOTE : MapWindowsKey(wParam); + keycode = scancode == 41 ? (uint)WKC_BACKQUOTE : MapWindowsKey(wParam); /* Silently drop all messages handled by WM_CHAR. */ MSG msg; @@ -1017,7 +988,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP if (active && minimized) { /* Restore the game window */ ShowWindow(hwnd, SW_RESTORE); - static_cast(_video_driver)->MakeWindow(true); + static_cast(VideoDriver::GetInstance())->MakeWindow(true); } else if (!active && !minimized) { /* Minimise the window and restore desktop */ ShowWindow(hwnd, SW_MINIMIZE); @@ -1060,7 +1031,7 @@ static bool AllocateDibSection(int w, int h, bool force) { BITMAPINFO *bi; HDC dc; - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + uint bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); w = max(w, 64); h = max(h, 64); @@ -1069,9 +1040,6 @@ static bool AllocateDibSection(int w, int h, bool force) if (!force && w == _screen.width && h == _screen.height) return false; - _screen.width = w; - _screen.pitch = (bpp == 8) ? Align(w, 4) : w; - _screen.height = h; bi = (BITMAPINFO*)alloca(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); memset(bi, 0, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); @@ -1080,7 +1048,7 @@ static bool AllocateDibSection(int w, int h, bool force) bi->bmiHeader.biHeight = -(_wnd.height = h); bi->bmiHeader.biPlanes = 1; - bi->bmiHeader.biBitCount = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + bi->bmiHeader.biBitCount = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); bi->bmiHeader.biCompression = BI_RGB; if (_wnd.dib_sect) DeleteObject(_wnd.dib_sect); @@ -1090,6 +1058,11 @@ static bool AllocateDibSection(int w, int h, bool force) if (_wnd.dib_sect == NULL) usererror("CreateDIBSection failed"); ReleaseDC(0, dc); + _screen.width = w; + _screen.pitch = (bpp == 8) ? Align(w, 4) : w; + _screen.height = h; + _screen.dst_ptr = _wnd.buffer_bits; + return true; } @@ -1117,11 +1090,14 @@ static void FindResolutions() uint i; DEVMODEA dm; + /* Check modes for the relevant fullscreen bpp */ + uint bpp = _support8bpp != S8BPP_HARDWARE ? 32 : BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); + /* XXX - EnumDisplaySettingsW crashes with unicows.dll on Windows95 * Doesn't really matter since we don't pass a string anyways, but still * a letdown */ for (i = 0; EnumDisplaySettingsA(NULL, i, &dm) != 0; i++) { - if (dm.dmBitsPerPel == BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() && + if (dm.dmBitsPerPel == bpp && dm.dmPelsWidth >= 640 && dm.dmPelsHeight >= 480) { uint j; @@ -1218,24 +1194,24 @@ void VideoDriver_Win32::MainLoop() /* Initialise the mutex first, because that's the thing we *need* * directly in the newly created thread. */ _draw_mutex = ThreadMutex::New(); - if (_draw_mutex == NULL) { + _draw_thread_initialized = CreateEvent(NULL, FALSE, FALSE, NULL); + if (_draw_mutex == NULL || _draw_thread_initialized == NULL) { _draw_threaded = false; } else { - _draw_mutex->BeginCritical(); _draw_continue = true; - _draw_threaded = ThreadObject::New(&PaintWindowThread, NULL, &_draw_thread); /* Free the mutex if we won't be able to use it. */ if (!_draw_threaded) { - _draw_mutex->EndCritical(); delete _draw_mutex; _draw_mutex = NULL; + CloseHandle(_draw_thread_initialized); + _draw_thread_initialized = NULL; } else { DEBUG(driver, 1, "Threaded drawing enabled"); - - /* Wait till the draw mutex has started itself. */ - _draw_mutex->WaitForSignal(); + /* Wait till the draw thread has started itself. */ + WaitForSingleObject(_draw_thread_initialized, INFINITE); + _draw_mutex->BeginCritical(); } } } @@ -1303,7 +1279,6 @@ void VideoDriver_Win32::MainLoop() if (_force_full_redraw) MarkWholeScreenDirty(); - _screen.dst_ptr = _wnd.buffer_bits; UpdateWindows(); CheckPaletteAnim(); } else { @@ -1317,7 +1292,6 @@ void VideoDriver_Win32::MainLoop() Sleep(1); if (_draw_threaded) _draw_mutex->BeginCritical(); - _screen.dst_ptr = _wnd.buffer_bits; NetworkDrawChatMessage(); DrawMouseCursor(); } @@ -1331,6 +1305,7 @@ void VideoDriver_Win32::MainLoop() _draw_mutex->EndCritical(); _draw_thread->Join(); + CloseHandle(_draw_thread_initialized); delete _draw_mutex; delete _draw_thread; } @@ -1338,27 +1313,38 @@ void VideoDriver_Win32::MainLoop() bool VideoDriver_Win32::ChangeResolution(int w, int h) { + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); if (_window_maximize) ShowWindow(_wnd.main_wnd, SW_SHOWNORMAL); _wnd.width = _wnd.width_org = w; _wnd.height = _wnd.height_org = h; - return this->MakeWindow(_fullscreen); // _wnd.fullscreen screws up ingame resolution switching + bool ret = this->MakeWindow(_fullscreen); // _wnd.fullscreen screws up ingame resolution switching + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); + return ret; } bool VideoDriver_Win32::ToggleFullscreen(bool full_screen) { - return this->MakeWindow(full_screen); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); + bool ret = this->MakeWindow(full_screen); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); + return ret; } bool VideoDriver_Win32::AfterBlitterChange() { - return AllocateDibSection(_screen.width, _screen.height, true) && this->MakeWindow(_fullscreen); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); + bool ret = AllocateDibSection(_screen.width, _screen.height, true) && this->MakeWindow(_fullscreen); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); + return ret; } void VideoDriver_Win32::EditBoxLostFocus() { + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); CancelIMEComposition(_wnd.main_wnd); SetCompositionPos(_wnd.main_wnd); SetCandidatePos(_wnd.main_wnd); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(true); } diff --git a/src/video/win32_v.h b/src/video/win32_v.h index 6be60c2300..21d59185b9 100644 --- a/src/video/win32_v.h +++ b/src/video/win32_v.h @@ -15,7 +15,7 @@ #include "video_driver.hpp" /** The video driver for windows. */ -class VideoDriver_Win32: public VideoDriver { +class VideoDriver_Win32 : public VideoDriver { public: /* virtual */ const char *Start(const char * const *param); @@ -41,12 +41,10 @@ public: }; /** The factory for Windows' video driver. */ -class FVideoDriver_Win32: public VideoDriverFactory { +class FVideoDriver_Win32 : public DriverFactoryBase { public: - static const int priority = 10; - /* virtual */ const char *GetName() { return "win32"; } - /* virtual */ const char *GetDescription() { return "Win32 GDI Video Driver"; } - /* virtual */ Driver *CreateInstance() { return new VideoDriver_Win32(); } + FVideoDriver_Win32() : DriverFactoryBase(Driver::DT_VIDEO, 10, "win32", "Win32 GDI Video Driver") {} + /* virtual */ Driver *CreateInstance() const { return new VideoDriver_Win32(); } }; #endif /* VIDEO_WIN32_H */ diff --git a/src/viewport.cpp b/src/viewport.cpp index da04740934..a1bb2c81d1 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -26,6 +26,42 @@ * \endverbatim */ +/** + * @defgroup vp_column_row Rows and columns in the viewport + * + * Columns are vertical sections of the viewport that are half a tile wide. + * The origin, i.e. column 0, is through the northern and southern most tile. + * This means that the column of e.g. Tile(0, 0) and Tile(100, 100) are in + * column number 0. The negative columns are towards the left of the screen, + * or towards the west, whereas the positive ones are towards respectively + * the right and east. + * With half a tile wide is meant that the next column of tiles directly west + * or east of the centre line are respectively column -1 and 1. Their tile + * centers are only half a tile from the center of their adjoining tile when + * looking only at the X-coordinate. + * + * \verbatim + * ╳ * + * ╱ ╲ * + * ╳ 0 ╳ * + * ╱ ╲ ╱ ╲ * + * ╳-1 ╳ 1 ╳ * + * ╱ ╲ ╱ ╲ ╱ ╲ * + * ╳-2 ╳ 0 ╳ 2 ╳ * + * ╲ ╱ ╲ ╱ ╲ ╱ * + * ╳-1 ╳ 1 ╳ * + * ╲ ╱ ╲ ╱ * + * ╳ 0 ╳ * + * ╲ ╱ * + * ╳ * + * \endverbatim + * + * + * Rows are horizontal sections of the viewport, also half a tile wide. + * This time the nothern most tile on the map defines 0 and + * everything south of that has a positive number. + */ + #include "stdafx.h" #include "landscape.h" #include "viewport_func.h" @@ -46,12 +82,24 @@ #include "tilehighlight_func.h" #include "window_gui.h" #include "linkgraph/linkgraph_gui.h" +#include "viewport_sprite_sorter.h" +#include "bridge_map.h" + +#include #include "table/strings.h" -#include "table/palettes.h" +#include "table/string_colours.h" + +#include "safeguards.h" Point _tile_fract_coords; + +static const int MAX_TILE_EXTENT_LEFT = ZOOM_LVL_BASE * TILE_PIXELS; ///< Maximum left extent of tile relative to north corner. +static const int MAX_TILE_EXTENT_RIGHT = ZOOM_LVL_BASE * TILE_PIXELS; ///< Maximum right extent of tile relative to north corner. +static const int MAX_TILE_EXTENT_TOP = ZOOM_LVL_BASE * MAX_BUILDING_PIXELS; ///< Maximum top extent of tile relative to north corner (not considering bridges). +static const int MAX_TILE_EXTENT_BOTTOM = ZOOM_LVL_BASE * (TILE_PIXELS + 2 * TILE_HEIGHT); ///< Maximum bottom extent of tile relative to north corner (worst case: #SLOPE_STEEP_N). + struct StringSpriteToDraw { StringID string; Colours colour; @@ -78,29 +126,6 @@ struct ChildScreenSpriteToDraw { int next; ///< next child to draw (-1 at the end) }; -/** Parent sprite that should be drawn */ -struct ParentSpriteToDraw { - SpriteID image; ///< sprite to draw - PaletteID pal; ///< palette to use - const SubSprite *sub; ///< only draw a rectangular part of the sprite - - int32 x; ///< screen X coordinate of sprite - int32 y; ///< screen Y coordinate of sprite - - 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 - - int32 xmin; ///< minimal world X coordinate of bounding box - int32 xmax; ///< maximal world X coordinate of bounding box - int32 ymin; ///< minimal world Y coordinate of bounding box - int32 ymax; ///< maximal world Y coordinate of bounding box - int zmin; ///< minimal world Z coordinate of bounding box - int zmax; ///< maximal world Z coordinate of bounding box - - int first_child; ///< the first child to draw. - bool comparison_done; ///< Used during sprite sorting: true if sprite has been compared with all other sprites -}; - /** Enumeration of multi-part foundations */ enum FoundationPart { FOUNDATION_PART_NONE = 0xFF, ///< Neither foundation nor groundsprite drawn yet. @@ -122,7 +147,6 @@ enum SpriteCombineMode { typedef SmallVector TileSpriteToDrawVector; typedef SmallVector StringSpriteToDrawVector; typedef SmallVector ParentSpriteToDrawVector; -typedef SmallVector ParentSpriteToSortVector; typedef SmallVector ChildScreenSpriteToDrawVector; /** Data structure storing rendering information */ @@ -154,6 +178,7 @@ static TileInfo *_cur_ti; bool _draw_bounding_boxes = false; bool _draw_dirty_blocks = false; uint _dirty_block_colour = 0; +static VpSpriteSorter _vp_sprite_sorter = NULL; static Point MapXYZToViewport(const ViewPort *vp, int x, int y, int z) { @@ -225,8 +250,8 @@ void InitializeWindowViewport(Window *w, int x, int y, vp->overlay = NULL; w->viewport = vp; - vp->virtual_left = 0;//pt.x; - vp->virtual_top = 0;//pt.y; + vp->virtual_left = 0; // pt.x; + vp->virtual_top = 0; // pt.y; } static Point _vp_move_offs; @@ -374,9 +399,10 @@ ViewPort *IsPtInWindowViewport(const Window *w, int x, int y) * @param vp Viewport that contains the (\a x, \a y) screen coordinate * @param x Screen x coordinate * @param y Screen y coordinate + * @param clamp_to_map Clamp the coordinate outside of the map to the closest tile within the map. * @return Tile coordinate */ -static Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y) +Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y, bool clamp_to_map) { Point pt; int a, b; @@ -394,11 +420,15 @@ static Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y) a = y - x; b = y + x; - /* we need to move variables in to the valid range, as the - * GetTileZoomCenterWindow() function can call here with invalid x and/or y, - * when the user tries to zoom out along the sides of the map */ - a = Clamp(a, -4 * (int)TILE_SIZE, (int)(MapMaxX() * TILE_SIZE) - 1); - b = Clamp(b, -4 * (int)TILE_SIZE, (int)(MapMaxY() * TILE_SIZE) - 1); + if (clamp_to_map) { + /* Bring the coordinates near to a valid range. This is mostly due to the + * tiles on the north side of the map possibly being drawn too high due to + * the extra height levels. So at the top we allow a number of extra tiles. + * This number is based on the tile height and pixels. */ + int extra_tiles = CeilDiv(_settings_game.construction.max_heightlevel * TILE_HEIGHT, TILE_PIXELS); + a = Clamp(a, -extra_tiles * TILE_SIZE, MapMaxX() * TILE_SIZE - 1); + b = Clamp(b, -extra_tiles * TILE_SIZE, MapMaxY() * TILE_SIZE - 1); + } /* (a, b) is the X/Y-world coordinate that belongs to (x,y) if the landscape would be completely flat on height 0. * Now find the Z-world coordinate by fix point iteration. @@ -415,8 +445,13 @@ static Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y) for (int malus = 3; malus > 0; malus--) z = GetSlopePixelZ(Clamp(a + max(z, malus) - malus, min_coord, MapMaxX() * TILE_SIZE - 1), Clamp(b + max(z, malus) - malus, min_coord, MapMaxY() * TILE_SIZE - 1)) / 2; for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(a + z, min_coord, MapMaxX() * TILE_SIZE - 1), Clamp(b + z, min_coord, MapMaxY() * TILE_SIZE - 1)) / 2; - pt.x = Clamp(a + z, min_coord, MapMaxX() * TILE_SIZE - 1); - pt.y = Clamp(b + z, min_coord, MapMaxY() * TILE_SIZE - 1); + if (clamp_to_map) { + pt.x = Clamp(a + z, min_coord, MapMaxX() * TILE_SIZE - 1); + pt.y = Clamp(b + z, min_coord, MapMaxY() * TILE_SIZE - 1); + } else { + pt.x = a + z; + pt.y = b + z; + } return pt; } @@ -1042,91 +1077,133 @@ draw_inner: } } -static void ViewportAddLandscape() +/** + * Returns the y coordinate in the viewport coordinate system where the given + * tile is painted. + * @param tile Any tile. + * @return The viewport y coordinate where the tile is painted. + */ +static int GetViewportY(Point tile) { - int x, y, width, height; - TileInfo ti; - bool direction; - - _cur_ti = &ti; + /* Each increment in X or Y direction moves down by half a tile, i.e. TILE_PIXELS / 2. */ + return (tile.y * (int)(TILE_PIXELS / 2) + tile.x * (int)(TILE_PIXELS / 2) - TilePixelHeightOutsideMap(tile.x, tile.y)) << ZOOM_LVL_SHIFT; +} - /* Transform into tile coordinates and round to closest full tile */ - x = ((_vd.dpi.top >> (1 + ZOOM_LVL_SHIFT)) - (_vd.dpi.left >> (2 + ZOOM_LVL_SHIFT))) & ~TILE_UNIT_MASK; - y = ((_vd.dpi.top >> (1 + ZOOM_LVL_SHIFT)) + (_vd.dpi.left >> (2 + ZOOM_LVL_SHIFT)) - TILE_SIZE) & ~TILE_UNIT_MASK; +/** + * Add the landscape to the viewport, i.e. all ground tiles and buildings. + */ +static void ViewportAddLandscape() +{ + assert(_vd.dpi.top <= _vd.dpi.top + _vd.dpi.height); + assert(_vd.dpi.left <= _vd.dpi.left + _vd.dpi.width); - /* determine size of area */ - { - Point pt = RemapCoords(x, y, 241); - width = (_vd.dpi.left + _vd.dpi.width - pt.x + 96 * ZOOM_LVL_BASE - 1) >> (6 + ZOOM_LVL_SHIFT); - height = (_vd.dpi.top + _vd.dpi.height - pt.y) >> (5 + ZOOM_LVL_SHIFT) << 1; - } + Point upper_left = InverseRemapCoords(_vd.dpi.left, _vd.dpi.top); + Point upper_right = InverseRemapCoords(_vd.dpi.left + _vd.dpi.width, _vd.dpi.top); - assert(width > 0); - assert(height > 0); + /* Transformations between tile coordinates and viewport rows/columns: See vp_column_row + * column = y - x + * row = x + y + * x = (row - column) / 2 + * y = (row + column) / 2 + * Note: (row, columns) pairs are only valid, if they are both even or both odd. + */ - direction = false; + /* Columns overlap with neighbouring columns by a half tile. + * - Left column is column of upper_left (rounded down) and one column to the left. + * - Right column is column of upper_right (rounded up) and one column to the right. + * Note: Integer-division does not round down for negative numbers, so ensure rounding with another increment/decrement. + */ + int left_column = (upper_left.y - upper_left.x) / (int)TILE_SIZE - 2; + int right_column = (upper_right.y - upper_right.x) / (int)TILE_SIZE + 2; - do { - int width_cur = width; - uint x_cur = x; - uint y_cur = y; + int potential_bridge_height = ZOOM_LVL_BASE * TILE_HEIGHT * _settings_game.construction.max_bridge_height; - do { - TileType tt = MP_VOID; + /* Rows overlap with neighbouring rows by a half tile. + * The first row that could possibly be visible is the row above upper_left (if it is at height 0). + * Due to integer-division not rounding down for negative numbers, we need another decrement. + */ + int row = (upper_left.x + upper_left.y) / (int)TILE_SIZE - 2; + bool last_row = false; + for (; !last_row; row++) { + last_row = true; + for (int column = left_column; column <= right_column; column++) { + /* Valid row/column? */ + if ((row + column) % 2 != 0) continue; + + Point tilecoord; + tilecoord.x = (row - column) / 2; + tilecoord.y = (row + column) / 2; + assert(column == tilecoord.y - tilecoord.x); + assert(row == tilecoord.y + tilecoord.x); + + TileType tile_type; + TileInfo tile_info; + _cur_ti = &tile_info; + tile_info.x = tilecoord.x * TILE_SIZE; // FIXME tile_info should use signed integers + tile_info.y = tilecoord.y * TILE_SIZE; + + if (IsInsideBS(tilecoord.x, 0, MapSizeX()) && IsInsideBS(tilecoord.y, 0, MapSizeY())) { + /* This includes the south border at MapMaxX / MapMaxY. When terraforming we still draw tile selections there. */ + tile_info.tile = TileXY(tilecoord.x, tilecoord.y); + tile_type = GetTileType(tile_info.tile); + } else { + tile_info.tile = INVALID_TILE; + tile_type = MP_VOID; + } - ti.x = x_cur; - ti.y = y_cur; + if (tile_type != MP_VOID) { + /* We are inside the map => paint landscape. */ + tile_info.tileh = GetTilePixelSlope(tile_info.tile, &tile_info.z); + } else { + /* We are outside the map => paint black. */ + tile_info.tileh = GetTilePixelSlopeOutsideMap(tilecoord.x, tilecoord.y, &tile_info.z); + } - ti.z = 0; + int viewport_y = GetViewportY(tilecoord); - ti.tileh = SLOPE_FLAT; - ti.tile = INVALID_TILE; + if (viewport_y + MAX_TILE_EXTENT_BOTTOM < _vd.dpi.top) { + /* The tile in this column is not visible yet. + * Tiles in other columns may be visible, but we need more rows in any case. */ + last_row = false; + continue; + } - if (x_cur < MapMaxX() * TILE_SIZE && - y_cur < MapMaxY() * TILE_SIZE) { - TileIndex tile = TileVirtXY(x_cur, y_cur); + int min_visible_height = viewport_y - (_vd.dpi.top + _vd.dpi.height); + bool tile_visible = min_visible_height <= 0; - if (!_settings_game.construction.freeform_edges || (TileX(tile) != 0 && TileY(tile) != 0)) { - if (x_cur == ((int)MapMaxX() - 1) * TILE_SIZE || y_cur == ((int)MapMaxY() - 1) * TILE_SIZE) { - uint maxh = max(TileHeight(tile), 1); - for (uint h = 0; h < maxh; h++) { - AddTileSpriteToDraw(SPR_SHADOW_CELL, PAL_NONE, ti.x, ti.y, h * TILE_HEIGHT); - } - } + if (tile_type != MP_VOID) { + /* Is tile with buildings visible? */ + if (min_visible_height < MAX_TILE_EXTENT_TOP) tile_visible = true; - ti.tile = tile; - ti.tileh = GetTilePixelSlope(tile, &ti.z); - tt = GetTileType(tile); + if (IsBridgeAbove(tile_info.tile)) { + /* Is the bridge visible? */ + TileIndex bridge_tile = GetNorthernBridgeEnd(tile_info.tile); + int bridge_height = ZOOM_LVL_BASE * (GetBridgePixelHeight(bridge_tile) - TilePixelHeight(tile_info.tile)); + if (min_visible_height < bridge_height + MAX_TILE_EXTENT_TOP) tile_visible = true; } - } - - _vd.foundation_part = FOUNDATION_PART_NONE; - _vd.foundation[0] = -1; - _vd.foundation[1] = -1; - _vd.last_foundation_child[0] = NULL; - _vd.last_foundation_child[1] = NULL; - _tile_type_procs[tt]->draw_tile_proc(&ti); - - if ((x_cur == (int)MapMaxX() * TILE_SIZE && IsInsideMM(y_cur, 0, MapMaxY() * TILE_SIZE + 1)) || - (y_cur == (int)MapMaxY() * TILE_SIZE && IsInsideMM(x_cur, 0, MapMaxX() * TILE_SIZE + 1))) { - TileIndex tile = TileVirtXY(x_cur, y_cur); - ti.tile = tile; - ti.tileh = GetTilePixelSlope(tile, &ti.z); - tt = GetTileType(tile); + /* Would a higher bridge on a more southern tile be visible? + * If yes, we need to loop over more rows to possibly find one. */ + if (min_visible_height < potential_bridge_height + MAX_TILE_EXTENT_TOP) last_row = false; + } else { + /* Outside of map. If we are on the north border of the map, there may still be a bridge visible, + * so we need to loop over more rows to possibly find one. */ + if ((tilecoord.x <= 0 || tilecoord.y <= 0) && min_visible_height < potential_bridge_height + MAX_TILE_EXTENT_TOP) last_row = false; } - if (ti.tile != INVALID_TILE) DrawTileSelection(&ti); - y_cur += 0x10; - x_cur -= 0x10; - } while (--width_cur); + if (tile_visible) { + last_row = false; + _vd.foundation_part = FOUNDATION_PART_NONE; + _vd.foundation[0] = -1; + _vd.foundation[1] = -1; + _vd.last_foundation_child[0] = NULL; + _vd.last_foundation_child[1] = NULL; - if ((direction ^= 1) != 0) { - y += 0x10; - } else { - x += 0x10; + _tile_type_procs[tile_type]->draw_tile_proc(&tile_info); + if (tile_info.tile != INVALID_TILE) DrawTileSelection(&tile_info); + } } - } while (--height); + } } /** @@ -1232,8 +1309,9 @@ static void ViewportAddSigns(DrawPixelInfo *dpi) * @param center the (preferred) center of the viewport sign * @param top the new top of the sign * @param str the string to show in the sign + * @param str_small the string to show when zoomed out. STR_NULL means same as \a str */ -void ViewportSign::UpdatePosition(int center, int top, StringID str) +void ViewportSign::UpdatePosition(int center, int top, StringID str, StringID str_small) { if (this->width_normal != 0) this->MarkDirty(); @@ -1246,6 +1324,9 @@ void ViewportSign::UpdatePosition(int center, int top, StringID str) this->center = center; /* zoomed out version */ + if (str_small != STR_NULL) { + GetString(buffer, str_small, lastof(buffer)); + } this->width_small = VPSM_LEFT + Align(GetStringBoundingBox(buffer, FS_SMALL).width, 2) + VPSM_RIGHT; this->MarkDirty(); @@ -1288,6 +1369,12 @@ static void ViewportDrawTileSprites(const TileSpriteToDrawVector *tstdv) } } +/** This fallback sprite checker always exists. */ +static bool ViewportSortParentSpritesChecker() +{ + return true; +} + /** Sort parent sprites pointer array */ static void ViewportSortParentSprites(ParentSpriteToSortVector *psdv) { @@ -1388,7 +1475,7 @@ static void ViewportDrawBoundingBoxes(const ParentSpriteToSortVector *psd) */ static void ViewportDrawDirtyBlocks() { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const DrawPixelInfo *dpi = _cur_dpi; void *dst; int right = UnScaleByZoom(dpi->width, dpi->zoom); @@ -1423,17 +1510,14 @@ static void ViewportDrawStrings(ZoomLevel zoom, const StringSpriteToDrawVector * /* Do not draw signs nor station names if they are set invisible */ if (IsInvisibilitySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) continue; - /* if we didn't draw a rectangle, or if transperant building is on, - * draw the text in the colour the rectangle would have */ if (IsTransparencySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) { - /* Real colours need the TC_IS_PALETTE_COLOUR flag - * otherwise colours from _string_colourmap are assumed. */ + /* Don't draw the rectangle. + * Real colours need the TC_IS_PALETTE_COLOUR flag. + * Otherwise colours from _string_colourmap are assumed. */ colour = (TextColour)_colour_gradient[ss->colour][6] | TC_IS_PALETTE_COLOUR; - } - - /* Draw the rectangle if 'transparent station signs' is off, - * or if we are drawing a general text sign (STR_WHITE_SIGN) */ - if (!IsTransparencySet(TO_SIGNS) || ss->string == STR_WHITE_SIGN) { + } else { + /* Draw the rectangle if 'transparent station signs' is off, + * or if we are drawing a general text sign (STR_WHITE_SIGN). */ DrawFrameRect( x, y, x + w, y + h, ss->colour, IsTransparencySet(TO_SIGNS) ? FR_TRANSPARENT : FR_NONE @@ -1465,7 +1549,7 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom int x = UnScaleByZoom(_vd.dpi.left - (vp->virtual_left & mask), vp->zoom) + vp->left; int y = UnScaleByZoom(_vd.dpi.top - (vp->virtual_top & mask), vp->zoom) + vp->top; - _vd.dpi.dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(old_dpi->dst_ptr, x - old_dpi->left, y - old_dpi->top); + _vd.dpi.dst_ptr = BlitterFactory::GetCurrentBlitter()->MoveTo(old_dpi->dst_ptr, x - old_dpi->left, y - old_dpi->top); ViewportAddLandscape(); ViewportAddVehicles(&_vd.dpi); @@ -1483,7 +1567,7 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom *_vd.parent_sprites_to_sort.Append() = it; } - ViewportSortParentSprites(&_vd.parent_sprites_to_sort); + _vp_sprite_sorter(&_vd.parent_sprites_to_sort); ViewportDrawParentSprites(&_vd.parent_sprites_to_sort, &_vd.child_screen_sprites_to_draw); if (_draw_bounding_boxes) ViewportDrawBoundingBoxes(&_vd.parent_sprites_to_sort); @@ -1496,17 +1580,19 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom dp.height = UnScaleByZoom(dp.height, zoom); _cur_dpi = &dp; - /* translate to window coordinates */ - dp.left = x; - dp.top = y; - - if (vp->overlay != NULL) vp->overlay->Draw(&dp); - - /* translate back to world coordinates */ - dp.left = UnScaleByZoom(_vd.dpi.left, zoom); - dp.top = UnScaleByZoom(_vd.dpi.top, zoom); + if (vp->overlay != NULL && vp->overlay->GetCargoMask() != 0 && vp->overlay->GetCompanyMask() != 0) { + /* translate to window coordinates */ + dp.left = x; + dp.top = y; + vp->overlay->Draw(&dp); + } - if (_vd.string_sprites_to_draw.Length() != 0) ViewportDrawStrings(zoom, &_vd.string_sprites_to_draw); + if (_vd.string_sprites_to_draw.Length() != 0) { + /* translate to world coordinates */ + dp.left = UnScaleByZoom(_vd.dpi.left, zoom); + dp.top = UnScaleByZoom(_vd.dpi.top, zoom); + ViewportDrawStrings(zoom, &_vd.string_sprites_to_draw); + } _cur_dpi = old_dpi; @@ -1576,8 +1662,97 @@ void Window::DrawViewport() const dpi->top -= this->top; } +/** + * Continue criteria for the SearchMapEdge function. + * @param iter Value to check. + * @param iter_limit Maximum value for the iter + * @param sy Screen y coordinate calculated for the tile at hand + * @param sy_limit Limit to the screen y coordinate + * @return True when we should continue searching. + */ +typedef bool ContinueMapEdgeSearch(int iter, int iter_limit, int sy, int sy_limit); + +/** Continue criteria for searching a no-longer-visible tile in negative direction, starting at some tile. */ +static inline bool ContinueLowerMapEdgeSearch(int iter, int iter_limit, int sy, int sy_limit) { return iter > 0 && sy > sy_limit; } +/** Continue criteria for searching a no-longer-visible tile in positive direction, starting at some tile. */ +static inline bool ContinueUpperMapEdgeSearch(int iter, int iter_limit, int sy, int sy_limit) { return iter < iter_limit && sy < sy_limit; } + +/** + * Searches, starting at the given tile, by applying the given offset to iter, for a no longer visible tile. + * The whole sense of this function is keeping the to-be-written code small, thus it is a little bit abstracted + * so the same function can be used for both the X and Y locations. As such a reference to one of the elements + * in curr_tile was needed. + * @param curr_tile A tile + * @param iter Reference to either the X or Y of curr_tile. + * @param iter_limit Upper search limit for the iter value. + * @param offset Search in steps of this size + * @param sy_limit Search limit to be passed to the criteria + * @param continue_criteria Search as long as this criteria is true + * @return The final value of iter. + */ +static int SearchMapEdge(Point &curr_tile, int &iter, int iter_limit, int offset, int sy_limit, ContinueMapEdgeSearch continue_criteria) +{ + int sy; + do { + iter = Clamp(iter + offset, 0, iter_limit); + sy = GetViewportY(curr_tile); + } while (continue_criteria(iter, iter_limit, sy, sy_limit)); + + return iter; +} + +/** + * Determine the clamping of either the X or Y coordinate to the map. + * @param curr_tile A tile + * @param iter Reference to either the X or Y of curr_tile. + * @param iter_limit Upper search limit for the iter value. + * @param start Start value for the iteration. + * @param other_ref Reference to the opposite axis in curr_tile than of iter. + * @param other_value Start value for of the opposite axis + * @param vp_value Value of the viewport location in the opposite axis as for iter. + * @param other_limit Limit for the other value, so if iter is X, then other_limit is for Y. + * @param vp_top Top of the viewport. + * @param vp_bottom Bottom of the viewport. + * @return Clamped version of vp_value. + */ +static inline int ClampXYToMap(Point &curr_tile, int &iter, int iter_limit, int start, int &other_ref, int other_value, int vp_value, int other_limit, int vp_top, int vp_bottom) +{ + bool upper_edge = other_value < _settings_game.construction.max_heightlevel / 4; + + /* + * First get an estimate of the tiles relevant for us at that edge. Relevant in the sense + * "at least close to the visible area". Thus, we don't look at exactly each tile, inspecting + * e.g. every tenth should be enough. After all, the desired screen limit is set such that + * the bordermost tiles are painted in the middle of the screen when one hits the limit, + * i.e. it is no harm if there is some small error in that calculation + */ + + other_ref = upper_edge ? 0 : other_limit; + iter = start; + int min_iter = SearchMapEdge(curr_tile, iter, iter_limit, upper_edge ? -10 : +10, vp_top, upper_edge ? ContinueLowerMapEdgeSearch : ContinueUpperMapEdgeSearch); + iter = start; + int max_iter = SearchMapEdge(curr_tile, iter, iter_limit, upper_edge ? +10 : -10, vp_bottom, upper_edge ? ContinueUpperMapEdgeSearch : ContinueLowerMapEdgeSearch); + + max_iter = min(max_iter + _settings_game.construction.max_heightlevel / 4, iter_limit); + min_iter = min(min_iter, max_iter); + + /* Now, calculate the highest heightlevel of these tiles. Again just as an estimate. */ + int max_heightlevel_at_edge = 0; + for (iter = min_iter; iter <= max_iter; iter += 10) { + max_heightlevel_at_edge = max(max_heightlevel_at_edge, (int)TileHeight(TileXY(curr_tile.x, curr_tile.y))); + } + + /* Based on that heightlevel, calculate the limit. For the upper edge a tile with height zero would + * get a limit of zero, on the other side it depends on the number of tiles along the axis. */ + return upper_edge ? + max(vp_value, -max_heightlevel_at_edge * (int)(TILE_HEIGHT * 2 * ZOOM_LVL_BASE)) : + min(vp_value, (other_limit * TILE_SIZE * 4 - max_heightlevel_at_edge * TILE_HEIGHT * 2) * ZOOM_LVL_BASE); +} + static inline void ClampViewportToMap(const ViewPort *vp, int &x, int &y) { + int original_y = y; + /* Centre of the viewport is hot spot */ x += vp->virtual_width / 2; y += vp->virtual_height / 2; @@ -1587,9 +1762,14 @@ static inline void ClampViewportToMap(const ViewPort *vp, int &x, int &y) int vx = -x + y * 2; int vy = x + y * 2; - /* clamp to size of map */ - vx = Clamp(vx, 0, MapMaxX() * TILE_SIZE * 4 * ZOOM_LVL_BASE); - vy = Clamp(vy, 0, MapMaxY() * TILE_SIZE * 4 * ZOOM_LVL_BASE); + /* Find out which tile corresponds to (vx,vy) if one assumes height zero. The cast is necessary to prevent C++ from + * converting the result to an uint, which gives an overflow instead of a negative result... */ + int tx = vx / (int)(TILE_SIZE * 4 * ZOOM_LVL_BASE); + int ty = vy / (int)(TILE_SIZE * 4 * ZOOM_LVL_BASE); + + Point curr_tile; + vx = ClampXYToMap(curr_tile, curr_tile.y, MapMaxY(), ty, curr_tile.x, tx, vx, MapMaxX(), original_y, original_y + vp->virtual_height); + vy = ClampXYToMap(curr_tile, curr_tile.x, MapMaxX(), tx, curr_tile.y, ty, vy, MapMaxY(), original_y, original_y + vp->virtual_height); /* Convert map coordinates to viewport coordinates */ x = (-vx + vy) / 2; @@ -1655,6 +1835,10 @@ void UpdateViewportPosition(Window *w) */ static void MarkViewportDirty(const ViewPort *vp, int left, int top, int right, int bottom) { + /* Rounding wrt. zoom-out level */ + right += (1 << vp->zoom) - 1; + bottom += (1 << vp->zoom) - 1; + right -= vp->virtual_left; if (right <= 0) return; @@ -1679,10 +1863,10 @@ static void MarkViewportDirty(const ViewPort *vp, int left, int top, int right, /** * Mark all viewports that display an area as dirty (in need of repaint). - * @param left Left edge of area to repaint - * @param top Top edge of area to repaint - * @param right Right edge of area to repaint - * @param bottom Bottom edge of area to repaint + * @param left Left edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_NORMAL) + * @param top Top edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_NORMAL) + * @param right Right edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_NORMAL) + * @param bottom Bottom edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_NORMAL) * @ingroup dirty */ void MarkAllViewportsDirty(int left, int top, int right, int bottom) @@ -1714,17 +1898,33 @@ void ConstrainAllViewportsZoom() /** * Mark a tile given by its index dirty for repaint. * @param tile The tile to mark dirty. + * @param bridge_level_offset Height of bridge on tile to also mark dirty. (Height level relative to north corner.) * @ingroup dirty */ -void MarkTileDirtyByTile(TileIndex tile) +void MarkTileDirtyByTile(TileIndex tile, int bridge_level_offset) { - Point pt = RemapCoords(TileX(tile) * TILE_SIZE, TileY(tile) * TILE_SIZE, GetTilePixelZ(tile)); + Point pt = RemapCoords(TileX(tile) * TILE_SIZE, TileY(tile) * TILE_SIZE, TilePixelHeight(tile)); MarkAllViewportsDirty( - pt.x - 31 * ZOOM_LVL_BASE, - pt.y - 122 * ZOOM_LVL_BASE, - pt.x - 31 * ZOOM_LVL_BASE + 67 * ZOOM_LVL_BASE, - pt.y - 122 * ZOOM_LVL_BASE + 154 * ZOOM_LVL_BASE - ); + pt.x - MAX_TILE_EXTENT_LEFT, + pt.y - MAX_TILE_EXTENT_TOP - ZOOM_LVL_BASE * TILE_HEIGHT * bridge_level_offset, + pt.x + MAX_TILE_EXTENT_RIGHT, + pt.y + MAX_TILE_EXTENT_BOTTOM); +} + +/** + * Mark a (virtual) tile outside the map dirty for repaint. + * @param x Tile X position. + * @param y Tile Y position. + * @ingroup dirty + */ +void MarkTileDirtyByTileOutsideMap(int x, int y) +{ + Point pt = RemapCoords(x * TILE_SIZE, y * TILE_SIZE, TilePixelHeightOutsideMap(x, y)); + MarkAllViewportsDirty( + pt.x - MAX_TILE_EXTENT_LEFT, + pt.y, // no buildings outside of map + pt.x + MAX_TILE_EXTENT_RIGHT, + pt.y + MAX_TILE_EXTENT_BOTTOM); } /** @@ -1800,15 +2000,15 @@ static void SetSelectionTilesDirty() /* the 'x' coordinate of 'top' and 'bot' is the same (and always in the same distance from tile middle), * tile height/slope affects only the 'y' on-screen coordinate! */ - int l = top.x - (TILE_PIXELS - 2) * ZOOM_LVL_BASE; // 'x' coordinate of left side of dirty rectangle - int t = top.y; // 'y' coordinate of top side -//- - int r = top.x + (TILE_PIXELS - 2) * ZOOM_LVL_BASE; // right side of dirty rectangle - int b = bot.y; // bottom -//- + int l = top.x - TILE_PIXELS * ZOOM_LVL_BASE; // 'x' coordinate of left side of the dirty rectangle + int t = top.y; // 'y' coordinate of top side of the dirty rectangle + int r = top.x + TILE_PIXELS * ZOOM_LVL_BASE; // 'x' coordinate of right side of the dirty rectangle + int b = bot.y; // 'y' coordinate of bottom side of the dirty rectangle - static const int OVERLAY_WIDTH = 4 * ZOOM_LVL_BASE; // part of selection sprites is drawn outside the selected area + static const int OVERLAY_WIDTH = 4 * ZOOM_LVL_BASE; // part of selection sprites is drawn outside the selected area (in particular: terraforming) /* For halftile foundations on SLOPE_STEEP_S the sprite extents some more towards the top */ - MarkAllViewportsDirty(l - OVERLAY_WIDTH, t - OVERLAY_WIDTH - TILE_HEIGHT * ZOOM_LVL_BASE, r + OVERLAY_WIDTH, b + OVERLAY_WIDTH * ZOOM_LVL_BASE); + MarkAllViewportsDirty(l - OVERLAY_WIDTH, t - OVERLAY_WIDTH - TILE_HEIGHT * ZOOM_LVL_BASE, r + OVERLAY_WIDTH, b + OVERLAY_WIDTH); /* haven't we reached the topmost tile yet? */ if (top_x != x_start) { @@ -2022,7 +2222,14 @@ void RebuildViewportOverlay(Window *w) bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant) { /* The slope cannot be acquired outside of the map, so make sure we are always within the map. */ - if (z == -1) z = GetSlopePixelZ(Clamp(x, 0, MapSizeX() * TILE_SIZE - 1), Clamp(y, 0, MapSizeY() * TILE_SIZE - 1)); + if (z == -1) { + if ( x >= 0 && x <= (int)MapSizeX() * (int)TILE_SIZE - 1 + && y >= 0 && y <= (int)MapSizeY() * (int)TILE_SIZE - 1) { + z = GetSlopePixelZ(x, y); + } else { + z = TileHeightOutsideMap(x / (int)TILE_SIZE, y / (int)TILE_SIZE); + } + } Point pt = MapXYZToViewport(w->viewport, x, y, z); w->viewport->follow_vehicle = INVALID_VEHICLE; @@ -2934,6 +3141,13 @@ EventState VpHandlePlaceSizingDrag() return ES_HANDLED; } +/** + * Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc. + * @param icon New shape of the mouse cursor. + * @param pal Palette to use. + * @param mode Mode to perform. + * @param w %Window requesting the mode change. + */ void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Window *w) { SetObjectToPlace(icon, pal, mode, w->window_class, w->window_number); @@ -2941,6 +3155,14 @@ void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Wind #include "table/animcursors.h" +/** + * Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc. + * @param icon New shape of the mouse cursor. + * @param pal Palette to use. + * @param mode Mode to perform. + * @param window_class %Window class of the window requesting the mode change. + * @param window_num Number of the window in its class requesting the mode change. + */ void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num) { if (_thd.window_class != WC_INVALID) { @@ -2985,6 +3207,7 @@ void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowC } +/** Reset the cursor and mouse mode handling back to default (normal cursor, only clicking in windows). */ void ResetObjectToPlace() { SetObjectToPlace(SPR_CURSOR_MOUSE, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0); @@ -3001,3 +3224,29 @@ Point GetViewportStationMiddle(const ViewPort *vp, const Station *st) p.y = UnScaleByZoom(p.y - vp->virtual_top, vp->zoom) + vp->top; return p; } + +/** Helper class for getting the best sprite sorter. */ +struct ViewportSSCSS { + VpSorterChecker fct_checker; ///< The check function. + VpSpriteSorter fct_sorter; ///< The sorting function. +}; + +/** List of sorters ordered from best to worst. */ +static ViewportSSCSS _vp_sprite_sorters[] = { +#ifdef WITH_SSE + { &ViewportSortParentSpritesSSE41Checker, &ViewportSortParentSpritesSSE41 }, +#endif + { &ViewportSortParentSpritesChecker, &ViewportSortParentSprites } +}; + +/** Choose the "best" sprite sorter and set _vp_sprite_sorter. */ +void InitializeSpriteSorter() +{ + for (uint i = 0; i < lengthof(_vp_sprite_sorters); i++) { + if (_vp_sprite_sorters[i].fct_checker()) { + _vp_sprite_sorter = _vp_sprite_sorters[i].fct_sorter; + break; + } + } + assert(_vp_sprite_sorter != NULL); +} diff --git a/src/viewport_func.h b/src/viewport_func.h index 7d86dda989..cbdcc5019a 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -25,6 +25,7 @@ void SetSelectionRed(bool); void DeleteWindowViewport(Window *w); void InitializeWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom); ViewPort *IsPtInWindowViewport(const Window *w, int x, int y); +Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y, bool clamp_to_map = true); Point GetTileBelowCursor(); void UpdateViewportPosition(Window *w); @@ -77,7 +78,9 @@ void UpdateAllVirtCoords(); extern Point _tile_fract_coords; -void MarkTileDirtyByTile(TileIndex tile); +void MarkTileDirtyByTile(TileIndex tile, int bridge_level_offset = 0); + +void MarkTileDirtyByTileOutsideMap(int x, int y); Point GetViewportStationMiddle(const ViewPort *vp, const Station *st); diff --git a/src/viewport_gui.cpp b/src/viewport_gui.cpp index ab8125fa1f..90b0e1468f 100644 --- a/src/viewport_gui.cpp +++ b/src/viewport_gui.cpp @@ -22,6 +22,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + /* Extra ViewPort Window Stuff */ static const NWidgetPart _nested_extra_view_port_widgets[] = { NWidget(NWID_HORIZONTAL), diff --git a/src/viewport_sprite_sorter.h b/src/viewport_sprite_sorter.h new file mode 100644 index 0000000000..19b903e152 --- /dev/null +++ b/src/viewport_sprite_sorter.h @@ -0,0 +1,58 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file viewport_sprite_sorter.h Types related to sprite sorting. */ + +#include "stdafx.h" +#include "core/smallvec_type.hpp" +#include "gfx_type.h" + +#ifndef VIEWPORT_SPRITE_SORTER_H +#define VIEWPORT_SPRITE_SORTER_H + +/** Parent sprite that should be drawn */ +struct ParentSpriteToDraw { + /* Block of 16B loadable in xmm register */ + int32 xmin; ///< minimal world X coordinate of bounding box + int32 ymin; ///< minimal world Y coordinate of bounding box + int32 zmin; ///< minimal world Z coordinate of bounding box + int32 x; ///< screen X coordinate of sprite + + /* Second block of 16B loadable in xmm register */ + int32 xmax; ///< maximal world X coordinate of bounding box + int32 ymax; ///< maximal world Y coordinate of bounding box + int32 zmax; ///< maximal world Z coordinate of bounding box + int32 y; ///< screen Y coordinate of sprite + + SpriteID image; ///< sprite to draw + PaletteID pal; ///< palette to use + const SubSprite *sub; ///< only draw a rectangular part of the sprite + + 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. + bool comparison_done; ///< Used during sprite sorting: true if sprite has been compared with all other sprites +}; + +typedef SmallVector ParentSpriteToSortVector; + +/** Type for method for checking whether a viewport sprite sorter exists. */ +typedef bool (*VpSorterChecker)(); +/** Type for the actual viewport sprite sorter. */ +typedef void (*VpSpriteSorter)(ParentSpriteToSortVector *psd); + +#ifdef WITH_SSE +bool ViewportSortParentSpritesSSE41Checker(); +void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv); +#endif + +void InitializeSpriteSorter(); + +#endif /* VIEWPORT_SPRITE_SORTER_H */ diff --git a/src/viewport_sprite_sorter_sse4.cpp b/src/viewport_sprite_sorter_sse4.cpp new file mode 100644 index 0000000000..05a7f8aa1c --- /dev/null +++ b/src/viewport_sprite_sorter_sse4.cpp @@ -0,0 +1,105 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file viewport_sprite_sorter_sse.cpp Sprite sorter that uses SSE4.1. */ + +#ifdef WITH_SSE + +#include "stdafx.h" +#include "cpu.h" +#include "smmintrin.h" +#include "viewport_sprite_sorter.h" + +#include "safeguards.h" + +#ifdef _SQ64 + assert_compile((sizeof(ParentSpriteToDraw) % 16) == 0); + #define LOAD_128 _mm_load_si128 +#else + #define LOAD_128 _mm_loadu_si128 +#endif + +/** Sort parent sprites pointer array using SSE4.1 optimizations. */ +void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv) +{ + const __m128i mask_ptest = _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0); + ParentSpriteToDraw ** const psdvend = psdv->End(); + ParentSpriteToDraw **psd = psdv->Begin(); + while (psd != psdvend) { + ParentSpriteToDraw * const ps = *psd; + + if (ps->comparison_done) { + psd++; + continue; + } + + ps->comparison_done = true; + + for (ParentSpriteToDraw **psd2 = psd + 1; psd2 != psdvend; psd2++) { + ParentSpriteToDraw * const ps2 = *psd2; + + if (ps2->comparison_done) continue; + + /* + * Decide which comparator to use, based on whether the bounding boxes overlap + * + * Original code: + * if (ps->xmax >= ps2->xmin && ps->xmin <= ps2->xmax && // overlap in X? + * ps->ymax >= ps2->ymin && ps->ymin <= ps2->ymax && // overlap in Y? + * ps->zmax >= ps2->zmin && ps->zmin <= ps2->zmax) { // overlap in Z? + * + * Above conditions are equivalent to: + * 1/ !( (ps->xmax >= ps2->xmin) && (ps->ymax >= ps2->ymin) && (ps->zmax >= ps2->zmin) && (ps->xmin <= ps2->xmax) && (ps->ymin <= ps2->ymax) && (ps->zmin <= ps2->zmax) ) + * 2/ !( (ps->xmax >= ps2->xmin) && (ps->ymax >= ps2->ymin) && (ps->zmax >= ps2->zmin) && (ps2->xmax >= ps->xmin) && (ps2->ymax >= ps->ymin) && (ps2->zmax >= ps->zmin) ) + * 3/ !( ( (ps->xmax >= ps2->xmin) && (ps->ymax >= ps2->ymin) && (ps->zmax >= ps2->zmin) ) && ( (ps2->xmax >= ps->xmin) && (ps2->ymax >= ps->ymin) && (ps2->zmax >= ps->zmin) ) ) + * 4/ !( !( (ps->xmax < ps2->xmin) || (ps->ymax < ps2->ymin) || (ps->zmax < ps2->zmin) ) && !( (ps2->xmax < ps->xmin) || (ps2->ymax < ps->ymin) || (ps2->zmax < ps->zmin) ) ) + * 5/ PTEST <---------------------------------- rslt1 ----------------------------------> <------------------------------ rslt2 --------------------------------------> + */ + __m128i ps1_max = LOAD_128((__m128i*) &ps->xmax); + __m128i ps2_min = LOAD_128((__m128i*) &ps2->xmin); + __m128i rslt1 = _mm_cmplt_epi32(ps1_max, ps2_min); + if (!_mm_testz_si128(mask_ptest, rslt1)) + continue; + + __m128i ps1_min = LOAD_128((__m128i*) &ps->xmin); + __m128i ps2_max = LOAD_128((__m128i*) &ps2->xmax); + __m128i rslt2 = _mm_cmplt_epi32(ps2_max, ps1_min); + if (_mm_testz_si128(mask_ptest, rslt2)) { + /* Use X+Y+Z as the sorting order, so sprites closer to the bottom of + * the screen and with higher Z elevation, are drawn in front. + * Here X,Y,Z are the coordinates of the "center of mass" of the sprite, + * i.e. X=(left+right)/2, etc. + * However, since we only care about order, don't actually divide / 2 + */ + if (ps->xmin + ps->xmax + ps->ymin + ps->ymax + ps->zmin + ps->zmax <= + ps2->xmin + ps2->xmax + ps2->ymin + ps2->ymax + ps2->zmin + ps2->zmax) { + continue; + } + } + + /* Move ps2 in front of ps */ + ParentSpriteToDraw * const temp = ps2; + for (ParentSpriteToDraw **psd3 = psd2; psd3 > psd; psd3--) { + *psd3 = *(psd3 - 1); + } + *psd = temp; + } + } +} + +/** + * Check whether the current CPU supports SSE 4.1. + * @return True iff the CPU supports SSE 4.1. + */ +bool ViewportSortParentSpritesSSE41Checker() +{ + return HasCPUIDFlag(1, 2, 19); +} + +#endif /* WITH_SSE */ diff --git a/src/viewport_type.h b/src/viewport_type.h index 800c8b4952..07485c3243 100644 --- a/src/viewport_type.h +++ b/src/viewport_type.h @@ -14,6 +14,7 @@ #include "zoom_type.h" #include "strings_type.h" +#include "table/strings.h" class LinkGraphOverlay; @@ -50,7 +51,7 @@ struct ViewportSign { uint16 width_normal; ///< The width when not zoomed out (normal font) uint16 width_small; ///< The width when zoomed out (small font) - void UpdatePosition(int center, int top, StringID str); + void UpdatePosition(int center, int top, StringID str, StringID str_small = STR_NULL); void MarkDirty(ZoomLevel maxzoom = ZOOM_LVL_MAX) const; }; diff --git a/src/void_cmd.cpp b/src/void_cmd.cpp index cd8d9caa69..ffe54df992 100644 --- a/src/void_cmd.cpp +++ b/src/void_cmd.cpp @@ -13,13 +13,16 @@ #include "tile_cmd.h" #include "command_func.h" #include "viewport_func.h" +#include "slope_func.h" #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + static void DrawTile_Void(TileInfo *ti) { - DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE); + DrawGroundSprite(SPR_FLAT_BARE_LAND + SlopeToSpriteOffset(ti->tileh), PALETTE_ALL_BLACK); } diff --git a/src/void_map.h b/src/void_map.h index 53ca068b2c..5ccc4e9d7d 100644 --- a/src/void_map.h +++ b/src/void_map.h @@ -27,7 +27,7 @@ static inline void MakeVoid(TileIndex t) _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = 0; - _m[t].m6 = 0; + _me[t].m6 = 0; _me[t].m7 = 0; } diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index b99741cfe9..4392eb2103 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -42,6 +42,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Describes from which directions a specific slope can be flooded (if the tile is floodable at all). */ @@ -107,10 +109,9 @@ CommandCost CmdBuildShipDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui return_cmd_error(STR_ERROR_MUST_BE_BUILT_ON_WATER); } - if ((MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) || - (MayHaveBridgeAbove(tile2) && IsBridgeAbove(tile2))) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile) || IsBridgeAbove(tile2)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); - if (GetTileSlope(tile) != SLOPE_FLAT || GetTileSlope(tile2) != SLOPE_FLAT) { + if (!IsTileFlat(tile) || !IsTileFlat(tile2)) { /* Prevent depots on rapids */ return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } @@ -262,34 +263,30 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag cost.AddCost(ret); /* lower tile */ - WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL; - if (!IsWaterTile(tile - delta)) { ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); cost.AddCost(_price[PR_BUILD_CANAL]); } - if (GetTileSlope(tile - delta) != SLOPE_FLAT) { + if (!IsTileFlat(tile - delta)) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } + WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL; /* upper tile */ - WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL; - if (!IsWaterTile(tile + delta)) { ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); cost.AddCost(_price[PR_BUILD_CANAL]); } - if (GetTileSlope(tile + delta) != SLOPE_FLAT) { + if (!IsTileFlat(tile + delta)) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } + WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL; - if ((MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) || - (MayHaveBridgeAbove(tile - delta) && IsBridgeAbove(tile - delta)) || - (MayHaveBridgeAbove(tile + delta) && IsBridgeAbove(tile + delta))) { + if (IsBridgeAbove(tile) || IsBridgeAbove(tile - delta) || IsBridgeAbove(tile + delta)) { return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } @@ -590,7 +587,7 @@ bool IsWateredTile(TileIndex tile, Direction from) return IsTileOnWater(tile); } - return (IsDock(tile) && GetTileSlope(tile) == SLOPE_FLAT) || IsBuoy(tile); + return (IsDock(tile) && IsTileFlat(tile)) || IsBuoy(tile); case MP_INDUSTRY: { /* Do not draw waterborders inside of industries. @@ -1165,6 +1162,9 @@ void TileLoop_Water(TileIndex tile) /* do not try to flood water tiles - increases performance a lot */ if (IsTileType(dest, MP_WATER)) continue; + /* TREE_GROUND_SHORE is the sign of a previous flood. */ + if (IsTileType(dest, MP_TREES) && GetTreeGround(dest) == TREE_GROUND_SHORE) continue; + int z_dest; Slope slope_dest = GetFoundationSlope(dest, &z_dest) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP; if (z_dest > 0) continue; @@ -1240,7 +1240,7 @@ static TrackStatus GetTileTrackStatus_Water(TileIndex tile, TransportType mode, if (mode != TRANSPORT_WATER) return 0; switch (GetWaterTileType(tile)) { - case WATER_TILE_CLEAR: ts = (GetTileSlope(tile) == SLOPE_FLAT) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break; + case WATER_TILE_CLEAR: ts = IsTileFlat(tile) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break; case WATER_TILE_COAST: ts = (TrackBits)coast_tracks[GetTileSlope(tile) & 0xF]; break; case WATER_TILE_LOCK: ts = DiagDirToDiagTrackBits(GetLockDirection(tile)); break; case WATER_TILE_DEPOT: ts = AxisToTrackBits(GetShipDepotAxis(tile)); break; diff --git a/src/water_map.h b/src/water_map.h index cfec9cc38b..ab249a8279 100644 --- a/src/water_map.h +++ b/src/water_map.h @@ -360,7 +360,7 @@ static inline void MakeShore(TileIndex t) _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = WBL_TYPE_NORMAL << WBL_TYPE_BEGIN | 1 << WBL_COAST_FLAG; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } @@ -380,7 +380,7 @@ static inline void MakeWater(TileIndex t, Owner o, WaterClass wc, uint8 random_b _m[t].m3 = 0; _m[t].m4 = random_bits; _m[t].m5 = WBL_TYPE_NORMAL << WBL_TYPE_BEGIN; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } @@ -433,7 +433,7 @@ static inline void MakeShipDepot(TileIndex t, Owner o, DepotID did, DepotPart pa _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = WBL_TYPE_DEPOT << WBL_TYPE_BEGIN | part << WBL_DEPOT_PART | a << WBL_DEPOT_AXIS; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } @@ -455,7 +455,7 @@ static inline void MakeLockTile(TileIndex t, Owner o, LockPart part, DiagDirecti _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = WBL_TYPE_LOCK << WBL_TYPE_BEGIN | part << WBL_LOCK_PART_BEGIN | dir << WBL_LOCK_ORIENT_BEGIN; - SB(_m[t].m6, 2, 4, 0); + SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/waypoint.cpp b/src/waypoint.cpp index 9500aba82b..857f8ba874 100644 --- a/src/waypoint.cpp +++ b/src/waypoint.cpp @@ -16,6 +16,8 @@ #include "newgrf_station.h" #include "waypoint_base.h" +#include "safeguards.h" + /** * Draw a waypoint * @param x coordinate diff --git a/src/waypoint_base.h b/src/waypoint_base.h index c97c6089c2..8d544a3b99 100644 --- a/src/waypoint_base.h +++ b/src/waypoint_base.h @@ -32,7 +32,7 @@ struct Waypoint FINAL : SpecializedStation { return IsRailWaypointTile(tile) && GetStationIndex(tile) == this->index; } - /* virtual */ uint32 GetNewGRFVariable(const struct ResolverObject *object, byte variable, byte parameter, bool *available) const; + /* virtual */ uint32 GetNewGRFVariable(const struct ResolverObject &object, byte variable, byte parameter, bool *available) const; /* virtual */ void GetTileArea(TileArea *ta, StationType type) const; diff --git a/src/waypoint_cmd.cpp b/src/waypoint_cmd.cpp index 35d7745c71..efa48003f2 100644 --- a/src/waypoint_cmd.cpp +++ b/src/waypoint_cmd.cpp @@ -32,6 +32,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Update the virtual coords needed to draw the waypoint sign. */ @@ -131,7 +133,7 @@ static CommandCost IsValidTileForWaypoint(TileIndex tile, Axis axis, StationID * return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); return CommandCost(); } @@ -287,9 +289,9 @@ CommandCost CmdBuildRailWaypoint(TileIndex start_tile, DoCommandFlag flags, uint CommandCost CmdBuildBuoy(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (tile == 0 || !HasTileWaterGround(tile)) return_cmd_error(STR_ERROR_SITE_UNSUITABLE); - if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); - if (GetTileSlope(tile) != SLOPE_FLAT) return_cmd_error(STR_ERROR_SITE_UNSUITABLE); + if (!IsTileFlat(tile)) return_cmd_error(STR_ERROR_SITE_UNSUITABLE); /* Check if there is an already existing, deleted, waypoint close to us that we can reuse. */ Waypoint *wp = FindDeletedWaypointCloseTo(tile, STR_SV_STNAME_BUOY, OWNER_NONE); @@ -414,7 +416,7 @@ CommandCost CmdRenameWaypoint(TileIndex tile, DoCommandFlag flags, uint32 p1, ui if (flags & DC_EXEC) { free(wp->name); - wp->name = reset ? NULL : strdup(text); + wp->name = reset ? NULL : stredup(text); wp->UpdateVirtCoord(); } diff --git a/src/waypoint_gui.cpp b/src/waypoint_gui.cpp index d02a96057e..fa4deaac68 100644 --- a/src/waypoint_gui.cpp +++ b/src/waypoint_gui.cpp @@ -27,6 +27,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** GUI for accessing waypoints and buoys. */ struct WaypointWindow : Window { private: @@ -65,7 +67,7 @@ public: } this->FinishInitNested(window_number); - if (this->wp->owner != OWNER_NONE) this->owner = this->wp->owner; + this->owner = this->wp->owner; this->flags |= WF_DISABLE_VP_SCROLL; NWidgetViewport *nvp = this->GetWidget(WID_W_VIEWPORT); @@ -76,13 +78,7 @@ public: ~WaypointWindow() { - Owner owner = this->owner; - - /* Buoys have no owner and can be used by everyone. Show only 'our' vehicles */ - if (!Company::IsValidID(owner)) owner = _local_company; - - /* Well, spectators otoh */ - if (Company::IsValidID(owner)) DeleteWindowById(GetWindowClassForVehicleType(this->vt), VehicleListIdentifier(VL_STATION_LIST, this->vt, owner, this->window_number).Pack(), false); + DeleteWindowById(GetWindowClassForVehicleType(this->vt), VehicleListIdentifier(VL_STATION_LIST, this->vt, this->owner, this->window_number).Pack(), false); } virtual void SetStringParameters(int widget) const diff --git a/src/widget.cpp b/src/widget.cpp index 9d6406c3b2..3b50f710d4 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -22,10 +22,9 @@ #include "table/sprites.h" #include "table/strings.h" -#include "table/palettes.h" +#include "table/string_colours.h" -static const char *UPARROW = "\xEE\x8A\xA0"; ///< String containing an upwards pointing arrow. -static const char *DOWNARROW = "\xEE\x8A\xAA"; ///< String containing a downwards pointing arrow. +#include "safeguards.h" /** * Compute the vertical position of the draggable part of scrollbar @@ -147,7 +146,9 @@ void ScrollbarClickHandler(Window *w, NWidgetCore *nw, int x, int y) mi = nw->pos_y; ma = nw->pos_y + nw->current_y; } - ScrollbarClickPositioning(w, dynamic_cast(nw), x, y, mi, ma); + NWidgetScrollbar *scrollbar = dynamic_cast(nw); + assert(scrollbar != NULL); + ScrollbarClickPositioning(w, scrollbar, x, y, mi, ma); } /** @@ -340,10 +341,10 @@ static inline void DrawVerticalScrollbar(const Rect &r, Colours colour, bool up_ /* draw up/down buttons */ DrawFrameRect(r.left, r.top, r.right, r.top + height - 1, colour, (up_clicked) ? FR_LOWERED : FR_NONE); - DrawString(r.left + up_clicked, r.right + up_clicked, r.top + up_clicked, UPARROW, TC_BLACK, SA_HOR_CENTER); + DrawSprite(SPR_ARROW_UP, PAL_NONE, r.left + 1 + up_clicked, r.top + 1 + up_clicked); DrawFrameRect(r.left, r.bottom - (height - 1), r.right, r.bottom, colour, (down_clicked) ? FR_LOWERED : FR_NONE); - DrawString(r.left + down_clicked, r.right + down_clicked, r.bottom - (height - 1) + down_clicked, DOWNARROW, TC_BLACK, SA_HOR_CENTER); + DrawSprite(SPR_ARROW_DOWN, PAL_NONE, r.left + 1 + down_clicked, r.bottom - (height - 2) + down_clicked); int c1 = _colour_gradient[colour & 0xF][3]; int c2 = _colour_gradient[colour & 0xF][7]; @@ -521,13 +522,11 @@ static inline void DrawResizeBox(const Rect &r, Colours colour, bool at_left, bo * Draw a close box. * @param r Rectangle of the box. * @param colour Colour of the close box. - * @param str Cross to draw (#STR_BLACK_CROSS or #STR_SILVER_CROSS). */ -static inline void DrawCloseBox(const Rect &r, Colours colour, StringID str) +static inline void DrawCloseBox(const Rect &r, Colours colour) { - assert(str == STR_BLACK_CROSS || str == STR_SILVER_CROSS); // black or silver cross - DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, FR_NONE); - DrawString(r.left, r.right, r.top + WD_CLOSEBOX_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); + 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); } /** @@ -539,10 +538,12 @@ static inline void DrawCloseBox(const Rect &r, Colours colour, StringID str) */ void DrawCaption(const Rect &r, Colours colour, Owner owner, StringID str) { + bool company_owned = owner < MAX_COMPANIES; + DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, FR_BORDERONLY); - DrawFrameRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, colour, (owner == INVALID_OWNER) ? FR_LOWERED | FR_DARKENED : FR_LOWERED | FR_DARKENED | FR_BORDERONLY); + DrawFrameRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, colour, company_owned ? FR_LOWERED | FR_DARKENED | FR_BORDERONLY : FR_LOWERED | FR_DARKENED); - if (owner != INVALID_OWNER) { + if (company_owned) { GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, _colour_gradient[_company_colours[owner]][4]); } @@ -567,16 +568,20 @@ static inline void DrawButtonDropdown(const Rect &r, Colours colour, bool clicke { int text_offset = max(0, ((int)(r.bottom - r.top + 1) - FONT_HEIGHT_NORMAL) / 2); // Offset for rendering the text vertically centered + int dd_width = NWidgetLeaf::dropdown_dimension.width; + int dd_height = NWidgetLeaf::dropdown_dimension.height; + int image_offset = max(0, ((int)(r.bottom - r.top + 1) - dd_height) / 2); + if (_current_text_dir == TD_LTR) { - DrawFrameRect(r.left, r.top, r.right - 12, r.bottom, colour, clicked_button ? FR_LOWERED : FR_NONE); - DrawFrameRect(r.right - 11, r.top, r.right, r.bottom, colour, clicked_dropdown ? FR_LOWERED : FR_NONE); - DrawString(r.right - (clicked_dropdown ? 10 : 11), r.right, r.top + (clicked_dropdown ? 2 : 1), DOWNARROW, TC_BLACK, SA_HOR_CENTER); - if (str != STR_NULL) DrawString(r.left + WD_DROPDOWNTEXT_LEFT + clicked_button, r.right - WD_DROPDOWNTEXT_RIGHT + clicked_button, r.top + text_offset + clicked_button, str, TC_BLACK); + DrawFrameRect(r.left, r.top, r.right - dd_width, r.bottom, colour, clicked_button ? FR_LOWERED : FR_NONE); + DrawFrameRect(r.right + 1 - dd_width, r.top, r.right, r.bottom, colour, clicked_dropdown ? FR_LOWERED : FR_NONE); + DrawSprite(SPR_ARROW_DOWN, PAL_NONE, r.right - (dd_width - 2) + clicked_dropdown, r.top + image_offset + clicked_dropdown); + if (str != STR_NULL) DrawString(r.left + WD_DROPDOWNTEXT_LEFT + clicked_button, r.right - dd_width - WD_DROPDOWNTEXT_RIGHT + clicked_button, r.top + text_offset + clicked_button, str, TC_BLACK); } else { - DrawFrameRect(r.left + 12, r.top, r.right, r.bottom, colour, clicked_button ? FR_LOWERED : FR_NONE); - DrawFrameRect(r.left, r.top, r.left + 11, r.bottom, colour, clicked_dropdown ? FR_LOWERED : FR_NONE); - DrawString(r.left + clicked_dropdown, r.left + 11, r.top + (clicked_dropdown ? 2 : 1), DOWNARROW, TC_BLACK, SA_HOR_CENTER); - if (str != STR_NULL) DrawString(r.left + WD_DROPDOWNTEXT_RIGHT + clicked_button, r.right - WD_DROPDOWNTEXT_LEFT + clicked_button, r.top + text_offset + clicked_button, str, TC_BLACK); + DrawFrameRect(r.left + dd_width, r.top, r.right, r.bottom, colour, clicked_button ? FR_LOWERED : FR_NONE); + DrawFrameRect(r.left, r.top, r.left + dd_width - 1, r.bottom, colour, clicked_dropdown ? FR_LOWERED : FR_NONE); + DrawSprite(SPR_ARROW_DOWN, PAL_NONE, r.left + 1 + clicked_dropdown, r.top + image_offset + clicked_dropdown); + if (str != STR_NULL) DrawString(r.left + dd_width + WD_DROPDOWNTEXT_LEFT + clicked_button, r.right - WD_DROPDOWNTEXT_RIGHT + clicked_button, r.top + text_offset + clicked_button, str, TC_BLACK); } } @@ -636,11 +641,22 @@ void Window::DrawSortButtonState(int widget, SortButtonState state) const assert(this->nested_array != NULL); const NWidgetBase *nwid = this->GetWidget(widget); + /* Sort button uses the same sprites as vertical scrollbar */ + Dimension dim = NWidgetScrollbar::GetVerticalDimension(); int offset = this->IsWidgetLowered(widget) ? 1 : 0; - int base = offset + nwid->pos_x + (_current_text_dir == TD_LTR ? nwid->current_x - WD_SORTBUTTON_ARROW_WIDTH : 0); - int top = nwid->pos_y; + int x = offset + nwid->pos_x + (_current_text_dir == TD_LTR ? nwid->current_x - dim.width : 0); + int y = offset + nwid->pos_y + (nwid->current_y - dim.height) / 2; - DrawString(base, base + WD_SORTBUTTON_ARROW_WIDTH, top + 1 + offset, state == SBS_DOWN ? DOWNARROW : UPARROW, TC_BLACK, SA_HOR_CENTER); + DrawSprite(state == SBS_DOWN ? SPR_ARROW_DOWN : SPR_ARROW_UP, PAL_NONE, x, y); +} + +/** + * Get width of up/down arrow of sort button state. + * @return Width of space required by sort button arrow. + */ +int Window::SortButtonWidth() +{ + return NWidgetScrollbar::GetVerticalDimension().width + 1; } @@ -799,8 +815,8 @@ NWidgetResizeBase::NWidgetResizeBase(WidgetType tp, uint fill_x, uint fill_y) : */ void NWidgetResizeBase::SetMinimalSize(uint min_x, uint min_y) { - this->min_x = min_x; - this->min_y = min_y; + this->min_x = max(this->min_x, min_x); + this->min_y = max(this->min_y, min_y); } /** @@ -1251,12 +1267,12 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui NWidgetBase *child_wid = this->head; while (child_wid != NULL) { uint child_width = child_wid->current_x; - uint child_x = x + position + (rtl ? -child_width - child_wid->padding_left : child_wid->padding_left); + uint child_x = x + (rtl ? position - child_width - child_wid->padding_left : position + child_wid->padding_left); uint child_y = y + child_wid->padding_top; child_wid->AssignSizePosition(sizing, child_x, child_y, child_width, child_wid->current_y, rtl); uint padded_child_width = child_width + child_wid->padding_right + child_wid->padding_left; - position += rtl ? -padded_child_width : padded_child_width; + position = rtl ? position - padded_child_width : position + padded_child_width; child_wid = child_wid->next; } @@ -1524,7 +1540,9 @@ void NWidgetMatrix::SetupSmallestSize(Window *w, bool init_array) } /* Reset the widget number. */ - SB(dynamic_cast(this->head)->index, 16, 16, 0); + NWidgetCore *nw = dynamic_cast(this->head); + assert(nw != NULL); + SB(nw->index, 16, 16, 0); this->head->SetupSmallestSize(w, init_array); Dimension padding = {this->pip_pre + this->pip_post, this->pip_pre + this->pip_post}; @@ -1593,6 +1611,7 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) if (sub_wid >= this->count) return NULL; NWidgetCore *child = dynamic_cast(this->head); + assert(child != NULL); child->AssignSizePosition(ST_RESIZE, this->pos_x + (rtl ? this->pip_post - widget_col * this->widget_w : this->pip_pre + widget_col * this->widget_w) + base_offs_x, this->pos_y + this->pip_pre + widget_row * this->widget_h + base_offs_y, @@ -1617,6 +1636,7 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) /* Get the appropriate offsets so we can draw the right widgets. */ NWidgetCore *child = dynamic_cast(this->head); + assert(child != NULL); int start_x, start_y, base_offs_x, base_offs_y; this->GetScrollOffsets(start_x, start_y, base_offs_x, base_offs_y); @@ -1969,17 +1989,27 @@ NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : N { assert(tp == NWID_HSCROLLBAR || tp == NWID_VSCROLLBAR); this->SetIndex(index); +} + +void NWidgetScrollbar::SetupSmallestSize(Window *w, bool init_array) +{ + if (init_array && this->index >= 0) { + assert(w->nested_array_size > (uint)this->index); + w->nested_array[this->index] = this; + } + this->min_x = 0; + this->min_y = 0; switch (this->type) { case NWID_HSCROLLBAR: - this->SetMinimalSize(0, NWidgetScrollbar::GetHorizontalDimension().height); + this->SetMinimalSize(NWidgetScrollbar::GetHorizontalDimension().width * 3, NWidgetScrollbar::GetHorizontalDimension().height); this->SetResize(1, 0); this->SetFill(1, 0); this->SetDataTip(0x0, STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST); break; case NWID_VSCROLLBAR: - this->SetMinimalSize(NWidgetScrollbar::GetVerticalDimension().width, 0); + this->SetMinimalSize(NWidgetScrollbar::GetVerticalDimension().width, NWidgetScrollbar::GetVerticalDimension().height * 3); this->SetResize(0, 1); this->SetFill(0, 1); this->SetDataTip(0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST); @@ -1987,14 +2017,7 @@ NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : N default: NOT_REACHED(); } -} -void NWidgetScrollbar::SetupSmallestSize(Window *w, bool init_array) -{ - if (init_array && this->index >= 0) { - assert(w->nested_array_size > (uint)this->index); - w->nested_array[this->index] = this; - } this->smallest_x = this->min_x; this->smallest_y = this->min_y; } @@ -2061,19 +2084,22 @@ Dimension NWidgetScrollbar::horizontal_dimension = {0, 0}; /** Reset the cached dimensions. */ /* static */ void NWidgetLeaf::InvalidateDimensionCache() { - shadebox_dimension.width = shadebox_dimension.height = 0; - debugbox_dimension.width = debugbox_dimension.height = 0; - stickybox_dimension.width = stickybox_dimension.height = 0; - resizebox_dimension.width = resizebox_dimension.height = 0; - closebox_dimension.width = closebox_dimension.height = 0; + shadebox_dimension.width = shadebox_dimension.height = 0; + debugbox_dimension.width = debugbox_dimension.height = 0; + defsizebox_dimension.width = defsizebox_dimension.height = 0; + stickybox_dimension.width = stickybox_dimension.height = 0; + resizebox_dimension.width = resizebox_dimension.height = 0; + closebox_dimension.width = closebox_dimension.height = 0; + dropdown_dimension.width = dropdown_dimension.height = 0; } -Dimension NWidgetLeaf::shadebox_dimension = {0, 0}; -Dimension NWidgetLeaf::debugbox_dimension = {0, 0}; +Dimension NWidgetLeaf::shadebox_dimension = {0, 0}; +Dimension NWidgetLeaf::debugbox_dimension = {0, 0}; Dimension NWidgetLeaf::defsizebox_dimension = {0, 0}; -Dimension NWidgetLeaf::stickybox_dimension = {0, 0}; -Dimension NWidgetLeaf::resizebox_dimension = {0, 0}; -Dimension NWidgetLeaf::closebox_dimension = {0, 0}; +Dimension NWidgetLeaf::stickybox_dimension = {0, 0}; +Dimension NWidgetLeaf::resizebox_dimension = {0, 0}; +Dimension NWidgetLeaf::closebox_dimension = {0, 0}; +Dimension NWidgetLeaf::dropdown_dimension = {0, 0}; /** * Nested leaf widget. @@ -2083,11 +2109,12 @@ Dimension NWidgetLeaf::closebox_dimension = {0, 0}; * @param data Data of the widget. * @param tip Tooltip of the widget. */ -NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, StringID tip) : NWidgetCore(tp, colour, 1, 1, data, tip) +NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint32 data, StringID tip) : NWidgetCore(tp, colour, 1, 1, data, tip) { assert(index >= 0 || tp == WWT_LABEL || tp == WWT_TEXT || tp == WWT_CAPTION || tp == WWT_RESIZEBOX || tp == WWT_SHADEBOX || tp == WWT_DEFSIZEBOX || tp == WWT_DEBUGBOX || tp == WWT_STICKYBOX || tp == WWT_CLOSEBOX); if (index >= 0) this->SetIndex(index); - this->SetMinimalSize(0, 0); + this->min_x = 0; + this->min_y = 0; this->SetResize(0, 0); switch (tp) { @@ -2111,12 +2138,9 @@ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, this->SetFill(0, 0); break; - case WWT_EDITBOX: { - Dimension sprite_size = GetSpriteSize(_current_text_dir == TD_RTL ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT); - this->SetMinimalSize(30 + sprite_size.width, sprite_size.height); + case WWT_EDITBOX: this->SetFill(0, 0); break; - } case WWT_CAPTION: this->SetFill(1, 0); @@ -2158,7 +2182,7 @@ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, case WWT_CLOSEBOX: this->SetFill(0, 0); this->SetMinimalSize(WD_CLOSEBOX_WIDTH, WD_CAPTION_HEIGHT); - this->SetDataTip(STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW); + this->SetDataTip(STR_NULL, STR_TOOLTIP_CLOSE_WINDOW); break; case WWT_DROPDOWN: @@ -2258,9 +2282,12 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array) size = maxdim(size, NWidgetLeaf::resizebox_dimension); break; } - case WWT_EDITBOX: - size.height = max(size.height, GetStringBoundingBox("_").height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM); + case WWT_EDITBOX: { + 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 */ + } case WWT_PUSHBTN: { static const Dimension extra = {WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM}; padding = &extra; @@ -2293,7 +2320,7 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array) static const Dimension extra = {WD_CLOSEBOX_LEFT + WD_CLOSEBOX_RIGHT, WD_CLOSEBOX_TOP + WD_CLOSEBOX_BOTTOM}; padding = &extra; if (NWidgetLeaf::closebox_dimension.width == 0) { - NWidgetLeaf::closebox_dimension = maxdim(GetStringBoundingBox(STR_BLACK_CROSS), GetStringBoundingBox(STR_SILVER_CROSS)); + NWidgetLeaf::closebox_dimension = GetSpriteSize(SPR_CLOSEBOX); NWidgetLeaf::closebox_dimension.width += extra.width; NWidgetLeaf::closebox_dimension.height += extra.height; } @@ -2333,12 +2360,18 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array) case WWT_DROPDOWN: case NWID_BUTTON_DROPDOWN: case NWID_PUSHBUTTON_DROPDOWN: { - static const Dimension extra = {WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM}; + static Dimension extra = {WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM}; padding = &extra; + if (NWidgetLeaf::dropdown_dimension.width == 0) { + NWidgetLeaf::dropdown_dimension = GetSpriteSize(SPR_ARROW_DOWN); + NWidgetLeaf::dropdown_dimension.width += WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT; + NWidgetLeaf::dropdown_dimension.height += WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; + extra.width = WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT + NWidgetLeaf::dropdown_dimension.width; + } if (this->index >= 0) w->SetStringParameters(this->index); Dimension d2 = GetStringBoundingBox(this->widget_data); d2.width += extra.width; - d2.height += extra.height; + d2.height = max(d2.height, NWidgetLeaf::dropdown_dimension.height) + extra.height; size = maxdim(size, d2); break; } @@ -2404,6 +2437,7 @@ void NWidgetLeaf::Draw(const Window *w) default: NOT_REACHED(); } DrawImageButtons(r, WWT_PUSHIMGBTN, this->colour, clicked, sprite); + break; } case WWT_LABEL: @@ -2456,7 +2490,7 @@ void NWidgetLeaf::Draw(const Window *w) break; case WWT_CLOSEBOX: - DrawCloseBox(r, this->colour, this->widget_data); + DrawCloseBox(r, this->colour); break; case WWT_DROPDOWN: @@ -2490,10 +2524,10 @@ void NWidgetLeaf::Draw(const Window *w) bool NWidgetLeaf::ButtonHit(const Point &pt) { if (_current_text_dir == TD_LTR) { - int button_width = this->pos_x + this->current_x - 12; + int button_width = this->pos_x + this->current_x - NWidgetLeaf::dropdown_dimension.width; return pt.x < button_width; } else { - int button_left = this->pos_x + 12; + int button_left = this->pos_x + NWidgetLeaf::dropdown_dimension.width; return pt.x >= button_left; } } @@ -2819,6 +2853,7 @@ NWidgetContainer *MakeWindowNWidgetTree(const NWidgetPart *parts, int count, int */ NWidgetBase *MakeCompanyButtonRows(int *biggest_index, int widget_first, int widget_last, int max_length, StringID button_tooltip) { + assert(max_length >= 1); NWidgetVertical *vert = NULL; // Storage for all rows. NWidgetHorizontal *hor = NULL; // Storage for buttons in one row. int hor_length = 0; @@ -2842,7 +2877,7 @@ NWidgetBase *MakeCompanyButtonRows(int *biggest_index, int widget_first, int wid NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum); panel->SetMinimalSize(sprite_size.width, sprite_size.height); - panel->SetFill(1, 0); + panel->SetFill(1, 1); panel->SetResize(1, 0); panel->SetDataTip(0x0, button_tooltip); hor->Add(panel); @@ -2854,7 +2889,7 @@ NWidgetBase *MakeCompanyButtonRows(int *biggest_index, int widget_first, int wid if (hor_length > 0 && hor_length < max_length) { /* Last row is partial, add a spacer at the end to force all buttons to the left. */ NWidgetSpacer *spc = new NWidgetSpacer(sprite_size.width, sprite_size.height); - spc->SetFill(1, 0); + spc->SetFill(1, 1); spc->SetResize(1, 0); hor->Add(spc); } diff --git a/src/widget_type.h b/src/widget_type.h index 60980f28c2..39efbb4637 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -769,7 +769,7 @@ private: */ class NWidgetLeaf : public NWidgetCore { public: - NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, StringID tip); + NWidgetLeaf(WidgetType tp, Colours colour, int index, uint32 data, StringID tip); /* virtual */ void SetupSmallestSize(Window *w, bool init_array); /* virtual */ void Draw(const Window *w); @@ -777,6 +777,8 @@ public: bool ButtonHit(const Point &pt); static void InvalidateDimensionCache(); + + static Dimension dropdown_dimension; ///< Cached size of a dropdown widget. private: static Dimension shadebox_dimension; ///< Cached size of a shadebox widget. static Dimension debugbox_dimension; ///< Cached size of a debugbox widget. @@ -854,7 +856,7 @@ static inline uint ComputeMaxSize(uint base, uint max_space, uint step) * @ingroup NestedWidgetParts */ struct NWidgetPartDataTip { - uint16 data; ///< Data value of the widget. + uint32 data; ///< Data value of the widget. StringID tooltip; ///< Tooltip of the widget. }; @@ -1009,7 +1011,7 @@ static inline NWidgetPart EndContainer() * @param tip Tooltip of the widget. * @ingroup NestedWidgetParts */ -static inline NWidgetPart SetDataTip(uint16 data, StringID tip) +static inline NWidgetPart SetDataTip(uint32 data, StringID tip) { NWidgetPart part; diff --git a/src/widgets/autoreplace_widget.h b/src/widgets/autoreplace_widget.h index a302eea29f..7a98b6cd72 100644 --- a/src/widgets/autoreplace_widget.h +++ b/src/widgets/autoreplace_widget.h @@ -16,6 +16,11 @@ enum ReplaceVehicleWidgets { WID_RV_CAPTION, ///< Caption of the window. + /* Sort dropdown at the right. */ + WID_RV_SORT_ASCENDING_DESCENDING, ///< Ascending/descending sort order button. + WID_RV_SHOW_HIDDEN_ENGINES, ///< Toggle whether to display the hidden vehicles. + WID_RV_SORT_DROPDOWN, ///< Dropdown for the sort criteria. + /* Left and right matrix + details. */ WID_RV_LEFT_MATRIX, ///< The matrix on the left. WID_RV_LEFT_SCROLLBAR, ///< The scrollbar for the matrix on the left. diff --git a/src/widgets/build_vehicle_widget.h b/src/widgets/build_vehicle_widget.h index 6acad3f814..ae548587e2 100644 --- a/src/widgets/build_vehicle_widget.h +++ b/src/widgets/build_vehicle_widget.h @@ -15,13 +15,15 @@ /** Widgets of the #BuildVehicleWindow class. */ enum BuildVehicleWidgets { WID_BV_CAPTION, ///< Caption of window. - WID_BV_SORT_ASSENDING_DESCENDING, ///< Sort direction. + WID_BV_SORT_ASCENDING_DESCENDING, ///< Sort direction. WID_BV_SORT_DROPDOWN, ///< Criteria of sorting dropdown. WID_BV_CARGO_FILTER_DROPDOWN, ///< Cargo filter dropdown. + WID_BV_SHOW_HIDDEN_ENGINES, ///< Toggle whether to display the hidden vehicles. WID_BV_LIST, ///< List of vehicles. WID_BV_SCROLLBAR, ///< Scrollbar of list. WID_BV_PANEL, ///< Button panel. WID_BV_BUILD, ///< Build panel. + WID_BV_SHOW_HIDE, ///< Button to hide or show the selected engine. WID_BV_BUILD_SEL, ///< Build button. WID_BV_RENAME, ///< Rename button. }; diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 4a1ac8f08a..aecfc6b2f0 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -18,6 +18,8 @@ #include "dropdown_widget.h" +#include "../safeguards.h" + void DropDownListItem::Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const { @@ -48,12 +50,12 @@ void DropDownListStringItem::Draw(int left, int right, int top, int bottom, bool * @return true if \a first precedes \a second. * @warning All items in the list need to be derivates of DropDownListStringItem. */ -/* static */ bool DropDownListStringItem::NatSortFunc(const DropDownListItem *first, const DropDownListItem *second) +/* static */ int DropDownListStringItem::NatSortFunc(const DropDownListItem * const *first, const DropDownListItem * const * second) { char buffer1[512], buffer2[512]; - GetString(buffer1, static_cast(first)->String(), lastof(buffer1)); - GetString(buffer2, static_cast(second)->String(), lastof(buffer2)); - return strnatcmp(buffer1, buffer2) < 0; + GetString(buffer1, static_cast(*first)->String(), lastof(buffer1)); + GetString(buffer2, static_cast(*second)->String(), lastof(buffer2)); + return strnatcmp(buffer1, buffer2); } StringID DropDownListParamStringItem::String() const @@ -68,19 +70,6 @@ StringID DropDownListCharStringItem::String() const return this->string; } -/** - * Delete all items of a drop down list and the list itself - * @param list List to delete. - */ -static void DeleteDropDownList(DropDownList *list) -{ - for (DropDownList::iterator it = list->begin(); it != list->end(); ++it) { - DropDownListItem *item = *it; - delete item; - } - delete list; -} - static const NWidgetPart _nested_dropdown_menu_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_END, WID_DM_ITEMS), SetMinimalSize(1, 1), SetScrollbar(WID_DM_SCROLL), EndContainer(), @@ -93,7 +82,7 @@ static const NWidgetPart _nested_dropdown_menu_widgets[] = { static WindowDesc _dropdown_desc( WDP_MANUAL, NULL, 0, 0, WC_DROPDOWN_MENU, WC_NONE, - 0, + WDF_NO_FOCUS, _nested_dropdown_menu_widgets, lengthof(_nested_dropdown_menu_widgets) ); @@ -102,7 +91,7 @@ struct DropdownWindow : Window { WindowClass parent_wnd_class; ///< Parent window class. WindowNumber parent_wnd_num; ///< Parent window number. int parent_button; ///< Parent widget number where the window is dropped from. - DropDownList *list; ///< List with dropdown menu items. + const DropDownList *list; ///< List with dropdown menu items. int selected_index; ///< Index of the selected item in the list. byte click_delay; ///< Timer to delay selection. bool drag_mode; @@ -124,9 +113,11 @@ struct DropdownWindow : Window { * @param scroll Dropdown menu has a scrollbar. * @param widget Widgets of the dropdown menu window. */ - DropdownWindow(Window *parent, DropDownList *list, int selected, int button, bool instant_close, const Point &position, const Dimension &size, Colours wi_colour, bool scroll) + DropdownWindow(Window *parent, const DropDownList *list, int selected, int button, bool instant_close, const Point &position, const Dimension &size, Colours wi_colour, bool scroll) : Window(&_dropdown_desc) { + assert(list->Length() > 0); + this->position = position; this->CreateNestedTree(); @@ -148,14 +139,14 @@ struct DropdownWindow : Window { /* Total length of list */ int list_height = 0; - for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { - DropDownListItem *item = *it; + for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) { + const DropDownListItem *item = *it; list_height += item->Height(items_width); } /* Capacity is the average number of items visible */ - this->vscroll->SetCapacity(size.height * (uint16)list->size() / list_height); - this->vscroll->SetCount((uint16)list->size()); + this->vscroll->SetCapacity(size.height * (uint16)list->Length() / list_height); + this->vscroll->SetCount((uint16)list->Length()); this->parent_wnd_class = parent->window_class; this->parent_wnd_num = parent->window_number; @@ -181,7 +172,7 @@ struct DropdownWindow : Window { pt.y -= w2->top; w2->OnDropdownClose(pt, this->parent_button, this->selected_index, this->instant_close); } - DeleteDropDownList(this->list); + delete this->list; } virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) @@ -205,7 +196,7 @@ struct DropdownWindow : Window { const DropDownList *list = this->list; - for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { + for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) { /* Skip items that are scrolled up */ if (--pos >= 0) continue; @@ -228,11 +219,11 @@ struct DropdownWindow : Window { { if (widget != WID_DM_ITEMS) return; - TextColour colour = (TextColour)this->GetWidget(widget)->colour; + Colours colour = this->GetWidget(widget)->colour; int y = r.top + 2; int pos = this->vscroll->GetPosition(); - for (DropDownList::const_iterator it = this->list->begin(); it != this->list->end(); ++it) { + for (const DropDownListItem * const *it = this->list->Begin(); it != this->list->End(); ++it) { const DropDownListItem *item = *it; int item_height = item->Height(r.right - r.left + 1); @@ -343,7 +334,7 @@ struct DropdownWindow : Window { * @param instant_close Set to true if releasing mouse button should close the * list regardless of where the cursor is. */ -void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width, bool instant_close) +void ShowDropDownListAt(Window *w, const DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width, bool instant_close) { DeleteWindowById(WC_DROPDOWN_MENU, 0); @@ -353,27 +344,18 @@ void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, /* The preferred width equals the calling widget */ uint width = wi_rect.right - wi_rect.left + 1; + /* Longest item in the list, if auto_width is enabled */ uint max_item_width = 0; - if (auto_width) { - /* Find the longest item in the list */ - for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { - const DropDownListItem *item = *it; - max_item_width = max(max_item_width, item->Width() + 5); - } - } - /* Total length of list */ - int list_height = 0; + int height = 0; - for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { - DropDownListItem *item = *it; - list_height += item->Height(width); + for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) { + const DropDownListItem *item = *it; + height += item->Height(width); + if (auto_width) max_item_width = max(max_item_width, item->Width() + 5); } - /* Height of window visible */ - int height = list_height; - /* Check if the status bar is visible, as we don't want to draw over it */ int screen_bottom = GetMainViewBottom(); bool scroll = false; @@ -386,7 +368,7 @@ void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, } else { /* ... and lastly if it won't, enable the scroll bar and fit the * list in below the widget */ - int avg_height = list_height / (int)list->size(); + int avg_height = height / (int)list->Length(); int rows = (screen_bottom - 4 - top) / avg_height; height = rows * avg_height; scroll = true; @@ -416,7 +398,7 @@ void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, * @param instant_close Set to true if releasing mouse button should close the * list regardless of where the cursor is. */ -void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, uint width, bool auto_width, bool instant_close) +void ShowDropDownList(Window *w, const DropDownList *list, int selected, int button, uint width, bool auto_width, bool instant_close) { /* Our parent's button widget is used to determine where to place the drop * down list window. */ @@ -453,8 +435,8 @@ void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, u * @param strings Menu list, end with #INVALID_STRING_ID * @param selected Index of initial selected item. * @param button Button widget number of the parent window \a w that wants the dropdown menu. - * @param disabled_mask Bitmask for disabled items (items with their bit set are not copied to the dropdown list). - * @param hidden_mask Bitmask for hidden items (items with their bit set are displayed, but not selectable in the dropdown list). + * @param disabled_mask Bitmask for disabled items (items with their bit set are displayed, but not selectable in the dropdown list). + * @param hidden_mask Bitmask for hidden items (items with their bit set are not copied to the dropdown list). * @param width Width of the dropdown menu. If \c 0, use the width of parent widget \a button. */ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask, uint width) @@ -463,13 +445,13 @@ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int butt for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) { if (!HasBit(hidden_mask, i)) { - list->push_back(new DropDownListStringItem(strings[i], i, HasBit(disabled_mask, i))); + *list->Append() = new DropDownListStringItem(strings[i], i, HasBit(disabled_mask, i)); } } /* No entries in the list? */ - if (list->size() == 0) { - DeleteDropDownList(list); + if (list->Length() == 0) { + delete list; return; } @@ -488,6 +470,7 @@ int HideDropDownMenu(Window *pw) if (w->window_class != WC_DROPDOWN_MENU) continue; DropdownWindow *dw = dynamic_cast(w); + assert(dw != NULL); if (pw->window_class == dw->parent_wnd_class && pw->window_number == dw->parent_wnd_num) { int parent_button = dw->parent_button; diff --git a/src/widgets/dropdown_type.h b/src/widgets/dropdown_type.h index b923445bb2..b65d4557bd 100644 --- a/src/widgets/dropdown_type.h +++ b/src/widgets/dropdown_type.h @@ -14,8 +14,8 @@ #include "../window_type.h" #include "../gfx_func.h" +#include "../core/smallvec_type.hpp" #include "table/strings.h" -#include /** * Base list item class from which others are derived. If placed in a list it @@ -50,7 +50,7 @@ public: virtual void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const; virtual StringID String() const { return this->string; } - static bool NatSortFunc(const DropDownListItem *first, const DropDownListItem *second); + static int CDECL NatSortFunc(const DropDownListItem * const *first, const DropDownListItem * const *second); }; /** @@ -83,10 +83,10 @@ public: /** * A drop down list is a collection of drop down list items. */ -typedef std::list DropDownList; +typedef AutoDeleteSmallVector DropDownList; -void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width = false, bool instant_close = false); +void ShowDropDownListAt(Window *w, const DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width = false, bool instant_close = false); -void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, uint width = 0, bool auto_width = false, bool instant_close = false); +void ShowDropDownList(Window *w, const DropDownList *list, int selected, int button, uint width = 0, bool auto_width = false, bool instant_close = false); #endif /* WIDGETS_DROPDOWN_TYPE_H */ diff --git a/src/widgets/genworld_widget.h b/src/widgets/genworld_widget.h index 10727f1034..877efbb921 100644 --- a/src/widgets/genworld_widget.h +++ b/src/widgets/genworld_widget.h @@ -25,11 +25,12 @@ enum GenerateLandscapeWidgets { WID_GL_TOWN_PULLDOWN, ///< Dropdown 'No. of towns'. WID_GL_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries'. - WID_GL_RANDOM_EDITBOX, ///< 'Random seed' editbox. - WID_GL_RANDOM_BUTTON, ///< 'Randomise' button. - WID_GL_GENERATE_BUTTON, ///< 'Generate' button. + WID_GL_MAX_HEIGHTLEVEL_DOWN, ///< Decrease max. heightlevel + WID_GL_MAX_HEIGHTLEVEL_TEXT, ///< Max. heightlevel + WID_GL_MAX_HEIGHTLEVEL_UP, ///< Increase max. heightlevel + WID_GL_START_DATE_DOWN, ///< Decrease start year. WID_GL_START_DATE_TEXT, ///< Start year. WID_GL_START_DATE_UP, ///< Increase start year. diff --git a/src/widgets/misc_widget.h b/src/widgets/misc_widget.h index a54e830352..a6dd081a9d 100644 --- a/src/widgets/misc_widget.h +++ b/src/widgets/misc_widget.h @@ -48,6 +48,7 @@ enum QueryWidgets { /** Widgets of the #TextfileWindow class. */ enum TextfileWidgets { WID_TF_CAPTION, ///< The caption of the window. + WID_TF_WRAPTEXT, ///< Whether or not to wrap the text. WID_TF_BACKGROUND, ///< Panel to draw the textfile on. WID_TF_VSCROLLBAR, ///< Vertical scrollbar to scroll through the textfile up-and-down. WID_TF_HSCROLLBAR, ///< Horizontal scrollbar to scroll through the textfile left-to-right. diff --git a/src/widgets/newgrf_debug_widget.h b/src/widgets/newgrf_debug_widget.h index af24549c10..22a5cda40e 100644 --- a/src/widgets/newgrf_debug_widget.h +++ b/src/widgets/newgrf_debug_widget.h @@ -16,25 +16,30 @@ enum NewGRFInspectWidgets { WID_NGRFI_CAPTION, ///< The caption bar of course. WID_NGRFI_PARENT, ///< Inspect the parent. + WID_NGRFI_VEH_PREV, ///< Go to previous vehicle in chain. + WID_NGRFI_VEH_NEXT, ///< Go to next vehicle in chain. + WID_NGRFI_VEH_CHAIN, ///< Display for vehicle chain. WID_NGRFI_MAINPANEL, ///< Panel widget containing the actual data. WID_NGRFI_SCROLLBAR, ///< Scrollbar. }; /** Widgets of the #SpriteAlignerWindow class. */ enum SpriteAlignerWidgets { - WID_SA_CAPTION, ///< Caption of the window. - WID_SA_PREVIOUS, ///< Skip to the previous sprite. - WID_SA_GOTO, ///< Go to a given sprite. - WID_SA_NEXT, ///< Skip to the next sprite. - WID_SA_UP, ///< Move the sprite up. - WID_SA_LEFT, ///< Move the sprite to the left. - WID_SA_RIGHT, ///< Move the sprite to the right. - WID_SA_DOWN, ///< Move the sprite down. - WID_SA_SPRITE, ///< The actual sprite. - WID_SA_OFFSETS, ///< The sprite offsets. - WID_SA_PICKER, ///< Sprite picker. - WID_SA_LIST, ///< Queried sprite list. - WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_CAPTION, ///< Caption of the window. + WID_SA_PREVIOUS, ///< Skip to the previous sprite. + WID_SA_GOTO, ///< Go to a given sprite. + WID_SA_NEXT, ///< Skip to the next sprite. + WID_SA_UP, ///< Move the sprite up. + WID_SA_LEFT, ///< Move the sprite to the left. + WID_SA_RIGHT, ///< Move the sprite to the right. + WID_SA_DOWN, ///< Move the sprite down. + WID_SA_SPRITE, ///< The actual sprite. + WID_SA_OFFSETS_ABS, ///< The sprite offsets (absolute). + WID_SA_OFFSETS_REL, ///< The sprite offsets (relative). + WID_SA_PICKER, ///< Sprite picker. + WID_SA_LIST, ///< Queried sprite list. + WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_RESET_REL, ///< Reset relative sprite offset }; #endif /* WIDGETS_NEWGRF_DEBUG_WIDGET_H */ diff --git a/src/widgets/newgrf_widget.h b/src/widgets/newgrf_widget.h index 878dcb891e..271b6669ad 100644 --- a/src/widgets/newgrf_widget.h +++ b/src/widgets/newgrf_widget.h @@ -39,6 +39,7 @@ enum NewGRFStateWidgets { WID_NS_REMOVE, ///< Remove NewGRF from active list. WID_NS_MOVE_UP, ///< Move NewGRF up in active list. WID_NS_MOVE_DOWN, ///< Move NewGRF down in active list. + WID_NS_UPGRADE, ///< Upgrade NewGRFs that have a newer version available. WID_NS_FILTER, ///< Filter list of available NewGRFs. WID_NS_FILE_LIST, ///< List window of active NewGRFs. WID_NS_SCROLLBAR, ///< Scrollbar for active NewGRF list. @@ -60,6 +61,15 @@ enum NewGRFStateWidgets { WID_NS_SHOW_APPLY, ///< Select display of the buttons below the 'details'. }; +/** Widgets of the #SavePresetWindow class. */ +enum SavePresetWidgets { + WID_SVP_PRESET_LIST, ///< List with available preset names. + WID_SVP_SCROLLBAR, ///< Scrollbar for the list available preset names. + WID_SVP_EDITBOX, ///< Edit box for changing the preset name. + WID_SVP_CANCEL, ///< Button to cancel saving the preset. + WID_SVP_SAVE, ///< Button to save the preset. +}; + /** Widgets of the #ScanProgressWindow class. */ enum ScanProgressWidgets { WID_SP_PROGRESS_BAR, ///< Simple progress bar. diff --git a/src/widgets/settings_widget.h b/src/widgets/settings_widget.h index 2e155e5176..661f788cd7 100644 --- a/src/widgets/settings_widget.h +++ b/src/widgets/settings_widget.h @@ -23,7 +23,7 @@ enum GameOptionsWidgets { WID_GO_LANG_DROPDOWN, ///< Language dropdown. WID_GO_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution. WID_GO_FULLSCREEN_BUTTON, ///< Toggle fullscreen. - WID_GO_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!. + WID_GO_GUI_ZOOM_DROPDOWN, ///< Dropdown for the GUI zoom level. WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_STATUS, ///< Info about missing files etc. WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2). @@ -45,7 +45,8 @@ enum GameSettingsWidgets { WID_GS_HELP_TEXT, ///< Information area to display help text of the selected option. WID_GS_EXPAND_ALL, ///< Expand all button. WID_GS_COLLAPSE_ALL, ///< Collapse all button. - WID_GS_RESTRICT_LABEL, ///< Label upfront to drop down box to restrict the list of settings to show + WID_GS_RESTRICT_CATEGORY, ///< Label upfront to the category drop-down box to restrict the list of settings to show + WID_GS_RESTRICT_TYPE, ///< Label upfront to the type drop-down box to restrict the list of settings to show WID_GS_RESTRICT_DROPDOWN, ///< The drop down box to restrict the list of settings WID_GS_TYPE_DROPDOWN, ///< The drop down box to choose client/game/company/all settings }; diff --git a/src/widgets/sign_widget.h b/src/widgets/sign_widget.h index 676e6741b1..f390793ceb 100644 --- a/src/widgets/sign_widget.h +++ b/src/widgets/sign_widget.h @@ -34,4 +34,4 @@ enum QueryEditSignWidgets { WID_QES_NEXT, ///< Next button. }; -#endif /* */ +#endif /* SIGN_WIDGET_H */ diff --git a/src/widgets/story_widget.h b/src/widgets/story_widget.h index c3f279444d..139b6d2d6b 100644 --- a/src/widgets/story_widget.h +++ b/src/widgets/story_widget.h @@ -23,4 +23,4 @@ enum StoryBookWidgets { WID_SB_NEXT_PAGE, ///< Next button. }; -#endif /* WIDGETS_STORY_WIDGET_H */ \ No newline at end of file +#endif /* WIDGETS_STORY_WIDGET_H */ diff --git a/src/window.cpp b/src/window.cpp index ad97ddf7c7..18e8f35881 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -37,6 +37,8 @@ #include "game/game.hpp" #include "video/video_driver.hpp" +#include "safeguards.h" + /** Values for _settings_client.gui.auto_scrolling */ enum ViewportAutoscrolling { VA_DISABLED, //!< Do not autoscroll when mouse is at edge of viewport. @@ -85,12 +87,10 @@ static SmallVector *_window_descs = NULL; char *_windows_file; /** Window description constructor. */ -WindowDesc::WindowDesc(WindowPosition def_pos, const char *ini_key, int16 def_width, int16 def_height, +WindowDesc::WindowDesc(WindowPosition def_pos, const char *ini_key, int16 def_width_trad, int16 def_height_trad, WindowClass window_class, WindowClass parent_class, uint32 flags, const NWidgetPart *nwid_parts, int16 nwid_length, HotkeyList *hotkeys) : default_pos(def_pos), - default_width(def_width), - default_height(def_height), cls(window_class), parent_cls(parent_class), ini_key(ini_key), @@ -100,7 +100,9 @@ WindowDesc::WindowDesc(WindowPosition def_pos, const char *ini_key, int16 def_wi hotkeys(hotkeys), pref_sticky(false), pref_width(0), - pref_height(0) + pref_height(0), + default_width_trad(def_width_trad), + default_height_trad(def_height_trad) { if (_window_descs == NULL) _window_descs = new SmallVector(); *_window_descs->Append() = this; @@ -111,6 +113,26 @@ WindowDesc::~WindowDesc() _window_descs->Erase(_window_descs->Find(this)); } +/** + * Determine default width of window. + * This is either a stored user preferred size, or the build-in default. + * @return Width in pixels. + */ +int16 WindowDesc::GetDefaultWidth() const +{ + return this->pref_width != 0 ? this->pref_width : ScaleGUITrad(this->default_width_trad); +} + +/** + * Determine default height of window. + * This is either a stored user preferred size, or the build-in default. + * @return Height in pixels. + */ +int16 WindowDesc::GetDefaultHeight() const +{ + return this->pref_height != 0 ? this->pref_height : ScaleGUITrad(this->default_height_trad); +} + /** * Load all WindowDesc settings from _windows_file. */ @@ -268,13 +290,9 @@ void Window::OnDropdownClose(Point pt, int widget, int index, bool instant_close } /* Raise the dropdown button */ - if (this->nested_array != NULL) { - NWidgetCore *nwi2 = this->GetWidget(widget); - if ((nwi2->type & WWT_MASK) == NWID_BUTTON_DROPDOWN) { - nwi2->disp_flags &= ~ND_DROPDOWN_ACTIVE; - } else { - this->RaiseWidget(widget); - } + NWidgetCore *nwi2 = this->GetWidget(widget); + if ((nwi2->type & WWT_MASK) == NWID_BUTTON_DROPDOWN) { + nwi2->disp_flags &= ~ND_DROPDOWN_ACTIVE; } else { this->RaiseWidget(widget); } @@ -450,7 +468,7 @@ bool EditBoxInGlobalFocus() void Window::UnfocusFocusedWidget() { if (this->nested_focus != NULL) { - if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); + if (this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */ this->nested_focus->SetDirty(this); @@ -474,7 +492,7 @@ bool Window::SetFocusedWidget(int widget_index) /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */ this->nested_focus->SetDirty(this); - if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); + if (this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); } this->nested_focus = this->GetWidget(widget_index); return true; @@ -485,7 +503,7 @@ bool Window::SetFocusedWidget(int widget_index) */ void Window::OnFocusLost() { - if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); } /** @@ -623,7 +641,6 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) widget_type != WWT_CLOSEBOX) { // Don't change focused window if 'X' (close button) was clicked focused_widget_changed = true; SetFocusedWindow(w); - w->OnFocus(); } if (nw == NULL) return; // exit if clicked outside of widgets @@ -755,7 +772,7 @@ static void DispatchRightClickEvent(Window *w, int x, int y) if (w->OnRightClick(pt, wid->index)) return; } - if (_settings_client.gui.hover_delay == 0 && wid->tool_tip != 0) GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK); + if (_settings_client.gui.hover_delay_ms == 0 && wid->tool_tip != 0) GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK); } /** @@ -899,7 +916,7 @@ static void DrawOverlappedWindow(Window *w, int left, int top, int right, int bo dp->left = left - w->left; dp->top = top - w->top; dp->pitch = _screen.pitch; - dp->dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top); + dp->dst_ptr = BlitterFactory::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top); dp->zoom = ZOOM_LVL_NORMAL; w->OnPaint(); } @@ -1062,7 +1079,16 @@ Window::~Window() free(this->nested_array); // Contents is released through deletion of #nested_root. delete this->nested_root; - this->window_class = WC_INVALID; + /* + * Make fairly sure that this is written, and not "optimized" away. + * The delete operator is overwritten to not delete it; the deletion + * happens at a later moment in time after the window has been + * removed from the list of windows to prevent issues with items + * being removed during the iteration as not one but more windows + * may be removed by a single call to ~Window by means of the + * DeleteChildWindows function. + */ + const_cast(this->window_class) = WC_INVALID; } /** @@ -1270,6 +1296,7 @@ static uint GetWindowZPriority(const Window *w) case WC_CONFIRM_POPUP_QUERY: case WC_MODAL_PROGRESS: case WC_NETWORK_STATUS_WINDOW: + case WC_SAVE_PRESET: ++z_priority; case WC_GENERATE_LANDSCAPE: @@ -2881,7 +2908,7 @@ void HandleMouseEvents() static uint32 hover_time = 0; static Point hover_pos = {0, 0}; - if (_settings_client.gui.hover_delay > 0) { + if (_settings_client.gui.hover_delay_ms > 0) { if (!_cursor.in_window || click != MC_NONE || mousewheel != 0 || _left_button_down || _right_button_down || hover_pos.x == 0 || abs(_cursor.pos.x - hover_pos.x) >= MAX_OFFSET_HOVER || hover_pos.y == 0 || abs(_cursor.pos.y - hover_pos.y) >= MAX_OFFSET_HOVER) { @@ -2889,7 +2916,7 @@ void HandleMouseEvents() hover_time = _realtime_tick; _mouse_hovering = false; } else { - if (hover_time != 0 && _realtime_tick > hover_time + _settings_client.gui.hover_delay * 1000) { + if (hover_time != 0 && _realtime_tick > hover_time + _settings_client.gui.hover_delay_ms) { click = MC_HOVER; _input_events_this_tick++; _mouse_hovering = true; @@ -2906,7 +2933,7 @@ void HandleMouseEvents() if (click == MC_LEFT && _newgrf_debug_sprite_picker.mode == SPM_WAIT_CLICK) { /* Mark whole screen dirty, and wait for the next realtime tick, when drawing is finished. */ - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); _newgrf_debug_sprite_picker.clicked_pixel = blitter->MoveTo(_screen.dst_ptr, _cursor.pos.x, _cursor.pos.y); _newgrf_debug_sprite_picker.click_time = _realtime_tick; _newgrf_debug_sprite_picker.sprites.Clear(); @@ -3266,6 +3293,9 @@ void ReInitAllWindows() NWidgetLeaf::InvalidateDimensionCache(); // Reset cached sizes of several widgets. NWidgetScrollbar::InvalidateDimensionCache(); + extern void InitDepotWindowBlockSizes(); + InitDepotWindowBlockSizes(); + Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { w->ReInit(); @@ -3378,25 +3408,16 @@ void RelocateAllWindows(int neww, int newh) FOR_ALL_WINDOWS_FROM_BACK(w) { int left, top; - - if (w->window_class == WC_MAIN_WINDOW) { - ViewPort *vp = w->viewport; - vp->width = w->width = neww; - vp->height = w->height = newh; - vp->virtual_width = ScaleByZoom(neww, vp->zoom); - vp->virtual_height = ScaleByZoom(newh, vp->zoom); - continue; // don't modify top,left - } - /* XXX - this probably needs something more sane. For example specifying * in a 'backup'-desc that the window should always be centered. */ switch (w->window_class) { + case WC_MAIN_WINDOW: case WC_BOOTSTRAP: ResizeWindow(w, neww, newh); continue; case WC_MAIN_TOOLBAR: - ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false); + ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false); top = w->top; left = PositionMainToolbar(w); // changes toolbar orientation @@ -3408,14 +3429,15 @@ void RelocateAllWindows(int neww, int newh) break; case WC_STATUS_BAR: - ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false); + ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false); top = newh - w->height; left = PositionStatusbar(w); break; case WC_SEND_NETWORK_MSG: - ResizeWindow(w, Clamp(neww, 320, 640) - w->width, 0, false); + ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false); + top = newh - w->height - FindWindowById(WC_STATUS_BAR, 0)->height; left = PositionNetworkChatWindow(w); break; diff --git a/src/window_gui.h b/src/window_gui.h index b6b994d520..b81b06e391 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -132,12 +132,10 @@ enum WidgetDrawDistances { /* Dropdown widget. */ WD_DROPDOWN_HEIGHT = 12, ///< Height of a drop down widget. WD_DROPDOWNTEXT_LEFT = 2, ///< Left offset of the dropdown widget string. - WD_DROPDOWNTEXT_RIGHT = 14, ///< Right offset of the dropdown widget string. + WD_DROPDOWNTEXT_RIGHT = 2, ///< Right offset of the dropdown widget string. WD_DROPDOWNTEXT_TOP = 1, ///< Top offset of the dropdown widget string. WD_DROPDOWNTEXT_BOTTOM = 1, ///< Bottom offset of the dropdown widget string. - WD_SORTBUTTON_ARROW_WIDTH = 11, ///< Width of up/down arrow of sort button state. - WD_PAR_VSEP_NORMAL = 2, ///< Normal amount of vertical space between two paragraphs of text. WD_PAR_VSEP_WIDE = 8, ///< Large amount of vertical space between two paragraphs of text. }; @@ -169,15 +167,13 @@ struct HotkeyList; */ struct WindowDesc : ZeroedMemoryAllocator { - WindowDesc(WindowPosition default_pos, const char *ini_key, int16 def_width, int16 def_height, + WindowDesc(WindowPosition default_pos, const char *ini_key, int16 def_width_trad, int16 def_height_trad, WindowClass window_class, WindowClass parent_class, uint32 flags, const NWidgetPart *nwid_parts, int16 nwid_length, HotkeyList *hotkeys = NULL); ~WindowDesc(); WindowPosition default_pos; ///< Preferred position of the window. @see WindowPosition() - int16 default_width; ///< Preferred initial width of the window. - int16 default_height; ///< Preferred initial height of the window. WindowClass cls; ///< Class of the window, @see WindowClass. WindowClass parent_cls; ///< Class of the parent window. @see WindowClass const char *ini_key; ///< Key to store window defaults in openttd.cfg. \c NULL if nothing shall be stored. @@ -190,13 +186,16 @@ struct WindowDesc : ZeroedMemoryAllocator { int16 pref_width; ///< User-preferred width of the window. Zero if unset. int16 pref_height; ///< User-preferred height of the window. Zero if unset. - int16 GetDefaultWidth() const { return this->pref_width != 0 ? this->pref_width : this->default_width; } - int16 GetDefaultHeight() const { return this->pref_height != 0 ? this->pref_height : this->default_height; } + int16 GetDefaultWidth() const; + int16 GetDefaultHeight() const; static void LoadFromConfig(); static void SaveToConfig(); private: + int16 default_width_trad; ///< Preferred initial width of the window (pixels at 1x zoom). + int16 default_height_trad; ///< Preferred initial height of the window (pixels at 1x zoom). + /** * Dummy private copy constructor to prevent compilers from * copying the structure, which fails due to _window_descs. @@ -273,7 +272,7 @@ struct Window : ZeroedMemoryAllocator { protected: void InitializeData(WindowNumber window_number); void InitializePositionSize(int x, int y, int min_width, int min_height); - void FindWindowPlacementAndResize(int def_width, int def_height); + virtual void FindWindowPlacementAndResize(int def_width, int def_height); SmallVector scheduled_invalidation_data; ///< Data of scheduled OnInvalidateData() calls. @@ -509,6 +508,7 @@ public: void DrawWidgets() const; void DrawViewport() const; void DrawSortButtonState(int widget, SortButtonState state) const; + static int SortButtonWidth(); void DeleteChildWindows(WindowClass wc = WC_INVALID) const; @@ -849,14 +849,17 @@ Window *FindWindowFromPt(int x, int y); /** * Open a new window. + * @tparam Wcls %Window class to use if the window does not exist. * @param desc The pointer to the WindowDesc to be created * @param window_number the window number of the new window - * @return see Window pointer of the newly created window + * @param return_existing If set, also return the window if it already existed. + * @return %Window pointer of the newly created window, or the existing one if \a return_existing is set, or \c NULL. */ template -Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number) +Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number, bool return_existing = false) { - if (BringWindowToFrontById(desc->cls, window_number)) return NULL; + Wcls *w = static_cast(BringWindowToFrontById(desc->cls, window_number)); + if (w != NULL) return return_existing ? w : NULL; return new Wcls(desc, window_number); } diff --git a/src/window_type.h b/src/window_type.h index 9727cf9f12..809e81d485 100644 --- a/src/window_type.h +++ b/src/window_type.h @@ -446,7 +446,7 @@ enum WindowClass { /** * Generate landscape (newgame); %Window numbers: * - GLWM_SCENARIO = #CreateScenarioWidgets - * - #GenenerateLandscapeWindowMode = #GenerateLandscapeWidgets + * - #GenerateLandscapeWindowMode = #GenerateLandscapeWidgets */ WC_GENERATE_LANDSCAPE, @@ -670,11 +670,17 @@ enum WindowClass { WC_SPRITE_ALIGNER, /** - * Linkgraph legend; Window numbers: + * Linkgraph legend; %Window numbers: * - 0 = #LinkGraphWidgets */ WC_LINKGRAPH_LEGEND, + /** + * Save preset; %Window numbers: + * - 0 = #SavePresetWidgets + */ + WC_SAVE_PRESET, + WC_INVALID = 0xFFFF, ///< Invalid window. }; diff --git a/src/zoom_func.h b/src/zoom_func.h index aa4bf3d69f..1cb3d0c486 100644 --- a/src/zoom_func.h +++ b/src/zoom_func.h @@ -23,9 +23,8 @@ */ static inline int ScaleByZoom(int value, ZoomLevel zoom) { - if (zoom == ZOOM_LVL_NORMAL) return value; - int izoom = zoom - ZOOM_LVL_NORMAL; - return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom; + assert(zoom >= 0); + return value << zoom; } /** @@ -37,9 +36,8 @@ static inline int ScaleByZoom(int value, ZoomLevel zoom) */ static inline int UnScaleByZoom(int value, ZoomLevel zoom) { - if (zoom == ZOOM_LVL_NORMAL) return value; - int izoom = zoom - ZOOM_LVL_NORMAL; - return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom; + assert(zoom >= 0); + return (value + (1 << zoom) - 1) >> zoom; } /** @@ -50,9 +48,8 @@ static inline int UnScaleByZoom(int value, ZoomLevel zoom) */ static inline int ScaleByZoomLower(int value, ZoomLevel zoom) { - if (zoom == ZOOM_LVL_NORMAL) return value; - int izoom = zoom - ZOOM_LVL_NORMAL; - return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> -izoom; + assert(zoom >= 0); + return value << zoom; } /** @@ -63,9 +60,28 @@ static inline int ScaleByZoomLower(int value, ZoomLevel zoom) */ static inline int UnScaleByZoomLower(int value, ZoomLevel zoom) { - if (zoom == ZOOM_LVL_NORMAL) return value; - int izoom = zoom - ZOOM_LVL_NORMAL; - return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom; + assert(zoom >= 0); + return value >> zoom; +} + +/** + * Short-hand to apply GUI zoom level. + * @param value Pixel amount at #ZOOM_LVL_BEGIN (full zoom in). + * @return value Pixel amount at #ZOOM_LVL_GUI. + */ +static inline int UnScaleGUI(int value) +{ + return UnScaleByZoom(value, ZOOM_LVL_GUI); +} + +/** + * Scale traditional pixel dimensions to GUI zoom level. + * @param value Pixel amount at 1x zoom level. + * @return value Pixel amount at #ZOOM_LVL_GUI. + */ +static inline int ScaleGUITrad(int value) +{ + return UnScaleGUI(value * ZOOM_LVL_BASE); } #endif /* ZOOM_FUNC_H */ diff --git a/src/zoom_type.h b/src/zoom_type.h index 37ffc153cd..c29f136cf3 100644 --- a/src/zoom_type.h +++ b/src/zoom_type.h @@ -33,7 +33,6 @@ enum ZoomLevel { /* Here we define in which zoom viewports are */ ZOOM_LVL_VIEWPORT = ZOOM_LVL_OUT_4X, ///< Default zoom level for viewports. - ZOOM_LVL_GUI = ZOOM_LVL_OUT_4X, ///< Default zoom level for GUI sprites. ZOOM_LVL_NEWS = ZOOM_LVL_OUT_4X, ///< Default zoom level for the news messages. ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_8X, ///< Default zoom level for the industry view. ZOOM_LVL_TOWN = ZOOM_LVL_OUT_8X, ///< Default zoom level for the town view. @@ -53,4 +52,7 @@ DECLARE_POSTFIX_INCREMENT(ZoomLevel) /** Type for storing the zoom level in a byte. */ typedef SimpleTinyEnumT ZoomLevelByte; +extern ZoomLevelByte _gui_zoom; +#define ZOOM_LVL_GUI (_gui_zoom) + #endif /* ZOOM_TYPE_H */